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

Reply via email to