Index: .gitignore
===================================================================
--- .gitignore	(revision 6b6a1b958af3a0e59559e44ad700f761d8a49a09)
+++ .gitignore	(revision 73d91ac621a4e59f71ff6664c68c935317f9ce42)
@@ -1,3 +1,4 @@
 lfs-bootscripts-*.tar.xz
+lfs-*.tar.xz
 conditional.ent
 version.ent
Index: Makefile
===================================================================
--- Makefile	(revision 6b6a1b958af3a0e59559e44ad700f761d8a49a09)
+++ Makefile	(revision 73d91ac621a4e59f71ff6664c68c935317f9ce42)
@@ -58,5 +58,4 @@
          /bin/bash obfuscate.sh $$filename;           \
          sed -e "s@text/html@application/xhtml+xml@g" \
-             -e "s/\xa9/\&copy;/ "                    \
              -i $$filename;                           \
    done;
@@ -210,4 +209,13 @@
 all: book nochunks pdf dump-commands
 
-.PHONY : all book dump-commands nochunks pdf profile-html tmpdir validate md5sums wget-list version
-
+dist:
+	$(Q)DIST=/tmp/LFS-RELEASE ./git-version.sh $(REV)
+	$(Q)rm -f lfs-$$(</tmp/LFS-RELEASE).tar.xz
+	$(Q)tar cJf lfs-$$(</tmp/LFS-RELEASE).tar.xz \
+		$(shell git ls-tree HEAD . --name-only) version.ent \
+		-C /tmp LFS-RELEASE \
+		--transform "s,^,lfs-$$(</tmp/LFS-RELEASE)/,"
+	$(Q)echo "Generated XML tarball lfs-$$(</tmp/LFS-RELEASE).tar.xz"
+
+.PHONY : all book dump-commands nochunks pdf profile-html tmpdir validate md5sums wget-list version dist
+
Index: appendices/dependencies.xml
===================================================================
--- appendices/dependencies.xml	(revision 6b6a1b958af3a0e59559e44ad700f761d8a49a09)
+++ appendices/dependencies.xml	(revision 73d91ac621a4e59f71ff6664c68c935317f9ce42)
@@ -7,4 +7,5 @@
   <!ENTITY systemd-udev "<phrase revision='systemd'>Systemd</phrase>
                          <phrase revision='sysv'>Udev</phrase>">
+  <!ENTITY bdb "<ulink url='https://www.oracle.com/database/technologies/related/berkeleydb.html'>Berkeley DB</ulink>">
 ]>
 
@@ -30,8 +31,5 @@
   the test suites. The fourth list of dependencies are packages that require
   this package to be built and installed in its final location before they are
-  built and installed. In most cases, this is because these packages will hard
-  code paths to binaries within their scripts. If not built in a certain order,
-  this could result in paths of /tools/bin/[binary] being placed inside scripts
-  installed to the final system. This is obviously not desirable.</para>
+  built and installed.</para>
 
   <para>The last list of dependencies are optional packages that are not
@@ -295,5 +293,5 @@
         <segtitle>&runtime;</segtitle>
         <seglistitem>
-          <seg>Glibc and Zlib</seg>
+          <seg>Glibc, Zlib, and Zstd</seg>
         </seglistitem>
       </segmentedlist>
@@ -1487,5 +1485,5 @@
         <seglistitem>
           <seg>
-            <ulink url="&blfs-book;server/db.html">Berkeley DB</ulink>,
+            &bdb;,
             <ulink url="&blfs-book;postlfs/iptables.html">iptables</ulink>,
             <ulink url="&github;/libbpf/libbpf">libbpf</ulink>,
@@ -1497,8 +1495,15 @@
 
 <!-- Begin Jinja2 dependency info -->
-  <bridgehead revision='systemd' renderas="sect2" id="jinja2-dep">Jinja2</bridgehead>
-
-      <segmentedlist id="jinja2-depends" revision='systemd'>
-        <segtitle>&dependencies;</segtitle>
+  <bridgehead renderas="sect2" id="jinja2-dep">Jinja2</bridgehead>
+
+      <segmentedlist id="jinja2-depends">
+        <segtitle>&dependencies;</segtitle>
+        <seglistitem>
+          <seg>MarkupSafe, Python, Setuptools, and Wheel</seg>
+        </seglistitem>
+      </segmentedlist>
+
+      <segmentedlist id="jinja2-rundeps">
+        <segtitle>&runtime;</segtitle>
         <seglistitem>
           <seg>MarkupSafe and Python</seg>
@@ -1506,12 +1511,5 @@
       </segmentedlist>
 
-      <segmentedlist id="jinja2-rundeps" revision='systemd'>
-        <segtitle>&runtime;</segtitle>
-        <seglistitem>
-          <seg>MarkupSafe and Python</seg>
-        </seglistitem>
-      </segmentedlist>
-
-      <segmentedlist id="jinja2-testdeps" revision='systemd'>
+      <segmentedlist id="jinja2-testdeps">
         <segtitle>&testsuites;</segtitle>
         <seglistitem>
@@ -1520,5 +1518,5 @@
       </segmentedlist>
 
-      <segmentedlist id="jinja2-before" revision='systemd'>
+      <segmentedlist id="jinja2-before">
         <segtitle>&before;</segtitle>
         <seglistitem>
@@ -1527,5 +1525,5 @@
       </segmentedlist>
 
-      <segmentedlist id="jinja2-optdeps" revision='systemd'>
+      <segmentedlist id="jinja2-optdeps">
         <segtitle>&external;</segtitle>
         <seglistitem>
@@ -2137,8 +2135,15 @@
 
 <!-- Begin MarkupSafe dependency info -->
-  <bridgehead renderas="sect2" id="markupsafe-dep" revision='systemd'>MarkupSafe</bridgehead>
-
-      <segmentedlist id="markupsafe-depends" revision='systemd'>
-        <segtitle>&dependencies;</segtitle>
+  <bridgehead renderas="sect2" id="markupsafe-dep">MarkupSafe</bridgehead>
+
+      <segmentedlist id="markupsafe-depends">
+        <segtitle>&dependencies;</segtitle>
+        <seglistitem>
+          <seg>Python, Setuptools, and Wheel</seg>
+        </seglistitem>
+      </segmentedlist>
+
+      <segmentedlist id="markupsafe-rundeps">
+        <segtitle>&runtime;</segtitle>
         <seglistitem>
           <seg>Python</seg>
@@ -2146,12 +2151,5 @@
       </segmentedlist>
 
-      <segmentedlist id="markupsafe-rundeps" revision='systemd'>
-        <segtitle>&runtime;</segtitle>
-        <seglistitem>
-          <seg>Python</seg>
-        </seglistitem>
-      </segmentedlist>
-
-      <segmentedlist id="markupsafe-testdeps" revision='systemd'>
+      <segmentedlist id="markupsafe-testdeps">
         <segtitle>&testsuites;</segtitle>
         <seglistitem>
@@ -2160,5 +2158,5 @@
       </segmentedlist>
 
-      <segmentedlist id="markupsafe-before" revision='systemd'>
+      <segmentedlist id="markupsafe-before">
         <segtitle>&before;</segtitle>
         <seglistitem>
@@ -2167,5 +2165,5 @@
       </segmentedlist>
 
-      <segmentedlist id="markupsafe-optdeps" revision='systemd'>
+      <segmentedlist id="markupsafe-optdeps">
         <segtitle>&external;</segtitle>
         <seglistitem>
@@ -2180,5 +2178,5 @@
         <segtitle>&dependencies;</segtitle>
         <seglistitem>
-          <seg>Ninja and Python</seg>
+          <seg>Ninja, Python, Setuptools, and Wheel</seg>
         </seglistitem>
       </segmentedlist>
@@ -2487,5 +2485,5 @@
         <seglistitem>
           <seg>
-            <ulink url="&blfs-book;server/db.html">Berkeley DB</ulink>
+            &bdb;
           </seg>
         </seglistitem>
@@ -2656,5 +2654,5 @@
         <seglistitem>
           <seg>
-            <ulink url="&blfs-book;server/db.html">Berkeley DB</ulink>,
+            &bdb;,
             <ulink url="&blfs-book;basicnet/libnsl.html">libnsl</ulink>,
             <ulink url="&blfs-book;server/sqlite.html">SQLite</ulink>, and
@@ -2736,4 +2734,42 @@
 
       <segmentedlist id="sed-optdeps">
+        <segtitle>&external;</segtitle>
+        <seglistitem>
+          <seg>None</seg>
+        </seglistitem>
+      </segmentedlist>
+
+<!-- Begin Setuptools dependency info -->
+  <bridgehead renderas="sect2" id="setuptools-dep">Setuptools</bridgehead>
+
+      <segmentedlist id="setuptools-depends">
+        <segtitle>&dependencies;</segtitle>
+        <seglistitem>
+          <seg>Python and Wheel</seg>
+        </seglistitem>
+      </segmentedlist>
+
+      <segmentedlist id="setuptools-rundeps">
+        <segtitle>&runtime;</segtitle>
+        <seglistitem>
+          <seg>Python</seg>
+        </seglistitem>
+      </segmentedlist>
+
+      <segmentedlist id="setuptools-testdeps">
+        <segtitle>&testsuites;</segtitle>
+        <seglistitem>
+          <seg>No test suite available</seg>
+        </seglistitem>
+      </segmentedlist>
+
+      <segmentedlist id="setuptools-before">
+        <segtitle>&before;</segtitle>
+        <seglistitem>
+          <seg>Jinja2, MarkupSafe, and Meson</seg>
+        </seglistitem>
+      </segmentedlist>
+
+      <segmentedlist id="setuptools-optdeps">
         <segtitle>&external;</segtitle>
         <seglistitem>
@@ -3217,5 +3253,5 @@
 
 <!-- Begin Wheel dependency info -->
-  <bridgehead renderas="sect2" id="wheel-dep">wheel</bridgehead>
+  <bridgehead renderas="sect2" id="wheel-dep">Wheel</bridgehead>
 
       <segmentedlist id="wheel-depends">
@@ -3244,6 +3280,5 @@
         <seglistitem>
           <seg>
-            <phrase revision='sysv'>None</phrase>
-            <phrase revision='systemd'>Jinja2</phrase>
+            Jinja2, MarkupSafe, Meson, and Setuptools
           </seg>
         </seglistitem>
Index: bootscripts/ChangeLog
===================================================================
--- bootscripts/ChangeLog	(revision 6b6a1b958af3a0e59559e44ad700f761d8a49a09)
+++ bootscripts/ChangeLog	(revision 73d91ac621a4e59f71ff6664c68c935317f9ce42)
@@ -1,2 +1,7 @@
+2023-10-04 Pierre Labastie <pierre.labastie@neuf.fr>
+   * After the changes done on 2022-03-24, several "halt stop" should
+     have been changed to "halt start". Done now. Fortunately, those
+     occur only when something wrong happens with disks or devices.
+
 2023-07-28 Xi Ruoyao <xry111@xry111.site>
    * In mountvirtfs, mount /sys/fs/cgroup for udev from systemd-254.
@@ -25,5 +30,5 @@
      - S scripts only started if not already marked S in the previous runlevel
      - K scripts only started if not already marked K in the previous runlevel
-     - remove the convention of running S scripts ith "stop" in rl 0/6
+     - remove the convention of running S scripts with "stop" in rl 0/6
 2021-06-08 Bruce Dubbs <bdubbs@linuxfromscratch.org>
    * When shutting down the network, ignore invalid interfaces
Index: bootscripts/lfs/init.d/checkfs
===================================================================
--- bootscripts/lfs/init.d/checkfs	(revision 6b6a1b958af3a0e59559e44ad700f761d8a49a09)
+++ bootscripts/lfs/init.d/checkfs	(revision 73d91ac621a4e59f71ff6664c68c935317f9ce42)
@@ -64,5 +64,5 @@
          log_info_msg "Press Enter to continue..."
          wait_for_user
-         /etc/rc.d/init.d/halt stop
+         /etc/rc.d/init.d/halt start
       else
          log_success_msg2
@@ -128,5 +128,5 @@
          log_info_msg "Press Enter to continue..."
          wait_for_user
-         /etc/rc.d/init.d/halt stop
+         /etc/rc.d/init.d/halt start
       fi
 
Index: bootscripts/lfs/init.d/udev
===================================================================
--- bootscripts/lfs/init.d/udev	(revision 6b6a1b958af3a0e59559e44ad700f761d8a49a09)
+++ bootscripts/lfs/init.d/udev	(revision 73d91ac621a4e59f71ff6664c68c935317f9ce42)
@@ -42,5 +42,5 @@
          log_info_msg "Press Enter to continue..."
          wait_for_user
-         /etc/rc.d/init.d/halt stop
+         /etc/rc.d/init.d/halt start
       fi
 
Index: chapter01/changelog.xml
===================================================================
--- chapter01/changelog.xml	(revision 6b6a1b958af3a0e59559e44ad700f761d8a49a09)
+++ chapter01/changelog.xml	(revision 73d91ac621a4e59f71ff6664c68c935317f9ce42)
@@ -42,9 +42,305 @@
 
     <listitem>
