Merge remote-tracking branch 'origin/trunk' into xry111/loongarch

This commit is contained in:
Xi Ruoyao 2023-09-19 15:14:59 +08:00
commit ed431efc7d
No known key found for this signature in database
GPG Key ID: ACAAD20E19E710E3
46 changed files with 492 additions and 873 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

@ -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>
@ -2515,7 +2519,8 @@
<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>
</seglistitem>
@ -2567,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>
@ -3393,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

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

@ -40,6 +40,160 @@
appropriate for the entry or if needed the entire day's listitem.
-->
<listitem>
<para>2023-09-17</para>
<itemizedlist>
<listitem>
<para>[xry111] - Update to linux-6.5.3. Fixes
<ulink url='&lfs-ticket-root;5343'>#5343</ulink>.</para>
</listitem>
<listitem>
<para>[xry111] - Update to iana-etc-20230912. Addresses
<ulink url='&lfs-ticket-root;5006'>#5006</ulink>.</para>
</listitem>
<listitem>
<para>[xry111] - Update to iproute2-6.5.0. Fixes
<ulink url='&lfs-ticket-root;5342'>#5342</ulink>.</para>
</listitem>
</itemizedlist>
</listitem>
<listitem>
<para>2023-09-13</para>
<itemizedlist>
<listitem>
<para>[xry111] - Fix CVE-2023-4806 for Glibc-2.38. Fixes
<ulink url='&lfs-ticket-root;5347'>#5347</ulink>.</para>
</listitem>
</itemizedlist>
</listitem>
<listitem>
<para>2023-09-12</para>
<itemizedlist>
<listitem>
<para>[xry111] - Fix CVE-2023-4527 for Glibc-2.38. Fixes
<ulink url='&lfs-ticket-root;5346'>#5346</ulink>.</para>
</listitem>
</itemizedlist>
</listitem>
<listitem>
<para>2023-09-07</para>
<itemizedlist>
<listitem>
<para>[xry111] - Fix an issue in pkgconf-2.0.3 causing
BLFS packages fail to build. Fixes
<ulink url='&lfs-ticket-root;5341'>#5341</ulink>.</para>
</listitem>
</itemizedlist>
</listitem>
<listitem>
<para>2023-09-05</para>
<itemizedlist>
<listitem>
<para>[xry111] - Move pkgconf before binutils for binutils
building system to detect zstd properly. 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>[bdubbs] - Update to sysvinit-3.08. Fixes
<ulink url='&lfs-ticket-root;5321'>#5321</ulink>.</para>
</listitem>
<listitem>
<para>[bdubbs] - Update to shadow-4.14.0. Fixes
<ulink url='&lfs-ticket-root;5319'>#5319</ulink>.</para>
</listitem>
<listitem>
<para>[bdubbs] - Update to Python-3.11.5. Fixes
<ulink url='&lfs-ticket-root;5330'>#5330</ulink>.</para>
</listitem>
<listitem>
<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 pkgconf-2.0.2. Fixes
<ulink url='&lfs-ticket-root;5323'>#5323</ulink>.</para>
</listitem>
<listitem>
<para>[bdubbs] - Update to mpfr-4.2.1. Fixes
<ulink url='&lfs-ticket-root;5326'>#5326</ulink>.</para>
</listitem>
<listitem>
<para>[bdubbs] - Update to kbd-2.6.2. Fixes
<ulink url='&lfs-ticket-root;5318'>#5318</ulink>.</para>
</listitem>
<listitem>
<para>[bdubbs] - Update to gzip-1.13. Fixes
<ulink url='&lfs-ticket-root;5325'>#5325</ulink>.</para>
</listitem>
<listitem>
<para>[bdubbs] - Update to coreutils-9.4. Fixes
<ulink url='&lfs-ticket-root;5334'>#5334</ulink>.</para>
</listitem>
<listitem revision='systemd'>
<para>[bdubbs] - Specify the 'nobody-group' for systemd. Fixes
<ulink url='&lfs-ticket-root;5333'>#5333</ulink>.</para>
</listitem>
<listitem>
<para>[bdubbs] - Remove unused usb group. Fixes
<ulink url='&lfs-ticket-root;5331'>#5331</ulink>.</para>
</listitem>
</itemizedlist>
</listitem>
<listitem>
<para>2023-09-01</para>
<itemizedlist>

