Automatic merge of trunk into multilib

This commit is contained in:
Thomas Trepl 2023-07-04 00:30:16 +02:00
commit b8707993c4
14 changed files with 339 additions and 96 deletions

View File

@ -970,8 +970,8 @@
<segtitle>&dependencies;</segtitle> <segtitle>&dependencies;</segtitle>
<seglistitem> <seglistitem>
<seg>Bash, Binutils, Coreutils, Diffutils, Findutils, Gawk, GCC, <seg>Bash, Binutils, Coreutils, Diffutils, Findutils, Gawk, GCC,
Gettext, Glibc, GMP, Grep, M4, Make, MPC, MPFR, Patch, Perl, Sed, Gettext, Glibc, GMP, Grep, Libxcrypt, M4, Make, MPC, MPFR, Patch,
Tar, Texinfo, and Zstd</seg> Perl, Sed, Tar, Texinfo, and Zstd</seg>
</seglistitem> </seglistitem>
</segmentedlist> </segmentedlist>
@ -1885,6 +1885,47 @@
</seglistitem> </seglistitem>
</segmentedlist> </segmentedlist>
<!-- Begin Libxcrypt dependency info -->
<bridgehead renderas="sect2" id="libxcrypt-dep">Libxcrypt</bridgehead>
<segmentedlist id="libxcrypt-depends">
<segtitle>&dependencies;</segtitle>
<seglistitem>
<seg>Bash, Binutils, Coreutils, Diffutils, Gawk, GCC, Glibc, Grep,
Make, and Sed</seg>
</seglistitem>
</segmentedlist>
<segmentedlist id="libxcrypt-rundeps">
<segtitle>&runtime;</segtitle>
<seglistitem>
<seg>Glibc</seg>
</seglistitem>
</segmentedlist>
<segmentedlist id="libxcrypt-testdeps">
<segtitle>&testsuites;</segtitle>
<seglistitem>
<seg>None</seg>
</seglistitem>
</segmentedlist>
<segmentedlist id="libxcrypt-before">
<segtitle>&before;</segtitle>
<seglistitem>
<seg>GCC, Perl, Python,
<phrase revision='sysv'>and </phrase>Shadow<phrase
revision='systemd'>, and Systemd</phrase></seg>
</seglistitem>
</segmentedlist>
<segmentedlist id="libxcrypt-optdeps">
<segtitle>&external;</segtitle>
<seglistitem>
<seg>None</seg>
</seglistitem>
</segmentedlist>
<!-- Begin Linux dependency info --> <!-- Begin Linux dependency info -->
<bridgehead renderas="sect2" id="linux-dep">Linux</bridgehead> <bridgehead renderas="sect2" id="linux-dep">Linux</bridgehead>
@ -2455,14 +2496,14 @@
<segtitle>&dependencies;</segtitle> <segtitle>&dependencies;</segtitle>
<seglistitem> <seglistitem>
<seg>Bash, Binutils, Coreutils, Gawk, GCC, GDBM, Glibc, Grep, Groff, <seg>Bash, Binutils, Coreutils, Gawk, GCC, GDBM, Glibc, Grep, Groff,
Make, Sed, and Zlib</seg> Libxcrypt, Make, Sed, and Zlib</seg>
</seglistitem> </seglistitem>
</segmentedlist> </segmentedlist>
<segmentedlist id="perl-rundeps"> <segmentedlist id="perl-rundeps">
<segtitle>&runtime;</segtitle> <segtitle>&runtime;</segtitle>
<seglistitem> <seglistitem>
<seg>GDBM and Glibc</seg> <seg>GDBM, Glibc, and Libxcrypt</seg>
</seglistitem> </seglistitem>
</segmentedlist> </segmentedlist>
@ -2621,7 +2662,7 @@
<segtitle>&dependencies;</segtitle> <segtitle>&dependencies;</segtitle>
<seglistitem> <seglistitem>
<seg>Bash, Binutils, Coreutils, Expat, GCC, Gdbm, Gettext, Glibc, <seg>Bash, Binutils, Coreutils, Expat, GCC, Gdbm, Gettext, Glibc,
Grep, Libffi, Make, Ncurses, OpenSSL, Pkgconf, Sed, and Grep, Libffi, Libxcrypt, Make, Ncurses, OpenSSL, Pkgconf, Sed, and
Util-linux</seg> Util-linux</seg>
</seglistitem> </seglistitem>
</segmentedlist> </segmentedlist>
@ -2629,8 +2670,8 @@
<segmentedlist id="python-rundeps"> <segmentedlist id="python-rundeps">
<segtitle>&runtime;</segtitle> <segtitle>&runtime;</segtitle>
<seglistitem> <seglistitem>
<seg>Bzip2, Expat, Gdbm, Glibc, Libffi, Ncurses, OpenSSL, and <seg>Bzip2, Expat, Gdbm, Glibc, Libffi, Libxcrypt, Ncurses,
Zlib</seg> OpenSSL, and Zlib</seg>
</seglistitem> </seglistitem>
</segmentedlist> </segmentedlist>
@ -2745,14 +2786,14 @@
<segtitle>&dependencies;</segtitle> <segtitle>&dependencies;</segtitle>
<seglistitem> <seglistitem>
<seg>Acl, Attr, Bash, Binutils, Coreutils, Diffutils, Findutils, Gawk, <seg>Acl, Attr, Bash, Binutils, Coreutils, Diffutils, Findutils, Gawk,
GCC, Gettext, Glibc, Grep, Libcap, Make, and Sed</seg> GCC, Gettext, Glibc, Grep, Libcap, Libxcrypt, Make, and Sed</seg>
</seglistitem> </seglistitem>
</segmentedlist> </segmentedlist>
<segmentedlist id="shadow-rundeps"> <segmentedlist id="shadow-rundeps">
<segtitle>&runtime;</segtitle> <segtitle>&runtime;</segtitle>
<seglistitem> <seglistitem>
<seg>Glibc</seg> <seg>Glibc and Libxcrypt</seg>
</seglistitem> </seglistitem>
</segmentedlist> </segmentedlist>
@ -2826,15 +2867,15 @@
<segtitle>&dependencies;</segtitle> <segtitle>&dependencies;</segtitle>
<seglistitem> <seglistitem>
<seg>Acl, Attr, Bash, Binutils, Coreutils, Diffutils, Expat, Gawk, <seg>Acl, Attr, Bash, Binutils, Coreutils, Diffutils, Expat, Gawk,
GCC, Glibc, Gperf, Grep, Jinja2, Libcap, Meson, Pkgconf, Sed, GCC, Glibc, Gperf, Grep, Jinja2, Libcap, Libxcrypt, Meson,
Util-linux, and Zstd</seg> Pkgconf, Sed, Util-linux, and Zstd</seg>
</seglistitem> </seglistitem>
</segmentedlist> </segmentedlist>
<segmentedlist id="systemd-rundeps" revision='systemd'> <segmentedlist id="systemd-rundeps" revision='systemd'>
<segtitle>&runtime;</segtitle> <segtitle>&runtime;</segtitle>
<seglistitem> <seglistitem>
<seg>Acl, Attr, Glibc, Libcap, and Util-linux</seg> <seg>Acl, Attr, Glibc, Libcap, Libxcrypt, and Util-linux</seg>
</seglistitem> </seglistitem>
</segmentedlist> </segmentedlist>