+      <para>2023-12-04</para>
+      <itemizedlist>
+        <listitem>
+          <para>[thomas] - Modify commands for install Python docs to avoid
+          too restrictive permissions on the files and dirs.</para>
+        </listitem>
+      </itemizedlist>
+    </listitem>
+
+    <listitem revision='sysv'>
+      <para>2023-12-01</para>
+      <itemizedlist>
+        <listitem>
+          <para>[xry111] - Restore NIC naming based on physical system
+          characteristics.  Fixes
+          <ulink url='&lfs-ticket-root;5386'>#5386</ulink>.</para>
+        </listitem>
+      </itemizedlist>
+    </listitem>
+
+    <listitem>
+      <para>2023-11-30</para>
+      <itemizedlist>
+        <listitem>
+           <para>[bdubbs] - Update to vim-9.0.2136. Addresses
+           <ulink url='&lfs-ticket-root;4500'>#4500</ulink>.</para>
+        </listitem>
+        <listitem>
+          <para>[bdubbs] - Update to iana-etc-20231117. Addresses
+          <ulink url='&lfs-ticket-root;5006'>#5006</ulink>.</para>
+        </listitem>
+        <listitem>
+          <para>[bdubbs] - Update to bc-6.7.3.  Fixes
+          <ulink url='&lfs-ticket-root;5385'>#5385</ulink>.</para>
+        </listitem>
+        <listitem>
+          <para>[bdubbs] - Update to wheel-0.42.0 (Python Module).  Fixes
+          <ulink url='&lfs-ticket-root;5384'>#5384</ulink>.</para>
+        </listitem>
+        <listitem>
+          <para>[bdubbs] - Update to perl-5.38.2.  Fixes
+          <ulink url='&lfs-ticket-root;5383'>#5383</ulink>.</para>
+        </listitem>
+        <listitem>
+          <para>[bdubbs] - Update to pkgconf-2.1.0.  Fixes
+          <ulink url='&lfs-ticket-root;5382'>#5382</ulink>.</para>
+        </listitem>
+        <listitem>
+          <para>[bdubbs] - Update to readline patches 002 through 007.  Fixes
+          <ulink url='&lfs-ticket-root;5381'>#5381</ulink>.</para>
+        </listitem>
+        <listitem>
+          <para>[bdubbs] - Update to openssl-3.2.0.  Fixes
+          <ulink url='&lfs-ticket-root;5380'>#5380</ulink>.</para>
+        </listitem>
+        <listitem>
+          <para>[bdubbs] - Update to setuptools-69.0.2.  Fixes
+          <ulink url='&lfs-ticket-root;5379'>#5379</ulink>.</para>
+        </listitem>
+        <listitem>
+          <para>[bdubbs] - Update to linux-6.6.3.  Fixes
+          <ulink url='&lfs-ticket-root;5378'>#5378</ulink>.</para>
+        </listitem>
+        <listitem>
+          <para>[bdubbs] - Update to meson-1.3.0.  Fixes
+          <ulink url='&lfs-ticket-root;5377'>#5377</ulink>.</para>
+        </listitem>
+        <listitem>
+          <para>[bdubbs] - Update to gettext-0.22.4.  Fixes
+          <ulink url='&lfs-ticket-root;5376'>#5376</ulink>.</para>
+        </listitem>
+      </itemizedlist>
+    </listitem>
+
+    <listitem>
+      <para>2023-11-13</para>
+      <itemizedlist>
+        <listitem>
+          <para>[xry111] - Update to elfutils-0.190.  Fixes
+          <ulink url='&lfs-ticket-root;5373'>#5373</ulink>.</para>
+        </listitem>
+        <listitem>
+          <para>[xry111] - Update to vim-9.0.2103.  Addresses
+           <ulink url='&lfs-ticket-root;4500'>#4500</ulink>.</para>
+        </listitem>
+        <listitem>
+          <para>[xry111] - Update to linux-6.6.1.  Fixes
+          <ulink url='&lfs-ticket-root;5369'>#5369</ulink>.</para>
+        </listitem>
+        <listitem>
+          <para>[xry111] - Update to xz-5.4.5.  Fixes
+          <ulink url='&lfs-ticket-root;5371'>#5371</ulink>.</para>
+        </listitem>
+        <listitem>
+          <para>[xry111] - Update to iana-etc-20231107.  Addresses
+          <ulink url='&lfs-ticket-root;5006'>#5006</ulink>.</para>
+        </listitem>
+        <listitem>
+          <para>[xry111] - Update to gawk-5.3.0.  Fixes
+          <ulink url='&lfs-ticket-root;5372'>#5372</ulink>.</para>
+        </listitem>
+        <listitem>
+          <para>[xry111] - Update to bash-5.2.21.  Fixes
+          <ulink url='&lfs-ticket-root;5375'>#5375</ulink>.</para>
+        </listitem>
+        <listitem>
+          <para>[xry111] - Update to iproute2-6.6.0.  Fixes
+          <ulink url='&lfs-ticket-root;5374'>#5374</ulink>.</para>
+        </listitem>
+      </itemizedlist>
+    </listitem>
+
+    <listitem>
+      <para>2023-11-01</para>
+      <itemizedlist>
+        <listitem>
+           <para>[bdubbs] - Update to iana-etc-20231019. Addresses
+           <ulink url='&lfs-ticket-root;5006'>#5006</ulink>.</para>
+        </listitem>
+        <listitem>
+           <para>[bdubbs] - Update to wheel-0.41.3. Fixes
+           <ulink url='&lfs-ticket-root;5370'>#5370</ulink>.</para>
+        </listitem>
+        <listitem>
+           <para>[bdubbs] - Update to shadow-4.14.2. Fixes
+           <ulink url='&lfs-ticket-root;5368'>#5368</ulink>.</para>
+        </listitem>
+        <listitem>
+           <para>[bdubbs] - Update to openssl-3.1.4. Fixes
+           <ulink url='&lfs-ticket-root;5367'>#5367</ulink>.</para>
+        </listitem>
+        <listitem>
+           <para>[bdubbs] - Update to texinfo-7.1. Fixes
+           <ulink url='&lfs-ticket-root;5364'>#5364</ulink>.</para>
+        </listitem>
+        <listitem>
+           <para>[bdubbs] - Update to meson-1.2.3. Fixes
+           <ulink url='&lfs-ticket-root;5366'>#5366</ulink>.</para>
+        </listitem>
+        <listitem>
+           <para>[bdubbs] - Update to bc-6.7.2. Fixes
+           <ulink url='&lfs-ticket-root;5363'>#5363</ulink>.</para>
+        </listitem>
+        <listitem>
+           <para>[bdubbs] - Update to linux-6.5.9. Fixes
+           <ulink url='&lfs-ticket-root;5365'>#5365</ulink>.</para>
+        </listitem>
+        <listitem>
+           <para>[bdubbs] - Update to Python-3.12.0. Fixes
+           <ulink url='&lfs-ticket-root;5357'>#5357</ulink>.</para>
+        </listitem>
+        <listitem>
+           <para>[bdubbs] - Add setuptools-68.2.2. Fixes
+           <ulink url='&lfs-ticket-root;5358'>#5358</ulink>.</para>
+        </listitem>
+      </itemizedlist>
+    </listitem>
+
+    <listitem>
+      <para>2023-10-15</para>
+      <itemizedlist>
+        <listitem>
+           <para>[bdubbs] - Update to linux-6.5.7. Fixes
+           <ulink url='&lfs-ticket-root;5362'>#5362</ulink>.</para>
+        </listitem>
+        <listitem>
+           <para>[bdubbs] - Update to shadow-4.14.1. Fixes
+           <ulink url='&lfs-ticket-root;5361'>#5361</ulink>.</para>
+        </listitem>
+        <listitem>
+           <para>[bdubbs] - Update to gettext-0.22.3. Fixes
+           <ulink url='&lfs-ticket-root;5359'>#5359</ulink>.</para>
+        </listitem>
+      </itemizedlist>
+    </listitem>
+
+    <listitem>
+      <para>2023-10-03</para>
+      <itemizedlist>
+        <listitem>
+          <para>[xry111] - Update Glibc upstream fixes patch to fix
+          CVE-2023-4911.</para>
+        </listitem>
+      </itemizedlist>
+    </listitem>
+
+    <listitem>
+      <para>2023-10-01</para>
+      <itemizedlist>
+        <listitem>
+           <para>[bdubbs] - Disable building nscd in glibc. Fixes
+           <ulink url='&lfs-ticket-root;5349'>#5349</ulink>.</para>
+        </listitem>
+        <listitem>
+           <para>[bdubbs] - Update to iana-etc-20230929. Addresses
+           <ulink url='&lfs-ticket-root;5006'>#5006</ulink>.</para>
+        </listitem>
+        <listitem>
+           <para>[bdubbs] - Update to vim-9.0.1968. Addresses
+           <ulink url='&lfs-ticket-root;4500'>#4500</ulink>.</para>
+        </listitem>
+        <listitem>
+           <para>[bdubbs] - Update to openssl-3.1.3. Fixes
+           <ulink url='&lfs-ticket-root;5350'>#5350</ulink>.</para>
+        </listitem>
+        <listitem>
+           <para>[bdubbs] - Update to meson-1.2.2. Fixes
+           <ulink url='&lfs-ticket-root;5356'>#5356</ulink>.</para>
+        </listitem>
+        <listitem>
+           <para>[bdubbs] - Update to man-db-2.12.0. Fixes
+           <ulink url='&lfs-ticket-root;5354'>#5354</ulink>.</para>
+        </listitem>
+        <listitem>
+           <para>[bdubbs] - Update to linux-6.5.5. Fixes
+           <ulink url='&lfs-ticket-root;5352'>#5352</ulink>.</para>
+        </listitem>
+        <listitem>
+           <para>[bdubbs] - Update to kmod-31. Fixes
+           <ulink url='&lfs-ticket-root;5355'>#5355</ulink>.</para>
+        </listitem>
+        <listitem>
+           <para>[bdubbs] - Update to kbd-2.6.3. Fixes
+           <ulink url='&lfs-ticket-root;5351'>#5361</ulink>.</para>
+        </listitem>
+        <listitem>
+           <para>[bdubbs] - Update to gettext-0.22.2. Fixes
+           <ulink url='&lfs-ticket-root;5348'>#5348</ulink>.</para>
+        </listitem>
+        <listitem>
+           <para>[bdubbs] - Update to bc-6.7.0. Fixes
+           <ulink url='&lfs-ticket-root;5353'>#5353</ulink>.</para>
+        </listitem>
+      </itemizedlist>
+    </listitem>
+
+    <listitem>
+      <para>2023-09-24</para>
+      <itemizedlist>
+        <listitem>
+          <para>[xry111] - Update Glibc upstream fixes patch to plug a
+          memory leak introduced by the security fix.</para>
+        </listitem>
+      </itemizedlist>
+    </listitem>
+
+    <listitem>
+      <para>2023-09-17</para>
+      <itemizedlist>
+        <listitem>
+          <para>[xry111] - Update to linux-6.5.3.  Fixes
+          <ulink url='&lfs-ticket-root;5343'>#5343</ulink>.</para>
+        </listitem>
+        <listitem>
+          <para>[xry111] - Update to iana-etc-20230912.  Addresses
+          <ulink url='&lfs-ticket-root;5006'>#5006</ulink>.</para>
+        </listitem>
+        <listitem>
+          <para>[xry111] - Update to iproute2-6.5.0.  Fixes
+          <ulink url='&lfs-ticket-root;5342'>#5342</ulink>.</para>
+        </listitem>
+      </itemizedlist>
+    </listitem>
+
+    <listitem>
+      <para>2023-09-13</para>
+      <itemizedlist>
+        <listitem>
+          <para>[xry111] - Fix CVE-2023-4806 for Glibc-2.38.  Fixes
+          <ulink url='&lfs-ticket-root;5347'>#5347</ulink>.</para>
+        </listitem>
+      </itemizedlist>
+    </listitem>
+
+    <listitem>
+      <para>2023-09-12</para>
+      <itemizedlist>
+        <listitem>
+          <para>[xry111] - Fix CVE-2023-4527 for Glibc-2.38.  Fixes
+          <ulink url='&lfs-ticket-root;5346'>#5346</ulink>.</para>
+        </listitem>
+      </itemizedlist>
+    </listitem>
+
+    <listitem>
+      <para>2023-09-07</para>
+      <itemizedlist>
+        <listitem>
+          <para>[xry111] - Fix an issue in pkgconf-2.0.3 causing
+          BLFS packages fail to build.  Fixes
+          <ulink url='&lfs-ticket-root;5341'>#5341</ulink>.</para>
+        </listitem>
+      </itemizedlist>
+    </listitem>
+
+    <listitem>
       <para>2023-09-05</para>
       <itemizedlist>
         <listitem>
            <para>[xry111] - Move pkgconf before binutils for binutils
-           building system to detect zstd properly.
+           building system to detect zstd properly.  Fixes
            <ulink url='&lfs-ticket-root;5340'>#5340</ulink>.</para>
         </listitem>
Index: chapter01/whatsnew.xml
===================================================================
--- chapter01/whatsnew.xml	(revision 6b6a1b958af3a0e59559e44ad700f761d8a49a09)
+++ chapter01/whatsnew.xml	(revision 73d91ac621a4e59f71ff6664c68c935317f9ce42)
@@ -39,10 +39,10 @@
       <para>Automake-&automake-version;</para>
     </listitem>-->
-    <!--<listitem>
-      <para>Bash &bash-version;</para>
-    </listitem>-->
-    <!--<listitem>
-      <para>Bc &bc-version;</para>
-    </listitem>-->
+    <listitem>
+      <para>Bash-&bash-version;</para>
+    </listitem>
+    <listitem>
+      <para>Bc-&bc-version;</para>
+    </listitem>
     <!--<listitem>
       <para>Binutils-&binutils-version;</para>
@@ -63,7 +63,7 @@
       <para>DejaGNU-&dejagnu-version;</para>
     </listitem>-->
-    <!--<listitem revision="systemd">
+    <listitem revision="systemd">
       <para>D-Bus-&dbus-version;</para>
-    </listitem>-->
+    </listitem>
     <!--<listitem>
       <para>Diffutils-&diffutils-version;</para>
@@ -72,7 +72,4 @@
        <para>E2fsprogs-&e2fsprogs-version;</para>
     </listitem>-->
-    <!--<listitem revision="sysv">
-       <para>Udev-&systemd-version; (from systemd)</para>
-    </listitem>-->
     <!--<listitem>
        <para>Expat-&expat-version;</para>
@@ -93,7 +90,7 @@
       <para>Flit-core-&flit-core-version;</para>
     </listitem>-->
-    <!--<listitem>
+    <listitem>
       <para>Gawk-&gawk-version;</para>
-    </listitem>-->
+    </listitem>
     <!--<listitem>
        <para>GCC-&gcc-version;</para>
@@ -102,7 +99,7 @@
        <para>GDBM-&gdbm-version;</para>
     </listitem>-->
-    <!--<listitem>
+    <listitem>
       <para>Gettext-&gettext-version;</para>
-    </listitem>-->
+    </listitem>
     <!--<listitem>
       <para>Glibc-&glibc-version;</para>
@@ -126,7 +123,7 @@
       <para>Gzip-&gzip-version;</para>
     </listitem>
-    <!--<listitem>
-      <para>IANA-Etc-&iana-etc-version;</para>
-    </listitem>-->
+    <listitem>
+      <para>Iana-Etc-&iana-etc-version;</para>
+    </listitem>
     <!--<listitem>
       <para>Inetutils-&inetutils-version;</para>
@@ -135,7 +132,7 @@
       <para>Intltool-&intltool-version;</para>
     </listitem>-->
-    <!--<listitem>
+    <listitem>
       <para>IPRoute2-&iproute2-version;</para>
-    </listitem>-->
+    </listitem>
     <!--<listitem revision="systemd">
       <para>Jinja2-&jinja2-version;</para>
@@ -144,7 +141,7 @@
       <para>Kbd-&kbd-version;</para>
     </listitem>
-    <!--<listitem>
+    <listitem>
       <para>Kmod-&kmod-version;</para>
-    </listitem>-->
+    </listitem>
     <!--<listitem>
       <para>Less-&less-version;</para>
@@ -156,7 +153,7 @@
       <para>Libcap-&libcap-version;</para>
     </listitem>-->
-    <!--<listitem>
-      <para>Libelf-&elfutils-version; (from elfutils)</para>
-    </listitem>-->
+    <listitem>
+      <para>Libelf from Elfutils-&elfutils-version;</para>
+    </listitem>
     <!--<listitem>
       <para>Libffi-&libffi-version;</para>
@@ -168,7 +165,7 @@
       <para>Libtool-&libtool-version;</para>
     </listitem>-->
-    <!--<listitem>
+    <listitem>
       <para>Linux-&linux-version;</para>
-    </listitem>-->
+    </listitem>
     <!--<listitem>
       <para>M4-&m4-version;</para>
@@ -177,7 +174,7 @@
       <para>Make-&make-version;</para>
     </listitem>-->
-    <!--<listitem>
+    <listitem>
       <para>Man-DB-&man-db-version;</para>
-    </listitem>-->
+    </listitem>
     <!--<listitem>
       <para>Man-pages-&man-pages-version;</para>
@@ -186,7 +183,7 @@
       <para>MarkupSafe-&markupsafe-version;</para>
     </listitem>-->
-    <!--<listitem>
+    <listitem>
       <para>Meson-&meson-version;</para>
-    </listitem>-->
+    </listitem>
     <!--<listitem>
       <para>MPC-&mpc-version;</para>
@@ -201,16 +198,16 @@
       <para>Ninja-&ninja-version;</para>
     </listitem>-->
-    <!--<listitem>
-      <para>Openssl-&openssl-version;</para>
-    </listitem>-->
+    <listitem>
+      <para>OpenSSL-&openssl-version;</para>
+    </listitem>
     <!--<listitem>
       <para>Patch-&patch-version;</para>
     </listitem>-->
     <listitem>
