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 @@ &dependencies; Bash, Binutils, Coreutils, Diffutils, Findutils, Gawk, GCC, - Gettext, Glibc, GMP, Grep, M4, Make, MPC, MPFR, Patch, Perl, Sed, - Tar, Texinfo, and Zstd + Gettext, Glibc, GMP, Grep, Libxcrypt, M4, Make, MPC, MPFR, Patch, + Perl, Sed, Tar, Texinfo, and Zstd @@ -1885,6 +1885,47 @@ + + Libxcrypt + + + &dependencies; + + Bash, Binutils, Coreutils, Diffutils, Gawk, GCC, Glibc, Grep, + Make, and Sed + + + + + &runtime; + + Glibc + + + + + &testsuites; + + None + + + + + &before; + + GCC, Perl, Python, + and Shadow, and Systemd + + + + + &external; + + None + + + Linux @@ -2455,14 +2496,14 @@ &dependencies; Bash, Binutils, Coreutils, Gawk, GCC, GDBM, Glibc, Grep, Groff, - Make, Sed, and Zlib + Libxcrypt, Make, Sed, and Zlib &runtime; - GDBM and Glibc + GDBM, Glibc, and Libxcrypt @@ -2621,7 +2662,7 @@ &dependencies; 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 @@ -2629,8 +2670,8 @@ &runtime; - Bzip2, Expat, Gdbm, Glibc, Libffi, Ncurses, OpenSSL, and - Zlib + Bzip2, Expat, Gdbm, Glibc, Libffi, Libxcrypt, Ncurses, + OpenSSL, and Zlib @@ -2745,14 +2786,14 @@ &dependencies; Acl, Attr, Bash, Binutils, Coreutils, Diffutils, Findutils, Gawk, - GCC, Gettext, Glibc, Grep, Libcap, Make, and Sed + GCC, Gettext, Glibc, Grep, Libcap, Libxcrypt, Make, and Sed &runtime; - Glibc + Glibc and Libxcrypt @@ -2826,15 +2867,15 @@ &dependencies; Acl, Attr, Bash, Binutils, Coreutils, Diffutils, Expat, Gawk, - GCC, Glibc, Gperf, Grep, Jinja2, Libcap, Meson, Pkgconf, Sed, - Util-linux, and Zstd + GCC, Glibc, Gperf, Grep, Jinja2, Libcap, Libxcrypt, Meson, + Pkgconf, Sed, Util-linux, and Zstd &runtime; - Acl, Attr, Glibc, Libcap, and Util-linux + Acl, Attr, Glibc, Libcap, Libxcrypt, and Util-linux diff --git a/chapter01/changelog.xml b/chapter01/changelog.xml index d870405d9..22a4bdf1e 100644 --- a/chapter01/changelog.xml +++ b/chapter01/changelog.xml @@ -43,6 +43,10 @@ 2023-07-02 + + [xry111] - Add libxcrypt-4.4.35. Fixes + #5280. + [xry111] - Update to iproute2-6.4.0. Fixes #5277. diff --git a/chapter01/whatsnew.xml b/chapter01/whatsnew.xml index 302f2d43f..68ec876ab 100644 --- a/chapter01/whatsnew.xml +++ b/chapter01/whatsnew.xml @@ -304,6 +304,10 @@ Added: + + Libxcrypt-&libxcrypt-version; + + Pkgconf-&flit-core-version; diff --git a/chapter03/packages.xml b/chapter03/packages.xml index 569d6b6aa..86932b428 100644 --- a/chapter03/packages.xml +++ b/chapter03/packages.xml @@ -468,6 +468,15 @@ + + Libxcrypt (&libxcrypt-version;) - &libxcrypt-size;: + + Home page: + Download: + MD5 sum: &libxcrypt-md5; + + + Linux (&linux-version;) - &linux-size;: 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 --build=$(../scripts/config.guess) \ --enable-kernel=&min-kernel; \ --with-headers=$LFS/usr/include \ + --disable-crypt \ libc_cv_slibdir=/usr/lib 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 --disable-libatomic \ --disable-libgomp \ --disable-libquadmath \ + --disable-libsanitizer \ --disable-libssp \ --disable-libvtv \ --enable-languages=c,c++ @@ -143,6 +144,19 @@ cd build + + --disable-libsanitizer + + Disable GCC sanitizer runtime libraries. They are not + needed for the temporary installation. This switch is necessary + to build GCC without + libcrypt installed for + the target. In it was + implied by --disable-libstdcxx, but now we + have to explicitly pass it. + + + Compile the package: 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 @@ + 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 --enable-kernel=&min-kernel; \ --enable-stack-protector=strong \ --with-headers=/usr/include \ + --disable-crypt \ libc_cv_slibdir=/usr/lib @@ -489,7 +490,7 @@ mkdir -pv /etc/ld.so.conf.d 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 - - libcrypt - - The cryptography library - - libcrypt - - - - libdl 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 @@ + + + %general-entities; +]> + + + + + + libxcrypt + &libxcrypt-version; +
&libxcrypt-url;
+
+ + Libxcrypt-&libxcrypt-version; + + + Libxcrypt + + + + + + <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 + + Prepare Libxcrypt for compilation: + +./configure --prefix=/usr \ + --enable-hashes=strong,glibc \ + --enable-obsolete-api=no \ + --disable-static \ + --disable-failure-tokens + + + The meaning of the new configure options: + + + --enable-hashes=strong,glibc + + Build strong hash algorithms recommended for security use + cases, and the hash algorithms provided by traditional Glibc + libcrypt for + compatibility. + + + + + --enable-obsolete-api=no + + Disable obsolete API functions. They are not needed for + a modern Linux system built from source. + + + + + --disable-failure-tokens + + 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. + + + + + Compile the package: + +make + + To test the results, issue: + +make check + + Install the package: + +make install + + + + 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: + +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 + + + + + + Contents of Libxcrypt + + + Installed libraries + + + libcrypt.so + + + + + Short Descriptions + + + + + libcrypt + + Contains functions to hash passwords + + libcrypt + + + + + + + + +
diff --git a/packages.ent b/packages.ent index fc05f20f6..c8ce6e6eb 100644 --- a/packages.ent +++ b/packages.ent @@ -430,6 +430,14 @@ + + + + + + + + diff --git a/prologue/why.xml b/prologue/why.xml index 7cfa14b7a..7cbe0e184 100644 --- a/prologue/why.xml +++ b/prologue/why.xml @@ -373,6 +373,17 @@ suites in other LFS packages.
+ + Libxcrypt + + This package provides the + libcrypt library + needed by various packages (notably, Shadow) for hashing passwords. + It replaces the obsolete + libcrypt implmentation in + Glibc. + + Linux Kernel