View File

@ -40,6 +40,24 @@
appropriate for the entry or if needed the entire day's listitem. appropriate for the entry or if needed the entire day's listitem.
--> -->
<listitem>
<para>2023-07-02</para>
<itemizedlist>
<listitem>
<para>[xry111] - Add libxcrypt-4.4.35. Fixes
<ulink url='&lfs-ticket-root;5280'>#5280</ulink>.</para>
</listitem>
<listitem>
<para>[xry111] - Update to iproute2-6.4.0. Fixes
<ulink url='&lfs-ticket-root;5277'>#5277</ulink>.</para>
</listitem>
<listitem>
<para>[xry111] - Update to linux-6.4.1. Fixes
<ulink url='&lfs-ticket-root;5276'>#5276</ulink>.</para>
</listitem>
</itemizedlist>
</listitem>
<listitem> <listitem>
<para>2023-07-01</para> <para>2023-07-01</para>
<itemizedlist> <itemizedlist>

View File

@ -304,6 +304,10 @@
<title>Added:</title> <title>Added:</title>
<listitem><para></para></listitem> <!-- satisfy build --> <listitem><para></para></listitem> <!-- satisfy build -->
<listitem>
<para>Libxcrypt-&libxcrypt-version;</para>
</listitem>
<listitem> <listitem>
<para>Pkgconf-&flit-core-version;</para> <para>Pkgconf-&flit-core-version;</para>
</listitem> </listitem>

View File

@ -477,6 +477,15 @@
</listitem> </listitem>
</varlistentry> </varlistentry>
<varlistentry>
<term>Libxcrypt (&libxcrypt-version;) - <token>&libxcrypt-size;</token>:</term>
<listitem>
<para>Home page: <ulink url="&libxcrypt-home;"/></para>
<para>Download: <ulink url="&libxcrypt-url;"/></para>
<para>MD5 sum: <literal>&libxcrypt-md5;</literal></para>
</listitem>
</varlistentry>
<varlistentry> <varlistentry>
<term>Linux (&linux-version;) - <token>&linux-size;</token>:</term> <term>Linux (&linux-version;) - <token>&linux-size;</token>:</term>
<listitem> <listitem>

View File

@ -94,6 +94,7 @@ cd build</userinput></screen>
--build=$(../scripts/config.guess) \ --build=$(../scripts/config.guess) \
--enable-kernel=&min-kernel; \ --enable-kernel=&min-kernel; \
--with-headers=$LFS/usr/include \ --with-headers=$LFS/usr/include \
--disable-crypt \
libc_cv_slibdir=/usr/lib</userinput></screen> libc_cv_slibdir=/usr/lib</userinput></screen>
<screen arch="ml_32,ml_x32,ml_all"><userinput remap="configure">../configure \ <screen arch="ml_32,ml_x32,ml_all"><userinput remap="configure">../configure \
--prefix=/usr \ --prefix=/usr \

View File

@ -104,6 +104,7 @@ cd build</userinput></screen>
--disable-libatomic \ --disable-libatomic \
--disable-libgomp \ --disable-libgomp \
--disable-libquadmath \ --disable-libquadmath \
--disable-libsanitizer \
--disable-libssp \ --disable-libssp \
--disable-libvtv \ --disable-libvtv \
--enable-languages=c,c++</userinput></screen> --enable-languages=c,c++</userinput></screen>
@ -176,6 +177,19 @@ cd build</userinput></screen>
</listitem> </listitem>
</varlistentry> </varlistentry>
<varlistentry>
<term><parameter>--disable-libsanitizer</parameter></term>
<listitem>
<para>Disable GCC sanitizer runtime libraries. They are not
needed for the temporary installation. This switch is necessary
to build GCC without
<systemitem class='library'>libcrypt</systemitem> installed for
the target. In <xref linkend='ch-tools-gcc-pass1'/> it was
implied by <parameter>--disable-libstdcxx</parameter>, but now we
have to explicitly pass it.</para>
</listitem>
</varlistentry>
</variablelist> </variablelist>
<para>Compile the package:</para> <para>Compile the package:</para>