+      <para>Perl-&perl-version;</para>
+    </listitem>
+    <listitem>
       <para>Pkgconf-&pkgconf-version;</para>
     </listitem>
-    <!--<listitem>
-      <para>Perl-&perl-version;</para>
-    </listitem>-->
     <listitem>
       <para>Procps-ng-&procps-ng-version;</para>
@@ -227,4 +224,7 @@
     <!--<listitem>
       <para>Sed-&sed-version;</para>
+    </listitem>-->
+    <!--<listitem>  After version 12.1 release - see Added
+      <para>Setuptools-&setuptools-version;</para>
     </listitem>-->
     <listitem>
@@ -246,12 +246,15 @@
       <para>Tcl-&tcl-version;</para>
     </listitem>-->
-    <!--<listitem>
+    <listitem>
       <para>Texinfo-&texinfo-version;</para>
-    </listitem>-->
+    </listitem>
     <!--<listitem>
       <para>Tzdata-&tzdata-version;</para>
     </listitem>-->
-    <listitem>
-      <para>Util-Linux-&util-linux-version;</para>
+    <!--<listitem revision="sysv">
+      <para>Udev from Systemd-&systemd-version;</para>
+    </listitem>-->
+    <listitem>
+      <para>Util-linux-&util-linux-version;</para>
     </listitem>
     <listitem>
@@ -259,12 +262,12 @@
     </listitem>
     <listitem>
-      <para>wheel-&wheel-version;</para>
-    </listitem>
-    <!--<listitem>
-      <para>XML-Parser-&xml-parser-version;</para>
-    </listitem>-->
-    <!--<listitem>
-      <para>XZ-Utils-&xz-version;</para>
-    </listitem>-->
+      <para>Wheel-&wheel-version;</para>
+    </listitem>
+    <!--<listitem>
+      <para>XML::Parser-&xml-parser-version;</para>
+    </listitem>-->
+    <listitem>
+      <para>Xz-&xz-version;</para>
+    </listitem>
     <listitem>
       <para>Zlib-&zlib-version;</para>
@@ -288,15 +291,16 @@
     <listitem><para></para></listitem>  <!-- satisfy build -->
 
-    <!--<listitem>
-      <para>&grub-upstream-fixes-patch;</para>
-    </listitem>-->
-
-    <!--<listitem>
+    <listitem>
+      <para>setuptools-&setuptools-version;</para>
+    </listitem>
+
+    <listitem>
+      <para>&glibc-upstream-fixes-patch;</para>
+    </listitem>
+
+    <listitem>
       <para>&readline-fixes-patch;</para>
-    </listitem>-->
-
-    <!--<listitem revision="systemd">
-      <para>&systemd-upstream-patch;</para>
-    </listitem>-->
+    </listitem>
+
   </itemizedlist>
 
@@ -304,17 +308,13 @@
     <title>Removed:</title>
     <listitem><para></para></listitem>  <!-- satisfy build -->
-<!--
-    <listitem revision='sysv'>
-      <para>eudev-3.2.12</para>
-    </listitem>
-
-    <listitem>
-      <para>Pkg-config-0.29.2</para>
-    </listitem>
-
-    <listitem revision='systemd'>
-      <para>systemd-252-security_fix-1.patch</para>
-    </listitem>
--->
+
+    <listitem>
+      <para>glibc-2.38-memalign_fix-1.patch</para>
+    </listitem>
+
+    <listitem>
+      <para>readline-8.2-upstream_fix-1.patch</para>
+    </listitem>
+
   </itemizedlist>
 
Index: chapter02/hostreqs.xml
===================================================================
--- chapter02/hostreqs.xml	(revision 6b6a1b958af3a0e59559e44ad700f761d8a49a09)
+++ chapter02/hostreqs.xml	(revision 73d91ac621a4e59f71ff6664c68c935317f9ce42)
@@ -55,6 +55,7 @@
     </listitem>
 
-    <listitem>
-      <para><emphasis role="strong">Coreutils-7.0</emphasis></para>
+    <!-- In Coreutils-8.1 the nproc program is added.  -->
+    <listitem>
+      <para><emphasis role="strong">Coreutils-8.1</emphasis></para>
     </listitem>
 
@@ -73,5 +74,7 @@
 
     <listitem>
-      <para><emphasis role="strong">GCC-5.1</emphasis> including the C++
+      <!-- Pass 1 GCC FTBFS with GCC-5.1 because of
+           https://gcc.gnu.org/PR65801. -->
+      <para><emphasis role="strong">GCC-5.2</emphasis> including the C++
       compiler, <command>g++</command> (Versions greater than &gcc-version; are
       not recommended as they have not been tested). C and C++ standard
@@ -217,6 +220,6 @@
 }
 
-# Coreutils first because-sort needs Coreutils >= 7.0
-ver_check Coreutils      sort     7.0 || bail "--version-sort unsupported"
+# Coreutils first because --version-sort needs Coreutils >= 7.0
+ver_check Coreutils      sort     8.1 || bail "Coreutils too old, stop"
 ver_check Bash           bash     3.2
 ver_check Binutils       ld       2.13.1
@@ -225,6 +228,6 @@
 ver_check Findutils      find     4.2.31
 ver_check Gawk           gawk     4.0.1
-ver_check GCC            gcc      5.1
-ver_check "GCC (C++)"    g++      5.1
+ver_check GCC            gcc      5.2
+ver_check "GCC (C++)"    g++      5.2
 ver_check Grep           grep     2.5.1a
 ver_check Gzip           gzip     1.3.12
@@ -258,5 +261,11 @@
 then echo "OK:    g++ works";
 else echo "ERROR: g++ does NOT work"; fi
-rm -f a.out</literal>
+rm -f a.out
+
+if [ "$(nproc)" = "" ]; then
+   echo "ERROR: nproc is not available or it produces empty output"
+else
+   echo "OK: nproc reports $(nproc) logical cores are available"
+fi</literal>
 EOF
 
Index: chapter03/packages.xml
===================================================================
--- chapter03/packages.xml	(revision 6b6a1b958af3a0e59559e44ad700f761d8a49a09)
+++ chapter03/packages.xml	(revision 73d91ac621a4e59f71ff6664c68c935317f9ce42)
@@ -243,5 +243,4 @@
         <para>Download: <ulink url="&gcc-url;"/></para>
         <para>MD5 sum: <literal>&gcc-md5;</literal></para>
-        <para>SHA256 sum: <literal>&gcc-sha256;</literal></para>
       </listitem>
     </varlistentry>
@@ -357,5 +356,4 @@
         <para>Download: <ulink url="&inetutils-url;"/></para>
         <para>MD5 sum: <literal>&inetutils-md5;</literal></para>
-        <para>SHA256 sum: <literal>&inetutils-sha256;</literal></para>
       </listitem>
     </varlistentry>
@@ -668,4 +666,13 @@
         <para>Download: <ulink url="&sed-url;"/></para>
         <para>MD5 sum: <literal>&sed-md5;</literal></para>
+      </listitem>
+    </varlistentry>
+
+    <varlistentry>
+      <term>Setuptools (&setuptools-version;) - <token>&setuptools-size;</token>:</term>
+      <listitem>
+        <para>Home page: <ulink url="&setuptools-home;"/></para>
+        <para>Download: <ulink url="&setuptools-url;"/></para>
+        <para>MD5 sum: <literal>&setuptools-md5;</literal></para>
       </listitem>
     </varlistentry>
Index: chapter03/patches.xml
===================================================================
--- chapter03/patches.xml	(revision 6b6a1b958af3a0e59559e44ad700f761d8a49a09)
+++ chapter03/patches.xml	(revision 73d91ac621a4e59f71ff6664c68c935317f9ce42)
@@ -79,8 +79,8 @@
 -->
     <varlistentry>
-      <term>Glibc Memalign Patch - <token>&glibc-memalign-patch-size;</token>:</term>
+      <term>Glibc Upstream Fixes Patch - <token>&glibc-upstream-fixes-patch-size;</token>:</term>
       <listitem>
-        <para>Download: <ulink url="&patches-root;&glibc-memalign-patch;"/></para>
-        <para>MD5 sum: <literal>&glibc-memalign-patch-md5;</literal></para>
+        <para>Download: <ulink url="&patches-root;&glibc-upstream-fixes-patch;"/></para>
+        <para>MD5 sum: <literal>&glibc-upstream-fixes-patch-md5;</literal></para>
       </listitem>
     </varlistentry>
Index: chapter04/aboutsbus.xml
===================================================================
--- chapter04/aboutsbus.xml	(revision 6b6a1b958af3a0e59559e44ad700f761d8a49a09)
+++ chapter04/aboutsbus.xml	(revision 73d91ac621a4e59f71ff6664c68c935317f9ce42)
@@ -38,16 +38,4 @@
 
   <note>
-    <para>For many modern systems with multiple processors (or cores) the
-    compilation time for a package can be reduced by performing a "parallel
-    make" by either setting an environment variable or telling the
-    <command>make</command> program how many processors are available.  For
-    instance, an Intel i5-6500 CPU can support four simultaneous processes with:</para>
-
-    <screen role="nodump"><userinput>export MAKEFLAGS='-j4'</userinput></screen>
-
-    <para>or by building with:</para>
-
-    <screen role="nodump"><userinput>make -j4</userinput></screen>
-
     <para>When multiple processors are used in this way, the SBU units in the
     book will vary even more than they normally would.  In some cases, the make
Index: chapter04/settingenviron.xml
===================================================================
--- chapter04/settingenviron.xml	(revision 6b6a1b958af3a0e59559e44ad700f761d8a49a09)
+++ chapter04/settingenviron.xml	(revision 73d91ac621a4e59f71ff6664c68c935317f9ce42)
@@ -196,4 +196,53 @@
   </important>
 
+  <para>
+    For many modern systems with multiple processors (or cores) the
+    compilation time for a package can be reduced by performing a "parallel
+    make" by telling the make program how many processors are available via
+    a command line option or an environment variable.  For instance, an Intel
+    Core i9-13900K processor has 8 P (performance) cores and
+    16 E (efficiency) cores, and a P core can simultaneously run two threads
+    so each P core are modeled as two logical cores by the Linux kernel.
+    As the result there are 32 logical cores in total.  One obvious way to
+    use all these logical cores is allowing <command>make</command> to spawn
+    up to 32 build jobs.  This can be done by passing the
+    <parameter>-j32</parameter> option to <command>make</command>:
+  </para>
+
+  <screen role='nodump'><userinput>make -j32</userinput></screen>
+
+  <para>
+    Or set the <envar>MAKEFLAGS</envar> environment variable and its
+    content will be automatically used by <command>make</command> as
+    command line options:
+  </para>
+
+  <screen role='nodump'><userinput>export MAKEFLAGS=-j32</userinput></screen>
+
+  <important>
+    <para>
+      Never pass a <parameter>-j</parameter> option without a number to
+      <command>make</command> or set such an option in
+      <envar>MAKEFLAGS</envar>.  Doing so will allow <command>make</command>
+      to spawn infinite build jobs and cause system stability problems.
+    </para>
+  </important>
+
+  <para>
+    To use all logical cores available for building packages in
+    <xref linkend='chapter-cross-tools'/> and
+    <xref linkend='chapter-temporary-tools'/>, set <envar>MAKEFLAGS</envar>
+    now in <filename>.bashrc</filename>:
+  </para>
+
+<screen><userinput>cat &gt;&gt; ~/.bashrc &lt;&lt; "EOF"
+<literal>export MAKEFLAGS=-j<replaceable>$(nproc)</replaceable></literal>
+EOF</userinput></screen>
+
+  <para>
+    Replace <replaceable>$(nproc)</replaceable> with the number of logical
+    cores you want to use if you don't want to use all the logical cores.
+  </para>
+
   <para>Finally, to ensure the environment is fully prepared for building the
   temporary tools, force the <command>bash</command> shell to read
Index: chapter05/glibc.xml
===================================================================
--- chapter05/glibc.xml	(revision 6b6a1b958af3a0e59559e44ad700f761d8a49a09)
+++ chapter05/glibc.xml	(revision 73d91ac621a4e59f71ff6664c68c935317f9ce42)
@@ -71,4 +71,5 @@
       --enable-kernel=&min-kernel;               \
       --with-headers=$LFS/usr/include    \
+      --disable-nscd                     \
       libc_cv_slibdir=/usr/lib</userinput></screen>
 
@@ -109,4 +110,12 @@
           <para>This ensures that the library is installed in /usr/lib instead
           of the default /lib64 on 64-bit machines.</para>
+        </listitem>
+      </varlistentry>
+
+      <varlistentry>
+        <term><parameter>--disable-nscd</parameter></term>
+        <listitem>
+          <para>Do not build the name service cache daemon which is no 
+          longer used.</para>
         </listitem>
       </varlistentry>
Index: chapter05/libstdc++.xml
===================================================================
--- chapter05/libstdc++.xml	(revision 6b6a1b958af3a0e59559e44ad700f761d8a49a09)
+++ chapter05/libstdc++.xml	(revision 73d91ac621a4e59f71ff6664c68c935317f9ce42)
@@ -125,5 +125,5 @@
     cross-compilation:</para>
 
-<screen><userinput remap="install">rm -v $LFS/usr/lib/lib{stdc++,stdc++fs,supc++}.la</userinput></screen>
+<screen><userinput remap="install">rm -v $LFS/usr/lib/lib{stdc++{,exp,fs},supc++}.la</userinput></screen>
 
   </sect2>
Index: chapter06/binutils-pass2.xml
===================================================================
--- chapter06/binutils-pass2.xml	(revision 6b6a1b958af3a0e59559e44ad700f761d8a49a09)
+++ chapter06/binutils-pass2.xml	(revision 73d91ac621a4e59f71ff6664c68c935317f9ce42)
@@ -44,9 +44,15 @@
     <title>Installation of Binutils</title>
 
-    <!-- Don't remove this until Binutils upstream updates the libtool
-         copy.  On some host distros the issue doesn't show up.  -->
-    <para>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:</para>
+    <!-- Don't remove this until Binutils upstream resolves this issue.
+         We can test by building Binutils on a complete system with
+         zlib (libz.so) installed, passing enable-shared and
+         without-system-zlib.  If the resulted libctf.so still links against
+         libz.so (check with readelf -d) despite we are saying
+         without-system-zlib, then the issue is still unresolved.  -->
+    <para>Binutils building system relies on an shipped libtool copy to link against
+    internal static libraries, but the libiberty and zlib copies shipped
+    in the package do not use libtool.  This inconsistency may cause
+    produced binaries mistakenly linked against libraries from the host
+    distro.  Work around this issue:</para>
 
 <screen><userinput remap="pre">sed '6009s/$add_dir//' -i ltmain.sh</userinput></screen>
Index: chapter06/coreutils.xml
===================================================================
--- chapter06/coreutils.xml	(revision 6b6a1b958af3a0e59559e44ad700f761d8a49a09)
+++ chapter06/coreutils.xml	(revision 73d91ac621a4e59f71ff6664c68c935317f9ce42)
@@ -44,7 +44,4 @@
     <title>Installation of Coreutils</title>
 
-<!--
-<screen><userinput remap="configure">export gl_cv_macro_MB_CUR_MAX_good=y</userinput></screen>
--->
     <para>Prepare Coreutils for compilation:</para>
 
@@ -53,6 +50,5 @@
             --build=$(build-aux/config.guess) \
             --enable-install-program=hostname \
