Merge remote-tracking branch 'origin/trunk' into xry111/clfs-ng

This commit is contained in:
Xi Ruoyao 2023-09-15 18:54:55 +08:00
commit 2df066c924
No known key found for this signature in database
GPG Key ID: ACAAD20E19E710E3
89 changed files with 1342 additions and 1604 deletions

1
.gitignore vendored
View File

@ -1,4 +1,5 @@
lfs-bootscripts-*.tar.xz
lfs-*.tar.xz
conditional.ent
version.ent
appendices/*.script

View File

@ -209,5 +209,14 @@ dump-commands: validate
all: book nochunks pdf dump-commands
.PHONY : all book dump-commands nochunks pdf profile-html tmpdir validate md5sums wget-list version
dist:
$(Q)DIST=/tmp/LFS-RELEASE ./git-version.sh $(REV)
$(Q)rm -f lfs-$$(</tmp/LFS-RELEASE).tar.xz
$(Q)tar cJf lfs-$$(</tmp/LFS-RELEASE).tar.xz \
$(shell git ls-tree HEAD . --name-only) version.ent \
-C /tmp LFS-RELEASE \
--transform "s,^,lfs-$$(</tmp/LFS-RELEASE)/,"
$(Q)echo "Generated XML tarball lfs-$$(</tmp/LFS-RELEASE).tar.xz"
.PHONY : all book dump-commands nochunks pdf profile-html tmpdir validate md5sums wget-list version dist

View File

@ -147,7 +147,7 @@
<segmentedlist id="autoconf-before">
<segtitle>&before;</segtitle>
<seglistitem>
<seg>Automake</seg>
<seg>Automake and Coreutils</seg>
</seglistitem>
</segmentedlist>
@ -189,7 +189,7 @@
<segmentedlist id="automake-before">
<segtitle>&before;</segtitle>
<seglistitem>
<seg>None</seg>
<seg>Coreutils</seg>
</seglistitem>
</segmentedlist>
@ -286,14 +286,15 @@
<segtitle>&dependencies;</segtitle>
<seglistitem>
<seg>Bash, Binutils, Coreutils, Diffutils, File, Flex, Gawk, GCC,
Glibc, Grep, Make, Perl, Sed, Texinfo, and Zlib</seg>
Glibc, Grep, Make, Perl, Pkgconf, Sed, Texinfo, Zlib, and
Zstd</seg>
</seglistitem>
</segmentedlist>
<segmentedlist id="binutils-rundeps">
<segtitle>&runtime;</segtitle>
<seglistitem>
<seg>Glibc and Zlib</seg>
<seg>Glibc, Zlib, and Zstd</seg>
</seglistitem>
</segmentedlist>
@ -437,6 +438,9 @@
<seglistitem>
<seg>
<ulink url='&github;/testing-cabal/subunit'>libsubunit</ulink>
and
<ulink url='http://cyberelk.net/tim/software/patchutils/'>
patchutils</ulink>
</seg>
</seglistitem>
</segmentedlist>
@ -447,8 +451,9 @@
<segmentedlist id="coreutils-depends">
<segtitle>&dependencies;</segtitle>
<seglistitem>
<seg>Bash, Binutils, Coreutils, GCC, Gettext, Glibc, GMP, Grep,
Libcap, Make, OpenSSL, Patch, Perl, Sed, and Texinfo</seg>
<seg>Autoconf, Automake, Bash, Binutils, Coreutils, GCC, Gettext,
Glibc, GMP, Grep, Libcap, Make, OpenSSL, Patch, Perl, Sed, and
Texinfo</seg>
</seglistitem>
</segmentedlist>
@ -2514,9 +2519,10 @@
<segmentedlist id="pkgconf-before">
<segtitle>&before;</segtitle>
<seglistitem>
<seg><phrase revision='systemd'>D-Bus, </phrase>E2fsprogs,
<seg>Binutils,
<phrase revision='systemd'>D-Bus, </phrase>E2fsprogs,
IProute2, Kmod, Man-DB, Procps-ng, Python,
&systemd-udev;, and Util-linux</seg>
&systemd-udev;, and Util-linux</seg>
</seglistitem>
</segmentedlist>
@ -2566,7 +2572,7 @@
<seg>
<phrase revision='systemd'>None</phrase>
<phrase revision='sysv'>
<ulink url='&blfs-book;general/elogind.xml'>elogind</ulink>
<ulink url='&blfs-book;general/elogind.html'>elogind</ulink>
</phrase>
</seg>
</seglistitem>
@ -2854,6 +2860,11 @@
<segtitle>&external;</segtitle>
<seglistitem>
<seg>
<ulink url="https://www.apparmor.net/">AppArmor</ulink>,
<ulink url="&github;/linux-audit/audit-userspace">
audit-userspace</ulink>,
<ulink url="&github;/scop/bash-completion">
bash-completion</ulink>,
<ulink
url="&blfs-book;postlfs/btrfs-progs.html">btrfs-progs</ulink>,
<ulink url="&blfs-book;basicnet/curl.html">cURL</ulink>,
@ -2861,20 +2872,20 @@
<ulink url="&blfs-book;pst/docbook.html">docbook-xml</ulink>,
<ulink
url="&blfs-book;pst/docbook-xsl.html">docbook-xsl-nons</ulink>,
<ulink url="https://sourceware.org/elfutils/">elfutils</ulink>,
<ulink url="&blfs-book;general/git.html">Git</ulink>,
<ulink
url="https://sourceforge.net/projects/gnu-efi/">gnu-efi</ulink>,
<ulink url="&blfs-book;postlfs/gnutls.html">GnuTLS</ulink>,
<ulink url="&blfs-book;postlfs/iptables.html">iptables</ulink>,
<ulink url='https://jekyllrb.com/'>jekyll</ulink>,
<ulink url="https://www.kernel.org/pub/linux/utils/kernel/kexec/">
kexec-tools</ulink>,
<ulink url='&github;/libbpf/libbpf'>libbpf</ulink>,
<ulink url="https://sourceware.org/elfutils/">libdw</ulink>,
<ulink
url="https://developers.yubico.com/libfido2/">libfido2</ulink>,
<ulink url="&blfs-book;general/libgcrypt.html">libgcrypt</ulink>,
<ulink url="&blfs-book;general/libidn2.html">libidn2</ulink>,
<ulink url="https://www.gnu.org/software/libmicrohttpd/">
Libmicrohttpd</ulink>,
libmicrohttpd</ulink>,
<ulink
url="&blfs-book;postlfs/libpwquality.html">libpwquality</ulink>,
<ulink url="&blfs-book;general/libseccomp.html">libseccomp</ulink>,
@ -2889,16 +2900,23 @@
<ulink url="&blfs-book;postlfs/p11-kit.html">p11-kit</ulink>,
<ulink url="&blfs-book;general/pcre2.html">PCRE2</ulink>,
<ulink url="&blfs-book;postlfs/polkit.html">Polkit</ulink>,
<ulink url='&pypi-home;/pyelftools'>pyelftools</ulink>,
<ulink url="&blfs-book;postlfs/qemu.html">qemu</ulink>,
<ulink url="&blfs-book;general/qrencode.html">qrencode</ulink>,
<ulink url="https://sourceforge.net/projects/linuxquota/">
quota-tools</ulink>,
<ulink url="https://sourceforge.net/projects/linuxquota/"
>quota-tools</ulink>,
<ulink url="https://rpm.org">rpm</ulink>,
<ulink url="&blfs-book;basicnet/rsync.html">rsync</ulink>,
<ulink url="&github;/SELinuxProject/selinux">
SELinux</ulink>,
<ulink url="&blfs-book;general/python-modules.html#sphinx">
Sphinx</ulink>,
<ulink url="https://sourceware.org/systemtap/">
systemtap</ulink>,
<ulink url="https://tpm2-tss.readthedocs.io/en/latest/">
tpm2-tss</ulink>,
<ulink url="&blfs-book;general/valgrind.html">Valgrind</ulink>,
<ulink url="https://xenproject.org">Xen</ulink>,
and
<ulink url="&blfs-book;postlfs/zsh.html">zsh</ulink>
</seg>
@ -3380,7 +3398,7 @@
<segmentedlist id="zstd-before">
<segtitle>&before;</segtitle>
<seglistitem>
<seg>GCC, Libelf, and &systemd-udev;</seg>
<seg>Binutils, GCC, Libelf, and &systemd-udev;</seg>
</seglistitem>
</segmentedlist>

View File

@ -1,3 +1,6 @@
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).

View File

@ -101,7 +101,7 @@ case "${1}" in
if [ "${error_value}" = 2 -o "${error_value}" = 3 ]; then
msg="\nWARNING:\n\nFile system errors "
msg="${msg}were found and have been been "
msg="${msg}were found and have been "
msg="${msg}corrected, but the nature of the "
msg="${msg}errors require this system to be rebooted.\n\n"
msg="${msg}After you press enter, "

View File

@ -63,6 +63,10 @@ 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

View File

@ -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

View File

@ -40,419 +40,147 @@
appropriate for the entry or if needed the entire day's listitem.
-->
<listitem revision='sysv'>
<para>2023-07-22</para>
<listitem>
<para>2023-09-13</para>
<itemizedlist>
<listitem>
<para>[xry111] - Fix CVE-2023-4806 for Glibc-2.38. Fixes
<ulink url='&lfs-ticket-root;5347'>#5347</ulink>.</para>
</listitem>
</itemizedlist>
</listitem>
<listitem>
<para>2023-09-12</para>
<itemizedlist>
<listitem>
<para>[xry111] - Fix CVE-2023-4527 for Glibc-2.38. Fixes
<ulink url='&lfs-ticket-root;5346'>#5346</ulink>.</para>
</listitem>
</itemizedlist>
</listitem>
<listitem>
<para>2023-09-07</para>
<itemizedlist>
<listitem>
<para>[xry111] - Fix an issue in pkgconf-2.0.3 causing
BLFS packages fail to build. Fixes
<ulink url='&lfs-ticket-root;5341'>#5341</ulink>.</para>
</listitem>
</itemizedlist>
</listitem>
<listitem>
<para>2023-09-05</para>
<itemizedlist>
<listitem>
<para>[xry111] - Move pkgconf before binutils for binutils
building system to detect zstd properly. Fixes
<ulink url='&lfs-ticket-root;5340'>#5340</ulink>.</para>
</listitem>
<listitem>
<para>[xry111] - Update to linux-6.5.1. Fixes
<ulink url='&lfs-ticket-root;5332'>#5332</ulink>.</para>
</listitem>
<listitem>
<para>[xry111] - Update to pkgconf-2.0.3. Fixes
<ulink url='&lfs-ticket-root;5339'>#5339</ulink>.</para>
</listitem>
<listitem>
<para>[xry111] - Update to dbus-1.14.10. Fixes
<ulink url='&lfs-ticket-root;5337'>#5337</ulink>.</para>
</listitem>
</itemizedlist>
</listitem>
<listitem>
<para>2023-09-04</para>
<itemizedlist>
<listitem>
<para>[bdubbs] - Move caution regarding building by mixing
different version of LFS to General Compilation Instructions. Fixes
<ulink url='&lfs-ticket-root;5338'>#5338</ulink>.</para>
</listitem>
</itemizedlist>
</listitem>
<listitem>
<para>2023-09-02</para>
<itemizedlist>
<listitem>
<para>[xry111] - Add --no-cache-dir option for pip3 wheel
commands. Addresses
<ulink url='&blfs-ticket-root;18466'>BLFS #18466</ulink>.</para>
</listitem>
<listitem>
<para>[bdubbs] - Update to vim-9.0.1837. Addresses
<ulink url='&lfs-ticket-root;4500'>#4500</ulink>.</para>
</listitem>
<listitem>
<para>[bdubbs] - Update to zlib-1.3. Fixes
<ulink url='&lfs-ticket-root;5324'>#5324</ulink>.</para>
</listitem>
<listitem>
<para>[bdubbs] - Update to wheel-0.41.2 (Python Module). Fixes
<ulink url='&lfs-ticket-root;5328'>#5328</ulink>.</para>
</listitem>
<listitem>
<para>[bdubbs] - Update to util-linux-2.39.2. Fixes
<ulink url='&lfs-ticket-root;5322'>#5322</ulink>.</para>
</listitem>
<listitem revision='sysv'>
<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>
<para>[bdubbs] - Update to sysvinit-3.08. Fixes
<ulink url='&lfs-ticket-root;5321'>#5321</ulink>.</para>
</listitem>
<listitem>
<para>[bdubbs] - Update to iana-etc-20230629. Addresses
<ulink url='&lfs-ticket-root;5006'>#5006</ulink>.</para>
<para>[bdubbs] - Update to shadow-4.14.0. Fixes
<ulink url='&lfs-ticket-root;5319'>#5319</ulink>.</para>
</listitem>
<listitem>
<para>[bdubbs] - Update to linux-6.4.3. Fixes
<ulink url='&lfs-ticket-root;5284'>#5284</ulink>.</para>
<para>[bdubbs] - Update to Python-3.11.5. Fixes
<ulink url='&lfs-ticket-root;5330'>#5330</ulink>.</para>
</listitem>
<listitem>
<para>[bdubbs] - Update to libxcrypt-4.4.36. Fixes
<ulink url='&lfs-ticket-root;5283'>#5283</ulink>.</para>
<para>[bdubbs] - Update to procps-ng-4.0.4. Fixes
<ulink url='&lfs-ticket-root;5335'>#5335</ulink>.</para>
</listitem>
<listitem>
<para>[bdubbs] - Update to groff-1.23.0. Fixes
<ulink url='&lfs-ticket-root;5282'>#5282</ulink>.</para>
<para>[bdubbs] - Update to pkgconf-2.0.2. Fixes
<ulink url='&lfs-ticket-root;5323'>#5323</ulink>.</para>
</listitem>
<listitem>
<para>[bdubbs] - Update to perl-5.38.0. Fixes
<ulink url='&lfs-ticket-root;5281'>#5281</ulink>.</para>
</listitem>
</itemizedlist>
</listitem>
<listitem>
<para>2023-07-02</para>
<itemizedlist>
<listitem>
<para>[xry111] - Add libxcrypt-4.4.35. Fixes
<ulink url='&lfs-ticket-root;5280'>#5280</ulink>.</para>
<para>[bdubbs] - Update to mpfr-4.2.1. Fixes
<ulink url='&lfs-ticket-root;5326'>#5326</ulink>.</para>
</listitem>
<listitem>
<para>[xry111] - Update to iproute2-6.4.0. Fixes
<ulink url='&lfs-ticket-root;5277'>#5277</ulink>.</para>
<para>[bdubbs] - Update to kbd-2.6.2. Fixes
<ulink url='&lfs-ticket-root;5318'>#5318</ulink>.</para>
</listitem>
<listitem>
<para>[xry111] - Update to linux-6.4.1. Fixes
<ulink url='&lfs-ticket-root;5276'>#5276</ulink>.</para>
</listitem>
</itemizedlist>
</listitem>
<listitem>
<para>2023-07-01</para>
<itemizedlist>
<listitem>
<para>[bdubbs] - Update to iana-etc-20230615. Addresses
<ulink url='&lfs-ticket-root;5006'>#5006</ulink>.</para>
<para>[bdubbs] - Update to gzip-1.13. Fixes
<ulink url='&lfs-ticket-root;5325'>#5325</ulink>.</para>
</listitem>
<listitem>
<para>[bdubbs] - Update to vim-9.0.1671. Addresses
<ulink url='&lfs-ticket-root;4500'>#4500</ulink>.</para>
</listitem>
<listitem>
<para>[bdubbs] - Update to util-linux-2.39.1. Addresses
<ulink url='&lfs-ticket-root;5278'>#5278</ulink>.</para>
</listitem>
<listitem>
<para>[bdubbs] - Update to linux-6.3.10. Addresses
<ulink url='&lfs-ticket-root;5276'>#5276</ulink>.</para>
</listitem>
<listitem>
<para>[rahul] - Update to kbd-2.6.1. Fixes
<ulink url='&lfs-ticket-root;5279'>#5279</ulink>.</para>
</listitem>
<listitem>
<para>[bdubbs] - Update to gettext-0.22. Fixes
<ulink url='&lfs-ticket-root;5275'>#5275</ulink>.</para>
</listitem>
</itemizedlist>
</listitem>
<listitem>
<para>2023-06-17</para>
<itemizedlist>
<listitem>
<para>[xry111] - Update to linux-6.3.8. Fixes
<ulink url='&lfs-ticket-root;5272'>#5272</ulink>.</para>
</listitem>
<listitem>
<para>[xry111] - Update to kbd-2.6.0. Fixes
<ulink url='&lfs-ticket-root;5273'>#5273</ulink>.</para>
</listitem>
<listitem>
<para>[rahul] - Changed from pkg-config to pkgconf 1.9.5. Fixes
<ulink url='&lfs-ticket-root;5274'>#5274</ulink>.</para>
</listitem>
</itemizedlist>
</listitem>
<listitem>
<para>2023-06-09</para>
<itemizedlist>
<listitem revision='systemd'>
<para>[bdubbs] - Update to dbus-1.14.8. Fixes
<ulink url='&lfs-ticket-root;5271'>#5271</ulink>.</para>
</listitem>
<listitem>
<para>[bdubbs] - Update to linux-6.3.6. Fixes
<ulink url='&lfs-ticket-root;5269'>#5269</ulink>.</para>
</listitem>
<listitem>
<para>[bdubbs] - Update to Python-3.11.4. Fixes
<ulink url='&lfs-ticket-root;5271'>#5271</ulink>.</para>
</listitem>
</itemizedlist>
</listitem>
<listitem>
<para>2023-06-03</para>
<itemizedlist>
<listitem>
<para>[bdubbs] - Update to iana-etc-20230524. Addresses
<ulink url='&lfs-ticket-root;5006'>#5006</ulink>.</para>
<para>[bdubbs] - Update to coreutils-9.4. Fixes
<ulink url='&lfs-ticket-root;5334'>#5334</ulink>.</para>
</listitem>
<listitem revision='systemd'>
<para>[bdubbs] - Update to MarkupSafe-2.1.3 (Python Module). Fixes
<ulink url='&lfs-ticket-root;5268'>#5268</ulink>.</para>
<para>[bdubbs] - Specify the 'nobody-group' for systemd. Fixes
<ulink url='&lfs-ticket-root;5333'>#5333</ulink>.</para>
</listitem>
<listitem>
<para>[bdubbs] - Update to linux-6.3.5. Fixes
<ulink url='&lfs-ticket-root;5264'>#5264</ulink>.</para>
</listitem>
<listitem>
<para>[bdubbs] - Update to openssl-3.1.1. Fixes
<ulink url='&lfs-ticket-root;5267'>#5267</ulink>.</para>
</listitem>
<listitem>
<para>[bdubbs] - Update to meson-1.1.1. Fixes
<ulink url='&lfs-ticket-root;5266'>#5266</ulink>.</para>
</listitem>
<listitem>
<para>[bdubbs] - Update to diffutils-3.10. Fixes
<ulink url='&lfs-ticket-root;5262'>#5262</ulink>.</para>
</listitem>
<listitem>
<para>[bdubbs] - Update to bc-6.6.0. Fixes
<ulink url='&lfs-ticket-root;5263'>#5263</ulink>.</para>
</listitem>
</itemizedlist>
</listitem>
<listitem revision='sysv'>
<para>2023-05-25</para>
<itemizedlist>
<listitem revision='sysv'>
<para>[ken] - Remove unneeded group sgx from eudev rules. Fixes
<ulink url='&lfs-ticket-root;5265'>#5265</ulink>.</para>
<para>[bdubbs] - Remove unused usb group. Fixes
<ulink url='&lfs-ticket-root;5331'>#5331</ulink>.</para>
</listitem>
</itemizedlist>
</listitem>
<listitem>
<para>2023-05-18</para>
<para>2023-09-01</para>
<itemizedlist>
<listitem>
<para>[bdubbs] - Update to util-linux-2.39. Fixes
<ulink url='&lfs-ticket-root;5259'>#5259</ulink>.</para>
</listitem>
<listitem>
<para>[bdubbs] - Update to linux-6.3.3. Fixes
<ulink url='&lfs-ticket-root;5261'>#5261</ulink>.</para>
</listitem>
<listitem>
<para>[bdubbs] - Update to libcap-2.69. Fixes
<ulink url='&lfs-ticket-root;5258'>#5258</ulink>.</para>
</listitem>
<listitem>
<para>[bdubbs] - Update to grep-3.11. Fixes
<ulink url='&lfs-ticket-root;5256'>#5256</ulink>.</para>
</listitem>
<listitem>
<para>[bdubbs] - Update to flit_core-3.9.0. Fixes
<ulink url='&lfs-ticket-root;5257'>#5257</ulink>.</para>
</listitem>
<listitem>
<para>[bdubbs] - Update to eudev-3.2.12. Fixes
<ulink url='&lfs-ticket-root;5260'>#5260</ulink>.</para>
</listitem>
</itemizedlist>
</listitem>
<listitem>
<para>2023-05-13</para>
<itemizedlist>
<listitem>
<para>[xry111] - Update to less-633. Fixes
<ulink url='&lfs-ticket-root;5251'>#5251</ulink>.</para>
</listitem>
<listitem>
<para>[xry111] - Update to linux-6.3.2. Fixes
<ulink url='&lfs-ticket-root;5255'>#5255</ulink>.</para>
</listitem>
<listitem>
<para>[xry111] - Update to xz-5.4.3. Fixes
<ulink url='&lfs-ticket-root;5252'>#5252</ulink>.</para>
</listitem>
<listitem>
<para>[xry111] - Update to gawk-5.2.2. Fixes
<ulink url='&lfs-ticket-root;5253'>#5253</ulink>.</para>
</listitem>
<listitem>
<para>[xry111] - Fix systemd runtime issue exploited by GCC 13.
Fixes <ulink url='&lfs-ticket-root;5254'>#5254</ulink>.</para>
</listitem>
</itemizedlist>
</listitem>
<listitem>
<para>2023-05-01</para>
<itemizedlist>
<listitem>
<para>[bdubbs] - Update to vim-9.0.1503. Addresses
<ulink url='&lfs-ticket-root;4500'>#4500</ulink>.</para>
</listitem>
<listitem>
<para>[bdubbs] - Update to iana-etc-20230418. Addresses
<ulink url='&lfs-ticket-root;5006'>#5006</ulink>.</para>
</listitem>
<listitem revision='sysv'>
<para>[bdubbs] - Update to sysvinit-3.07. Fixes
<ulink url='&lfs-ticket-root;5250'>#5250</ulink>.</para>
</listitem>
<listitem>
<para>[bdubbs] - Update to iproute2-6.3.0. Fixes
<ulink url='&lfs-ticket-root;5248'>#5248</ulink>.</para>
</listitem>
<listitem>
<para>[bdubbs] - Update to gcc-13.1.0. Fixes
<ulink url='&lfs-ticket-root;5247'>#5247</ulink>.</para>
</listitem>
<listitem>
<para>[bdubbs] - Update to perl-5.36.1. Fixes
<ulink url='&lfs-ticket-root;5246'>#5246</ulink>.</para>
</listitem>
<listitem>
<para>[bdubbs] - Update to linux-6.3.1. Fixes
<ulink url='&lfs-ticket-root;5245'>#5245</ulink>.</para>
</listitem>
<listitem>
<para>[bdubbs] - Update to coreutils-9.3. Fixes
<ulink url='&lfs-ticket-root;5244'>#5244</ulink>.</para>
</listitem>
</itemizedlist>
</listitem>
<listitem>
<para>2023-04-15</para>
<itemizedlist>
<listitem>
<para>[bdubbs] - Update to vim-9.0.1452. Addresses
<ulink url='&lfs-ticket-root;4500'>#4500</ulink>.</para>
</listitem>
<listitem>
<para>[bdubbs] - Update to iana-etc-20230405. Addresses
<ulink url='&lfs-ticket-root;5006'>#5006</ulink>.</para>
</listitem>
<listitem>
<para>[bdubbs] - Update to zstd-1.5.5. Fixes
<ulink url='&lfs-ticket-root;5239'>#5239</ulink>.</para>
</listitem>
<listitem>
<para>[bdubbs] - Update to Python-3.11.3. Fixes
<ulink url='&lfs-ticket-root;5240'>#5240</ulink>.</para>
</listitem>
<listitem>
<para>[bdubbs] - Update to meson-1.1.0. Fixes
<ulink url='&lfs-ticket-root;5242'>#5242</ulink>.</para>
</listitem>
<listitem>
<para>[bdubbs] - Update to man-pages-6.04. Fixes
<ulink url='&lfs-ticket-root;5238'>#5238</ulink>.</para>
</listitem>
<listitem>
<para>[bdubbs] - Update to linux-6.2.11. Fixes
<ulink url='&lfs-ticket-root;5241'>#5241</ulink>.</para>
</listitem>
</itemizedlist>
</listitem>
<listitem>
<para>2023-03-31</para>
<itemizedlist>
<listitem>
<para>[xry111] - Update to linux-6.2.9 (security fix). Fixes
<ulink url='&lfs-ticket-root;5230'>#5230</ulink>.</para>
</listitem>
<listitem>
<para>[xry111] - Update to grep-3.10. Fixes
<ulink url='&lfs-ticket-root;5234'>#5234</ulink>.</para>
</listitem>
<listitem>
<para>[xry111] - Update to wheel-0.40.0. Fixes
<ulink url='&lfs-ticket-root;5229'>#5229</ulink>.</para>
</listitem>
<listitem>
<para>[xry111] - Update to bc-6.5.0. Fixes
<ulink url='&lfs-ticket-root;5228'>#5228</ulink>.</para>
</listitem>
<listitem>
<para>[xry111] - Update to texinfo-7.0.3. Fixes
<ulink url='&lfs-ticket-root;5235'>#5235</ulink>.</para>
</listitem>
<listitem>
<para>[xry111] - Update to coreutils-9.2. Fixes
<ulink url='&lfs-ticket-root;5232'>#5232</ulink>.</para>
</listitem>
<listitem>
<para>[xry111] - Update to libcap-2.68. Fixes
<ulink url='&lfs-ticket-root;5236'>#5236</ulink>.</para>
</listitem>
<listitem>
<para>[xry111] - Update to tzdata-2023c. Fixes
<ulink url='&lfs-ticket-root;5237'>#5237</ulink>.</para>
</listitem>
<listitem>
<para>[xry111] - Update to xz-5.4.2. Fixes
<ulink url='&lfs-ticket-root;5233'>#5233</ulink>.</para>
</listitem>
<listitem>
<para>[xry111] - Update to openssl-3.1.0. Fixes
<ulink url='&lfs-ticket-root;5227'>#5227</ulink>.</para>
</listitem>
<listitem>
<para>[xry111] - Add flit-core-3.8.0.</para>
</listitem>
</itemizedlist>
</listitem>
<listitem>
<para>2023-03-15</para>
<itemizedlist>
<listitem>
<para>[bdubbs] - Update to bc-6.4.0. Fixes
<ulink url='&lfs-ticket-root;5217'>#5217</ulink>.</para>
</listitem>
<listitem>
<para>[bdubbs] - Update to grep-3.9. Fixes
<ulink url='&lfs-ticket-root;5225'>#5225</ulink>.</para>
</listitem>
<listitem>
<para>[bdubbs] - Update to linux-6.2.6. Fixes
<ulink url='&lfs-ticket-root;5226'>#5226</ulink>.</para>
</listitem>
<listitem>
<para>[bdubbs] - Update to iana-etc-20230306. Addresses
<ulink url='&lfs-ticket-root;5006'>#5006</ulink>.</para>
</listitem>
</itemizedlist>
</listitem>
<listitem>
<para>2023-03-04</para>
<itemizedlist>
<listitem revision='systemd'>
<para>[xry111] - Update to systemd-253. Fixes
<ulink url='&lfs-ticket-root;5206'>#5206</ulink>.</para>
</listitem>
<listitem>
<para>[xry111] - Update to bc-6.3.1. Fixes
<ulink url='&lfs-ticket-root;5217'>#5217</ulink>.</para>
</listitem>
<listitem>
<para>[xry111] - Update to linux-6.2.2 (security fixes). Fixes
<ulink url='&lfs-ticket-root;5218'>#5218</ulink>.</para>
</listitem>
<listitem>
<para>[xry111] - Update to procps-ng-4.0.3. Fixes
<ulink url='&lfs-ticket-root;5220'>#5220</ulink>.</para>
</listitem>
<listitem>
<para>[xry111] - Update to iproute2-6.2.0. Fixes
<ulink url='&lfs-ticket-root;5221'>#5221</ulink>.</para>
</listitem>
<listitem>
<para>[xry111] - Update to meson-1.0.1. Fixes
<ulink url='&lfs-ticket-root;5222'>#5222</ulink>.</para>
</listitem>
<listitem>
<para>[xry111] - Update to make-4.4.1. Fixes
<ulink url='&lfs-ticket-root;5223'>#5223</ulink>.</para>
</listitem>
<listitem>
<para>[xry111] - Update to libelf-0.189. Fixes
<ulink url='&lfs-ticket-root;5224'>#5224</ulink>.</para>
</listitem>
<listitem>
<para>[bdubbs] - Change to a better host requirements script in Chapter 2.</para>
</listitem>
</itemizedlist>
</listitem>
<listitem>
<para>2023-03-01</para>
<itemizedlist>
<listitem>
<para>[bdubbs] - LFS-11.3 released.</para>
<para>[bdubbs] - LFS-12.0 released.</para>
</listitem>
</itemizedlist>
</listitem>

View File

@ -11,26 +11,6 @@
<title>What's new since the last release</title>
<caution>
<para>
During a development cycle of LFS, the instructions in the book is
often modified to adapt for a package update or take the advantage of
new features from updated packages. Mixing up the instructions of
different versions of the LFS book can cause subtle breakages. This
kind of issue is generally a result from reusing some script created
for a prior LFS release. Such a reuse is strongly discouraged. If
you are reusing scripts for a prior LFS release for any reason, you'll
need to be very careful to update the scripts to match current version
of the LFS book.
</para>
</caution>
<para>In the 11.4 release, <parameter>--disable-fixincludes</parameter>
is set for GCC. It's a configure switch newly added in GCC 13.1 to
prevent GCC from <quote>fixing</quote> the system headers. Such a
<quote>fix</quote> is unnecessary for a modern Linux system and may cause
issues if a package is updated after installing GCC.</para>
<para>Here is a list of the packages updated since the previous
release of LFS.</para>
@ -59,11 +39,11 @@
<para>Automake-&automake-version;</para>
</listitem>-->
<!--<listitem>
<para>Bash &bash-version;</para>
<para>Bash-&bash-version;</para>
</listitem>-->
<!--<listitem>
<para>Bc-&bc-version;</para>
</listitem>-->
<listitem>
<para>Bc &bc-version;</para>
</listitem>
<!--<listitem>
<para>Binutils-&binutils-version;</para>
</listitem>-->
@ -85,15 +65,12 @@
<listitem revision="systemd">
<para>D-Bus-&dbus-version;</para>
</listitem>
<listitem>
<!--<listitem>
<para>Diffutils-&diffutils-version;</para>
</listitem>
</listitem>-->
<!--<listitem>
<para>E2fsprogs-&e2fsprogs-version;</para>
</listitem>-->
<!--<listitem revision="sysv">
<para>Udev-&systemd-version; (from systemd)</para>
</listitem>-->
<!--<listitem>
<para>Expat-&expat-version;</para>
</listitem>-->
@ -109,21 +86,21 @@
<!--<listitem>
<para>Flex-&flex-version;</para>
</listitem>-->
<listitem>
<!--<listitem>
<para>Flit-core-&flit-core-version;</para>
</listitem>
</listitem>-->
<!--<listitem>
<para>Gawk-&gawk-version;</para>
</listitem>-->
<listitem>
<!--<listitem>
<para>GCC-&gcc-version;</para>
</listitem>
</listitem>-->
<!--<listitem>
<para>GDBM-&gdbm-version;</para>
</listitem>-->
<listitem>
<!--<listitem>
<para>Gettext-&gettext-version;</para>
</listitem>
</listitem>-->
<!--<listitem>
<para>Glibc-&glibc-version;</para>
</listitem>-->
@ -133,30 +110,30 @@
<!--<listitem>
<para>Gperf-&gperf-version;</para>
</listitem>-->
<listitem>
<!--<listitem>
<para>Grep-&grep-version;</para>
</listitem>
<listitem>
</listitem>-->
<!--<listitem>
<para>Groff-&groff-version;</para>
</listitem>
</listitem>-->
<!--<listitem>
<para>GRUB-&grub-version;</para>
</listitem>-->
<!--<listitem>
<para>Gzip-&gzip-version;</para>
</listitem>-->
<listitem>
<para>IANA-Etc-&iana-etc-version;</para>
<para>Gzip-&gzip-version;</para>
</listitem>
<!--<listitem>
<para>Iana-Etc-&iana-etc-version;</para>
</listitem>-->
<!--<listitem>
<para>Inetutils-&inetutils-version;</para>
</listitem>-->
<!--<listitem>
<para>Intltool-&intltool-version;</para>
</listitem>-->
<listitem>
<!--<listitem>
<para>IPRoute2-&iproute2-version;</para>
</listitem>
</listitem>-->
<!--<listitem revision="systemd">
<para>Jinja2-&jinja2-version;</para>
</listitem>-->
@ -166,18 +143,18 @@
<!--<listitem>
<para>Kmod-&kmod-version;</para>
</listitem>-->
<listitem>
<!--<listitem>
<para>Less-&less-version;</para>
</listitem>
</listitem>-->
<!--<listitem>
<para>LFS-Bootscripts-&lfs-bootscripts-version;</para>
</listitem>-->
<listitem>
<!--<listitem>
<para>Libcap-&libcap-version;</para>
</listitem>
<listitem>
</listitem>-->
<!--<listitem>
<para>Libelf-&elfutils-version; (from elfutils)</para>
</listitem>
</listitem>-->
<!--<listitem>
<para>Libffi-&libffi-version;</para>
</listitem>-->
@ -193,42 +170,45 @@
<!--<listitem>
<para>M4-&m4-version;</para>
</listitem>-->
<listitem>
<!--<listitem>
<para>Make-&make-version;</para>
</listitem>
</listitem>-->
<!--<listitem>
<para>Man-DB-&man-db-version;</para>
</listitem>-->
<listitem>
<!--<listitem>
<para>Man-pages-&man-pages-version;</para>
</listitem>
<listitem revision="systemd">
</listitem>-->
<!--<listitem revision="systemd">
<para>MarkupSafe-&markupsafe-version;</para>
</listitem>
<listitem>
</listitem>-->
<!--<listitem>
<para>Meson-&meson-version;</para>
</listitem>
</listitem>-->
<!--<listitem>
<para>MPC-&mpc-version;</para>
</listitem>-->
<!--<listitem>
<listitem>
<para>MPFR-&mpfr-version;</para>
</listitem>-->
</listitem>
<!--<listitem>
<para>Ncurses-&ncurses-version;</para>
</listitem>-->
<!--<listitem>
<para>Ninja-&ninja-version;</para>
</listitem>-->
<listitem>
<!--<listitem>
<para>Openssl-&openssl-version;</para>
</listitem>
</listitem>-->
<!--<listitem>
<para>Patch-&patch-version;</para>
</listitem>-->
<listitem>
<para>Perl-&perl-version;</para>
<para>Pkgconf-&pkgconf-version;</para>
</listitem>
<!--<listitem>
<para>Perl-&perl-version;</para>
</listitem>-->
<listitem>
<para>Procps-ng-&procps-ng-version;</para>
</listitem>
@ -244,51 +224,54 @@
<!--<listitem>
<para>Sed-&sed-version;</para>
</listitem>-->
<!--<listitem>
<listitem>
<para>Shadow-&shadow-version;</para>
</listitem>-->
<listitem revision="sysv">
<para>Sysklogd-&sysklogd-version;</para>
</listitem>
<listitem revision="systemd">
<para>Systemd-&systemd-version;</para>
</listitem>
<!--<listitem revision="sysv">
<para>SysVinit-&sysvinit-version;</para>
<para>Sysklogd-&sysklogd-version;</para>
</listitem>-->
<!--<listitem>
<para>Systemd-&systemd-version;</para>
</listitem>-->
<listitem revision="sysv">
<para>SysVinit-&sysvinit-version;</para>
</listitem>
<!--<listitem>
<para>Tar-&tar-version;</para>
</listitem>-->
<!--<listitem>
<para>Tcl-&tcl-version;</para>
</listitem>-->
<!--<listitem>
<!--<listitem>
<para>Texinfo-&texinfo-version;</para>
</listitem>-->
<!--<listitem>
<para>Tzdata-&tzdata-version;</para>
</listitem>-->
<!--<listitem revision="sysv">
<para>Udev-&systemd-version; (from systemd)</para>
</listitem>-->
<listitem>
<para>Util-Linux-&util-linux-version;</para>
<para>Util-linux-&util-linux-version;</para>
</listitem>
<listitem>
<para>Vim-&vim-version;</para>
</listitem>
<listitem>
<para>Wheel-&wheel-version;</para>
</listitem>
<!--<listitem>
<para>wheel-&wheel-version;</para>
<para>XML::Parser-&xml-parser-version;</para>
</listitem>-->
<!--<listitem>
<para>XML-Parser-&xml-parser-version;</para>
</listitem>-->
<!--<listitem>
<para>XZ-Utils-&xz-version;</para>
</listitem>-->
<!--<listitem>
<para>Zlib-&zlib-version;</para>
<para>Xz-&xz-version;</para>
</listitem>-->
<listitem>
<para>Zstd-&zstd-version;</para>
<para>Zlib-&zlib-version;</para>
</listitem>
<!--<listitem>
<para>Zstd-&zstd-version;</para>
</listitem>-->
</itemizedlist>
<!--<itemizedlist>
@ -304,58 +287,20 @@
<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>
<para>&glibc-upstream-fixes-patch;</para>
</listitem>
<listitem>
<para>Pkgconf-&flit-core-version;</para>
</listitem>
<listitem>
<para>Flit-core-&flit-core-version;</para>
</listitem>
<!--<listitem>
<para>&grub-upstream-fixes-patch;</para>
</listitem>-->
<!--<listitem>
<para>&readline-fixes-patch;</para>
</listitem>-->
<!--<listitem revision="systemd">
<para>&systemd-upstream-patch;</para>
</listitem>-->
</itemizedlist>
<itemizedlist>
<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>
<para>glibc-2.38-memalign_fix-1.patch</para>
</listitem>
<listitem revision='systemd'>
<para>systemd-252-security_fix-1.patch</para>
</listitem>
</itemizedlist>
</sect1>

View File

@ -126,7 +126,7 @@
</listitem>
<listitem>
<para><emphasis role="strong">Texinfo-4.7</emphasis></para>
<para><emphasis role="strong">Texinfo-5.0</emphasis></para>
</listitem>
<listitem>
@ -154,7 +154,7 @@
<para >To see whether your host system has all the appropriate versions, and
the ability to compile programs, run the following commands:</para>
<screen role="nodump"><userinput>cat &gt; version-check.sh &lt;&lt; "EOF"
<screen role="nodump"><?dbfo keep-together="auto"?><userinput>cat &gt; version-check.sh &lt;&lt; "EOF"
<literal>#!/bin/bash
# A script to list version numbers of critical development tools
@ -205,7 +205,7 @@ ver_check Perl perl 5.8.8
ver_check Python python3 3.4
ver_check Sed sed 4.1.5
ver_check Tar tar 1.22
ver_check Texinfo texi2any 4.7
ver_check Texinfo texi2any 5.0
ver_check Xz xz 5.0.0
alias_check() {

View File

@ -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>

View File

@ -77,6 +77,14 @@
</listitem>
</varlistentry>
-->
<varlistentry>
<term>Glibc Upstream Fixes Patch - <token>&glibc-upstream-fixes-patch-size;</token>:</term>
<listitem>
<para>Download: <ulink url="&patches-root;&glibc-upstream-fixes-patch;"/></para>
<para>MD5 sum: <literal>&glibc-upstream-fixes-patch-md5;</literal></para>
</listitem>
</varlistentry>
<varlistentry>
<term>Glibc FHS Patch - <token>&glibc-fhs-patch-size;</token>:</term>
<listitem>

View File

@ -93,7 +93,6 @@ cd build</userinput></screen>
--build=$(../scripts/config.guess) \
--enable-kernel=&linux-major-version;.&linux-minor-version; \
--with-headers=$LFS/usr/include \
--disable-crypt \
libc_cv_slibdir=/usr/lib</userinput></screen>
<variablelist>

View File

@ -43,11 +43,17 @@
<sect2 role="installation">
<title>Installation of Binutils</title>
<!-- Don't remove this until Binutils upstream updates the libtool
copy. On some host distros the issue doesn't show up. -->
<para>Binutils ships an outdated copy of libtool in the tarball. It lacks
sysroot support, so the produced binaries will be mistakenly linked to
libraries from the host distro. Work around this issue:</para>
<!-- Don't remove this until Binutils upstream resolves this issue.
We can test by building Binutils on a complete system with
zlib (libz.so) installed, passing enable-shared and
without-system-zlib. If the resulted libctf.so still links against
libz.so (check with readelf -d) despite we are saying
without-system-zlib, then the issue is still unresolved. -->
<para>Binutils building system relies on an shipped libtool copy to link against
internal static libraries, but the libiberty and zlib copies shipped
in the package do not use libtool. This inconsistency may cause
produced binaries mistakenly linked against libraries from the host
distro. Work around this issue:</para>
<screen><userinput remap="pre">sed '6009s/$add_dir//' -i ltmain.sh</userinput></screen>
@ -101,7 +107,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>

View File

@ -43,17 +43,13 @@
<sect2 role="installation">
<title>Installation of Coreutils</title>
<!--
<screen><userinput remap="configure">export gl_cv_macro_MB_CUR_MAX_good=y</userinput></screen>
-->
<para>Prepare Coreutils for compilation:</para>
<screen><userinput remap="configure">./configure --prefix=/usr \
--host=$LFS_TGT \
--build=$(build-aux/config.guess) \
--enable-install-program=hostname \
--enable-no-install-program=kill,uptime \
gl_cv_macro_MB_CUR_MAX_good=y</userinput></screen>
--enable-no-install-program=kill,uptime</userinput></screen>
<variablelist>
<title>The meaning of the configure options:</title>

View File

@ -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>

View File

@ -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>

View File

@ -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>

View File

@ -107,7 +107,6 @@ dialout:x:10:
audio:x:11:
video:x:12:
utmp:x:13:
usb:x:14:
cdrom:x:15:
adm:x:16:
messagebus:x:18:
@ -135,7 +134,6 @@ dialout:x:10:
audio:x:11:
video:x:12:
utmp:x:13:
usb:x:14:
cdrom:x:15:
adm:x:16:
messagebus:x:18:

View File

@ -57,7 +57,8 @@
-Dvendorarch=/usr/lib/perl5/&perl-version-min;/vendor_perl</userinput></screen>
<variablelist>
<title>The meaning of the new Configure options:</title>
<title>The meaning of the Configure options:</title>
<varlistentry>
<term><parameter>-des</parameter></term>
<listitem>
@ -67,6 +68,35 @@
</listitem>
</varlistentry>
<varlistentry>
<term><parameter>-Dvendorprefix=/usr</parameter></term>
<listitem>
<para>This ensures <command>perl</command> knows how to
tell packages where they should install their Perl modules.</para>
</listitem>
</varlistentry>
<varlistentry>
<term><parameter>-Duseshrplib</parameter></term>
<listitem>
<para>Build <systemitem class='library'>libperl</systemitem>
needed by some Perl modules as a shared library, instead of
a static library.</para>
</listitem>
</varlistentry>
<varlistentry>
<term><parameter>-Dprivlib,-Darchlib,-Dsitelib,...</parameter></term>
<listitem>
<para>These settings define where Perl looks for installed
modules. The LFS editors chose to put them in a directory structure
based on the MAJOR.MINOR version of Perl (&perl-version-min;) which
allows upgrading Perl to newer patch levels (the patch level is
the last dot separated part in the full version string like
&perl-version;) without reinstalling all of the modules.</para>
</listitem>
</varlistentry>
</variablelist>
<para>Compile the package:</para>

View File

@ -153,7 +153,7 @@
<para>Helps to create a <filename>configure.in</filename> file for a
software package; it examines the source files in a directory tree,
searching them for common portability issues, and creates a
<filename>configure.scan</filename> file that serves as as a
<filename>configure.scan</filename> file that serves as a
preliminary <filename>configure.in</filename> file for the
package</para>
<indexterm zone="ch-system-autoconf autoscan">

View File

@ -145,14 +145,15 @@ cd build</userinput></screen>
<option>--enable-default-pie</option> and
<option>--enable-default-ssp</option> options are passed to GCC.</para>
<para>Three tests in the gprofng suite are also 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>
@ -167,7 +168,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>
@ -415,6 +417,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>

View File

@ -29,6 +29,7 @@
<xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="tcl.xml"/>
<xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="expect.xml"/>
<xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="dejagnu.xml"/>
<xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="pkgconf.xml"/>
<xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="binutils.xml"/>
<xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="gmp.xml"/>
<xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="mpfr.xml"/>
@ -39,7 +40,6 @@
<xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="libxcrypt.xml"/>
<xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="shadow.xml"/>
<xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="gcc.xml"/>
<xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="pkgconf.xml"/>
<xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="ncurses.xml"/>
<xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="sed.xml"/>
<xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="psmisc.xml"/>

View File

@ -121,7 +121,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>
@ -139,7 +139,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>

View File

@ -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>

View File

@ -42,7 +42,7 @@
<para>Build the package:</para>
<screen><userinput remap="install">pip3 wheel -w dist --no-build-isolation --no-deps $PWD</userinput></screen>
<screen><userinput remap="install">pip3 wheel -w dist --no-cache-dir --no-build-isolation --no-deps $PWD</userinput></screen>
<para>Install the package:</para>
@ -66,6 +66,15 @@
</listitem>
</varlistentry>
<varlistentry>
<term><parameter>--no-cache-dir</parameter></term>
<listitem>
<para>Prevents pip from copying the created wheel into the
<filename class='directory'>/root/.cache/pip</filename>
directory.</para>
</listitem>
</varlistentry>
<varlistentry>
<term><command>install</command></term>
<listitem>

View File

@ -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;

View File

@ -171,10 +171,10 @@ su tester -c "PATH=$PATH make -k check"</userinput></screen>
url="&test-results;"/> and
<ulink url="https://gcc.gnu.org/ml/gcc-testresults/"/>.</para>
<para>Two tests named <filename>pr104610.c</filename> and
<para><!--Two tests named <filename>pr104610.c</filename> and
<filename>pr69482-1.c</filename> are known to fail because the test
files does not account for the
<parameter>--enable-default-ssp</parameter> option.
<parameter>- -enable-default-ssp</parameter> option.-->
<!-- https://gcc.gnu.org/PR106375 and https://gcc.gnu.org/PR109353 -->
Two tests named <filename>copy.cc</filename> and
<filename>pr56837.c</filename> are known to fail.
@ -183,6 +183,17 @@ su tester -c "PATH=$PATH make -k check"</userinput></screen>
<filename class='directory'>vect</filename> directory are known to fail
if the hardware does not support AVX.</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,

View File

@ -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 two security vulnerabilities and a regression causing the
posix_memalign() function 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-upstream-fixes-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=&linux-major-version;.&linux-minor-version; \
--enable-stack-protector=strong \
--with-headers=/usr/include \
--disable-crypt \
libc_cv_slibdir=/usr/lib</userinput></screen>
<variablelist>
@ -167,10 +161,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>
@ -325,7 +321,7 @@ localedef -i ja_JP -f SHIFT_JIS ja_JP.SJIS 2> /dev/null || true</userinput></scr
<para>Create a new file <filename>/etc/nsswitch.conf</filename> by running the
following:</para>
<screen><userinput>cat &gt; /etc/nsswitch.conf &lt;&lt; "EOF"
<screen revision='sysv'><userinput>cat &gt; /etc/nsswitch.conf &lt;&lt; "EOF"
<literal># Begin /etc/nsswitch.conf
passwd: files
@ -340,6 +336,24 @@ services: files
ethers: files
rpc: files
# End /etc/nsswitch.conf</literal>
EOF</userinput></screen>
<screen revision='systemd'><userinput>cat &gt; /etc/nsswitch.conf &lt;&lt; "EOF"
<literal># Begin /etc/nsswitch.conf
passwd: files systemd
group: files systemd
shadow: files systemd
hosts: mymachines resolve [!UNAVAIL=return] files myhostname dns
networks: files
protocols: files
services: files
ethers: files
rpc: files
# End /etc/nsswitch.conf</literal>
EOF</userinput></screen>

View File

@ -54,10 +54,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>
@ -106,9 +108,11 @@ 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=x86_64-pc-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.
<!-- Some tests PASS on a specific uarch but SKIP on other CPUs.
For example on K8 the following command outputs 200. -->
<para>Ensure that at least 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>
@ -124,7 +128,7 @@ make install-html</userinput></screen>
<title>Contents of GMP</title>
<segmentedlist>
<segtitle>Installed Libraries</segtitle>
<segtitle>Installed libraries</segtitle>
<segtitle>Installed directory</segtitle>
<seglistitem>

View File

@ -42,7 +42,7 @@
<para>Build the package:</para>
<screen><userinput remap="install">pip3 wheel -w dist --no-build-isolation --no-deps $PWD</userinput></screen>
<screen><userinput remap="install">pip3 wheel -w dist --no-cache-dir --no-build-isolation --no-deps $PWD</userinput></screen>
<para>Install the package:</para>

View File

@ -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>

View File

@ -70,8 +70,8 @@ rm /usr/lib/libelf.a</userinput></screen>
<title>Contents of Libelf</title>
<segmentedlist>
<segtitle>Installed Library</segtitle>
<segtitle>Installed Directory</segtitle>
<segtitle>Installed library</segtitle>
<segtitle>Installed directory</segtitle>
<seglistitem>
<seg>

View File

@ -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 \

View File

@ -42,7 +42,7 @@
<para>Compile MarkupSafe with the following command:</para>
<screen><userinput remap="make">pip3 wheel -w dist --no-build-isolation --no-deps $PWD</userinput></screen>
<screen><userinput remap="make">pip3 wheel -w dist --no-cache-dir --no-build-isolation --no-deps $PWD</userinput></screen>
<para>This package does not come with a test suite.</para>

View File

@ -46,7 +46,7 @@
-->
<para>Compile Meson with the following command:</para>
<screen><userinput remap="make">pip3 wheel -w dist --no-build-isolation --no-deps $PWD</userinput></screen>
<screen><userinput remap="make">pip3 wheel -w dist --no-cache-dir --no-build-isolation --no-deps $PWD</userinput></screen>
<para>The test suite requires some packages outside the scope of LFS.</para>

View File

@ -69,8 +69,8 @@ make install-html</userinput></screen>
<title>Contents of MPC</title>
<segmentedlist>
<segtitle>Installed Libraries</segtitle>
<segtitle>Installed Directory</segtitle>
<segtitle>Installed libraries</segtitle>
<segtitle>Installed directory</segtitle>
<seglistitem>
<seg>libmpc.so</seg>

View File

@ -41,20 +41,6 @@
<sect2 role="installation">
<title>Installation of MPFR</title>
<!-- https://sympa.inria.fr/sympa/arc/mpfr/2023-01/msg00002.html
https://gitlab.inria.fr/mpfr/mpfr/-/commit/5172494c
Note that it's a different issue from Glibc #30068 we've fixed in
chapter08/glibc.xml with a sed. Normally we just document the
test failure, but in this case the particular subtest also serves
as an additional guard against Glibc #30068. So we apply the
upstream fix here. -->
<para>Fix a test case based on a bug of old Glibc releases:</para>
<screen><userinput remap="pre">sed -e 's/+01,234,567/+1,234,567 /' \
-e 's/13.10Pd/13Pd/' \
-i tests/tsprintf.c</userinput></screen>
<para>Prepare MPFR for compilation:</para>
<screen><userinput remap="configure">./configure --prefix=/usr \
@ -72,7 +58,7 @@ make html</userinput></screen>
Do not skip it under any circumstances.</para>
</important>
<para>Test the results and ensure that all 197 tests passed:</para>
<para>Test the results and ensure that all 198 tests passed:</para>
<screen><userinput remap="test">make check</userinput></screen>
@ -88,7 +74,7 @@ make install-html</userinput></screen>
<title>Contents of MPFR</title>
<segmentedlist>
<segtitle>Installed Libraries</segtitle>
<segtitle>Installed libraries</segtitle>
<segtitle>Installed directory</segtitle>
<seglistitem>

View File

@ -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>

View File

@ -101,21 +101,6 @@ make MANSUFFIX=ssl install</userinput></screen>
number</emphasis>.
</para>
<!-- https://bugzilla.mindrot.org/show_bug.cgi?id=3548 -->
<para>
If <application>OpenSSH</application> is installed, it will be an
exception of the general rule above. It contains an
over-restrictive OpenSSL version check, so both SSH client and SSH
server will refuse to start if OpenSSL
is updated with MAJOR version number unchanged but MINOR version
number changed. You need to rebuild
<application>OpenSSH</application> after such an upgrade.
<emphasis role='bold'>If <application>OpenSSH</application> is being
used to access the system, you must rebuild and reinstall it
after upgrading OpenSSL to a new MINOR version number before logout
or you won't be able to login via SSH anymore.</emphasis>
</para>
<para>
However, any running programs linked to those libraries need to be stopped
and restarted. Read the related entries in

View File

@ -76,15 +76,7 @@ export BUILD_BZIP2=0</userinput></screen>
-Dusethreads</userinput></screen>
<variablelist>
<title>The meaning of the configure options:</title>
<varlistentry>
<term><parameter>-Dvendorprefix=/usr</parameter></term>
<listitem>
<para>This ensures <command>perl</command> knows how to
tell packages where they should install their Perl modules.</para>
</listitem>
</varlistentry>
<title>The meaning of the new Configure options:</title>
<varlistentry>
<term><parameter>-Dpager="/usr/bin/less -isR"</parameter></term>
@ -104,13 +96,6 @@ export BUILD_BZIP2=0</userinput></screen>
</listitem>
</varlistentry>
<varlistentry>
<term><parameter>-Duseshrplib</parameter></term>
<listitem>
<para>Build a shared libperl needed by some Perl modules.</para>
</listitem>
</varlistentry>
<varlistentry>
<term><parameter>-Dusethreads</parameter></term>
<listitem>
@ -118,18 +103,6 @@ export BUILD_BZIP2=0</userinput></screen>
</listitem>
</varlistentry>
<varlistentry>
<term><parameter>-Dprivlib,-Darchlib,-Dsitelib,...</parameter></term>
<listitem>
<para>These settings define where Perl looks for installed
modules. The LFS editors chose to put them in a directory structure
based on the MAJOR.MINOR version of Perl (&perl-version-min;) which
allows upgrading Perl to newer patch levels (the patch level is
the last dot separated part in the full version string like
&perl-version;) without reinstalling all of the modules.</para>
</listitem>
</varlistentry>
</variablelist>
<para>Compile the package:</para>

View File

@ -41,8 +41,14 @@
</sect2>
<sect2 role="installation">
<title>Installation of Pkgconf</title>
<!-- https://github.com/pkgconf/pkgconf/issues/317 -->
<para>Fix a regression in pkgconf-2.0.3 breaking BLFS packages:</para>
<screen><userinput remap="pre">sed -i 's/str\(cmp.*package\)/strn\1, strlen(pkg-&gt;why)/' cli/main.c</userinput></screen>
<para>Prepare Pkgconf for compilation:</para>
<screen><userinput remap="configure">./configure --prefix=/usr \

View File

@ -67,32 +67,13 @@
<para>Compile the package:</para>
<screen><userinput remap="make">make</userinput></screen>
<!--
<para>The test suite needs some custom modifications for LFS.
Remove a test that fails when scripting does not use a tty device and
fix two others.
To run the test suite, run the following commands:</para>
<screen revision='sysv'><userinput remap="make">make</userinput></screen>
<screen revision='systemd'><userinput remap="make">make src_w_LDADD='$(LDADD) -lsystemd'</userinput></screen>
<screen><userinput remap="test">sed -i -r 's|(pmap_initname)\\\$|\1|' testsuite/pmap.test/pmap.exp
sed -i '/set tty/d' testsuite/pkill.test/pkill.exp
rm testsuite/pgrep.test/pgrep.exp
make check</userinput></screen>
-->
<para> To run the test suite, run:</para>
<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>

View File

@ -191,9 +191,9 @@ tar --strip-components=1 \
<title>Contents of Python 3</title>
<segmentedlist>
<segtitle>Installed Programs</segtitle>
<segtitle>Installed Library</segtitle>
<segtitle>Installed Directories</segtitle>
<segtitle>Installed programs</segtitle>
<segtitle>Installed library</segtitle>
<segtitle>Installed directories</segtitle>
<seglistitem>
<seg>

View File

@ -107,6 +107,7 @@ find man -name Makefile.in -exec sed -i 's/passwd\.5 / /' {} \;</userinput></s
./configure --sysconfdir=/etc \
--disable-static \
--with-{b,yes}crypt \
--without-libbsd \
--with-group-name-max-length=32</userinput></screen>
<variablelist>
@ -144,6 +145,14 @@ find man -name Makefile.in -exec sed -i 's/passwd\.5 / /' {} \;</userinput></s
</listitem>
</varlistentry>
<varlistentry>
<term><parameter>--without-libbsd</parameter></term>
<listitem>
<para>Do not use the readpassphrase function from libbsd which
is not in LFS. Use the internal copy instead.</para>
</listitem>
</varlistentry>
</variablelist>
<para>Compile the package:</para>

View File

@ -29,9 +29,12 @@
needed by the linker (for static libraries) or dynamic linker (for
dynamically linked binaries and shared libraries).</para>
<para>The debugging symbols from selected libraries are preserved
in separate files. That debugging information is needed to run
regression tests with <ulink
<!-- TODO: Zstd is better than Zlib for both speed and size.
Unfortunately Valgrind does not support Zstd-compressed debug
info yet: https://bugs.kde.org/show_bug.cgi?id=469782 -->
<para>The debugging symbols from selected libraries are compressed with
<application>Zlib</application> and preserved in separate files. That
debugging information is needed to run regression tests with <ulink
url='&blfs-book;/general/valgrind.html'>valgrind</ulink> or <ulink
url='&blfs-book;/general/gdb.html'>gdb</ulink> later, in BLFS.
</para>
@ -78,7 +81,7 @@
cd /usr/lib
for LIB in $save_usrlib; do
objcopy --only-keep-debug $LIB $LIB.dbg
objcopy --only-keep-debug --compress-debug-sections=zlib $LIB $LIB.dbg
cp $LIB /tmp/$LIB
strip --strip-unneeded /tmp/$LIB
objcopy --add-gnu-debuglink=$LIB.dbg /tmp/$LIB
@ -88,12 +91,13 @@ 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
libreadline.so.&readline-soversion;
libz.so.&zlib-version;
libzstd.so.&zstd-version;
$(cd /usr/lib; find libnss*.so* -type f)"
for BIN in $online_usrbin; do

View File

@ -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
@ -81,6 +68,7 @@ meson setup \
-Dmode=release \
-Dpamconfdir=no \
-Ddev-kvm-mode=0660 \
-Dnobody-group=nogroup \
-Ddocdir=/usr/share/doc/systemd-&systemd-version; \
..</userinput></screen>
@ -191,6 +179,14 @@ meson setup \
consider it dangerous. This option overrides it.</para>
</listitem>
</varlistentry>
<varlistentry>
<term><parameter>-Dnobody-group=nogroup</parameter></term>
<listitem>
<para>Tell the package the group name with GID 65534 is
<systemitem class='groupname'>nogroup</systemitem>.</para>
</listitem>
</varlistentry>
</variablelist>
<para>Compile the package:</para>
@ -205,7 +201,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 +242,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,

View File

@ -72,9 +72,17 @@
<screen><userinput remap="test">make check</userinput></screen>
<!-- On one system the -j4 improvement is 167s - 46s = 121s (72.46%) -->
<note><para>The test time for Tar can be reduced significantly on a
system with multiple cores. To do this, append
<command>TESTSUITEFLAGS=-j&lt;N&gt;</command> to the line above. For
instance, using -j4 can reduce the test time by over 70
percent.</para></note>
<para>One test, capabilities: binary store/restore, is known to fail if it is
run because LFS lacks selinux, but will be skipped if the host kernel does
not support extended attributes on the filesystem used for building LFS.</para>
not support extended attributes or security labels on the filesystem
used for building LFS.</para>
<para>Install the package:</para>

View File

@ -127,7 +127,7 @@ meson setup \
install -vm755 -d /usr/{lib,share}/pkgconfig
install -vm755 udevadm /usr/bin/
install -vm755 systemd-hwdb /usr/bin/udev-hwdb
ln -sv ../bin/udevadm /usr/sbin/udevd
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/
@ -147,11 +147,12 @@ make -f &udev-lfs-version;/Makefile.lfs install</userinput></screen>
<!-- Please make sure systemd man pages tarball has a common leading
component in the path. -->
<screen><userinput remap="install">tar -xf ../../systemd-man-pages-253.tar.xz --strip-components=1 \
<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-/' /usr/share/man/man8/systemd-hwdb.8 \
> /usr/share/man/man8/udev-hwdb.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

View File

@ -42,7 +42,7 @@
<sect2 role="installation">
<title>Installation of Util-linux</title>
<para>First, disable a problem test:</para>
<para>First, disable a problematic test:</para>
<screen><userinput remap="pre">sed -i '/test_mkfds/s/^/#/' tests/helpers/Makemodule.am</userinput></screen>
@ -1230,7 +1230,8 @@ su tester -c "make -k check"</userinput></screen>
<para>Creates new UUIDs. Each new UUID is a random number likely to be
unique among all UUIDs created, on the local system and on other
systems, in the past and in the future, with extremely high
probability (~340 trillion trillion trillion unique UUIDs are possible)</para>
probability (2<superscript>128</superscript> UUIDs are
possible)</para>
<indexterm zone="ch-system-util-linux uuidgen">
<primary sortas="b-uuidgen">uuidgen</primary>
</indexterm>

View File

@ -42,7 +42,7 @@
<para>Compile Wheel with the following command:</para>
<screen><userinput remap="make">pip3 wheel -w dist --no-build-isolation --no-deps $PWD</userinput></screen>
<screen><userinput remap="make">pip3 wheel -w dist --no-cache-dir --no-build-isolation --no-deps $PWD</userinput></screen>
<para>Install Wheel with the following command:</para>

View File

@ -178,9 +178,10 @@ EOF</userinput></screen>
<secondary>/etc/hosts</secondary>
</indexterm>
<para>Decide on the IP address, fully-qualified domain name (FQDN), and
possible aliases for use in the <filename>/etc/hosts</filename> file. The
syntax is:</para>
<para>Decide on a fully-qualified domain name (FQDN), and possible aliases
for use in the <filename>/etc/hosts</filename> file. If using static IP
addresses, you'll also need to decide on an IP address. The syntax
for a hosts file entry is:</para>
<screen><literal>IP_address myhost.example.org aliases</literal></screen>
@ -197,11 +198,18 @@ EOF</userinput></screen>
<para>x can be any number in the range 16-31. y can be any number in the
range 0-255.</para>
<para>A valid private IP address could be 192.168.1.1. A valid FQDN for
this IP could be lfs.example.org.</para>
<para>A valid private IP address could be 192.168.1.1.</para>
<para>Even if not using a network card, a valid FQDN is still required.
This is necessary for certain programs to operate correctly.</para>
<para>If the computer is to be visible to the Internet, a valid FQDN
can be the domain name itself, or a string resulted by concatenating a
prefix (often the hostname) and the domain name with a <quote>.</quote>
character. And, you need to contact the domain provider to resolve the
FQDN to your public IP address.</para>
<para>Even if the computer is not visible to the Internet, a FQDN is
still needed for certain programs, such as MTAs, to operate properly.
A special FQDN, <literal>localhost.localdomain</literal>, can be used
for this purpose.</para>
<para>Create the <filename>/etc/hosts</filename> file by running:</para>

View File

@ -316,27 +316,18 @@ EOF</userinput></screen>
<para>x can be any number in the range 16-31. y can be any number in the
range 0-255.</para>
<para>A valid private IP address could be 192.168.1.1. A valid FQDN for
this IP could be lfs.example.org.</para>
<para>A valid private IP address could be 192.168.1.1.</para>
<para>Even if not using a network card, a valid FQDN is still required.
This is necessary for certain programs, such as MTAs, to operate properly.</para>
<para>If the computer is to be visible to the Internet, a valid FQDN
can be the domain name itself, or a string resulted by concatenating a
prefix (often the hostname) and the domain name with a <quote>.</quote>
character. And, you need to contact the domain provider to resolve the
FQDN to your public IP address.</para>
<!--
<para>Create the /etc/hosts file using the following command:</para>
<screen role="nodump"><userinput>cat &gt; /etc/hosts &lt;&lt; "EOF"
<literal># Begin /etc/hosts
127.0.0.1 localhost.localdomain localhost
127.0.1.1 <replaceable>&lt;FQDN&gt;</replaceable> <replaceable>&lt;HOSTNAME&gt;</replaceable>
::1 localhost ip6-localhost ip6-loopback
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters
# End /etc/hosts</literal>
EOF</userinput></screen>
-->
<para>Even if the computer is not visible to the Internet, a FQDN is
still needed for certain programs, such as MTAs, to operate properly.
A special FQDN, <literal>localhost.localdomain</literal>, can be used
for this purpose.</para>
<para>Create the <filename>/etc/hosts</filename> file using the following
command:</para>
@ -344,28 +335,32 @@ EOF</userinput></screen>
<screen><userinput>cat &gt; /etc/hosts &lt;&lt; "EOF"
<literal># Begin /etc/hosts
127.0.0.1 localhost.localdomain localhost
127.0.1.1 <replaceable>&lt;FQDN&gt;</replaceable> <replaceable>&lt;HOSTNAME&gt;</replaceable>
<replaceable>&lt;192.168.0.2&gt;</replaceable> <replaceable>&lt;FQDN&gt;</replaceable> <replaceable>&lt;HOSTNAME&gt;</replaceable> <replaceable>[alias1] [alias2] ...</replaceable>
::1 localhost ip6-localhost ip6-loopback
<replaceable>&lt;192.168.0.2&gt;</replaceable> <replaceable>&lt;FQDN&gt;</replaceable> <replaceable>[alias1] [alias2] ...</replaceable>
::1 ip6-localhost ip6-loopback
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters
# End /etc/hosts</literal>
EOF</userinput></screen>
<para>The <replaceable>&lt;192.168.0.2&gt;</replaceable>,
<replaceable>&lt;FQDN&gt;</replaceable>, and
<replaceable>&lt;HOSTNAME&gt;</replaceable> values need to be
<para>The <replaceable>&lt;192.168.0.2&gt;</replaceable> and
<replaceable>&lt;FQDN&gt;</replaceable> values need to be
changed for specific uses or requirements (if assigned an IP address by a
network/system administrator and the machine will be connected to an
existing network). The optional alias name(s) can be omitted, and the
<replaceable>&lt;192.168.0.2&gt;</replaceable> line can be omitted if you
are using a connection configured with DHCP or IPv6 Autoconfiguration.</para>
are using a connection configured with DHCP or IPv6 Autoconfiguration,
or using <literal>localhost.localdomain</literal> as the FQDN.</para>
<para>The <filename>/etc/hostname</filename> does not contain entries
for <literal>localhost</literal>,
<literal>localhost.localdomain</literal>, or the hostname (without a
domain) because they are handled by the
<systemitem class='library'>myhostname</systemitem> NSS module, read
the man page <filename>nss-myhostname(8)</filename> for details.</para>
<para>The ::1 entry is the IPv6 counterpart of 127.0.0.1 and represents
the IPv6 loopback interface. 127.0.1.1 is a loopback entry reserved
specifically for the FQDN.</para>
the IPv6 loopback interface.</para>
</sect2>

View File

@ -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>

View File

@ -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
# file system mount-point type options dump fsck
# order
/dev/<replaceable>sda</replaceable>3 / ext4 defaults 1 1
/dev/<replaceable>sda</replaceable>2 /boot ext4 defaults 0 2
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
/dev/<replaceable>sda</replaceable>2 / <replaceable>&lt;fff&gt;</replaceable> defaults 1 1
/dev/<replaceable>sda</replaceable>3 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>

View File

@ -19,8 +19,10 @@
<note>
<para>
If your system has UEFI support and you wish to boot LFS with UEFI,
you should skip this page, and configure GRUB with UEFI support
using the instructions provided in
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
support using the instructions provided in
<ulink url="&blfs-book;postlfs/grub-setup.html">the BLFS page</ulink>.
</para>
</note>
@ -126,6 +128,7 @@ xorriso -as cdrecord -v dev=/dev/cdrw blank=as_needed grub-img.iso</userinput></
set default=0
set timeout=5
insmod part_gpt
insmod ext2
set root=(hd0,2)
@ -134,6 +137,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

View File

@ -122,6 +122,7 @@
<note>
<?dbfo keep-together="auto"?>
<para>A good starting place for setting up the kernel configuration is to
run <command>make defconfig</command>. This will set the base
configuration to a good state that takes your current system architecture
@ -130,67 +131,16 @@
<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;
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>
<!-- To editors: for updating kernel configuration, edit
kernel/*.toml and regenerate kernel/*.xml with
"make -C kernel KERNEL_TREE=</usr/src/linux-&linux-version> -->
<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]
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>
<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>Enable some additional features if you are building a 64-bit
system. If you are using menuconfig, enable them in the order of
<parameter>CONFIG_PCI_MSI</parameter> first, then
@ -198,30 +148,23 @@ File systems ---&gt;
<parameter>CONFIG_X86_X2APIC</parameter> because an option only
shows up after its dependencies are selected.</para>
<screen role="nodump">Processor type and features ---&gt;
[*] Support x2apic [CONFIG_X86_X2APIC]
Device Drivers ---&gt;
[*] PCI Support ---&gt; [CONFIG_PCI]
[*] Message Signaled Interrupts (MSI and MSI-X) [CONFIG_PCI_MSI]
[*] IOMMU Hardware Support ---&gt; [CONFIG_IOMMU_SUPPORT]
[*] Support for Interrupt Remapping [CONFIG_IRQ_REMAP]</screen>
<xi:include xmlns:xi="http://www.w3.org/2001/XInclude"
href="kernel/x2apic.xml"/>
<para>If you are building a 32-bit system running on a hardware
with RAM more than 4GB, adjust the configuration so the kernel will
be able to use up to 64GB physical RAM:</para>
<screen role="nodump">Processor type and features ---&gt;
High Memory Support ---&gt;
(X) 64GB [CONFIG_HIGHMEM64G]</screen>
<xi:include xmlns:xi="http://www.w3.org/2001/XInclude"
href="kernel/highmem.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">
@ -349,7 +292,7 @@ Device Drivers ---&gt;
<para>Support running the interrupt controller of 64-bit x86
processors in x2APIC mode. x2APIC may be enabled by firmware on
64-bit x86 systems, and a kernel without this option enabled will
panic on boot if x2APIC is enabled by firmware. This option has
panic on boot if x2APIC is enabled by firmware. This option
has no effect, but also does no harm if x2APIC is disabled by the
firmware.</para>
</listitem>

2
chapter10/kernel/.gitignore vendored Normal file
View File

@ -0,0 +1,2 @@
__pycache__
s-kernel-version

23
chapter10/kernel/Makefile Normal file
View File

@ -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) $< > $@

View File

@ -0,0 +1 @@
HIGHMEM64G='X'

View File

@ -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>

298
chapter10/kernel/kernel-config.py Executable file
View File

@ -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))

View File

@ -0,0 +1 @@
6.4.8

View File

@ -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))

View File

@ -0,0 +1 @@
BLK_DEV_NVME='*'

View File

@ -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>

View File

@ -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'

View File

@ -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>

View File

@ -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'

35
chapter10/kernel/sysv.xml Normal file
View File

@ -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>

View File

@ -0,0 +1,5 @@
X86_X2APIC='*'
PCI='*'
PCI_MSI='*'
IOMMU_SUPPORT='*'
IRQ_REMAP='*'

View File

@ -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>

View File

@ -103,6 +103,7 @@
<!ENTITY erratad "&lfs-root;lfs/errata/&generic-versiond;/">
-->
<!ENTITY lfs-ticket-root "https://wiki.linuxfromscratch.org/lfs/ticket/">
<!ENTITY blfs-ticket-root "https://wiki.linuxfromscratch.org/blfs/ticket/">
<!ENTITY anduin-sources "https://anduin.linuxfromscratch.org/LFS">

View File

@ -1,4 +1,4 @@
#!/bin/sh
#!/bin/bash
if [ "$1" = sysv ]; then
SYSV="INCLUDE"
@ -14,6 +14,10 @@ fi
echo "<!ENTITY % sysv \"$SYSV\">" > conditional.ent
echo "<!ENTITY % systemd \"$SYSTEMD\">" >> conditional.ent
if [ -e LFS-RELEASE ]; then
exit 0
fi
if ! git status > /dev/null; then
# Either it's not a git repository, or git is unavaliable.
# Just workaround.
@ -24,7 +28,7 @@ if ! git status > /dev/null; then
echo "<!ENTITY version \"unknown-systemd\">" >> version.ent
echo "]]>" >> version.ent
echo "<!ENTITY releasedate \"unknown\">" >> version.ent
echo "<!ENTITY copyrightdate \"1999-2022\">" >> version.ent
echo "<!ENTITY copyrightdate \"1999-2023\">" >> version.ent
exit 0
fi
@ -65,3 +69,5 @@ echo "<!ENTITY version \"$versiond\">" >> version.ent
echo "]]>" >> version.ent
echo "<!ENTITY releasedate \"$full_date\">" >> version.ent
echo "<!ENTITY copyrightdate \"1999-$year\">" >> version.ent
[ -z "$DIST" ] || echo $version > "$DIST"

View File

@ -150,6 +150,7 @@ if ( $package == "tcl" ) $dirpath = "https://www.tcl.tk/software/tcltk/do
if ( $package == "util-linux" ) $dirpath = max_parent( $dirpath, "v." );
if ( $package == "vim" ) $dirpath = "https://github.com/vim/vim/tags";
if ( $package == "wheel" ) $dirpath = "https://pypi.org/project/wheel/#files";
if ( $package == "zlib" ) $dirpath = "https://www.zlib.net";
if ( $package == "zstd" ) $dirpath = github("facebook/zstd");
// Check for ftp

View File

@ -1,481 +0,0 @@
#! /usr/bin/php
<?php
$dirs = array();
$vers = array();
date_default_timezone_set( "GMT" );
$date = date( "Y-m-d H:i:s" );
// Special cases
$exceptions = array();
//$exceptions[ 'gmp' ] = "UPDIR=/.*(gmp-\d[\d\.-]*\d).*/:DOWNDIR=";
$regex = array();
//$regex[ 'bzip2' ] = "/^.*current version is ([\d\.]+).*$/";
$regex[ 'check' ] = "/^.*Check (\d[\d\.]+\d).*$/";
$regex[ 'intltool' ] = "/^.*Latest version is (\d[\d\.]+\d).*$/";
$regex[ 'less' ] = "/^.*current released version is less-(\d+).*$/";
$regex[ 'mpfr' ] = "/^mpfr-([\d\.]+)\.tar.*$/";
$regex[ 'Python' ] = "/^.*Latest Python 3.*Python (3[\d\.]+\d).*$/";
$regex[ 'systemd' ] = "/^.*v([\d]+)$/";
//$regex[ 'sysvinit' ] = "/^.*sysvinit-([\d\.]+)dsf\.tar.*$/";
$regex[ 'tzdata' ] = "/^.*tzdata([\d]+[a-z]).*$/";
$regex[ 'xz' ] = "/^.*xz-([\d\.]*\d).*$/";
$regex[ 'zlib' ] = "/^.*zlib ([\d\.]*\d).*$/";
function find_max( $lines, $regex_match, $regex_replace )
{
$a = array();
if ( ! is_array( $lines ) ) return -1;
foreach ( $lines as $line )
{
if ( ! preg_match( $regex_match, $line ) ) continue;
// Isolate the version and put in an array
$slice = preg_replace( $regex_replace, "$1", $line );
if ( $slice == $line ) continue;
array_push( $a, $slice );
}
// SORT_NATURAL requires php-5.4.0 or later
rsort( $a, SORT_NATURAL ); // Max version is at the top
return ( isset( $a[0] ) ) ? $a[0] : -2;
}
function find_even_max( $lines, $regex_match, $regex_replace )
{
$a = array();
foreach ( $lines as $line )
{
if ( ! preg_match( $regex_match, $line ) ) continue;
// Isolate the version and put in an array
$slice = preg_replace( $regex_replace, "$1", $line );
if ( "x$slice" == "x$line" ) continue;
// Skip odd numbered minor versions and minors > 80
list( $major, $minor, $rest ) = explode( ".", $slice . ".0" );
if ( $minor % 2 == 1 ) continue;
if ( $minor > 80 ) continue;
array_push( $a, $slice );
}
rsort( $a, SORT_NATURAL ); // Max version is at the top
return ( isset( $a[0] ) ) ? $a[0] : -2;
}
function http_get_file( $url )
{
if ( ! preg_match( "/sourceforge/", $url ) &&
! preg_match( "/psmisc/", $url ) )
{
exec( "curl --location --silent --max-time 30 $url", $dir );
$s = implode( "\n", $dir );
$dir = strip_tags( $s );
return explode( "\n", $dir );
}
else
{
exec( "links -dump $url 2>/dev/null", $lines );
return $lines;
}
}
function max_parent( $dirpath, $prefix )
{
// First, remove a directory
$dirpath = rtrim ( $dirpath, "/" ); // Trim any trailing slash
$position = strrpos( $dirpath, "/" );
$dirpath = substr ( $dirpath, 0, $position );
$lines = http_get_file( $dirpath );
$regex_match = "#${prefix}[\d\.]+/#";
$regex_replace = "#^.*(${prefix}[\d\.]+)/.*$#";
$max = find_max( $lines, $regex_match, $regex_replace );
return "$dirpath/$max";
}
function get_packages( $package, $dirpath )
{
global $exceptions;
global $regex;
//if ( $package != "psmisc" ) return 0; // Debug
if ( $package == "bc" ) $dirpath = "https://github.com/gavinhoward/bc/releases";
if ( $package == "check" ) $dirpath = "https://github.com/libcheck/check/releases";
if ( $package == "e2fsprogs" ) $dirpath = "http://sourceforge.net/projects/e2fsprogs/files/e2fsprogs";
if ( $package == "expat" ) $dirpath = "http://sourceforge.net/projects/expat/files";
if ( $package == "elfutils" ) $dirpath = "https://sourceware.org/ftp/elfutils";
if ( $package == "expect" ) $dirpath = "http://sourceforge.net/projects/expect/files";
if ( $package == "file" ) $dirpath = "https://github.com/file/file/releases";
if ( $package == "flex" ) $dirpath = "https://github.com/westes/flex/releases";
if ( $package == "gcc" ) $dirpath = max_parent( $dirpath, "gcc-" );
if ( $package == "iana-etc" ) $dirpath = "https://github.com/Mic92/iana-etc/releases";
if ( $package == "intltool" ) $dirpath = "https://launchpad.net/intltool/trunk";
if ( $package == "meson" ) $dirpath = "https://github.com/mesonbuild/meson/releases";
if ( $package == "mpc" ) $dirpath = "https://ftp.gnu.org/gnu/mpc";
if ( $package == "mpfr" ) $dirpath = "http://mpfr.loria.fr/mpfr-current";
if ( $package == "ninja" ) $dirpath = "https://github.com/ninja-build/ninja/releases";
if ( $package == "procps-ng" ) $dirpath = "https://gitlab.com/procps-ng/procps/-/tags";
if ( $package == "psmisc" ) $dirpath = "https://gitlab.com/psmisc/psmisc/-/tags";
if ( $package == "Python" ) $dirpath = "https://www.python.org/downloads/source/";
if ( $package == "shadow" ) $dirpath = "https://github.com/shadow-maint/shadow/releases";
if ( $package == "systemd" ) $dirpath = "https://github.com/systemd/systemd/releases";
if ( $package == "tcl" ) $dirpath = "http://sourceforge.net/projects/tcl/files";
if ( $package == "util-linux" ) $dirpath = max_parent( $dirpath, "v." );
if ( $package == "vim" ) $dirpath = "https://github.com/vim/vim/releases";
if ( $package == "zstd" ) $dirpath = "https://github.com/facebook/zstd/releases";
//if ( $package == "vim" ) $dirpath = "ftp://ftp.vim.org/pub/vim/unix";
// Check for ftp
if ( preg_match( "/^ftp/", $dirpath ) )
{
$dirpath = substr( $dirpath, 6 ); // Remove ftp://
$dirpath = rtrim ( $dirpath, "/" ); // Trim any trailing slash
$position = strpos( $dirpath, "/" ); // Divide at first slash
$server = substr( $dirpath, 0, $position );
$path = substr( $dirpath, $position );
$conn = ftp_connect( $server );
ftp_login( $conn, "anonymous", "" );
// See if we need special handling
if ( isset( $exceptions[ $package ] ) )
{
$specials = explode( ":", $exceptions[ $package ] );
foreach ( $specials as $i )
{
list( $op, $regexp ) = explode( "=", $i );
switch ($op)
{
case "UPDIR":
// Remove last dir from $path
$position = strrpos( $path, "/" );
$path = substr( $path, 0, $position );
// Get dir listing
$lines = ftp_rawlist ($conn, $path);
$max = find_max( $lines, $regexp, $regexp );
break;
case "DOWNDIR":
// Append found directory
$path .= "/$max";
break;
default:
echo "Error in specials array for $package\n";
return -5;
break;
}
}
}
$lines = ftp_rawlist ($conn, $path);
ftp_close( $conn );
}
else // http
{
// Customize http directories as needed
if ( $package == "tzdata" )
{
// Remove two directories
$dirpath = rtrim ( $dirpath, "/" ); // Trim any trailing slash
$position = strrpos( $dirpath, "/" );
$dirpath = substr ( $dirpath, 0, $position );
$position = strrpos( $dirpath, "/" );
$dirpath = substr ( $dirpath, 0, $position );
}
//if ( $package == "bzip2" )
//{
// // Remove one directory
// $dirpath = rtrim ( $dirpath, "/" ); // Trim any trailing slash
// $position = strrpos( $dirpath, "/" );
// $dirpath = substr ( $dirpath, 0, $position );
//}
$lines = http_get_file( $dirpath );
if ( ! is_array( $lines ) ) return -6;
} // End fetch
//print_r($lines);
if ( isset( $regex[ $package ] ) )
{
// Custom search for latest package name
foreach ( $lines as $l )
{
$ver = preg_replace( $regex[ $package ], "$1", $l );
if ( $ver == $l ) continue;
return $ver; // Return first match of regex
}
return -7; // This is an error
}
if ( $package == "perl" ) // Custom for perl
{
$tmp = array();
foreach ( $lines as $l )
{
if ( preg_match( "/sperl/", $l ) ) continue; // Don't want this
$ver = preg_replace( "/^.*perl-([\d\.]+\d)\.tar.*$/", "$1", $l );
if ( $ver == $l ) continue;
list( $s1, $s2, $rest ) = explode( ".", $ver );
if ( $s2 % 2 == 1 ) continue; // Remove odd minor versions
array_push( $tmp, $l );
}
$lines = $tmp;
}
if ( $package == "attr" ||
$package == "acl" )
{
return find_max( $lines, "/$package/", "/^.*$package-([\d\.-]*\d).tar.*$/" );
}
if ( $package == "e2fsprogs" )
return find_max( $lines, "/v\d/", "/^.*v(\d[\d\.]+\d).*$/" );
if ( $package == "expect" )
return find_max( $lines, "/expect/", "/^.*expect(\d[\d\.]+\d).tar.*$/" );
if ( $package == "elfutils" )
return find_max( $lines, "/^\d/", "/^(\d[\d\.]+\d)\/.*$/" );
if ( $package == "XML-Parser" )
{
$max = find_max( $lines, "/$package/", "/^.*$package-([\d\._]*\d).tar.*$/" );
# 2.44_01 is a developer release
if ( $max == "2.44_01" ) { return "2.44"; }
return $max;
}
if ( $package == "tcl" )
return find_max( $lines, "/tcl/", "/^.*tcl(\d[\d\.]*\d)-src.*$/" );
if ( $package == "ninja" )
return find_max( $lines, "/v\d/", "/^.*v(\d[\d\.]*\d).*$/" );
if ( $package == "gmp" )
return find_max( $lines, "/$package/", "/^.*$package-([\d\._]*\d[a-z]?).tar.*$/" );
if ( $package == "dbus" )
return find_even_max( $lines, "/$package/", "/^.*$package-([\d\.]+).tar.*$/" );
if ( $package == "file" )
{
$max = find_max( $lines, "/FILE5/", "/^.*FILE(5_\d+)*$/" );
return str_replace( "_", ".", $max );
}
if ( $package == "procps-ng" )
return find_max( $lines, "/v\d/", "/^.*v([\d\.]+)$/" );
if ( $package == "psmisc" )
return find_max( $lines, "/v\d/", "/^.*v([\d\.]+) .*$/" );
if ( $package == "grub" )
return find_max( $lines, "/grub/", "/^.*grub-(\d\..*).tar.xz.*$/" );
if ( $package == "openssl" )
return find_max( $lines, "/openssl/", "/^.*openssl-([\d\.p]*\d.?).tar.*$/" );
if ( $package == "vim" )
return find_max( $lines, "/v\d\./", "/^.*v([\d\.]+).*$/" );
if ( $package == "zstd" )
return find_max( $lines, "/Zstandard v/", "/^.*v([\d\.]+).*$/" );
// Most packages are in the form $package-n.n.n
// Occasionally there are dashes (e.g. 201-1)
return find_max( $lines, "/$package/", "/^.*$package-([\d\.-]*\d)\.tar.*$/" );
}
function get_current()
{
global $dirs;
global $vers;
// Fetech from svn and get wget-list
$current = array();
$lfssvn = "svn://svn.linuxfromscratch.org/LFS/trunk";
$tmpdir = exec( "mktemp -d /tmp/lfscheck.XXXXXX" );
$cdir = getcwd();
chdir( $tmpdir );
exec ( "svn --quiet export $lfssvn LFS" );
chdir( $cdir );
$PAGE = "$tmpdir/LFS/BOOK/chapter03/chapter03.xml";
$STYLESHEET = "$tmpdir/LFS/BOOK/stylesheets/wget-list.xsl";
exec( "xsltproc --xinclude --nonet $STYLESHEET $PAGE", $current );
exec( "rm -rf $tmpdir" );
foreach ( $current as $line )
{
$file = basename( $line ) . "\n";
if ( preg_match( "/patch$/", $file ) ) { continue; } // Skip patches
$file = preg_replace( "/bz2/", '', $file ); // The 2 confusses the regex
$file = rtrim( $file );
$pkg_pattern = "/(\D*).*/";
//$pattern = "/\D*(\d.*\d)\D*/";
$pattern = "/\D*(\d.*\d)\D*/";
if ( preg_match( "/e2fsprogs/", $file ) )
{
$pattern = "/e2\D*(\d.*\d)\D*/";
$pkg_pattern = "/(e2\D*).*/";
}
else if ( preg_match( "/tzdata/", $file ) )
{
$pattern = "/\D*(\d.*[a-z])\.tar\D*/";
}
else if ( preg_match( "/openssl/", $file ) )
{
$pattern = "/\D*(\d.*\d.*).tar.*$/";
}
else if ( preg_match( "/gmp/", $file ) )
{
$pattern = "/\D*(\d.*[a-z]*)\.tar\D*/";
}
else if ( preg_match( "/systemd-man-pages/", $file ) ) continue;
else if ( preg_match( "/python/" , $file ) ) continue;
$version = preg_replace( $pattern, "$1", $file ); // Isolate version
$version = preg_replace( "/^\d-/", "", $version ); // Remove leading #-
// Touch up package names
$pkg_name = preg_replace( $pkg_pattern, "$1", $file );
$pkg_name = trim( $pkg_name, "-" );
if ( preg_match( "/bzip|iproute/", $pkg_name ) ) { $pkg_name .= "2"; }
if ( preg_match( "/^m$/" , $pkg_name ) ) { $pkg_name .= "4"; }
if ( preg_match( "/shadow/" , $pkg_name ) ) { $pkg_name = "shadow"; }
$dirs[ $pkg_name ] = dirname( $line );
$vers[ $pkg_name ] = $version;
}
}
function mail_to_lfs()
{
global $date;
global $vers;
global $dirs;
//$to = "bruce.dubbs@gmail.com";
$to = "lfs-book@lists.linuxfromscratch.org";
$from = "bdubbs@linuxfromscratch.org";
$subject = "LFS Package Currency Check - $date GMT";
$headers = "From: bdubbs@anduin.linuxfromscratch.org";
$message = "Package LFS Upstream Flag\n\n";
foreach ( $dirs as $pkg => $dir )
{
//if ( $pkg != "gmp" ) continue; //debug
$v = get_packages( $pkg, $dir );
$flag = ( $vers[ $pkg ] != $v ) ? "*" : "";
// Pad for output
$pad = " ";
$p = substr( $pkg . $pad, 0, 15 );
$l = substr( $vers[ $pkg ] . $pad, 0, 10 );
$c = substr( $v . $pad, 0, 10 );
$message .= "$p $l $c $flag\n";
}
exec ( "echo '$message' | mailx -r $from -s '$subject' $to" );
//echo $message;
}
function html()
{
global $date;
global $vers;
global $dirs;
echo "<!DOCTYPE html PUBLIC '-//W3C//DTD XHTML 1.0 Strict//EN'
'http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd'>
<html xmlns='http://www.w3.org/1999/xhtml' xml:lang='en' lang='en'>
<head>
<title>LFS Package Currency Check - $date</title>
<style type='text/css'>
h1, h2 {
text-align : center;
}
table {
border-width : 1px;
border-spacing : 0px;
border-style : outset;
border-color : gray;
border-collapse : separate;
background-color: white;
margin : 0px auto;
}
table th {
border-width : 1px;
padding : 2px;
border-style : inset;
border-color : gray;
background-color: white;
}
table td {
border-width : 1px;
padding : 2px;
border-style : inset;
border-color : gray;
background-color: white;
}
</style>
</head>
<body>
<h1>LFS Package Currency Check</h1>
<h2>As of $date GMT</h1>
<table>
<tr><th>LFS Package</th> <th>LFS Version</th> <th>Latest</th> <th>Flag</th></tr>\n";
// Get the latest version of each package
foreach ( $dirs as $pkg => $dir )
{
$v = get_packages( $pkg, $dir );
$flag = ( $vers[ $pkg ] != $v ) ? "*" : "";
echo "<tr><td>$pkg</td> <td>${vers[ $pkg ]}</td> <td>$v</td> <td>$flag</td></tr>\n";
}
echo "</table>
</body>
</html>\n";
}
get_current(); // Get what is in the book
mail_to_lfs();
//html(); // Write html output
?>