View File

@ -11,36 +11,9 @@
<title>What's new since the last release</title>
<!--
This does not belong on this page. I don't want to address this now.
At first I thought it would go on another page, but nothing seems to fit.
Perhaps a new page - somthing like 'Upgrading an Existing LFS System'.
- Bruce 9/1/23
<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 12.0 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>
-->
<!--
Every package in the book is listed in the "Upgraded to:" section.
Comment/uncomment as needed. DO NOT delete any of these lines unless that
@ -66,10 +39,10 @@ Perhaps a new page - somthing like 'Upgrading an Existing LFS System'.
<para>Automake-&automake-version;</para>
</listitem>-->
<!--<listitem>
<para>Bash &bash-version;</para>
<para>Bash-&bash-version;</para>
</listitem>-->
<!--<listitem>
<para>Bc &bc-version;</para>
<para>Bc-&bc-version;</para>
</listitem>-->
<!--<listitem>
<para>Binutils-&binutils-version;</para>
@ -83,24 +56,21 @@ Perhaps a new page - somthing like 'Upgrading an Existing LFS System'.
<!--<listitem>
<para>Check-&check-version;</para>
</listitem>-->
<!--<listitem>
<listitem>
<para>Coreutils-&coreutils-version;</para>
</listitem>-->
</listitem>
<!--<listitem>
<para>DejaGNU-&dejagnu-version;</para>
</listitem>-->
<!--<listitem revision="systemd">
<listitem revision="systemd">
<para>D-Bus-&dbus-version;</para>
</listitem>-->
</listitem>
<!--<listitem>
<para>Diffutils-&diffutils-version;</para>
</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>-->
@ -149,11 +119,11 @@ Perhaps a new page - somthing like 'Upgrading an Existing LFS System'.
<!--<listitem>
<para>GRUB-&grub-version;</para>
</listitem>-->
<!--<listitem>
<listitem>
<para>Gzip-&gzip-version;</para>
</listitem>-->
</listitem>
<!--<listitem>
<para>IANA-Etc-&iana-etc-version;</para>
<para>Iana-Etc-&iana-etc-version;</para>
</listitem>-->
<!--<listitem>
<para>Inetutils-&inetutils-version;</para>
@ -167,9 +137,9 @@ Perhaps a new page - somthing like 'Upgrading an Existing LFS System'.
<!--<listitem revision="systemd">
<para>Jinja2-&jinja2-version;</para>
</listitem>-->
<!--<listitem>
<listitem>
<para>Kbd-&kbd-version;</para>
</listitem>-->
</listitem>
<!--<listitem>
<para>Kmod-&kmod-version;</para>
</listitem>-->
@ -194,9 +164,9 @@ Perhaps a new page - somthing like 'Upgrading an Existing LFS System'.
<!--<listitem>
<para>Libtool-&libtool-version;</para>
</listitem>-->
<!--<listitem>
<listitem>
<para>Linux-&linux-version;</para>
</listitem>-->
</listitem>
<!--<listitem>
<para>M4-&m4-version;</para>
</listitem>-->
@ -218,9 +188,9 @@ Perhaps a new page - somthing like 'Upgrading an Existing LFS System'.
<!--<listitem>
<para>MPC-&mpc-version;</para>
</listitem>-->
<!--<listitem>
<listitem>
<para>MPFR-&mpfr-version;</para>
</listitem>-->
</listitem>
<!--<listitem>
<para>Ncurses-&ncurses-version;</para>
</listitem>-->
@ -233,39 +203,39 @@ Perhaps a new page - somthing like 'Upgrading an Existing LFS System'.
<!--<listitem>
<para>Patch-&patch-version;</para>
</listitem>-->
<!--<listitem>
<listitem>
<para>Pkgconf-&pkgconf-version;</para>
</listitem>-->
</listitem>
<!--<listitem>
<para>Perl-&perl-version;</para>
</listitem>-->
<!--<listitem>
<listitem>
<para>Procps-ng-&procps-ng-version;</para>
</listitem>-->
</listitem>
<!--<listitem>
<para>Psmisc-&psmisc-version;</para>
</listitem>-->
<!--<listitem>
<listitem>
<para>Python-&python-version;</para>
</listitem>-->
</listitem>
<!--<listitem>
<para>Readline-&readline-version;</para>
</listitem>-->
<!--<listitem>
<para>Sed-&sed-version;</para>
</listitem>-->
<!--<listitem>
<listitem>
<para>Shadow-&shadow-version;</para>
</listitem>-->
</listitem>
<!--<listitem revision="sysv">
<para>Sysklogd-&sysklogd-version;</para>
</listitem>-->
<!--<listitem>
<para>Systemd-&systemd-version;</para>
</listitem>-->
<!--<listitem revision="sysv">
<listitem revision="sysv">
<para>SysVinit-&sysvinit-version;</para>
</listitem>-->
</listitem>
<!--<listitem>
<para>Tar-&tar-version;</para>
</listitem>-->
@ -278,24 +248,27 @@ Perhaps a new page - somthing like 'Upgrading an Existing LFS System'.
<!--<listitem>
<para>Tzdata-&tzdata-version;</para>
</listitem>-->
<!--<listitem>
<para>Util-Linux-&util-linux-version;</para>
<!--<listitem revision="sysv">
<para>Udev-&systemd-version; (from systemd)</para>
</listitem>-->
<!--<listitem>
<listitem>
<para>Util-linux-&util-linux-version;</para>
</listitem>
<listitem>
<para>Vim-&vim-version;</para>
</listitem>
<listitem>
<para>Wheel-&wheel-version;</para>
</listitem>
<!--<listitem>
<para>XML::Parser-&xml-parser-version;</para>
</listitem>-->
<!--<listitem>
<para>wheel-&wheel-version;</para>
<para>Xz-&xz-version;</para>
</listitem>-->
<!--<listitem>
<para>XML-Parser-&xml-parser-version;</para>
</listitem>-->
<!--<listitem>
<para>XZ-Utils-&xz-version;</para>
</listitem>-->
<!--<listitem>
<listitem>
<para>Zlib-&zlib-version;</para>
</listitem>-->
</listitem>
<!--<listitem>
<para>Zstd-&zstd-version;</para>
</listitem>-->
@ -314,35 +287,20 @@ Perhaps a new page - somthing like 'Upgrading an Existing LFS System'.
<title>Added:</title>
<listitem><para></para></listitem> <!-- satisfy build -->
<!--<listitem>
<para>&grub-upstream-fixes-patch;</para>
</listitem>-->
<listitem>
<para>&glibc-upstream-fixes-patch;</para>
</listitem>
<!--<listitem>
<para>&readline-fixes-patch;</para>
</listitem>-->
<!--<listitem revision="systemd">
<para>&systemd-upstream-patch;</para>
</listitem>-->
</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