-            --enable-no-install-program=kill,uptime \
-            gl_cv_macro_MB_CUR_MAX_good=y</userinput></screen>
+            --enable-no-install-program=kill,uptime</userinput></screen>
 
     <variablelist>
@@ -68,11 +64,4 @@
       </varlistentry>
 
-      <varlistentry>
-        <term><envar>gl_cv_macro_MB_CUR_MAX_good=y</envar></term>
-        <listitem>
-          <para>This is needed to work around an issue in the gnulib copy
-          shipped by the package which would break cross compilation.</para>
-        </listitem>
-      </varlistentry>
     </variablelist>
 
Index: chapter06/ncurses.xml
===================================================================
--- chapter06/ncurses.xml	(revision 6b6a1b958af3a0e59559e44ad700f761d8a49a09)
+++ chapter06/ncurses.xml	(revision 73d91ac621a4e59f71ff6664c68c935317f9ce42)
@@ -79,5 +79,5 @@
         <term><parameter>--with-manpage-format=normal</parameter></term>
         <listitem>
-          <para>This prevents Ncurses installing compressed manual
+          <para>This prevents Ncurses from installing compressed manual
           pages, which may happen if the host distribution itself
           has compressed manual pages.</para>
@@ -95,5 +95,5 @@
         <term><parameter>--without-normal</parameter></term>
         <listitem>
-          <para>This prevents Ncurses building and installing static C
+          <para>This prevents Ncurses from building and installing static C
           libraries.</para>
         </listitem>
@@ -103,5 +103,5 @@
         <term><parameter>--without-debug</parameter></term>
         <listitem>
-          <para>This prevents Ncurses building and installing debug
+          <para>This prevents Ncurses from building and installing debug
           libraries.</para>
         </listitem>
Index: chapter07/chroot.xml
===================================================================
--- chapter07/chroot.xml	(revision 6b6a1b958af3a0e59559e44ad700f761d8a49a09)
+++ chapter07/chroot.xml	(revision 73d91ac621a4e59f71ff6664c68c935317f9ce42)
@@ -24,5 +24,17 @@
     PS1='(lfs chroot) \u:\w\$ ' \
     PATH=/usr/bin:/usr/sbin     \
+    MAKEFLAGS="-j<replaceable>$(nproc)</replaceable>"      \
+    TESTSUITEFLAGS="-j<replaceable>$(nproc)</replaceable>" \
     /bin/bash --login</userinput></screen>
+
+  <para>
+    If you don't want to use all available logical cores, replace
+    <replaceable>$(nproc)</replaceable> with the number of logical cores you
+    want to use for building packages in this chapter and the following
+    chapters.  The test suites of some packages (notably Autoconf, Libtool,
+    and Tar) in &ch-final; are not affected by <envar>MAKEFLAGS</envar>, they
+    use a <envar>TESTSUITEFLAGS</envar> environment variable instead. We
+    set that here as well for running these test suites with multiple cores.
+  </para>
 
   <para>The <parameter>-i</parameter> option given to the <command>env</command>
@@ -48,5 +60,5 @@
   used.</para>
 
-  <para>Note that the <command>bash</command> prompt will say
+  <para>Also note that the <command>bash</command> prompt will say
   <computeroutput>I have no name!</computeroutput> This is normal because the
   <filename>/etc/passwd</filename> file has not been created yet.</para>
Index: chapter07/createfiles.xml
===================================================================
--- chapter07/createfiles.xml	(revision 6b6a1b958af3a0e59559e44ad700f761d8a49a09)
+++ chapter07/createfiles.xml	(revision 73d91ac621a4e59f71ff6664c68c935317f9ce42)
@@ -216,7 +216,22 @@
   the bad login attempts.</para>
 
-  <note><para>The <filename>/run/utmp</filename> file records the users that
-  are currently logged in.  This file is created dynamically in the boot
-  scripts.</para></note>
+  <!-- systemd no longer creates this -->
+  <note revision='sysv'><para>The <filename>/run/utmp</filename> file
+  records the users that are currently logged in.  This file is created
+  dynamically in the boot scripts.</para></note>
+
+  <!-- AFAIK they are not vital for system function, users requiring such
+       info should rely on systemd-logind or elogind or some custom PAM
+       module.  Maybe we can stop to create them at all.  -->
+  <note>
+    <para>
+      The <phrase revision='sysv'><filename>utmp</filename>,
+      </phrase><filename>wtmp</filename>, <filename>btmp</filename>, and
+      <filename>lastlog</filename> files use 32-bit integers for timestamps
+      and they'll be fundamentally broken after year 2038.  Many packages
+      have stopped using them and other packages are going to stop using
+      them.  It is probably best to consider them deprecated.
+    </para>
+  </note>
 
 </sect1>
Index: chapter07/kernfs.xml
===================================================================
--- chapter07/kernfs.xml	(revision 6b6a1b958af3a0e59559e44ad700f761d8a49a09)
+++ chapter07/kernfs.xml	(revision 73d91ac621a4e59f71ff6664c68c935317f9ce42)
@@ -108,7 +108,7 @@
 
 <screen><userinput>if [ -h $LFS/dev/shm ]; then
-  mkdir -pv $LFS/$(readlink $LFS/dev/shm)
+  (cd $LFS/dev; mkdir $(readlink shm))
 else
-  mount -t tmpfs -o nosuid,nodev tmpfs $LFS/dev/shm
+  mount -vt tmpfs -o nosuid,nodev tmpfs $LFS/dev/shm
 fi</userinput></screen>
 
Index: chapter07/perl.xml
===================================================================
--- chapter07/perl.xml	(revision 6b6a1b958af3a0e59559e44ad700f761d8a49a09)
+++ chapter07/perl.xml	(revision 73d91ac621a4e59f71ff6664c68c935317f9ce42)
@@ -58,5 +58,6 @@
 
     <variablelist>
-      <title>The meaning of the new Configure options:</title>
+      <title>The meaning of the Configure options:</title>
+
       <varlistentry>
         <term><parameter>-des</parameter></term>
@@ -65,4 +66,33 @@
           all items; -e ensures completion of all tasks; -s silences
           non-essential output.</para>
+        </listitem>
+      </varlistentry>
+
+      <varlistentry>
+        <term><parameter>-Dvendorprefix=/usr</parameter></term>
+        <listitem>
+          <para>This ensures <command>perl</command> knows how to
+          tell packages where they should install their Perl modules.</para>
+        </listitem>
+      </varlistentry>
+
+      <varlistentry>
+        <term><parameter>-Duseshrplib</parameter></term>
+        <listitem>
+          <para>Build <systemitem class='library'>libperl</systemitem>
+          needed by some Perl modules as a shared library, instead of
+          a static library.</para>
+        </listitem>
+      </varlistentry>
+
+      <varlistentry>
+        <term><parameter>-Dprivlib,-Darchlib,-Dsitelib,...</parameter></term>
+        <listitem>
+          <para>These settings define where Perl looks for installed
+          modules. The LFS editors chose to put them in a directory structure
+          based on the MAJOR.MINOR version of Perl (&perl-version-min;) which
+          allows upgrading Perl to newer patch levels (the patch level is
+          the last dot separated part in the full version string like
+          &perl-version;) without reinstalling all of the modules.</para>
         </listitem>
       </varlistentry>
Index: chapter08/automake.xml
===================================================================
--- chapter08/automake.xml	(revision 6b6a1b958af3a0e59559e44ad700f761d8a49a09)
+++ chapter08/automake.xml	(revision 73d91ac621a4e59f71ff6664c68c935317f9ce42)
@@ -54,9 +54,12 @@
 <screen><userinput remap="make">make</userinput></screen>
 
-    <para> Using the -j4 make option speeds up the tests, even on systems with
-    only one processor, due to internal delays in individual tests.  To test
+    <para>Using four parallel jobs speeds up the tests, even on systems with
+    less logical cores, due to internal delays in individual tests.  To test
     the results, issue:</para>
 
-<screen><userinput remap="test">make -j4 check</userinput></screen>
+<screen><userinput remap="test">make <replaceable>-j$(($(nproc)&gt;4?$(nproc):4))</replaceable> check</userinput></screen>
+
+    <para>Replace <replaceable>$((...))</replaceable> with the number of
+    logical cores you want to use if you don't want to use all.</para>
 
     <para>The test t/subobj.sh is known to fail.</para>
Index: chapter08/chapter08.xml
===================================================================
--- chapter08/chapter08.xml	(revision 6b6a1b958af3a0e59559e44ad700f761d8a49a09)
+++ chapter08/chapter08.xml	(revision 73d91ac621a4e59f71ff6664c68c935317f9ce42)
@@ -66,4 +66,5 @@
   <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="flit-core.xml"/>
   <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="wheel.xml"/>
+  <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="setuptools.xml"/>
   <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="ninja.xml"/>
   <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="meson.xml"/>
Index: chapter08/dbus.xml
===================================================================
--- chapter08/dbus.xml	(revision 6b6a1b958af3a0e59559e44ad700f761d8a49a09)
+++ chapter08/dbus.xml	(revision 73d91ac621a4e59f71ff6664c68c935317f9ce42)
@@ -57,5 +57,5 @@
             --disable-doxygen-docs               \
             --disable-xml-docs                   \
-            --docdir=/usr/share/doc/dbus-&dbus-version;  \
+            --docdir=/usr/share/doc/dbus-&dbus-version; \
             --with-system-socket=/run/dbus/system_bus_socket</userinput></screen>
 
Index: chapter08/gawk.xml
===================================================================
--- chapter08/gawk.xml	(revision 6b6a1b958af3a0e59559e44ad700f761d8a49a09)
+++ chapter08/gawk.xml	(revision 73d91ac621a4e59f71ff6664c68c935317f9ce42)
@@ -60,13 +60,16 @@
     <para>Install the package:</para>
 
-<screen><userinput remap="install">make LN='ln -f' install</userinput></screen>
+<screen><userinput remap="install">rm -f /usr/bin/gawk-&gawk-version;
+make install</userinput></screen>
 
     <variablelist>
-      <title>The meaning of the overridden make variable:</title>
+      <title>The meaning of the command:</title>
 
       <varlistentry>
-        <term><envar>LN='ln -f'</envar></term>
+        <term><command>rm -f /usr/bin/gawk-&gawk-version;</command></term>
         <listitem>
-           <para>This variable ensures that the previous hard link installed
+           <para>The building system will not recreate the hard link
+           <filename>gawk-&gawk-version;</filename> if it already exists.
+           Remove it to ensure that the previous hard link installed
            in <xref linkend='ch-tools-gawk'/> is updated here.</para>
        </listitem>
Index: chapter08/glibc.xml
===================================================================
--- chapter08/glibc.xml	(revision 6b6a1b958af3a0e59559e44ad700f761d8a49a09)
+++ chapter08/glibc.xml	(revision 73d91ac621a4e59f71ff6664c68c935317f9ce42)
@@ -51,8 +51,8 @@
 <screen><userinput remap="pre">patch -Np1 -i ../&glibc-fhs-patch;</userinput></screen>
 
-    <para>Now fix a regression causing the posix_memalign() function 
-    to be very slow in some conditions:</para>
-
-<screen><userinput remap="pre">patch -Np1 -i ../&glibc-memalign-patch;</userinput></screen>
+    <para>Now fix two security vulnerabilities and a regression causing the
+    posix_memalign() function very slow in some conditions:</para>
+
+<screen><userinput remap="pre">patch -Np1 -i ../&glibc-upstream-fixes-patch;</userinput></screen>
 
     <para>The Glibc documentation recommends building Glibc
@@ -75,4 +75,5 @@
              --enable-stack-protector=strong          \
              --with-headers=/usr/include              \
+             --disable-nscd                           \
              libc_cv_slibdir=/usr/lib</userinput></screen>
 
@@ -112,4 +113,12 @@
           <para>This option tells the build system where to find the
           kernel API headers.</para>
+        </listitem>
+      </varlistentry>
+
+      <varlistentry>
+        <term><parameter>--disable-nscd</parameter></term>
+        <listitem>
+          <para>Do not build the name service cache daemon which is no 
+          longer used.</para>
         </listitem>
       </varlistentry>
@@ -207,5 +216,5 @@
 
 <screen><userinput remap="install">sed '/RTLDLIST=/s@/usr@@g' -i /usr/bin/ldd</userinput></screen>
-
+<!--
     <para>Install the configuration file and runtime directory for
     <command>nscd</command>:</para>
@@ -219,5 +228,5 @@
     <screen revision="systemd"><userinput remap="install">install -v -Dm644 ../nscd/nscd.tmpfiles /usr/lib/tmpfiles.d/nscd.conf
 install -v -Dm644 ../nscd/nscd.service /usr/lib/systemd/system/nscd.service</userinput></screen>
-
+-->
     <para>Next, install the locales that can make the system respond in a
     different language.  None of these locales are required, but if some of them
@@ -321,5 +330,5 @@
     following:</para>
 
-<screen><userinput>cat &gt; /etc/nsswitch.conf &lt;&lt; "EOF"
+<screen revision='sysv'><userinput>cat &gt; /etc/nsswitch.conf &lt;&lt; "EOF"
 <literal># Begin /etc/nsswitch.conf
 
@@ -329,4 +338,22 @@
 
 hosts: files dns
+networks: files
+
+protocols: files
+services: files
+ethers: files
+rpc: files
+
+# End /etc/nsswitch.conf</literal>
+EOF</userinput></screen>
+
+<screen revision='systemd'><userinput>cat &gt; /etc/nsswitch.conf &lt;&lt; "EOF"
+<literal># Begin /etc/nsswitch.conf
+
+passwd: files systemd
+group: files systemd
+shadow: files systemd
+
+hosts: mymachines resolve [!UNAVAIL=return] files myhostname dns
 networks: files
 
@@ -481,5 +508,5 @@
         ldd, lddlibc4,
         ld.so (symlink to ld-linux-aarch64[_be].so.1),
-        locale, localedef, makedb, mtrace, nscd,
+        locale, localedef, makedb, mtrace,
         pcprofiledump, pldd, sln, sotruss, sprof, tzselect, xtrace,
         zdump, and zic</seg>
@@ -501,5 +528,5 @@
         /usr/include/sys, /usr/lib/audit, /usr/lib/gconv, /usr/lib/locale,
         /usr/libexec/getconf, /usr/share/i18n, /usr/share/zoneinfo,
-        /var/cache/nscd, and /var/lib/nss_db</seg>
+        and /var/lib/nss_db</seg>
       </seglistitem>
     </segmentedlist>
@@ -631,15 +658,4 @@
           <indexterm zone="ch-system-glibc mtrace">
             <primary sortas="b-mtrace">mtrace</primary>
-          </indexterm>
-        </listitem>
-      </varlistentry>
-
-      <varlistentry id="nscd">
-        <term><command>nscd</command></term>
-        <listitem>
-          <para>A daemon that provides a cache for the most common name
-          service requests</para>
-          <indexterm zone="ch-system-glibc nscd">
-            <primary sortas="b-nscd">nscd</primary>
           </indexterm>
         </listitem>
Index: chapter08/gmp.xml
===================================================================
--- chapter08/gmp.xml	(revision 6b6a1b958af3a0e59559e44ad700f761d8a49a09)
+++ chapter08/gmp.xml	(revision 73d91ac621a4e59f71ff6664c68c935317f9ce42)
@@ -120,5 +120,5 @@
 
     <segmentedlist>
