Hey there, My name is Firas Khalil Khana, and I'm the creator of glaucus <https://www.glaucuslinux.org/>.
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. 3- Bison can be removed, and built only once early in Chapter 6 (twice for those who want to satisfy flex). 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). 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). 6- I prefer to hostname <https://mirrors.kernel.org/debian/pool/main/h/hostname/hostname_3.23.tar.gz> over coreutils hostname but that's totally optional. 7- which <https://ftpmirror.gnu.org/which/which-2.21.tar.gz> 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. 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. 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. 12- Texinfo can be removed and built early on in Chapter 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? 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). 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). 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)). This also makes Autotools available early on in Chapter 6 in case running "autoreconf", "./autogen.sh", "./bootstrap.sh"... (whatever scripts were called) was needed (patches that include source modifications usually require that). I'd like to thank you again for all the time and effort you've put in this project. Keep up the great work! Sincerely, Firas Khalil Khana
-- http://lists.linuxfromscratch.org/listinfo/lfs-dev FAQ: http://www.linuxfromscratch.org/faq/ Unsubscribe: See the above information page