On 2020-05-04 20:39 +0300, Firas Khalil Khana via lfs-dev wrote: > Hey there, > > My name is Firas Khalil Khana, and I'm the creator of glaucus. > > I'd like to salute your efforts for keeping this project awesome this whole > time! The shear amount of information in a single place like LFS is truly > impressive. > > That being said, I'd like to propose a (somewhat) slight change regarding the > amount of packages actually needed in the temporary system (Chapter 5, which > I'll be referring to as the chroot environment). > > I'd also like to propose a reordering of some packages in the basic system > software (Chapter 6) to conform with the unneeded packages in the chroot > environment. > > Please keep in mind that these proposals weren't tested with the > testing/checking suites. > > Starting with the first proposal in Chapter 5, and after skipping Tcl, Expect > and DejaGNU, we can say: > 1- Ncurses can be removed? or is it needed for Chapter 5 Python which in turn > is needed for Chapter 6 Glibc? Perhaps it can be removed for those using > different C libraries (e.g. musl)? > > 2- Bash (The chroot environment's shell) can be built without curses support > by passing "--without-curses", until it gets rebuilt again in Chapter 6 with > curses support.
Then it will be stupidly inconvenience typing commands. > 3- Bison can be removed, and built only once early in Chapter 6 (twice for > those who want to satisfy flex). There is some circular dependency between bison and gettext so it's impossible to build both of them only once. It's #4634. > 4- Flex can be removed, and built only once early in Chapter 6 (after bison, > and before the second build of bison for those who want to satisfy it). Pierre just added them so Chap. 6 binutils can link to libfl.so. It's #4631. > 5- Bzip2 can be removed since we're relying on host tools to decompress needed > packages that were downloaded early on (plus it will be built early on in > Chapter 6 so no package should require it). To avoid more ICA issues we don't want to move many things too "early". > 6- I prefer to hostname over coreutils hostname but that's totally optional. Your distro your rules. > 7- which can be added after coreutils (some packages may depend on it in the > format of using it inside scripts to fetch available binary versions (gcc with > go support, coreutils?, the Linux kernel (for testing?), but it's pretty > useful once you're in the chroot environment and in the final system as well). > > 8- Gettext can be removed and built early on in Chapter 6. Also #4634. > 9- Gzip can also be removed since we're relying on host tools to decompress > needed packages that were downloaded early on (plus it will be built early on > in Chapter 6 so no package should require it). > > 10- Perl can be completely removed and satisfied early on in Chapter 6 before > packages that require it. We don't want many packages too be early in Chap. 6. > 11- Python can be removed? glibc requires it so it can't be removed, but with > other C libraries (e.g. musl) it can be removed and built only when needed in > Chapter 6. But we are using glibc. Again, your distro your rules. > 12- Texinfo can be removed and built early on in Chapter 6. We don't want many packages too be early in Chap. 6. > 13- Util-linux can be removed, but I think certain testing suites require it? > Perhaps for those who are sure that the packages have been built correctly it > can be removed? Wrong. Systemd or eudev depends on lib{uuid,blkid,mount}.so. > 14- Xz can be removed and built early on in Chapter 6 since we're relying on > host tools to decompress needed packages that were downloaded early on (plus > it will be built early on in Chapter 6 so no package should require it). How to untar xz-5.2.5.tar.xz itself in Chap. 6? > So we'll end up with the following list of packages for Chapter 5 (following > DejaGNU): > 1- M4 > 2- Ncurses [Glibc only] > 3- Bash > 4- Coreutils > 5- Diffutils > 6- File > 7- Findutils > 8- Gawk > 9- Grep > 10- Make > 11- Patch > 12- Python [Glibc only] > 13- Sed > 14- Tar > > Regarding Chapter 6, the packages that we've removed from Chapter 5 and are > needed here can be built early on (immediately after adjusting the toolchain, > and before Chapter 6 Zlib): > > 1. GDBM > 2. Gperf > 3. Perl > 4. Texinfo > 5. help2man (this can be added to satisfy packages that require it like > binutils, libtool, autoconf..., and is better than specifying "MAKEINFO=true") > 6. Expat > 7. XML::Parser > 8. Libtool > 9. Autoconf > 10. Automake > 11. Gettext > 12. Bison > 13. Ncurses > 14. Bash > > and then continuing from Zlib to the end while removing the packages specified > above because they were built beforehand (with the exception of bison for > those who want to build it a second time after flex). How many ICA issues would we catch using this approach? @pierre :). > This can help by greatly reducing the amount of time needed to get the final > system working, and should make things for some packages (perl and python) > easier since they're only built once in the final system when needed (the > final builds should also theoretically be easier because they're native builds > now, removing the need to deal with cross builds of these packages especially > when using other C libraries (e.g. musl)). It's not "the faster the better". If "the faster the better" we can just cross- compile everything in host, and put them altogether. -- Xi Ruoyao <xry...@mengyan1223.wang> School of Aerospace Science and Technology, Xidian University -- http://lists.linuxfromscratch.org/listinfo/lfs-dev FAQ: http://www.linuxfromscratch.org/faq/ Unsubscribe: See the above information page