-      <segtitle>Installed Libraries</segtitle>
+      <segtitle>Installed libraries</segtitle>
       <segtitle>Installed directory</segtitle>
 
Index: chapter08/iproute2.xml
===================================================================
--- chapter08/iproute2.xml	(revision 6b6a1b958af3a0e59559e44ad700f761d8a49a09)
+++ chapter08/iproute2.xml	(revision 73d91ac621a4e59f71ff6664c68c935317f9ce42)
@@ -46,7 +46,4 @@
     LFS. However, a directory and a man page for <command>arpd</command> will still
     be installed. Prevent this by running the commands shown below.
-    (If the <command>arpd</command> program is needed,
-    instructions for compiling Berkeley DB can be found in the BLFS book at
-    <ulink url="&blfs-book;server/db.html"/>.)
     </para>
 
Index: chapter08/libelf.xml
===================================================================
--- chapter08/libelf.xml	(revision 6b6a1b958af3a0e59559e44ad700f761d8a49a09)
+++ chapter08/libelf.xml	(revision 73d91ac621a4e59f71ff6664c68c935317f9ce42)
@@ -71,6 +71,6 @@
 
     <segmentedlist>
-      <segtitle>Installed Library</segtitle>
-      <segtitle>Installed Directory</segtitle>
+      <segtitle>Installed library</segtitle>
+      <segtitle>Installed directory</segtitle>
 
       <seglistitem>
Index: chapter08/man-db.xml
===================================================================
--- chapter08/man-db.xml	(revision 6b6a1b958af3a0e59559e44ad700f761d8a49a09)
+++ chapter08/man-db.xml	(revision 73d91ac621a4e59f71ff6664c68c935317f9ce42)
@@ -114,9 +114,5 @@
     <para>To test the results, issue:</para>
 
-<screen><userinput remap="test">make -k check</userinput></screen>
-
-    <!-- https://gitlab.com/man-db/man-db/-/issues/25 -->
-    <para>One test named <filename>man1/lexgrog.1</filename> is known
-    to fail.</para>
+<screen><userinput remap="test">make check</userinput></screen>
 
     <para>Install the package:</para>
Index: chapter08/mpc.xml
===================================================================
--- chapter08/mpc.xml	(revision 6b6a1b958af3a0e59559e44ad700f761d8a49a09)
+++ chapter08/mpc.xml	(revision 73d91ac621a4e59f71ff6664c68c935317f9ce42)
@@ -70,6 +70,6 @@
 
     <segmentedlist>
-      <segtitle>Installed Libraries</segtitle>
-      <segtitle>Installed Directory</segtitle>
+      <segtitle>Installed libraries</segtitle>
+      <segtitle>Installed directory</segtitle>
 
       <seglistitem>
Index: chapter08/mpfr.xml
===================================================================
--- chapter08/mpfr.xml	(revision 6b6a1b958af3a0e59559e44ad700f761d8a49a09)
+++ chapter08/mpfr.xml	(revision 73d91ac621a4e59f71ff6664c68c935317f9ce42)
@@ -59,5 +59,5 @@
     </important>
 
-    <para>Test the results and ensure that all 197 tests passed:</para>
+    <para>Test the results and ensure that all 198 tests passed:</para>
 
 <screen><userinput remap="test">make check</userinput></screen>
@@ -75,5 +75,5 @@
 
     <segmentedlist>
-      <segtitle>Installed Libraries</segtitle>
+      <segtitle>Installed libraries</segtitle>
       <segtitle>Installed directory</segtitle>
 
Index: chapter08/openssl.xml
===================================================================
--- chapter08/openssl.xml	(revision 6b6a1b958af3a0e59559e44ad700f761d8a49a09)
+++ chapter08/openssl.xml	(revision 73d91ac621a4e59f71ff6664c68c935317f9ce42)
@@ -64,5 +64,5 @@
     <para>To test the results, issue:</para>
 
-<screen><userinput remap="test">make test</userinput></screen>
+<screen><userinput remap="test">HARNESS_JOBS=<replaceable>$(nproc)</replaceable> make test</userinput></screen>
 
     <para>One test, 30-test_afalg.t, is known to fail if the host kernel
Index: chapter08/perl.xml
===================================================================
--- chapter08/perl.xml	(revision 6b6a1b958af3a0e59559e44ad700f761d8a49a09)
+++ chapter08/perl.xml	(revision 73d91ac621a4e59f71ff6664c68c935317f9ce42)
@@ -77,13 +77,5 @@
 
     <variablelist>
-      <title>The meaning of the configure options:</title>
-
-      <varlistentry>
-        <term><parameter>-Dvendorprefix=/usr</parameter></term>
-        <listitem>
-          <para>This ensures <command>perl</command> knows how to
-          tell packages where they should install their Perl modules.</para>
-        </listitem>
-      </varlistentry>
+      <title>The meaning of the new Configure options:</title>
 
       <varlistentry>
@@ -106,11 +98,4 @@
 
       <varlistentry>
-        <term><parameter>-Duseshrplib</parameter></term>
-        <listitem>
-          <para>Build a shared libperl needed by some Perl modules.</para>
-        </listitem>
-      </varlistentry>
-
-      <varlistentry>
         <term><parameter>-Dusethreads</parameter></term>
         <listitem>
@@ -119,16 +104,4 @@
       </varlistentry>
 
-      <varlistentry>
-        <term><parameter>-Dprivlib,-Darchlib,-Dsitelib,...</parameter></term>
-        <listitem>
-          <para>These settings define where Perl looks for installed
-          modules. The LFS editors chose to put them in a directory structure
-          based on the MAJOR.MINOR version of Perl (&perl-version-min;) which
-          allows upgrading Perl to newer patch levels (the patch level is
-          the last dot separated part in the full version string like
-          &perl-version;) without reinstalling all of the modules.</para>
-        </listitem>
-      </varlistentry>
-
     </variablelist>
 
@@ -139,5 +112,5 @@
     <para>To test the results (approximately 11 SBU), issue:</para>
 
-<screen><userinput remap="test">make test</userinput></screen>
+<screen><userinput remap="test">TEST_JOBS=$(nproc) make test_harness</userinput></screen>
 
     <para>Install the package and clean up:</para>
Index: chapter08/pkgconf.xml
===================================================================
--- chapter08/pkgconf.xml	(revision 6b6a1b958af3a0e59559e44ad700f761d8a49a09)
+++ chapter08/pkgconf.xml	(revision 73d91ac621a4e59f71ff6664c68c935317f9ce42)
@@ -44,13 +44,10 @@
 
     <title>Installation of Pkgconf</title>
-<!--
-    <para>Pkgconf-2.0.0 explicitly errors when attempting to run
-    <option>- -modversion</option> with multiple arguments, even if these
-    arguments are constraints for the same package.  This breaks many
-    packages in BLFS. Run this sed to reinstate the old
-    output for pkgconf:</para>
 
-     <screen><userinput remap="pre">sed -i '1330,1336s|^|//|' cli/main.c</userinput></screen>
--->
+    <!-- https://github.com/pkgconf/pkgconf/issues/317 -->
+    <para>Fix a regression in pkgconf-2.0.3 breaking BLFS packages:</para>
+
+    <screen><userinput remap="pre">sed -i 's/str\(cmp.*package\)/strn\1, strlen(pkg-&gt;why)/' cli/main.c</userinput></screen>
+
     <para>Prepare Pkgconf for compilation:</para>
 
Index: chapter08/pkgmgt.xml
===================================================================
--- chapter08/pkgmgt.xml	(revision 6b6a1b958af3a0e59559e44ad700f761d8a49a09)
+++ chapter08/pkgmgt.xml	(revision 73d91ac621a4e59f71ff6664c68c935317f9ce42)
@@ -68,4 +68,15 @@
         all the packages in their dependency order, we do not recommend
         it.  </para>
+      </listitem>
+
+      <listitem>
+        <para>Reinstalling the same version of Glibc (&glibc-version; for
+        this release of LFS) with patches should be safe when these patches
+        do not change ABI and API.  When a security vulnerability is found
+        in Glibc, we often need to apply such a patch to fix the
+        vulnerability and reinstall Glibc.  Consult
+        <ulink url='&lfs-root;lfs/advisories/'>LFS security
+        advisories</ulink> if you are alerted for a published Glibc security
+        vulnerability but unsure about the action to take.</para>
       </listitem>
 
@@ -153,5 +164,5 @@
         implemented this, and most packages use that command to install binary files and
         libraries.  This means that you won't be troubled by this issue most of the time.