View File

@ -37,6 +37,7 @@
<xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="attr.xml"/> <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="attr.xml"/>
<xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="acl.xml"/> <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="acl.xml"/>
<xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="libcap.xml"/> <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="libcap.xml"/>
<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="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="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="pkgconf.xml"/>

View File

@ -79,6 +79,7 @@ cd build</userinput></screen>
--enable-kernel=&min-kernel; \ --enable-kernel=&min-kernel; \
--enable-stack-protector=strong \ --enable-stack-protector=strong \
--with-headers=/usr/include \ --with-headers=/usr/include \
--disable-crypt \
libc_cv_slibdir=/usr/lib</userinput></screen> libc_cv_slibdir=/usr/lib</userinput></screen>
<screen arch="ml_32,ml_x32,ml_all"><userinput remap="configure">../configure --prefix=/usr \ <screen arch="ml_32,ml_x32,ml_all"><userinput remap="configure">../configure --prefix=/usr \
--disable-werror \ --disable-werror \
@ -646,7 +647,7 @@ readelf -l a.out | grep '/ld-linux-x32'</userinput></screen>
<seg>ld-linux-x86-64.so.2, ld-linux.so.2, <seg>ld-linux-x86-64.so.2, ld-linux.so.2,
libBrokenLocale.{a,so}, libanl.{a,so}, libBrokenLocale.{a,so}, libanl.{a,so},
libc.{a,so}, libc_nonshared.a, libc_malloc_debug.so, libc.{a,so}, libc_nonshared.a, libc_malloc_debug.so,
libcrypt.{a,so}, libdl.{a,so.2}, libg.a, libm.{a,so}, libdl.{a,so.2}, libg.a, libm.{a,so},
libmcheck.a, libmemusage.so, libmvec.{a,so}, libnsl.so.1, libmcheck.a, libmemusage.so, libmvec.{a,so}, libnsl.so.1,
libnss_compat.so, libnss_dns.so, libnss_files.so, libnss_hesiod.so, libnss_compat.so, libnss_dns.so, libnss_files.so, libnss_hesiod.so,
libpcprofile.so, libpthread.{a,so.0}, libpcprofile.so, libpthread.{a,so.0},
@ -952,16 +953,6 @@ readelf -l a.out | grep '/ld-linux-x32'</userinput></screen>
</listitem> </listitem>
</varlistentry> </varlistentry>
<varlistentry id="libcrypt">
<term><filename class="libraryfile">libcrypt</filename></term>
<listitem>
<para>The cryptography library</para>
<indexterm zone="ch-system-glibc libcrypt">
<primary sortas="c-libcrypt">libcrypt</primary>
</indexterm>
</listitem>
</varlistentry>
<varlistentry id="libdl"> <varlistentry id="libdl">
<term><filename class="libraryfile">libdl</filename></term> <term><filename class="libraryfile">libdl</filename></term>
<listitem> <listitem>

148
chapter08/libxcrypt.xml Normal file
View File

@ -0,0 +1,148 @@
<?xml version="1.0" encoding="ISO-8859-1"?>
<!DOCTYPE sect1 PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN"
"http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
<!ENTITY % general-entities SYSTEM "../general.ent">
%general-entities;
]>
<sect1 id="ch-system-libxcrypt" role="wrap">
<?dbhtml filename="libxcrypt.html"?>
<sect1info condition="script">
<productname>libxcrypt</productname>
<productnumber>&libxcrypt-version;</productnumber>
<address>&libxcrypt-url;</address>
</sect1info>
<title>Libxcrypt-&libxcrypt-version;</title>
<indexterm zone="ch-system-libxcrypt">
<primary sortas="a-Libxcrypt">Libxcrypt</primary>
</indexterm>
<sect2 role="package">
<title/>
<para>The Libxcrypt package contains a modern library for one-way
hashing of passwords.</para>
<segmentedlist>
<segtitle>&buildtime;</segtitle>
<segtitle>&diskspace;</segtitle>
<seglistitem>
<seg>&libxcrypt-fin-sbu;</seg>
<seg>&libxcrypt-fin-du;</seg>
</seglistitem>
</segmentedlist>
</sect2>
<sect2 role="installation">
<title>Installation of Libxcrypt</title>
<para>Prepare Libxcrypt for compilation:</para>
<screen><userinput remap="configure">./configure --prefix=/usr \
--enable-hashes=strong,glibc \
--enable-obsolete-api=no \
--disable-static \
--disable-failure-tokens</userinput></screen>
<variablelist>
<title>The meaning of the new configure options:</title>
<varlistentry>
<term><parameter>--enable-hashes=strong,glibc</parameter></term>
<listitem>
<para>Build strong hash algorithms recommended for security use
cases, and the hash algorithms provided by traditional Glibc
<systemitem class='library'>libcrypt</systemitem> for
compatibility.</para>
</listitem>
</varlistentry>
<varlistentry>
<term><parameter>--enable-obsolete-api=no</parameter></term>
<listitem>
<para>Disable obsolete API functions. They are not needed for
a modern Linux system built from source.</para>
</listitem>
</varlistentry>
<varlistentry>
<term><parameter>--disable-failure-tokens</parameter></term>
<listitem>
<para>Disable failure token feature. It's needed for
compatibility with the traditional hash libraries of some
platforms, but a Linux system based on Glibc does not need
it.</para>
</listitem>
</varlistentry>
</variablelist>
<para>Compile the package:</para>
<screen><userinput remap="make">make</userinput></screen>
<para>To test the results, issue:</para>
<screen><userinput remap="test">make check</userinput></screen>
<para>Install the package:</para>
<screen><userinput remap="install">make install</userinput></screen>
<note>
<para>The instructions above disabled obsolete API functions since
no package installed by compiling from sources would link against
them at runtime. However, the only known binary-only applications
that link against these functions require ABI version 1. If you must
have such functions because of some binary-only application or to be
to be compliant with LSB, build the package again with the following
commands:</para>
<screen><userinput remap="nodump">make distclean
./configure --prefix=/usr \
--enable-hashes=strong,glibc \
--enable-obsolete-api=glibc \
--disable-static \
--disable-failure-tokens
make
cp -av .libs/libcrypt.so.1* /usr/lib</userinput></screen>
</note>
</sect2>
<sect2 id="contents-libxcrypt" role="content">
<title>Contents of Libxcrypt</title>
<segmentedlist>
<segtitle>Installed libraries</segtitle>
<seglistitem>
<seg>libcrypt.so</seg>
</seglistitem>
</segmentedlist>
<variablelist>
<bridgehead renderas="sect3">Short Descriptions</bridgehead>
<?dbfo list-presentation="list"?>
<?dbhtml list-presentation="table"?>
<varlistentry id="libcrypt">
<term><filename class="libraryfile">libcrypt</filename></term>
<listitem>
<para>Contains functions to hash passwords</para>
<indexterm zone="ch-system-libxcrypt libcrypt">
<primary sortas="c-libcrypt">libcrypt</primary>
</indexterm>
</listitem>
</varlistentry>
</variablelist>
</sect2>
</sect1>