@ -184,7 +184,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

View File

@ -86,10 +86,10 @@
</varlistentry>
<varlistentry>
<term>Glibc Memalign Patch - <token>&glibc-memalign-patch-size;</token>:</term>
<term>Glibc Upstream Fixes Patch - <token>&glibc-upstream-fixes-patch-size;</token>:</term>
<listitem>
<para>Download: <ulink url="&patches-root;&glibc-memalign-patch;"/></para>
<para>MD5 sum: <literal>&glibc-memalign-patch-md5;</literal></para>
<para>Download: <ulink url="&patches-root;&glibc-upstream-fixes-patch;"/></para>
<para>MD5 sum: <literal>&glibc-upstream-fixes-patch-md5;</literal></para>
</listitem>
</varlistentry>

View File

@ -124,7 +124,7 @@ cd build</userinput></screen>
<para>Remove the libtool archive files because they are harmful for
cross-compilation:</para>
<screen><userinput remap="install">rm -v $LFS/usr/lib/lib{stdc++,stdc++fs,supc++}.la</userinput></screen>
<screen><userinput remap="install">rm -v $LFS/usr/lib/lib{stdc++{,exp,fs},supc++}.la</userinput></screen>
</sect2>

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>

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

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

@ -109,7 +109,7 @@ mount -vt tmpfs tmpfs $LFS/run</userinput></screen>
<screen><userinput>if [ -h $LFS/dev/shm ]; then
mkdir -pv $LFS/$(readlink $LFS/dev/shm)
else
mount -t tmpfs -o nosuid,nodev tmpfs $LFS/dev/shm
mount -vt tmpfs -o nosuid,nodev tmpfs $LFS/dev/shm
fi</userinput></screen>
</sect2>

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

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

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

