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

Reply via email to