-        However, the install process of some packages (notably Mozilla JS
+        However, the install process of some packages (notably SpiderMonkey
         in BLFS) just overwrites the file if it exists; this causes a crash. So
         it's safer to save your work and close unneeded running processes
@@ -186,17 +197,27 @@
       special program to manage the packages. Each package is installed in a
       separate directory. For example, package foo-1.1 is installed in
-      <filename class='directory'>/usr/pkg/foo-1.1</filename>
-      and a symlink is made from <filename>/usr/pkg/foo</filename> to
-      <filename class='directory'>/usr/pkg/foo-1.1</filename>. When
+      <filename class='directory'>/opt/foo-1.1</filename>
+      and a symlink is made from <filename>/opt/foo</filename> to
+      <filename class='directory'>/opt/foo-1.1</filename>. When
       a new version foo-1.2 comes along, it is installed in
-      <filename class='directory'>/usr/pkg/foo-1.2</filename> and the previous
+      <filename class='directory'>/opt/foo-1.2</filename> and the previous
       symlink is replaced by a symlink to the new version.</para>
 
       <para>Environment variables such as <envar>PATH</envar>,
-      <envar>LD_LIBRARY_PATH</envar>, <envar>MANPATH</envar>,
-      <envar>INFOPATH</envar> and <envar>CPPFLAGS</envar> need to be expanded to
-      include <filename>/usr/pkg/foo</filename>. If you install more than a few packages,
-      this scheme becomes unmanageable.</para>
-
+      <envar>MANPATH</envar>, <envar>INFOPATH</envar>,
+      <envar>PKG_CONFIG_PATH</envar>, <envar>CPPFLAGS</envar>,
+      <envar>LDFLAGS</envar>, and the configuration file
+      <filename>/etc/ld.so.conf</filename> may need to be expanded to
+      include the corresponding subdirectories in
+      <filename class='directory'>/opt/foo-x.y</filename>.</para>
+
+      <para>
+        This scheme is used by the BLFS book to install some very large
+        packages to make it easier to upgrade them.  If you install more
+        than a few packages, this scheme becomes unmanageable.  And some
+        packages (for example Linux API headers and Glibc) may not work well
+        with this scheme.
+        <emphasis role='bold'>Never use this scheme system-wide.</emphasis>
+      </para>
     </sect3>
 
Index: chapter08/python.xml
===================================================================
--- chapter08/python.xml	(revision 6b6a1b958af3a0e59559e44ad700f761d8a49a09)
+++ chapter08/python.xml	(revision 73d91ac621a4e59f71ff6664c68c935317f9ce42)
@@ -49,5 +49,4 @@
             --enable-shared      \
             --with-system-expat  \
-            --with-system-ffi    \
             --enable-optimizations</userinput></screen>
 
@@ -62,12 +61,4 @@
        </listitem>
      </varlistentry>
-
-    <varlistentry>
-      <term><parameter>--with-system-ffi</parameter></term>
-      <listitem>
-        <para>This switch enables linking against the system version of
-        <filename class='libraryfile'>libffi.so</filename>.</para>
-      </listitem>
-    </varlistentry>
 
     <varlistentry>
@@ -165,9 +156,8 @@
 <screen><userinput remap="install">install -v -dm755 /usr/share/doc/python-&python-version;/html
 
-tar --strip-components=1  \
-    --no-same-owner       \
-    --no-same-permissions \
-    -C /usr/share/doc/python-&python-version;/html \
-    -xvf ../python-&python-version;-docs-html.tar.bz2</userinput></screen>
+tar --no-same-owner \
+    -xvf ../python-&python-version;-docs-html.tar.bz2
+cp -R --no-preserve=mode python-&python-version;-docs-html/* \
+    /usr/share/doc/python-&python-version;/html</userinput></screen>
 
     <variablelist>
@@ -175,9 +165,10 @@
 
     <varlistentry>
-      <term><option>--no-same-owner</option> and <option>--no-same-permissions</option></term>
+      <term><option>--no-same-owner</option> (tar) and <option>--no-preserve=mode</option> (cp)</term>
       <listitem>
         <para>Ensure the installed files have the correct ownership and
         permissions.  Without these options, <application>tar</application>
-        will install the package files with the upstream creator's values.
+        will install the package files with the upstream creator's values
+        and files would have restrictive permissions.
         </para>
       </listitem>
@@ -192,7 +183,7 @@
 
     <segmentedlist>
-      <segtitle>Installed Programs</segtitle>
-      <segtitle>Installed Library</segtitle>
-      <segtitle>Installed Directories</segtitle>
+      <segtitle>Installed programs</segtitle>
+      <segtitle>Installed library</segtitle>
+      <segtitle>Installed directories</segtitle>
 
       <seglistitem>
Index: chapter08/setuptools.xml
===================================================================
--- chapter08/setuptools.xml	(revision 73d91ac621a4e59f71ff6664c68c935317f9ce42)
+++ chapter08/setuptools.xml	(revision 73d91ac621a4e59f71ff6664c68c935317f9ce42)
@@ -0,0 +1,71 @@
+<?xml version="1.0" encoding="ISO-8859-1"?>
+<!DOCTYPE sect1 PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN"
+  "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
+  <!ENTITY % general-entities SYSTEM "../general.ent">
+  %general-entities;
+]>
+
+<sect1 id="ch-system-setuptools" role="wrap">
+  <?dbhtml filename="setuptools.html"?>
+
+  <sect1info condition="script">
+    <productname>setuptools</productname>
+    <productnumber>&setuptools-version;</productnumber>
+    <address>&setuptools-url;</address>
+  </sect1info>
+
+  <title>Setuptools-&setuptools-version;</title>
+
+  <indexterm zone="ch-system-setuptools">
+    <primary sortas="a-setuptools">Setuptools</primary>
+  </indexterm>
+
+  <sect2 role="package">
+    <title/>
+
+    <para>Setuptools is a tool used to download, build, install, upgrade, 
+    and uninstall Python packages.</para>
+
+    <segmentedlist>
+      <segtitle>&buildtime;</segtitle>
+      <segtitle>&diskspace;</segtitle>
+      <seglistitem>
+        <seg>&setuptools-fin-sbu;</seg>
+        <seg>&setuptools-fin-du;</seg>
+      </seglistitem>
+    </segmentedlist>
+
+  </sect2>
+
+  <sect2 role="installation">
+    <title>Installation of Setuptools</title>
+
+    <para>Build the package:</para>
+
+<screen><userinput remap="install">pip3 wheel -w dist --no-cache-dir --no-build-isolation --no-deps $PWD</userinput></screen>
+
+    <para>Install the package:</para>
+
+<screen><userinput remap="install">pip3 install --no-index --find-links dist setuptools</userinput></screen>
+  </sect2>
+
+  <sect2 id="contents-setuptools" role="content">
+    <title>Contents of Setuptools</title>
+
+    <segmentedlist>
+      <segtitle>Installed directory</segtitle>
+
+      <seglistitem>
+         <seg>
+            /usr/lib/python&python-minor;/site-packages/_distutils_hack,
+            /usr/lib/python&python-minor;/site-packages/pkg_resources,
+            /usr/lib/python&python-minor;/site-packages/setuptools, and
+            /usr/lib/python&python-minor;/site-packages/setuptools-&setuptools-version;.dist-info
+         </seg>
+      </seglistitem>
+    </segmentedlist>
+
+  </sect2>
+
+</sect1>
+
Index: chapter08/shadow.xml
===================================================================
--- chapter08/shadow.xml	(revision 6b6a1b958af3a0e59559e44ad700f761d8a49a09)
+++ chapter08/shadow.xml	(revision 73d91ac621a4e59f71ff6664c68c935317f9ce42)
@@ -277,5 +277,5 @@
         <seg>chage, chfn, chgpasswd, chpasswd, chsh, expiry, faillog,
         getsubids, gpasswd, groupadd, groupdel, groupmems, groupmod, grpck,
-        grpconv, grpunconv, lastlog, login, logoutd, newgidmap, newgrp,
+        grpconv, grpunconv, login, logoutd, newgidmap, newgrp,
         newuidmap, newusers, nologin, passwd, pwck, pwconv, pwunconv,
         sg (link to newgrp), su, useradd, userdel, usermod,
@@ -460,15 +460,4 @@
       </varlistentry>
 
-      <varlistentry id="lastlog">
-        <term><command>lastlog</command></term>
-        <listitem>
-          <para>Reports the most recent login of all users or of a
-          given user</para>
-          <indexterm zone="ch-system-shadow lastlog">
-            <primary sortas="b-lastlog">lastlog</primary>
-          </indexterm>
-        </listitem>
-      </varlistentry>
-
       <varlistentry id="login">
         <term><command>login</command></term>
Index: chapter08/stripping.xml
===================================================================
--- chapter08/stripping.xml	(revision 6b6a1b958af3a0e59559e44ad700f761d8a49a09)
+++ chapter08/stripping.xml	(revision 73d91ac621a4e59f71ff6664c68c935317f9ce42)
@@ -30,7 +30,10 @@
   dynamically linked binaries and shared libraries).</para>
 
-  <para>The debugging symbols from selected libraries are preserved
-  in separate files.  That debugging information is needed to run
-  regression tests with <ulink
+  <!-- TODO: Zstd is better than Zlib for both speed and size.
+             Unfortunately Valgrind does not support Zstd-compressed debug
+             info yet: https://bugs.kde.org/show_bug.cgi?id=469782 -->
+  <para>The debugging symbols from selected libraries are compressed with
+  <application>Zlib</application> and preserved in separate files.  That
+  debugging information is needed to run regression tests with <ulink
   url='&blfs-book;/general/valgrind.html'>valgrind</ulink> or <ulink
   url='&blfs-book;/general/gdb.html'>gdb</ulink> later, in BLFS.
@@ -80,5 +83,5 @@
 
 for LIB in $save_usrlib; do
-    objcopy --only-keep-debug $LIB $LIB.dbg
+    objcopy --only-keep-debug --compress-debug-sections=zlib $LIB $LIB.dbg
     cp $LIB /tmp/$LIB
     strip --strip-unneeded /tmp/$LIB
Index: chapter08/udev.xml
===================================================================
--- chapter08/udev.xml	(revision 6b6a1b958af3a0e59559e44ad700f761d8a49a09)
+++ chapter08/udev.xml	(revision 73d91ac621a4e59f71ff6664c68c935317f9ce42)
@@ -56,4 +56,9 @@
  <screen><userinput remap="pre">sed '/systemd-sysctl/s/^/#/' -i rules.d/99-systemd.rules.in</userinput></screen>
 
+    <para>Adjust the hardcoded paths to network configuration files for the
+    standalone udev installation:</para>
+
+ <screen><userinput remap="pre">sed '/NETWORK_DIRS/s/systemd/udev/' -i src/basic/path-lookup.h</userinput></screen>
+
     <para>Prepare Udev for compilation:</para>
 
@@ -67,4 +72,6 @@
       -Ddev-kvm-mode=0660           \
       -Dlink-udev-shared=false      \
+      -Dlogind=false                \
+      -Dvconsole=false              \
       ..</userinput></screen>
 
@@ -108,33 +115,40 @@
         </listitem>
       </varlistentry>
+
+      <varlistentry>
+        <term><parameter>-Dlogind=false -Dvconsole=false</parameter></term>
+        <listitem>
+          <para>These options prevent the generation of several udev rule
+          files belonging to the other Systemd components that we won't
+          install.</para>
+        </listitem>
+      </varlistentry>
     </variablelist>
 
     <para>Only build the components needed for udev:</para>
 
-    <screen><userinput remap="make">ninja udevadm systemd-hwdb \
-      $(grep -o -E "^build (src/libudev|src/udev|rules.d|hwdb.d)[^:]*" \
-        build.ninja | awk '{ print $2 }')                              \
+    <screen><userinput remap="make">ninja udevadm systemd-hwdb                                           \
+      $(ninja -n | grep -Eo '(src/(lib)?udev|rules.d|hwdb.d)/[^ ]*') \
       $(realpath libudev.so --relative-to .)</userinput></screen>
 
-    <para>Remove one udev rule file requiring a full Systemd
-    installation:</para>
-
-<screen><userinput remap="make">rm rules.d/90-vconsole.rules</userinput></screen>
-
     <para>Install the package:</para>
 
-    <screen><userinput remap="install">install -vm755 -d {/usr/lib,/etc}/udev/{hwdb,rules}.d
+    <screen><userinput remap="install">install -vm755 -d {/usr/lib,/etc}/udev/{hwdb.d,rules.d,network}
 install -vm755 -d /usr/{lib,share}/pkgconfig
-install -vm755 udevadm                     /usr/bin/
-install -vm755 systemd-hwdb                /usr/bin/udev-hwdb
-ln      -svfn  ../bin/udevadm              /usr/sbin/udevd
-cp      -av    libudev.so{,*[0-9]}         /usr/lib/
-install -vm644 ../src/libudev/libudev.h    /usr/include/
-install -vm644 src/libudev/*.pc            /usr/lib/pkgconfig/
-install -vm644 src/udev/*.pc               /usr/share/pkgconfig/
-install -vm644 ../src/udev/udev.conf       /etc/udev/
-install -vm644 rules.d/* ../rules.d/{*.rules,README} /usr/lib/udev/rules.d/
-install -vm644 hwdb.d/*  ../hwdb.d/{*.hwdb,README}   /usr/lib/udev/hwdb.d/
-install -vm755 $(find src/udev -type f | grep -F -v ".") /usr/lib/udev</userinput></screen>
+install -vm755 udevadm                             /usr/bin/
+install -vm755 systemd-hwdb                        /usr/bin/udev-hwdb
+ln      -svfn  ../bin/udevadm                      /usr/sbin/udevd
+cp      -av    libudev.so{,*[0-9]}                 /usr/lib/
+install -vm644 ../src/libudev/libudev.h            /usr/include/
+install -vm644 src/libudev/*.pc                    /usr/lib/pkgconfig/
+install -vm644 src/udev/*.pc                       /usr/share/pkgconfig/
+install -vm644 ../src/udev/udev.conf               /etc/udev/
+install -vm644 rules.d/* ../rules.d/README         /usr/lib/udev/rules.d/
+install -vm644 $(find ../rules.d/*.rules \
+                      -not -name '*power-switch*') /usr/lib/udev/rules.d/
+install -vm644 hwdb.d/*  ../hwdb.d/{*.hwdb,README} /usr/lib/udev/hwdb.d/
+install -vm755 $(find src/udev \
+                      -type f -not -name '*.*')    /usr/lib/udev
+install -vm644 ../network/99-default.link          /usr/lib/udev/network</userinput></screen>
 
     <para>Install some custom rules and support files useful in an LFS
@@ -151,11 +165,19 @@
     --no-same-owner --strip-components=1                              \
     -C /usr/share/man --wildcards '*/udev*' '*/libudev*'              \
+                                  '*/systemd.link.5'                  \
                                   '*/systemd-'{hwdb,udevd.service}.8
+
+sed 's|systemd/network|udev/network|'                                 \
+    /usr/share/man/man5/systemd.link.5                                \
+  > /usr/share/man/man5/udev.link.5
+
 sed 's/systemd\(\\\?-\)/udev\1/' /usr/share/man/man8/systemd-hwdb.8   \
                                > /usr/share/man/man8/udev-hwdb.8
+
 sed 's|lib.*udevd|sbin/udevd|'                                        \
     /usr/share/man/man8/systemd-udevd.service.8                       \
   > /usr/share/man/man8/udevd.8
-rm  /usr/share/man/man8/systemd-*.8</userinput></screen>
+
+rm /usr/share/man/man*/systemd*</userinput></screen>
 
   </sect2>
Index: chapter08/util-linux.xml
===================================================================
--- chapter08/util-linux.xml	(revision 6b6a1b958af3a0e59559e44ad700f761d8a49a09)
+++ chapter08/util-linux.xml	(revision 73d91ac621a4e59f71ff6664c68c935317f9ce42)
@@ -43,5 +43,5 @@
     <title>Installation of Util-linux</title>
 
-    <para>First, disable a problem test:</para>
+    <para>First, disable a problematic test:</para>
 
     <screen><userinput remap="pre">sed -i '/test_mkfds/s/^/#/' tests/helpers/Makemodule.am</userinput></screen>
Index: chapter09/network.xml
===================================================================
--- chapter09/network.xml	(revision 6b6a1b958af3a0e59559e44ad700f761d8a49a09)
+++ chapter09/network.xml	(revision 73d91ac621a4e59f71ff6664c68c935317f9ce42)
@@ -179,7 +179,8 @@
      </indexterm>
 
-     <para>Decide on the IP address, fully-qualified domain name (FQDN), and
-     possible aliases for use in the <filename>/etc/hosts</filename> file. The
-     syntax is:</para>
+     <para>Decide on a fully-qualified domain name (FQDN), and possible aliases
+     for use in the <filename>/etc/hosts</filename> file. If using static IP
+     addresses, you'll also need to decide on an IP address. The syntax
+     for a hosts file entry is:</para>
 
 <screen><literal>IP_address myhost.example.org aliases</literal></screen>
@@ -198,9 +199,16 @@
      range 0-255.</para>
 
-     <para>A valid private IP address could be 192.168.1.1. A valid FQDN for
-     this IP could be lfs.example.org.</para>
-
-     <para>Even if not using a network card, a valid FQDN is still required.
-     This is necessary for certain programs to operate correctly.</para>
+     <para>A valid private IP address could be 192.168.1.1.</para>
+
+     <para>If the computer is to be visible to the Internet, a valid FQDN
+     can be the domain name itself, or a string resulted by concatenating a
+     prefix (often the hostname) and the domain name with a <quote>.</quote>
+     character.  And, you need to contact the domain provider to resolve the
+     FQDN to your public IP address.</para>
+
+     <para>Even if the computer is not visible to the Internet, a FQDN is
+     still needed for certain programs, such as MTAs, to operate properly.
+     A special FQDN, <literal>localhost.localdomain</literal>, can be used
+     for this purpose.</para>
 
      <para>Create the  <filename>/etc/hosts</filename> file by running:</para>
Index: chapter09/networkd.xml
===================================================================
--- chapter09/networkd.xml	(revision 6b6a1b958af3a0e59559e44ad700f761d8a49a09)
+++ chapter09/networkd.xml	(revision 73d91ac621a4e59f71ff6664c68c935317f9ce42)
@@ -317,19 +317,25 @@
      range 0-255.</para>
 
-     <para>A valid private IP address could be 192.168.1.1. A valid FQDN for
-     this IP could be lfs.example.org.</para>
-
-     <para>Even if not using a network card, a valid FQDN is still required.
-     This is necessary for certain programs, such as MTAs, to operate properly.</para>
-
-<!--
-     <para>Create the /etc/hosts file using the following command:</para>
-
-<screen role="nodump"><userinput>cat &gt; /etc/hosts &lt;&lt; "EOF"
+     <para>A valid private IP address could be 192.168.1.1.</para>
+
+     <para>If the computer is to be visible to the Internet, a valid FQDN
+     can be the domain name itself, or a string resulted by concatenating a
+     prefix (often the hostname) and the domain name with a <quote>.</quote>
+     character.  And, you need to contact the domain provider to resolve the
+     FQDN to your public IP address.</para>
+
+     <para>Even if the computer is not visible to the Internet, a FQDN is
+     still needed for certain programs, such as MTAs, to operate properly.
+     A special FQDN, <literal>localhost.localdomain</literal>, can be used
+     for this purpose.</para>
+
+     <para>Create the <filename>/etc/hosts</filename> file using the following
+     command:</para>
+
+<screen><userinput>cat &gt; /etc/hosts &lt;&lt; "EOF"
 <literal># Begin /etc/hosts
 
-127.0.0.1 localhost.localdomain localhost
-127.0.1.1 <replaceable>&lt;FQDN&gt;</replaceable> <replaceable>&lt;HOSTNAME&gt;</replaceable>
-::1       localhost ip6-localhost ip6-loopback
+<replaceable>&lt;192.168.0.2&gt;</replaceable> <replaceable>&lt;FQDN&gt;</replaceable> <replaceable>[alias1] [alias2] ...</replaceable>
+::1       ip6-localhost ip6-loopback
 ff02::1   ip6-allnodes
 ff02::2   ip6-allrouters
@@ -337,34 +343,23 @@
 # End /etc/hosts</literal>
 EOF</userinput></screen>
--->
-
-     <para>Create the <filename>/etc/hosts</filename> file using the following
-     command:</para>
-
-<screen><userinput>cat &gt; /etc/hosts &lt;&lt; "EOF"
-<literal># Begin /etc/hosts
-
-127.0.0.1 localhost.localdomain localhost
-127.0.1.1 <replaceable>&lt;FQDN&gt;</replaceable> <replaceable>&lt;HOSTNAME&gt;</replaceable>
-<replaceable>&lt;192.168.0.2&gt;</replaceable> <replaceable>&lt;FQDN&gt;</replaceable> <replaceable>&lt;HOSTNAME&gt;</replaceable> <replaceable>[alias1] [alias2] ...</replaceable>
-::1       localhost ip6-localhost ip6-loopback
-ff02::1   ip6-allnodes
-ff02::2   ip6-allrouters
-
-# End /etc/hosts</literal>
-EOF</userinput></screen>
-
-     <para>The <replaceable>&lt;192.168.0.2&gt;</replaceable>,
-     <replaceable>&lt;FQDN&gt;</replaceable>, and
-     <replaceable>&lt;HOSTNAME&gt;</replaceable> values need to be
+
+     <para>The <replaceable>&lt;192.168.0.2&gt;</replaceable> and
+     <replaceable>&lt;FQDN&gt;</replaceable> values need to be
      changed for specific uses or requirements (if assigned an IP address by a
      network/system administrator and the machine will be connected to an
      existing network). The optional alias name(s) can be omitted, and the
      <replaceable>&lt;192.168.0.2&gt;</replaceable> line can be omitted if you
-     are using a connection configured with DHCP or IPv6 Autoconfiguration.</para>
+     are using a connection configured with DHCP or IPv6 Autoconfiguration,
+     or using <literal>localhost.localdomain</literal> as the FQDN.</para>
+
+     <para>The <filename>/etc/hostname</filename> does not contain entries
+     for <literal>localhost</literal>,
+     <literal>localhost.localdomain</literal>, or the hostname (without a
+     domain) because they are handled by the
+     <systemitem class='library'>myhostname</systemitem> NSS module, read
+     the man page <filename>nss-myhostname(8)</filename> for details.</para>
 
      <para>The ::1 entry is the IPv6 counterpart of 127.0.0.1 and represents
-     the IPv6 loopback interface. 127.0.1.1 is a loopback entry reserved
-     specifically for the FQDN.</para>
+     the IPv6 loopback interface.</para>
 
    </sect2>
Index: chapter11/afterlfs.xml
===================================================================
--- chapter11/afterlfs.xml	(revision 6b6a1b958af3a0e59559e44ad700f761d8a49a09)
+++ chapter11/afterlfs.xml	(revision 73d91ac621a4e59f71ff6664c68c935317f9ce42)
@@ -185,6 +185,5 @@
        This method also provides a full graphical environment, but first
        requires installing
-        <ulink url="&blfs-book;postlfs/openssh.html">sshd</ulink> and
-        <ulink url="&blfs-book;basicnet/wget.html">wget</ulink>
+        <ulink url="&blfs-book;postlfs/openssh.html">sshd</ulink>
        on the LFS system, usually in chroot. It also requires a second
        computer. This method has the advantage of being simple by not requiring
@@ -194,4 +193,15 @@
     </para>
 
+    <para>
+      You may use the <command>scp</command> command to upload the package
+      sources to be built onto the LFS system.  If you want to download
+      the sources onto the LFS system directly instead, install
+      <ulink url="&blfs-book;general/libtasn1.html">libtasn1</ulink>,
+      <ulink url="&blfs-book;postlfs/p11-kit.html">p11-kit</ulink>,
+      <ulink url="&blfs-book;postlfs/make-ca.html">make-ca</ulink>, and
+      <ulink url="&blfs-book;basicnet/wget.html">wget</ulink>
+      in chroot (or upload their sources using <command>scp</command>
+      after booting the LFS system).
+    </para>
   </sect3>
 
Index: chapter11/reboot.xml
===================================================================
--- chapter11/reboot.xml	(revision 6b6a1b958af3a0e59559e44ad700f761d8a49a09)
+++ chapter11/reboot.xml	(revision 73d91ac621a4e59f71ff6664c68c935317f9ce42)
@@ -114,5 +114,5 @@
 
 <screen><userinput>umount -v $LFS/dev/pts
-mountpoint -q $LFS/dev/shm &amp;&amp; umount $LFS/dev/shm
+mountpoint -q $LFS/dev/shm &amp;&amp; umount -v $LFS/dev/shm
 umount -v $LFS/dev
 umount -v $LFS/run
Index: chapter11/theend.xml
===================================================================
--- chapter11/theend.xml	(revision 6b6a1b958af3a0e59559e44ad700f761d8a49a09)
+++ chapter11/theend.xml	(revision 73d91ac621a4e59f71ff6664c68c935317f9ce42)
@@ -59,4 +59,5 @@
 PRETTY_NAME="Linux From Scratch &version;"
 VERSION_CODENAME="&lt;your name here&gt;"
+HOME_URL="&lfs-root;lfs/"
 EOF</userinput></screen>
 
Index: git-version.sh
===================================================================
--- git-version.sh	(revision 6b6a1b958af3a0e59559e44ad700f761d8a49a09)
+++ git-version.sh	(revision 73d91ac621a4e59f71ff6664c68c935317f9ce42)
@@ -1,3 +1,3 @@
-#!/bin/sh
+#!/bin/bash
 
 if [ "$1" = sysv ]; then
@@ -15,4 +15,8 @@
 echo "<!ENTITY % systemd \"$SYSTEMD\">"  >> conditional.ent
 
+if [ -e LFS-RELEASE ]; then
+	exit 0
+fi
+
 if ! git status > /dev/null; then
     # Either it's not a git repository, or git is unavaliable.
@@ -25,5 +29,5 @@
     echo "]]>"                                             >> version.ent
     echo "<!ENTITY releasedate       \"unknown\">"         >> version.ent
-    echo "<!ENTITY copyrightdate     \"1999-2022\">"       >> version.ent
+    echo "<!ENTITY copyrightdate     \"1999-2023\">"       >> version.ent
     exit 0
 fi
@@ -66,2 +70,4 @@
 echo "<!ENTITY releasedate       \"$full_date\">"          >> version.ent
 echo "<!ENTITY copyrightdate     \"1999-$year\">"          >> version.ent
+
+[ -z "$DIST" ] || echo $version > "$DIST"
Index: lfs-latest-git.php
===================================================================
--- lfs-latest-git.php	(revision 6b6a1b958af3a0e59559e44ad700f761d8a49a09)
+++ lfs-latest-git.php	(revision 73d91ac621a4e59f71ff6664c68c935317f9ce42)
@@ -86,6 +86,7 @@
   exec( "curl --location --silent --max-time 30 $url", $dir );
 
-  $s   = implode( "\n", $dir );
-  $dir = strip_tags( $s );
+  $dir = implode( "\n", $dir );
+  if ( !preg_match( "/api.github.com/", $url) )
+    $dir = strip_tags( $dir );
   return explode( "\n", $dir );
 }
