diff --git a/appendices/dependencies.xml b/appendices/dependencies.xml index 697d0d1d7..a1efa3d01 100644 --- a/appendices/dependencies.xml +++ b/appendices/dependencies.xml @@ -387,7 +387,7 @@ &before; - File + File and Libelf @@ -1685,14 +1685,15 @@ &dependencies; - Bash, Binutils, Coreutils, GCC, Glibc, and Make + Bash, Binutils, Bzip2, Coreutils, GCC, Glibc, Make, Xz, + Zlib, and Zstd &runtime; - Glibc and Zlib + Bzip2, Glibc, Xz, Zlib, and Zstd @@ -3205,7 +3206,7 @@ &before; Eudev, File, GRUB, Kmod, - and Man-DBand Man-DB, and Systemd @@ -3244,7 +3245,7 @@ &before; - File, Kmod, Perl, and Util-linux + File, Kmod, Libelf, Perl, and Util-linux @@ -3282,7 +3283,8 @@ &before; - GCC and Systemd + GCC and Libelf + GCC, Libelf, and Systemd diff --git a/chapter01/changelog.xml b/chapter01/changelog.xml index d9d2b1558..20cf06f58 100644 --- a/chapter01/changelog.xml +++ b/chapter01/changelog.xml @@ -39,6 +39,47 @@ or as appropriate for the entry or if needed the entire day's listitem. --> + + 2023-03-04 + + + [xry111] - Update to systemd-253. Fixes + #5206. + + + [xry111] - Update to bc-6.3.1. Fixes + #5217. + + + [xry111] - Update to linux-6.2.2 (security fixes). Fixes + #5218. + + + [xry111] - Update to procps-ng-4.0.3. Fixes + #5220. + + + [xry111] - Update to iproute2-6.2.0. Fixes + #5221. + + + [xry111] - Update to meson-1.0.1. Fixes + #5222. + + + [xry111] - Update to make-4.4.1. Fixes + #5223. + + + [xry111] - Update to libelf-0.189. Fixes + #5224. + + + [bdubbs] - Change to a better host requirements script in Chapter 2. + + + + 2023-03-01 diff --git a/chapter01/whatsnew.xml b/chapter01/whatsnew.xml index bf69cb08f..21722a863 100644 --- a/chapter01/whatsnew.xml +++ b/chapter01/whatsnew.xml @@ -46,15 +46,15 @@ - + Bc &bc-version; - + @@ -70,57 +70,57 @@ - + + + - + - + - + - + + - + @@ -130,12 +130,12 @@ - + + @@ -151,21 +151,21 @@ - + - + Libelf-&elfutils-version; (from elfutils) - + @@ -181,33 +181,33 @@ Make-&make-version; - + + + Meson-&meson-version; - + + + + + @@ -220,63 +220,63 @@ Procps-ng-&procps-ng-version; - + + + + + Systemd-&systemd-version; - + - + + + - + + - + + + - + - + - + @@ -310,7 +310,7 @@ - zstd-1.5.2-upstream_fixes-1.patch + systemd-252-security_fix-1.patch diff --git a/chapter02/hostreqs.xml b/chapter02/hostreqs.xml index 52ccc97ed..6c74986a0 100644 --- a/chapter02/hostreqs.xml +++ b/chapter02/hostreqs.xml @@ -55,7 +55,7 @@ - Coreutils-6.9 + Coreutils-7.0 @@ -166,77 +166,89 @@ cat > version-check.sh << "EOF" #!/bin/bash -# Simple script to list version numbers of critical development tools -export LC_ALL=C -bash --version | head -n1 | cut -d" " -f2-4 -MYSH=$(readlink -f /bin/sh) -echo "/bin/sh -> $MYSH" -echo $MYSH | grep -q bash || echo "ERROR: /bin/sh does not point to bash" -unset MYSH +# A script to list version numbers of critical development tools -echo -n "Binutils: "; ld --version | head -n1 | cut -d" " -f3- -bison --version | head -n1 +# If you have tools installed in other directories, adjust PATH here AND +# in ~lfs/.bashrc (section 4.4) as well. -if [ -h /usr/bin/yacc ]; then - echo "/usr/bin/yacc -> `readlink -f /usr/bin/yacc`"; -elif [ -x /usr/bin/yacc ]; then - echo yacc is `/usr/bin/yacc --version | head -n1` -else - echo "yacc not found" -fi +LC_ALL=C +PATH=/usr/bin:/bin -echo -n "Coreutils: "; chown --version | head -n1 | cut -d")" -f2 -diff --version | head -n1 -find --version | head -n1 -gawk --version | head -n1 +bail() { echo "FATAL: $1"; exit 1; } +grep --version > /dev/null 2> /dev/null || bail "grep does not work" +sed '' /dev/null || bail "sed does not work" +sort /dev/null || bail "sort does not work" -if [ -h /usr/bin/awk ]; then - echo "/usr/bin/awk -> `readlink -f /usr/bin/awk`"; -elif [ -x /usr/bin/awk ]; then - echo awk is `/usr/bin/awk --version | head -n1` -else - echo "awk not found" -fi +ver_check() +{ + if ! type -p $2 &>/dev/null + then + echo "ERROR: Cannot find $2 ($1)"; return 1; + fi + v=$($2 --version 2>&1 | grep -E -o '[0-9]+\.[0-9\.]+[a-z]*' | head -n1) + if printf '%s\n' $3 $v | sort --version-sort --check &>/dev/null + then + printf "OK: %-9s %-6s >= $3\n" "$1" "$v"; return 0; + else + printf "ERROR: %-9s is TOO OLD ($3 or later required)\n" "$1"; + return 1; + fi +} -gcc --version | head -n1 -g++ --version | head -n1 -grep --version | head -n1 -gzip --version | head -n1 -cat /proc/version -m4 --version | head -n1 -make --version | head -n1 -patch --version | head -n1 -echo Perl `perl -V:version` -python3 --version -sed --version | head -n1 -tar --version | head -n1 -makeinfo --version | head -n1 # texinfo version -xz --version | head -n1 +ver_kernel() +{ + kver=$(uname -r | grep -E -o '[0-9\.]+') + if printf '%s\n' $1 $kver | sort --version-sort --check &>/dev/null + then + printf "OK: Linux Kernel $kver >= $1\n"; return 0; + else + printf "ERROR: Linux Kernel ($kver) is TOO OLD ($1 or later required)\n" "$kver"; + return 1; + fi +} -echo 'int main(){}' > dummy.c && g++ -o dummy dummy.c -if [ -x dummy ] - then echo "g++ compilation OK"; - else echo "g++ compilation failed"; fi -rm -f dummy.c dummy +# Coreutils first because-sort needs Coreutils >= 7.0 +ver_check Coreutils sort 7.0 || bail "--version-sort unsupported" +ver_check Bash bash 3.2 +ver_check Binutils ld 2.13.1 +ver_check Bison bison 2.7 +ver_check Diffutils diff 2.8.1 +ver_check Findutils find 4.2.31 +ver_check Gawk gawk 4.0.1 +ver_check GCC gcc 5.1 +ver_check "GCC (C++)" g++ 5.1 +ver_check Grep grep 2.5.1a +ver_check Gzip gzip 1.3.12 +ver_check M4 m4 1.4.10 +ver_check Make make 4.0 +ver_check Patch patch 2.5.4 +ver_check Perl perl 5.8.8 +ver_check Python python3 3.4 +ver_check Sed sed 4.1.5 +ver_check Tar tar 1.22 +ver_check Texinfo texi2any 4.7 +ver_check Xz xz 5.0.0 +#ver_check "Linux Kernel" "" 3.2 'cat /proc/version' +ver_kernel 3.2 + +alias_check() { + if $1 --version 2>&1 | grep -qi $2 + then printf "OK: %-4s is $2\n" "$1"; + else printf "ERROR: %-4s is NOT $2\n" "$1"; fi +} +echo "Aliases:" +alias_check awk GNU +alias_check yacc Bison +alias_check sh Bash + +echo "Compiler check:" +if printf "int main(){}" | g++ -x c++ - +then echo "OK: g++ works"; +else echo "ERROR: g++ does NOT work"; fi +rm -f a.out EOF bash version-check.sh - diff --git a/chapter03/patches.xml b/chapter03/patches.xml index 44367898f..5f1bbf0c2 100644 --- a/chapter03/patches.xml +++ b/chapter03/patches.xml @@ -143,7 +143,7 @@ - + To test the results, issue: -make check +chown -Rv tester . +su tester -c "PATH=$PATH make check" Install the package: diff --git a/chapter08/systemd.xml b/chapter08/systemd.xml index 5b1fc1fe5..fcac04602 100644 --- a/chapter08/systemd.xml +++ b/chapter08/systemd.xml @@ -40,12 +40,6 @@ Installation of systemd - - First, fix a security issue in systemd-coredump: - -patch -Np1 -i ../&systemd-upstream-patch; - - Remove two unneeded groups, render and sgx, from the default udev @@ -229,7 +223,7 @@ meson --prefix=/usr \ machinectl, networkctl, oomctl, portablectl, poweroff (symlink to systemctl), reboot (symlink to systemctl), resolvconf (symlink to resolvectl), resolvectl, runlevel (symlink to systemctl), shutdown - (symlink to systemctl), systemctl, systemd-analyze, + (symlink to systemctl), systemctl, systemd-ac-power, systemd-analyze, systemd-ask-password, systemd-cat, systemd-cgls, systemd-cgtop, systemd-creds, systemd-delta, systemd-detect-virt, systemd-dissect, systemd-escape, systemd-hwdb, systemd-id128, @@ -482,6 +476,17 @@ meson --prefix=/usr \ + + systemd-ac-power + + Reports whether the system is connected to an external + power source. + + systemd-ac-power + + + + systemd-analyze diff --git a/general.ent b/general.ent index 4afd37725..08583c3f3 100644 --- a/general.ent +++ b/general.ent @@ -7,10 +7,10 @@ - - + + - + diff --git a/packages.ent b/packages.ent index 6889f1432..ce26b0be5 100644 --- a/packages.ent +++ b/packages.ent @@ -58,10 +58,10 @@ - - + + - + @@ -148,10 +148,10 @@ - - + + - + @@ -342,10 +342,10 @@ - - + + - + @@ -423,13 +423,13 @@ - - + + - + - + - + - + - - + + - + diff --git a/patches.ent b/patches.ent index c381cd0a8..7c0009583 100644 --- a/patches.ent +++ b/patches.ent @@ -89,11 +89,11 @@ - +