Hello,
As I mentioned in an email of last month, I have been working on getting
the CLFS book up to package versions the same as (or nearly the same as) those
in LFS-8.4.
I am still working through some issues but in general it is working
reasonably well right now (for PowerPC and X86). I don't have MIPS or Sparc
machines to work with so I haven't spent much time on CLFS for those two archs.
The following is an high level overview of what I've found. I will send
further emails with more details when I am closer to done.
I started off with changing the common with LFS package versions to be the
same as what is in LFS-8.4, bumping the CLFS unique packages up to their most
recent versions, and also changing the order of the CLFS final system build
packages to be the same as what is in LFS chapter 6. Those changes are what
I started with but found a few things out regarding updating CLFS:
Python is a new required package. It is required for both building
GLIBC-2.29 and is also in the new dependency chain for building systemd.
Systemd-240 was not available in the same type of tarball that is in the
current book. The systemd package in the book right now (-233 I think) is
built with the regular configure/make process. But the new systemd-240 is
built with meson which depends on ninja which depends on Python3.
GCC 8.2.0 required a patch to compile with ISL-20. I created the patch
and built with that for a while but bumped up GCC to 8.3.0 when it came out.
8.3.0 got rid of the need for the ISL20 patch so I bumped GCC up to 8.3.0.
I adapted the GCC-7.1.0 specs patches for GCC-8.3.0 and fixed a couple of
issues in them (particularly in regards to PPC). (I suspect there may still
be some issues to fix in the specs patches.) I also found and fixed a bug in
the multi-lib build of GCC for PPC.
I created a do nothing patch and for now am using it for the several
"branch update" patches. The actual branch update patches can be filled in
later if they are something that needs to be there.
I found that VIM-8.1 did not build in the temp system. VIM-8.1 did build
in the final system but not the temp system. I bumped VIM back down to 8.0
(and it builds in both temp and final) since there were more important things
to work on first.
GLIBC-2.29 requires Python-3 to build. I initially added Python to the
/cross-tools build, temp-system build and final system build to support
GLIBC-2.29. Python is a bit difficult to cross build and also difficult to
build as a multilib package. I found a multilib patch for Python-3.6 and
adapted it to Python-3.7.2. It seems to work to some degree but I think
there are still problems that I need to track down with building Python as a
multilib package..
I have backed GLIBC down to 2.28 to alleviate some of the Python
struggles. This means Python is still built in the /cross-tools and also the
final system but is no longer built in the temp-system.
Several packages require tweaks (seds and such) to build with the recent
GLIBC releases. There were also some tweaks to the configure and/or make
procedure for some of the new version of packages. These I implemented based
on what was in LFS-8.4.
There is no newer version of pkg-config-lite. I don't think it is
maintained anymore. I left it as is but it might be better long term to
switch to the regular pkg-config package.
I had to deviate a little from LFS in the order of final system package
builds iirc I had to move ncurses to be before readline. Otherwise I found
the documentation portion of the build for a couple of packages failed. But
mostly, my final-system build order is the same as the LFS-8.4 build order.
"make install_firmware" is no longer supported in the kernel builds.
So that goes away in kernel builds.
I have temporarily shut off 'enable-gold=yes' in all my binutils builds.
The gold feature is not needed in cross-tools or temp-system. It's not
required to build the final-system either but might be needed for packages
added after CLFS is built. Enabling gold adds significant time to the
binutils build so while debugging, I have shut it off. I will turn it back
on later (at least in the final-system) when I'm not rebuilding as often.
jhalfs still works for building CLFS. However, it does not seem to setup the
/root/.bash_profile flags properly when building CLFS as a 'bootable' system
(even though the flag settings look correct in the rendered book). I also
suspect that it doesn't pick up and use the PKG_CONFIG variables that get added
to .bash_profile at the end of the pkg-config-lite build. I made an ugly
hack to my book to workaround that but don't really have an actual fix planned
for it.
There are other small tweaks I've made but I think that covers the high level
changes of interest.