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
+
+
+
+
+
+ The Libxcrypt package contains a modern library for one-way
+ hashing of passwords.
+
+
+ &buildtime;
+ &diskspace;
+
+
+ &libxcrypt-fin-sbu;
+ &libxcrypt-fin-du;
+
+
+
+
+
+
+ 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