Automatic merge of trunk into multilib

This commit is contained in:
Thomas Trepl 2023-09-03 00:30:12 +02:00
commit c931e9dedd
21 changed files with 185 additions and 675 deletions

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,77 @@
appropriate for the entry or if needed the entire day's 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

@ -83,9 +83,9 @@ 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>-->
@ -149,9 +149,9 @@ 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>
</listitem>-->
@ -167,9 +167,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>-->
@ -218,9 +218,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 +233,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 +278,24 @@ Perhaps a new page - somthing like 'Upgrading an Existing LFS System'.
<!--<listitem>
<para>Tzdata-&tzdata-version;</para>
</listitem>-->
<!--<listitem>
<listitem>
<para>Util-Linux-&util-linux-version;</para>
</listitem>-->
<!--<listitem>
</listitem>
<listitem>
<para>Vim-&vim-version;</para>
</listitem>-->
<!--<listitem>
</listitem>
<listitem>
<para>wheel-&wheel-version;</para>
</listitem>-->
</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>-->

View File

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

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

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

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

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

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

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

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

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

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

@ -68,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>
@ -178,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>

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

@ -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
@ -323,7 +324,7 @@
<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>

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,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,10 +104,10 @@
<!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">
@ -308,10 +308,10 @@
<!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">
@ -368,10 +368,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">
@ -518,10 +518,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">
@ -576,18 +576,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.2">
<!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 "9bc6eee9dc86e96f855ce70a39a12bd3">
<!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">
@ -603,19 +603,19 @@
<!-- If python minor version changes, updates in python and
meson pages will be needed: python3.6 and python3.6m -->
<!ENTITY python-version "3.11.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 -->
@ -636,10 +636,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">
@ -669,10 +669,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">
@ -725,31 +725,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">
@ -772,11 +772,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

@ -2,50 +2,14 @@
<!-- 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">
@ -62,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">
-->