aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--appendices/dependencies.xml125
-rw-r--r--appendices/udev-rules.xml4
-rw-r--r--bootscripts/ChangeLog14
-rw-r--r--bootscripts/lfs/init.d/mountvirtfs30
-rw-r--r--bootscripts/lfs/init.d/udev13
-rw-r--r--bootscripts/lfs/init.d/udev_retry6
-rw-r--r--chapter01/askforhelp.xml22
-rw-r--r--chapter01/changelog.xml181
-rw-r--r--chapter01/whatsnew.xml75
-rw-r--r--chapter03/packages.xml17
-rw-r--r--chapter03/patches.xml8
-rw-r--r--chapter04/settingenviron.xml2
-rw-r--r--chapter05/glibc.xml1
-rw-r--r--chapter06/binutils-pass2.xml2
-rw-r--r--chapter06/diffutils.xml4
-rw-r--r--chapter06/grep.xml5
-rw-r--r--chapter06/sed.xml5
-rw-r--r--chapter08/binutils.xml21
-rw-r--r--chapter08/chapter08.xml2
-rw-r--r--chapter08/coreutils.xml5
-rw-r--r--chapter08/dbus.xml13
-rw-r--r--chapter08/eudev.xml202
-rw-r--r--chapter08/gawk.xml12
-rw-r--r--chapter08/gcc.xml11
-rw-r--r--chapter08/glibc.xml14
-rw-r--r--chapter08/gmp.xml12
-rw-r--r--chapter08/jinja2.xml2
-rw-r--r--chapter08/less.xml4
-rw-r--r--chapter08/libxcrypt.xml4
-rw-r--r--chapter08/man-db.xml8
-rw-r--r--chapter08/man-pages.xml6
-rw-r--r--chapter08/markupsafe.xml2
-rw-r--r--chapter08/meson.xml9
-rw-r--r--chapter08/ncurses.xml3
-rw-r--r--chapter08/ninja.xml9
-rw-r--r--chapter08/pkgconf.xml11
-rw-r--r--chapter08/procps.xml10
-rw-r--r--chapter08/stripping.xml2
-rw-r--r--chapter08/systemd.xml23
-rw-r--r--chapter08/udev.xml270
-rw-r--r--chapter09/network.xml2
-rw-r--r--chapter09/udev.xml2
-rw-r--r--chapter09/usage.xml2
-rw-r--r--chapter10/fstab.xml23
-rw-r--r--chapter10/grub.xml23
-rw-r--r--chapter10/kernel.xml88
-rw-r--r--chapter10/kernel/.gitignore2
-rw-r--r--chapter10/kernel/Makefile23
-rw-r--r--chapter10/kernel/highmem.toml1
-rw-r--r--chapter10/kernel/highmem.xml8
-rwxr-xr-xchapter10/kernel/kernel-config.py298
-rw-r--r--chapter10/kernel/kernel.version1
-rwxr-xr-xchapter10/kernel/kernel_version.py27
-rw-r--r--chapter10/kernel/nvme.toml1
-rw-r--r--chapter10/kernel/nvme.xml8
-rw-r--r--chapter10/kernel/systemd.toml30
-rw-r--r--chapter10/kernel/systemd.xml53
-rw-r--r--chapter10/kernel/sysv.toml18
-rw-r--r--chapter10/kernel/sysv.xml35
-rw-r--r--chapter10/kernel/x2apic.toml5
-rw-r--r--chapter10/kernel/x2apic.xml13
-rw-r--r--chapter11/afterlfs.xml2
-rw-r--r--lfs-latest-git.php1
-rw-r--r--obfuscate.sh2
-rw-r--r--packages.ent290
-rw-r--r--patches.ent4
-rw-r--r--prologue/why.xml22
-rw-r--r--stylesheets/lfs-xsl/lfs.css3
-rw-r--r--udev-lfs/55-lfs.rules6
-rw-r--r--udev-lfs/55-lfs.txt11
-rw-r--r--udev-lfs/81-cdrom.rules3
-rw-r--r--udev-lfs/83-cdrom-symlinks.rules13
-rw-r--r--udev-lfs/ChangeLog7
-rw-r--r--udev-lfs/Makefile.lfs10
-rw-r--r--udev-lfs/README2
75 files changed, 1510 insertions, 698 deletions
diff --git a/appendices/dependencies.xml b/appendices/dependencies.xml
index 1d693e064..8038ee943 100644
--- a/appendices/dependencies.xml
+++ b/appendices/dependencies.xml
@@ -3,6 +3,9 @@
"http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
<!ENTITY % general-entities SYSTEM "../general.ent">
%general-entities;
+ <!-- Convenient entity for "Systemd" or "Udev" -->
+ <!ENTITY systemd-udev "<phrase revision='systemd'>Systemd</phrase>
+ <phrase revision='sysv'>Udev</phrase>">
]>
<appendix id="appendixc" xreflabel="Appendix C">
@@ -466,9 +469,7 @@
<segmentedlist id="coreutils-before">
<segtitle>&before;</segtitle>
<seglistitem>
- <seg>Bash, Diffutils, <phrase revision="sysv">Eudev, </phrase>
- Findutils, <phrase revision="sysv">and </phrase>Man-DB<phrase
- revision="systemd">, and Systemd</phrase></seg>
+ <seg>Bash, Diffutils, Findutils, Man-DB, and &systemd-udev;</seg>
</seglistitem>
</segmentedlist>
@@ -642,45 +643,6 @@
</seglistitem>
</segmentedlist>
-<!-- Begin Eudev dependency info -->
- <bridgehead renderas="sect2" id="eudev-dep" revision="sysv">Eudev</bridgehead>
-
- <segmentedlist id="eudev-depends" revision="sysv">
- <segtitle>&dependencies;</segtitle>
- <seglistitem>
- <seg>Bash, Binutils, Coreutils, Gawk, GCC, Glibc, Grep, Gperf, Make,
- Sed, and Util-linux</seg>
- </seglistitem>
- </segmentedlist>
-
- <segmentedlist id="eudev-rundeps" revision="sysv">
- <segtitle>&runtime;</segtitle>
- <seglistitem>
- <seg>Glibc, Kmod, Xz, Util-linux, and Zlib.</seg>
- </seglistitem>
- </segmentedlist>
-
- <segmentedlist id="eudev-testdeps" revision="sysv">
- <segtitle>&testsuites;</segtitle>
- <seglistitem>
- <seg>None</seg>
- </seglistitem>
- </segmentedlist>
-
- <segmentedlist id="eudev-before" revision="sysv">
- <segtitle>&before;</segtitle>
- <seglistitem>
- <seg>None</seg>
- </seglistitem>
- </segmentedlist>
-
- <segmentedlist id="eudev-optdeps" revision="sysv">
- <segtitle>&external;</segtitle>
- <seglistitem>
- <seg>None</seg>
- </seglistitem>
- </segmentedlist>
-
<!-- Begin Expat dependency info -->
<bridgehead renderas="sect2" id="expat-dep">Expat</bridgehead>
@@ -1555,7 +1517,7 @@
<segmentedlist id="jinja2-before" revision='systemd'>
<segtitle>&before;</segtitle>
<seglistitem>
- <seg>Systemd</seg>
+ <seg>&systemd-udev;</seg>
</seglistitem>
</segmentedlist>
@@ -1633,8 +1595,7 @@
<segmentedlist id="kmod-before">
<segtitle>&before;</segtitle>
<seglistitem>
- <seg><phrase revision="sysv">Eudev</phrase>
- <phrase revision="systemd">Systemd</phrase></seg>
+ <seg>&systemd-udev;</seg>
</seglistitem>
</segmentedlist>
@@ -1913,9 +1874,7 @@
<segmentedlist id="libxcrypt-before">
<segtitle>&before;</segtitle>
<seglistitem>
- <seg>GCC, Perl, Python,
- <phrase revision='sysv'>and </phrase>Shadow<phrase
- revision='systemd'>, and Systemd</phrase></seg>
+ <seg>GCC, Perl, Python, Shadow, and &systemd-udev;</seg>
</seglistitem>
</segmentedlist>
@@ -2236,10 +2195,7 @@
<segmentedlist id="meson-before">
<segtitle>&before;</segtitle>
<seglistitem>
- <seg>
- <phrase revision='sysv'>None</phrase>
- <phrase revision='systemd'>Systemd</phrase>
- </seg>
+ <seg>&systemd-udev;</seg>
</seglistitem>
</segmentedlist>
@@ -2438,7 +2394,7 @@
<segmentedlist id="openssl-before">
<segtitle>&before;</segtitle>
<seglistitem>
- <seg>Coreutils, Kmod, and Linux</seg>
+ <seg>Coreutils, Kmod, Linux, and &systemd-udev;</seg>
</seglistitem>
</segmentedlist>
@@ -2560,7 +2516,7 @@
<seglistitem>
<seg><phrase revision='systemd'>D-Bus, </phrase>E2fsprogs,
IProute2, Kmod, Man-DB, Procps-ng, Python,
- <phrase revision='systemd'>Systemd, </phrase>and Util-linux</seg>
+ &systemd-udev;, and Util-linux</seg>
</seglistitem>
</segmentedlist>
@@ -2866,16 +2822,17 @@
<segmentedlist id="systemd-depends" revision='systemd'>
<segtitle>&dependencies;</segtitle>
<seglistitem>
- <seg>Acl, Attr, Bash, Binutils, Coreutils, Diffutils, Expat, Gawk,
+ <seg>Acl, Bash, Binutils, Coreutils, Diffutils, Gawk,
GCC, Glibc, Gperf, Grep, Jinja2, Libcap, Libxcrypt, Meson,
- Pkgconf, Sed, Util-linux, and Zstd</seg>
+ OpenSSL, Pkgconf, Sed, Util-linux, and Zstd</seg>
</seglistitem>
</segmentedlist>
<segmentedlist id="systemd-rundeps" revision='systemd'>
<segtitle>&runtime;</segtitle>
<seglistitem>
- <seg>Acl, Attr, Glibc, Libcap, Libxcrypt, and Util-linux</seg>
+ <seg>Acl, Glibc, Libcap, Libxcrypt, OpenSSL, Util-linux, Xz,
+ Zlib, and Zstd</seg>
</seglistitem>
</segmentedlist>
@@ -3104,23 +3061,62 @@
</seglistitem>
</segmentedlist>
+<!-- Begin Udev dependency info -->
+ <bridgehead renderas="sect2" id="udev-dep" revision="sysv">Udev</bridgehead>
+
+ <segmentedlist id="udev-depends" revision="sysv">
+ <segtitle>&dependencies;</segtitle>
+ <seglistitem>
+ <seg>Acl, Bash, Binutils, Coreutils, Diffutils, Gawk,
+ GCC, Glibc, Gperf, Grep, Jinja2, Libcap, Libxcrypt, Meson,
+ OpenSSL, Pkgconf, Sed, Util-linux, and Zstd</seg>
+ </seglistitem>
+ </segmentedlist>
+
+ <segmentedlist id="udev-rundeps" revision="sysv">
+ <segtitle>&runtime;</segtitle>
+ <seglistitem>
+ <seg>Acl, Glibc, Libcap, OpenSSL, and Util-linux</seg>
+ </seglistitem>
+ </segmentedlist>
+
+ <segmentedlist id="udev-testdeps" revision="sysv">
+ <segtitle>&testsuites;</segtitle>
+ <seglistitem>
+ <seg>None</seg>
+ </seglistitem>
+ </segmentedlist>
+
+ <segmentedlist id="udev-before" revision="sysv">
+ <segtitle>&before;</segtitle>
+ <seglistitem>
+ <seg>Util-linux</seg>
+ </seglistitem>
+ </segmentedlist>
+
+ <segmentedlist id="udev-optdeps" revision="sysv">
+ <segtitle>&external;</segtitle>
+ <seglistitem>
+ <seg>None</seg>
+ </seglistitem>
+ </segmentedlist>
+
<!-- Begin Util-linux dependency info -->
<bridgehead renderas="sect2" id="util-linux-dep">Util-linux</bridgehead>
<segmentedlist id="util-linux-depends">
<segtitle>&dependencies;</segtitle>
<seglistitem>
- <seg>Bash, Binutils, Coreutils, Diffutils,
- <phrase revision="sysv">Eudev, </phrase>File, Findutils, Gawk,
+ <seg>Bash, Binutils, Coreutils, Diffutils, File, Findutils, Gawk,
GCC, Gettext, Glibc, Grep, Make, Ncurses, Pkgconf, Sed,
- <phrase revision="systemd">Systemd, </phrase>and Zlib</seg>
+ &systemd-udev;, and Zlib</seg>
</seglistitem>
</segmentedlist>
<segmentedlist id="util-linux-rundeps">
<segtitle>&runtime;</segtitle>
<seglistitem>
- <seg>Glibc, Ncurses, Readline, and Zlib</seg>
+ <seg>Glibc, Ncurses, Readline, &systemd-udev;, and Zlib</seg>
</seglistitem>
</segmentedlist>
@@ -3308,9 +3304,7 @@
<segmentedlist id="xz-before">
<segtitle>&before;</segtitle>
<seglistitem>
- <seg><phrase revision="sysv">Eudev, </phrase>File, GRUB, Kmod,
- Libelf, <phrase revision="sysv">and </phrase>Man-DB<phrase
- revision="systemd">, and Systemd</phrase></seg>
+ <seg>File, GRUB, Kmod, Libelf, Man-DB, and &systemd-udev;</seg>
</seglistitem>
</segmentedlist>
@@ -3386,8 +3380,7 @@
<segmentedlist id="zstd-before">
<segtitle>&before;</segtitle>
<seglistitem>
- <seg><phrase revision='sysv'>GCC and Libelf</phrase>
- <phrase revision='systemd'>GCC, Libelf, and Systemd</phrase></seg>
+ <seg>GCC, Libelf, and &systemd-udev;</seg>
</seglistitem>
</segmentedlist>
diff --git a/appendices/udev-rules.xml b/appendices/udev-rules.xml
index d1ab70dcf..189f55f41 100644
--- a/appendices/udev-rules.xml
+++ b/appendices/udev-rules.xml
@@ -8,12 +8,12 @@
<appendix id="rules" xreflabel="Appendix E" revision="sysv">
<?dbhtml dir="scripts"?>
- <?dbhtml filename="eudev-rules.html"?>
+ <?dbhtml filename="udev-rules.html"?>
<title>Udev configuration rules</title>
<para>The rules in this appendix are listed for convenience. Installation is
- normally done via instructions in <xref linkend='ch-system-eudev'/>. </para>
+ normally done via instructions in <xref linkend='ch-system-udev'/>. </para>
<sect1 id="lfsrules" role="wrap">
<title>55-lfs.rules</title>
diff --git a/bootscripts/ChangeLog b/bootscripts/ChangeLog
index c7a3d9a7b..aff30cb41 100644
--- a/bootscripts/ChangeLog
+++ b/bootscripts/ChangeLog
@@ -1,3 +1,17 @@
+2023-07-28 Xi Ruoyao <xry111@xry111.site>
+ * In mountvirtfs, mount /sys/fs/cgroup for udev from systemd-254.
+
+2023-07-22 Xi Ruoyao <xry111@xry111.site>
+ * In mountvirtfs, create symlinks /dev/{fd,std{in,out,err}} and
+ /dev/core (optional).
+
+2023-07-16 Xi Ruoyao <xry111@xry111.site>
+ * In udev, set SYSTEMD_LOG_TARGET=kmsg so systemd-udevd will correctly
+ log messages.
+
+2023-07-15 Xi Ruoyao <xry111@xry111.site>
+ * Use /bin/udevadm instead of /sbin/udevadm.
+
2022-09-30 Bruce Dubbs <bdubbs@linuxfromscratch.org>
* Mount /dev/shm as a tmpfs.
diff --git a/bootscripts/lfs/init.d/mountvirtfs b/bootscripts/lfs/init.d/mountvirtfs
index 21d98a05d..fd797787a 100644
--- a/bootscripts/lfs/init.d/mountvirtfs
+++ b/bootscripts/lfs/init.d/mountvirtfs
@@ -7,8 +7,9 @@
# Authors : Gerard Beekmans - gerard@linuxfromscratch.org
# DJ Lucas - dj@linuxfromscratch.org
# Update : Bruce Dubbs - bdubbs@linuxfromscratch.org
+# Xi Ruoyao - xry111@xry111.site
#
-# Version : LFS 7.0
+# Version : LFS 12.0
#
########################################################################
@@ -62,6 +63,33 @@ case "${1}" in
log_info_msg2 " ${INFO}/dev/shm"
mount -o nosuid,nodev /dev/shm || failed=1
+ mkdir -p /sys/fs/cgroup
+ log_info_msg2 " ${INFO}/sys/fs/cgroup"
+ mount -o nosuid,noexec,nodev /sys/fs/cgroup || failed=1
+
+ (exit ${failed})
+ evaluate_retval
+ if [ "${failed}" = 1 ]; then
+ exit 1
+ fi
+
+ log_info_msg "Create symlinks in /dev targeting /proc: ${INFO}/dev/stdin"
+ ln -sf /proc/self/fd/0 /dev/stdin || failed=1
+
+ log_info_msg2 " ${INFO}/dev/stdout"
+ ln -sf /proc/self/fd/1 /dev/stdout || failed=1
+
+ log_info_msg2 " ${INFO}/dev/stderr"
+ ln -sf /proc/self/fd/2 /dev/stderr || failed=1
+
+ log_info_msg2 " ${INFO}/dev/fd"
+ ln -sf /proc/self/fd /dev/fd || failed=1
+
+ if [ -e /proc/kcore ]; then
+ log_info_msg2 " ${INFO}/dev/core"
+ ln -sf /proc/kcore /dev/core || failed=1
+ fi
+
(exit ${failed})
evaluate_retval
exit $failed
diff --git a/bootscripts/lfs/init.d/udev b/bootscripts/lfs/init.d/udev
index c74c8e19f..f3b07b022 100644
--- a/bootscripts/lfs/init.d/udev
+++ b/bootscripts/lfs/init.d/udev
@@ -7,8 +7,9 @@
# Authors : Zack Winkles, Alexander E. Patrakov
# DJ Lucas - dj@linuxfromscratch.org
# Update : Bruce Dubbs - bdubbs@linuxfromscratch.org
+# Xi Ruoyao - xry111@xry111.site
#
-# Version : LFS 7.0
+# Version : LFS 12.0
#
########################################################################
@@ -45,17 +46,17 @@ case "${1}" in
# Start the udev daemon to continually watch for, and act on,
# uevents
- /sbin/udevd --daemon
+ SYSTEMD_LOG_TARGET=kmsg /sbin/udevd --daemon
# Now traverse /sys in order to "coldplug" devices that have
# already been discovered
- /sbin/udevadm trigger --action=add --type=subsystems
- /sbin/udevadm trigger --action=add --type=devices
- /sbin/udevadm trigger --action=change --type=devices
+ /bin/udevadm trigger --action=add --type=subsystems
+ /bin/udevadm trigger --action=add --type=devices
+ /bin/udevadm trigger --action=change --type=devices
# Now wait for udevd to process the uevents we triggered
if ! is_true "$OMIT_UDEV_SETTLE"; then
- /sbin/udevadm settle
+ /bin/udevadm settle
fi
# If any LVM based partitions are on the system, ensure they
diff --git a/bootscripts/lfs/init.d/udev_retry b/bootscripts/lfs/init.d/udev_retry
index 112846a03..ccac9a2bd 100644
--- a/bootscripts/lfs/init.d/udev_retry
+++ b/bootscripts/lfs/init.d/udev_retry
@@ -34,8 +34,6 @@ case "${1}" in
start)
log_info_msg "Retrying failed uevents, if any..."
- # As of udev-186, the --run option is no longer valid
- #rundir=$(/sbin/udevadm info --run)
rundir=/run/udev
# From Debian: "copy the rules generated before / was mounted
# read-write":
@@ -52,13 +50,13 @@ case "${1}" in
/bin/sed -e 's/#.*$//' /etc/sysconfig/udev_retry | /bin/grep -v '^$' | \
while read line ; do
for subsystem in $line ; do
- /sbin/udevadm trigger --subsystem-match=$subsystem --action=add
+ /bin/udevadm trigger --subsystem-match=$subsystem --action=add
done
done
# Now wait for udevd to process the uevents we triggered
if ! is_true "$OMIT_UDEV_RETRY_SETTLE"; then
- /sbin/udevadm settle
+ /bin/udevadm settle
fi
evaluate_retval
diff --git a/chapter01/askforhelp.xml b/chapter01/askforhelp.xml
index 367e880c0..5eb1d939f 100644
--- a/chapter01/askforhelp.xml
+++ b/chapter01/askforhelp.xml
@@ -10,6 +10,28 @@
<title>Help</title>
+ <note>
+ <para>
+ In case you've hit an issue building one package with the LFS
+ instruction, we strongly discourage posting the issue directly onto
+ the upstream support channel before discussing via a LFS support
+ channel listed in <xref linkend="ch-intro-resources"/>.
+ Doing so is often quite inefficient because the upstream
+ maintainers are rarely familiar with LFS building procedure. Even if
+ you've really hit an upstream issue, the LFS community can still help
+ to isolate the information wanted by the upstream maintainers and make
+ a proper report.
+ </para>
+
+ <para>
+ If you must ask a question directly via an upstream support channel,
+ you shall at least note that many upstream projects have the support
+ channels separated from the bug tracker. The <quote>bug</quote>
+ reports for asking questions are considered invalid and may annoy
+ upstream developers for these projects.
+ </para>
+ </note>
+
<para>If an issue or a question is encountered while working through
this book, please check the FAQ page at <ulink url="&faq-root;#generalfaq"/>.
Questions are often already answered there. If your question is not
diff --git a/chapter01/changelog.xml b/chapter01/changelog.xml
index e13faf328..f7a808cea 100644
--- a/chapter01/changelog.xml
+++ b/chapter01/changelog.xml
@@ -39,10 +39,187 @@
<listitem revision="sysv"> or <listitem revision="systemd"> as
appropriate for the entry or if needed the entire day's listitem.
-->
+ <listitem>
+ <para>2023-08-18</para>
+ <itemizedlist>
+ <listitem>
+ <para>[bdubbs] - Update to linux-6.4.12. Fixes
+ <ulink url='&lfs-ticket-root;5320'>#5320</ulink>.</para>
+ </listitem>
+ </itemizedlist>
+ </listitem>
+
+ <listitem>
+ <para>2023-08-18</para>
+ <itemizedlist>
+ <listitem>
+ <para>[bdubbs] - Update to udev-lfs-20230818.</para>
+ </listitem>
+ </itemizedlist>
+ </listitem>
+
+ <listitem>
+ <para>2023-08-15</para>
+ <itemizedlist>
+ <listitem>
+ <para>[bdubbs] - Add a patch to fix a performance regression in
+ glibc's posix_memalign() function. Fixes
+ <ulink url='&lfs-ticket-root;5315'>#5315</ulink>.</para>
+ </listitem>
+ <listitem>
+ <para>[bdubbs] - Update to less-643. Fixes
+ <ulink url='&lfs-ticket-root;5317'>#5317</ulink>.</para>
+ </listitem>
+ <listitem>
+ <para>[bdubbs] - Update to meson-1.2.1. Fixes
+ <ulink url='&lfs-ticket-root;5314'>#5314</ulink>.</para>
+ </listitem>
+ <listitem>
+ <para>[bdubbs] - Update to linux-6.4.10. Fixes
+ <ulink url='&lfs-ticket-root;5313'>#5313</ulink>.</para>
+ </listitem>
+ <listitem>
+ <para>[bdubbs] - Update to iana-etc-20230810. Addresses
+ <ulink url='&lfs-ticket-root;5006'>#5006</ulink>.</para>
+ </listitem>
+ <listitem>
+ <para>[rahul] - Update to pkgconf-2.0.1. Fixes
+ <ulink url='&lfs-ticket-root;5316'>#5316</ulink>.</para>
+ </listitem>
+ </itemizedlist>
+ </listitem>
+
+ <listitem>
+ <para>2023-08-07</para>
+ <itemizedlist>
+ <listitem>
+ <para>[bdubbs] - Update to xz-5.4.4. Fixes
+ <ulink url='&lfs-ticket-root;5307'>#5307</ulink>.</para>
+ </listitem>
+ <listitem>
+ <para>[bdubbs] - Update to wheel-0.41.1 (Python Module). Fixes
+ <ulink url='&lfs-ticket-root;5311'>#5311</ulink>.</para>
+ </listitem>
+ <listitem>
+ <para>[bdubbs] - Update to man-pages-6.05.01. Fixes
+ <ulink url='&lfs-ticket-root;5306'>#5306</ulink>.</para>
+ </listitem>
+ <listitem>
+ <para>[bdubbs] - Update to linux-6.4.8. Fixes
+ <ulink url='&lfs-ticket-root;5309'>#5309</ulink>.</para>
+ </listitem>
+ <listitem>
+ <para>[bdubbs] - Update to iana-etc-20230804. Addresses
+ <ulink url='&lfs-ticket-root;5006'>#5006</ulink>.</para>
+ </listitem>
+ <listitem>
+ <para>[rahul] - Update to pkgconf-2.0.0. Fixes
+ <ulink url='&lfs-ticket-root;5310'>#5310</ulink>.</para>
+ </listitem>
+ </itemizedlist>
+ </listitem>
+
+ <listitem>
+ <para>2023-08-01</para>
+ <itemizedlist>
+ <listitem>
+ <para>[bdubbs] - Update to vim-9.0.1677. Addresses
+ <ulink url='&lfs-ticket-root;4500'>#4500</ulink>.</para>
+ </listitem>
+ <listitem>
+ <para>[bdubbs] - Update to openssl-3.1.2. Fixes
+ <ulink url='&lfs-ticket-root;5305'>#5305</ulink>.</para>
+ </listitem>
+ <listitem>
+ <para>[bdubbs] - Update to man-pages-6.05. Fixes
+ <ulink url='&lfs-ticket-root;5303'>#5303</ulink>.</para>
+ </listitem>
+ <listitem>
+ <para>[bdubbs] - Update to binutils-2.41. Fixes
+ <ulink url='&lfs-ticket-root;5300'>#5300</ulink>.</para>
+ </listitem>
+ <listitem>
+ <para>[bdubbs] - Update to gmp-6.3.0. Fixes
+ <ulink url='&lfs-ticket-root;5301'>#5301</ulink>.</para>
+ </listitem>
+ <listitem>
+ <para>[bdubbs] - Update to glibc-2.38. Fixes
+ <ulink url='&lfs-ticket-root;5302'>#5302</ulink>.</para>
+ </listitem>
+ </itemizedlist>
+ </listitem>
+
+ <listitem>
+ <para>2023-07-28</para>
+ <itemizedlist>
+ <listitem>
+ <para>[bdubbs] - Update udev-lfs tarball to remove obsolete
+ cdrom rules and references to ISDN devices. Fixes
+ <ulink url='&lfs-ticket-root;5291'>#5291</ulink>.</para>
+ </listitem>
+ <listitem>
+ <para>[bdubbs] - Update to wheel-0.41.0 (Python Module). Fixes
+ <ulink url='&lfs-ticket-root;5290'>#5290</ulink>.</para>
+ </listitem>
+ <listitem>
+ <para>[bdubbs] - Update to tar-1.35. Fixes
+ <ulink url='&lfs-ticket-root;5287'>#5287</ulink>.</para>
+ </listitem>
+ <listitem>
+ <para>[bdubbs] - Update to<phrase revision='sysv'> udev
+ from</phrase> systemd-254. Fixes
+ <ulink url='&lfs-ticket-root;5293'>#5293</ulink>.</para>
+ </listitem>
+ <listitem>
+ <para>[bdubbs] - Update to meson-1.2.0. Fixes
+ <ulink url='&lfs-ticket-root;5286'>#5286</ulink>.</para>
+ </listitem>
+ <listitem>
+ <para>[bdubbs] - Update to linux-6.4.7. Fixes
+ <ulink url='&lfs-ticket-root;5288'>#5288</ulink>.</para>
+ </listitem>
+ <listitem>
+ <para>[bdubbs] - Update to gcc-13.2.0. Fixes
+ <ulink url='&lfs-ticket-root;5292'>#5292</ulink>.</para>
+ </listitem>
+ <listitem>
+ <para>[bdubbs] - Update to file-5.45. Fixes
+ <ulink url='&lfs-ticket-root;5294'>#5294</ulink>.</para>
+ </listitem>
+ </itemizedlist>
+ </listitem>
+
+ <listitem revision='sysv'>
+ <para>2023-07-28</para>
+ <itemizedlist>
+ <listitem>
+ <para>[xry111] - Enable cgroup-based memory pressure information
+ in kernel, and add the cgroup file system into /etc/fstab and the
+ mountvirtfs bootscript. This is a preparation for udev from
+ systemd-254. Addresses
+ <ulink url='&lfs-ticket-root;5293'>#5293</ulink>.</para>
+ </listitem>
+ </itemizedlist>
+ </listitem>
+
+ <listitem revision='sysv'>
+ <para>2023-07-22</para>
+ <itemizedlist>
+ <listitem>
+ <para>[xry111] - Make the mountvirtfs bootscript create essential
+ symlinks in /dev. Fixes
+ <ulink url='&lfs-ticket-root;5289'>#5289</ulink>.</para>
+ </listitem>
+ </itemizedlist>
+ </listitem>
<listitem>
<para>2023-07-15</para>
<itemizedlist>
+ <listitem revision='sysv'>
+ <para>[xry111] - Replace eudev-3.2.12 with udev from systemd-253.
+ Fixes <ulink url='&lfs-ticket-root;5285'>#5085</ulink>.</para>
+ </listitem>
<listitem>
<para>[bdubbs] - Update to iana-etc-20230629. Addresses
<ulink url='&lfs-ticket-root;5006'>#5006</ulink>.</para>
@@ -126,7 +303,7 @@
<ulink url='&lfs-ticket-root;5273'>#5273</ulink>.</para>
</listitem>
<listitem>
- <para>[rahul] - Changed from pkg-config to pkgconf 1.9.5. Fixes
+ <para>[rahul] - Changed from pkg-config to pkgconf-1.9.5. Fixes
<ulink url='&lfs-ticket-root;5274'>#5274</ulink>.</para>
</listitem>
</itemizedlist>
@@ -217,7 +394,7 @@
<para>[bdubbs] - Update to flit_core-3.9.0. Fixes
<ulink url='&lfs-ticket-root;5257'>#5257</ulink>.</para>
</listitem>
- <listitem>
+ <listitem revision="sysv">
<para>[bdubbs] - Update to eudev-3.2.12. Fixes
<ulink url='&lfs-ticket-root;5260'>#5260</ulink>.</para>
</listitem>
diff --git a/chapter01/whatsnew.xml b/chapter01/whatsnew.xml
index a2d4cc179..78a241373 100644
--- a/chapter01/whatsnew.xml
+++ b/chapter01/whatsnew.xml
@@ -64,9 +64,9 @@
<listitem>
<para>Bc &bc-version;</para>
</listitem>
- <!--<listitem>
+ <listitem>
<para>Binutils-&binutils-version;</para>
- </listitem>-->
+ </listitem>
<!--<listitem>
<para>Bison-&bison-version;</para>
</listitem>-->
@@ -91,18 +91,18 @@
<!--<listitem>
<para>E2fsprogs-&e2fsprogs-version;</para>
</listitem>-->
- <listitem revision="sysv">
- <para>Eudev-&eudev-version;</para>
- </listitem>
+ <!--<listitem revision="sysv">
+ <para>Udev-&systemd-version; (from systemd)</para>
+ </listitem>-->
<!--<listitem>
<para>Expat-&expat-version;</para>
</listitem>-->
<!--<listitem>
<para>Expect-&expect-version;</para>
</listitem>-->
- <!--<listitem>
+ <listitem>
<para>File-&file-version;</para>
- </listitem>-->
+ </listitem>
<!--<listitem>
<para>Findutils-&findutils-version;</para>
</listitem>-->
@@ -112,9 +112,9 @@
<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>
@@ -124,12 +124,12 @@
<listitem>
<para>Gettext-&gettext-version;</para>
</listitem>
- <!--<listitem>
+ <listitem>
<para>Glibc-&glibc-version;</para>
- </listitem>-->
- <!--<listitem>
+ </listitem>
+ <listitem>
<para>GMP-&gmp-version;</para>
- </listitem>-->
+ </listitem>
<!--<listitem>
<para>Gperf-&gperf-version;</para>
</listitem>-->
@@ -227,6 +227,9 @@
<para>Patch-&patch-version;</para>
</listitem>-->
<listitem>
+ <para>Pkgconf-&pkgconf-version;</para>
+ </listitem>
+ <listitem>
<para>Perl-&perl-version;</para>
</listitem>
<listitem>
@@ -250,39 +253,39 @@
<listitem revision="sysv">
<para>Sysklogd-&sysklogd-version;</para>
</listitem>
- <listitem revision="systemd">
+ <listitem>
<para>Systemd-&systemd-version;</para>
</listitem>
<!--<listitem revision="sysv">
<para>SysVinit-&sysvinit-version;</para>
</listitem>-->
- <!--<listitem>
+ <listitem>
<para>Tar-&tar-version;</para>
- </listitem>-->
+ </listitem>
<!--<listitem>
<para>Tcl-&tcl-version;</para>
</listitem>-->
- <!--<listitem>
+ <listitem>
<para>Texinfo-&texinfo-version;</para>
- </listitem>-->
- <!--<listitem>
+ </listitem>
+ <listitem>
<para>Tzdata-&tzdata-version;</para>
- </listitem>-->
+ </listitem>
<listitem>
<para>Util-Linux-&util-linux-version;</para>
</listitem>
<listitem>
<para>Vim-&vim-version;</para>
</listitem>
- <!--<listitem>
+ <listitem>
<para>wheel-&wheel-version;</para>
- </listitem>-->
+ </listitem>
<!--<listitem>
<para>XML-Parser-&xml-parser-version;</para>
</listitem>-->
- <!--<listitem>
+ <listitem>
<para>XZ-Utils-&xz-version;</para>
- </listitem>-->
+ </listitem>
<!--<listitem>
<para>Zlib-&zlib-version;</para>
</listitem>-->
@@ -304,18 +307,34 @@
<title>Added:</title>
<listitem><para></para></listitem> <!-- satisfy build -->
+ <listitem revision="sysv">
+ <para>Udev-&systemd-version; (from systemd)</para>
+ </listitem>
+
+ <listitem revision="sysv">
+ <para>Jinja2-&jinja2-version;</para>
+ </listitem>
+
+ <listitem revision="sysv">
+ <para>MarkupSafe-&markupsafe-version;</para>
+ </listitem>
+
<listitem>
<para>Libxcrypt-&libxcrypt-version;</para>
</listitem>
<listitem>
- <para>Pkgconf-&flit-core-version;</para>
+ <para>Pkgconf-&pkgconf-version;</para>
</listitem>
<listitem>
<para>Flit-core-&flit-core-version;</para>
</listitem>
+ <listitem>
+ <para>&glibc-memalign-patch;</para>
+ </listitem>
+
<!--<listitem>
<para>&grub-upstream-fixes-patch;</para>
</listitem>-->
@@ -333,11 +352,15 @@
<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>
+ <listitem revision='systemd'>
<para>systemd-252-security_fix-1.patch</para>
</listitem>
</itemizedlist>
diff --git a/chapter03/packages.xml b/chapter03/packages.xml
index 86932b428..dba151cac 100644
--- a/chapter03/packages.xml
+++ b/chapter03/packages.xml
@@ -62,7 +62,6 @@
<para>Home page: <ulink url="&automake-home;"/></para>
<para>Download: <ulink url="&automake-url;"/></para>
<para>MD5 sum: <literal>&automake-md5;</literal></para>
- <para>SHA256 sum: <literal>&automake-sha256;</literal></para>
</listitem>
</varlistentry>
@@ -174,14 +173,6 @@
</listitem>
</varlistentry>
- <varlistentry revision="sysv">
- <term>Eudev (&eudev-version;) - <token>&eudev-size;</token>:</term>
- <listitem>
- <para>Download: <ulink url="&eudev-url;"/></para>
- <para>MD5 sum: <literal>&eudev-md5;</literal></para>
- </listitem>
- </varlistentry>
-
<varlistentry>
<term>Expat (&expat-version;) - <token>&expat-size;</token>:</term>
<listitem>
@@ -387,7 +378,7 @@
</listitem>
</varlistentry>
- <varlistentry revision="systemd">
+ <varlistentry>
<term>Jinja2 (&jinja2-version;) - <token>&jinja2-size;</token>:</term>
<listitem>
<para>Home page: <ulink url="&jinja2-home;"/></para>
@@ -536,7 +527,7 @@
</listitem>
</varlistentry>
- <varlistentry revision="systemd">
+ <varlistentry>
<term>MarkupSafe (&markupsafe-version;) - <token>&markupsafe-size;</token>:</term>
<listitem>
<para>Home page: <ulink url="&markupsafe-home;"/></para>
@@ -697,7 +688,7 @@
</listitem>
</varlistentry>
- <varlistentry revision="systemd">
+ <varlistentry>
<term>Systemd (&systemd-version;) - <token>&systemd-size;</token>:</term>
<listitem>
<para>Home page: <ulink url="&systemd-home;"/></para>
@@ -706,7 +697,7 @@
</listitem>
</varlistentry>
- <varlistentry revision="systemd">
+ <varlistentry>
<term>Systemd Man Pages(&systemd-version;) - <token>&systemd-man-size;</token>:</term>
<listitem>
<para>Home page: <ulink url="&systemd-home;"/></para>
diff --git a/chapter03/patches.xml b/chapter03/patches.xml
index 5f1bbf0c2..bbf09ae27 100644
--- a/chapter03/patches.xml
+++ b/chapter03/patches.xml
@@ -78,6 +78,14 @@
</varlistentry>
-->
<varlistentry>
+ <term>Glibc Memalign Patch - <token>&glibc-memalign-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>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
<term>Glibc FHS Patch - <token>&glibc-fhs-patch-size;</token>:</term>
<listitem>
<para>Download: <ulink url="&patches-root;&glibc-fhs-patch;"/></para>
diff --git a/chapter04/settingenviron.xml b/chapter04/settingenviron.xml
index d801aa9ab..b255a4b45 100644
--- a/chapter04/settingenviron.xml
+++ b/chapter04/settingenviron.xml
@@ -104,7 +104,7 @@ EOF</userinput></screen>
</varlistentry>
<varlistentry>
- <term><parameter>LFS_TGT=(uname -m)-lfs-linux-gnu</parameter></term>
+ <term><parameter>LFS_TGT=$(uname -m)-lfs-linux-gnu</parameter></term>
<listitem>
<para>The <envar>LFS_TGT</envar> variable sets a non-default, but compatible machine
description for use when building our cross-compiler and linker and when
diff --git a/chapter05/glibc.xml b/chapter05/glibc.xml
index c2d9b91aa..7cbdccfde 100644
--- a/chapter05/glibc.xml
+++ b/chapter05/glibc.xml
@@ -70,7 +70,6 @@ cd build</userinput></screen>
--build=$(../scripts/config.guess) \
--enable-kernel=&min-kernel; \
--with-headers=$LFS/usr/include \
- --disable-crypt \
libc_cv_slibdir=/usr/lib</userinput></screen>
<variablelist>
diff --git a/chapter06/binutils-pass2.xml b/chapter06/binutils-pass2.xml
index ef5c18433..7b0f1fc20 100644
--- a/chapter06/binutils-pass2.xml
+++ b/chapter06/binutils-pass2.xml
@@ -101,7 +101,7 @@ cd build</userinput></screen>
<para>Remove the libtool archive files because they are harmful for
cross compilation, and remove unnecessary static libraries:</para>
-<screen><userinput remap="install">rm -v $LFS/usr/lib/lib{bfd,ctf,ctf-nobfd,opcodes}.{a,la}</userinput></screen>
+<screen><userinput remap="install">rm -v $LFS/usr/lib/lib{bfd,ctf,ctf-nobfd,opcodes,sframe}.{a,la}</userinput></screen>
</sect2>
diff --git a/chapter06/diffutils.xml b/chapter06/diffutils.xml
index af4d95429..d2b875a9d 100644
--- a/chapter06/diffutils.xml
+++ b/chapter06/diffutils.xml
@@ -45,7 +45,9 @@
<para>Prepare Diffutils for compilation:</para>
-<screen><userinput remap="configure">./configure --prefix=/usr --host=$LFS_TGT</userinput></screen>
+ <screen><userinput remap="configure">./configure --prefix=/usr \
+ --host=$LFS_TGT \
+ --build=$(./build-aux/config.guess)</userinput></screen>
<para>Compile the package:</para>
diff --git a/chapter06/grep.xml b/chapter06/grep.xml
index 1bccd7486..dd942c712 100644
--- a/chapter06/grep.xml
+++ b/chapter06/grep.xml
@@ -45,8 +45,9 @@
<para>Prepare Grep for compilation:</para>
-<screen><userinput remap="configure">./configure --prefix=/usr \
- --host=$LFS_TGT</userinput></screen>
+ <screen><userinput remap="configure">./configure --prefix=/usr \
+ --host=$LFS_TGT \
+ --build=$(./build-aux/config.guess)</userinput></screen>
<para>Compile the package:</para>
diff --git a/chapter06/sed.xml b/chapter06/sed.xml
index b3e39c215..b297afedd 100644
--- a/chapter06/sed.xml
+++ b/chapter06/sed.xml
@@ -45,8 +45,9 @@
<para>Prepare Sed for compilation:</para>
-<screen><userinput remap="configure">./configure --prefix=/usr \
- --host=$LFS_TGT</userinput></screen>
+ <screen><userinput remap="configure">./configure --prefix=/usr \
+ --host=$LFS_TGT \
+ --build=$(./build-aux/config.guess)</userinput></screen>
<para>Compile the package:</para>
diff --git a/chapter08/binutils.xml b/chapter08/binutils.xml
index 3e29a5153..63ae7e2eb 100644
--- a/chapter08/binutils.xml
+++ b/chapter08/binutils.xml
@@ -141,14 +141,15 @@ cd build</userinput></screen>
<screen><userinput remap="test">grep '^FAIL:' $(find -name '*.log')</userinput></screen>
+ <para>Three tests in the gprofng suite are known to fail.</para>
+
<para>Install the package:</para>
<screen><userinput remap="install">make tooldir=/usr install</userinput></screen>
- <para>Remove useless static libraries and an empty man page:</para>
+ <para>Remove useless static libraries:</para>
-<screen><userinput remap="install">rm -fv /usr/lib/lib{bfd,ctf,ctf-nobfd,sframe,opcodes}.a
-rm -fv /usr/share/man/man1/{gprofng,gp-*}.1</userinput></screen>
+<screen><userinput remap="install">rm -fv /usr/lib/lib{bfd,ctf,ctf-nobfd,gprofng,opcodes,sframe}.a</userinput></screen>
</sect2>
@@ -163,7 +164,8 @@ rm -fv /usr/share/man/man1/{gprofng,gp-*}.1</userinput></screen>
<seglistitem>
<seg>addr2line, ar, as, c++filt, dwp, elfedit, gprof, gprofng, ld, ld.bfd, ld.gold, nm,
objcopy, objdump, ranlib, readelf, size, strings, and strip</seg>
- <seg>libbfd.so, libctf.so, libctf-nobfd.so, libopcodes.so, and libsframe.so</seg>
+ <seg>libbfd.so, libctf.so, libctf-nobfd.so, libgprofng.so,
+ libopcodes.so, and libsframe.so</seg>
<seg>/usr/lib/ldscripts</seg>
</seglistitem>
</segmentedlist>
@@ -411,6 +413,17 @@ rm -fv /usr/share/man/man1/{gprofng,gp-*}.1</userinput></screen>
</listitem>
</varlistentry>
+ <varlistentry id="libgprofng">
+ <term><filename class="libraryfile">libgprofng</filename></term>
+ <listitem>
+ <para>A library containing most routines used by
+ <command>gprofng</command></para>
+ <indexterm zone="ch-system-binutils libgprofng">
+ <primary sortas="c-libgprofng">libgprofng</primary>
+ </indexterm>
+ </listitem>
+ </varlistentry>
+
<varlistentry id="libopcodes">
<term><filename class="libraryfile">libopcodes</filename></term>
<listitem>
diff --git a/chapter08/chapter08.xml b/chapter08/chapter08.xml
index e97ae7057..3f356d39e 100644
--- a/chapter08/chapter08.xml
+++ b/chapter08/chapter08.xml
@@ -91,7 +91,7 @@
<xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="dbus.xml"/>
<!-- sysv only -->
- <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="eudev.xml"/>
+ <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="udev.xml"/>
<!-- Both sysv on systemd builds -->
<xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="man-db.xml"/>
diff --git a/chapter08/coreutils.xml b/chapter08/coreutils.xml
index c72041b3b..7d715f2f3 100644
--- a/chapter08/coreutils.xml
+++ b/chapter08/coreutils.xml
@@ -116,7 +116,7 @@ FORCE_UNSAFE_CONFIGURE=1 ./configure \
these tests are not skipped, add a temporary group and make the
user <systemitem class="username">tester</systemitem> a part of it:</para>
-<screen><userinput remap="test">echo "dummy:x:102:tester" &gt;&gt; /etc/group</userinput></screen>
+<screen><userinput remap="test">groupadd -g 102 dummy -U tester</userinput></screen>
<para>Fix some of the permissions so that the non-&root; user can
compile and run the tests:</para>
@@ -134,7 +134,8 @@ FORCE_UNSAFE_CONFIGURE=1 ./configure \
<para>Remove the temporary group:</para>
-<screen><userinput remap="test">sed -i '/dummy/d' /etc/group</userinput></screen>
+<screen><userinput remap="test">groupdel dummy</userinput></screen>
+
<para>Install the package:</para>
<screen><userinput remap="install">make install</userinput></screen>
diff --git a/chapter08/dbus.xml b/chapter08/dbus.xml
index f59dd122b..8ab4744ad 100644
--- a/chapter08/dbus.xml
+++ b/chapter08/dbus.xml
@@ -52,6 +52,7 @@
--sysconfdir=/etc \
--localstatedir=/var \
--runstatedir=/run \
+ --enable-user-session \
--disable-static \
--disable-doxygen-docs \
--disable-xml-docs \
@@ -73,6 +74,18 @@
</listitem>
</varlistentry>
+ <varlistentry>
+ <term>
+ <parameter>--enable-user-session</parameter>
+ </term>
+ <listitem>
+ <para>This ensures the D-Bus per-user service and socket unit
+ files are installed for Systemd. They are not useful (but
+ harmless) in a base LFS installation, however they can be used
+ once systemd is rebuilt with PAM support in BLFS.</para>
+ </listitem>
+ </varlistentry>
+
</variablelist>
<para>Compile the package:</para>
diff --git a/chapter08/eudev.xml b/chapter08/eudev.xml
deleted file mode 100644
index 785e70103..000000000
--- a/chapter08/eudev.xml
+++ /dev/null
@@ -1,202 +0,0 @@
-<?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-eudev" role="wrap" revision="sysv">
- <?dbhtml filename="eudev.html"?>
-
- <sect1info condition="script">
- <productname>eudev</productname>
- <productnumber>&eudev-version;</productnumber>
- <address>&eudev-url;</address>
- </sect1info>
-
- <title>Eudev-&eudev-version;</title>
-
- <indexterm zone="ch-system-eudev">
- <primary sortas="a-Eudev">Eudev</primary>
- </indexterm>
-
- <sect2 role="package">
- <title/>
-
- <para>The Eudev package contains programs for dynamic creation of device
- nodes.</para>
-
- <segmentedlist>
- <segtitle>&buildtime;</segtitle>
- <segtitle>&diskspace;</segtitle>
-
- <seglistitem>
- <seg>&eudev-fin-sbu;</seg>
- <seg>&eudev-fin-du;</seg>
- </seglistitem>
- </segmentedlist>
- </sect2>
-
- <sect2 role="installation">
- <title>Installation of Eudev</title>
- <!-- No longer seems needed. bdubbs 5/18/23
- <para>First fix the location of udev rules in the .pc file:</para>
-
-<screen><userinput remap="pre">sed -i '/udevdir/a udev_dir=${udevdir}' src/udev/udev.pc.in</userinput></screen>
--->
- <!-- different from systemd: we do not have a render group and file is
- named differently -->
- <para>Remove an unneeded group
- <systemitem class="groupname">sgx</systemitem>, from the default udev
- rules:</para>
-
-<screen><userinput remap="pre">sed -i -e 's/GROUP="sgx", //' rules/50-udev-default.rules</userinput></screen>
-
- <para>Prepare Eudev for compilation:</para>
-
-<screen><userinput remap="configure">./configure --prefix=/usr \
- --bindir=/usr/sbin \
- --sysconfdir=/etc \
- --enable-manpages \
- --disable-static</userinput></screen>
-
- <para>Compile the package:</para>
-
-<screen><userinput remap="make">make</userinput></screen>
-
- <para>Create some directories now that are needed for tests, but
- will also be used as a part of installation:</para>
-
-<screen><userinput remap="test">mkdir -pv /usr/lib/udev/rules.d
-mkdir -pv /etc/udev/rules.d</userinput></screen>
-
- <para>To test the results, issue:</para>
-
-<screen><userinput remap="test">make check</userinput></screen>
-
- <para>Install the package:</para>
-
-<screen><userinput remap="install">make install</userinput></screen>
-
- <para>Install some custom rules and support files useful in an LFS
- environment:</para>
-
-<screen><userinput remap="install">tar -xvf ../&udev-lfs-version;.tar.xz
-make -f &udev-lfs-version;/Makefile.lfs install</userinput></screen>
-
- </sect2>
-
- <sect2 id="conf-eudev" role="configuration">
- <title>Configuring Eudev</title>
-
- <indexterm zone="conf-eudev">
- <primary sortas="a-Eudev">Eudev</primary>
- <secondary>configuring</secondary>
- </indexterm>
-
- <indexterm zone="conf-eudev">
- <primary sortas="e-/etc/udev/rules.d/65-kvm.rules">/etc/udev/rules.d/65-kvm.rules</primary>
- </indexterm>
-
- <para>
- The default udev rule installed by Eudev would allow all users to
- access <filename class='devicefile'>/dev/kvm</filename>. The editors
- consider it dangerous. Create a configuration file to override it:
- </para>
-
-<screen><userinput>cat > /etc/udev/rules.d/65-kvm.rules &lt;&lt; "EOF"
-<literal>KERNEL=="kvm", GROUP="kvm", MODE="0660", TAG+="uaccess"</literal>
-EOF</userinput></screen>
-
- <indexterm zone="conf-eudev">
- <primary sortas="e-/etc/udev/hwdb.bin">/etc/udev/hwdb.bin</primary>
- </indexterm>
-
- <para>Information about hardware devices is maintained in the
- <filename class="directory">/etc/udev/hwdb.d</filename> and
- <filename class="directory">/usr/lib/udev/hwdb.d</filename> directories.
- <application>Eudev</application> needs that information to be compiled
- into a binary database <filename>/etc/udev/hwdb.bin</filename>. Create the
- initial database:</para>
-
-<screen><userinput>udevadm hwdb --update</userinput></screen>
-
- <para>This command needs to be run each time the hardware information is
- updated.</para>
-
- </sect2>
-
- <sect2 id="contents-eudev" role="content">
- <title>Contents of Eudev</title>
-
- <segmentedlist>
- <segtitle>Installed programs</segtitle>
- <segtitle>Installed libraries</segtitle>
- <segtitle>Installed directories</segtitle>
-
- <seglistitem>
- <seg><!-- These are in /usr/lib/udev and not to be called by the user:
- accelerometer, ata_id, cdrom_id, collect, mtd_probe,
- scsi_id, v4l_id,--> udevadm and udevd</seg>
-
- <seg>libudev.so</seg>
-
- <seg>/etc/udev, /usr/lib/udev, and /usr/share/doc/udev-&udev-lfs-version;</seg>
- </seglistitem>
- </segmentedlist>
-
- <variablelist>
- <bridgehead renderas="sect3">Short Descriptions</bridgehead>
- <?dbfo list-presentation="list"?>
- <?dbhtml list-presentation="table"?>
- <varlistentry id="udevadm" revision="sysv">
- <term><command>udevadm</command></term>
- <listitem>
- <para>Generic udev administration tool: controls the udevd daemon,
- provides info from the Udev database, monitors uevents, waits for
- uevents to finish, tests Udev configuration, and triggers uevents
- for a given device</para>
- <indexterm zone="ch-system-eudev udevadm">
- <primary sortas="b-udevadm">udevadm</primary>
- </indexterm>
- </listitem>
- </varlistentry>
-
- <varlistentry id="udevd">
- <term><command>udevd</command></term>
- <listitem>
- <para>A daemon that listens for uevents on the netlink socket,
- creates devices and runs the configured external programs in
- response to these uevents</para>
- <indexterm zone="ch-system-eudev udevd">
- <primary sortas="b-udevd">udevd</primary>
- </indexterm>
- </listitem>
- </varlistentry>
-
- <varlistentry id="libudev">
- <term><filename class="libraryfile">libudev</filename></term>
- <listitem>
- <para>A library interface to udev device information</para>
- <indexterm zone="ch-system-eudev libudev">
- <primary sortas="c-libudev">libudev</primary>
- </indexterm>
- </listitem>
- </varlistentry>
-
- <varlistentry id="etc-udev">
- <term><filename class="directory">/etc/udev</filename></term>
- <listitem>
- <para>Contains Udev configuration files,
- device permissions, and rules for device naming</para>
- <indexterm zone="ch-system-eudev etc-udev">
- <primary sortas="e-/etc/udev">/etc/udev</primary>
- </indexterm>
- </listitem>
- </varlistentry>
-
- </variablelist>
-
- </sect2>
-
-</sect1>
diff --git a/chapter08/gawk.xml b/chapter08/gawk.xml
index a6b74460b..cc9348d90 100644
--- a/chapter08/gawk.xml
+++ b/chapter08/gawk.xml
@@ -61,12 +61,6 @@ su tester -c "PATH=$PATH make check"</userinput></screen>
<screen><userinput remap="install">make LN='ln -f' install</userinput></screen>
- <para>The installation process already created <command>awk</command>
- as a symlink to <command>gawk</command>, create its man page as a
- symlink as well:</para>
-
-<screen><userinput remap="install">ln -sv gawk.1 /usr/share/man/man1/awk.1</userinput></screen>
-
<variablelist>
<title>The meaning of the overridden make variable:</title>
@@ -79,6 +73,12 @@ su tester -c "PATH=$PATH make check"</userinput></screen>
</varlistentry>
</variablelist>
+ <para>The installation process already created <command>awk</command>
+ as a symlink to <command>gawk</command>, create its man page as a
+ symlink as well:</para>
+
+<screen><userinput remap="install">ln -sv gawk.1 /usr/share/man/man1/awk.1</userinput></screen>
+
<para>If desired, install the documentation:</para>
<screen><userinput remap="install">mkdir -pv /usr/share/doc/gawk-&gawk-version;
diff --git a/chapter08/gcc.xml b/chapter08/gcc.xml
index d50774f26..3734e258e 100644
--- a/chapter08/gcc.xml
+++ b/chapter08/gcc.xml
@@ -177,6 +177,17 @@ su tester -c "PATH=$PATH make -k check"</userinput></screen>
<!-- Need further investigation -->
<para>Many gcc and g++ tests related to hwasan are known to fail.</para>
+ <para>
+ With Glibc-2.38, the analyzer tests named
+ <filename>data-model-4.c</filename> and
+ <filename>conftest-1.c</filename>
+ are known to fail.
+ In the asan tests, several tests in <filename>asan_test.C</filename>
+ are known to fail.
+ The test named <filename>interception-malloc-test-1.C</filename>
+ is known to fail.
+ </para>
+
<para>A few unexpected failures cannot always be avoided. The GCC developers
are usually aware of these issues, but have not resolved them yet.
Unless the test results are vastly different from those at the above URL,
diff --git a/chapter08/glibc.xml b/chapter08/glibc.xml
index b8fe0925a..7eac93dbb 100644
--- a/chapter08/glibc.xml
+++ b/chapter08/glibc.xml
@@ -50,15 +50,10 @@
<screen><userinput remap="pre">patch -Np1 -i ../&glibc-fhs-patch;</userinput></screen>
- <!-- https://sourceware.org/bugzilla/show_bug.cgi?id=30068
- Upstream fix also added a test case and renamed "prec" to
- "prec_inc". We'll test this with MPFR test suite so we don't
- need the test here, and the renaming does not affect program
- behavior. -->
- <para>Fix a security issue identified upstream:</para>
+ <para>Now fix a regression causing the posix_memalign() function
+ to be very slow in some conditions:</para>
-<screen><userinput remap="pre">sed '/width -=/s/workend - string/number_length/' \
- -i stdio-common/vfprintf-process-arg.c</userinput></screen>
+<screen><userinput remap="pre">patch -Np1 -i ../&glibc-memalign-patch;</userinput></screen>
<para>The Glibc documentation recommends building Glibc
in a dedicated build directory:</para>
@@ -79,7 +74,6 @@ cd build</userinput></screen>
--enable-kernel=&min-kernel; \
--enable-stack-protector=strong \
--with-headers=/usr/include \
- --disable-crypt \
libc_cv_slibdir=/usr/lib</userinput></screen>
<variablelist>
@@ -166,10 +160,12 @@ esac</userinput></screen>
is known to fail in the LFS chroot environment.</para>
</listitem>
+<!-- Did not fail with glibc-2.38
<listitem>
<para><emphasis>misc/tst-ttyname</emphasis>
is known to fail in the LFS chroot environment.</para>
</listitem>
+-->
<!-- https://sourceware.org/pipermail/libc-alpha/2022-August/141567.html -->
<listitem>
diff --git a/chapter08/gmp.xml b/chapter08/gmp.xml
index d9c761834..d9ec9a344 100644
--- a/chapter08/gmp.xml
+++ b/chapter08/gmp.xml
@@ -45,10 +45,12 @@
<para>The default settings of GMP produce libraries optimized for
the host processor. If libraries suitable for processors less
capable than the host's CPU are desired, generic libraries can be
- created by running the following:
+ created by appending the <option>--host=none-linux-gnu</option> option
+ to the <command>configure</command> command.</para>
-<screen role="nodump"><userinput>cp -v configfsf.guess config.guess
-cp -v configfsf.sub config.sub</userinput></screen></para>
+ <!-- To editors: the configure script says "the none host is obsolete,
+ use - -disable-assembly", but don't believe it: with the latter
+ CFLAGS is still automatically set to -march=something. -->
</note>
<para>Prepare GMP for compilation:</para>
@@ -97,9 +99,9 @@ make html</userinput></screen>
the system capabilities and there will be errors in the tests or other
applications using the gmp libraries with the message "Illegal
instruction". In this case, gmp should be reconfigured with the option
- --build=aarch64-unknown-linux-gnu and rebuilt.</para></caution>
+ <option>--host=none-linux-gnu</option> and rebuilt.</para></caution>
- <para>Ensure that all 197 tests in the test suite passed.
+ <para>Ensure that all 199 tests in the test suite passed.
Check the results by issuing the following command:</para>
<screen><userinput remap="test">awk '/# PASS:/{total+=$3} ; END{print total}' gmp-check-log</userinput></screen>
diff --git a/chapter08/jinja2.xml b/chapter08/jinja2.xml
index 8fa12dd25..ca614ecdc 100644
--- a/chapter08/jinja2.xml
+++ b/chapter08/jinja2.xml
@@ -5,7 +5,7 @@
%general-entities;
]>
-<sect1 id="ch-system-jinja2" role="wrap" revision="systemd">
+<sect1 id="ch-system-jinja2" role="wrap">
<?dbhtml filename="jinja2.html"?>
<sect1info condition="script">
diff --git a/chapter08/less.xml b/chapter08/less.xml
index 237cf1e15..99f4e62ee 100644
--- a/chapter08/less.xml
+++ b/chapter08/less.xml
@@ -62,7 +62,9 @@
<screen><userinput remap="make">make</userinput></screen>
- <para>This package does not come with a test suite.</para>
+ <para>To test the results, issue:</para>
+
+<screen><userinput remap="test">make check</userinput></screen>
<para>Install the package:</para>
diff --git a/chapter08/libxcrypt.xml b/chapter08/libxcrypt.xml
index 3fb59941d..1838a55b6 100644
--- a/chapter08/libxcrypt.xml
+++ b/chapter08/libxcrypt.xml
@@ -100,10 +100,10 @@
them at runtime. However, the only known binary-only applications
that link against these functions require ABI version 1. If you must
have such functions because of some binary-only application or to be
- to be compliant with LSB, build the package again with the following
+ compliant with LSB, build the package again with the following
commands:</para>
-<screen><userinput remap="nodump">make distclean
+<screen role="nodump"><userinput>make distclean
./configure --prefix=/usr \
--enable-hashes=strong,glibc \
--enable-obsolete-api=glibc \
diff --git a/chapter08/man-db.xml b/chapter08/man-db.xml
index 55559b1fa..88c811d33 100644
--- a/chapter08/man-db.xml
+++ b/chapter08/man-db.xml
@@ -111,9 +111,13 @@
<screen><userinput remap="make">make</userinput></screen>
- <para>To test the results, issue:</para>
+ <para>To test the results, issue:</para>
-<screen><userinput remap="test">make check</userinput></screen>
+<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>
<para>Install the package:</para>
diff --git a/chapter08/man-pages.xml b/chapter08/man-pages.xml
index 9d7c86bd9..19772f414 100644
--- a/chapter08/man-pages.xml
+++ b/chapter08/man-pages.xml
@@ -40,6 +40,12 @@
<sect2 role="installation">
<title>Installation of Man-pages</title>
+ <para>Remove two man pages for password hashing functions.
+ <application>Libxcrypt</application> will provide a better version
+ of these man pages:</para>
+
+<screen><userinput remap="pre">rm -v man3/crypt*</userinput></screen>
+
<para>Install Man-pages by running:</para>
<screen><userinput remap="install">make prefix=/usr install</userinput></screen>
diff --git a/chapter08/markupsafe.xml b/chapter08/markupsafe.xml
index 27fdb1627..b4a0cbc58 100644
--- a/chapter08/markupsafe.xml
+++ b/chapter08/markupsafe.xml
@@ -5,7 +5,7 @@
%general-entities;
]>
-<sect1 id="ch-system-markupsafe" role="wrap" revision="systemd">
+<sect1 id="ch-system-markupsafe" role="wrap">
<?dbhtml filename="markupsafe.html"?>
<sect1info condition="script">
diff --git a/chapter08/meson.xml b/chapter08/meson.xml
index 1d9c9e3a7..a53a88c3c 100644
--- a/chapter08/meson.xml
+++ b/chapter08/meson.xml
@@ -35,15 +35,6 @@
</seglistitem>
</segmentedlist>
- <tip revision="sysv">
- <para>This section is not strictly required when LFS does not use
- systemd. On the other hand, Meson, along with Ninja, makes
- a powerful build system combination,
- which will probably be used more and more often. It is required for
- several packages in <ulink url="&blfs-book;">the BLFS
- book</ulink>.</para>
- </tip>
-
</sect2>
<sect2 role="installation">
diff --git a/chapter08/ncurses.xml b/chapter08/ncurses.xml
index 58221d144..b51099001 100644
--- a/chapter08/ncurses.xml
+++ b/chapter08/ncurses.xml
@@ -158,8 +158,7 @@ ln -sfv libncurses.so /usr/lib/libcurses.so</userinput></screen>
<para>If desired, install the Ncurses documentation:</para>
-<screen><userinput remap="install">mkdir -pv /usr/share/doc/ncurses-&ncurses-version;
-cp -v -R doc/* /usr/share/doc/ncurses-&ncurses-version;</userinput></screen>
+<screen><userinput remap="install">cp -v -R doc -T /usr/share/doc/ncurses-&ncurses-version;</userinput></screen>
<note>
diff --git a/chapter08/ninja.xml b/chapter08/ninja.xml
index 74626e30c..4aca7b8c7 100644
--- a/chapter08/ninja.xml
+++ b/chapter08/ninja.xml
@@ -35,15 +35,6 @@
</seglistitem>
</segmentedlist>
- <tip revision="sysv">
- <para>This section is not strictly required when LFS does not use
- systemd. On the other hand, Ninja, along with Meson, makes
- a powerful build system combination,
- which will probably be used more and more often. It is required for
- several packages in <ulink url="&blfs-book;">the BLFS
- book</ulink>.</para>
- </tip>
-
</sect2>
<sect2 role="installation">
diff --git a/chapter08/pkgconf.xml b/chapter08/pkgconf.xml
index 724a1ff24..fd61b4d40 100644
--- a/chapter08/pkgconf.xml
+++ b/chapter08/pkgconf.xml
@@ -41,8 +41,17 @@
</sect2>
<sect2 role="installation">
- <title>Installation of Pkgconf</title>
+ <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>
+-->
<para>Prepare Pkgconf for compilation:</para>
<screen><userinput remap="configure">./configure --prefix=/usr \
diff --git a/chapter08/procps.xml b/chapter08/procps.xml
index e17d199ca..20a6be096 100644
--- a/chapter08/procps.xml
+++ b/chapter08/procps.xml
@@ -83,16 +83,6 @@ make check</userinput></screen>
<screen><userinput remap="test">make check</userinput></screen>
- <!-- It's because "free -v" shows "used" greater than "total", and
- a negative "free" for "Comm" line. The "total" value is from
- "CommitLimit" in /proc/meminfo, which is the limit for one process.
- But the "used" value is from "Committed_AS" in the same file,
- which is the total commited virtual memory space of all processes.
- I'll make a report to upstream anyway. -->
- <para>One test named <filename>free with commit</filename>
- may fail if some applications with a custom memory allocator (for
- example, JVM and Web browsers) are running on the host distro.</para>
-
<para>Install the package:</para>
<screen><userinput remap="install">make install</userinput></screen>
diff --git a/chapter08/stripping.xml b/chapter08/stripping.xml
index 906dc297c..1446949be 100644
--- a/chapter08/stripping.xml
+++ b/chapter08/stripping.xml
@@ -89,7 +89,7 @@ done
online_usrbin="bash find strip"
online_usrlib="libbfd-&binutils-version;.so
- libsframe.so.0.0.0
+ libsframe.so.&libsframe-version;
libhistory.so.&readline-soversion;
libncursesw.so.&ncurses-version;
libm.so.6
diff --git a/chapter08/systemd.xml b/chapter08/systemd.xml
index e99167d07..63003ac68 100644
--- a/chapter08/systemd.xml
+++ b/chapter08/systemd.xml
@@ -40,19 +40,6 @@
<sect2 role="installation">
<title>Installation of systemd</title>
- <para>
- Remove several inappropriate uses of the <literal>pure</literal>
- attribute that cause runtime issues when the package is built
- with gcc-13 or later:
- </para>
-
-<screen><userinput remap='pre'>sed '/bus_message_type_from_string/s/_pure_//' \
- -i src/libsystemd/sd-bus/bus-internal.h &amp;&amp;
-sed '/devt_hash_func/s/_pure_//' \
- -i src/basic/hash-funcs.h &amp;&amp;
-sed '/job_get_timeout/s/_pure_//' \
- -i src/core/job.h</userinput></screen>
-
<para>Remove two unneeded groups,
<systemitem class="groupname">render</systemitem> and
<systemitem class="groupname">sgx</systemitem>, from the default udev
@@ -205,7 +192,9 @@ meson setup \
<!-- Please make sure systemd man pages tarball has a common leading
component in the path. -->
-<screen><userinput remap="install">tar -xf ../../systemd-man-pages-&systemd-man-version;.tar.xz --strip-components=1 -C /usr/share/man</userinput></screen>
+<screen><userinput remap="install">tar -xf ../../systemd-man-pages-&systemd-version;.tar.xz \
+ --no-same-owner --strip-components=1 \
+ -C /usr/share/man</userinput></screen>
<para>Create the <filename>/etc/machine-id</filename> file needed by
<command>systemd-journald</command>:</para>
@@ -244,12 +233,14 @@ meson setup \
<seglistitem>
<seg>busctl, coredumpctl, halt (symlink to systemctl),
hostnamectl, init, journalctl, kernel-install, localectl, loginctl,
- machinectl, networkctl, oomctl, portablectl, poweroff (symlink to
+ machinectl, mount.ddi (symlink to systemd-dissect), networkctl,
+ oomctl, portablectl, poweroff (symlink to
systemctl), reboot (symlink to systemctl), resolvconf (symlink to
resolvectl), resolvectl, runlevel (symlink to systemctl), shutdown
(symlink to systemctl), systemctl, systemd-ac-power, systemd-analyze,
systemd-ask-password, systemd-cat, systemd-cgls, systemd-cgtop,
- systemd-creds, systemd-delta, systemd-detect-virt,
+ systemd-confext (symlink to systemd-sysext), systemd-creds,
+ systemd-delta, systemd-detect-virt,
systemd-dissect, systemd-escape, systemd-hwdb, systemd-id128,
systemd-inhibit, systemd-machine-id-setup,
systemd-mount, systemd-notify, systemd-nspawn, systemd-path,
diff --git a/chapter08/udev.xml b/chapter08/udev.xml
new file mode 100644
index 000000000..35bb12f46
--- /dev/null
+++ b/chapter08/udev.xml
@@ -0,0 +1,270 @@
+<?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-udev" role="wrap" revision="sysv">
+ <?dbhtml filename="udev.html"?>
+
+ <sect1info condition="script">
+ <productname>udev</productname>
+ <productnumber>&systemd-version;</productnumber>
+ <address>&systemd-url;</address>
+ </sect1info>
+
+ <title>Udev from Systemd-&systemd-version;</title>
+
+ <indexterm zone="ch-system-udev">
+ <primary sortas="a-Udev">Udev</primary>
+ </indexterm>
+
+ <sect2 role="package">
+ <title/>
+
+ <para>The Udev package contains programs for dynamic creation of device
+ nodes.</para>
+
+ <segmentedlist>
+ <segtitle>&buildtime;</segtitle>
+ <segtitle>&diskspace;</segtitle>
+
+ <seglistitem>
+ <seg>&udev-fin-sbu;</seg>
+ <seg>&udev-fin-du;</seg>
+ </seglistitem>
+ </segmentedlist>
+ </sect2>
+
+ <sect2 role="installation">
+ <title>Installation of Udev</title>
+
+ <para>Udev is part of the systemd-&systemd-version; package. Use
+ the systemd-&systemd-version;.tar.xz file as the source tarball.</para>
+
+ <para>Remove two unneeded groups,
+ <systemitem class="groupname">render</systemitem> and
+ <systemitem class="groupname">sgx</systemitem>, from the default udev
+ rules:</para>
+
+ <screen><userinput remap="pre">sed -i -e 's/GROUP="render"/GROUP="video"/' \
+ -e 's/GROUP="sgx", //' rules.d/50-udev-default.rules.in</userinput></screen>
+
+ <para>Remove one udev rule requiring a full Systemd installation:</para>
+
+ <screen><userinput remap="pre">sed '/systemd-sysctl/s/^/#/' -i rules.d/99-systemd.rules.in</userinput></screen>
+
+ <para>Prepare Udev for compilation:</para>
+
+<screen><userinput remap="configure">mkdir -p build
+cd build
+
+meson setup \
+ --prefix=/usr \
+ --buildtype=release \
+ -Dmode=release \
+ -Ddev-kvm-mode=0660 \
+ -Dlink-udev-shared=false \
+ ..</userinput></screen>
+
+ <variablelist>
+ <title>The meaning of the meson options:</title>
+
+ <varlistentry>
+ <term><parameter>--buildtype=release</parameter></term>
+ <listitem>
+ <para>This switch overrides the default buildtype
+ (<quote>debug</quote>), which produces unoptimized
+ binaries.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><parameter>-Dmode=release</parameter></term>
+ <listitem>
+ <para>Disable some features considered experimental by upstream.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><parameter>-Ddev-kvm-mode=0660</parameter></term>
+ <listitem>
+ <para>The default udev rule would allow all users to access
+ <filename class='devicefile'>/dev/kvm</filename>. The editors
+ consider it dangerous. This option overrides it.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><parameter>-Dlink-udev-shared=false</parameter></term>
+ <listitem>
+ <para>This option prevents udev from linking to the internal
+ systemd shared library,
+ <systemitem class='library'>libsystemd-shared</systemitem>.
+ This library is designed to be shared by many Systemd components
+ and it's too overkill for a udev-only installation.</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 }') \
+ $(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>
+
+ <para>Install some custom rules and support files useful in an LFS
+ environment:</para>
+
+<screen><userinput remap="install">tar -xvf ../../&udev-lfs-version;.tar.xz
+make -f &udev-lfs-version;/Makefile.lfs install</userinput></screen>
+
+ <para>Install the man pages:</para>
+
+ <!-- Please make sure systemd man pages tarball has a common leading
+ component in the path. -->
+<screen><userinput remap="install">tar -xf ../../systemd-man-pages-&systemd-man-version;.tar.xz \
+ --no-same-owner --strip-components=1 \
+ -C /usr/share/man --wildcards '*/udev*' '*/libudev*' \
+ '*/systemd-'{hwdb,udevd.service}.8
+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>
+
+ </sect2>
+
+ <sect2 id="conf-udev" role="configuration">
+ <title>Configuring Udev</title>
+
+ <indexterm zone="conf-udev">
+ <primary sortas="a-Udev">Udev</primary>
+ <secondary>configuring</secondary>
+ </indexterm>
+
+ <indexterm zone="conf-udev">
+ <primary sortas="e-/etc/udev/hwdb.bin">/etc/udev/hwdb.bin</primary>
+ </indexterm>
+
+ <para>Information about hardware devices is maintained in the
+ <filename class="directory">/etc/udev/hwdb.d</filename> and
+ <filename class="directory">/usr/lib/udev/hwdb.d</filename> directories.
+ <application>Udev</application> needs that information to be compiled
+ into a binary database <filename>/etc/udev/hwdb.bin</filename>. Create the
+ initial database:</para>
+
+<screen><userinput>udev-hwdb update</userinput></screen>
+
+ <para>This command needs to be run each time the hardware information is
+ updated.</para>
+
+ </sect2>
+
+ <sect2 id="contents-udev" role="content">
+ <title>Contents of Udev</title>
+
+ <segmentedlist>
+ <segtitle>Installed programs</segtitle>
+ <segtitle>Installed libraries</segtitle>
+ <segtitle>Installed directories</segtitle>
+
+ <seglistitem>
+ <seg>udevadm, udevd (symlink to udevadm), and udev-hwdb</seg>
+
+ <seg>libudev.so</seg>
+
+ <seg>/etc/udev and /usr/lib/udev</seg>
+ </seglistitem>
+ </segmentedlist>
+
+ <variablelist>
+ <bridgehead renderas="sect3">Short Descriptions</bridgehead>
+ <?dbfo list-presentation="list"?>
+ <?dbhtml list-presentation="table"?>
+ <varlistentry id="udevadm" revision="sysv">
+ <term><command>udevadm</command></term>
+ <listitem>
+ <para>Generic udev administration tool: controls the udevd daemon,
+ provides info from the Udev database, monitors uevents, waits for
+ uevents to finish, tests Udev configuration, and triggers uevents
+ for a given device</para>
+ <indexterm zone="ch-system-udev udevadm">
+ <primary sortas="b-udevadm">udevadm</primary>
+ </indexterm>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry id="udevd">
+ <term><command>udevd</command></term>
+ <listitem>
+ <para>A daemon that listens for uevents on the netlink socket,
+ creates devices and runs the configured external programs in
+ response to these uevents</para>
+ <indexterm zone="ch-system-udev udevd">
+ <primary sortas="b-udevd">udevd</primary>
+ </indexterm>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry id="udev-hwdb">
+ <term><command>udev-hwdb</command></term>
+ <listitem>
+ <para>Updates or queries the hardware database.</para>
+ <indexterm zone="ch-system-udev udev-hwdb">
+ <primary sortas="b-udev-hwdb">udev-hwdb</primary>
+ </indexterm>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry id="libudev">
+ <term><filename class="libraryfile">libudev</filename></term>
+ <listitem>
+ <para>A library interface to udev device information</para>
+ <indexterm zone="ch-system-udev libudev">
+ <primary sortas="c-libudev">libudev</primary>
+ </indexterm>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry id="etc-udev">
+ <term><filename class="directory">/etc/udev</filename></term>
+ <listitem>
+ <para>Contains Udev configuration files,
+ device permissions, and rules for device naming</para>
+ <indexterm zone="ch-system-udev etc-udev">
+ <primary sortas="e-/etc/udev">/etc/udev</primary>
+ </indexterm>
+ </listitem>
+ </varlistentry>
+
+ </variablelist>
+
+ </sect2>
+
+</sect1>
diff --git a/chapter09/network.xml b/chapter09/network.xml
index e2d0a5edf..c86edf56a 100644
--- a/chapter09/network.xml
+++ b/chapter09/network.xml
@@ -37,7 +37,7 @@
<para>The interface names depend on the implementation and
configuration of the udev daemon running on the system. The udev
- daemon for LFS (installed in <xref linkend="ch-system-eudev"/>) will
+ daemon for LFS (installed in <xref linkend="ch-system-udev"/>) will
not run until the LFS system is booted. So the interface names
in the LFS system cannot always be determined by running
those commands on the host distro,
diff --git a/chapter09/udev.xml b/chapter09/udev.xml
index 20212035c..aa7e067e6 100644
--- a/chapter09/udev.xml
+++ b/chapter09/udev.xml
@@ -16,7 +16,7 @@
</indexterm>
<para>In <xref linkend="chapter-building-system"/>, we installed the udev
- daemon when <phrase revision="sysv">eudev</phrase>
+ daemon when <phrase revision="sysv">udev</phrase>
<phrase revision="systemd">systemd</phrase> was built. Before we go into the
details regarding how udev works, a brief history of previous methods of
handling devices is in order.</para>
diff --git a/chapter09/usage.xml b/chapter09/usage.xml
index 2e9843988..b14f3635c 100644
--- a/chapter09/usage.xml
+++ b/chapter09/usage.xml
@@ -146,7 +146,7 @@ EOF</userinput></screen>
an <emphasis>S</emphasis>, and all of them have two numbers following the
initial letter. The K means to stop (kill) a service and the S means to start a
service. The numbers determine the order in which the scripts are run, from 00
- to 99&mdash;the smaller the number, the sooner tht script runs. When
+ to 99&mdash;the smaller the number, the sooner the script runs. When
<command>init</command> switches to another run level, the appropriate services
are either started or stopped, depending on the run level chosen.</para>
diff --git a/chapter10/fstab.xml b/chapter10/fstab.xml
index f78b234db..ccf767ab6 100644
--- a/chapter10/fstab.xml
+++ b/chapter10/fstab.xml
@@ -22,17 +22,18 @@
<screen revision="sysv"><userinput>cat &gt; /etc/fstab &lt;&lt; "EOF"
<literal># Begin /etc/fstab
-# file system mount-point type options dump fsck
-# order
-
-/dev/<replaceable>&lt;xxx&gt;</replaceable> / <replaceable>&lt;fff&gt;</replaceable> defaults 1 1
-/dev/<replaceable>&lt;yyy&gt;</replaceable> swap swap pri=1 0 0
-proc /proc proc nosuid,noexec,nodev 0 0
-sysfs /sys sysfs nosuid,noexec,nodev 0 0
-devpts /dev/pts devpts gid=5,mode=620 0 0
-tmpfs /run tmpfs defaults 0 0
-devtmpfs /dev devtmpfs mode=0755,nosuid 0 0
-tmpfs /dev/shm tmpfs nosuid,nodev 0 0
+# file system mount-point type options dump fsck
+# order
+
+/dev/<replaceable>&lt;xxx&gt;</replaceable> / <replaceable>&lt;fff&gt;</replaceable> defaults 1 1
+/dev/<replaceable>&lt;yyy&gt;</replaceable> swap swap pri=1 0 0
+proc /proc proc nosuid,noexec,nodev 0 0
+sysfs /sys sysfs nosuid,noexec,nodev 0 0
+devpts /dev/pts devpts gid=5,mode=620 0 0
+tmpfs /run tmpfs defaults 0 0
+devtmpfs /dev devtmpfs mode=0755,nosuid 0 0
+tmpfs /dev/shm tmpfs nosuid,nodev 0 0
+cgroup2 /sys/fs/cgroup cgroup2 nosuid,noexec,nodev 0 0
# End /etc/fstab</literal>
EOF</userinput></screen>
diff --git a/chapter10/grub.xml b/chapter10/grub.xml
index 07e63c702..48db73bb0 100644
--- a/chapter10/grub.xml
+++ b/chapter10/grub.xml
@@ -23,7 +23,9 @@
</para>
<para>
If you've installed GRUB for UEFI with optional dependencies following
- BLFS, you should skip this page, and configure GRUB with UEFI support
+ BLFS, you should skip the instructions in this page but still learn the
+ syntax of <filename>grub.cfg</filename> and the method to specify
+ a partition in the file from this page, and configure GRUB with UEFI
using the instructions provided in
<ulink url="&blfs-book;postlfs/grub-setup.html">the BLFS page</ulink>,
but replace <parameter>--target=x86_64-efi</parameter> with
@@ -211,6 +213,7 @@ umount /sys/firmware/efi/efivars</userinput></screen>
set default=0
set timeout=5
+insmod part_gpt
insmod ext2
set root=(hd0,2)
@@ -221,6 +224,24 @@ menuentry "GNU/Linux, Linux &linux-version;-lfs-&version;" {
}</literal>
EOF</userinput></screen>
+ <para>
+ The <command>insmod</command> commands load the
+ <application>GRUB</application> modules named
+ <filename>part_gpt</filename> and <filename>ext2</filename>.
+ Despite the naming, <filename>ext2</filename> actually supports
+ <systemitem class='filesystem'>ext2</systemitem>,
+ <systemitem class='filesystem'>ext3</systemitem>, and
+ <systemitem class='filesystem'>ext4</systemitem> filesystems.
+ The <command>grub-install</command> command has embedded some modules
+ into the main <application>GRUB</application> image (installed into
+ the MBR or the GRUB BIOS partition) to access the other modules
+ (in <filename class='directory'>/boot/grub/i386-pc</filename>) without
+ a chicken-or-egg issue, so with a typical configuration these two
+ modules are already embedded and those two <command>insmod</command>
+ commands will do nothing. But they do no harm anyway, and they may
+ be needed with some rare configurations.
+ </para>
+
<note><para>From <application>GRUB</application>'s perspective, the
kernel files are relative to the partition used. If you
used a separate /boot partition, remove /boot from the above
diff --git a/chapter10/kernel.xml b/chapter10/kernel.xml
index a1ac03523..314ba3f31 100644
--- a/chapter10/kernel.xml
+++ b/chapter10/kernel.xml
@@ -55,7 +55,7 @@
LFS editors recommend that users not familiar with this process follow
the procedures below fairly closely. The objective is to get an
initial system to a point where you can log in at the command line when
- you reboot later in <xref linkend="ch-finish-reboot"/>. At his point
+ you reboot later in <xref linkend="ch-finish-reboot"/>. At this point
optimization and customization is not a goal.
</para>
@@ -130,80 +130,23 @@
<para>Be sure to enable/disable/set the following features or the system might
not work correctly or boot at all:</para>
- <screen role="nodump" revision="sysv">Processor type and features ---&gt;
- [*] Build a relocatable kernel [CONFIG_RELOCATABLE]
- [*] Randomize the address of the kernel image (KASLR) [CONFIG_RANDOMIZE_BASE]
-General setup ---&gt;
- [ ] Compile the kernel with warnings as errors [CONFIG_WERROR]
- &lt; &gt; Enable kernel headers through /sys/kernel/kheaders.tar.xz [CONFIG_IKHEADERS]
- [ ] Configure standard kernel features (expert users) [CONFIG_EXPERT]
-General architecture-dependent options ---&gt;
- [*] Stack Protector buffer overflow detection [CONFIG_STACKPROTECTOR]
- [*] Strong Stack Protector [CONFIG_STACKPROTECTOR_STRONG]
-Device Drivers ---&gt;
- Firmware Drivers ---&gt;
- EFI (Extensible Firmware Interface) Support ---&gt;
- [*] Enable the generic EFI decompressor [CONFIG_EFI_ZBOOT]
- Graphics support ---&gt;
- Frame buffer Devices ---&gt;
- &lt;*&gt; Support for frame buffer devices ---&gt;
- Console display driver support ---&gt;
- [*] Framebuffer Console support [CONFIG_FRAMEBUFFER_CONSOLE]
- Generic Driver Options ---&gt;
- [ ] Support for uevent helper [CONFIG_UEVENT_HELPER]
- [*] Maintain a devtmpfs filesystem to mount at /dev [CONFIG_DEVTMPFS]
- [*] Automount devtmpfs at /dev, after the kernel mounted the rootfs [CONFIG_DEVTMPFS_MOUNT]</screen>
-
- <screen role="nodump" revision="systemd">Processor type and features ---&gt;
- [*] Build a relocatable kernel [CONFIG_RELOCATABLE]
- [*] Randomize the address of the kernel image (KASLR) [CONFIG_RANDOMIZE_BASE]
-General setup ---&gt;
- [ ] Compile the kernel with warnings as errors [CONFIG_WERROR]
- [ ] Auditing Support [CONFIG_AUDIT]
- CPU/Task time and stats accounting ---&gt;
- [*] Pressure stall information tracking [CONFIG_PSI]
- [ ] Require boot parameter to enable pressure stall information tracking [CONFIG_PSI_DEFAULT_DISABLED]
- &lt; &gt; Enable kernel headers through /sys/kernel/kheaders.tar.xz [CONFIG_IKHEADERS]
- [*] Control Group support [CONFIG_CGROUPS] ---&gt;
- [*] Memory controller [CONFIG_MEMCG]
- [ ] Configure standard kernel features (expert users) [CONFIG_EXPERT]
-General architecture-dependent options ---&gt;
- [*] Enable seccomp to safely compute untrusted bytecode [CONFIG_SECCOMP]
- [*] Stack Protector buffer overflow detection [CONFIG_STACKPROTECTOR]
- [*] Strong Stack Protector [CONFIG_STACKPROTECTOR_STRONG]
-[*] Networking support ---&gt; [CONFIG_NET]
- Networking options ---&gt;
- [*] TCP/IP networking [CONFIG_INET]
- &lt;*&gt; The IPv6 protocol [CONFIG_IPV6]
-Device Drivers ---&gt;
- Generic Driver Options ---&gt;
- [ ] Support for uevent helper [CONFIG_UEVENT_HELPER]
- [*] Maintain a devtmpfs filesystem to mount at /dev [CONFIG_DEVTMPFS]
- [*] Automount devtmpfs at /dev, after the kernel mounted the rootfs [CONFIG_DEVTMPFS_MOUNT]
- Firmware Loader ---&gt;
- [ ] Enable the firmware sysfs fallback mechanism [CONFIG_FW_LOADER_USER_HELPER]
- Firmware Drivers ---&gt;
- [*] Export DMI identification via sysfs to userspace [CONFIG_DMIID]
- EFI (Extensible Firmware Interface) Support ---&gt;
- [*] Enable the generic EFI decompressor [CONFIG_EFI_ZBOOT]
- Graphics support ---&gt;
- Frame buffer Devices ---&gt;
- &lt;*&gt; Support for frame buffer devices ---&gt;
- Console display driver support ---&gt;
- [*] Framebuffer Console support [CONFIG_FRAMEBUFFER_CONSOLE]
-File systems ---&gt;
- [*] Inotify support for userspace [CONFIG_INOTIFY_USER]
- Pseudo filesystems ---&gt;
- [*] Tmpfs POSIX Access Control Lists [CONFIG_TMPFS_POSIX_ACL]</screen>
+ <!-- To editors: for updating kernel configuration, edit
+ kernel/*.toml and regenerate kernel/*.xml with
+ "make -C kernel KERNEL_TREE=</usr/src/linux-&linux-version> -->
+
+ <xi:include xmlns:xi="http://www.w3.org/2001/XInclude"
+ href="kernel/sysv.xml"/>
+
+ <xi:include xmlns:xi="http://www.w3.org/2001/XInclude"
+ href="kernel/systemd.xml"/>
<para>If the partition for the LFS system is in a NVME SSD (i. e. the
device node for the partition is <filename>/dev/nvme*</filename>
instead of <filename>/dev/sd*</filename>), enable NVME support or
the LFS system won't boot:</para>
- <screen role="nodump">Device Drivers ---&gt;
- NVME Support ---&gt;
- &lt;*&gt; NVM Express block device [CONFIG_BLK_DEV_NVME]</screen>
+ <xi:include xmlns:xi="http://www.w3.org/2001/XInclude"
+ href="kernel/nvme.xml"/>
</note>
<note revision="systemd">
@@ -288,7 +231,7 @@ File systems ---&gt;
<term><parameter>Support for uevent helper</parameter></term>
<listitem>
<para>Having this option set may interfere with device
- management when using Udev/Eudev. </para>
+ management when using Udev.</para>
</listitem>
</varlistentry>
@@ -298,7 +241,7 @@ File systems ---&gt;
<para>This will create automated device nodes which are populated by the
kernel, even without Udev running. Udev then runs on top of this,
managing permissions and adding symlinks. This configuration
- item is required for all users of Udev/Eudev.</para>
+ item is required for all users of Udev.</para>
</listitem>
</varlistentry>
@@ -411,8 +354,7 @@ File systems ---&gt;
<para>Install the documentation for the Linux kernel:</para>
-<screen><userinput remap="install">install -d /usr/share/doc/linux-&linux-version;
-cp -r Documentation/* /usr/share/doc/linux-&linux-version;</userinput></screen>
+<screen><userinput remap="install">cp -r Documentation -T /usr/share/doc/linux-&linux-version;</userinput></screen>
<para>It is important to note that the files in the kernel source
directory are not owned by <emphasis>root</emphasis>. Whenever a
diff --git a/chapter10/kernel/.gitignore b/chapter10/kernel/.gitignore
new file mode 100644
index 000000000..e22d2c3a4
--- /dev/null
+++ b/chapter10/kernel/.gitignore
@@ -0,0 +1,2 @@
+__pycache__
+s-kernel-version
diff --git a/chapter10/kernel/Makefile b/chapter10/kernel/Makefile
new file mode 100644
index 000000000..e04d2d6b1
--- /dev/null
+++ b/chapter10/kernel/Makefile
@@ -0,0 +1,23 @@
+INPUT = $(wildcard *.toml)
+OUTPUT = $(patsubst %.toml, %.xml, $(INPUT))
+
+ifeq ($(KERNEL_TREE),)
+$(error "must set KERNEL_TREE=/path/to/kernel/source")
+endif
+
+all: $(OUTPUT)
+
+kernel.version: s-kernel-version; @true
+
+.PHONY: s-kernel-version
+s-kernel-version:
+ ./kernel_version.py $(KERNEL_TREE) > tmp-kernel.version
+ if ! diff tmp-kernel.version kernel.version ; then \
+ mv tmp-kernel.version kernel.version; \
+ else \
+ rm tmp-kernel.version; \
+ fi
+ touch s-kernel-version
+
+%.xml: %.toml kernel-config.py kernel_version.py kernel.version
+ ./kernel-config.py $(KERNEL_TREE) $< > $@
diff --git a/chapter10/kernel/highmem.toml b/chapter10/kernel/highmem.toml
new file mode 100644
index 000000000..2caf42385
--- /dev/null
+++ b/chapter10/kernel/highmem.toml
@@ -0,0 +1 @@
+HIGHMEM64G='X'
diff --git a/chapter10/kernel/highmem.xml b/chapter10/kernel/highmem.xml
new file mode 100644
index 000000000..4f0938142
--- /dev/null
+++ b/chapter10/kernel/highmem.xml
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="ISO-8859-1"?>
+<!DOCTYPE note PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN"
+ "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd">
+<!-- Automatically generated by kernel-config.py
+ DO NOT EDIT! -->
+<screen role="nodump"><emphasis role='blue'>P</emphasis>rocessor type and features ---&gt;
+ H<emphasis role='blue'>i</emphasis>gh Memory Support ---&gt;
+ (X) <emphasis role='blue'>6</emphasis>4GB [HIGHMEM64G]</screen>
diff --git a/chapter10/kernel/kernel-config.py b/chapter10/kernel/kernel-config.py
new file mode 100755
index 000000000..a36113175
--- /dev/null
+++ b/chapter10/kernel/kernel-config.py
@@ -0,0 +1,298 @@
+#!/usr/bin/env python3
+
+# SPDX-License-Identifier: MIT
+# Copyright 2023 The LFS Editors
+
+# Stupid script to render "mconf"-style kernel configuration
+# Usage: kernel-config.py [path to kernel tree] [needed config].toml
+# The toml file should be like:
+# for bool and tristate:
+# EXT4="*"
+# DRM="*M"
+# EXPERT=" "
+# DRM_I915="*M"
+# for choice:
+# HIGHMEM64G="X"
+# an entry with comment:
+# DRM_I915 = { value = " *M", comment = "for i915, crocus, or iris" }
+
+choice_bit = 1 << 30
+ind0 = 0
+ind1 = 0
+menu_id = 1
+stack = []
+if_stack = []
+
+expand_var_mp = { 'SRCARCH': 'x86' }
+main_dep = {}
+
+def expand_var(s):
+ for k in expand_var_mp:
+ s = s.replace('$(' + k + ')', expand_var_mp[k])
+ return s
+
+def pop_stack(cond):
+ global ind0, ind1, stack
+ assert(cond(stack[-1][0]))
+ s, i0, i1, _ = stack[-1]
+ stack = stack[:-1]
+ ind0 -= i0
+ ind1 -= i1
+
+def pop_stack_while(cond):
+ while stack and cond(stack[-1][0]):
+ pop_stack(cond)
+
+def cur_menu():
+ global stack
+ return stack[-1][3] if stack else 0
+
+def cur_if():
+ global if_stack
+ return if_stack[-1][:] if if_stack else []
+
+def clean_dep(d):
+ d = d.strip()
+ if d.endswith('=y') or d.endswith('=M'):
+ d = d[:-2]
+ elif d.endswith(' != ""'):
+ d = d[:-6]
+ return d
+
+def parse_config(buf):
+ global ind0, ind1, stack, menu_id
+ is_choice = buf[0].strip() == 'choice'
+ is_menu = buf[0].startswith('menu') or is_choice
+ is_nonconfig_menu = buf[0].startswith('menu ') or is_choice
+ key = None if is_nonconfig_menu else buf[0].split()[1].strip()
+ title = buf[0][len('menu '):] if is_nonconfig_menu else None
+ deps = ['menu'] + cur_if()
+ klass = None
+
+ for line in buf[1:]:
+ line = line.strip()
+ if line.startswith('depends on '):
+ new_deps = line[len('depends on '):].split('&&')
+ deps += [clean_dep(x) for x in new_deps]
+ elif line.startswith('prompt'):
+ title = line[len('prompt '):]
+ else:
+ for prefix in ['tristate', 'bool', 'string']:
+ if line.startswith(prefix + ' '):
+ title = line[len(prefix) + 1:]
+ klass = prefix
+ elif line == prefix:
+ klass = prefix
+ elif line.startswith('def_' + prefix + ' '):
+ klass = prefix
+ else:
+ continue
+
+ if '"' in line:
+ tail = line[line.rfind('"') + 1:].strip()
+ if tail[:3] == 'if ':
+ deps += [clean_dep(x) for x in tail[3:].split('&&')]
+
+ pop_stack_while(lambda x: x not in deps)
+
+ menu_id += is_menu
+ internal_key = key or menu_id
+ if stack:
+ fa = stack[-1][0]
+ if fa == 'menu':
+ fa = cur_menu() & ~choice_bit
+ main_dep[internal_key] = fa
+
+ val = known_config.get(key)
+ comment = None
+ forced = None
+
+ if type(val) == dict:
+ comment = val.get('comment')
+ forced = val.get('forced')
+ val = val['value']
+
+ klass = klass or 'string'
+ if title:
+ title = title.strip().lstrip('"')
+ title = title[:title.find('"')]
+
+ if not val:
+ pass
+ elif klass == 'string':
+ val = '(' + val + ')'
+ else:
+ assert((val == 'X') == bool(cur_menu() & choice_bit))
+ if (val == 'X'):
+ val = '(X)'
+ else:
+ val = list(val)
+ val.sort()
+ for c in val:
+ if c not in 'M* ' or (c == 'M' and klass != 'tristate'):
+ raise Exception('unknown setting %s for %s' % (c, key))
+ bracket = None
+ if klass == 'tristate' and forced != '*' :
+ bracket = '{}' if forced else '<>'
+ else:
+ bracket = '--' if forced else '[]'
+
+ val = bracket[0] + '/'.join(val) + bracket[1]
+
+ arrow = ' --->' if is_menu else ''
+ r = [ind0, val, ind1, title, arrow, internal_key, cur_menu(), comment]
+
+ # Don't indent for untitled (internal) entries
+ x = 2 if title else 0
+
+ key = key or 'menu'
+ menu = (menu_id if is_menu else cur_menu())
+ menu |= choice_bit if is_choice else 0
+ stack_ent = (key, 2, 0, menu) if is_menu else (key, 0, x, menu)
+ ind0 += stack_ent[1]
+ ind1 += stack_ent[2]
+ stack += [stack_ent]
+
+ return r
+
+def load_kconfig(file):
+ global ind0, ind1, stack, path, menu_id, if_stack
+ r = []
+ config_buf = []
+ with open(path + file) as f:
+ for line in f:
+ if config_buf:
+ if not (line.startswith('\t') or line.startswith(' ')):
+ r += [parse_config(config_buf)]
+ config_buf = []
+ else:
+ config_buf += [line]
+ continue
+ if line.startswith('source') or line.startswith('\tsource'):
+ sub = expand_var(line.strip().split()[1].strip('"'))
+ r += load_kconfig(sub)
+ elif line.startswith('config') or line.startswith('menu'):
+ config_buf = [line]
+ elif line.startswith('choice'):
+ config_buf = [line]
+ elif line.startswith('endmenu') or line.startswith('endchoice'):
+ pop_stack_while(lambda x: x != 'menu')
+ pop_stack(lambda x: x == 'menu')
+ elif line.startswith('if '):
+ line = line[3:]
+ top = cur_if()
+ top += [x.strip() for x in line.split("&&")]
+ if_stack += [top]
+ elif line.startswith('endif'):
+ if_stack = if_stack[:-1]
+ return r
+
+known_config = {}
+
+def escape(x):
+ return x.replace('<', '&lt;').replace('>', '&gt;')
+
+from sys import argv
+import tomllib
+
+path = argv[1]
+if path[-1] != '/':
+ path += '/'
+with open(argv[2], 'rb') as f:
+ known_config = tomllib.load(f)
+
+r = load_kconfig('Kconfig')
+
+# Refcount all menus
+
+index_ikey = {}
+for i in reversed(range(len(r))):
+ index_ikey[r[i][5]] = i
+
+for i in reversed(range(len(r))):
+ if r[i][1] != None:
+ key = r[i][5]
+ fa = main_dep.get(key)
+ if not fa:
+ continue
+ j = index_ikey[fa]
+ if type(fa) == int or not r[j][3]:
+ # The main dependency is a menu or untitled magic entry,
+ # just mark it used
+ r[j][1] = ''
+ if r[j][1] is None:
+ raise Exception('[%s] needs unselected [%s]' % (key, fa))
+
+r = [i for i in r if i[1] != None and i[3]]
+
+# Now we are going to pretty-print r
+
+## Calculate the maximum value length for each menu
+max_val_len = {}
+for _, val, _, _, _, _, menu, _ in r:
+ x = max_val_len.get(menu) or 0
+ max_val_len[menu] = max(x, len(val))
+
+## Output
+
+max_line = 80
+buf = []
+
+done = [x[5] for x in r] + ['revision']
+for i in known_config:
+ if i not in done:
+ raise Exception("%s seems not exist" % i)
+
+sep = known_config.get('separate_toplevel_menu')
+
+for i0, val, i1, title, arrow, key, menu, comment in r:
+ rem = max_line
+
+ if val:
+ val += (max_val_len[menu] - len(val)) * ' '
+
+ rem -= i0 + i1 + bool(val) + len(val)
+ line = i0 * ' ' + escape(val) + (i1 + bool(val)) * ' '
+
+ rem -= len(arrow)
+
+ if len(title) > rem:
+ title = title[:rem - 3] + '...'
+
+ b = title.lstrip('YyMmNnHh')
+ a = title[:len(title) - len(b)]
+ b0 = "<emphasis role='blue'>" + escape(b[0]) + "</emphasis>"
+ line += escape(a) + b0 + escape(b[1:]) + escape(arrow)
+
+ rem -= len(title)
+
+ key = ' [' + key + ']' if type(key) == str else ''
+
+ if len(key) <= rem:
+ line += (rem - len(key)) * ' ' + key
+ else:
+ key = '... ' + key
+ line += '\n' + ' ' * (max_line - len(key)) + key
+ if type(comment) == str:
+ comment = [comment]
+ if comment:
+ comment = '\n'.join([' ' * i0 + '# ' + line for line in comment])
+ buf += [escape(comment) + ':']
+
+ if not menu and buf:
+ buf += ['']
+
+ buf += [line.rstrip()]
+
+from jinja2 import Template
+
+t = Template('''<?xml version="1.0" encoding="ISO-8859-1"?>
+<!DOCTYPE note PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN"
+ "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd">
+<!-- Automatically generated by kernel-config.py
+ DO NOT EDIT! -->
+<screen role="nodump"{{ rev }}>{{ '\n'.join(buf) }}</screen>''')
+
+rev = known_config.get('revision')
+rev = ' revision="%s"' % rev if rev else ''
+print(t.render(rev = rev, buf = buf))
diff --git a/chapter10/kernel/kernel.version b/chapter10/kernel/kernel.version
new file mode 100644
index 000000000..4b20d9700
--- /dev/null
+++ b/chapter10/kernel/kernel.version
@@ -0,0 +1 @@
+6.4.8
diff --git a/chapter10/kernel/kernel_version.py b/chapter10/kernel/kernel_version.py
new file mode 100755
index 000000000..764bb2d33
--- /dev/null
+++ b/chapter10/kernel/kernel_version.py
@@ -0,0 +1,27 @@
+#!/usr/bin/env python3
+
+def kernel_version(path):
+ version = None
+ patchlevel = None
+ sublevel = None
+
+ with open(path + 'Makefile') as f:
+ for line in f:
+ if line.startswith('VERSION ='):
+ version = line[len('VERSION ='):].strip()
+ elif line.startswith('PATCHLEVEL ='):
+ patchlevel = line[len('PATCHLEVEL ='):].strip()
+ elif line.startswith('SUBLEVEL ='):
+ sublevel = line[len('SUBLEVEL ='):].strip()
+
+ assert(version and patchlevel and sublevel)
+ return '.'.join([version, patchlevel, sublevel])
+
+if __name__ == '__main__':
+ from sys import argv
+
+ path = argv[1]
+ if path[:-1] != '/':
+ path += '/'
+
+ print(kernel_version(path))
diff --git a/chapter10/kernel/nvme.toml b/chapter10/kernel/nvme.toml
new file mode 100644
index 000000000..1e3170fe9
--- /dev/null
+++ b/chapter10/kernel/nvme.toml
@@ -0,0 +1 @@
+BLK_DEV_NVME='*'
diff --git a/chapter10/kernel/nvme.xml b/chapter10/kernel/nvme.xml
new file mode 100644
index 000000000..2b55b7c1d
--- /dev/null
+++ b/chapter10/kernel/nvme.xml
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="ISO-8859-1"?>
+<!DOCTYPE note PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN"
+ "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd">
+<!-- Automatically generated by kernel-config.py
+ DO NOT EDIT! -->
+<screen role="nodump"><emphasis role='blue'>D</emphasis>evice Drivers ---&gt;
+ N<emphasis role='blue'>V</emphasis>ME Support ---&gt;
+ &lt;*&gt; N<emphasis role='blue'>V</emphasis>M Express block device [BLK_DEV_NVME]</screen>
diff --git a/chapter10/kernel/systemd.toml b/chapter10/kernel/systemd.toml
new file mode 100644
index 000000000..26ac61c46
--- /dev/null
+++ b/chapter10/kernel/systemd.toml
@@ -0,0 +1,30 @@
+# This part should be sync with sysv.toml
+WERROR=' '
+PSI='*'
+PSI_DEFAULT_DISABLED=' '
+IKHEADERS=' '
+CGROUPS='*'
+MEMCG='*'
+EXPERT=' '
+RELOCATABLE='*'
+RANDOMIZE_BASE='*'
+STACKPROTECTOR='*'
+STACKPROTECTOR_STRONG='*'
+UEVENT_HELPER=' '
+DEVTMPFS='*'
+DEVTMPFS_MOUNT='*'
+FB='*'
+FRAMEBUFFER_CONSOLE='*'
+
+AUDIT=' '
+NET='*'
+INET='*'
+IPV6='*'
+FW_LOADER=' *'
+FW_LOADER_USER_HELPER=' '
+DMIID='*'
+INOTIFY_USER='*'
+TMPFS='*'
+TMPFS_POSIX_ACL='*'
+
+revision='systemd'
diff --git a/chapter10/kernel/systemd.xml b/chapter10/kernel/systemd.xml
new file mode 100644
index 000000000..6705fdd35
--- /dev/null
+++ b/chapter10/kernel/systemd.xml
@@ -0,0 +1,53 @@
+<?xml version="1.0" encoding="ISO-8859-1"?>
+<!DOCTYPE note PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN"
+ "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd">
+<!-- Automatically generated by kernel-config.py
+ DO NOT EDIT! -->
+<screen role="nodump" revision="systemd"><emphasis role='blue'>G</emphasis>eneral setup ---&gt;
+ [ ] <emphasis role='blue'>C</emphasis>ompile the kernel with warnings as errors [WERROR]
+ [ ] <emphasis role='blue'>A</emphasis>uditing support [AUDIT]
+ <emphasis role='blue'>C</emphasis>PU/Task time and stats accounting ---&gt;
+ [*] <emphasis role='blue'>P</emphasis>ressure stall information tracking [PSI]
+ [ ] <emphasis role='blue'>R</emphasis>equire boot parameter to enable pressure stall information tracking
+ ... [PSI_DEFAULT_DISABLED]
+ &lt; &gt; <emphasis role='blue'>E</emphasis>nable kernel headers through /sys/kernel/kheaders.tar.xz [IKHEADERS]
+ [*] <emphasis role='blue'>C</emphasis>ontrol Group support ---&gt; [CGROUPS]
+ [*] M<emphasis role='blue'>e</emphasis>mory controller [MEMCG]
+ [ ] <emphasis role='blue'>C</emphasis>onfigure standard kernel features (expert users) ---&gt; [EXPERT]
+
+<emphasis role='blue'>P</emphasis>rocessor type and features ---&gt;
+ [*] <emphasis role='blue'>B</emphasis>uild a relocatable kernel [RELOCATABLE]
+ [*] <emphasis role='blue'>R</emphasis>andomize the address of the kernel image (KASLR) [RANDOMIZE_BASE]
+
+<emphasis role='blue'>G</emphasis>eneral architecture-dependent options ---&gt;
+ [*] <emphasis role='blue'>S</emphasis>tack Protector buffer overflow detection [STACKPROTECTOR]
+ [*] <emphasis role='blue'>S</emphasis>trong Stack Protector [STACKPROTECTOR_STRONG]
+
+[*] N<emphasis role='blue'>e</emphasis>tworking support ---&gt; [NET]
+ N<emphasis role='blue'>e</emphasis>tworking options ---&gt;
+ [*] <emphasis role='blue'>T</emphasis>CP/IP networking [INET]
+ &lt;*&gt; <emphasis role='blue'>T</emphasis>he IPv6 protocol ---&gt; [IPV6]
+
+<emphasis role='blue'>D</emphasis>evice Drivers ---&gt;
+ <emphasis role='blue'>G</emphasis>eneric Driver Options ---&gt;
+ [ ] <emphasis role='blue'>S</emphasis>upport for uevent helper [UEVENT_HELPER]
+ [*] M<emphasis role='blue'>a</emphasis>intain a devtmpfs filesystem to mount at /dev [DEVTMPFS]
+ [*] <emphasis role='blue'>A</emphasis>utomount devtmpfs at /dev, after the kernel mounted the rootfs
+ ... [DEVTMPFS_MOUNT]
+ <emphasis role='blue'>F</emphasis>irmware loader ---&gt;
+ &lt; /*&gt; <emphasis role='blue'>F</emphasis>irmware loading facility [FW_LOADER]
+ [ ] <emphasis role='blue'>E</emphasis>nable the firmware sysfs fallback mechanism
+ ... [FW_LOADER_USER_HELPER]
+ <emphasis role='blue'>F</emphasis>irmware Drivers ---&gt;
+ [*] <emphasis role='blue'>E</emphasis>xport DMI identification via sysfs to userspace [DMIID]
+ <emphasis role='blue'>G</emphasis>raphics support ---&gt;
+ <emphasis role='blue'>F</emphasis>rame buffer Devices ---&gt;
+ &lt;*&gt; <emphasis role='blue'>S</emphasis>upport for frame buffer devices ---&gt; [FB]
+ <emphasis role='blue'>C</emphasis>onsole display driver support ---&gt;
+ [*] <emphasis role='blue'>F</emphasis>ramebuffer Console support [FRAMEBUFFER_CONSOLE]
+
+<emphasis role='blue'>F</emphasis>ile systems ---&gt;
+ [*] <emphasis role='blue'>I</emphasis>notify support for userspace [INOTIFY_USER]
+ <emphasis role='blue'>P</emphasis>seudo filesystems ---&gt;
+ [*] <emphasis role='blue'>T</emphasis>mpfs virtual memory file system support (former shm fs) [TMPFS]
+ [*] <emphasis role='blue'>T</emphasis>mpfs POSIX Access Control Lists [TMPFS_POSIX_ACL]</screen>
diff --git a/chapter10/kernel/sysv.toml b/chapter10/kernel/sysv.toml
new file mode 100644
index 000000000..5c8b2df6e
--- /dev/null
+++ b/chapter10/kernel/sysv.toml
@@ -0,0 +1,18 @@
+WERROR=' '
+PSI='*'
+PSI_DEFAULT_DISABLED=' '
+IKHEADERS=' '
+CGROUPS='*'
+MEMCG='*'
+EXPERT=' '
+RELOCATABLE='*'
+RANDOMIZE_BASE='*'
+STACKPROTECTOR='*'
+STACKPROTECTOR_STRONG='*'
+UEVENT_HELPER=' '
+DEVTMPFS='*'
+DEVTMPFS_MOUNT='*'
+FB='*'
+FRAMEBUFFER_CONSOLE='*'
+
+revision='sysv'
diff --git a/chapter10/kernel/sysv.xml b/chapter10/kernel/sysv.xml
new file mode 100644
index 000000000..7e62725e6
--- /dev/null
+++ b/chapter10/kernel/sysv.xml
@@ -0,0 +1,35 @@
+<?xml version="1.0" encoding="ISO-8859-1"?>
+<!DOCTYPE note PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN"
+ "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd">
+<!-- Automatically generated by kernel-config.py
+ DO NOT EDIT! -->
+<screen role="nodump" revision="sysv"><emphasis role='blue'>G</emphasis>eneral setup ---&gt;
+ [ ] <emphasis role='blue'>C</emphasis>ompile the kernel with warnings as errors [WERROR]
+ <emphasis role='blue'>C</emphasis>PU/Task time and stats accounting ---&gt;
+ [*] <emphasis role='blue'>P</emphasis>ressure stall information tracking [PSI]
+ [ ] <emphasis role='blue'>R</emphasis>equire boot parameter to enable pressure stall information tracking
+ ... [PSI_DEFAULT_DISABLED]
+ &lt; &gt; <emphasis role='blue'>E</emphasis>nable kernel headers through /sys/kernel/kheaders.tar.xz [IKHEADERS]
+ [*] <emphasis role='blue'>C</emphasis>ontrol Group support ---&gt; [CGROUPS]
+ [*] M<emphasis role='blue'>e</emphasis>mory controller [MEMCG]
+ [ ] <emphasis role='blue'>C</emphasis>onfigure standard kernel features (expert users) ---&gt; [EXPERT]
+
+<emphasis role='blue'>P</emphasis>rocessor type and features ---&gt;
+ [*] <emphasis role='blue'>B</emphasis>uild a relocatable kernel [RELOCATABLE]
+ [*] <emphasis role='blue'>R</emphasis>andomize the address of the kernel image (KASLR) [RANDOMIZE_BASE]
+
+<emphasis role='blue'>G</emphasis>eneral architecture-dependent options ---&gt;
+ [*] <emphasis role='blue'>S</emphasis>tack Protector buffer overflow detection [STACKPROTECTOR]
+ [*] <emphasis role='blue'>S</emphasis>trong Stack Protector [STACKPROTECTOR_STRONG]
+
+<emphasis role='blue'>D</emphasis>evice Drivers ---&gt;
+ <emphasis role='blue'>G</emphasis>eneric Driver Options ---&gt;
+ [ ] <emphasis role='blue'>S</emphasis>upport for uevent helper [UEVENT_HELPER]
+ [*] M<emphasis role='blue'>a</emphasis>intain a devtmpfs filesystem to mount at /dev [DEVTMPFS]
+ [*] <emphasis role='blue'>A</emphasis>utomount devtmpfs at /dev, after the kernel mounted the rootfs
+ ... [DEVTMPFS_MOUNT]
+ <emphasis role='blue'>G</emphasis>raphics support ---&gt;
+ <emphasis role='blue'>F</emphasis>rame buffer Devices ---&gt;
+ &lt;*&gt; <emphasis role='blue'>S</emphasis>upport for frame buffer devices ---&gt; [FB]
+ <emphasis role='blue'>C</emphasis>onsole display driver support ---&gt;
+ [*] <emphasis role='blue'>F</emphasis>ramebuffer Console support [FRAMEBUFFER_CONSOLE]</screen>
diff --git a/chapter10/kernel/x2apic.toml b/chapter10/kernel/x2apic.toml
new file mode 100644
index 000000000..6f7657b13
--- /dev/null
+++ b/chapter10/kernel/x2apic.toml
@@ -0,0 +1,5 @@
+X86_X2APIC='*'
+PCI='*'
+PCI_MSI='*'
+IOMMU_SUPPORT='*'
+IRQ_REMAP='*'
diff --git a/chapter10/kernel/x2apic.xml b/chapter10/kernel/x2apic.xml
new file mode 100644
index 000000000..9bd2a719f
--- /dev/null
+++ b/chapter10/kernel/x2apic.xml
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="ISO-8859-1"?>
+<!DOCTYPE note PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN"
+ "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd">
+<!-- Automatically generated by kernel-config.py
+ DO NOT EDIT! -->
+<screen role="nodump"><emphasis role='blue'>P</emphasis>rocessor type and features ---&gt;
+ [*] <emphasis role='blue'>S</emphasis>upport x2apic [X86_X2APIC]
+
+<emphasis role='blue'>D</emphasis>evice Drivers ---&gt;
+ [*] <emphasis role='blue'>P</emphasis>CI support ---&gt; [PCI]
+ [*] M<emphasis role='blue'>e</emphasis>ssage Signaled Interrupts (MSI and MSI-X) [PCI_MSI]
+ [*] <emphasis role='blue'>I</emphasis>OMMU Hardware Support ---&gt; [IOMMU_SUPPORT]
+ [*] <emphasis role='blue'>S</emphasis>upport for Interrupt Remapping [IRQ_REMAP]</screen>
diff --git a/chapter11/afterlfs.xml b/chapter11/afterlfs.xml
index 279cc1108..dcd14fed5 100644
--- a/chapter11/afterlfs.xml
+++ b/chapter11/afterlfs.xml
@@ -80,7 +80,7 @@
featured browser and copy/paste capabilities are available. This method
allows using applications like the host's version of wget to download
package sources to a location available when working in the chroot
- envirnment.
+ environment.
</para>
<para>
diff --git a/lfs-latest-git.php b/lfs-latest-git.php
index 140ac6492..f9239e27b 100644
--- a/lfs-latest-git.php
+++ b/lfs-latest-git.php
@@ -124,7 +124,6 @@ if ( $package == "e2fsprogs" ) $dirpath = "https://sourceforge.net/projects/e2f
if ( $package == "expat" ) $dirpath = "https://sourceforge.net/projects/expat/files";
if ( $package == "elfutils" ) $dirpath = "https://sourceware.org/ftp/elfutils";
if ( $package == "expect" ) $dirpath = "https://sourceforge.net/projects/expect/files";
-if ( $package == "eudev" ) $dirpath = github("eudev-project/eudev");
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/";
diff --git a/obfuscate.sh b/obfuscate.sh
index dd2bf24d2..a01cc58b6 100644
--- a/obfuscate.sh
+++ b/obfuscate.sh
@@ -4,7 +4,7 @@
# obfuscate email addresses in XML/HTML
# Script written (and slight perl modification) by Archaic <archaic AT linuxfromscratch D0T org>
# Modified from "sed -i" to old style "sed -e" by Manuel Canales <manuel AT linuxfromscratch D0T org>
-# to prevent hangs on very long files, like nonckunked books.
+# to prevent hangs on very long files, like nonchunked books.
# Original Perl expression by Anderson Lizardo <lizardo AT linuxfromscratch D0T org>
# Released under the GNU General Public License
#
diff --git a/packages.ent b/packages.ent
index 2abb800d1..67ad4012c 100644
--- a/packages.ent
+++ b/packages.ent
@@ -35,7 +35,7 @@
<!ENTITY autoconf-md5 "12cfa1687ffa2606337efe1a64416106">
<!ENTITY autoconf-home "&gnu-software;autoconf/">
<!ENTITY autoconf-fin-du "24 MB">
-<!ENTITY autoconf-fin-sbu-tests "6.2">
+<!ENTITY autoconf-fin-sbu-tests "6.0">
<!ENTITY autoconf-fin-sbu "less than 0.1 SBU (about &autoconf-fin-sbu-tests; SBU with tests)">
<!ENTITY automake-version "1.16.5">
@@ -43,10 +43,9 @@
<!ENTITY automake-size "1,565 KB">
<!ENTITY automake-url "&gnu;automake/automake-&automake-version;.tar.xz">
<!ENTITY automake-md5 "4017e96f89fca45ca946f1c5db6be714">
-<!ENTITY automake-sha256 "80facc09885a57e6d49d06972c0ae1089c5fa8f4d4c7cfe5baea58e5085f136d">
<!ENTITY automake-home "&gnu-software;automake/">
<!ENTITY automake-fin-du "114 MB">
-<!ENTITY automake-fin-sbu "less than 0.1 SBU (about 7.3 SBU with tests)">
+<!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">
@@ -56,27 +55,28 @@
<!ENTITY bash-tmp-du "67 MB">
<!ENTITY bash-tmp-sbu "0.2 SBU">
<!ENTITY bash-fin-du "52 MB">
-<!ENTITY bash-fin-sbu "1.2 SBU">
+<!ENTITY bash-fin-sbu "1.1 SBU">
<!ENTITY bc-version "6.6.0">
<!ENTITY bc-size "455 KB">
<!ENTITY bc-url "https://github.com/gavinhoward/bc/releases/download/&bc-version;/bc-&bc-version;.tar.xz">
<!ENTITY bc-md5 "a148cbaaf8ff813b7289a00539e74a5f">
<!ENTITY bc-home "https://git.gavinhoward.com/gavin/bc">
-<!ENTITY bc-fin-du "7.6 MB">
+<!ENTITY bc-fin-du "7.7 MB">
<!ENTITY bc-fin-sbu "less than 0.1 SBU">
-<!ENTITY binutils-version "2.40">
-<!ENTITY binutils-size "24,650 KB">
+<!ENTITY binutils-version "2.41">
+<!ENTITY binutils-size "26,139 KB">
<!ENTITY binutils-url "https://sourceware.org/pub/binutils/releases/binutils-&binutils-version;.tar.xz">
-<!ENTITY binutils-md5 "007b59bd908a737c06e5a8d3d2c737eb">
+<!ENTITY binutils-md5 "256d7e0ad998e423030c84483a7c1e30">
<!ENTITY binutils-home "&gnu-software;binutils/">
-<!ENTITY binutils-tmpp1-du "639 MB">
+<!ENTITY binutils-tmpp1-du "647 MB">
<!ENTITY binutils-tmpp1-sbu "1 SBU">
-<!ENTITY binutils-tmpp2-du "525 MB">
-<!ENTITY binutils-tmpp2-sbu "0.4 SBU">
-<!ENTITY binutils-fin-du "2.6 GB">
+<!ENTITY binutils-tmpp2-du "523 MB">
+<!ENTITY binutils-tmpp2-sbu "0.5 SBU">
+<!ENTITY binutils-fin-du "2.7 GB">
<!ENTITY binutils-fin-sbu "2.2 SBU">
+<!ENTITY libsframe-version "1.0.0">
<!ENTITY bison-version "3.8.2">
<!ENTITY bison-size "2,752 KB">
@@ -86,7 +86,7 @@
<!ENTITY bison-tmp-du "57 MB">
<!ENTITY bison-tmp-sbu "0.2 SBU">
<!ENTITY bison-fin-du "62 MB">
-<!ENTITY bison-fin-sbu "2.3 SBU">
+<!ENTITY bison-fin-sbu "2.2 SBU">
<!ENTITY bzip2-version "1.0.8">
<!ENTITY bzip2-size "792 KB">
@@ -102,16 +102,16 @@
<!ENTITY check-md5 "50fcafcecde5a380415b12e9c574e0b2">
<!ENTITY check-home "https://libcheck.github.io/check">
<!ENTITY check-fin-du "12 MB">
-<!ENTITY check-fin-sbu "0.1 SBU (about 1.7 SBU with tests)">
+<!ENTITY check-fin-sbu "0.1 SBU (about 1.6 SBU with tests)">
<!ENTITY coreutils-version "9.3">
<!ENTITY coreutils-size "5,673 KB">
<!ENTITY coreutils-url "&gnu;coreutils/coreutils-&coreutils-version;.tar.xz">
<!ENTITY coreutils-md5 "040b4b7acaf89499834bfc79609af29f">
<!ENTITY coreutils-home "&gnu-software;coreutils/">
-<!ENTITY coreutils-tmp-du "162 MB">
+<!ENTITY coreutils-tmp-du "168 MB">
<!ENTITY coreutils-tmp-sbu "0.3 SBU">
-<!ENTITY coreutils-fin-du "156 MB">
+<!ENTITY coreutils-fin-du "165 MB">
<!ENTITY coreutils-fin-sbu "0.9 SBU">
<!ENTITY dbus-version "1.14.8">
@@ -119,7 +119,7 @@
<!ENTITY dbus-url "https://dbus.freedesktop.org/releases/dbus/dbus-&dbus-version;.tar.xz">
<!ENTITY dbus-md5 "da42f55aeec51b355587bc3062fc2d41">
<!ENTITY dbus-home "https://www.freedesktop.org/wiki/Software/dbus">
-<!ENTITY dbus-fin-du "19 MB">
+<!ENTITY dbus-fin-du "20 MB">
<!ENTITY dbus-fin-sbu "0.1 SBU">
<!ENTITY dejagnu-version "1.6.3">
@@ -128,16 +128,16 @@
<!ENTITY dejagnu-md5 "68c5208c58236eba447d7d6d1326b821">
<!ENTITY dejagnu-home "&gnu-software;dejagnu/">
<!ENTITY dejagnu-tmp-du "6.9 MB">
-<!ENTITY dejagnu-tmp-sbu "0.1 SBU">
+<!ENTITY dejagnu-tmp-sbu "less than 0.1 SBU">
<!ENTITY diffutils-version "3.10">
<!ENTITY diffutils-size "1,587 KB">
<!ENTITY diffutils-url "&gnu;diffutils/diffutils-&diffutils-version;.tar.xz">
<!ENTITY diffutils-md5 "2745c50f6f4e395e7b7d52f902d075bf">
<!ENTITY diffutils-home "&gnu-software;diffutils/">
-<!ENTITY diffutils-tmp-du "26 MB">
-<!ENTITY diffutils-tmp-sbu "0.2 SBU">
-<!ENTITY diffutils-fin-du "35 MB">
+<!ENTITY diffutils-tmp-du "29 MB">
+<!ENTITY diffutils-tmp-sbu "0.1 SBU">
+<!ENTITY diffutils-fin-du "36 MB">
<!ENTITY diffutils-fin-sbu "0.3 SBU">
<!ENTITY e2fsprogs-version "1.47.0">
@@ -146,23 +146,16 @@
<!ENTITY e2fsprogs-md5 "6b4f18a33873623041857b4963641ee9">
<!ENTITY e2fsprogs-home "http://e2fsprogs.sourceforge.net/">
<!ENTITY e2fsprogs-fin-du "95 MB">
-<!ENTITY e2fsprogs-fin-sbu "2.4 SBU on a spinning disk, 0.4 SBU on an SSD">
+<!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-url "https://sourceware.org/ftp/elfutils/&elfutils-version;/elfutils-&elfutils-version;.tar.bz2">
<!ENTITY elfutils-md5 "5cfaa711a90cb670406cd495aeaa6030">
<!ENTITY elfutils-home "https://sourceware.org/elfutils/">
-<!ENTITY elfutils-fin-du "120 MB">
+<!ENTITY elfutils-fin-du "122 MB">
<!ENTITY elfutils-fin-sbu "0.3 SBU">
-<!ENTITY eudev-version "3.2.12">
-<!ENTITY eudev-size "2,145 KB">
-<!ENTITY eudev-url "https://github.com/eudev-project/eudev/releases/download/v&eudev-version;/eudev-&eudev-version;.tar.gz">
-<!ENTITY eudev-md5 "6f1559ca7c27013ff68816e2732498a3">
-<!ENTITY eudev-fin-du "83 MB">
-<!ENTITY eudev-fin-sbu "0.1 SBU">
-
<!ENTITY expat-version "2.5.0">
<!ENTITY expat-size "450 KB">
<!ENTITY expat-url "&sourceforge;expat/expat-&expat-version;.tar.xz">
@@ -179,15 +172,15 @@
<!ENTITY expect-tmp-du "3.9 MB">
<!ENTITY expect-tmp-sbu "0.2 SBU">
-<!ENTITY file-version "5.44">
-<!ENTITY file-size "1,159 KB">
+<!ENTITY file-version "5.45">
+<!ENTITY file-size "1,218 KB">
<!ENTITY file-url "https://astron.com/pub/file/file-&file-version;.tar.gz">
-<!ENTITY file-md5 "a60d586d49d015d842b9294864a89c7a">
+<!ENTITY file-md5 "26b2a96d4e3a8938827a1e572afd527a">
<!ENTITY file-home "https://www.darwinsys.com/file/">
-<!ENTITY file-tmp-du "36 MB">
+<!ENTITY file-tmp-du "37 MB">
<!ENTITY file-tmp-sbu "0.1 SBU">
-<!ENTITY file-fin-du "16 MB">
-<!ENTITY file-fin-sbu "0.1 SBU">
+<!ENTITY file-fin-du "17 MB">
+<!ENTITY file-fin-sbu "less than 0.1 SBU">
<!ENTITY findutils-version "4.9.0">
<!ENTITY findutils-size "1,999 KB">
@@ -195,7 +188,7 @@
<!ENTITY findutils-md5 "4a4a547e888a944b2f3af31d789a1137">
<!ENTITY findutils-home "&gnu-software;findutils/">
<!ENTITY findutils-tmp-du "42 MB">
-<!ENTITY findutils-tmp-sbu "0.2 SBU">
+<!ENTITY findutils-tmp-sbu "0.1 SBU">
<!ENTITY findutils-fin-du "51 MB">
<!ENTITY findutils-fin-sbu "0.4 SBU">
@@ -212,7 +205,7 @@
<!ENTITY flit-core-url "&pypi-src;/f/flit-core/flit_core-&flit-core-version;.tar.gz">
<!ENTITY flit-core-md5 "3bc52f1952b9a78361114147da63c35b">
<!ENTITY flit-core-home "&pypi-home;/flit-core/">
-<!ENTITY flit-core-fin-du "736 KB">
+<!ENTITY flit-core-fin-du "1.7 MB">
<!ENTITY flit-core-fin-sbu "less than 0.1 SBU">
<!ENTITY gawk-version "5.2.2">
@@ -220,25 +213,25 @@
<!ENTITY gawk-url "&gnu;gawk/gawk-&gawk-version;.tar.xz">
<!ENTITY gawk-md5 "d63b4de2c722cbd9b8cc8e6f14d78a1e">
<!ENTITY gawk-home "&gnu-software;gawk/">
-<!ENTITY gawk-tmp-du "47 MB">
+<!ENTITY gawk-tmp-du "48 MB">
<!ENTITY gawk-tmp-sbu "0.1 SBU">
-<!ENTITY gawk-fin-du "43 MB">
-<!ENTITY gawk-fin-sbu "0.2 SBU">
+<!ENTITY gawk-fin-du "46 MB">
+<!ENTITY gawk-fin-sbu "0.1 SBU">
-<!ENTITY gcc-version "13.1.0">
-<!ENTITY gcc-size "85,402 KB">
+<!ENTITY gcc-version "13.2.0">
+<!ENTITY gcc-size "85,800 KB">
<!ENTITY gcc-url "&gnu;gcc/gcc-&gcc-version;/gcc-&gcc-version;.tar.xz">
-<!ENTITY gcc-md5 "43e4de77f2218c83ca675257ea1af9ef">
+<!ENTITY gcc-md5 "e0e48554cc6e4f261d55ddee9ab69075">
<!ENTITY gcc-sha256 "">
<!ENTITY gcc-home "https://gcc.gnu.org/">
-<!ENTITY gcc-tmpp1-du "3.8 GB">
-<!ENTITY gcc-tmpp1-sbu "3.3 SBU">
-<!ENTITY gcc-tmpp2-du "4.7 GB">
-<!ENTITY gcc-tmpp2-sbu "4.6 SBU">
-<!ENTITY gcc-fin-du "5.1 GB ">
-<!ENTITY gcc-fin-sbu "43 SBU (with tests)">
+<!ENTITY gcc-tmpp1-du "4.2 GB">
+<!ENTITY gcc-tmpp1-sbu "3.5 SBU">
+<!ENTITY gcc-tmpp2-du "4.8 GB">
+<!ENTITY gcc-tmpp2-sbu "4.3 SBU">
+<!ENTITY gcc-fin-du "5.5 GB ">
+<!ENTITY gcc-fin-sbu "42 SBU (with tests)">
<!ENTITY libquadmath-version "0.0.0">
-<!ENTITY libstdcpp-version "6.0.31">
+<!ENTITY libstdcpp-version "6.0.32">
<!ENTITY libitm-version "1.0.0">
<!ENTITY libatomic-version "1.2.0">
@@ -258,27 +251,27 @@
<!ENTITY gettext-url "&gnu;gettext/gettext-&gettext-version;.tar.xz">
<!ENTITY gettext-md5 "db2f3daf34fd5b85ab1a56f9033e42d1">
<!ENTITY gettext-home "&gnu-software;gettext/">
-<!ENTITY gettext-tmp-du "287 MB">
-<!ENTITY gettext-tmp-sbu "1.0 SBU">
-<!ENTITY gettext-fin-du "241 MB">
-<!ENTITY gettext-fin-sbu "1.3 SBU">
+<!ENTITY gettext-tmp-du "306 MB">
+<!ENTITY gettext-tmp-sbu "1.1 SBU">
+<!ENTITY gettext-fin-du "250 MB">
+<!ENTITY gettext-fin-sbu "1.4 SBU">
-<!ENTITY glibc-version "2.37">
-<!ENTITY glibc-size "18,244 KB">
+<!ENTITY glibc-version "2.38">
+<!ENTITY glibc-size "18,471 KB">
<!ENTITY glibc-url "&gnu;glibc/glibc-&glibc-version;.tar.xz">
-<!ENTITY glibc-md5 "e89cf3dcb64939d29f04b4ceead5cc4e">
+<!ENTITY glibc-md5 "778cce0ea6bf7f84ca8caacf4a01f45b">
<!ENTITY glibc-home "&gnu-software;libc/">
-<!ENTITY glibc-tmp-du "822 MB">
-<!ENTITY glibc-tmp-sbu "1.5 SBU">
-<!ENTITY glibc-fin-du "2.9 GB">
+<!ENTITY glibc-tmp-du "858 MB">
+<!ENTITY glibc-tmp-sbu "1.6 SBU">
+<!ENTITY glibc-fin-du "3.0 GB">
<!ENTITY glibc-fin-sbu "11 SBU">
-<!ENTITY gmp-version "6.2.1">
-<!ENTITY gmp-size "1,980 KB">
+<!ENTITY gmp-version "6.3.0">
+<!ENTITY gmp-size "2,046 KB">
<!ENTITY gmp-url "&gnu;gmp/gmp-&gmp-version;.tar.xz">
-<!ENTITY gmp-md5 "0b82665c4a92fd2ade7440c13fcaa42b">
+<!ENTITY gmp-md5 "956dc04e864001a9c22429f761f2c283">
<!ENTITY gmp-home "&gnu-software;gmp/">
-<!ENTITY gmp-fin-du "52 MB">
+<!ENTITY gmp-fin-du "54 MB">
<!ENTITY gmp-fin-sbu "0.3 SBU">
<!ENTITY gperf-version "3.1">
@@ -294,9 +287,9 @@
<!ENTITY grep-url "&gnu;grep/grep-&grep-version;.tar.xz">
<!ENTITY grep-md5 "7c9bbd74492131245f7cdb291fa142c0">
<!ENTITY grep-home "&gnu-software;grep/">
-<!ENTITY grep-tmp-du "25 MB">
-<!ENTITY grep-tmp-sbu "0.2 SBU">
-<!ENTITY grep-fin-du "37 MB">
+<!ENTITY grep-tmp-du "27 MB">
+<!ENTITY grep-tmp-sbu "0.1 SBU">
+<!ENTITY grep-fin-du "39 MB">
<!ENTITY grep-fin-sbu "0.4 SBU">
<!ENTITY groff-version "1.23.0">
@@ -304,7 +297,7 @@
<!ENTITY groff-url "&gnu;groff/groff-&groff-version;.tar.gz">
<!ENTITY groff-md5 "5e4f40315a22bb8a158748e7d5094c7d">
<!ENTITY groff-home "&gnu-software;groff/">
-<!ENTITY groff-fin-du "89 MB">
+<!ENTITY groff-fin-du "107 MB">
<!ENTITY groff-fin-sbu "0.2 SBU">
<!ENTITY grub-version "2.06">
@@ -325,10 +318,10 @@
<!ENTITY gzip-fin-du "21 MB">
<!ENTITY gzip-fin-sbu "0.3 SBU">
-<!ENTITY iana-etc-version "20230629">
+<!ENTITY iana-etc-version "20230810">
<!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 "8c2e8385391306edbf4ca26ed4930a71">
+<!ENTITY iana-etc-md5 "0502bd41cc0bf1c1c3cd8651058b9650">
<!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">
@@ -382,15 +375,15 @@
<!ENTITY kmod-fin-du "12 MB">
<!ENTITY kmod-fin-sbu "less than 0.1 SBU">
-<!ENTITY less-version "633">
-<!ENTITY less-size "368 KB">
+<!ENTITY less-version "643">
+<!ENTITY less-size "579 KB">
<!ENTITY less-url "https://www.greenwoodsoftware.com/less/less-&less-version;.tar.gz">
-<!ENTITY less-md5 "35cc7734e9e6224388ab7b9a214da4da">
+<!ENTITY less-md5 "cf05e2546a3729492b944b4874dd43dd">
<!ENTITY less-home "https://www.greenwoodsoftware.com/less/">
-<!ENTITY less-fin-du "4.3 MB">
+<!ENTITY less-fin-du "12 MB">
<!ENTITY less-fin-sbu "less than 0.1 SBU">
-<!ENTITY lfs-bootscripts-version "20230101"> <!-- Scripts depend on this format -->
+<!ENTITY lfs-bootscripts-version "20230728"> <!-- Scripts depend on this format -->
<!ENTITY lfs-bootscripts-size "BOOTSCRIPTS-SIZE KB">
<!ENTITY lfs-bootscripts-url "&downloads-root;lfs-bootscripts-&lfs-bootscripts-version;.tar.xz">
<!ENTITY lfs-bootscripts-md5 "BOOTSCRIPTS-MD5SUM">
@@ -427,25 +420,25 @@
<!ENTITY libtool-url "&gnu;libtool/libtool-&libtool-version;.tar.xz">
<!ENTITY libtool-md5 "2fc0b6ddcd66a89ed6e45db28fa44232">
<!ENTITY libtool-home "&gnu-software;libtool/">
-<!ENTITY libtool-fin-du "44 MB">
-<!ENTITY libtool-fin-sbu "1.4 SBU">
+<!ENTITY libtool-fin-du "45 MB">
+<!ENTITY libtool-fin-sbu "1.3 SBU">
<!ENTITY libxcrypt-version "4.4.36">
<!ENTITY libxcrypt-size "610 KB">
<!ENTITY libxcrypt-url "&github;/besser82/libxcrypt/releases/download/v&libxcrypt-version;/libxcrypt-&libxcrypt-version;.tar.xz">
<!ENTITY libxcrypt-md5 "b84cd4104e08c975063ec6c4d0372446">
<!ENTITY libxcrypt-home "&github;/besser82/libxcrypt/">
-<!ENTITY libxcrypt-fin-du "16 MB">
+<!ENTITY libxcrypt-fin-du "15 MB">
<!ENTITY libxcrypt-fin-sbu "0.1 SBU">
<!ENTITY linux-major-version "6">
<!ENTITY linux-minor-version "4">
-<!ENTITY linux-patch-version "3">
+<!ENTITY linux-patch-version "12">
<!--<!ENTITY linux-version "&linux-major-version;.&linux-minor-version;">-->
<!ENTITY linux-version "&linux-major-version;.&linux-minor-version;.&linux-patch-version;">
-<!ENTITY linux-size "134,557 KB">
+<!ENTITY linux-size "134,616 KB">
<!ENTITY linux-url "&kernel;linux/kernel/v&linux-major-version;.x/linux-&linux-version;.tar.xz">
-<!ENTITY linux-md5 "c83363136e61977c63d655733424d37a">
+<!ENTITY linux-md5 "24570ba0ef9dd592bd640a1a41686fac">
<!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,
@@ -484,12 +477,12 @@
<!ENTITY man-db-fin-du "40 MB">
<!ENTITY man-db-fin-sbu "0.2 SBU">
-<!ENTITY man-pages-version "6.04">
-<!ENTITY man-pages-size "2,137 KB">
+<!ENTITY man-pages-version "6.05.01">
+<!ENTITY man-pages-size "2,144 KB">
<!ENTITY man-pages-url "&kernel;linux/docs/man-pages/man-pages-&man-pages-version;.tar.xz">
-<!ENTITY man-pages-md5 "bbce1456edfa75a66c189cc594af6c4d">
+<!ENTITY man-pages-md5 "de4563b797cf9b1e0b0d73628b35e442">
<!ENTITY man-pages-home "https://www.kernel.org/doc/man-pages/">
-<!ENTITY man-pages-fin-du "32 MB">
+<!ENTITY man-pages-fin-du "33 MB">
<!ENTITY man-pages-fin-sbu "less than 0.1 SBU">
<!ENTITY markupsafe-version "2.1.3">
@@ -497,15 +490,15 @@
<!ENTITY markupsafe-url "&pypi-src;/M/MarkupSafe/MarkupSafe-&markupsafe-version;.tar.gz">
<!ENTITY markupsafe-md5 "ca33f119bd0551ce15837f58bb180214">
<!ENTITY markupsafe-home "https://palletsprojects.com/p/markupsafe/">
-<!ENTITY markupsafe-fin-du "544 KB">
+<!ENTITY markupsafe-fin-du "548 KB">
<!ENTITY markupsafe-fin-sbu "less than 0.1 SBU">
-<!ENTITY meson-version "1.1.1">
-<!ENTITY meson-size "2,076 KB">
+<!ENTITY meson-version "1.2.1">
+<!ENTITY meson-size "2,131 KB">
<!ENTITY meson-url "&github;/mesonbuild/meson/releases/download/&meson-version;/meson-&meson-version;.tar.gz">
-<!ENTITY meson-md5 "0f810b31b26156989ac9321fa2063a04">
+<!ENTITY meson-md5 "e3cc846536189aacd7d01858a45ca9af">
<!ENTITY meson-home "https://mesonbuild.com">
-<!ENTITY meson-fin-du "41 MB">
+<!ENTITY meson-fin-du "42 MB">
<!ENTITY meson-fin-sbu "less than 0.1 SBU">
<!ENTITY mpc-version "1.3.1">
@@ -539,16 +532,16 @@
<!ENTITY ninja-url "&github;/ninja-build/ninja/archive/v&ninja-version;/ninja-&ninja-version;.tar.gz">
<!ENTITY ninja-md5 "32151c08211d7ca3c1d832064f6939b0">
<!ENTITY ninja-home "https://ninja-build.org/">
-<!ENTITY ninja-fin-du "77 MB">
+<!ENTITY ninja-fin-du "75 MB">
<!ENTITY ninja-fin-sbu "0.3 SBU">
-<!ENTITY openssl-version "3.1.1">
-<!ENTITY openssl-size "15,181 KB">
+<!ENTITY openssl-version "3.1.2">
+<!ENTITY openssl-size "15,196 KB">
<!ENTITY openssl-url "https://www.openssl.org/source/openssl-&openssl-version;.tar.gz">
-<!ENTITY openssl-md5 "1864b75e31fb4a6e0a07fd832529add3">
+<!ENTITY openssl-md5 "1d7861f969505e67b8677e205afd9ff4">
<!ENTITY openssl-home "https://www.openssl.org/">
-<!ENTITY openssl-fin-du "520 MB">
-<!ENTITY openssl-fin-sbu "3.2 SBU">
+<!ENTITY openssl-fin-du "587 MB">
+<!ENTITY openssl-fin-sbu "3.0 SBU">
<!ENTITY patch-version "2.7.6">
<!ENTITY patch-size "766 KB">
@@ -569,17 +562,17 @@
<!ENTITY perl-url "https://www.cpan.org/src/5.0/perl-&perl-version;.tar.xz">
<!ENTITY perl-md5 "e1c8aaec897dd386c741f97eef9f2e87">
<!ENTITY perl-home "https://www.perl.org/">
-<!ENTITY perl-tmp-du "281 MB">
+<!ENTITY perl-tmp-du "280 MB">
<!ENTITY perl-tmp-sbu "0.6 SBU">
-<!ENTITY perl-fin-du "234 MB">
-<!ENTITY perl-fin-sbu "7.9 SBU">
+<!ENTITY perl-fin-du "239 MB">
+<!ENTITY perl-fin-sbu "7.1 SBU">
-<!ENTITY pkgconf-version "1.9.5">
+<!ENTITY pkgconf-version "2.0.1">
<!ENTITY pkgconf-size "304 KB">
<!ENTITY pkgconf-url "https://distfiles.ariadne.space/pkgconf/pkgconf-&pkgconf-version;.tar.xz">
-<!ENTITY pkgconf-md5 "0a8b69723bef4ebad83e9c8b43a75cc7">
+<!ENTITY pkgconf-md5 "efc1318f368bb592aba6ebb18d9ff254">
<!ENTITY pkgconf-home "http://pkgconf.org/">
-<!ENTITY pkgconf-fin-du "8.1 MB">
+<!ENTITY pkgconf-fin-du "4.6 MB">
<!ENTITY pkgconf-fin-sbu "less than 0.1 SBU">
<!ENTITY procps-ng-version "4.0.3">
@@ -587,7 +580,7 @@
<!ENTITY procps-ng-url "https://sourceforge.net/projects/procps-ng/files/Production/procps-ng-&procps-ng-version;.tar.xz">
<!ENTITY procps-ng-md5 "22b287bcd758831cbaf3356cd3054fe7">
<!ENTITY procps-ng-home "https://sourceforge.net/projects/procps-ng">
-<!ENTITY procps-ng-fin-du "26 MB">
+<!ENTITY procps-ng-fin-du "25 MB">
<!ENTITY procps-ng-fin-sbu "0.1 SBU">
<!ENTITY psmisc-version "23.6">
@@ -595,7 +588,7 @@
<!ENTITY psmisc-url "https://sourceforge.net/projects/psmisc/files/psmisc/psmisc-&psmisc-version;.tar.xz">
<!ENTITY psmisc-md5 "ed3206da1184ce9e82d607dc56c52633">
<!ENTITY psmisc-home "https://gitlab.com/psmisc/psmisc">
-<!ENTITY psmisc-fin-du "6.5 MB">
+<!ENTITY psmisc-fin-du "6.6 MB">
<!ENTITY psmisc-fin-sbu "less than 0.1 SBU">
<!-- If python minor version changes, updates in python and
@@ -607,10 +600,10 @@
<!ENTITY python-url "https://www.python.org/ftp/python/&python-version;/Python-&python-version;.tar.xz">
<!ENTITY python-md5 "fb7f7eae520285788449d569e45b6718">
<!ENTITY python-home "https://www.python.org/">
-<!ENTITY python-tmp-du "529 MB">
+<!ENTITY python-tmp-du "533 MB">
<!ENTITY python-tmp-sbu "0.4 SBU">
-<!ENTITY python-fin-du "372 MB">
-<!ENTITY python-fin-sbu "2.0 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 "cdce7b1189bcf52947f3b434ab04d7e2">
<!ENTITY python-docs-size "7,649 KB">
@@ -629,9 +622,9 @@
<!ENTITY sed-url "&gnu;sed/sed-&sed-version;.tar.xz">
<!ENTITY sed-md5 "6aac9b2dbafcd5b7a67a8a9bcb8036c3">
<!ENTITY sed-home "&gnu-software;sed/">
-<!ENTITY sed-tmp-du "19 MB">
-<!ENTITY sed-tmp-sbu "0.2 SBU">
-<!ENTITY sed-fin-du "31 MB">
+<!ENTITY sed-tmp-du "21 MB">
+<!ENTITY sed-tmp-sbu "0.1 SBU">
+<!ENTITY sed-fin-du "30 MB">
<!ENTITY sed-fin-sbu "0.3 SBU">
<!ENTITY shadow-version "4.13">
@@ -647,24 +640,24 @@
<!ENTITY sysklogd-url "https://www.infodrom.org/projects/sysklogd/download/sysklogd-&sysklogd-version;.tar.gz">
<!ENTITY sysklogd-md5 "c70599ab0d037fde724f7210c2c8d7f8">
<!ENTITY sysklogd-home "https://www.infodrom.org/projects/sysklogd/">
-<!ENTITY sysklogd-fin-du "0.7 MB">
+<!ENTITY sysklogd-fin-du "680 KB">
<!ENTITY sysklogd-fin-sbu "less than 0.1 SBU">
-<!ENTITY systemd-version "253">
+<!ENTITY systemd-version "254">
<!--<!ENTITY systemd-stable "6b4878d">-->
<!-- The above entity is used whenever we move to a stable backport branch. In the event of a critical problem or kernel
change that is incompatible, we will switch to the backport branch until the next stable release. -->
-<!ENTITY systemd-size "11,708 KB">
+<!ENTITY systemd-size "13,985 KB">
<!ENTITY systemd-url "&github;/systemd/systemd/archive/v&systemd-version;/systemd-&systemd-version;.tar.gz">
<!--<!ENTITY systemd-url "&anduin-sources;/systemd-&systemd-version;-&systemd-stable;.tar.xz">-->
-<!ENTITY systemd-md5 "7cf12ee8a91a04306fc6cf290eed42e8">
+<!ENTITY systemd-md5 "0d266e5361dc72097b6c18cfde1c0001">
<!ENTITY systemd-home "https://www.freedesktop.org/wiki/Software/systemd/">
-<!ENTITY systemd-man-version "253">
-<!ENTITY systemd-man-size "600 KB">
+<!ENTITY systemd-man-version "254">
+<!ENTITY systemd-man-size "626 KB">
<!--<!ENTITY systemd-man-url "&anduin-sources;/systemd-man-pages-&systemd-version;-&systemd-stable;.tar.xz">-->
<!ENTITY systemd-man-url "&anduin-sources;/systemd-man-pages-&systemd-man-version;.tar.xz">
-<!ENTITY systemd-man-md5 "8b54792c9433fc8db8e5d10db326802d">
-<!ENTITY systemd-fin-du "258 MB">
+<!ENTITY systemd-man-md5 "fc32faeac581e1890ca27fcea3858410">
+<!ENTITY systemd-fin-du "238 MB">
<!ENTITY systemd-fin-sbu "0.7 SBU">
<!ENTITY sysvinit-version "3.07">
@@ -672,18 +665,18 @@
<!ENTITY sysvinit-url "&github;/slicer69/sysvinit/releases/download/&sysvinit-version;/sysvinit-&sysvinit-version;.tar.xz">
<!ENTITY sysvinit-md5 "190398c660af29c97d892126d2a95e28">
<!ENTITY sysvinit-home "&savannah-nongnu;/projects/sysvinit">
-<!ENTITY sysvinit-fin-du "4.4 MB">
+<!ENTITY sysvinit-fin-du "4.5 MB">
<!ENTITY sysvinit-fin-sbu "less than 0.1 SBU">
-<!ENTITY tar-version "1.34">
-<!ENTITY tar-size "2,174 KB">
+<!ENTITY tar-version "1.35">
+<!ENTITY tar-size "2,263 KB">
<!ENTITY tar-url "&gnu;tar/tar-&tar-version;.tar.xz">
-<!ENTITY tar-md5 "9a08d29a9ac4727130b5708347c0f5cf">
+<!ENTITY tar-md5 "a2d8042658cfd8ea939e6d911eaf4152">
<!ENTITY tar-home "&gnu-software;tar/">
-<!ENTITY tar-tmp-du "38 MB">
+<!ENTITY tar-tmp-du "42 MB">
<!ENTITY tar-tmp-sbu "0.1 SBU">
-<!ENTITY tar-fin-du "40 MB">
-<!ENTITY tar-fin-sbu "1.5 SBU">
+<!ENTITY tar-fin-du "43 MB">
+<!ENTITY tar-fin-sbu "1.7 SBU">
<!ENTITY tcl-version "8.6.13">
<!ENTITY tcl-major-version "8.6">
@@ -703,7 +696,7 @@
<!ENTITY texinfo-md5 "37bf94fd255729a14d4ea3dda119f81a">
<!ENTITY texinfo-home "&gnu-software;texinfo/">
<!ENTITY texinfo-tmp-du "116 MB">
-<!ENTITY texinfo-tmp-sbu "0.2 SBU">
+<!ENTITY texinfo-tmp-sbu "0.1 SBU">
<!ENTITY texinfo-fin-du "128 MB">
<!ENTITY texinfo-fin-sbu "0.3 SBU">
@@ -713,10 +706,13 @@
<!ENTITY tzdata-md5 "5aa672bf129b44dd915f8232de38e49a">
<!ENTITY tzdata-home "https://www.iana.org/time-zones">
-<!ENTITY udev-lfs-version "udev-lfs-20171102">
-<!ENTITY udev-lfs-size "11 KB">
+<!ENTITY udev-fin-du "138 MB">
+<!ENTITY udev-fin-sbu "0.2 SBU">
+
+<!ENTITY udev-lfs-version "udev-lfs-20230818">
+<!ENTITY udev-lfs-size "10 KB">
<!ENTITY udev-lfs-url "&anduin-sources;/&udev-lfs-version;.tar.xz">
-<!ENTITY udev-lfs-md5 "27cd82f9a61422e186b9d6759ddf1634">
+<!ENTITY udev-lfs-md5 "acd4360d8a5c3ef320b9db88d275dae6">
<!ENTITY udev-lfs-home " ">
<!ENTITY util-linux-minor "2.39">
@@ -725,28 +721,28 @@
<!ENTITY util-linux-url "&kernel;linux/utils/util-linux/v&util-linux-minor;/util-linux-&util-linux-version;.tar.xz">
<!ENTITY util-linux-md5 "c542cd7c0726254e4b3006a9b428201a">
<!ENTITY util-linux-home "https://git.kernel.org/pub/scm/utils/util-linux/util-linux.git/">
-<!ENTITY util-linux-tmp-du "150 MB">
+<!ENTITY util-linux-tmp-du "169 MB">
<!ENTITY util-linux-tmp-sbu "0.2 SBU">
-<!ENTITY util-linux-fin-du "283 MB">
+<!ENTITY util-linux-fin-du "310 MB">
<!ENTITY util-linux-fin-sbu "0.5 SBU">
-<!ENTITY vim-version "9.0.1671">
+<!ENTITY vim-version "9.0.1677">
<!-- <!ENTITY vim-majmin "90"> -->
<!ENTITY vim-docdir "vim/vim90">
-<!ENTITY vim-size "16,669 KB">
+<!ENTITY vim-size "16,670 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 "243fce49db0dd93af7c2b12163f47fcf">
+<!ENTITY vim-md5 "65e6b09ef0628a2d8eba79f1d1d5a564">
<!ENTITY vim-home "https://www.vim.org">
-<!ENTITY vim-fin-du "235 MB">
-<!ENTITY vim-fin-sbu "2.4 SBU">
+<!ENTITY vim-fin-du "229 MB">
+<!ENTITY vim-fin-sbu "2.3 SBU">
-<!ENTITY wheel-version "0.40.0">
+<!ENTITY wheel-version "0.41.1">
<!ENTITY wheel-size "96 KB">
<!ENTITY wheel-url "&pypi-src;/w/wheel/wheel-&wheel-version;.tar.gz">
-<!ENTITY wheel-md5 "ec5004c46d1905da98bb5bc1a10ddd21">
+<!ENTITY wheel-md5 "181cb3f4d8ed340c904a0e1c416d341d">
<!ENTITY wheel-home "&pypi-home;/wheel/">
-<!ENTITY wheel-fin-du "1.3 MB">
+<!ENTITY wheel-fin-du "1.5 MB">
<!ENTITY wheel-fin-sbu "less than 0.1 SBU">
<!ENTITY xml-parser-version "2.46">
@@ -757,19 +753,19 @@
<!ENTITY xml-parser-fin-du "2.3 MB">
<!ENTITY xml-parser-fin-sbu "less than 0.1 SBU">
-<!ENTITY xz-version "5.4.3">
-<!ENTITY xz-size "1,628 KB">
+<!ENTITY xz-version "5.4.4">
+<!ENTITY xz-size "1,623 KB">
<!ENTITY xz-url "https://tukaani.org/xz/xz-&xz-version;.tar.xz">
-<!ENTITY xz-md5 "0bc7220eab3cc37018e0f1965b6ce75a">
+<!ENTITY xz-md5 "d83d6f64a64f88759e312b8a38c3add6">
<!ENTITY xz-home "https://tukaani.org/xz">
-<!ENTITY xz-tmp-du "20 MB">
+<!ENTITY xz-tmp-du "22 MB">
<!ENTITY xz-tmp-sbu "0.1 SBU">
-<!ENTITY xz-fin-du "21 MB">
+<!ENTITY xz-fin-du "24 MB">
<!ENTITY xz-fin-sbu "0.1 SBU">
<!ENTITY zlib-version "1.2.13">
<!ENTITY zlib-size "1267 KB">
-<!ENTITY zlib-url "https://zlib.net/zlib-&zlib-version;.tar.xz">
+<!ENTITY zlib-url "&anduin-sources;/zlib-&zlib-version;.tar.xz">
<!ENTITY zlib-md5 "7d9fc1d78ae2fa3e84fe98b77d006c63">
<!ENTITY zlib-home "https://www.zlib.net/">
<!ENTITY zlib-fin-du "6.2 MB">
@@ -780,6 +776,6 @@
<!ENTITY zstd-url "https://github.com/facebook/zstd/releases/download/v&zstd-version;/zstd-&zstd-version;.tar.gz">
<!ENTITY zstd-md5 "63251602329a106220e0a5ad26ba656f">
<!ENTITY zstd-home "https://facebook.github.io/zstd/">
-<!ENTITY zstd-fin-du "75 MB">
+<!ENTITY zstd-fin-du "77 MB">
<!ENTITY zstd-fin-sbu "0.4 SBU">
diff --git a/patches.ent b/patches.ent
index c9d483de5..c3b6dfb18 100644
--- a/patches.ent
+++ b/patches.ent
@@ -50,6 +50,10 @@
<!ENTITY glibc-fhs-patch-md5 "9a5997c3452909b1769918c759eff8a2">
<!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 grub-upstream-fixes-patch "grub-&grub-version;-upstream_fixes-1.patch">
<!ENTITY grub-upstream-fixes-patch-md5 "da388905710bb4cbfbc7bd7346ff9174">
<!ENTITY grub-upstream-fixes-patch-size "8 KB">
diff --git a/prologue/why.xml b/prologue/why.xml
index 7cbe0e184..b5ac050eb 100644
--- a/prologue/why.xml
+++ b/prologue/why.xml
@@ -137,15 +137,6 @@
tested file systems that Linux supports.</para>
</listitem>
- <listitem revision="sysv">
- <para>Eudev</para>
-
- <para>This package is a device manager. It dynamically controls the ownership,
- permissions, names, and symbolic links of device nodes in the /dev directory when
- devices are added to or removed from the system.
- </para>
- </listitem>
-
<listitem>
<para>Expat</para>
@@ -233,7 +224,7 @@
<para>This package produces a program that generates a perfect hash
function from a set of keys. It is required by
- <phrase revision='sysv'>Eudev</phrase>
+ <phrase revision='sysv'>Udev</phrase>
<phrase revision='systemd'>Systemd</phrase>.</para>
</listitem>
@@ -380,7 +371,7 @@
<systemitem class='library'>libcrypt</systemitem> library
needed by various packages (notably, Shadow) for hashing passwords.
It replaces the obsolete
- <systemitem class='library'>libcrypt</systemitem> implmentation in
+ <systemitem class='library'>libcrypt</systemitem> implementation in
Glibc.</para>
</listitem>
@@ -579,6 +570,15 @@
system. </para>
</listitem>
+ <listitem revision="sysv">
+ <para>Udev</para>
+
+ <para>This package is a device manager. It dynamically controls the
+ ownership, permissions, names, and symbolic links of device nodes in
+ the /dev directory when devices are added to or removed from the
+ system.</para>
+ </listitem>
+
<listitem>
<para>Tar</para>
diff --git a/stylesheets/lfs-xsl/lfs.css b/stylesheets/lfs-xsl/lfs.css
index 3cadbc469..80eca11ed 100644
--- a/stylesheets/lfs-xsl/lfs.css
+++ b/stylesheets/lfs-xsl/lfs.css
@@ -265,6 +265,9 @@ li.chapter h4 a {
margin: .6em 0 .2em 0;
}
+span.blue {
+ color: #2ac;
+}
/* Index */
.item {
diff --git a/udev-lfs/55-lfs.rules b/udev-lfs/55-lfs.rules
index 34229ea2c..8d37ba920 100644
--- a/udev-lfs/55-lfs.rules
+++ b/udev-lfs/55-lfs.rules
@@ -6,9 +6,3 @@
SUBSYSTEM=="rtc", ACTION=="add", MODE="0644", RUN+="/etc/rc.d/init.d/setclock start"
KERNEL=="rtc", ACTION=="add", MODE="0644", RUN+="/etc/rc.d/init.d/setclock start"
-# Comms devices
-
-KERNEL=="ippp[0-9]*", GROUP="dialout"
-KERNEL=="isdn[0-9]*", GROUP="dialout"
-KERNEL=="isdnctrl[0-9]*", GROUP="dialout"
-KERNEL=="dcbri[0-9]*", GROUP="dialout"
diff --git a/udev-lfs/55-lfs.txt b/udev-lfs/55-lfs.txt
index 5f116f9b7..6e0afda59 100644
--- a/udev-lfs/55-lfs.txt
+++ b/udev-lfs/55-lfs.txt
@@ -7,14 +7,9 @@ Description of rules:
By default, Udev creates device nodes with UID 0, GID 0, and permissions 0660.
-ISDN-related devices should be owned by the 'dialout' group, hence the following
-rule (and similar):
-
-KERNEL=="ippp[0-9]*", GROUP="dialout"
-
-The RTC-related rules cause the setclock bootscript to be run as soon as the
+The RTC-related rule causes the setclock bootscript to be run as soon as the
RTC device has been created by Udev, meaning that times in log files, for
example, are as accurate as possible as quickly as possible.
-A final word of caution: Any particular rule must be written on one line, and a
-comma must separate each part of the rule.
+A word of caution: A comma must separate each part of the rule. A rule can span
+multiple lines if the newline is escaped by a backslash.
diff --git a/udev-lfs/81-cdrom.rules b/udev-lfs/81-cdrom.rules
deleted file mode 100644
index cb7ea5748..000000000
--- a/udev-lfs/81-cdrom.rules
+++ /dev/null
@@ -1,3 +0,0 @@
-# /etc/udev/rules.d/81-cdrom.rules: Set CD-ROM permissions and get device capabilities
-
-ACTION=="add", SUBSYSTEM=="block", ENV{ID_TYPE}=="cd", IMPORT{program}="cdrom_id --export $tempnode", GROUP="cdrom"
diff --git a/udev-lfs/83-cdrom-symlinks.rules b/udev-lfs/83-cdrom-symlinks.rules
deleted file mode 100644
index 1a21a0649..000000000
--- a/udev-lfs/83-cdrom-symlinks.rules
+++ /dev/null
@@ -1,13 +0,0 @@
-# /etc/udev/rules.d/83-cdrom-symlinks.rules: Determine CD drive capability.
-
-ACTION!="add", GOTO="cd_aliases_generator_end"
-SUBSYSTEM!="block", GOTO="cd_aliases_generator_end"
-ENV{GENERATED}=="?*", GOTO="cd_aliases_generator_end"
-
-# Fail the uevent if the autogenerated rules cannot be saved
-ENV{ID_CDROM}=="?*", PROGRAM="/bin/grep -c ' / [^[:space:]]* rw' /proc/mounts", \
- RESULT!="1", RUN+="/bin/false", GOTO="cd_aliases_generator_end"
-
-ENV{ID_CDROM}=="?*", PROGRAM="write_cd_rules", SYMLINK+="%c"
-
-LABEL="cd_aliases_generator_end"
diff --git a/udev-lfs/ChangeLog b/udev-lfs/ChangeLog
index 560346143..302aaa679 100644
--- a/udev-lfs/ChangeLog
+++ b/udev-lfs/ChangeLog
@@ -1,3 +1,10 @@
+2023-08-18 <bdubbs@linuxfromscratch.org>
+ * Fix regression when removing cdrom entries
+
+2023-07-28 <bdubbs@linuxfromscratch.org>
+ * Remove obsolete 83-cdrom-symlinks.rules and 81-cdrom.rules
+ * Remove references to obsolete ISDN devices
+
2017-10-27 <bdubbs@linuxfromscratch.org>
* 83-cdrom-symlinks.rules: Adjust test for writable root directory.
diff --git a/udev-lfs/Makefile.lfs b/udev-lfs/Makefile.lfs
index 1218d9dcd..295cacc54 100644
--- a/udev-lfs/Makefile.lfs
+++ b/udev-lfs/Makefile.lfs
@@ -3,7 +3,7 @@
# vim: tabstop=3
-VERSION=20171102
+VERSION=20230818
SHELL=/bin/bash
ifeq ($(V),)
@@ -16,15 +16,15 @@ all:
@echo "Use the install target"
install:
- @mkdir -pv $(DESTDIR)/lib/udev/rules.d \
+ @mkdir -pv $(DESTDIR)/usr/lib/udev/rules.d \
$(DESTDIR)/etc/udev/rules.d \
$(DESTDIR)/usr/share/doc/udev-$(VERSION)/lfs
# Copy rules
@cp -v udev-lfs-$(VERSION)/*.rules $(DESTDIR)/etc/udev/rules.d
- @cp -v udev-lfs-$(VERSION)/*_rules \
- udev-lfs-$(VERSION)/init-net-rules.sh \
- udev-lfs-$(VERSION)/rule_generator.functions $(DESTDIR)/lib/udev
+ @cp -v udev-lfs-$(VERSION)/init-net-rules.sh \
+ udev-lfs-$(VERSION)/write_net_rules \
+ udev-lfs-$(VERSION)/rule_generator.functions $(DESTDIR)/usr/lib/udev
# Copy documentation
@cp -v udev-lfs-$(VERSION)/README $(DESTDIR)/usr/share/doc/udev-$(VERSION)/lfs
diff --git a/udev-lfs/README b/udev-lfs/README
index 61d0e86bc..1f050eb15 100644
--- a/udev-lfs/README
+++ b/udev-lfs/README
@@ -14,9 +14,7 @@ Makefile.lfs - The LFS Makefile. Installs udev rules for LFS.
contrib - Useful rules from debian
contrib/debian
-contrib/debian/83-cdrom-symlinks.rules
contrib/debian/write_cd_aliases
-contrib/debian/81-cdrom.rules
55-lfs.rules - LFS custom rules
write_net_rules - Scripts for LFS rules