diff --git a/chapter01/changelog.xml b/chapter01/changelog.xml
index ecb2cb5e9..7d69c0a78 100644
--- a/chapter01/changelog.xml
+++ b/chapter01/changelog.xml
@@ -39,6 +39,66 @@
or as
appropriate for the entry or if needed the entire day's listitem.
-->
+
+ 2022-11-10
+
+
+ [bdubbs] - Fix make-4.4 bug. Fixes
+ #5160.
+
+
+ [bdubbs] - Update to wheel-0.38.4 (Python Module). Fixes
+ #5155.
+
+
+ [bdubbs] - Update to texinfo-7.0. Fixes
+ #5159.
+
+
+ [bdubbs] - Update to sysvinit-3.05. Fixes
+ #5153.
+
+
+ [bdubbs] - Update to shadow-4.13. Fixes
+ #5161.
+
+
+ [bdubbs] - Update to sed-4.9. Fixes
+ #5157.
+
+
+ [bdubbs] - Update to meson-0.64.0. Fixes
+ #5156.
+
+
+ [bdubbs] - Update to linux-6.0.7. Fixes
+ #5154.
+
+
+ [bdubbs] - Update to elfutils-0.188. Fixes
+ #5152.
+
+
+ [bdubbs] - Update to bc-6.1.1. Fixes
+ #5151.
+
+
+ [bdubbs] - Update to bash-5.2.9. Fixes
+ #5158.
+
+
+
+
+
+ 2022-11-03
+
+
+ [renodr] - Update to systemd-252. Fixes
+ #5150.
+
+
+
+
2022-11-01
diff --git a/chapter01/whatsnew.xml b/chapter01/whatsnew.xml
index ce73bb1b7..3612115ff 100644
--- a/chapter01/whatsnew.xml
+++ b/chapter01/whatsnew.xml
@@ -160,9 +160,9 @@
Libcap-&libcap-version;
-
+
Libffi-&libffi-version;
@@ -229,30 +229,30 @@
Readline-&readline-version;
-
+
Shadow-&shadow-version;
-
-
+
-
+
Tzdata-&tzdata-version;
@@ -262,6 +262,9 @@
Vim-&vim-version;
+
+ wheel-&wheel-version;
+
@@ -288,10 +291,11 @@
Added:
-
+
&readline-fixes-patch;
diff --git a/chapter03/patches.xml b/chapter03/patches.xml
index 630b21c2e..033ccd00c 100644
--- a/chapter03/patches.xml
+++ b/chapter03/patches.xml
@@ -27,14 +27,14 @@
-->
-
+
- Binutils ships an outdated libtool copy in the tarball. It lacks
- sysroot support so the produced binaries will be mistakenly linked to
- libraries from the host distro. Workaround this issue:
+ Binutils ships an outdated copy of libtool in the tarball. It lacks
+ sysroot support, so the produced binaries will be mistakenly linked to
+ libraries from the host distro. Work around this issue:
sed '6009s/$add_dir//' -i ltmain.sh
@@ -83,8 +83,8 @@ cd build
--enable-64-bit-bfd
- Enables 64-bit support (on hosts with narrower word sizes).
- May not be needed on 64-bit systems, but does no harm.
+ Enables 64-bit support (on hosts with smaller word sizes).
+ This may not be needed on 64-bit systems, but it does no harm.
diff --git a/chapter06/file.xml b/chapter06/file.xml
index 19d5ae369..425a9bf58 100644
--- a/chapter06/file.xml
+++ b/chapter06/file.xml
@@ -45,8 +45,9 @@
The file command on the build host needs
- to be same version as the one we are building in order to
- create the signature file. Run the following commands to build it:
+ to be the same version as the one we are building in order to
+ create the signature file. Run the following commands to make a
+ temporary copy of the file command:
mkdir build
diff --git a/chapter06/gcc-pass2.xml b/chapter06/gcc-pass2.xml
index 73f0b82c9..15c588bb2 100644
--- a/chapter06/gcc-pass2.xml
+++ b/chapter06/gcc-pass2.xml
@@ -48,8 +48,7 @@
patch -Np1 -i ../&gcc-upstream-fixes-patch;
-->
As in the first build of GCC, the GMP, MPFR, and MPC packages are
- required. Unpack the tarballs and move them into the required directory
- names:
+ required. Unpack the tarballs and move them into the required directories:
tar -xf ../mpfr-&mpfr-version;.tar.xz
mv -v mpfr-&mpfr-version; mpfr
@@ -108,9 +107,9 @@ cd build
Normally, using --host ensures that
a cross-compiler is used for building GCC, and that compiler knows
that it has to look for headers and libraries in $LFS. But the build system of GCC uses
+ class="directory">$LFS. But the build system for GCC uses
other tools, which are not aware of this location. This switch is
- needed to have them find the needed files in $LFS, and not on the host.
@@ -118,16 +117,16 @@ cd build
--target=$LFS_TGT
- As we are cross-compiling GCC, it's impossible to build
+ We are cross-compiling GCC, so it's impossible to build
target libraries (libgcc
and libstdc++) with the
- compiled GCC binaries because these binaries won't run on the
- host distro. GCC building system will attempt to use the
- C and C++ compilers on the host distro as a workaround by default.
- It's not supported to build GCC target libraries with a different
- version of GCC, so using host compilers may cause building
- failure. This parameter ensures to build the libraries with GCC
- pass 1 and prevent the issue.
+ previously compiled GCC binaries—those binaries won't run on the
+ host. The GCC build system will attempt to use the host's
+ C and C++ compilers as a workaround by default.
+ Building the GCC target libraries with a different
+ version of GCC is not supported, so using the host's compilers may cause
+ the build to fail. This parameter ensures the libraries are built by GCC
+ pass 1.
@@ -135,9 +134,9 @@ cd build
LDFLAGS_FOR_TARGET=...
Allow libstdc++ to
- use shared libgcc being
- built in this pass, instead of the static version built in GCC
- pass 1. This is needed for supporting C++ exception
+ use the shared libgcc being
+ built in this pass, instead of the static version that was built in GCC
+ pass 1. This is necessary to support C++ exception
handling.
diff --git a/chapter06/introduction.xml b/chapter06/introduction.xml
index 1d786eb0c..a0ecb1ef1 100644
--- a/chapter06/introduction.xml
+++ b/chapter06/introduction.xml
@@ -16,7 +16,7 @@
the host's tools. Nevertheless, the installed libraries are used when
linking.
- Using the utilities will be possible in next chapter after entering
+ Using the utilities will be possible in the next chapter after entering
the chroot
environment. But all the packages built in the
present chapter need to be built before we do that. Therefore we cannot be
independent of the host system yet.
diff --git a/chapter06/make.xml b/chapter06/make.xml
index cf0dbce18..242aaebe1 100644
--- a/chapter06/make.xml
+++ b/chapter06/make.xml
@@ -42,6 +42,12 @@
Installation of Make
+ First, fix an issue identified upstream:
+
+sed -e '/ifdef SIGPIPE/,+2 d' \
+ -e '/undef FATAL_SIG/i FATAL_SIG (SIGPIPE);' \
+ -i src/main.c
+
Prepare Make for compilation:
./configure --prefix=/usr \
diff --git a/chapter06/ncurses.xml b/chapter06/ncurses.xml
index d9457c081..9e7764ecf 100644
--- a/chapter06/ncurses.xml
+++ b/chapter06/ncurses.xml
@@ -119,7 +119,7 @@ popd
--without-ada
This ensures that Ncurses does not build support for the Ada
- compiler which may be present on the host but will not be available
+ compiler, which may be present on the host but will not be available
once we enter the chroot environment.
@@ -127,9 +127,9 @@ popd
--disable-stripping
- This switch prevents the building system from stripping
- the programs using strip program from the host.
- Using host tools on cross-compiled program can cause failure.
+ This switch prevents the building system from
+ using the strip program from the host.
+ Using host tools on cross-compiled programs can cause failure.
@@ -169,8 +169,8 @@ echo "INPUT(-lncursesw)" > $LFS/usr/lib/libncurses.so
TIC_PATH=$(pwd)/build/progs/tic
- We need to pass the path of the just built
- tic able to run on the building machine, so that
+ We need to pass the path of the newly built
+ tic program that runs on the building machine, so
the terminal database can be created without errors.
diff --git a/chapter08/bash.xml b/chapter08/bash.xml
index fa21ab346..4ea981d5b 100644
--- a/chapter08/bash.xml
+++ b/chapter08/bash.xml
@@ -40,10 +40,6 @@
Installation of Bash
- First, fix some issues identified upstream:
-
-patch -Np1 -i ../&bash-fixes-patch;
-
Prepare Bash for compilation:
./configure --prefix=/usr \
diff --git a/chapter08/grub.xml b/chapter08/grub.xml
index a7a412361..3cba0dc9c 100644
--- a/chapter08/grub.xml
+++ b/chapter08/grub.xml
@@ -61,6 +61,17 @@
+
+ Unset any environment variables which may affect the build:
+
+ unset {C,CPP,CXX,LD}FLAGS
+
+ Don't try tuning
this package with custom
+ compilation flags: this package is a bootloader, with low-level
+ operations in the source code which is likely to be broken by some
+ aggressive optimizations.
+
+
Prepare GRUB for compilation:
./configure --prefix=/usr \
diff --git a/chapter08/make.xml b/chapter08/make.xml
index 080ed3989..04abbc695 100644
--- a/chapter08/make.xml
+++ b/chapter08/make.xml
@@ -40,11 +40,13 @@
Installation of Make
-
+ First, fix some issues identified upstream:
+
+sed -e '/ifdef SIGPIPE/,+2 d' \
+ -e '/undef FATAL_SIG/i FATAL_SIG (SIGPIPE);' \
+ -i src/main.c
+
Prepare Make for compilation:
./configure --prefix=/usr
diff --git a/chapter08/systemd.xml b/chapter08/systemd.xml
index da750e440..4548056ea 100644
--- a/chapter08/systemd.xml
+++ b/chapter08/systemd.xml
@@ -40,9 +40,11 @@
Installation of systemd
+
Remove two unneeded groups,
render and
@@ -196,11 +198,11 @@ meson --prefix=/usr \
systemctl preset-all
- Disable a service for upgrading binary distros. It's useless for
- a basic Linux system built from source, and it will report an error if
+ Disable two services for upgrading binary distros. They are useless for
+ a basic Linux system built from source, and both will report an error if
it's enabled but not configured:
-systemctl disable systemd-sysupdate
+systemctl disable systemd-sysupdate{,-reboot}
diff --git a/general.ent b/general.ent
index e11a6da87..4afd37725 100644
--- a/general.ent
+++ b/general.ent
@@ -118,6 +118,8 @@
+
+
root">
lfs">
diff --git a/packages.ent b/packages.ent
index 5dade8f03..eee113344 100644
--- a/packages.ent
+++ b/packages.ent
@@ -48,20 +48,20 @@
-
+
-
+
-
-
+
+
-
+
@@ -148,10 +148,10 @@
-
-
+
+
-
+
@@ -424,12 +424,12 @@
-
+
-
+
-
+
-
+
-
+
-
-
+
+
-
-
-
+
+
+
-
-
-
-
+
+
+
+
@@ -684,10 +684,10 @@
-
-
+
+
-
+
@@ -728,12 +728,11 @@
-
-
-
-
-
-
+
+
+
+
+
diff --git a/part3intro/toolchaintechnotes.xml b/part3intro/toolchaintechnotes.xml
index 7401350d8..f044322e6 100644
--- a/part3intro/toolchaintechnotes.xml
+++ b/part3intro/toolchaintechnotes.xml
@@ -201,7 +201,7 @@
is slightly adjusted by changing the "vendor" field in the
LFS_TGT variable so it says "lfs". We also use the
--with-sysroot option when building the cross-linker and
- cross-compiler to tell them where to find the needed host files. This
+ cross-compiler, to tell them where to find the needed host files. This
ensures that none of the other programs built in can link to libraries on the build
machine. Only two stages are mandatory, plus one more for tests.
@@ -238,8 +238,8 @@
on a machine using the already installed distribution. On
lfs
means the commands are run in a chrooted environment.
- Now, there is more about cross-compiling: the C language is not
- just a compiler, but also defines a standard library. In this book, the
+ This is not yet the end of the story. The C language is not
+ merely a compiler; it also defines a standard library. In this book, the
GNU C library, named glibc, is used (there is an alternative, "musl"). This library must
be compiled for the LFS machine; that is, using the cross-compiler cc1.
But the compiler itself uses an internal library providing complex
@@ -256,22 +256,22 @@
The upshot of the preceding paragraph is that cc1 is unable to
build a fully functional libstdc++ with the degraded libgcc, but cc1
is the only compiler available for building the C/C++ libraries
- during stage 2. Of course, the compiler built by stage 2, cc-lfs,
- would be able to build those libraries, but:
+ during stage 2. There are two reasons we don't immediately use the
+ compiler built in stage 2, cc-lfs, to build those libraries.
- Generally cc-lfs cannot run on pc (the host distro). Despite the
- triplets of pc and lfs are compatible to each other, an executable
- for lfs will depend on glibc-&glibc-version; while the host distro
- may utilize a different libc implementation (for example, musl) or
+ Generally speaking, cc-lfs cannot run on pc (the host system). Even though the
+ triplets for pc and lfs are compatible with each other, an executable
+ for lfs must depend on glibc-&glibc-version;; the host distro
+ may utilize either a different implementation of libc (for example, musl), or
a previous release of glibc (for example, glibc-2.13).
- Even if cc-lfs happens to run on pc, using it on pc would create
+ Even if cc-lfs can run on pc, using it on pc would create
a risk of linking to the pc libraries, since cc-lfs is a native
compiler.
@@ -279,16 +279,16 @@
So when we build gcc stage 2, we instruct the building system to
- rebuild libgcc and libstdc++ with cc1, but link libstdc++ to the newly
- rebuilt libgcc instead of the degraded build. Then the rebuilt
- libstdc++ will be fully functional.
+ rebuild libgcc and libstdc++ with cc1, but we link libstdc++ to the newly
+ rebuilt libgcc instead of the old, degraded build. This makes the rebuilt
+ libstdc++ fully functional.
In &ch-final; (or stage 3
), all the packages needed for
the LFS system are built. Even if a package has already been installed into
the LFS system in a previous chapter, we still rebuild the package. The main reason for
- rebuilding these packages is to make them stable: if we reinstall a LFS
- package on a complete LFS system, the installed content of the package
- should be the same as the content of the same package when installed in
+ rebuilding these packages is to make them stable: if we reinstall an LFS
+ package on a completed LFS system, the reinstalled content of the package
+ should be the same as the content of the same package when first installed in
&ch-final;. The temporary packages installed in &ch-tmp-cross; or
&ch-tmp-chroot; cannot satisfy this requirement, because some of them
are built without optional dependencies, and autoconf cannot
diff --git a/patches.ent b/patches.ent
index 3877eebbd..53536069e 100644
--- a/patches.ent
+++ b/patches.ent
@@ -7,11 +7,11 @@
-->
-
+
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+