lfs-auto/chap8p1.sh
2024-09-17 17:56:40 +02:00

888 lines
28 KiB
Bash

#!/bin/bash
source vars.sh
CURRENT_DATE_TIME=$(date +"%Y-%m-%d %T")
echo "$CURRENT_DATE_TIME: Starting 8.3 ""$LFS_MANPAGES""" >> build.log
tar xf "$LFS_MANPAGES".tar.* &&
cd "$LFS_MANPAGES" &&
rm -v man3/crypt* &&
make prefix=/usr install &&
cd .. &&
rm -rf "$LFS_MANPAGES" &&
CURRENT_DATE_TIME=$(date +"%Y-%m-%d %T")
echo "$CURRENT_DATE_TIME: Finished 8.3 ""$LFS_MANPAGES""" >> build.log &&
echo "$LFS_MANPAGES" >> /installed.txt
CURRENT_DATE_TIME=$(date +"%Y-%m-%d %T")
echo "$CURRENT_DATE_TIME: Starting 8.4 ""$LFS_IANAETC""" >> build.log
tar xf "$LFS_IANAETC".tar.* &&
cd "$LFS_IANAETC" &&
cp services protocols /etc &&
cd .. &&
rm -rf "$LFS_IANAETC" &&
CURRENT_DATE_TIME=$(date +"%Y-%m-%d %T")
echo "$CURRENT_DATE_TIME: Finished 8.4 ""$LFS_IANAETC"": $LFS_IANAETC" >> /installed.txt
CURRENT_DATE_TIME=$(date +"%Y-%m-%d %T")
echo "$CURRENT_DATE_TIME: Starting 8.5 ""$LFS_GLIBC""" >> build.log
tar xf "$LFS_GLIBC".tar.* &&
cd "$LFS_GLIBC" &&
patch -Np1 -i ../"$LFS_GLIBC"-fhs-1.patch &&
mkdir -v build &&
cd build &&
echo "rootsbindir=/usr/sbin" > configparms &&
../configure --prefix=/usr \
--disable-werror \
--enable-kernel=4.19 \
--enable-stack-protector=strong \
--disable-nscd \
libc_cv_slibdir=/usr/lib &&
make &&
if [ "$MAKECHECK" = TRUE ]; then
make check | tee ../../check-log_"$LFS_GLIBC".log;
fi
touch /etc/ld.so.conf &&
sed '/test-installation/s@$(LFS_PERL)@echo not running@' -i ../Makefile &&
make install &&
sed '/RTLDLIST=/s@/usr@@g' -i /usr/bin/ldd &&
make localedata/install-locales &&
localedef -i POSIX -f UTF-8 C.UTF-8 2> /dev/null || true
localedef -i ja_JP -f SHIFT_JIS ja_JP.SJIS 2> /dev/null || true
cat > /etc/nsswitch.conf << "EOF"
# Begin /etc/nsswitch.conf
passwd: files systemd
group: files systemd
shadow: files systemd
hosts: mymachines resolve [!UNAVAIL=return] files myhostname dns
networks: files
protocols: files
services: files
ethers: files
rpc: files
# End /etc/nsswitch.conf
EOF
tar -xf ../../tzdata2024a.tar.* &&
ZONEINFO=/usr/share/zoneinfo &&
mkdir -pv $ZONEINFO/{posix,right} &&
for tz in etcetera southamerica northamerica europe africa antarctica \
asia australasia backward; do
zic -L /dev/null -d $ZONEINFO ${tz}
zic -L /dev/null -d $ZONEINFO/posix ${tz}
zic -L leapseconds -d $ZONEINFO/right ${tz}
done &&
cp -v zone.tab zone1970.tab iso3166.tab $ZONEINFO &&
zic -d $ZONEINFO -p America/New_York &&
unset ZONEINFO &&
ln -sfv /usr/share/zoneinfo/UTC /etc/localtime &&
cat > /etc/ld.so.conf << "EOF"
# Begin /etc/ld.so.conf
/usr/local/lib
/opt/lib
EOF
cat >> /etc/ld.so.conf << "EOF"
# Add an include directory
include /etc/ld.so.conf.d/*.conf
EOF
mkdir -pv /etc/ld.so.conf.d &&
cd ../.. &&
rm -rf "$LFS_GLIBC" &&
CURRENT_DATE_TIME=$(date +"%Y-%m-%d %T")
echo "$CURRENT_DATE_TIME: Finished 8.5 ""$LFS_GLIBC""" >> build.log &&
echo "$LFS_GLIBC" >> /installed.txt
CURRENT_DATE_TIME=$(date +"%Y-%m-%d %T")
echo "$CURRENT_DATE_TIME: Starting 8.6 ""$LFS_ZLIB""" >> build.log
tar xf "$LFS_ZLIB".tar.* &&
cd "$LFS_ZLIB" &&
./configure --prefix=/usr &&
make &&
if [ "$MAKECHECK" = TRUE ]; then
make check | tee ../check-log_"$LFS_ZLIB".log;
fi
make install &&
rm -fv /usr/lib/libz.a &&
cd .. &&
rm -rf "$LFS_ZLIB" &&
CURRENT_DATE_TIME=$(date +"%Y-%m-%d %T")
echo "$CURRENT_DATE_TIME: Finished 8.6 ""$LFS_ZLIB""" >> build.log &&
echo "$LFS_ZLIB" >> /installed.txt
CURRENT_DATE_TIME=$(date +"%Y-%m-%d %T")
echo "$CURRENT_DATE_TIME: Starting 8.7 ""$LFS_BZIP2""" >> build.log
tar xf "$LFS_BZIP2".tar.* &&
cd "$LFS_BZIP2" &&
patch -Np1 -i ../bzip2-1.0.8-install_docs-1.patch &&
sed -i 's@\(ln -s -f \)$(PREFIX)/bin/@\1@' Makefile &&
sed -i "s@(PREFIX)/man@(PREFIX)/share/man@g" Makefile &&
make -f Makefile-libbz2_so &&
make clean &&
make &&
make PREFIX=/usr install &&
cp -av libbz2.so.* /usr/lib &&
ln -sv libbz2.so.1.0.8 /usr/lib/libbz2.so &&
cp -v bzip2-shared /usr/bin/bzip2 &&
for i in /usr/bin/{bzcat,bunzip2}; do
ln -sfv bzip2 $i
done &&
rm -fv /usr/lib/libbz2.a &&
cd .. &&
rm -rf "$LFS_BZIP2" &&
CURRENT_DATE_TIME=$(date +"%Y-%m-%d %T")
echo "$CURRENT_DATE_TIME: Finished 8.7 ""$LFS_BZIP2""" >> build.log &&
echo "$LFS_BZIP2" >> /installed.txt
CURRENT_DATE_TIME=$(date +"%Y-%m-%d %T")
echo "$CURRENT_DATE_TIME: Starting 8.8 ""$LFS_XZ""" >> build.log
tar xf "$LFS_XZ".tar.* &&
cd "$LFS_XZ" &&
./configure --prefix=/usr \
--disable-static \
--docdir=/usr/share/doc/xz-5.6.2 &&
make &&
if [ "$MAKECHECK" = TRUE ]; then
make check | tee ../check-log_"$LFS_XZ".log;
fi
make install &&
cd .. &&
rm -rf "$LFS_XZ" &&
CURRENT_DATE_TIME=$(date +"%Y-%m-%d %T")
echo "$CURRENT_DATE_TIME: Finished 8.8 ""$LFS_XZ""" >> build.log &&
echo "$LFS_XZ" >> /installed.txt
CURRENT_DATE_TIME=$(date +"%Y-%m-%d %T")
echo "$CURRENT_DATE_TIME: Starting 8.9 ""$LFS_LZ4""" >> build.log
tar xf "$LFS_LZ4".tar.* &&
cd "$LFS_LZ4" &&
make BUILD_STATIC=no PREFIX=/usr &&
if [ "$MAKECHECK" = TRUE ]; then
make -j1 check | tee ../check-log_"$LFS_LZ4".log;
fi
make BUILD_STATIC=no PREFIX=/usr install &&
cd .. &&
rm -rf "$LFS_LZ4" &&
CURRENT_DATE_TIME=$(date +"%Y-%m-%d %T")
echo "$CURRENT_DATE_TIME: Finished 8.9 ""$LFS_LZ4""" >> build.log &&
echo "$LFS_LZ4" >> /installed.txt
CURRENT_DATE_TIME=$(date +"%Y-%m-%d %T")
echo "$CURRENT_DATE_TIME: Starting 8.10 ""$LFS_ZSTD""" >> build.log
tar xf "$LFS_ZSTD".tar.* &&
cd "$LFS_ZSTD" &&
make prefix=/usr &&
if [ "$MAKECHECK" = TRUE ]; then
make check | tee ../check-log_"$LFS_ZSTD".log;
fi
make prefix=/usr install &&
rm -v /usr/lib/libzstd.a &&
cd .. &&
rm -rf "$LFS_ZSTD" &&
CURRENT_DATE_TIME=$(date +"%Y-%m-%d %T")
echo "$CURRENT_DATE_TIME: Finished 8.10 ""$LFS_ZSTD""" >> build.log &&
echo "$LFS_ZSTD" >> /installed.txt
CURRENT_DATE_TIME=$(date +"%Y-%m-%d %T")
echo "$CURRENT_DATE_TIME: Starting 8.11 ""$LFS_FILE""" >> build.log
tar xf "$LFS_FILE".tar.* &&
cd "$LFS_FILE" &&
./configure --prefix=/usr &&
make &&
if [ "$MAKECHECK" = TRUE ]; then
make check | tee ../check-log_"$LFS_FILE".log;
fi
make install &&
cd .. &&
rm -rf "$LFS_FILE" &&
CURRENT_DATE_TIME=$(date +"%Y-%m-%d %T")
echo "$CURRENT_DATE_TIME: Finished 8.11 ""$LFS_FILE""" >> build.log &&
echo "$LFS_FILE" >> /installed.txt
CURRENT_DATE_TIME=$(date +"%Y-%m-%d %T")
echo "$CURRENT_DATE_TIME: Starting 8.12 ""$LFS_READLINE""" >> build.log
tar xf "$LFS_READLINE".tar.* &&
cd "$LFS_READLINE" &&
sed -i '/MV.*old/d' Makefile.in &&
sed -i '/{OLDSUFF}/c:' support/shlib-install &&
./configure --prefix=/usr \
--disable-static \
--with-curses \
--docdir=/usr/share/doc/readline-8.2.13 &&
make SHLIB_LIBS="-lncursesw" &&
make SHLIB_LIBS="-lncursesw" install &&
install -v -m644 doc/*.{ps,pdf,html,dvi} /usr/share/doc/readline-8.2.13 &&
cd .. &&
rm -rf "$LFS_READLINE" &&
CURRENT_DATE_TIME=$(date +"%Y-%m-%d %T")
echo "$CURRENT_DATE_TIME: Finished 8.12 ""$LFS_READLINE""" >> build.log &&
echo "$LFS_READLINE" >> /installed.txt
CURRENT_DATE_TIME=$(date +"%Y-%m-%d %T")
echo "$CURRENT_DATE_TIME: Starting 8.13 ""$LFS_M4""" >> build.log
tar xf "$LFS_M4".tar.* &&
cd "$LFS_M4" &&
./configure --prefix=/usr &&
make &&
if [ "$MAKECHECK" = TRUE ]; then
make check | tee ../check-log_"$LFS_M4".log;
fi
make install &&
cd .. &&
rm -rf "$LFS_M4" &&
CURRENT_DATE_TIME=$(date +"%Y-%m-%d %T")
echo "$CURRENT_DATE_TIME: Finished 8.13 ""$LFS_M4""" >> build.log &&
echo "$LFS_M4" >> /installed.txt
CURRENT_DATE_TIME=$(date +"%Y-%m-%d %T")
echo "$CURRENT_DATE_TIME: Starting 8.14 ""$LFS_BC""" >> build.log
tar xf "$LFS_BC".tar.* &&
cd "$LFS_BC" &&
CC=gcc ./configure --prefix=/usr -G -O3 -r &&
make &&
if [ "$MAKECHECK" = TRUE ]; then
make test | tee ../check-log_"$LFS_BC".log;
fi
make install &&
cd .. &&
rm -rf "$LFS_BC" &&
CURRENT_DATE_TIME=$(date +"%Y-%m-%d %T")
echo "$CURRENT_DATE_TIME: Finished 8.14 ""$LFS_BC"": $LFS_BC" >> /installed.txt
CURRENT_DATE_TIME=$(date +"%Y-%m-%d %T")
echo "$CURRENT_DATE_TIME: Starting 8.15 ""$LFS_FLEX""" >> build.log
tar xf "$LFS_FLEX".tar.* &&
cd "$LFS_FLEX" &&
./configure --prefix=/usr \
--docdir=/usr/share/doc/flex-2.6.4 \
--disable-static &&
make &&
if [ "$MAKECHECK" = TRUE ]; then
make check | tee ../check-log_"$LFS_FLEX".log;
fi
make install &&
ln -sv flex /usr/bin/lex &&
ln -sv flex.1 /usr/share/man/man1/lex.1 &&
cd .. &&
rm -rf "$LFS_FLEX" &&
CURRENT_DATE_TIME=$(date +"%Y-%m-%d %T")
echo "$CURRENT_DATE_TIME: Finished 8.15 ""$LFS_FLEX""" >> build.log &&
echo "$LFS_FLEX" >> /installed.txt
CURRENT_DATE_TIME=$(date +"%Y-%m-%d %T")
echo "$CURRENT_DATE_TIME: Starting 8.16 ""$LFS_TCL""" >> build.log
tar xf "$LFS_TCL"-src.tar.* &&
cd "$LFS_TCL" &&
SRCDIR=$(pwd) &&
cd unix &&
./configure --prefix=/usr \
--mandir=/usr/share/man \
--disable-rpath &&
make &&
sed -e "s|$SRCDIR/unix|/usr/lib|" \
-e "s|$SRCDIR|/usr/include|" \
-i tclConfig.sh &&
sed -e "s|$SRCDIR/unix/pkgs/tdbc1.1.7|/usr/lib/tdbc1.1.7|" \
-e "s|$SRCDIR/pkgs/tdbc1.1.7/generic|/usr/include|" \
-e "s|$SRCDIR/pkgs/tdbc1.1.7/library|/usr/lib/tcl8.6|" \
-e "s|$SRCDIR/pkgs/tdbc1.1.7|/usr/include|" \
-i pkgs/tdbc1.1.7/tdbcConfig.sh &&
sed -e "s|$SRCDIR/unix/pkgs/itcl4.2.4|/usr/lib/itcl4.2.4|" \
-e "s|$SRCDIR/pkgs/itcl4.2.4/generic|/usr/include|" \
-e "s|$SRCDIR/pkgs/itcl4.2.4|/usr/include|" \
-i pkgs/itcl4.2.4/itclConfig.sh &&
unset SRCDIR &&
if [ "$MAKECHECK" = TRUE ]; then
make test | tee ../../check-log_"$LFS_TCL".log;
fi
make install &&
chmod -v u+w /usr/lib/libtcl8.6.so &&
make install-private-headers &&
ln -sfv tclsh8.6 /usr/bin/tclsh &&
mv /usr/share/man/man3/{Thread,Tcl_Thread}.3 &&
cd .. &&
tar -xf ../tcl8.6.14-html.tar.* --strip-components=1 &&
mkdir -v -p /usr/share/doc/tcl-8.6.14 &&
cp -v -r ./html/* /usr/share/doc/tcl-8.6.14 &&
cd .. &&
rm -rf "$LFS_TCL" &&
CURRENT_DATE_TIME=$(date +"%Y-%m-%d %T")
echo "$CURRENT_DATE_TIME: Finished 8.16 ""$LFS_TCL""" >> build.log &&
echo "$LFS_TCL" >> /installed.txt
CURRENT_DATE_TIME=$(date +"%Y-%m-%d %T")
echo "$CURRENT_DATE_TIME: Starting 8.17 ""$LFS_EXPECT""" >> build.log
tar xf "$LFS_EXPECT".tar.* &&
cd "$LFS_EXPECT" &&
patch -Np1 -i ../expect-5.45.4-gcc14-1.patch &&
./configure --prefix=/usr \
--with-tcl=/usr/lib \
--enable-shared \
--disable-rpath \
--mandir=/usr/share/man \
--with-tclinclude=/usr/include &&
make &&
if [ "$MAKECHECK" = TRUE ]; then
make test | tee ../check-log_"$LFS_EXPECT".log;
fi
make install &&
ln -svf expect5.45.4/libexpect5.45.4.so /usr/lib &&
cd .. &&
rm -rf "$LFS_EXPECT" &&
CURRENT_DATE_TIME=$(date +"%Y-%m-%d %T")
echo "$CURRENT_DATE_TIME: Finished 8.17 ""$LFS_EXPECT""" >> build.log &&
echo "$LFS_EXPECT" >> /installed.txt
CURRENT_DATE_TIME=$(date +"%Y-%m-%d %T")
echo "$CURRENT_DATE_TIME: Starting 8.18 ""$LFS_DEJAGNU""" >> build.log
tar xf "$LFS_DEJAGNU".tar.* &&
cd "$LFS_DEJAGNU" &&
mkdir -v build &&
cd build &&
../configure --prefix=/usr &&
makeinfo --html --no-split -o doc/dejagnu.html ../doc/dejagnu.texi &&
makeinfo --plaintext -o doc/dejagnu.txt ../doc/dejagnu.texi &&
if [ "$MAKECHECK" = TRUE ]; then
make check | tee ../../check-log_"$LFS_DEJAGNU".log;
fi
make install &&
install -v -dm755 /usr/share/doc/dejagnu-1.6.3 &&
install -v -m644 doc/dejagnu.{html,txt} /usr/share/doc/dejagnu-1.6.3 &&
cd ../.. &&
rm -rf "$LFS_DEJAGNU" &&
CURRENT_DATE_TIME=$(date +"%Y-%m-%d %T")
echo "$CURRENT_DATE_TIME: Finished 8.18 ""$LFS_DEJAGNU""" >> build.log &&
echo "$LFS_DEJAGNU" >> /installed.txt
CURRENT_DATE_TIME=$(date +"%Y-%m-%d %T")
echo "$CURRENT_DATE_TIME: Starting 8.19 ""$LFS_PKGCONF""" >> build.log
tar xf "$LFS_PKGCONF".tar.* &&
cd "$LFS_PKGCONF" &&
./configure --prefix=/usr \
--disable-static \
--docdir=/usr/share/doc/pkgconf-2.3.0 &&
make &&
make install &&
ln -sv pkgconf /usr/bin/pkg-config &&
ln -sv pkgconf.1 /usr/share/man/man1/pkg-config.1 &&
cd .. &&
rm -rf "$LFS_PKGCONF" &&
CURRENT_DATE_TIME=$(date +"%Y-%m-%d %T")
echo "$CURRENT_DATE_TIME: Finished 8.19 ""$LFS_PKGCONF""" >> build.log &&
echo "$LFS_PKGCONF" >> /installed.txt
CURRENT_DATE_TIME=$(date +"%Y-%m-%d %T")
echo "$CURRENT_DATE_TIME: Starting 8.20 ""$LFS_BINUTILS""" >> build.log
tar xf "$LFS_BINUTILS".tar.* &&
cd "$LFS_BINUTILS" &&
mkdir -v build &&
cd build &&
../configure --prefix=/usr \
--sysconfdir=/etc \
--enable-gold \
--enable-ld=default \
--enable-plugins \
--enable-shared \
--disable-werror \
--enable-64-bit-bfd \
--enable-new-dtags \
--with-system-zlib \
--enable-default-hash-style=gnu &&
make tooldir=/usr &&
if [ "$MAKECHECK" = TRUE ]; then
make -k check | tee ../../check-log_"$LFS_BINUTILS".log;
grep '^FAIL:' $(find -name '*.log')
fi
make tooldir=/usr install &&
rm -fv /usr/lib/lib{bfd,ctf,ctf-nobfd,gprofng,opcodes,sframe}.a &&
cd ../.. &&
rm -rf "$LFS_BINUTILS" &&
CURRENT_DATE_TIME=$(date +"%Y-%m-%d %T")
echo "$CURRENT_DATE_TIME: Finished 8.20 ""$LFS_BINUTILS""" >> build.log &&
echo "$LFS_BINUTILS" >> /installed.txt
CURRENT_DATE_TIME=$(date +"%Y-%m-%d %T")
echo "$CURRENT_DATE_TIME: Starting 8.21 ""$LFS_GMP""" >> build.log
tar xf "$LFS_GMP".tar.* &&
cd "$LFS_GMP" &&
./configure --prefix=/usr \
--enable-cxx \
--disable-static \
--docdir=/usr/share/doc/gmp-6.3.0 &&
make &&
make html &&
if [ "$MAKECHECK" = TRUE ]; then
make check 2>&1 | tee gmp-check-log;
awk '/# PASS:/{total+=$3} ; END{print total}' gmp-check-log &&
cp gmp-check-log ../check-log_"$LFS_GMP".log
fi
make install &&
make install-html &&
cd .. &&
rm -rf "$LFS_GMP" &&
CURRENT_DATE_TIME=$(date +"%Y-%m-%d %T")
echo "$CURRENT_DATE_TIME: Finished 8.21 ""$LFS_GMP""" >> build.log &&
echo "$LFS_GMP" >> /installed.txt
CURRENT_DATE_TIME=$(date +"%Y-%m-%d %T")
echo "$CURRENT_DATE_TIME: Starting 8.22 ""$LFS_MPFR""" >> build.log
tar xf "$LFS_MPFR".tar.* &&
cd "$LFS_MPFR" &&
./configure --prefix=/usr \
--disable-static \
--enable-thread-safe \
--docdir=/usr/share/doc/mpfr-4.2.1 &&
make &&
make html &&
if [ "$MAKECHECK" = TRUE ]; then
make check | tee ../check-log_"$LFS_MPFR".log;
fi
make install &&
make install-html &&
cd .. &&
rm -rf "$LFS_MPFR" &&
CURRENT_DATE_TIME=$(date +"%Y-%m-%d %T")
echo "$CURRENT_DATE_TIME: Finished 8.22 ""$LFS_MPFR""" >> build.log &&
echo "$LFS_MPFR" >> /installed.txt
CURRENT_DATE_TIME=$(date +"%Y-%m-%d %T")
echo "$CURRENT_DATE_TIME: Starting 8.23 ""$LFS_MPC""" >> build.log
tar xf "$LFS_MPC".tar.* &&
cd "$LFS_MPC" &&
./configure --prefix=/usr \
--disable-static \
--docdir=/usr/share/doc/mpc-1.3.1 &&
make &&
make html &&
if [ "$MAKECHECK" = TRUE ]; then
make check | tee ../check-log_"$LFS_MPC".log;
fi
make install &&
make install-html &&
cd .. &&
rm -rf "$LFS_MPC" &&
CURRENT_DATE_TIME=$(date +"%Y-%m-%d %T")
echo "$CURRENT_DATE_TIME: Finished 8.23 ""$LFS_MPC""" >> build.log &&
echo "$LFS_MPC" >> /installed.txt
CURRENT_DATE_TIME=$(date +"%Y-%m-%d %T")
echo "$CURRENT_DATE_TIME: Starting 8.24 ""$LFS_ATTR""" >> build.log
tar xf "$LFS_ATTR".tar.* &&
cd "$LFS_ATTR" &&
./configure --prefix=/usr \
--disable-static \
--sysconfdir=/etc \
--docdir=/usr/share/doc/attr-2.5.2 &&
make &&
if [ "$MAKECHECK" = TRUE ]; then
make check | tee ../check-log_"$LFS_ATTR".log;
fi
make install &&
cd .. &&
rm -rf "$LFS_ATTR" &&
CURRENT_DATE_TIME=$(date +"%Y-%m-%d %T")
echo "$CURRENT_DATE_TIME: Finished 8.24 ""$LFS_ATTR""" >> build.log &&
echo "$LFS_ATTR" >> /installed.txt
CURRENT_DATE_TIME=$(date +"%Y-%m-%d %T")
echo "$CURRENT_DATE_TIME: Starting 8.25 ""$LFS_ACL""" >> build.log
tar xf "$LFS_ACL".tar.* &&
cd "$LFS_ACL" &&
./configure --prefix=/usr \
--disable-static \
--docdir=/usr/share/doc/acl-2.3.2 &&
make &&
make install &&
cd .. &&
rm -rf "$LFS_ACL" &&
CURRENT_DATE_TIME=$(date +"%Y-%m-%d %T")
echo "$CURRENT_DATE_TIME: Finished 8.25 ""$LFS_ACL""" >> build.log &&
echo "$LFS_ACL" >> /installed.txt
CURRENT_DATE_TIME=$(date +"%Y-%m-%d %T")
echo "$CURRENT_DATE_TIME: Starting 8.26 ""$LFS_LIBCAP""" >> build.log
tar xf "$LFS_LIBCAP".tar.* &&
cd "$LFS_LIBCAP" &&
sed -i '/install -m.*STA/d' libcap/Makefile &&
make prefix=/usr lib=lib &&
if [ "$MAKECHECK" = TRUE ]; then
make test | tee ../check-log_"$LFS_LIBCAP".log;
fi
make prefix=/usr lib=lib install &&
cd .. &&
rm -rf "$LFS_LIBCAP" &&
CURRENT_DATE_TIME=$(date +"%Y-%m-%d %T")
echo "$CURRENT_DATE_TIME: Finished 8.26 ""$LFS_LIBCAP""" >> build.log &&
echo "$LFS_LIBCAP" >> /installed.txt
CURRENT_DATE_TIME=$(date +"%Y-%m-%d %T")
echo "$CURRENT_DATE_TIME: Starting 8.27 ""$LFS_LIBXCRYPT""" >> build.log
tar xf "$LFS_LIBXCRYPT".tar.* &&
cd "$LFS_LIBXCRYPT" &&
./configure --prefix=/usr \
--enable-hashes=strong,glibc \
--enable-obsolete-api=no \
--disable-static \
--disable-failure-tokens &&
make &&
if [ "$MAKECHECK" = TRUE ]; then
make check | tee ../check-log_"$LFS_LIBXCRYPT".log;
fi
make install &&
cd .. &&
rm -rf "$LFS_LIBXCRYPT" &&
CURRENT_DATE_TIME=$(date +"%Y-%m-%d %T")
echo "$CURRENT_DATE_TIME: Finished 8.27 ""$LFS_LIBXCRYPT""" >> build.log &&
echo "$LFS_LIBXCRYPT" >> /installed.txt
CURRENT_DATE_TIME=$(date +"%Y-%m-%d %T")
echo "$CURRENT_DATE_TIME: Starting 8.28 ""$LFS_SHADOW""" >> build.log
tar xf "$LFS_SHADOW".tar.* &&
cd "$LFS_SHADOW" &&
sed -i 's/groups$(EXEEXT) //' src/Makefile.in
find man -name Makefile.in -exec sed -i 's/groups\.1 / /' {} \;
find man -name Makefile.in -exec sed -i 's/getspnam\.3 / /' {} \;
find man -name Makefile.in -exec sed -i 's/passwd\.5 / /' {} \;
sed -e 's:#ENCRYPT_METHOD DES:ENCRYPT_METHOD YESCRYPT:' \
-e 's:/var/spool/mail:/var/mail:' \
-e '/PATH=/{s@/sbin:@@;s@/bin:@@}' \
-i etc/login.defs &&
touch /usr/bin/passwd &&
./configure --sysconfdir=/etc \
--disable-static \
--with-{b,yes}crypt \
--without-libbsd \
--with-group-name-max-length=32 &&
make &&
make exec_prefix=/usr install &&
make -C man install-man &&
pwconv &&
grpconv &&
mkdir -p /etc/default &&
useradd -D --gid 999 &&
# sed -i '/MAIL/s/yes/no/' /etc/default/useradd
echo root:root | chpasswd # Set the root password
echo "The password for the user root has been set to 'root'"
sleep 5
cd .. &&
rm -rf "$LFS_SHADOW" &&
CURRENT_DATE_TIME=$(date +"%Y-%m-%d %T")
echo "$CURRENT_DATE_TIME: Finished 8.28 ""$LFS_SHADOW""" >> build.log &&
echo "$LFS_SHADOW" >> /installed.txt
CURRENT_DATE_TIME=$(date +"%Y-%m-%d %T")
echo "$CURRENT_DATE_TIME: Starting 8.29 ""$LFS_GCC""" >> build.log
tar xf "$LFS_GCC".tar.* &&
cd "$LFS_GCC" &&
case $(uname -m) in
x86_64)
sed -e '/m64=/s/lib64/lib/' \
-i.orig gcc/config/i386/t-linux64
;;
esac &&
mkdir -v build &&
cd build &&
../configure --prefix=/usr \
LD=ld \
--enable-languages=c,c++ \
--enable-default-pie \
--enable-default-ssp \
--enable-host-pie \
--disable-multilib \
--disable-bootstrap \
--disable-fixincludes \
--with-system-zlib &&
make &&
ulimit -s -H unlimited &&
sed -e '/cpython/d' -i ../gcc/testsuite/gcc.dg/plugin/plugin.exp &&
sed -e 's/no-pic /&-no-pie /' -i ../gcc/testsuite/gcc.target/i386/pr113689-1.c &&
sed -e 's/300000/(1|300000)/' -i ../libgomp/testsuite/libgomp.c-c++-common/pr109062.c &&
sed -e 's/{ target nonpic } //' \
-e '/GOTPCREL/d' -i ../gcc/testsuite/gcc.target/i386/fentryname3.c &&
if [ "$MAKECHECK" = TRUE ]; then
chown -Rv tester . &&
su tester -c "PATH=$PATH make -k -j""$JOBS"" check";
../contrib/test_summary | tee ../../check-log_"$LFS_GCC".log &&
../contrib/test_summary | grep -A7 Summ
fi
make install &&
chown -v -R root:root \
/usr/lib/gcc/$(gcc -dumpmachine)/14.2.0/include{,-fixed} &&
ln -svr /usr/bin/cpp /usr/lib &&
ln -sv gcc.1 /usr/share/man/man1/cc.1 &&
ln -sfv ../../libexec/gcc/$(gcc -dumpmachine)/14.2.0/liblto_plugin.so \
/usr/lib/bfd-plugins/ &&
echo "Now that our final toolchain is in place, it is important to again ensure that compiling and linking will work as expected. We do this by performing some sanity checks"
echo "There should be no errors, and the output of the last command will be (allowing for platform-specific differences in the dynamic linker name):"
echo "[Requesting program interpreter: /lib64/ld-linux-x86-64.so.2]"
echo 'int main(){}' > dummy.c &&
cc dummy.c -v -Wl,--verbose &> dummy.log &&
readelf -l a.out | grep ': /lib'
echo "Now make sure that we're set up to use the correct start files"
echo "The output should be:"
echo "/usr/lib/gcc/x86_64-pc-linux-gnu/14.2.0/../../../../lib/Scrt1.o succeeded"
echo "/usr/lib/gcc/x86_64-pc-linux-gnu/14.2.0/../../../../lib/crti.o succeeded"
echo "/usr/lib/gcc/x86_64-pc-linux-gnu/14.2.0/../../../../lib/crtn.o succeeded"
grep -E -o '/usr/lib.*/S?crt[1in].*succeeded' dummy.log
echo "Verify that the compiler is searching for the correct header files"
echo "The output should be:"
echo "#include <...> search starts here:"
echo" /usr/lib/gcc/x86_64-pc-linux-gnu/14.2.0/include"
echo" /usr/local/include"
echo" /usr/lib/gcc/x86_64-pc-linux-gnu/14.2.0/include-fixed"
echo" /usr/include"
grep -B4 '^ /usr/include' dummy.log
echo "Verify that the new linker is being used with the correct search paths"
echo "References to paths that have components with '-linux-gnu' should be ignored, but otherwise the output should be:"
echo 'SEARCH_DIR("/usr/x86_64-pc-linux-gnu/lib64")'
echo 'SEARCH_DIR("/usr/local/lib64")'
echo 'SEARCH_DIR("/lib64")'
echo 'SEARCH_DIR("/usr/lib64")'
echo 'SEARCH_DIR("/usr/x86_64-pc-linux-gnu/lib")'
echo 'SEARCH_DIR("/usr/local/lib")'
echo 'SEARCH_DIR("/lib")"'
echo 'SEARCH_DIR("/usr/lib");'
grep 'SEARCH.*/usr/lib' dummy.log |sed 's|; |\n|g'
echo "Next make sure that we're using the correct libc"
echo "The output should be:"
echo "attempt to open /usr/lib/libc.so.6 succeeded"
grep "/lib.*/libc.so.6 " dummy.log
echo "Make sure LFS_GCC is using the correct dynamic linker"
echo "The output should be (allowing for platform-specific differences in dynamic linker name):"
echo "found ld-linux-x86-64.so.2 at /usr/lib/ld-linux-x86-64.so.2"
grep found dummy.log
sleep 5
rm -v dummy.c a.out dummy.log &&
mkdir -pv /usr/share/gdb/auto-load/usr/lib &&
mv -v /usr/lib/*gdb.py /usr/share/gdb/auto-load/usr/lib &&
cd ../.. &&
rm -rf "$LFS_GCC" &&
CURRENT_DATE_TIME=$(date +"%Y-%m-%d %T")
echo "$CURRENT_DATE_TIME: Finished 8.29 ""$LFS_GCC""" >> build.log &&
echo "$LFS_GCC" >> /installed.txt
CURRENT_DATE_TIME=$(date +"%Y-%m-%d %T")
echo "$CURRENT_DATE_TIME: Starting 8.27 ""$LFS_PKGCONFIG""" >> build.log
CURRENT_DATE_TIME=$(date +"%Y-%m-%d %T")
echo "$CURRENT_DATE_TIME: Starting 8.30 ""$LFS_NCURSES""" >> build.log
tar xf "$LFS_NCURSES".tar.* &&
cd "$LFS_NCURSES" &&
./configure --prefix=/usr \
--mandir=/usr/share/man \
--with-shared \
--without-debug \
--without-normal \
--with-cxx-shared \
--enable-pc-files \
--with-pkg-config-libdir=/usr/lib/pkgconfig &&
make &&
make DESTDIR=$PWD/dest install &&
install -vm755 dest/usr/lib/libncursesw.so.6.5 /usr/lib &&
rm -v dest/usr/lib/libncursesw.so.6.5 &&
sed -e 's/^#if.*XOPEN.*$/#if 1/' \
-i dest/usr/include/curses.h &&
cp -av dest/* / &&
for lib in ncurses form panel menu ; do
ln -sfv lib${lib}w.so /usr/lib/lib${lib}.so
ln -sfv ${lib}w.pc /usr/lib/pkgconfig/${lib}.pc
done &&
ln -sfv libncursesw.so /usr/lib/libcurses.so &&
cp -v -R doc -T /usr/share/doc/ncurses-6.5 &&
cd .. &&
rm -rf "$LFS_NCURSES" &&
CURRENT_DATE_TIME=$(date +"%Y-%m-%d %T")
echo "$CURRENT_DATE_TIME: Finished 8.30 ""$LFS_NCURSES""" >> build.log &&
echo "$LFS_NCURSES" >> /installed.txt
CURRENT_DATE_TIME=$(date +"%Y-%m-%d %T")
echo "$CURRENT_DATE_TIME: Starting 8.31 ""$LFS_SED""" >> build.log
tar xf "$LFS_SED".tar.* &&
cd "$LFS_SED" &&
./configure --prefix=/usr &&
make &&
make html &&
if [ "$MAKECHECK" = TRUE ]; then
chown -Rv tester . &&
su tester -c "PATH=$PATH make check" | tee ../check-log_"$LFS_SED".log;
fi
make install &&
install -d -m755 /usr/share/doc/sed-4.9 &&
install -m644 doc/sed.html /usr/share/doc/sed-4.9 &&
cd .. &&
rm -rf "$LFS_SED" &&
CURRENT_DATE_TIME=$(date +"%Y-%m-%d %T")
echo "$CURRENT_DATE_TIME: Finished 8.31 ""$LFS_SED""" >> build.log &&
echo "$LFS_SED" >> /installed.txt
CURRENT_DATE_TIME=$(date +"%Y-%m-%d %T")
echo "$CURRENT_DATE_TIME: Starting 8.32 ""$LFS_PSMISC""" >> build.log
tar xf "$LFS_PSMISC".tar.* &&
cd "$LFS_PSMISC" &&
./configure --prefix=/usr &&
make &&
if [ "$MAKECHECK" = TRUE ]; then
make check | tee ../check-log_"$LFS_PSMISC".log;
fi
make install &&
cd .. &&
rm -rf "$LFS_PSMISC" &&
CURRENT_DATE_TIME=$(date +"%Y-%m-%d %T")
echo "$CURRENT_DATE_TIME: Finished 8.32 ""$LFS_PSMISC""" >> build.log &&
echo "$LFS_PSMISC" >> /installed.txt
CURRENT_DATE_TIME=$(date +"%Y-%m-%d %T")
echo "$CURRENT_DATE_TIME: Starting 8.33 ""$LFS_GETTEXT""" >> build.log
tar xf "$LFS_GETTEXT".tar.* &&
cd "$LFS_GETTEXT" &&
./configure --prefix=/usr \
--disable-static \
--docdir=/usr/share/doc/gettext-0.22.5 &&
make &&
if [ "$MAKECHECK" = TRUE ]; then
make check | tee ../check-log_"$LFS_GETTEXT".log;
fi
make install &&
chmod -v 0755 /usr/lib/preloadable_libintl.so &&
cd .. &&
rm -rf "$LFS_GETTEXT" &&
CURRENT_DATE_TIME=$(date +"%Y-%m-%d %T")
echo "$CURRENT_DATE_TIME: Finished 8.33 ""$LFS_GETTEXT""" >> build.log &&
echo "$LFS_GETTEXT" >> /installed.txt
CURRENT_DATE_TIME=$(date +"%Y-%m-%d %T")
echo "$CURRENT_DATE_TIME: Starting 8.34 ""$LFS_BISON""" >> build.log
tar xf "$LFS_BISON".tar.* &&
cd "$LFS_BISON" &&
./configure --prefix=/usr --docdir=/usr/share/doc/bison-3.8.2 &&
make &&
if [ "$MAKECHECK" = TRUE ]; then
make check | tee ../check-log_"$LFS_BISON".log;
fi
make install &&
cd .. &&
rm -rf "$LFS_BISON" &&
CURRENT_DATE_TIME=$(date +"%Y-%m-%d %T")
echo "$CURRENT_DATE_TIME: Finished 8.34 ""$LFS_BISON""" >> build.log &&
echo "$LFS_BISON" >> /installed.txt
CURRENT_DATE_TIME=$(date +"%Y-%m-%d %T")
echo "$CURRENT_DATE_TIME: Starting 8.35 ""$LFS_GREP""" >> build.log
tar xf "$LFS_GREP".tar.* &&
cd "$LFS_GREP" &&
sed -i "s/echo/#echo/" src/egrep.sh &&
./configure --prefix=/usr &&
make &&
if [ "$MAKECHECK" = TRUE ]; then
make check | tee ../check-log_"$LFS_GREP".log;
fi
make install &&
cd .. &&
rm -rf "$LFS_GREP" &&
CURRENT_DATE_TIME=$(date +"%Y-%m-%d %T")
echo "$CURRENT_DATE_TIME: Finished 8.35 ""$LFS_GREP""" >> build.log &&
echo "$LFS_GREP" >> /installed.txt
CURRENT_DATE_TIME=$(date +"%Y-%m-%d %T")
echo "$CURRENT_DATE_TIME: Starting 8.36 ""$LFS_BASH""" >> build.log
tar xf "$LFS_BASH".tar.* &&
cd "$LFS_BASH" &&
./configure --prefix=/usr \
--without-bash-malloc \
--with-installed-readline \
bash_cv_strtold_broken=no \
--docdir=/usr/share/doc/bash-5.2.32 &&
make &&
if [ "$MAKECHECK" = TRUE ]; then
chown -Rv tester . &&
su -s /usr/bin/expect tester << EOF | tee ../check-log_"$LFS_BASH".log;
set timeout -1
spawn make tests
expect eof
lassign [wait] _ _ _ value
exit $value
EOF
fi
make install &&
cd .. &&
rm -rf "$LFS_BASH" &&
CURRENT_DATE_TIME=$(date +"%Y-%m-%d %T")
echo "$CURRENT_DATE_TIME: Finished 8.36 ""$LFS_BASH""" >> build.log &&
echo "$LFS_BASH" >> /installed.txt
echo "Executing new bash, continue with chapter 8 p2:"
echo "bash chap8p2.sh"
exec /usr/bin/bash --login