1
lfs-latest.php Symbolic link
View File

@ -0,0 +1 @@
lfs-latest-git.php

View File

@ -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
#

View File

@ -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,24 +102,24 @@
<!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-version "9.4">
<!ENTITY coreutils-size "5,840 KB">
<!ENTITY coreutils-url "&gnu;coreutils/coreutils-&coreutils-version;.tar.xz">
<!ENTITY coreutils-md5 "040b4b7acaf89499834bfc79609af29f">
<!ENTITY coreutils-md5 "459e9546074db2834eefe5421f250025">
<!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">
<!ENTITY dbus-size "1,340 KB">
<!ENTITY dbus-version "1.14.10">
<!ENTITY dbus-size "1,344 KB">
<!ENTITY dbus-url "https://dbus.freedesktop.org/releases/dbus/dbus-&dbus-version;.tar.xz">
<!ENTITY dbus-md5 "da42f55aeec51b355587bc3062fc2d41">
<!ENTITY dbus-md5 "46070a3487817ff690981f8cd2ba9376">
<!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,14 +146,14 @@
<!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 expat-version "2.5.0">
@ -172,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">
@ -188,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">
@ -205,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">
@ -213,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">
@ -251,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">
@ -287,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">
@ -297,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">
@ -310,20 +310,20 @@
<!ENTITY grub-tmp-du "161 MB">
<!ENTITY grub-tmp-sbu "0.3 SBU">
<!ENTITY gzip-version "1.12">
<!ENTITY gzip-size "807 KB">
<!ENTITY gzip-version "1.13">
<!ENTITY gzip-size "819 KB">
<!ENTITY gzip-url "&gnu;gzip/gzip-&gzip-version;.tar.xz">
<!ENTITY gzip-md5 "9608e4ac5f061b2a6479dc44e917a5db">
<!ENTITY gzip-md5 "d5c9fc9441288817a4a0be2da0249e29">
<!ENTITY gzip-home "&gnu-software;gzip/">
<!ENTITY gzip-tmp-du "11 MB">
<!ENTITY gzip-tmp-sbu "0.1 SBU">
<!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">
@ -363,10 +363,10 @@
<!ENTITY jinja2-fin-du "3.4 MB">
<!ENTITY jinja2-fin-sbu "less than 0.1 SBU">
<!ENTITY kbd-version "2.6.1">
<!ENTITY kbd-size "1,554 KB">
<!ENTITY kbd-version "2.6.2">
<!ENTITY kbd-size "1,469 KB">
<!ENTITY kbd-url "https://www.kernel.org/pub/linux/utils/kbd/kbd-&kbd-version;.tar.xz">
<!ENTITY kbd-md5 "986241b5d94c6bd4ed2f6d2a5ab4320b">
<!ENTITY kbd-md5 "35e261a31e673c8aec7dbc6553ea075c">
<!ENTITY kbd-home "https://kbd-project.org/">
<!ENTITY kbd-fin-du "35 MB">
<!ENTITY kbd-fin-sbu "0.1 SBU">
@ -375,19 +375,19 @@
<!ENTITY kmod-size "555 KB">
<!ENTITY kmod-url "&kernel;linux/utils/kernel/kmod/kmod-&kmod-version;.tar.xz">
<!ENTITY kmod-md5 "85202f0740a75eb52f2163c776f9b564">
<!ENTITY kmod-home " ">
<!ENTITY kmod-home "https://github.com/kmod-project/kmod">
<!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 "20230722"> <!-- 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">
@ -424,25 +424,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-minor-version "5">
<!ENTITY linux-patch-version "1">
<!--<!ENTITY linux-version "&linux-major-version;.&linux-minor-version;">-->
<!ENTITY linux-version "&linux-major-version;.&linux-minor-version;.&linux-patch-version;">
<!ENTITY linux-size "134,557 KB">
<!ENTITY linux-size "135,684 KB">
<!ENTITY linux-url "&kernel;linux/kernel/v&linux-major-version;.x/linux-&linux-version;.tar.xz">
<!ENTITY linux-md5 "c83363136e61977c63d655733424d37a">
<!ENTITY linux-md5 "228479f37b3face05b53bd7f8906abe0">
<!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,
@ -483,12 +483,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">
@ -496,15 +496,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">
@ -515,10 +515,10 @@
<!ENTITY mpc-fin-du "22 MB">
<!ENTITY mpc-fin-sbu "0.1 SBU">
<!ENTITY mpfr-version "4.2.0">
<!ENTITY mpfr-size "1,443 KB">
<!ENTITY mpfr-version "4.2.1">
<!ENTITY mpfr-size "1,459 KB">
<!ENTITY mpfr-url "https://ftp.gnu.org/gnu/mpfr/mpfr-&mpfr-version;.tar.xz">
<!ENTITY mpfr-md5 "a25091f337f25830c16d2054d74b5af7">
<!ENTITY mpfr-md5 "523c50c6318dde6f9dc523bc0244690a">
<!ENTITY mpfr-home "https://www.mpfr.org/">
<!ENTITY mpfr-fin-du "43 MB">
<!ENTITY mpfr-fin-sbu "0.2 SBU">
@ -538,16 +538,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">
@ -568,25 +568,25 @@
<!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.3">
<!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 "b82ca48ed3097adfa007ee71489b6719">
<!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">
<!ENTITY procps-ng-size "1,268 KB">
<!ENTITY procps-ng-version "4.0.4">
<!ENTITY procps-ng-size "1,369 KB">
<!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-md5 "2f747fc7df8ccf402d03e375c565cf96">
<!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">
@ -594,25 +594,25 @@
<!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
meson pages will be needed: python3.6 and python3.6m -->
<!ENTITY python-version "3.11.4">
<!ENTITY python-version "3.11.5">
<!ENTITY python-minor "3.11">
<!ENTITY python-size "19,488 KB">
<!ENTITY python-size "19,584 KB">
<!ENTITY python-url "https://www.python.org/ftp/python/&python-version;/Python-&python-version;.tar.xz">
<!ENTITY python-md5 "fb7f7eae520285788449d569e45b6718">
<!ENTITY python-md5 "393856f1b7713aa8bba4b642ab9985d3">
<!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">
<!ENTITY python-docs-md5 "1abed52338038f4b53a277a5558af838">
<!ENTITY python-docs-size "7,678 KB">
<!ENTITY readline-version "8.2">
<!ENTITY readline-soversion "8.2"><!-- used for stripping -->
@ -628,15 +628,15 @@
<!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">
<!ENTITY shadow-size "1,722 KB">
<!ENTITY shadow-version "4.14.0">
<!ENTITY shadow-size "1,746 KB">
<!ENTITY shadow-url "&github;/shadow-maint/shadow/releases/download/&shadow-version;/shadow-&shadow-version;.tar.xz">
<!ENTITY shadow-md5 "b1ab01b5462ddcf43588374d57bec123">
<!ENTITY shadow-md5 "bb0166bebc24db9003bb77bfd1359042">
<!ENTITY shadow-home "https://shadow-maint.github.io/shadow/">
<!ENTITY shadow-fin-du "46 MB">
<!ENTITY shadow-fin-sbu "0.1 SBU">
@ -646,43 +646,43 @@
<!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">
<!ENTITY sysvinit-size "258 KB">
<!ENTITY sysvinit-version "3.08">
<!ENTITY sysvinit-size "263 KB">
<!ENTITY sysvinit-url "&github;/slicer69/sysvinit/releases/download/&sysvinit-version;/sysvinit-&sysvinit-version;.tar.xz">
<!ENTITY sysvinit-md5 "190398c660af29c97d892126d2a95e28">
<!ENTITY sysvinit-md5 "81a05f28d7b67533cfc778fcadea168c">
<!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">
@ -702,7 +702,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">
@ -712,46 +712,46 @@
<!ENTITY tzdata-md5 "5aa672bf129b44dd915f8232de38e49a">
<!ENTITY tzdata-home "https://www.iana.org/time-zones">
<!ENTITY udev-fin-du "130 MB">
<!ENTITY udev-fin-du "138 MB">
<!ENTITY udev-fin-sbu "0.2 SBU">
<!ENTITY udev-lfs-version "udev-lfs-20171102">
<!ENTITY udev-lfs-size "11 KB">
<!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">
<!ENTITY util-linux-version "2.39.1"> <!-- 2.33.x -->
<!ENTITY util-linux-size "8,156 KB">
<!ENTITY util-linux-version "2.39.2"> <!-- 2.33.x -->
<!ENTITY util-linux-size "8,167 KB">
<!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-md5 "2feb3e7c306f336a3d22a182dfffc942">
<!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 mount-setsid-du "85 MB">
<!ENTITY mount-setsid-sbu "less than 0.1 SBU">
<!ENTITY vim-version "9.0.1671">
<!ENTITY vim-version "9.0.1837">
<!-- <!ENTITY vim-majmin "90"> -->
<!ENTITY vim-docdir "vim/vim90">
<!ENTITY vim-size "16,669 KB">
<!ENTITY vim-size "16,838 KB">
<!--<!ENTITY vim-url "https://github.com/vim/vim/archive/v&vim-version;/vim-&vim-version;.tar.gz">-->
<!ENTITY vim-url "&anduin-sources;/vim-&vim-version;.tar.gz">
<!ENTITY vim-md5 "243fce49db0dd93af7c2b12163f47fcf">
<!ENTITY vim-md5 "de7cba78a556f96482ae8f09b082aa59">
<!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.2">
<!ENTITY wheel-size "96 KB">
<!ENTITY wheel-url "&pypi-src;/w/wheel/wheel-&wheel-version;.tar.gz">
<!ENTITY wheel-md5 "ec5004c46d1905da98bb5bc1a10ddd21">
<!ENTITY wheel-md5 "06271a9e90c948b7e93dd7ce0fd90272">
<!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">
@ -762,21 +762,25 @@
<!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-md5 "7d9fc1d78ae2fa3e84fe98b77d006c63">
<!ENTITY zlib-home "https://www.zlib.net/">
<!ENTITY zlib-version "1.3">
<!ENTITY zlib-size "1,461 KB">
<!-- DO NOT remove "fossils"!
The upstream removes https://zlib.net/zlib-&zlib-version;.tar.xz
once a newer version is released EVEN IF there is no security fixes.
Unfortunately there is no .xz files in fossils directory. -->
<!ENTITY zlib-url "https://zlib.net/fossils/zlib-&zlib-version;.tar.gz">
<!ENTITY zlib-md5 "60373b133d630f74f4a1f94c1185a53f">
<!ENTITY zlib-home "https://zlib.net/">
<!ENTITY zlib-fin-du "6.2 MB">
<!ENTITY zlib-fin-sbu "less than 0.1 SBU">
@ -785,6 +789,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">