@@ -128,4 +129,5 @@
 if ( $package == "flex"       ) $dirpath = github("westes/flex");
 if ( $package == "flit_core"  ) $dirpath = "https://pypi.org/project/flit-core/";
+if ( $package == "setuptools" ) $dirpath = "https://pypi.org/project/setuptools/";
 if ( $package == "gcc"        ) $dirpath = max_parent( $dirpath, "gcc-" );
 if ( $package == "iana-etc"   ) $dirpath = github("Mic92/iana-etc");
@@ -294,4 +296,7 @@
      return find_max( $lines, "/flit-core /", "/^.*flit-core ([\d\.]+)$/" );
 
+  if ( $package == "setuptools" )
+     return find_max( $lines, "/setuptools /", "/^.*setuptools ([\d\.]+)$/" );
+
   if ( $package == "procps-ng" )
      return find_max( $lines, "/v\d/", "/^.*v([\d\.]+)$/" );
Index: packages.ent
===================================================================
--- packages.ent	(revision 6b6a1b958af3a0e59559e44ad700f761d8a49a09)
+++ packages.ent	(revision 73d91ac621a4e59f71ff6664c68c935317f9ce42)
@@ -48,8 +48,8 @@
 <!ENTITY automake-fin-sbu "less than 0.1 SBU (about 7.0 SBU with tests)">
 
-<!ENTITY bash-version "5.2.15">
-<!ENTITY bash-size "10,695 KB">
+<!ENTITY bash-version "5.2.21">
+<!ENTITY bash-size "10,696 KB">
 <!ENTITY bash-url "&gnu;bash/bash-&bash-version;.tar.gz">
-<!ENTITY bash-md5 "4281bb43497f3905a308430a8d6a30a5">
+<!ENTITY bash-md5 "ad5b38410e3bf0e9bcc20e2765f5e3f9">
 <!ENTITY bash-home "&gnu-software;bash/">
 <!ENTITY bash-tmp-du "67 MB">
@@ -58,8 +58,8 @@
 <!ENTITY bash-fin-sbu "1.1 SBU">
 
-<!ENTITY bc-version "6.6.0">
-<!ENTITY bc-size "455 KB">
+<!ENTITY bc-version "6.7.3">
+<!ENTITY bc-size "456 KB">
 <!ENTITY bc-url "https://github.com/gavinhoward/bc/releases/download/&bc-version;/bc-&bc-version;.tar.xz">
-<!ENTITY bc-md5 "a148cbaaf8ff813b7289a00539e74a5f">
+<!ENTITY bc-md5 "a2e39a5be32330bc2166b0e501668178">
 <!ENTITY bc-home "https://git.gavinhoward.com/gavin/bc">
 <!ENTITY bc-fin-du "7.7 MB">
@@ -149,8 +149,8 @@
 <!ENTITY e2fsprogs-fin-sbu "2.4 SBU on a spinning disk, 0.6 SBU on an SSD">
 
-<!ENTITY elfutils-version "0.189"> <!-- libelf -->
-<!ENTITY elfutils-size "8,936 KB">
+<!ENTITY elfutils-version "0.190"> <!-- libelf -->
+<!ENTITY elfutils-size "8,949 KB">
 <!ENTITY elfutils-url "https://sourceware.org/ftp/elfutils/&elfutils-version;/elfutils-&elfutils-version;.tar.bz2">
-<!ENTITY elfutils-md5 "5cfaa711a90cb670406cd495aeaa6030">
+<!ENTITY elfutils-md5 "79ad698e61a052bea79e77df6a08bc4b">
 <!ENTITY elfutils-home "https://sourceware.org/elfutils/">
 <!ENTITY elfutils-fin-du "122 MB">
@@ -209,8 +209,8 @@
 <!ENTITY flit-core-fin-sbu "less than 0.1 SBU">
 
-<!ENTITY gawk-version "5.2.2">
-<!ENTITY gawk-size "3,324 KB">
+<!ENTITY gawk-version "5.3.0">
+<!ENTITY gawk-size "3,356 KB">
 <!ENTITY gawk-url "&gnu;gawk/gawk-&gawk-version;.tar.xz">
-<!ENTITY gawk-md5 "d63b4de2c722cbd9b8cc8e6f14d78a1e">
+<!ENTITY gawk-md5 "97c5a7d83f91a7e1b2035ebbe6ac7abd">
 <!ENTITY gawk-home "&gnu-software;gawk/">
 <!ENTITY gawk-tmp-du "48 MB">
@@ -223,5 +223,4 @@
 <!ENTITY gcc-url "&gnu;gcc/gcc-&gcc-version;/gcc-&gcc-version;.tar.xz">
 <!ENTITY gcc-md5 "e0e48554cc6e4f261d55ddee9ab69075">
-<!ENTITY gcc-sha256 "">
 <!ENTITY gcc-home "https://gcc.gnu.org/">
 <!ENTITY gcc-tmpp1-du "4.2 GB">
@@ -247,8 +246,8 @@
 <!ENTITY gdbm-fin-sbu "less than 0.1 SBU">
 
-<!ENTITY gettext-version "0.22">
-<!ENTITY gettext-size "9,775 KB">
+<!ENTITY gettext-version "0.22.4">
+<!ENTITY gettext-size "10,016 KB">
 <!ENTITY gettext-url "&gnu;gettext/gettext-&gettext-version;.tar.xz">
-<!ENTITY gettext-md5 "db2f3daf34fd5b85ab1a56f9033e42d1">
+<!ENTITY gettext-md5 "2d8507d003ef3ddd1c172707ffa97ed8">
 <!ENTITY gettext-home "&gnu-software;gettext/">
 <!ENTITY gettext-tmp-du "306 MB">
@@ -319,8 +318,8 @@
 <!ENTITY gzip-fin-sbu "0.3 SBU">
 
-<!ENTITY iana-etc-version "20230810">
+<!ENTITY iana-etc-version "20231117">
 <!ENTITY iana-etc-size "588 KB">
 <!ENTITY iana-etc-url "https://github.com/Mic92/iana-etc/releases/download/&iana-etc-version;/iana-etc-&iana-etc-version;.tar.gz">
-<!ENTITY iana-etc-md5 "0502bd41cc0bf1c1c3cd8651058b9650">
+<!ENTITY iana-etc-md5 "f26b37a03a211ddd4e9c7189191e2772">
 <!ENTITY iana-etc-home "https://www.iana.org/protocols">
 <!ENTITY iana-etc-fin-du "4.8 MB">
@@ -331,5 +330,4 @@
 <!ENTITY inetutils-url "&gnu;inetutils/inetutils-&inetutils-version;.tar.xz">
 <!ENTITY inetutils-md5 "319d65bb5a6f1847c4810651f3b4ba74">
-<!ENTITY inetutils-sha256 "">
 <!ENTITY inetutils-home "&gnu-software;inetutils/">
 <!ENTITY inetutils-fin-du "31 MB">
@@ -344,8 +342,8 @@
 <!ENTITY intltool-fin-sbu "less than 0.1 SBU">
 
-<!ENTITY iproute2-version "6.4.0">
-<!ENTITY iproute2-size "904 KB">
+<!ENTITY iproute2-version "6.6.0">
+<!ENTITY iproute2-size "897 KB">
 <!ENTITY iproute2-url "&kernel;linux/utils/net/iproute2/iproute2-&iproute2-version;.tar.xz">
-<!ENTITY iproute2-md5 "90ce0eb84a8f1e2b14ffa77e8eb3f5ed">
+<!ENTITY iproute2-md5 "6716fc3188dbea226997fa2478a190d7">
 <!ENTITY iproute2-home "&kernel;linux/utils/net/iproute2/">
 <!ENTITY iproute2-fin-du "17 MB">
@@ -360,17 +358,17 @@
 <!ENTITY jinja2-fin-sbu "less than 0.1 SBU">
 
-<!ENTITY kbd-version "2.6.2">
-<!ENTITY kbd-size "1,469 KB">
+<!ENTITY kbd-version "2.6.3">
+<!ENTITY kbd-size "1,468 KB">
 <!ENTITY kbd-url "https://www.kernel.org/pub/linux/utils/kbd/kbd-&kbd-version;.tar.xz">
-<!ENTITY kbd-md5 "35e261a31e673c8aec7dbc6553ea075c">
+<!ENTITY kbd-md5 "4764775cac0415f1d35a0cd311249941">
 <!ENTITY kbd-home "https://kbd-project.org/">
 <!ENTITY kbd-fin-du "35 MB">
 <!ENTITY kbd-fin-sbu "0.1 SBU">
 
-<!ENTITY kmod-version "30">
-<!ENTITY kmod-size "555 KB">
+<!ENTITY kmod-version "31">
+<!ENTITY kmod-size "558 KB">
 <!ENTITY kmod-url "&kernel;linux/utils/kernel/kmod/kmod-&kmod-version;.tar.xz">
-<!ENTITY kmod-md5 "85202f0740a75eb52f2163c776f9b564">
-<!ENTITY kmod-home " ">
+<!ENTITY kmod-md5 "6165867e1836d51795a11ea4762ff66a">
+<!ENTITY kmod-home "https://github.com/kmod-project/kmod">
 <!ENTITY kmod-fin-du "12 MB">
 <!ENTITY kmod-fin-sbu "less than 0.1 SBU">
@@ -433,17 +431,20 @@
 
 <!ENTITY linux-major-version "6">
-<!ENTITY linux-minor-version "5">
-<!ENTITY linux-patch-version "1">
+<!ENTITY linux-minor-version "6">
+<!ENTITY linux-patch-version "3">
 <!--<!ENTITY linux-version "&linux-major-version;.&linux-minor-version;">-->
 <!ENTITY linux-version "&linux-major-version;.&linux-minor-version;.&linux-patch-version;">
-<!ENTITY linux-size "135,684 KB">
+<!ENTITY linux-size "136,763 KB">
 <!ENTITY linux-url "&kernel;linux/kernel/v&linux-major-version;.x/linux-&linux-version;.tar.xz">
-<!ENTITY linux-md5 "228479f37b3face05b53bd7f8906abe0">
+<!ENTITY linux-md5 "3a760f5ac7d37b62dda9a4ca89f5fd96">
 <!ENTITY linux-home "https://www.kernel.org/">