@ -50,10 +50,10 @@
<screen><userinput remap="pre">patch -Np1 -i ../&glibc-fhs-patch;</userinput></screen>
<para>Now fix a regression causing the posix_memalign() function
to be very slow in some conditions:</para>
<para>Now fix two security vulnerabilities and a regression causing the
posix_memalign() function very slow in some conditions:</para>
<screen><userinput remap="pre">patch -Np1 -i ../&glibc-memalign-patch;</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>
@ -320,7 +320,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
@ -335,6 +335,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

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

@ -75,8 +75,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

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

@ -102,21 +102,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

@ -43,15 +43,12 @@
<sect2 role="installation">
<title>Installation of Pkgconf</title>
<!--
<para>Pkgconf-2.0.0 explicitly errors when attempting to run
<option>- -modversion</option> with multiple arguments, even if these
arguments are constraints for the same package. This breaks many
packages in BLFS. Run this sed to reinstate the old
output for pkgconf:</para>
<screen><userinput remap="pre">sed -i '1330,1336s|^|//|' cli/main.c</userinput></screen>
-->
<!-- https://github.com/pkgconf/pkgconf/issues/317 -->
<para>Fix a regression in pkgconf-2.0.3 breaking BLFS packages:</para>
<screen><userinput remap="pre">sed -i 's/str\(cmp.*package\)/strn\1, strlen(pkg-&gt;why)/' cli/main.c</userinput></screen>
<para>Prepare Pkgconf for compilation:</para>
<screen><userinput remap="configure">./configure --prefix=/usr \

View File

@ -67,18 +67,9 @@
<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>

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
@ -94,6 +97,7 @@ online_usrlib="libbfd-&binutils-version;.so
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

@ -69,6 +69,7 @@ meson setup \
-Dmode=release \
-Dpamconfdir=no \
-Ddev-kvm-mode=0660 \
-Dnobody-group=nogroup \
-Ddocdir=/usr/share/doc/systemd-&systemd-version; \
..</userinput></screen>
@ -179,6 +180,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>

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>
@ -1224,7 +1224,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

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

View File

@ -113,7 +113,7 @@
<para>Then unmount the virtual file systems:</para>
<screen><userinput>umount -v $LFS/dev/pts
mountpoint -q $LFS/dev/shm &amp;&amp; umount $LFS/dev/shm
mountpoint -q $LFS/dev/shm &amp;&amp; umount -v $LFS/dev/shm
umount -v $LFS/dev
umount -v $LFS/run
umount -v $LFS/proc

View File

