lfs-auto/chap8p1.sh

911 lines
27 KiB
Bash

#!/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" &&
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 ../glibc-2.37-fhs-1.patch &&
sed '/width -=/s/workend - string/number_length/' \
-i stdio-common/vfprintf-process-arg.c &&
mkdir -v build &&
cd build &&
echo "rootsbindir=/usr/sbin" > configparms &&
../configure --prefix=/usr \
--disable-werror \
--enable-kernel=3.2 \
--enable-stack-protector=strong \
--with-headers=/usr/include \
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 &&
cp -v ../nscd/nscd.conf /etc/nscd.conf &&
mkdir -pv /var/cache/nscd &&
install -v -Dm644 ../nscd/nscd.tmpfiles /usr/lib/tmpfiles.d/nscd.conf &&
install -v -Dm644 ../nscd/nscd.service /usr/lib/systemd/system/nscd.service &&
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
group: files
shadow: files
hosts: files dns
networks: files
protocols: files
services: files
ethers: files
rpc: files
# End /etc/nsswitch.conf
EOF
tar -xf ../../tzdata2022g.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.4.1 &&
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_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.9 ""$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.10 ""$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.10 ""$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.11 ""$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 &&
patch -Np1 -i ../readline-8.2-upstream_fix-1.patch &&
./configure --prefix=/usr \
--disable-static \
--with-curses \
--docdir=/usr/share/doc/readline-8.2 &&
make SHLIB_LIBS="-lncursesw" &&
make SHLIB_LIBS="-lncursesw" install &&
install -v -m644 doc/*.{ps,pdf,html,dvi} /usr/share/doc/readline-8.2 &&
cd .. &&
rm -rf "$LFS_READLINE" &&
CURRENT_DATE_TIME=$(date +"%Y-%m-%d %T")
echo "$CURRENT_DATE_TIME" >> build.log
echo "Finished 8.11 ""$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.12 ""$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.12 ""$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.13 ""$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.13 ""$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.14 ""$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 &&
cd .. &&
rm -rf "$LFS_FLEX" &&
CURRENT_DATE_TIME=$(date +"%Y-%m-%d %T")
echo "$CURRENT_DATE_TIME" >> build.log
echo "Finished 8.14 ""$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.15 ""$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 &&
make &&
sed -e "s|$SRCDIR/unix|/usr/lib|" \
-e "s|$SRCDIR|/usr/include|" \
-i tclConfig.sh &&
sed -e "s|$SRCDIR/unix/pkgs/tdbc1.1.5|/usr/lib/tdbc1.1.5|" \
-e "s|$SRCDIR/pkgs/tdbc1.1.5/generic|/usr/include|" \
-e "s|$SRCDIR/pkgs/tdbc1.1.5/library|/usr/lib/tcl8.6|" \
-e "s|$SRCDIR/pkgs/tdbc1.1.5|/usr/include|" \
-i pkgs/tdbc1.1.5/tdbcConfig.sh &&
sed -e "s|$SRCDIR/unix/pkgs/itcl4.2.3|/usr/lib/itcl4.2.3|" \
-e "s|$SRCDIR/pkgs/itcl4.2.3/generic|/usr/include|" \
-e "s|$SRCDIR/pkgs/itcl4.2.3|/usr/include|" \
-i pkgs/itcl4.2.3/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.13-html.tar.gz --strip-components=1 &&
mkdir -v -p /usr/share/doc/tcl-8.6.13 &&
cp -v -r ./html/* /usr/share/doc/tcl-8.6.13 &&
cd .. &&
rm -rf "$LFS_TCL" &&
CURRENT_DATE_TIME=$(date +"%Y-%m-%d %T")
echo "$CURRENT_DATE_TIME" >> build.log
echo "Finished 8.15 ""$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.16 ""$LFS_EXPECT""" >> build.log
tar xf "$LFS_EXPECT".tar.gz &&
cd "$LFS_EXPECT" &&
./configure --prefix=/usr \
--with-tcl=/usr/lib \
--enable-shared \
--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.16 ""$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.17 ""$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 &&
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 &&
if [ "$MAKECHECK" = TRUE ]; then
make check | tee ../../check-log_"$LFS_DEJAGNU".log;
fi
cd ../.. &&
rm -rf "$LFS_DEJAGNU" &&
CURRENT_DATE_TIME=$(date +"%Y-%m-%d %T")
echo "$CURRENT_DATE_TIME" >> build.log
echo "Finished 8.17 ""$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.18 ""$LFS_BINUTILS""" >> build.log
tar xf "$LFS_BINUTILS".tar.xz &&
cd "$LFS_BINUTILS" &&
echo "Verify that the PTYs are working properly inside the chroot environment"
echo "The output should be: spawn ls"
expect -c "spawn ls"
sleep 5;
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 \
--with-system-zlib &&
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,sframe,opcodes}.a &&
rm -fv /usr/share/man/man1/{gprofng,gp-*}.1 &&
cd ../.. &&
rm -rf "$LFS_BINUTILS" &&
CURRENT_DATE_TIME=$(date +"%Y-%m-%d %T")
echo "$CURRENT_DATE_TIME" >> build.log
echo "Finished 8.18 ""$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.19 ""$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.2.1 &&
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.19 ""$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.20 ""$LFS_MPFR""" >> build.log
tar xf "$LFS_MPFR".tar.xz &&
cd "$LFS_MPFR" &&
sed -e 's/+01,234,567/+1,234,567 /' \
-e 's/13.10Pd/13Pd/' \
-i tests/tsprintf.c &&
./configure --prefix=/usr \
--disable-static \
--enable-thread-safe \
--docdir=/usr/share/doc/mpfr-4.2.0 &&
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.20 ""$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.21 ""$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.21 ""$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.22 ""$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.1 &&
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.22 ""$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.23 ""$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.1 &&
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.23 ""$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.24 ""$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.24 ""$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.25 ""$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 SHA512:' \
-e 's@#\(SHA_CRYPT_..._ROUNDS 5000\)@\100@' \
-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-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.25 ""$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.26 ""$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 \
--disable-multilib \
--disable-bootstrap \
--with-system-zlib &&
make &&
ulimit -s 32768 &&
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)/12.2.0/include{,-fixed} &&
ln -svr /usr/bin/cpp /usr/lib &&
ln -sfv ../../libexec/gcc/$(gcc -dumpmachine)/12.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/12.2.0/../../../../lib/Scrt1.o succeeded"
echo "/usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/../../../../lib/crti.o succeeded"
echo "/usr/lib/gcc/x86_64-pc-linux-gnu/12.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/12.2.0/include"
echo" /usr/local/include"
echo" /usr/lib/gcc/x86_64-pc-linux-gnu/12.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.26 ""$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
tar xf "$LFS_PKGCONFIG".tar.gz &&
cd "$LFS_PKGCONFIG" &&
./configure --prefix=/usr \
--with-internal-glib \
--disable-host-tool \
--docdir=/usr/share/doc/pkg-config-0.29.2 &&
make &&
if [ "$MAKECHECK" = TRUE ]; then
make check | tee ../check-log_"$LFS_PKGCONFIG".log;
fi
make install &&
cd .. &&
rm -rf "$LFS_PKGCONFIG" &&
CURRENT_DATE_TIME=$(date +"%Y-%m-%d %T")
echo "$CURRENT_DATE_TIME" >> build.log
echo "Finished 8.27 ""$LFS_PKGCONFIG""" >> build.log &&
echo "$LFS_PKGCONFIG" >> /installed.txt
CURRENT_DATE_TIME=$(date +"%Y-%m-%d %T")
echo "$CURRENT_DATE_TIME" >> build.log
echo "Starting 8.28 ""$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 \
--enable-widec \
--with-pkg-config-libdir=/usr/lib/pkgconfig &&
make &&
make DESTDIR=$PWD/dest install &&
install -vm755 dest/usr/lib/libncursesw.so.6.4 /usr/lib &&
rm -v dest/usr/lib/libncursesw.so.6.4 &&
cp -av dest/* / &&
for lib in ncurses form panel menu ; do
rm -vf /usr/lib/lib${lib}.so
echo "INPUT(-l${lib}w)" > /usr/lib/lib${lib}.so
ln -sfv ${lib}w.pc /usr/lib/pkgconfig/${lib}.pc
done &&
rm -vf /usr/lib/libcursesw.so &&
echo "INPUT(-lncursesw)" > /usr/lib/libcursesw.so &&
ln -sfv libncurses.so /usr/lib/libcurses.so &&
mkdir -pv /usr/share/doc/ncurses-6.4 &&
cp -v -R doc/* /usr/share/doc/ncurses-6.4 &&
cd .. &&
rm -rf "$LFS_NCURSES" &&
CURRENT_DATE_TIME=$(date +"%Y-%m-%d %T")
echo "$CURRENT_DATE_TIME" >> build.log
echo "Finished 8.28 ""$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.29 ""$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_GCC".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.29 ""$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.30 ""$LFS_PSMISC""" >> build.log
tar xf "$LFS_PSMISC".tar.xz &&
cd "$LFS_PSMISC" &&
./configure --prefix=/usr &&
make &&
make install &&
cd .. &&
rm -rf "$LFS_PSMISC" &&
CURRENT_DATE_TIME=$(date +"%Y-%m-%d %T")
echo "$CURRENT_DATE_TIME" >> build.log
echo "Finished 8.30 ""$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.31 ""$LFS_GETTEXT""" >> build.log
tar xf "$LFS_GETTEXT".tar.xz &&
cd "$LFS_GETTEXT" &&
./configure --prefix=/usr \
--disable-static \
--docdir=/usr/share/doc/gettext-0.21.1 &&
make &&
if [ "$MAKECHECK" = TRUE ]; then
make check | tee ../check-log_"$LFS_GCC".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.31 ""$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.32 ""$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.32 ""$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.33 ""$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.33 ""$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.34 ""$LFS_BASH""" >> build.log
tar xf "$LFS_BASH".tar.gz &&
cd "$LFS_BASH" &&
./configure --prefix=/usr \
--without-bash-malloc \
--with-installed-readline \
--docdir=/usr/share/doc/bash-5.2.15 &&
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.34 ""$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