-<!-- measured for 5.13.4 / gcc-11.1.0 on x86_64 : minimum is
- allnoconfig rounded down to allow for ongoing cleanups,
- max is allmodconfig  -->
-<!ENTITY linux-knl-du "1200 - 8800 MB (typically about 1700 MB)">
-<!ENTITY linux-knl-sbu "1.5 - 130.0 SBU (typically about 12 SBU)">
+<!-- measured for 6.5.3 / gcc-13.2.0 on x86_64 with -j4 : minimum is
+ allnoconfig + some configs we recommend for the users, rounded down to
+ allow ongoing cleanups; max is allmodconfig but IKHEADERS unset; typical
+ is the "daily use" config for the workstation measuring the min/max values.
+ The disk usage is the sum of the size of linux-6.5.3 directory and the
+ installed kernel image & modules.  -->
+<!ENTITY linux-knl-du "1.8 - 10.6 GB (typically about 2 GB)">
+<!ENTITY linux-knl-sbu "0.6 - 20.4 SBU (typically about 1.4 SBU)">
 
 <!ENTITY linux-headers-tmp-du "1.5 GB">
@@ -470,8 +471,8 @@
 <!ENTITY make-fin-sbu "0.5 SBU">
 
-<!ENTITY man-db-version "2.11.2">
-<!ENTITY man-db-size "1,908 KB">
+<!ENTITY man-db-version "2.12.0">
+<!ENTITY man-db-size "1,941 KB">
 <!ENTITY man-db-url "&savannah;/releases/man-db/man-db-&man-db-version;.tar.xz">
-<!ENTITY man-db-md5 "a7d59fb2df6158c44f8f7009dcc6d875">
+<!ENTITY man-db-md5 "67e0052fa200901b314fad7b68c9db27">
 <!ENTITY man-db-home "https://www.nongnu.org/man-db/">
 <!ENTITY man-db-fin-du "40 MB">
@@ -494,8 +495,8 @@
 <!ENTITY markupsafe-fin-sbu "less than 0.1 SBU">
 
-<!ENTITY meson-version "1.2.1">
-<!ENTITY meson-size "2,131 KB">
+<!ENTITY meson-version "1.3.0">
+<!ENTITY meson-size "2,171 KB">
 <!ENTITY meson-url "&github;/mesonbuild/meson/releases/download/&meson-version;/meson-&meson-version;.tar.gz">
-<!ENTITY meson-md5 "e3cc846536189aacd7d01858a45ca9af">
+<!ENTITY meson-md5 "35dc15e4f94ca5fd30dbe2d88a672254">
 <!ENTITY meson-home "https://mesonbuild.com">
 <!ENTITY meson-fin-du "42 MB">
@@ -536,8 +537,8 @@
 <!ENTITY ninja-fin-sbu "0.3 SBU">
 
-<!ENTITY openssl-version "3.1.2">
-<!ENTITY openssl-size "15,196 KB">
+<!ENTITY openssl-version "3.2.0">
+<!ENTITY openssl-size "17,284 KB">
 <!ENTITY openssl-url "https://www.openssl.org/source/openssl-&openssl-version;.tar.gz">
-<!ENTITY openssl-md5 "1d7861f969505e67b8677e205afd9ff4">
+<!ENTITY openssl-md5 "7903549a14abebc5c323ce4e85f2cbb2">
 <!ENTITY openssl-home "https://www.openssl.org/">
 <!ENTITY openssl-fin-du "587 MB">
@@ -556,10 +557,10 @@
 <!ENTITY perl-version-major "5">
 <!ENTITY perl-version-minor "38">
-<!ENTITY perl-version-patch "0">
+<!ENTITY perl-version-patch "2">
 <!ENTITY perl-version-min "&perl-version-major;.&perl-version-minor;">
 <!ENTITY perl-version "&perl-version-major;.&perl-version-minor;.&perl-version-patch;">
-<!ENTITY perl-size "13,248 KB">
+<!ENTITY perl-size "13,359 KB">
 <!ENTITY perl-url "https://www.cpan.org/src/5.0/perl-&perl-version;.tar.xz">
-<!ENTITY perl-md5 "e1c8aaec897dd386c741f97eef9f2e87">
+<!ENTITY perl-md5 "d3957d75042918a23ec0abac4a2b7e0a">
 <!ENTITY perl-home "https://www.perl.org/">
 <!ENTITY perl-tmp-du "280 MB">
@@ -568,8 +569,8 @@
 <!ENTITY perl-fin-sbu "7.1 SBU">
 
-<!ENTITY pkgconf-version "2.0.3">
-<!ENTITY pkgconf-size "304 KB">
+<!ENTITY pkgconf-version "2.1.0">
+<!ENTITY pkgconf-size "305 KB">
 <!ENTITY pkgconf-url "https://distfiles.ariadne.space/pkgconf/pkgconf-&pkgconf-version;.tar.xz">
-<!ENTITY pkgconf-md5 "b82ca48ed3097adfa007ee71489b6719">
+<!ENTITY pkgconf-md5 "0f2eadbb9dea5aed95147272ae1592cc">
 <!ENTITY pkgconf-home "http://pkgconf.org/">
 <!ENTITY pkgconf-fin-du "4.6 MB">
@@ -595,9 +596,9 @@
      meson pages will be needed: python3.6 and python3.6m -->
 
-<!ENTITY python-version "3.11.5">
-<!ENTITY python-minor "3.11">
-<!ENTITY python-size "19,584 KB">
+<!ENTITY python-version "3.12.0">
+<!ENTITY python-minor "3.12">
+<!ENTITY python-size "20,093 KB">
 <!ENTITY python-url "https://www.python.org/ftp/python/&python-version;/Python-&python-version;.tar.xz">
-<!ENTITY python-md5 "393856f1b7713aa8bba4b642ab9985d3">
+<!ENTITY python-md5 "f6f4616584b23254d165f4db90c247d6">
 <!ENTITY python-home "https://www.python.org/">
 <!ENTITY python-tmp-du "533 MB">
@@ -606,6 +607,6 @@
 <!ENTITY python-fin-sbu "1.9 SBU">
 <!ENTITY python-docs-url "https://www.python.org/ftp/python/doc/&python-version;/python-&python-version;-docs-html.tar.bz2">
-<!ENTITY python-docs-md5 "1abed52338038f4b53a277a5558af838">
-<!ENTITY python-docs-size "7,678 KB">
+<!ENTITY python-docs-md5 "ae9d19bb613ae8ef2457496bd2893915">
+<!ENTITY python-docs-size "8,009 KB">
 
 <!ENTITY readline-version "8.2">
@@ -628,9 +629,17 @@
 <!ENTITY sed-fin-sbu "0.3 SBU">
 
-<!ENTITY shadow-version "4.14.0">
-<!ENTITY shadow-size "1,746 KB">
+<!ENTITY setuptools-version "69.0.2">
+<!ENTITY setuptools-size "2,168 KB">
+<!ENTITY setuptools-url "&pypi-src;/s/setuptools/setuptools-&setuptools-version;.tar.gz">
+<!ENTITY setuptools-md5 "32bcc14eb830a13fbf33e053286f1081">
+<!ENTITY setuptools-home "&pypi-home;/setuptools/">
+<!ENTITY setuptools-fin-du "30 MB">
+<!ENTITY setuptools-fin-sbu "0.1 SBU">
+
+<!ENTITY shadow-version "4.14.2">
+<!ENTITY shadow-size "1,758 KB">
 <!ENTITY shadow-url "&github;/shadow-maint/shadow/releases/download/&shadow-version;/shadow-&shadow-version;.tar.xz">
-<!ENTITY shadow-md5 "bb0166bebc24db9003bb77bfd1359042">
-<!ENTITY shadow-home "https://shadow-maint.github.io/shadow/">
+<!ENTITY shadow-md5 "effc1aa17590305647413125b966f1dd">
+<!ENTITY shadow-home "&github;/shadow-maint/shadow/">
 <!ENTITY shadow-fin-du "46 MB">
 <!ENTITY shadow-fin-sbu "0.1 SBU">
@@ -691,8 +700,8 @@
 <!ENTITY tcl-tmp-sbu "2.7 SBU">
 
-<!ENTITY texinfo-version "7.0.3">
-<!ENTITY texinfo-size "4,776 KB">
+<!ENTITY texinfo-version "7.1">
+<!ENTITY texinfo-size "5,416 KB">
 <!ENTITY texinfo-url "&gnu;texinfo/texinfo-&texinfo-version;.tar.xz">
-<!ENTITY texinfo-md5 "37bf94fd255729a14d4ea3dda119f81a">
+<!ENTITY texinfo-md5 "edd9928b4a3f82674bcc3551616eef3b">
 <!ENTITY texinfo-home "&gnu-software;texinfo/">
 <!ENTITY texinfo-tmp-du "116 MB">
@@ -727,19 +736,19 @@
 <!ENTITY util-linux-fin-sbu "0.5 SBU">
 
-<!ENTITY vim-version "9.0.1837">
+<!ENTITY vim-version "9.0.2136">
 <!-- <!ENTITY vim-majmin "90"> -->
 <!ENTITY vim-docdir "vim/vim90">
-<!ENTITY vim-size "16,838 KB">
-<!--<!ENTITY vim-url "https://github.com/vim/vim/archive/v&vim-version;/vim-&vim-version;.tar.gz">-->
-<!ENTITY vim-url "&anduin-sources;/vim-&vim-version;.tar.gz">
-<!ENTITY vim-md5 "de7cba78a556f96482ae8f09b082aa59">
+<!ENTITY vim-size "16,989 KB">
+<!ENTITY vim-url "https://github.com/vim/vim/archive/v&vim-version;/vim-&vim-version;.tar.gz">
+<!--<!ENTITY vim-url "&anduin-sources;/vim-&vim-version;.tar.gz">-->
+<!ENTITY vim-md5 "8dcf113cb690bcdd13d75a4e7c2e3a62">
 <!ENTITY vim-home "https://www.vim.org">
 <!ENTITY vim-fin-du "229 MB">
 <!ENTITY vim-fin-sbu "2.3 SBU">
 
-<!ENTITY wheel-version "0.41.2">
-<!ENTITY wheel-size "96 KB">
+<!ENTITY wheel-version "0.42.0">
+<!ENTITY wheel-size "97 KB">
 <!ENTITY wheel-url "&pypi-src;/w/wheel/wheel-&wheel-version;.tar.gz">
-<!ENTITY wheel-md5 "06271a9e90c948b7e93dd7ce0fd90272">
+<!ENTITY wheel-md5 "802ad6e5f9336fcb1c76b7593f0cd22d">
 <!ENTITY wheel-home "&pypi-home;/wheel/">
 <!ENTITY wheel-fin-du "1.5 MB">
@@ -754,8 +763,8 @@
 <!ENTITY xml-parser-fin-sbu "less than 0.1 SBU">
 
-<!ENTITY xz-version "5.4.4">
-<!ENTITY xz-size "1,623 KB">
+<!ENTITY xz-version "5.4.5">
+<!ENTITY xz-size "1,642 KB">
 <!ENTITY xz-url "https://tukaani.org/xz/xz-&xz-version;.tar.xz">
-<!ENTITY xz-md5 "d83d6f64a64f88759e312b8a38c3add6">
+<!ENTITY xz-md5 "1d33e0be05c53e7a5641acf5c8b35fdd">
 <!ENTITY xz-home "https://tukaani.org/xz">
 <!ENTITY xz-tmp-du "22 MB">
Index: patches.ent
===================================================================
--- patches.ent	(revision 6b6a1b958af3a0e59559e44ad700f761d8a49a09)
+++ patches.ent	(revision 73d91ac621a4e59f71ff6664c68c935317f9ce42)
@@ -15,7 +15,7 @@
 <!ENTITY glibc-fhs-patch-size "2.8 KB">
 
-<!ENTITY glibc-memalign-patch "glibc-&glibc-version;-memalign_fix-1.patch">
-<!ENTITY glibc-memalign-patch-md5 "2c3552bded42a83ad6a7087c5fbf3857">
-<!ENTITY glibc-memalign-patch-size "20 KB">
+<!ENTITY glibc-upstream-fixes-patch "glibc-&glibc-version;-upstream_fixes-3.patch">
+<!ENTITY glibc-upstream-fixes-patch-md5 "545977e0b5c341ba945cf4b5de92f1e2">
+<!ENTITY glibc-upstream-fixes-patch-size "28 KB">
 
 <!ENTITY grub-upstream-fixes-patch "grub-&grub-version;-upstream_fixes-1.patch">
@@ -27,7 +27,7 @@
 <!ENTITY kbd-backspace-patch-size "12 KB">
 
-<!ENTITY readline-fixes-patch "readline-&readline-version;-upstream_fix-1.patch">
-<!ENTITY readline-fixes-patch-md5 "dd1764b84cfca6b677f44978218a75da">
-<!ENTITY readline-fixes-patch-size "1.3 KB">
+<!ENTITY readline-fixes-patch "readline-&readline-version;-upstream_fixes-2.patch">
+<!ENTITY readline-fixes-patch-md5 "d2477ebe908cc99763d90dde7fd9549a">
+<!ENTITY readline-fixes-patch-size "5.7 KB">
 
 <!ENTITY sysvinit-consolidated-patch "sysvinit-&sysvinit-version;-consolidated-1.patch">
Index: stylesheets/lfs-xsl/chunk-slave.xsl
===================================================================
--- stylesheets/lfs-xsl/chunk-slave.xsl	(revision 6b6a1b958af3a0e59559e44ad700f761d8a49a09)
+++ stylesheets/lfs-xsl/chunk-slave.xsl	(revision 73d91ac621a4e59f71ff6664c68c935317f9ce42)
@@ -10,7 +10,4 @@
   <!-- Upstream XHTML presentation templates -->
   <xsl:import href="http://docbook.sourceforge.net/release/xsl/current/xhtml/docbook.xsl"/>
-
-  <!-- Use ISO-8859-1 for output instead of default UTF-8 -->
-  <xsl:param name="chunker.output.encoding" select="'ISO-8859-1'"/>
 
   <!-- Including our customized elements templates -->
Index: stylesheets/lfs-xsl/pdf/lfs-pagesetup.xsl
===================================================================
--- stylesheets/lfs-xsl/pdf/lfs-pagesetup.xsl	(revision 6b6a1b958af3a0e59559e44ad700f761d8a49a09)
+++ stylesheets/lfs-xsl/pdf/lfs-pagesetup.xsl	(revision 73d91ac621a4e59f71ff6664c68c935317f9ce42)
@@ -242,3 +242,21 @@
   </xsl:template>
 
+  <!-- page.number.format
+       We want roman numerals only in book's preface, not parts prefaces
+       (if any). The original template is in {docbook-xsl}/fo/pagesetup.xsl -->
+  <xsl:template name="page.number.format">
+    <xsl:param name="element" select="local-name(.)"/>
+    <xsl:param name="master-reference" select="''"/>
+
+    <xsl:choose>
+      <xsl:when test="$element = 'toc' and self::book">i</xsl:when>
+      <xsl:when test="$element = 'set'">i</xsl:when>
+      <xsl:when test="$element = 'book'">i</xsl:when>
+      <xsl:when test="$element = 'preface' and not(ancestor::part)">i</xsl:when>
+      <xsl:when test="$element = 'dedication'">i</xsl:when>
+      <xsl:when test="$element = 'acknowledgements'">i</xsl:when>
+      <xsl:otherwise>1</xsl:otherwise>
+    </xsl:choose>
+  </xsl:template>
+
 </xsl:stylesheet>
Index: tidy.conf
===================================================================
--- tidy.conf	(revision 6b6a1b958af3a0e59559e44ad700f761d8a49a09)
+++ tidy.conf	(revision 73d91ac621a4e59f71ff6664c68c935317f9ce42)
@@ -2,6 +2,4 @@
 wrap: 78
 tab-size: 8
-input-encoding: latin1
-output-encoding: latin1
 write-back: yes
 markup: yes
