aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--appendices/dependencies.xml73
-rw-r--r--bootscripts/ChangeLog7
-rw-r--r--bootscripts/lfs/init.d/checkfs4
-rw-r--r--bootscripts/lfs/init.d/udev2
-rw-r--r--chapter01/changelog.xml189
-rw-r--r--chapter01/whatsnew.xml61
-rw-r--r--chapter02/hostreqs.xml23
-rw-r--r--chapter03/packages.xml11
-rw-r--r--chapter04/aboutsbus.xml12
-rw-r--r--chapter04/settingenviron.xml49
-rw-r--r--chapter05/glibc.xml9
-rw-r--r--chapter05/libstdc++.xml2
-rw-r--r--chapter06/coreutils.xml7
-rw-r--r--chapter07/chroot.xml14
-rw-r--r--chapter07/createfiles.xml21
-rw-r--r--chapter08/automake.xml9
-rw-r--r--chapter08/chapter08.xml1
-rw-r--r--chapter08/gawk.xml11
-rw-r--r--chapter08/glibc.xml28
-rw-r--r--chapter08/man-db.xml6
-rw-r--r--chapter08/openssl.xml2
-rw-r--r--chapter08/perl.xml2
-rw-r--r--chapter08/pkgmgt.xml39
-rw-r--r--chapter08/python.xml9
-rw-r--r--chapter08/setuptools.xml71
-rw-r--r--chapter08/shadow.xml13
-rw-r--r--chapter08/udev.xml46
-rw-r--r--chapter11/afterlfs.xml14
-rw-r--r--chapter11/theend.xml1
-rw-r--r--lfs-latest-git.php9
-rw-r--r--packages.ent153
-rw-r--r--patches.ent6
-rw-r--r--stylesheets/lfs-xsl/pdf/lfs-pagesetup.xsl18
33 files changed, 684 insertions, 238 deletions
diff --git a/appendices/dependencies.xml b/appendices/dependencies.xml
index c84776374..73194612c 100644
--- a/appendices/dependencies.xml
+++ b/appendices/dependencies.xml
@@ -1496,37 +1496,37 @@
</segmentedlist>
<!-- Begin Jinja2 dependency info -->
- <bridgehead revision='systemd' renderas="sect2" id="jinja2-dep">Jinja2</bridgehead>
+ <bridgehead renderas="sect2" id="jinja2-dep">Jinja2</bridgehead>
- <segmentedlist id="jinja2-depends" revision='systemd'>
+ <segmentedlist id="jinja2-depends">
<segtitle>&dependencies;</segtitle>
<seglistitem>
- <seg>MarkupSafe and Python</seg>
+ <seg>MarkupSafe, Python, Setuptools, and Wheel</seg>
</seglistitem>
</segmentedlist>
- <segmentedlist id="jinja2-rundeps" revision='systemd'>
+ <segmentedlist id="jinja2-rundeps">
<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>
<seg>No test suite available</seg>
</seglistitem>
</segmentedlist>
- <segmentedlist id="jinja2-before" revision='systemd'>
+ <segmentedlist id="jinja2-before">
<segtitle>&before;</segtitle>
<seglistitem>
<seg>&systemd-udev;</seg>
</seglistitem>
</segmentedlist>
- <segmentedlist id="jinja2-optdeps" revision='systemd'>
+ <segmentedlist id="jinja2-optdeps">
<segtitle>&external;</segtitle>
<seglistitem>
<seg>None</seg>
@@ -2136,37 +2136,37 @@
</segmentedlist>
<!-- Begin MarkupSafe dependency info -->
- <bridgehead renderas="sect2" id="markupsafe-dep" revision='systemd'>MarkupSafe</bridgehead>
+ <bridgehead renderas="sect2" id="markupsafe-dep">MarkupSafe</bridgehead>
- <segmentedlist id="markupsafe-depends" revision='systemd'>
+ <segmentedlist id="markupsafe-depends">
<segtitle>&dependencies;</segtitle>
<seglistitem>
- <seg>Python</seg>
+ <seg>Python, Setuptools, and Wheel</seg>
</seglistitem>
</segmentedlist>
- <segmentedlist id="markupsafe-rundeps" revision='systemd'>
+ <segmentedlist id="markupsafe-rundeps">
<segtitle>&runtime;</segtitle>
<seglistitem>
<seg>Python</seg>
</seglistitem>
</segmentedlist>
- <segmentedlist id="markupsafe-testdeps" revision='systemd'>
+ <segmentedlist id="markupsafe-testdeps">
<segtitle>&testsuites;</segtitle>
<seglistitem>
<seg>No test suite available</seg>
</seglistitem>
</segmentedlist>
- <segmentedlist id="markupsafe-before" revision='systemd'>
+ <segmentedlist id="markupsafe-before">
<segtitle>&before;</segtitle>
<seglistitem>
<seg>Jinja2</seg>
</seglistitem>
</segmentedlist>
- <segmentedlist id="markupsafe-optdeps" revision='systemd'>
+ <segmentedlist id="markupsafe-optdeps">
<segtitle>&external;</segtitle>
<seglistitem>
<seg>None</seg>
@@ -2179,7 +2179,7 @@
<segmentedlist id="meson-depends">
<segtitle>&dependencies;</segtitle>
<seglistitem>
- <seg>Ninja and Python</seg>
+ <seg>Ninja, Python, Setuptools, and Wheel</seg>
</seglistitem>
</segmentedlist>
@@ -2741,6 +2741,44 @@
</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>
+ <seg>None</seg>
+ </seglistitem>
+ </segmentedlist>
+
<!-- Begin Shadow dependency info -->
<bridgehead renderas="sect2" id="shadow-dep">Shadow</bridgehead>
@@ -3216,7 +3254,7 @@
</segmentedlist>
<!-- Begin Wheel dependency info -->
- <bridgehead renderas="sect2" id="wheel-dep">wheel</bridgehead>
+ <bridgehead renderas="sect2" id="wheel-dep">Wheel</bridgehead>
<segmentedlist id="wheel-depends">
<segtitle>&dependencies;</segtitle>
@@ -3243,8 +3281,7 @@
<segtitle>&before;</segtitle>
<seglistitem>
<seg>
- <phrase revision='sysv'>None</phrase>
- <phrase revision='systemd'>Jinja2</phrase>
+ Jinja2, MarkupSafe, Meson, and Setuptools
</seg>
</seglistitem>
</segmentedlist>
diff --git a/bootscripts/ChangeLog b/bootscripts/ChangeLog
index aff30cb41..3853ff83a 100644
--- a/bootscripts/ChangeLog
+++ b/bootscripts/ChangeLog
@@ -1,3 +1,8 @@
+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.
@@ -24,7 +29,7 @@
* New semantics for K and S scripts:
- 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
or interfaces that are not UP.
diff --git a/bootscripts/lfs/init.d/checkfs b/bootscripts/lfs/init.d/checkfs
index bbbae8d99..b7f6e3ff2 100644
--- a/bootscripts/lfs/init.d/checkfs
+++ b/bootscripts/lfs/init.d/checkfs
@@ -63,7 +63,7 @@ case "${1}" in
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
fi
@@ -127,7 +127,7 @@ case "${1}" in
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
if [ "${error_value}" -ge 16 ]; then
diff --git a/bootscripts/lfs/init.d/udev b/bootscripts/lfs/init.d/udev
index f3b07b022..a843e0c39 100644
--- a/bootscripts/lfs/init.d/udev
+++ b/bootscripts/lfs/init.d/udev
@@ -41,7 +41,7 @@ case "${1}" in
log_info_msg "$msg"
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
# Start the udev daemon to continually watch for, and act on,
diff --git a/chapter01/changelog.xml b/chapter01/changelog.xml
index 5f2d4860f..8ad5949fb 100644
--- a/chapter01/changelog.xml
+++ b/chapter01/changelog.xml
@@ -39,6 +39,195 @@
<listitem revision="sysv"> or <listitem revision="systemd"> as
appropriate for the entry or if needed the entire day's 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>
diff --git a/chapter01/whatsnew.xml b/chapter01/whatsnew.xml
index e1fca225c..0586b3d02 100644
--- a/chapter01/whatsnew.xml
+++ b/chapter01/whatsnew.xml
@@ -38,12 +38,12 @@
<!--<listitem>
<para>Automake-&automake-version;</para>
</listitem>-->
- <!--<listitem>
+ <listitem>
<para>Bash-&bash-version;</para>
- </listitem>-->
- <!--<listitem>
+ </listitem>
+ <listitem>
<para>Bc-&bc-version;</para>
- </listitem>-->
+ </listitem>
<!--<listitem>
<para>Binutils-&binutils-version;</para>
</listitem>-->
@@ -89,18 +89,18 @@
<!--<listitem>
<para>Flit-core-&flit-core-version;</para>
</listitem>-->
- <!--<listitem>
+ <listitem>
<para>Gawk-&gawk-version;</para>
- </listitem>-->
+ </listitem>
<!--<listitem>
<para>GCC-&gcc-version;</para>
</listitem>-->
<!--<listitem>
<para>GDBM-&gdbm-version;</para>
</listitem>-->
- <!--<listitem>
+ <listitem>
<para>Gettext-&gettext-version;</para>
- </listitem>-->
+ </listitem>
<!--<listitem>
<para>Glibc-&glibc-version;</para>
</listitem>-->
@@ -122,27 +122,27 @@
<listitem>
<para>Gzip-&gzip-version;</para>
</listitem>
- <!--<listitem>
+ <listitem>
<para>Iana-Etc-&iana-etc-version;</para>
- </listitem>-->
+ </listitem>
<!--<listitem>
<para>Inetutils-&inetutils-version;</para>
</listitem>-->
<!--<listitem>
<para>Intltool-&intltool-version;</para>
</listitem>-->
- <!--<listitem>
+ <listitem>
<para>IPRoute2-&iproute2-version;</para>
- </listitem>-->
+ </listitem>
<!--<listitem revision="systemd">
<para>Jinja2-&jinja2-version;</para>
</listitem>-->
<listitem>
<para>Kbd-&kbd-version;</para>
</listitem>
- <!--<listitem>
+ <listitem>
<para>Kmod-&kmod-version;</para>
- </listitem>-->
+ </listitem>
<!--<listitem>
<para>Less-&less-version;</para>
</listitem>-->
@@ -152,9 +152,9 @@
<!--<listitem>
<para>Libcap-&libcap-version;</para>
</listitem>-->
- <!--<listitem>
+ <listitem>
<para>Libelf-&elfutils-version; (from elfutils)</para>
- </listitem>-->
+ </listitem>
<!--<listitem>
<para>Libffi-&libffi-version;</para>
</listitem>-->
@@ -173,18 +173,18 @@
<!--<listitem>
<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>
</listitem>-->
<!--<listitem revision="systemd">
<para>MarkupSafe-&markupsafe-version;</para>
</listitem>-->
- <!--<listitem>
+ <listitem>
<para>Meson-&meson-version;</para>
- </listitem>-->
+ </listitem>
<!--<listitem>
<para>MPC-&mpc-version;</para>
</listitem>-->
@@ -197,9 +197,9 @@
<!--<listitem>
<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>-->
@@ -224,6 +224,9 @@
<!--<listitem>
<para>Sed-&sed-version;</para>
</listitem>-->
+ <!--<listitem> After version 12.1 release - see Added
+ <para>Setuptools-&setuptools-version;</para>
+ </listitem>-->
<listitem>
<para>Shadow-&shadow-version;</para>
</listitem>
@@ -242,9 +245,9 @@
<!--<listitem>
<para>Tcl-&tcl-version;</para>
</listitem>-->
- <!--<listitem>
+ <listitem>
<para>Texinfo-&texinfo-version;</para>
- </listitem>-->
+ </listitem>
<!--<listitem>
<para>Tzdata-&tzdata-version;</para>
</listitem>-->
@@ -263,9 +266,9 @@
<!--<listitem>
<para>XML::Parser-&xml-parser-version;</para>
</listitem>-->
- <!--<listitem>
+ <listitem>
<para>Xz-&xz-version;</para>
- </listitem>-->
+ </listitem>
<listitem>
<para>Zlib-&zlib-version;</para>
</listitem>
@@ -288,6 +291,10 @@
<listitem><para></para></listitem> <!-- satisfy build -->
<listitem>
+ <para>setuptools-&setuptools-version;</para>
+ </listitem>
+
+ <listitem>
<para>&glibc-upstream-fixes-patch;</para>
</listitem>
diff --git a/chapter02/hostreqs.xml b/chapter02/hostreqs.xml
index 7b4a037eb..5a2bbf6ee 100644
--- a/chapter02/hostreqs.xml
+++ b/chapter02/hostreqs.xml
@@ -64,8 +64,9 @@
should be a link to bison or a small script that executes bison)</para>
</listitem>
+ <!-- In Coreutils-8.1 the nproc program is added. -->
<listitem>
- <para><emphasis role="strong">Coreutils-7.0</emphasis></para>
+ <para><emphasis role="strong">Coreutils-8.1</emphasis></para>
</listitem>
<listitem>
@@ -82,7 +83,9 @@
</listitem>
<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
libraries (with headers) must also be present so the C++ compiler can
@@ -185,8 +188,8 @@ ver_check()
fi
}
-# 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 Bc bc 1.07.0
ver_check Binutils ld 2.13.1
@@ -194,8 +197,8 @@ ver_check Bison bison 2.7
ver_check Diffutils diff 2.8.1
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
ver_check M4 m4 1.4.10
@@ -222,7 +225,13 @@ echo "Compiler check:"
if printf "int main(){}" | g++ -x c++ -
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
bash version-check.sh</userinput></screen>
diff --git a/chapter03/packages.xml b/chapter03/packages.xml
index dba151cac..deae31301 100644
--- a/chapter03/packages.xml
+++ b/chapter03/packages.xml
@@ -242,7 +242,6 @@
<para>Home page: <ulink url="&gcc-home;"/></para>
<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>
@@ -356,7 +355,6 @@
<para>Home page: <ulink url="&inetutils-home;"/></para>
<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>
@@ -671,6 +669,15 @@
</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>
+
+ <varlistentry>
<term>Shadow (&shadow-version;) - <token>&shadow-size;</token>:</term>
<listitem>
<para>Home page: <ulink url="&shadow-home;"/></para>
diff --git a/chapter04/aboutsbus.xml b/chapter04/aboutsbus.xml
index 92e7c69bc..fca3011fd 100644
--- a/chapter04/aboutsbus.xml
+++ b/chapter04/aboutsbus.xml
@@ -45,18 +45,6 @@
</note>
<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
step will simply fail. Analyzing the output of the build process will also
diff --git a/chapter04/settingenviron.xml b/chapter04/settingenviron.xml
index 9e1d104d9..7f55da75f 100644
--- a/chapter04/settingenviron.xml
+++ b/chapter04/settingenviron.xml
@@ -198,6 +198,55 @@ EOF</userinput></screen>
completed LFS system.</para>
</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 issue.
+ </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
the new user profile:</para>
diff --git a/chapter05/glibc.xml b/chapter05/glibc.xml
index 3772ef075..f927d187f 100644
--- a/chapter05/glibc.xml
+++ b/chapter05/glibc.xml
@@ -93,6 +93,7 @@ cd build</userinput></screen>
--build=$(../scripts/config.guess) \
--enable-kernel=&linux-major-version;.&linux-minor-version; \
--with-headers=$LFS/usr/include \
+ --disable-nscd \
libc_cv_slibdir=/usr/lib</userinput></screen>
<variablelist>
@@ -136,6 +137,14 @@ cd build</userinput></screen>
</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>
+
</variablelist>
<para>During this stage the following warning might appear:</para>
diff --git a/chapter05/libstdc++.xml b/chapter05/libstdc++.xml
index e0ea2e790..1dc4277ee 100644
--- a/chapter05/libstdc++.xml
+++ b/chapter05/libstdc++.xml
@@ -124,7 +124,7 @@ cd build</userinput></screen>
<para>Remove the libtool archive files because they are harmful for
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>
diff --git a/chapter06/coreutils.xml b/chapter06/coreutils.xml
index 185f4a0c4..f6b6c6310 100644
--- a/chapter06/coreutils.xml
+++ b/chapter06/coreutils.xml
@@ -63,13 +63,6 @@
</listitem>
</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>
<para>Compile the package:</para>
diff --git a/chapter07/chroot.xml b/chapter07/chroot.xml
index 6fe1da971..2ebdfd75e 100644
--- a/chapter07/chroot.xml
+++ b/chapter07/chroot.xml
@@ -46,11 +46,23 @@ bash: no job control in this shell</computeroutput></screen>
TERM="$TERM" \
PS1='(lfs) \u:\w\$ ' \
PATH=/usr/bin:/usr/sbin \
+ MAKEFLAGS="-j<replaceable>$(nproc)</replaceable>" \
+ TESTSUITEFLAGS="-j<replaceable>$(nproc)</replaceable>" \
/bin/bash --login</userinput></screen>
<para>The command replace the current shell process with a new shell
process, with controlling terminal set up.</para>
+ <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>
command will clear all the variables in the environment. After that, only
the <envar>HOME</envar>, <envar>TERM</envar>, <envar>PS1</envar>, and
@@ -66,7 +78,7 @@ bash: no job control in this shell</computeroutput></screen>
in the <envar>PATH</envar>. This means that the cross toolchain will no longer be
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>
diff --git a/chapter07/createfiles.xml b/chapter07/createfiles.xml
index 2b752b944..9047fa744 100644
--- a/chapter07/createfiles.xml
+++ b/chapter07/createfiles.xml
@@ -215,8 +215,23 @@ chmod -v 600 /var/log/btmp</userinput></screen>
failed login attempts. The <filename>/var/log/btmp</filename> file records
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>
diff --git a/chapter08/automake.xml b/chapter08/automake.xml
index 4fc1bd277..5d7541049 100644
--- a/chapter08/automake.xml
+++ b/chapter08/automake.xml
@@ -53,11 +53,14 @@
<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>
diff --git a/chapter08/chapter08.xml b/chapter08/chapter08.xml
index 8ab81d2f8..2fccb6139 100644
--- a/chapter08/chapter08.xml
+++ b/chapter08/chapter08.xml
@@ -65,6 +65,7 @@
<xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="python.xml"/>
<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"/>
<xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="coreutils.xml"/>
diff --git a/chapter08/gawk.xml b/chapter08/gawk.xml
index cc9348d90..d8984b58e 100644
--- a/chapter08/gawk.xml
+++ b/chapter08/gawk.xml
@@ -59,15 +59,18 @@ su tester -c "PATH=$PATH make check"</userinput></screen>
<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>
</varlistentry>
diff --git a/chapter08/glibc.xml b/chapter08/glibc.xml
index 179357c00..69936c879 100644
--- a/chapter08/glibc.xml
+++ b/chapter08/glibc.xml
@@ -74,6 +74,7 @@ cd build</userinput></screen>
--enable-kernel=&linux-major-version;.&linux-minor-version; \
--enable-stack-protector=strong \
--with-headers=/usr/include \
+ --disable-nscd \
libc_cv_slibdir=/usr/lib</userinput></screen>
<variablelist>
@@ -116,6 +117,14 @@ cd build</userinput></screen>
</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>
+
+ <varlistentry>
<term><parameter>libc_cv_slibdir=/usr/lib</parameter></term>
<listitem>
<para>This variable sets the correct library for all
@@ -207,7 +216,7 @@ esac</userinput></screen>
<command>ldd</command> script:</para>
<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,7 +228,7 @@ mkdir -pv /var/cache/nscd</userinput></screen>
<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
are missing, the test suites of some packages will skip important
@@ -499,7 +508,7 @@ mkdir -pv /etc/ld.so.conf.d</userinput></screen>
<seg>gencat, getconf, getent, iconv, iconvconfig, ldconfig,
ldd, lddlibc4,
ld.so (symlink to ld-linux-x86-64.so.2 or ld-linux.so.2),
- locale, localedef, makedb, mtrace, nscd,
+ locale, localedef, makedb, mtrace,
pcprofiledump, pldd, sln, sotruss, sprof, tzselect, xtrace,
zdump, and zic</seg>
<seg>ld-linux-x86-64.so.2, ld-linux.so.2,
@@ -519,7 +528,7 @@ mkdir -pv /etc/ld.so.conf.d</userinput></screen>
/usr/include/protocols, /usr/include/rpc,
/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>
@@ -653,17 +662,6 @@ mkdir -pv /etc/ld.so.conf.d</userinput></screen>
</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>
- </varlistentry>
-
<varlistentry id="pcprofiledump">
<term><command>pcprofiledump</command></term>
<listitem>
diff --git a/chapter08/man-db.xml b/chapter08/man-db.xml
index 88c811d33..229111131 100644
--- a/chapter08/man-db.xml
+++ b/chapter08/man-db.xml
@@ -113,11 +113,7 @@
<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>
diff --git a/chapter08/openssl.xml b/chapter08/openssl.xml
index 6a4441552..25295f056 100644
--- a/chapter08/openssl.xml
+++ b/chapter08/openssl.xml
@@ -63,7 +63,7 @@
<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
does not have <option>CONFIG_CRYPTO_USER_API_SKCIPHER</option> enabled,
diff --git a/chapter08/perl.xml b/chapter08/perl.xml
index d3159595c..2bb849645 100644
--- a/chapter08/perl.xml
+++ b/chapter08/perl.xml
@@ -111,7 +111,7 @@ export BUILD_BZIP2=0</userinput></screen>
<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>
diff --git a/chapter08/pkgmgt.xml b/chapter08/pkgmgt.xml
index 7104d9cba..185538796 100644
--- a/chapter08/pkgmgt.xml
+++ b/chapter08/pkgmgt.xml
@@ -69,6 +69,17 @@
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>
+
<listitem> <para>If a package containing a shared library is updated, and
if the name of the library changes, then any packages dynamically
linked to the library must be recompiled, to link against the
@@ -152,7 +163,7 @@
provided by <application>coreutils</application> has already
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
before updating a package.</para> <!-- binary is an adjective, not a noun. -->
@@ -185,19 +196,29 @@
<para>This is a simplistic package management technique that does not need a
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>
<sect3>
diff --git a/chapter08/python.xml b/chapter08/python.xml
index a4bfeaf91..f7bc19d47 100644
--- a/chapter08/python.xml
+++ b/chapter08/python.xml
@@ -48,7 +48,6 @@
<screen><userinput remap="configure">./configure --prefix=/usr \
--enable-shared \
--with-system-expat \
- --with-system-ffi \
--enable-optimizations</userinput></screen>
<variablelist>
@@ -63,14 +62,6 @@
</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>
<term><parameter>--enable-optimizations</parameter></term>
<listitem>
<para>This switch enables extensive, but time-consuming, optimization
diff --git a/chapter08/setuptools.xml b/chapter08/setuptools.xml
new file mode 100644
index 000000000..257a50328
--- /dev/null
+++ b/chapter08/setuptools.xml
@@ -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>
+
diff --git a/chapter08/shadow.xml b/chapter08/shadow.xml
index f88216a5b..315234c7f 100644
--- a/chapter08/shadow.xml
+++ b/chapter08/shadow.xml
@@ -276,7 +276,7 @@ useradd -D --gid 999</userinput></screen>
<seglistitem>
<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,
vigr (link to vipw), and vipw</seg>
@@ -459,17 +459,6 @@ useradd -D --gid 999</userinput></screen>
</listitem>
</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>
<listitem>
diff --git a/chapter08/udev.xml b/chapter08/udev.xml
index 35bb12f46..46ab88cff 100644
--- a/chapter08/udev.xml
+++ b/chapter08/udev.xml
@@ -66,6 +66,8 @@ meson setup \
-Dmode=release \
-Ddev-kvm-mode=0660 \
-Dlink-udev-shared=false \
+ -Dlogind=false \
+ -Dvconsole=false \
..</userinput></screen>
<variablelist>
@@ -107,35 +109,41 @@ meson setup \
and it's too overkill for a udev-only installation.</para>
</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
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</userinput></screen>
<para>Install some custom rules and support files useful in an LFS
environment:</para>
diff --git a/chapter11/afterlfs.xml b/chapter11/afterlfs.xml
index 76e50bb98..a08bc0d59 100644
--- a/chapter11/afterlfs.xml
+++ b/chapter11/afterlfs.xml
@@ -78,12 +78,22 @@
<para>
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 the LFS command line. It also requires
a second computer.
</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>
<sect3>
diff --git a/chapter11/theend.xml b/chapter11/theend.xml
index 6f5e7e401..e7bfc6ef8 100644
--- a/chapter11/theend.xml
+++ b/chapter11/theend.xml
@@ -58,6 +58,7 @@ VERSION="&version;"
ID=lfs
PRETTY_NAME="Linux From Scratch &version;"
VERSION_CODENAME="&lt;your name here&gt;"
+HOME_URL="&lfs-root;lfs/"
EOF</userinput></screen>
<para>Be sure to customize the fields 'DISTRIB_CODENAME' and
diff --git a/lfs-latest-git.php b/lfs-latest-git.php
index c0c7aaea3..162d8d6c8 100644
--- a/lfs-latest-git.php
+++ b/lfs-latest-git.php
@@ -85,8 +85,9 @@ function http_get_file( $url )
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 );
}
@@ -127,6 +128,7 @@ if ( $package == "expect" ) $dirpath = "https://sourceforge.net/projects/exp
if ( $package == "file" ) $dirpath = "https://github.com/file/file/tags";
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");
if ( $package == "intltool" ) $dirpath = "https://launchpad.net/intltool/trunk";
@@ -293,6 +295,9 @@ if ( $package == "zstd" ) $dirpath = github("facebook/zstd");
if ( $package == "flit_core" )
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\.]+)$/" );
diff --git a/packages.ent b/packages.ent
index 73a14b81f..69a5646b2 100644
--- a/packages.ent
+++ b/packages.ent
@@ -47,20 +47,20 @@
<!ENTITY automake-fin-du "114 MB">
<!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">
<!ENTITY bash-tmp-sbu "0.2 SBU">
<!ENTITY bash-fin-du "52 MB">
<!ENTITY bash-fin-sbu "1.1 SBU">
-<!ENTITY bc-version "6.6.0">
-<!ENTITY bc-size "455 KB">
+<!ENTITY bc-version "6.7.2">
+<!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 "27c217ea495f73758f548eb2c6e10244">
<!ENTITY bc-home "https://git.gavinhoward.com/gavin/bc">
<!ENTITY bc-fin-du "7.7 MB">
<!ENTITY bc-fin-sbu "less than 0.1 SBU">
@@ -148,10 +148,10 @@
<!ENTITY e2fsprogs-fin-du "95 MB">
<!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">
<!ENTITY elfutils-fin-sbu "0.3 SBU">
@@ -208,10 +208,10 @@
<!ENTITY flit-core-fin-du "1.7 MB">
<!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">
<!ENTITY gawk-tmp-sbu "0.1 SBU">
@@ -222,7 +222,6 @@
<!ENTITY gcc-size "85,800 KB">
<!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">
<!ENTITY gcc-tmpp1-sbu "3.5 SBU">
@@ -246,10 +245,10 @@
<!ENTITY gdbm-fin-du "13 MB">
<!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.3">
+<!ENTITY gettext-size "9,997 KB">
<!ENTITY gettext-url "&gnu;gettext/gettext-&gettext-version;.tar.xz">
-<!ENTITY gettext-md5 "db2f3daf34fd5b85ab1a56f9033e42d1">
+<!ENTITY gettext-md5 "460b38ae5e520253dcd06165dd3e281f">
<!ENTITY gettext-home "&gnu-software;gettext/">
<!ENTITY gettext-tmp-du "306 MB">
<!ENTITY gettext-tmp-sbu "1.1 SBU">
@@ -320,10 +319,10 @@
<!ENTITY gzip-fin-du "21 MB">
<!ENTITY gzip-fin-sbu "0.3 SBU">
-<!ENTITY iana-etc-version "20230810">
-<!ENTITY iana-etc-size "588 KB">
+<!ENTITY iana-etc-version "20231107">
+<!ENTITY iana-etc-size "589 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 "01331998d26d5beb592c12b06b2eeb24">
<!ENTITY iana-etc-home "https://www.iana.org/protocols">
<!ENTITY iana-etc-fin-du "4.8 MB">
<!ENTITY iana-etc-fin-sbu "less than 0.1 SBU">
@@ -332,7 +331,6 @@
<!ENTITY inetutils-size "1,522 KB">
<!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">
<!ENTITY inetutils-fin-sbu "0.2 SBU">
@@ -345,10 +343,10 @@
<!ENTITY intltool-fin-du "1.5 MB">
<!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">
<!ENTITY iproute2-fin-sbu "0.1 SBU">
@@ -363,18 +361,18 @@
<!ENTITY jinja2-fin-du "3.4 MB">
<!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-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">
@@ -436,21 +434,26 @@
<!ENTITY libxcrypt-fin-sbu "0.1 SBU">
<!ENTITY linux-major-version "6">
-<!ENTITY linux-minor-version "5">
+<!ENTITY linux-minor-version "6">
<!ENTITY linux-patch-version "1">
<!--<!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,730 KB">
<!ENTITY linux-url "&kernel;linux/kernel/v&linux-major-version;.x/linux-&linux-version;.tar.xz">
-<!ENTITY linux-md5 "228479f37b3face05b53bd7f8906abe0">
+<!ENTITY linux-md5 "90291279ca684fb8cfa59b2ae75b6fe0">
<!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)">
-<!ENTITY linux-tmp-du "1200 MB">
-<!ENTITY linux-tmp-sbu "1.5 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)">
+
+<!-- For temporary kernel use the minimal value -->
+<!ENTITY linux-tmp-du "1.8 GB">
+<!ENTITY linux-tmp-sbu "0.6 SBU">
<!ENTITY linux-headers-tmp-du "1.5 GB">
<!ENTITY linux-headers-tmp-sbu "less than 0.1 SBU">
@@ -475,10 +478,10 @@
<!ENTITY make-fin-du "13 MB">
<!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">
<!ENTITY man-db-fin-sbu "0.2 SBU">
@@ -499,10 +502,10 @@
<!ENTITY markupsafe-fin-du "548 KB">
<!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.2.3">
+<!ENTITY meson-size "2,134 KB">
<!ENTITY meson-url "&github;/mesonbuild/meson/releases/download/&meson-version;/meson-&meson-version;.tar.gz">
-<!ENTITY meson-md5 "e3cc846536189aacd7d01858a45ca9af">
+<!ENTITY meson-md5 "69da4c63ef06c9d3bcc00ce89abb306f">
<!ENTITY meson-home "https://mesonbuild.com">
<!ENTITY meson-fin-du "42 MB">
<!ENTITY meson-fin-sbu "less than 0.1 SBU">
@@ -541,10 +544,10 @@
<!ENTITY ninja-fin-du "75 MB">
<!ENTITY ninja-fin-sbu "0.3 SBU">
-<!ENTITY openssl-version "3.1.2">
-<!ENTITY openssl-size "15,196 KB">
+<!ENTITY openssl-version "3.1.4">
+<!ENTITY openssl-size "15,205 KB">
<!ENTITY openssl-url "https://www.openssl.org/source/openssl-&openssl-version;.tar.gz">
-<!ENTITY openssl-md5 "1d7861f969505e67b8677e205afd9ff4">
+<!ENTITY openssl-md5 "653ad58812c751b887e8ec37e02bba70">
<!ENTITY openssl-home "https://www.openssl.org/">
<!ENTITY openssl-fin-du "587 MB">
<!ENTITY openssl-fin-sbu "3.0 SBU">
@@ -600,19 +603,19 @@
<!-- If python minor version changes, updates in python and
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">
<!ENTITY python-tmp-sbu "0.4 SBU">
<!ENTITY python-fin-du "370 MB">
<!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">
<!ENTITY readline-soversion "8.2"><!-- used for stripping -->
@@ -633,11 +636,19 @@
<!ENTITY sed-fin-du "30 MB">
<!ENTITY sed-fin-sbu "0.3 SBU">
-<!ENTITY shadow-version "4.14.0">
-<!ENTITY shadow-size "1,746 KB">
+<!ENTITY setuptools-version "68.2.2">
+<!ENTITY setuptools-size "2,152 KB">
+<!ENTITY setuptools-url "&pypi-src;/s/setuptools/setuptools-&setuptools-version;.tar.gz">
+<!ENTITY setuptools-md5 "d967ca2ba7f46db887daee2d5c9bd6a2">
+<!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">
@@ -696,10 +707,10 @@
<!ENTITY tcl-tmp-du "89 MB">
<!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">
<!ENTITY texinfo-tmp-sbu "0.1 SBU">
@@ -735,21 +746,21 @@
<!ENTITY mount-setsid-du "85 MB">
<!ENTITY mount-setsid-sbu "less than 0.1 SBU">
-<!ENTITY vim-version "9.0.1837">
+<!ENTITY vim-version "9.0.2103">
<!-- <!ENTITY vim-majmin "90"> -->
<!ENTITY vim-docdir "vim/vim90">
-<!ENTITY vim-size "16,838 KB">
+<!ENTITY vim-size "11,193 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-url "&anduin-sources;/vim-&vim-version;.tar.xz">
+<!ENTITY vim-md5 "1af1d018026234d085a82348703461ce">
<!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.41.3">
+<!ENTITY wheel-size "97 KB">
<!ENTITY wheel-url "&pypi-src;/w/wheel/wheel-&wheel-version;.tar.gz">
-<!ENTITY wheel-md5 "06271a9e90c948b7e93dd7ce0fd90272">
+<!ENTITY wheel-md5 "c66db2f3a50d5659994fa974138d4002">
<!ENTITY wheel-home "&pypi-home;/wheel/">
<!ENTITY wheel-fin-du "1.5 MB">
<!ENTITY wheel-fin-sbu "less than 0.1 SBU">
@@ -762,10 +773,10 @@
<!ENTITY xml-parser-fin-du "2.3 MB">
<!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">
<!ENTITY xz-tmp-sbu "0.1 SBU">
diff --git a/patches.ent b/patches.ent
index 6634d1f2f..4107b2dc2 100644
--- a/patches.ent
+++ b/patches.ent
@@ -14,9 +14,9 @@
<!ENTITY glibc-fhs-patch-md5 "9a5997c3452909b1769918c759eff8a2">
<!ENTITY glibc-fhs-patch-size "2.8 KB">
-<!ENTITY glibc-upstream-fixes-patch "glibc-&glibc-version;-upstream_fixes-1.patch">
-<!ENTITY glibc-upstream-fixes-patch-md5 "2e347e291804b62a18a43a8cdc79e01e">
-<!ENTITY glibc-upstream-fixes-patch-size "24 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">
<!ENTITY grub-upstream-fixes-patch-md5 "da388905710bb4cbfbc7bd7346ff9174">
diff --git a/stylesheets/lfs-xsl/pdf/lfs-pagesetup.xsl b/stylesheets/lfs-xsl/pdf/lfs-pagesetup.xsl
index 49337d0ef..787a0e8c1 100644
--- a/stylesheets/lfs-xsl/pdf/lfs-pagesetup.xsl
+++ b/stylesheets/lfs-xsl/pdf/lfs-pagesetup.xsl
@@ -241,4 +241,22 @@
</fo:block>
</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>