diff options
author | Xi Ruoyao <xry111@xry111.site> | 2023-07-03 06:17:06 +0800 |
---|---|---|
committer | Xi Ruoyao <xry111@xry111.site> | 2023-07-03 06:17:06 +0800 |
commit | 48834cf197e62ba7941aeefbcbf58933854e2acf (patch) | |
tree | 5698e26ceb05a062e8c9a5836c8035e96849d3d0 | |
parent | 9ceb623400b564f39947cf7ff7313afaa1fd69a5 (diff) | |
parent | ac5f78c4bf3d895c9abf475b4bb07f25f634a874 (diff) |
Merge branch 'xry111/libxcrypt' into trunk
-rw-r--r-- | appendices/dependencies.xml | 65 | ||||
-rw-r--r-- | chapter01/changelog.xml | 4 | ||||
-rw-r--r-- | chapter01/whatsnew.xml | 4 | ||||
-rw-r--r-- | chapter03/packages.xml | 9 | ||||
-rw-r--r-- | chapter05/glibc.xml | 1 | ||||
-rw-r--r-- | chapter06/gcc-pass2.xml | 14 | ||||
-rw-r--r-- | chapter08/chapter08.xml | 1 | ||||
-rw-r--r-- | chapter08/glibc.xml | 13 | ||||
-rw-r--r-- | chapter08/libxcrypt.xml | 148 | ||||
-rw-r--r-- | packages.ent | 8 | ||||
-rw-r--r-- | prologue/why.xml | 11 |
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 |