View File

@ -11,6 +11,20 @@
<title>General Compilation Instructions</title>
<caution>
<para>
During a development cycle of LFS, the instructions in the book are
often modified to adapt for a package update or take the advantage of
new features from updated packages. Mixing up the instructions of
different versions of the LFS book can cause subtle breakages. This
kind of issue is generally a result from reusing some script created
for a prior LFS release. Such a reuse is strongly discouraged. If
you are reusing scripts for a prior LFS release for any reason, you'll
need to be very careful to update the scripts to match current version
of the LFS book.
</para>
</caution>
<para>Here are some things you should know about building each package:</para>
<itemizedlist>

View File

@ -2,54 +2,22 @@
<!-- Start of Common Patches -->
<!--
<!ENTITY autoconf-fixes-patch "autoconf-&autoconf-version;-consolidated_fixes-1.patch">
<!ENTITY autoconf-fixes-patch-md5 "3c515415ecdd777990c91e8900279cb9">
<!ENTITY autoconf-fixes-patch-size "3.8 KB">
-->
<!--
<!ENTITY bash-fixes-patch "bash-&bash-version;-upstream_fixes-1.patch">
<!ENTITY bash-fixes-patch-md5 "5f20760139d6a97e55124988fcddae44">
<!ENTITY bash-fixes-patch-size "2.0 KB">
-->
<!--
<!ENTITY binutils-lto-patch "binutils-&binutils-version;-lto_fix-1.patch">
<!ENTITY binutils-lto-patch-md5 "3df11b6123d5bbdb0fc83862a003827a">
<!ENTITY binutils-lto-patch-size "3.5 KB">
-->
<!ENTITY bzip2-docs-patch "bzip2-&bzip2-version;-install_docs-1.patch">
<!ENTITY bzip2-docs-patch-md5 "6a5ac7e89b791aae556de0f745916f7f">
<!ENTITY bzip2-docs-patch-size "1.6 KB">
<!ENTITY coreutils-i18n-patch "coreutils-&coreutils-version;-i18n-1.patch">
<!ENTITY coreutils-i18n-patch-md5 "3c6340b3ddd62f4acdf8d3caa6fad6b0">
<!ENTITY coreutils-i18n-patch-md5 "cca7dc8c73147444e77bc45d210229bb">
<!ENTITY coreutils-i18n-patch-size "166 KB">
<!--
<!ENTITY coreutils-chmod-patch "coreutils-&coreutils-version;-chmod_fix-1.patch">
<!ENTITY coreutils-chmod-patch-md5 "4709df88e68279e6ef357aa819ba5b1a">
<!ENTITY coreutils-chmod-patch-size "3.8 KB">
-->
<!--
<!ENTITY flex-fixes-patch "flex-&flex-version;-upstream_fixes-3.patch">
<!ENTITY flex-fixes-patch-md5 "b46f6b0380e502a3dfb8b503227cd680">
<!ENTITY flex-fixes-patch-size "3.4 KB">
-->
<!--
<!ENTITY file-upstream-fixes-patch "file-&file-version;-upstream_fixes-1.patch">
<!ENTITY file-upstream-fixes-md5 "d99090db596b9db2bed869662199a56a">
<!ENTITY file-upstream-fixes-patch-size "4.0 KB">
-->
<!--
<!ENTITY gcc-upstream-fixes-patch "gcc-&gcc-version;-glibc_2.36-1.patch">
<!ENTITY gcc-upstream-fixes-patch-md5 "8a5a4c3d14b9b2398b32f20b53a4de50">
<!ENTITY gcc-upstream-fixes-patch-size "1.7 KB">
-->
<!ENTITY glibc-fhs-patch "glibc-&glibc-version;-fhs-1.patch">
<!ENTITY glibc-fhs-patch-md5 "9a5997c3452909b1769918c759eff8a2">
<!ENTITY glibc-fhs-patch-size "2.8 KB">
<!ENTITY glibc-upstream-fixes-patch "glibc-&glibc-version;-upstream_fixes-1.patch">
<!ENTITY glibc-upstream-fixes-patch-md5 "2e347e291804b62a18a43a8cdc79e01e">
<!ENTITY glibc-upstream-fixes-patch-size "24 KB">
<!ENTITY 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">
@ -58,49 +26,11 @@
<!ENTITY kbd-backspace-patch-md5 "f75cca16a38da6caa7d52151f7136895">
<!ENTITY kbd-backspace-patch-size "12 KB">
<!--
<!ENTITY libpipeline-checks-patch "libpipeline-&libpipeline-version;-check_fixes-3.patch">
<!ENTITY libpipeline-checks-patch-md5 "0cd71f98eadaee07647d021d2e4c8621">
<!ENTITY libpipeline-checks-patch-size "22 KB">
<!ENTITY meson-fix-patch "meson-&meson-version;-upstream_fix-2.patch">
<!ENTITY meson-fix-patch-md5 "dd0b2187d287abcb41c3dd7e497b7df3">
<!ENTITY meson-fix-patch-size "5.5 KB">
<!ENTITY ninja-limit-jobs-patch "ninja-&ninja-version;-add_NINJAJOBS_var-1.patch">
<!ENTITY ninja-limit-jobs-patch-md5 "f537a633532492e805aa342fa869ca45">
<!ENTITY ninja-limit-jobs-patch-size "2.5 KB">
-->
<!--
<!ENTITY perl-fix-patch "perl-&perl-version;-upstream_fixes-1.patch">
<!ENTITY perl-fix-patch-md5 "fb42558b59ed95ee00eb9f1c1c9b8056">
<!ENTITY perl-fix-patch-size "1.6 KB">
-->
<!ENTITY readline-fixes-patch "readline-&readline-version;-upstream_fix-1.patch">
<!ENTITY readline-fixes-patch-md5 "dd1764b84cfca6b677f44978218a75da">
<!ENTITY readline-fixes-patch-size "1.3 KB">
<!--
<!ENTITY shadow-segfault-patch "shadow-&shadow-version;-useradd_segfault-1.patch">
<!ENTITY shadow-segfault-patch-md5 "66b299c0c9ac66fdb7c91b40df5984c0">
<!ENTITY shadow-segfault-patch-size "1.7 KB">
-->
<!ENTITY sysvinit-consolidated-patch "sysvinit-&sysvinit-version;-consolidated-1.patch">
<!ENTITY sysvinit-consolidated-patch-md5 "17ffccbb8e18c39e8cedc32046f3a475">
<!ENTITY sysvinit-consolidated-patch-size "2.5 KB">
<!--
<!ENTITY systemd-upstream-patch "systemd-&systemd-version;-security_fix-1.patch">
<!ENTITY systemd-upstream-patch-md5 "da817e69e897d35cdffd7c45ea06be39">
<!ENTITY systemd-upstream-patch-size "76.0 KB">
-->
<!--
<!ENTITY xz-upstream-fix-patch "xz-&xz-version;-upstream_fix-1.patch">
<!ENTITY xz-upstream-fix-patch-md5 "584c72ea3d8f7502b2770670f3090788">
<!ENTITY xz-upstream-fix-patch-size "3.7 KB">
-->
<!--
<!ENTITY zstd-upstream-fixes-patch "zstd-&zstd-version;-upstream_fixes-1.patch">
<!ENTITY zstd-upstream-fixes-patch-md5 "a7e576e3f87415fdf388392b257cdcf3">
<!ENTITY zstd-upstream-fixes-patch-size "4 KB">
-->

View File

@ -371,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>

View File

@ -265,6 +265,9 @@ li.chapter h4 a {
margin: .6em 0 .2em 0;
}
span.blue {
color: #2ac;
}
/* Index */
.item {

View File

@ -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"

View File

@ -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.

View File

@ -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"

View File

@ -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"

View File

@ -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.

View File

@ -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

View File

@ -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