View File

@ -60,11 +60,10 @@ find man -name Makefile.in -exec sed -i 's/getspnam\.3 / /' {} \;
find man -name Makefile.in -exec sed -i 's/passwd\.5 / /' {} \;</userinput></screen> find man -name Makefile.in -exec sed -i 's/passwd\.5 / /' {} \;</userinput></screen>
<para id="shadow-login_defs">Instead of using the default <para id="shadow-login_defs">Instead of using the default
<emphasis>crypt</emphasis> method, use the more secure <emphasis>crypt</emphasis> method, use the much more secure
<emphasis>SHA-512</emphasis> method of password encryption, which also <emphasis>YESCRYPT</emphasis> method of password encryption, which also
allows passwords longer than 8 characters. In addition, set the number of allows passwords longer than 8 characters.
rounds to 500,000 instead of the default 5000, which is much too low to It is also necessary to change
prevent brute force password attacks. It is also necessary to change
the obsolete <filename class="directory">/var/spool/mail</filename> location the obsolete <filename class="directory">/var/spool/mail</filename> location
for user mailboxes that Shadow uses by default to the <filename for user mailboxes that Shadow uses by default to the <filename
class="directory">/var/mail</filename> location used currently. And, class="directory">/var/mail</filename> location used currently. And,
@ -81,10 +80,9 @@ find man -name Makefile.in -exec sed -i 's/passwd\.5 / /' {} \;</userinput></s
built.</para> built.</para>
</note> </note>
<screen><userinput remap="pre">sed -e 's:#ENCRYPT_METHOD DES:ENCRYPT_METHOD SHA512:' \ <screen><userinput remap="pre">sed -e 's:#ENCRYPT_METHOD DES:ENCRYPT_METHOD YESCRYPT:' \
-e 's@#\(SHA_CRYPT_..._ROUNDS 5000\)@\100@' \ -e 's:/var/spool/mail:/var/mail:' \
-e 's:/var/spool/mail:/var/mail:' \ -e '/PATH=/{s@/sbin:@@;s@/bin:@@}' \
-e '/PATH=/{s@/sbin:@@;s@/bin:@@}' \
-i etc/login.defs</userinput></screen> -i etc/login.defs</userinput></screen>
<note> <note>
@ -106,8 +104,9 @@ find man -name Makefile.in -exec sed -i 's/passwd\.5 / /' {} \;</userinput></s
<para>Prepare Shadow for compilation:</para> <para>Prepare Shadow for compilation:</para>
<screen><userinput remap="configure">touch /usr/bin/passwd <screen><userinput remap="configure">touch /usr/bin/passwd
./configure --sysconfdir=/etc \ ./configure --sysconfdir=/etc \
--disable-static \ --disable-static \
--with-{b,yes}crypt \
--with-group-name-max-length=32</userinput></screen> --with-group-name-max-length=32</userinput></screen>
<variablelist> <variablelist>
@ -122,6 +121,21 @@ find man -name Makefile.in -exec sed -i 's/passwd\.5 / /' {} \;</userinput></s
create it in the wrong place.</para> create it in the wrong place.</para>
</listitem> </listitem>
</varlistentry> </varlistentry>
<varlistentry>
<term><parameter>--with-{b,yes}crypt</parameter></term>
<listitem>
<para>The shell expands this to two switches,
<parameter>--with-bcrypt</parameter> and
<parameter>--with-yescrypt</parameter>. They allow shadow to use
the Bcrypt and Yescrypt algorithms implemented by
<application>Libxcrypt</application> for hashing passwords.
These algorithms are more secure (in particular, much more
resistant to GPU-based attacks) than the traditional SHA
algorithms.</para>
</listitem>
</varlistentry>
<varlistentry> <varlistentry>
<term><parameter>--with-group-name-max-length=32</parameter></term> <term><parameter>--with-group-name-max-length=32</parameter></term>
<listitem> <listitem>