@ -58,6 +58,7 @@ VERSION="&version;"
ID=lfs
PRETTY_NAME="Linux From Scratch &version;"
VERSION_CODENAME="&lt;your name here&gt;"
HOME_URL="&lfs-root;lfs/"
EOF</userinput></screen>
<para>Be sure to customize the fields 'DISTRIB_CODENAME' and

View File

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

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

@ -104,20 +104,20 @@
<!ENTITY check-fin-du "12 MB">
<!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 "168 MB">
<!ENTITY coreutils-tmp-sbu "0.3 SBU">
<!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 "20 MB">
<!ENTITY dbus-fin-sbu "0.1 SBU">
@ -308,20 +308,20 @@
<!ENTITY grub-fin-du "161 MB">
<!ENTITY grub-fin-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 "20230810">
<!ENTITY iana-etc-version "20230912">
<!ENTITY iana-etc-size "588 KB">
<!ENTITY iana-etc-url "https://github.com/Mic92/iana-etc/releases/download/&iana-etc-version;/iana-etc-&iana-etc-version;.tar.gz">
<!ENTITY iana-etc-md5 "0502bd41cc0bf1c1c3cd8651058b9650">
<!ENTITY iana-etc-md5 "29f49a14cdbbc9236e24b2271fbbd993">
<!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">
@ -343,10 +343,10 @@
<!ENTITY intltool-fin-du "1.5 MB">
<!ENTITY intltool-fin-sbu "less than 0.1 SBU">
<!ENTITY iproute2-version "6.4.0">
<!ENTITY iproute2-size "904 KB">
<!ENTITY iproute2-version "6.5.0">
<!ENTITY iproute2-size "908 KB">
<!ENTITY iproute2-url "&kernel;linux/utils/net/iproute2/iproute2-&iproute2-version;.tar.xz">
<!ENTITY iproute2-md5 "90ce0eb84a8f1e2b14ffa77e8eb3f5ed">
<!ENTITY iproute2-md5 "ae811fc51b3a2c9c7701be308152c45a">
<!ENTITY iproute2-home "&kernel;linux/utils/net/iproute2/">
<!ENTITY iproute2-fin-du "17 MB">
<!ENTITY iproute2-fin-sbu "0.1 SBU">
@ -359,10 +359,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">
@ -371,7 +371,7 @@
<!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">
@ -432,19 +432,22 @@
<!ENTITY libxcrypt-fin-sbu "0.1 SBU">
<!ENTITY linux-major-version "6">
<!ENTITY linux-minor-version "4">
<!ENTITY linux-patch-version "12">
<!ENTITY linux-minor-version "5">
<!ENTITY linux-patch-version "3">
<!--<!ENTITY linux-version "&linux-major-version;.&linux-minor-version;">-->
<!ENTITY linux-version "&linux-major-version;.&linux-minor-version;.&linux-patch-version;">
<!ENTITY linux-size "134,616 KB">
<!ENTITY linux-size "135,696 KB">
<!ENTITY linux-url "&kernel;linux/kernel/v&linux-major-version;.x/linux-&linux-version;.tar.xz">
<!ENTITY linux-md5 "24570ba0ef9dd592bd640a1a41686fac">
<!ENTITY linux-md5 "c54b2cd13ba845e2f5a667ce712e92b9">
<!ENTITY linux-home "https://www.kernel.org/">
<!-- measured for 5.13.4 / gcc-11.1.0 on x86_64 : minimum is
allnoconfig rounded down to allow for ongoing cleanups,
max is allmodconfig -->
<!ENTITY linux-knl-du "1200 - 8800 MB (typically about 1700 MB)">
<!ENTITY linux-knl-sbu "1.5 - 130.0 SBU (typically about 12 SBU)">
<!-- measured for 6.5.3 / gcc-13.2.0 on x86_64 with -j4 : minimum is
allnoconfig + some configs we recommend for the users, rounded down to
allow ongoing cleanups; max is allmodconfig but IKHEADERS unset; typical
is the "daily use" config for the workstation measuring the min/max values.
The disk usage is the sum of the size of linux-6.5.3 directory and the
installed kernel image & modules. -->
<!ENTITY linux-knl-du "1.8 - 10.6 GB (typically about 2 GB)">
<!ENTITY linux-knl-sbu "0.6 - 20.4 SBU (typically about 1.4 SBU)">
<!ENTITY linux-headers-tmp-du "1.5 GB">
<!ENTITY linux-headers-tmp-sbu "less than 0.1 SBU">
@ -509,10 +512,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">
@ -567,18 +570,18 @@
<!ENTITY perl-fin-du "239 MB">
<!ENTITY perl-fin-sbu "7.1 SBU">
<!ENTITY pkgconf-version "2.0.1">
<!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 "efc1318f368bb592aba6ebb18d9ff254">
<!ENTITY pkgconf-md5 "b82ca48ed3097adfa007ee71489b6719">
<!ENTITY pkgconf-home "http://pkgconf.org/">
<!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 "25 MB">
<!ENTITY procps-ng-fin-sbu "0.1 SBU">
@ -594,19 +597,19 @@
<!-- If python minor version changes, updates in python and
meson pages will be needed: python3.6 and python3.6m -->
<!ENTITY python-version "3.11.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 "533 MB">
<!ENTITY python-tmp-sbu "0.4 SBU">
<!ENTITY python-fin-du "370 MB">
<!ENTITY python-fin-sbu "1.9 SBU">
<!ENTITY python-docs-url "https://www.python.org/ftp/python/doc/&python-version;/python-&python-version;-docs-html.tar.bz2">
<!ENTITY python-docs-md5 "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 -->
@ -627,10 +630,10 @@
<!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">
@ -660,10 +663,10 @@
<!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.5 MB">
<!ENTITY sysvinit-fin-sbu "less than 0.1 SBU">
@ -716,31 +719,31 @@
<!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 "169 MB">
<!ENTITY util-linux-tmp-sbu "0.2 SBU">
<!ENTITY util-linux-fin-du "310 MB">
<!ENTITY util-linux-fin-sbu "0.5 SBU">
<!ENTITY vim-version "9.0.1677">
<!ENTITY vim-version "9.0.1837">
<!-- <!ENTITY vim-majmin "90"> -->
<!ENTITY vim-docdir "vim/vim90">
<!ENTITY vim-size "16,670 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 "65e6b09ef0628a2d8eba79f1d1d5a564">
<!ENTITY vim-md5 "de7cba78a556f96482ae8f09b082aa59">
<!ENTITY vim-home "https://www.vim.org">
<!ENTITY vim-fin-du "229 MB">
<!ENTITY vim-fin-sbu "2.3 SBU">
<!ENTITY wheel-version "0.41.1">
<!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 "181cb3f4d8ed340c904a0e1c416d341d">
<!ENTITY wheel-md5 "06271a9e90c948b7e93dd7ce0fd90272">
<!ENTITY wheel-home "&pypi-home;/wheel/">
<!ENTITY wheel-fin-du "1.5 MB">
<!ENTITY wheel-fin-sbu "less than 0.1 SBU">
@ -763,11 +766,15 @@
<!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 "&anduin-sources;/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">

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,60 +2,25 @@
<!-- 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 elfutils-loongarch-patch "elfutils-&elfutils-version;-loongarch-3.patch">
<!ENTITY elfutils-loongarch-patch-md5 "cd7125a123145d1e2911b1dd2186793a">
<!ENTITY elfutils-loongarch-patch-size "44 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-memalign-patch "glibc-&glibc-version;-memalign_fix-1.patch">
<!ENTITY glibc-memalign-patch-md5 "2c3552bded42a83ad6a7087c5fbf3857">
<!ENTITY glibc-memalign-patch-size "20 KB">
<!ENTITY glibc-upstream-fixes-patch "glibc-&glibc-version;-upstream_fixes-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">
@ -65,49 +30,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">
-->