#!/bin/bash source vars.sh CURRENT_DATE_TIME=$(date +"%Y-%m-%d %T") echo "$CURRENT_DATE_TIME" >> build.log echo "Starting 8.3 ""$LFS_MANPAGES""" >> build.log tar xf "$LFS_MANPAGES".tar.xz && 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" >> build.log echo "Finished 8.3 ""$LFS_MANPAGES""" >> build.log && echo "$LFS_MANPAGES" >> /installed.txt CURRENT_DATE_TIME=$(date +"%Y-%m-%d %T") echo "$CURRENT_DATE_TIME" >> build.log echo "Starting 8.4 ""$LFS_IANAETC""" >> build.log tar xf "$LFS_IANAETC".tar.gz && cd "$LFS_IANAETC" && cp services protocols /etc && cd .. && rm -rf "$LFS_IANAETC" && CURRENT_DATE_TIME=$(date +"%Y-%m-%d %T") echo "$CURRENT_DATE_TIME" >> build.log echo "Finished 8.4 ""$LFS_IANAETC""" >> build.log echo "$LFS_IANAETC" >> /installed.txt CURRENT_DATE_TIME=$(date +"%Y-%m-%d %T") echo "$CURRENT_DATE_TIME" >> build.log echo "Starting 8.5 ""$LFS_GLIBC""" >> build.log tar xf "$LFS_GLIBC".tar.xz && 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.gz && 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" >> build.log echo "Finished 8.5 ""$LFS_GLIBC""" >> build.log && echo "$LFS_GLIBC" >> /installed.txt CURRENT_DATE_TIME=$(date +"%Y-%m-%d %T") echo "$CURRENT_DATE_TIME" >> build.log echo "Starting 8.6 ""$LFS_ZLIB""" >> build.log tar xf "$LFS_ZLIB".tar.xz && 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" >> build.log echo "Finished 8.6 ""$LFS_ZLIB""" >> build.log && echo "$LFS_ZLIB" >> /installed.txt CURRENT_DATE_TIME=$(date +"%Y-%m-%d %T") echo "$CURRENT_DATE_TIME" >> build.log echo "Starting 8.7 ""$LFS_BZIP2""" >> build.log tar xf "$LFS_BZIP2".tar.gz && 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" >> build.log echo "Finished 8.7 ""$LFS_BZIP2""" >> build.log && echo "$LFS_BZIP2" >> /installed.txt CURRENT_DATE_TIME=$(date +"%Y-%m-%d %T") echo "$CURRENT_DATE_TIME" >> build.log echo "Starting 8.8 ""$LFS_XZ""" >> build.log tar xf "$LFS_XZ".tar.xz && 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" >> build.log echo "Finished 8.8 ""$LFS_XZ""" >> build.log && echo "$LFS_XZ" >> /installed.txt CURRENT_DATE_TIME=$(date +"%Y-%m-%d %T") echo "$CURRENT_DATE_TIME" >> build.log echo "Starting 8.9 ""$LFS_LZ4""" >> build.log tar xf "$LFS_LZ4".tar.gz && 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" >> build.log echo "Finished 8.9 ""$LFS_LZ4""" >> build.log && echo "$LFS_LZ4" >> /installed.txt CURRENT_DATE_TIME=$(date +"%Y-%m-%d %T") echo "$CURRENT_DATE_TIME" >> build.log echo "Starting 8.10 ""$LFS_ZSTD""" >> build.log tar xf "$LFS_ZSTD".tar.gz && 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" >> build.log echo "Finished 8.10 ""$LFS_ZSTD""" >> build.log && echo "$LFS_ZSTD" >> /installed.txt CURRENT_DATE_TIME=$(date +"%Y-%m-%d %T") echo "$CURRENT_DATE_TIME" >> build.log echo "Starting 8.11 ""$LFS_FILE""" >> build.log tar xf "$LFS_FILE".tar.gz && 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" >> build.log echo "Finished 8.11 ""$LFS_FILE""" >> build.log && echo "$LFS_FILE" >> /installed.txt CURRENT_DATE_TIME=$(date +"%Y-%m-%d %T") echo "$CURRENT_DATE_TIME" >> build.log echo "Starting 8.12 ""$LFS_READLINE""" >> build.log tar xf "$LFS_READLINE".tar.gz && 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" >> build.log echo "Finished 8.12 ""$LFS_READLINE""" >> build.log && echo "$LFS_READLINE" >> /installed.txt CURRENT_DATE_TIME=$(date +"%Y-%m-%d %T") echo "$CURRENT_DATE_TIME" >> build.log echo "Starting 8.13 ""$LFS_M4""" >> build.log tar xf "$LFS_M4".tar.xz && 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" >> build.log echo "Finished 8.13 ""$LFS_M4""" >> build.log && echo "$LFS_M4" >> /installed.txt CURRENT_DATE_TIME=$(date +"%Y-%m-%d %T") echo "$CURRENT_DATE_TIME" >> build.log echo "Starting 8.14 ""$LFS_BC""" >> build.log tar xf "$LFS_BC".tar.xz && 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" >> build.log echo "Finished 8.14 ""$LFS_BC""" >> build.log echo "$LFS_BC" >> /installed.txt CURRENT_DATE_TIME=$(date +"%Y-%m-%d %T") echo "$CURRENT_DATE_TIME" >> build.log echo "Starting 8.15 ""$LFS_FLEX""" >> build.log tar xf "$LFS_FLEX".tar.gz && 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" >> build.log echo "Finished 8.15 ""$LFS_FLEX""" >> build.log && echo "$LFS_FLEX" >> /installed.txt CURRENT_DATE_TIME=$(date +"%Y-%m-%d %T") echo "$CURRENT_DATE_TIME" >> build.log echo "Starting 8.16 ""$LFS_TCL""" >> build.log tar xf "$LFS_TCL"-src.tar.gz && 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.gz --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" >> build.log echo "Finished 8.16 ""$LFS_TCL""" >> build.log && echo "$LFS_TCL" >> /installed.txt CURRENT_DATE_TIME=$(date +"%Y-%m-%d %T") echo "$CURRENT_DATE_TIME" >> build.log echo "Starting 8.17 ""$LFS_EXPECT""" >> build.log tar xf "$LFS_EXPECT".tar.gz && cd "$LFS_EXPECT" && patch -Np1 -i ../$LFS_EXPECT-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" >> build.log echo "Finished 8.17 ""$LFS_EXPECT""" >> build.log && echo "$LFS_EXPECT" >> /installed.txt CURRENT_DATE_TIME=$(date +"%Y-%m-%d %T") echo "$CURRENT_DATE_TIME" >> build.log echo "Starting 8.18 ""$LFS_DEJAGNU""" >> build.log tar xf "$LFS_DEJAGNU".tar.gz && 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" >> build.log echo "Finished 8.18 ""$LFS_DEJAGNU""" >> build.log && echo "$LFS_DEJAGNU" >> /installed.txt CURRENT_DATE_TIME=$(date +"%Y-%m-%d %T") echo "$CURRENT_DATE_TIME" >> build.log echo "Starting 8.19 ""$LFS_PKGCONF""" >> build.log tar xf "$LFS_PKGCONF".tar.xz && 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" >> build.log echo "Finished 8.19 ""$LFS_PKGCONF""" >> build.log && echo "$LFS_PKGCONF" >> /installed.txt CURRENT_DATE_TIME=$(date +"%Y-%m-%d %T") echo "$CURRENT_DATE_TIME" >> build.log echo "Starting 8.20 ""$LFS_BINUTILS""" >> build.log tar xf "$LFS_BINUTILS".tar.xz && 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" >> build.log echo "Finished 8.20 ""$LFS_BINUTILS""" >> build.log && echo "$LFS_BINUTILS" >> /installed.txt CURRENT_DATE_TIME=$(date +"%Y-%m-%d %T") echo "$CURRENT_DATE_TIME" >> build.log echo "Starting 8.21 ""$LFS_GMP""" >> build.log tar xf "$LFS_GMP".tar.xz && 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" >> build.log echo "Finished 8.21 ""$LFS_GMP""" >> build.log && echo "$LFS_GMP" >> /installed.txt CURRENT_DATE_TIME=$(date +"%Y-%m-%d %T") echo "$CURRENT_DATE_TIME" >> build.log echo "Starting 8.22 ""$LFS_MPFR""" >> build.log tar xf "$LFS_MPFR".tar.xz && 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" >> build.log echo "Finished 8.22 ""$LFS_MPFR""" >> build.log && echo "$LFS_MPFR" >> /installed.txt CURRENT_DATE_TIME=$(date +"%Y-%m-%d %T") echo "$CURRENT_DATE_TIME" >> build.log echo "Starting 8.23 ""$LFS_MPC""" >> build.log tar xf "$LFS_MPC".tar.gz && 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" >> build.log echo "Finished 8.23 ""$LFS_MPC""" >> build.log && echo "$LFS_MPC" >> /installed.txt CURRENT_DATE_TIME=$(date +"%Y-%m-%d %T") echo "$CURRENT_DATE_TIME" >> build.log echo "Starting 8.24 ""$LFS_ATTR""" >> build.log tar xf "$LFS_ATTR".tar.gz && 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" >> build.log echo "Finished 8.24 ""$LFS_ATTR""" >> build.log && echo "$LFS_ATTR" >> /installed.txt CURRENT_DATE_TIME=$(date +"%Y-%m-%d %T") echo "$CURRENT_DATE_TIME" >> build.log echo "Starting 8.25 ""$LFS_ACL""" >> build.log tar xf "$LFS_ACL".tar.xz && 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" >> build.log echo "Finished 8.25 ""$LFS_ACL""" >> build.log && echo "$LFS_ACL" >> /installed.txt CURRENT_DATE_TIME=$(date +"%Y-%m-%d %T") echo "$CURRENT_DATE_TIME" >> build.log echo "Starting 8.26 ""$LFS_LIBCAP""" >> build.log tar xf "$LFS_LIBCAP".tar.xz && 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" >> build.log echo "Finished 8.26 ""$LFS_LIBCAP""" >> build.log && echo "$LFS_LIBCAP" >> /installed.txt CURRENT_DATE_TIME=$(date +"%Y-%m-%d %T") echo "$CURRENT_DATE_TIME" >> build.log echo "Starting 8.27 ""$LFS_LIBXCRYPT""" >> build.log tar xf "$LFS_LIBXCRYPT".tar.xz && 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" >> build.log echo "Finished 8.27 ""$LFS_LIBXCRYPT""" >> build.log && echo "$LFS_LIBXCRYPT" >> /installed.txt CURRENT_DATE_TIME=$(date +"%Y-%m-%d %T") echo "$CURRENT_DATE_TIME" >> build.log echo "Starting 8.28 ""$LFS_SHADOW""" >> build.log tar xf "$LFS_SHADOW".tar.xz && 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" >> build.log echo "Finished 8.28 ""$LFS_SHADOW""" >> build.log && echo "$LFS_SHADOW" >> /installed.txt CURRENT_DATE_TIME=$(date +"%Y-%m-%d %T") echo "$CURRENT_DATE_TIME" >> build.log echo "Starting 8.29 ""$LFS_GCC""" >> build.log tar xf "$LFS_GCC".tar.xz && 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" >> build.log echo "Finished 8.29 ""$LFS_GCC""" >> build.log && echo "$LFS_GCC" >> /installed.txt CURRENT_DATE_TIME=$(date +"%Y-%m-%d %T") echo "$CURRENT_DATE_TIME" >> build.log echo "Starting 8.27 ""$LFS_PKGCONFIG""" >> build.log CURRENT_DATE_TIME=$(date +"%Y-%m-%d %T") echo "$CURRENT_DATE_TIME" >> build.log echo "Starting 8.30 ""$LFS_NCURSES""" >> build.log tar xf "$LFS_NCURSES".tar.gz && 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" >> build.log echo "Finished 8.30 ""$LFS_NCURSES""" >> build.log && echo "$LFS_NCURSES" >> /installed.txt CURRENT_DATE_TIME=$(date +"%Y-%m-%d %T") echo "$CURRENT_DATE_TIME" >> build.log echo "Starting 8.31 ""$LFS_SED""" >> build.log tar xf "$LFS_SED".tar.xz && 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" >> build.log echo "Finished 8.31 ""$LFS_SED""" >> build.log && echo "$LFS_SED" >> /installed.txt CURRENT_DATE_TIME=$(date +"%Y-%m-%d %T") echo "$CURRENT_DATE_TIME" >> build.log echo "Starting 8.32 ""$LFS_PSMISC""" >> build.log tar xf "$LFS_PSMISC".tar.xz && 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" >> build.log echo "Finished 8.32 ""$LFS_PSMISC""" >> build.log && echo "$LFS_PSMISC" >> /installed.txt CURRENT_DATE_TIME=$(date +"%Y-%m-%d %T") echo "$CURRENT_DATE_TIME" >> build.log echo "Starting 8.33 ""$LFS_GETTEXT""" >> build.log tar xf "$LFS_GETTEXT".tar.xz && 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" >> build.log echo "Finished 8.33 ""$LFS_GETTEXT""" >> build.log && echo "$LFS_GETTEXT" >> /installed.txt CURRENT_DATE_TIME=$(date +"%Y-%m-%d %T") echo "$CURRENT_DATE_TIME" >> build.log echo "Starting 8.34 ""$LFS_BISON""" >> build.log tar xf "$LFS_BISON".tar.xz && 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" >> build.log echo "Finished 8.34 ""$LFS_BISON""" >> build.log && echo "$LFS_BISON" >> /installed.txt CURRENT_DATE_TIME=$(date +"%Y-%m-%d %T") echo "$CURRENT_DATE_TIME" >> build.log echo "Starting 8.35 ""$LFS_GREP""" >> build.log tar xf "$LFS_GREP".tar.xz && 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" >> build.log echo "Finished 8.35 ""$LFS_GREP""" >> build.log && echo "$LFS_GREP" >> /installed.txt CURRENT_DATE_TIME=$(date +"%Y-%m-%d %T") echo "$CURRENT_DATE_TIME" >> build.log echo "Starting 8.36 ""$LFS_BASH""" >> build.log tar xf "$LFS_BASH".tar.gz && 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" >> build.log echo "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