aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorXi Ruoyao <xry111@xry111.site>2023-07-03 06:17:06 +0800
committerXi Ruoyao <xry111@xry111.site>2023-07-03 06:17:06 +0800
commit48834cf197e62ba7941aeefbcbf58933854e2acf (patch)
tree5698e26ceb05a062e8c9a5836c8035e96849d3d0
parent9ceb623400b564f39947cf7ff7313afaa1fd69a5 (diff)
parentac5f78c4bf3d895c9abf475b4bb07f25f634a874 (diff)
Merge branch 'xry111/libxcrypt' into trunk
-rw-r--r--appendices/dependencies.xml65
-rw-r--r--chapter01/changelog.xml4
-rw-r--r--chapter01/whatsnew.xml4
-rw-r--r--chapter03/packages.xml9
-rw-r--r--chapter05/glibc.xml1
-rw-r--r--chapter06/gcc-pass2.xml14
-rw-r--r--chapter08/chapter08.xml1
-rw-r--r--chapter08/glibc.xml13
-rw-r--r--chapter08/libxcrypt.xml148
-rw-r--r--packages.ent8
-rw-r--r--prologue/why.xml11
11 files changed, 255 insertions, 23 deletions
diff --git a/appendices/dependencies.xml b/appendices/dependencies.xml
index 1d4a0abac..54b3d65e0 100644
--- a/appendices/dependencies.xml
+++ b/appendices/dependencies.xml
@@ -970,8 +970,8 @@
<segtitle>&dependencies;</segtitle>
<seglistitem>
<seg>Bash, Binutils, Coreutils, Diffutils, Findutils, Gawk, GCC,
- Gettext, Glibc, GMP, Grep, M4, Make, MPC, MPFR, Patch, Perl, Sed,
- Tar, Texinfo, and Zstd</seg>
+ Gettext, Glibc, GMP, Grep, Libxcrypt, M4, Make, MPC, MPFR, Patch,
+ Perl, Sed, Tar, Texinfo, and Zstd</seg>
</seglistitem>
</segmentedlist>
@@ -1885,6 +1885,47 @@
</seglistitem>
</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 -->
<bridgehead renderas="sect2" id="linux-dep">Linux</bridgehead>
@@ -2455,14 +2496,14 @@
<segtitle>&dependencies;</segtitle>
<seglistitem>
<seg>Bash, Binutils, Coreutils, Gawk, GCC, GDBM, Glibc, Grep, Groff,
- Make, Sed, and Zlib</seg>
+ Libxcrypt, Make, Sed, and Zlib</seg>
</seglistitem>
</segmentedlist>
<segmentedlist id="perl-rundeps">
<segtitle>&runtime;</segtitle>
<seglistitem>
- <seg>GDBM and Glibc</seg>
+ <seg>GDBM, Glibc, and Libxcrypt</seg>
</seglistitem>
</segmentedlist>
@@ -2621,7 +2662,7 @@
<segtitle>&dependencies;</segtitle>
<seglistitem>
<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>
</seglistitem>
</segmentedlist>
@@ -2629,8 +2670,8 @@
<segmentedlist id="python-rundeps">
<segtitle>&runtime;</segtitle>
<seglistitem>
- <seg>Bzip2, Expat, Gdbm, Glibc, Libffi, Ncurses, OpenSSL, and
- Zlib</seg>
+ <seg>Bzip2, Expat, Gdbm, Glibc, Libffi, Libxcrypt, Ncurses,
+ OpenSSL, and Zlib</seg>
</seglistitem>
</segmentedlist>
@@ -2745,14 +2786,14 @@
<segtitle>&dependencies;</segtitle>
<seglistitem>
<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>
</segmentedlist>
<segmentedlist id="shadow-rundeps">
<segtitle>&runtime;</segtitle>
<seglistitem>
- <seg>Glibc</seg>
+ <seg>Glibc and Libxcrypt</seg>
</seglistitem>
</segmentedlist>
@@ -2826,15 +2867,15 @@
<segtitle>&dependencies;</segtitle>
<seglistitem>
<seg>Acl, Attr, Bash, Binutils, Coreutils, Diffutils, Expat, Gawk,
- GCC, Glibc, Gperf, Grep, Jinja2, Libcap, Meson, Pkgconf, Sed,
- Util-linux, and Zstd</seg>
+ GCC, Glibc, Gperf, Grep, Jinja2, Libcap, Libxcrypt, Meson,
+ Pkgconf, Sed, Util-linux, and Zstd</seg>
</seglistitem>
</segmentedlist>
<segmentedlist id="systemd-rundeps" revision='systemd'>
<segtitle>&runtime;</segtitle>
<seglistitem>
- <seg>Acl, Attr, Glibc, Libcap, and Util-linux</seg>
+ <seg>Acl, Attr, Glibc, Libcap, Libxcrypt, and Util-linux</seg>
</seglistitem>
</segmentedlist>
diff --git a/chapter01/changelog.xml b/chapter01/changelog.xml
index d870405d9..22a4bdf1e 100644
--- a/chapter01/changelog.xml
+++ b/chapter01/changelog.xml
@@ -44,6 +44,10 @@
<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>
diff --git a/chapter01/whatsnew.xml b/chapter01/whatsnew.xml
index 302f2d43f..68ec876ab 100644
--- a/chapter01/whatsnew.xml
+++ b/chapter01/whatsnew.xml
@@ -305,6 +305,10 @@
<listitem><para></para></listitem> <!-- satisfy build -->
<listitem>
+ <para>Libxcrypt-&libxcrypt-version;</para>
+ </listitem>
+
+ <listitem>
<para>Pkgconf-&flit-core-version;</para>
</listitem>
diff --git a/chapter03/packages.xml b/chapter03/packages.xml
index 569d6b6aa..86932b428 100644
--- a/chapter03/packages.xml
+++ b/chapter03/packages.xml
@@ -469,6 +469,15 @@
</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>
<term>Linux (&linux-version;) - <token>&linux-size;</token>:</term>
<listitem>
<para>Home page: <ulink url="&linux-home;"/></para>
diff --git a/chapter05/glibc.xml b/chapter05/glibc.xml
index 14f1fac6c..7fb5e98c5 100644
--- a/chapter05/glibc.xml
+++ b/chapter05/glibc.xml
@@ -91,6 +91,7 @@ cd build</userinput></screen>
--build=$(../scripts/config.guess) \
--enable-kernel=&min-kernel; \
--with-headers=$LFS/usr/include \
+ --disable-crypt \
libc_cv_slibdir=/usr/lib</userinput></screen>
<variablelist>
diff --git a/chapter06/gcc-pass2.xml b/chapter06/gcc-pass2.xml
index ebc20a296..b342ae484 100644
--- a/chapter06/gcc-pass2.xml
+++ b/chapter06/gcc-pass2.xml
@@ -96,6 +96,7 @@ cd build</userinput></screen>
--disable-libatomic \
--disable-libgomp \
--disable-libquadmath \
+ --disable-libsanitizer \
--disable-libssp \
--disable-libvtv \
--enable-languages=c,c++</userinput></screen>
@@ -143,6 +144,19 @@ cd build</userinput></screen>
</listitem>
</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>
<para>Compile the package:</para>
diff --git a/chapter08/chapter08.xml b/chapter08/chapter08.xml
index 605d26782..e97ae7057 100644
--- a/chapter08/chapter08.xml
+++ b/chapter08/chapter08.xml
@@ -36,6 +36,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="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="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"/>
diff --git a/chapter08/glibc.xml b/chapter08/glibc.xml
index a44e285c9..4245b0ff4 100644
--- a/chapter08/glibc.xml
+++ b/chapter08/glibc.xml
@@ -79,6 +79,7 @@ cd build</userinput></screen>
--enable-kernel=&min-kernel; \
--enable-stack-protector=strong \
--with-headers=/usr/include \
+ --disable-crypt \
libc_cv_slibdir=/usr/lib</userinput></screen>
<variablelist>
@@ -489,7 +490,7 @@ mkdir -pv /etc/ld.so.conf.d</userinput></screen>
<seg>ld-linux-x86-64.so.2, ld-linux.so.2,
libBrokenLocale.{a,so}, libanl.{a,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,
libnss_compat.so, libnss_dns.so, libnss_files.so, libnss_hesiod.so,
libpcprofile.so, libpthread.{a,so.0},
@@ -795,16 +796,6 @@ mkdir -pv /etc/ld.so.conf.d</userinput></screen>
</listitem>
</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">
<term><filename class="libraryfile">libdl</filename></term>
<listitem>
diff --git a/chapter08/libxcrypt.xml b/chapter08/libxcrypt.xml
new file mode 100644
index 000000000..c65d7db29
--- /dev/null
+++ b/chapter08/libxcrypt.xml
@@ -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 libraries 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>
diff --git a/packages.ent b/packages.ent
index fc05f20f6..c8ce6e6eb 100644
--- a/packages.ent
+++ b/packages.ent
@@ -430,6 +430,14 @@
<!ENTITY libtool-fin-du "44 MB">
<!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/&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-minor-version "4">
<!ENTITY linux-patch-version "1">
diff --git a/prologue/why.xml b/prologue/why.xml
index 7cfa14b7a..7cbe0e184 100644
--- a/prologue/why.xml
+++ b/prologue/why.xml
@@ -374,6 +374,17 @@
</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>
<para>Linux Kernel</para>
<para>This package is the Operating System. It is the Linux in