View File

@ -83,9 +83,9 @@ for (s, act) in [(upd, "Update to "), (add, "Add ")]:
out = act + pkgver out = act + pkgver
if pkgver in ticket: if pkgver in ticket:
out += ' (#' + ticket[pkgver] + ')' out += ' (#' + ticket[pkgver] + ')'
print(out) print("-", out)
for i in rem: for i in rem:
print("Remove", i) print("-", "Remove", i)
print("---------------------") print("---------------------")

View File

@ -12,12 +12,10 @@ $exceptions = array();
$regex = array(); $regex = array();
//$regex[ 'bzip2' ] = "/^.*current version is ([\d\.]+).*$/"; //$regex[ 'bzip2' ] = "/^.*current version is ([\d\.]+).*$/";
$regex[ 'check' ] = "/^.*Check (\d[\d\.]+\d).*$/";
$regex[ 'intltool' ] = "/^.*Latest version is (\d[\d\.]+\d).*$/"; $regex[ 'intltool' ] = "/^.*Latest version is (\d[\d\.]+\d).*$/";
$regex[ 'less' ] = "/^.*current released version is less-(\d+).*$/"; $regex[ 'less' ] = "/^.*current released version is less-(\d+).*$/";
$regex[ 'mpfr' ] = "/^mpfr-([\d\.]+)\.tar.*$/"; $regex[ 'mpfr' ] = "/^mpfr-([\d\.]+)\.tar.*$/";
$regex[ 'Python' ] = "/^.*Latest Python 3.*Python (3[\d\.]+\d).*$/"; $regex[ 'Python' ] = "/^.*Latest Python 3.*Python (3[\d\.]+\d).*$/";
$regex[ 'systemd' ] = "/^.*systemd v([\d]+)$/";
//$regex[ 'sysvinit' ] = "/^.*sysvinit-([\d\.]+)dsf\.tar.*$/"; //$regex[ 'sysvinit' ] = "/^.*sysvinit-([\d\.]+)dsf\.tar.*$/";
$regex[ 'tzdata' ] = "/^.*tzdata([\d]+[a-z]).*$/"; $regex[ 'tzdata' ] = "/^.*tzdata([\d]+[a-z]).*$/";
$regex[ 'xz' ] = "/^.*xz-([\d\.]*\d).*$/"; $regex[ 'xz' ] = "/^.*xz-([\d\.]*\d).*$/";
@ -69,17 +67,7 @@ function find_even_max( $lines, $regex_match, $regex_replace )
function http_get_file( $url ) function http_get_file( $url )
{ {
if ( ! preg_match( "/sourceforge/", $url ) && if ( preg_match( "/mpfr/", $url ) )
! preg_match( "/mpfr/", $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 if ( preg_match( "/mpfr/", $url ) )
{ {
# There seems to be a problem with the mpfs certificate # There seems to be a problem with the mpfs certificate
exec( "curl --location --silent --insecure --max-time 30 $url", $dir ); exec( "curl --location --silent --insecure --max-time 30 $url", $dir );
@ -87,11 +75,19 @@ function http_get_file( $url )
$dir = strip_tags( $s ); $dir = strip_tags( $s );
return explode( "\n", $dir ); return explode( "\n", $dir );
} }
else
if ( preg_match( "/sourceforge/", $url ) ||
preg_match( "/psmisc/", $url ) )
{ {
exec( "lynx -dump $url 2>/dev/null", $lines ); exec( "lynx -dump $url 2>/dev/null", $lines );
return $lines; return $lines;
} }
exec( "curl --location --silent --max-time 30 $url", $dir );
$s = implode( "\n", $dir );
$dir = strip_tags( $s );
return explode( "\n", $dir );
} }
function max_parent( $dirpath, $prefix ) function max_parent( $dirpath, $prefix )
@ -110,6 +106,11 @@ function max_parent( $dirpath, $prefix )
return "$dirpath/$max"; return "$dirpath/$max";
} }
function github( $path )
{
return "https://api.github.com/repos/$path/releases/latest";
}
function get_packages( $package, $dirpath ) function get_packages( $package, $dirpath )
{ {
global $exceptions; global $exceptions;
@ -117,39 +118,40 @@ function get_packages( $package, $dirpath )
//if ( $package != "psmisc" ) return 0; // debug //if ( $package != "psmisc" ) return 0; // debug
if ( $package == "bc" ) $dirpath = "https://github.com/gavinhoward/bc/releases"; if ( $package == "bc" ) $dirpath = github("gavinhoward/bc");
if ( $package == "check" ) $dirpath = "https://github.com/libcheck/check/releases"; if ( $package == "check" ) $dirpath = github("libcheck/check");
if ( $package == "e2fsprogs" ) $dirpath = "https://sourceforge.net/projects/e2fsprogs/files/e2fsprogs"; if ( $package == "e2fsprogs" ) $dirpath = "https://sourceforge.net/projects/e2fsprogs/files/e2fsprogs";
if ( $package == "expat" ) $dirpath = "https://sourceforge.net/projects/expat/files"; if ( $package == "expat" ) $dirpath = "https://sourceforge.net/projects/expat/files";
if ( $package == "elfutils" ) $dirpath = "https://sourceware.org/ftp/elfutils"; if ( $package == "elfutils" ) $dirpath = "https://sourceware.org/ftp/elfutils";
if ( $package == "expect" ) $dirpath = "https://sourceforge.net/projects/expect/files"; if ( $package == "expect" ) $dirpath = "https://sourceforge.net/projects/expect/files";
if ( $package == "eudev" ) $dirpath = "https://github.com/eudev-project/eudev/releases"; if ( $package == "eudev" ) $dirpath = github("eudev-project/eudev");
if ( $package == "file" ) $dirpath = "https://github.com/file/file/tags"; if ( $package == "file" ) $dirpath = "https://github.com/file/file/tags";
if ( $package == "flex" ) $dirpath = "https://github.com/westes/flex/releases"; if ( $package == "flex" ) $dirpath = github("westes/flex");
if ( $package == "flit_core" ) $dirpath = "https://pypi.org/project/flit-core/"; if ( $package == "flit_core" ) $dirpath = "https://pypi.org/project/flit-core/";
if ( $package == "gcc" ) $dirpath = max_parent( $dirpath, "gcc-" ); if ( $package == "gcc" ) $dirpath = max_parent( $dirpath, "gcc-" );
if ( $package == "iana-etc" ) $dirpath = "https://github.com/Mic92/iana-etc/releases"; if ( $package == "iana-etc" ) $dirpath = github("Mic92/iana-etc");
if ( $package == "intltool" ) $dirpath = "https://launchpad.net/intltool/trunk"; if ( $package == "intltool" ) $dirpath = "https://launchpad.net/intltool/trunk";
if ( $package == "libffi" ) $dirpath = "https://github.com/libffi/libffi/releases"; if ( $package == "libffi" ) $dirpath = github("libffi/libffi");
if ( $package == "meson" ) $dirpath = "https://github.com/mesonbuild/meson/releases"; if ( $package == "libxcrypt" ) $dirpath = github("besser82/libxcrypt");
if ( $package == "meson" ) $dirpath = github("mesonbuild/meson");
if ( $package == "mpc" ) $dirpath = "https://ftp.gnu.org/gnu/mpc"; if ( $package == "mpc" ) $dirpath = "https://ftp.gnu.org/gnu/mpc";
if ( $package == "mpfr" ) $dirpath = "https://mpfr.loria.fr/mpfr-current"; if ( $package == "mpfr" ) $dirpath = "https://mpfr.loria.fr/mpfr-current";
if ( $package == "ncurses" ) $dirpath = "https://invisible-mirror.net/archives/ncurses"; if ( $package == "ncurses" ) $dirpath = "https://invisible-mirror.net/archives/ncurses";
if ( $package == "ninja" ) $dirpath = "https://github.com/ninja-build/ninja/releases"; if ( $package == "ninja" ) $dirpath = github("ninja-build/ninja");
if ( $package == "procps-ng" ) $dirpath = "https://gitlab.com/procps-ng/procps/-/tags"; if ( $package == "procps-ng" ) $dirpath = "https://gitlab.com/procps-ng/procps/-/tags";
if ( $package == "psmisc" ) $dirpath = "https://gitlab.com/psmisc/psmisc/-/tags"; if ( $package == "psmisc" ) $dirpath = "https://gitlab.com/psmisc/psmisc/-/tags";
if ( $package == "Python" ) $dirpath = "https://www.python.org/downloads/source/"; if ( $package == "Python" ) $dirpath = "https://www.python.org/downloads/source/";
if ( $package == "shadow" ) $dirpath = "https://github.com/shadow-maint/shadow/releases"; if ( $package == "shadow" ) $dirpath = github("shadow-maint/shadow");
if ( $package == "sysvinit" ) $dirpath = "https://github.com/slicer69/sysvinit/releases"; if ( $package == "sysvinit" ) $dirpath = github("slicer69/sysvinit");
if ( $package == "MarkupSafe" ) $dirpath = "https://pypi.python.org/pypi/MarkupSafe/"; if ( $package == "MarkupSafe" ) $dirpath = "https://pypi.python.org/pypi/MarkupSafe/";
if ( $package == "Jinja" ) $dirpath = "https://pypi.python.org/pypi/Jinja2/"; if ( $package == "Jinja" ) $dirpath = "https://pypi.python.org/pypi/Jinja2/";
if ( $package == "systemd" ) $dirpath = "https://github.com/systemd/systemd/releases"; if ( $package == "systemd" ) $dirpath = github("systemd/systemd");
//if ( $package == "tcl" ) $dirpath = "https://sourceforge.net/projects/tcl/files"; //if ( $package == "tcl" ) $dirpath = "https://sourceforge.net/projects/tcl/files";
if ( $package == "tcl" ) $dirpath = "https://www.tcl.tk/software/tcltk/download.html"; if ( $package == "tcl" ) $dirpath = "https://www.tcl.tk/software/tcltk/download.html";
if ( $package == "util-linux" ) $dirpath = max_parent( $dirpath, "v." ); if ( $package == "util-linux" ) $dirpath = max_parent( $dirpath, "v." );
if ( $package == "vim" ) $dirpath = "https://github.com/vim/vim/tags"; if ( $package == "vim" ) $dirpath = "https://github.com/vim/vim/tags";
if ( $package == "wheel" ) $dirpath = "https://pypi.org/project/wheel/#files"; if ( $package == "wheel" ) $dirpath = "https://pypi.org/project/wheel/#files";
if ( $package == "zstd" ) $dirpath = "https://github.com/facebook/zstd/releases"; if ( $package == "zstd" ) $dirpath = github("facebook/zstd");
// Check for ftp // Check for ftp
if ( preg_match( "/^ftp/", $dirpath ) ) if ( preg_match( "/^ftp/", $dirpath ) )
@ -259,27 +261,12 @@ if ( $package == "zstd" ) $dirpath = "https://github.com/facebook/zstd/rel
if ( $package == "e2fsprogs" ) if ( $package == "e2fsprogs" )
return find_max( $lines, "/v\d/", "/^.*v(\d[\d\.]+\d).*$/" ); return find_max( $lines, "/v\d/", "/^.*v(\d[\d\.]+\d).*$/" );
if ( $package == "eudev" )
return find_max( $lines, "/Release/", "/^.*Release (\d[\d\.]+\d).*$/" );
if ( $package == "expect" ) if ( $package == "expect" )
return find_max( $lines, "/expect/", "/^.*expect(\d[\d\.]+\d).tar.*$/" ); return find_max( $lines, "/expect/", "/^.*expect(\d[\d\.]+\d).tar.*$/" );
if ( $package == "elfutils" ) if ( $package == "elfutils" )
return find_max( $lines, "/^\d/", "/^(\d[\d\.]+\d)\/.*$/" ); return find_max( $lines, "/^\d/", "/^(\d[\d\.]+\d)\/.*$/" );
if ( $package == "iana-etc" )
return find_max( $lines, "/^\s*20\d\d/", "/^\s+(\d+).*$/" );
if ( $package == "meson" )
return find_max( $lines, "/^\s+\d\./", "/^\s+([\d\.]+)$/" );
if ( $package == "shadow" )
return find_max( $lines, "/^\s+\d\./", "/^\s+([\d\.]+)$/" );
if ( $package == "sysvinit" )
return find_max( $lines, "/^\s+\d\./", "/^\s+([\d\.]+)$/" );
if ( $package == "XML-Parser" ) if ( $package == "XML-Parser" )
{ {
$max = find_max( $lines, "/$package/", "/^.*$package-([\d\._]*\d).tar.*$/" ); $max = find_max( $lines, "/$package/", "/^.*$package-([\d\._]*\d).tar.*$/" );
@ -291,9 +278,6 @@ if ( $package == "zstd" ) $dirpath = "https://github.com/facebook/zstd/rel
if ( $package == "tcl" ) if ( $package == "tcl" )
return find_max( $lines, "/tcl\d/", "/^.*tcl(\d\.[\d\.]*\d)-src.*$/" ); return find_max( $lines, "/tcl\d/", "/^.*tcl(\d\.[\d\.]*\d)-src.*$/" );
if ( $package == "ninja" )
return find_max( $lines, "/^ *v\d/", "/^.*v(\d[\d\.]*\d).*$/" );
if ( $package == "gmp" ) if ( $package == "gmp" )
return find_max( $lines, "/$package/", "/^.*$package-([\d\._]*\d[a-z]?).tar.*$/" ); return find_max( $lines, "/$package/", "/^.*$package-([\d\._]*\d[a-z]?).tar.*$/" );
@ -306,9 +290,6 @@ if ( $package == "zstd" ) $dirpath = "https://github.com/facebook/zstd/rel
return str_replace( "_", ".", $max ); return str_replace( "_", ".", $max );
} }
if ( $package == "libffi" )
return find_max( $lines, "/v\d/", "/^.*v([\d\.]+)$/" );
if ( $package == "flit_core" ) if ( $package == "flit_core" )
return find_max( $lines, "/flit-core /", "/^.*flit-core ([\d\.]+)$/" ); return find_max( $lines, "/flit-core /", "/^.*flit-core ([\d\.]+)$/" );
@ -330,8 +311,8 @@ if ( $package == "zstd" ) $dirpath = "https://github.com/facebook/zstd/rel
if ( $package == "vim" ) if ( $package == "vim" )
return find_max( $lines, "/v\d\./", "/^.*v([\d\.]+).*$/" ); return find_max( $lines, "/v\d\./", "/^.*v([\d\.]+).*$/" );
if ( $package == "zstd" ) if ( preg_match( "/api.github.com/", $dirpath) )
return find_max( $lines, "/Zstandard v/", "/^.*v([\d\.]+).*$/" ); return ltrim(json_decode(join("", $lines))->tag_name, "v");
// Most packages are in the form $package-n.n.n // Most packages are in the form $package-n.n.n
// Occasionally there are dashes (e.g. 201-1) // Occasionally there are dashes (e.g. 201-1)
@ -346,13 +327,15 @@ function get_current()
// Fetech from git and get wget-list // Fetech from git and get wget-list
$current = array(); $current = array();
#$lfssvn = "svn://svn.linuxfromscratch.org/LFS/trunk"; #$lfssvn = "svn://svn.linuxfromscratch.org/LFS/trunk";
$lfsgit = "git://git.linuxfromscratch.org/lfs.git"; $lfsgit = "https://git.linuxfromscratch.org/lfs.git";
$tmpdir = exec( "mktemp -d /tmp/lfscheck.XXXXXX" ); $tmpdir = exec( "mktemp -d /tmp/lfscheck.XXXXXX" );
$cdir = getcwd(); $cdir = getcwd();
chdir( $tmpdir ); chdir( $tmpdir );
#exec ( "svn --quiet export $lfssvn LFS" );
exec ( "git clone $lfsgit LFS" ); # git-version.sh needs the history since the rx.y tag.
exec ( "git clone $lfsgit LFS --depth 1 --branch r11.2" );
exec ( "git -C LFS pull origin trunk" );
# Make version.ent # Make version.ent
chdir( "$tmpdir/LFS" ); chdir( "$tmpdir/LFS" );

View File

@ -350,10 +350,10 @@
<!ENTITY intltool-fin-du "1.5 MB"> <!ENTITY intltool-fin-du "1.5 MB">
<!ENTITY intltool-fin-sbu "less than 0.1 SBU"> <!ENTITY intltool-fin-sbu "less than 0.1 SBU">
<!ENTITY iproute2-version "6.3.0"> <!ENTITY iproute2-version "6.4.0">
<!ENTITY iproute2-size "894 KB"> <!ENTITY iproute2-size "904 KB">
<!ENTITY iproute2-url "&kernel;linux/utils/net/iproute2/iproute2-&iproute2-version;.tar.xz"> <!ENTITY iproute2-url "&kernel;linux/utils/net/iproute2/iproute2-&iproute2-version;.tar.xz">
<!ENTITY iproute2-md5 "53ecd48564c75d5fa4b5325d47344d68"> <!ENTITY iproute2-md5 "90ce0eb84a8f1e2b14ffa77e8eb3f5ed">
<!ENTITY iproute2-home "&kernel;linux/utils/net/iproute2/"> <!ENTITY iproute2-home "&kernel;linux/utils/net/iproute2/">
<!ENTITY iproute2-fin-du "17 MB"> <!ENTITY iproute2-fin-du "17 MB">
<!ENTITY iproute2-fin-sbu "0.1 SBU"> <!ENTITY iproute2-fin-sbu "0.1 SBU">
@ -439,14 +439,22 @@
<!ENTITY libtool-fin-du "44 MB"> <!ENTITY libtool-fin-du "44 MB">
<!ENTITY libtool-fin-sbu "1.4 SBU"> <!ENTITY libtool-fin-sbu "1.4 SBU">
<!ENTITY libxcrypt-version "4.4.35">
<!ENTITY libxcrypt-size "612 KB">
<!ENTITY libxcrypt-url "&github;/besser82/libxcrypt/releases/download/v&libxcrypt-version;/libxcrypt-&libxcrypt-version;.tar.xz">
<!ENTITY libxcrypt-md5 "1d8487dfc43ee8e31a858456b868f836">
<!ENTITY libxcrypt-home "&github;/besser82/libxcrypt/">
<!ENTITY libxcrypt-fin-du "16 MB">
<!ENTITY libxcrypt-fin-sbu "0.1 SBU">
<!ENTITY linux-major-version "6"> <!ENTITY linux-major-version "6">
<!ENTITY linux-minor-version "3"> <!ENTITY linux-minor-version "4">
<!ENTITY linux-patch-version "10"> <!ENTITY linux-patch-version "1">
<!--<!ENTITY linux-version "&linux-major-version;.&linux-minor-version;">--> <!--<!ENTITY linux-version "&linux-major-version;.&linux-minor-version;">-->
<!ENTITY linux-version "&linux-major-version;.&linux-minor-version;.&linux-patch-version;"> <!ENTITY linux-version "&linux-major-version;.&linux-minor-version;.&linux-patch-version;">
<!ENTITY linux-size "133,750 KB"> <!ENTITY linux-size "134,584 KB">
<!ENTITY linux-url "&kernel;linux/kernel/v&linux-major-version;.x/linux-&linux-version;.tar.xz"> <!ENTITY linux-url "&kernel;linux/kernel/v&linux-major-version;.x/linux-&linux-version;.tar.xz">
<!ENTITY linux-md5 "c3c1d7ab7644ad3d3ad10919c679243f"> <!ENTITY linux-md5 "ab345e1ea1c103c311248f078d92a160">
<!ENTITY linux-home "https://www.kernel.org/"> <!ENTITY linux-home "https://www.kernel.org/">
<!-- measured for 5.13.4 / gcc-11.1.0 on x86_64 : minimum is <!-- measured for 5.13.4 / gcc-11.1.0 on x86_64 : minimum is
allnoconfig rounded down to allow for ongoing cleanups, allnoconfig rounded down to allow for ongoing cleanups,
@ -577,7 +585,7 @@
<!ENTITY pkgconf-version "1.9.5"> <!ENTITY pkgconf-version "1.9.5">
<!ENTITY pkgconf-size "304 KB"> <!ENTITY pkgconf-size "304 KB">
<!ENTITY pkgconf-url "https://gentoo.osuosl.org/distfiles/pkgconf-&pkgconf-version;.tar.xz"> <!ENTITY pkgconf-url "https://distfiles.ariadne.space/pkgconf/pkgconf-&pkgconf-version;.tar.xz">
<!ENTITY pkgconf-md5 "0a8b69723bef4ebad83e9c8b43a75cc7"> <!ENTITY pkgconf-md5 "0a8b69723bef4ebad83e9c8b43a75cc7">
<!ENTITY pkgconf-home "http://pkgconf.org/"> <!ENTITY pkgconf-home "http://pkgconf.org/">
<!ENTITY pkgconf-fin-du "8.1 MB"> <!ENTITY pkgconf-fin-du "8.1 MB">

View File

@ -373,6 +373,17 @@
suites in other LFS packages.</para> suites in other LFS packages.</para>
</listitem> </listitem>
<listitem>
<para>Libxcrypt</para>
<para>This package provides the
<systemitem class='library'>libcrypt</systemitem> library
needed by various packages (notably, Shadow) for hashing passwords.
It replaces the obsolete
<systemitem class='library'>libcrypt</systemitem> implmentation in
Glibc.</para>
</listitem>
<listitem> <listitem>
<para>Linux Kernel</para> <para>Linux Kernel</para>