#!/bin/bash # LFS 10.0 Build Script # Builds the basic system software from chapter 8 # by Luís Mendes :) # 16/09/2020 package_name="" package_ext="" begin() { package_name=$1 package_ext=$2 echo "[lfs-scripts] Starting build of $package_name at $(date)" tar xf $package_name.$package_ext cd $package_name } finish() { echo "[lfs-scripts] Finishing build of $package_name at $(date)" cd /sources rm -rf $package_name } cd /sources # 8.3. Man-pages-5.08 begin man-pages-5.08 tar.xz make install finish # 8.4. Tcl-8.6.10 begin tcl8.6.10 tar.gz tar -xf ../tcl8.6.10-html.tar.gz --strip-components=1 SRCDIR=$(pwd) cd unix ./configure --prefix=/usr \ --mandir=/usr/share/man \ $([ "$(uname -m)" = x86_64 ] && echo --enable-64bit) make sed -e "s|$SRCDIR/unix|/usr/lib|" \ -e "s|$SRCDIR|/usr/include|" \ -i tclConfig.sh sed -e "s|$SRCDIR/unix/pkgs/tdbc1.1.1|/usr/lib/tdbc1.1.1|" \ -e "s|$SRCDIR/pkgs/tdbc1.1.1/generic|/usr/include|" \ -e "s|$SRCDIR/pkgs/tdbc1.1.1/library|/usr/lib/tcl8.6|" \ -e "s|$SRCDIR/pkgs/tdbc1.1.1|/usr/include|" \ -i pkgs/tdbc1.1.1/tdbcConfig.sh sed -e "s|$SRCDIR/unix/pkgs/itcl4.2.0|/usr/lib/itcl4.2.0|" \ -e "s|$SRCDIR/pkgs/itcl4.2.0/generic|/usr/include|" \ -e "s|$SRCDIR/pkgs/itcl4.2.0|/usr/include|" \ -i pkgs/itcl4.2.0/itclConfig.sh unset SRCDIR make install chmod -v u+w /usr/lib/libtcl8.6.so make install-private-headers ln -sfv tclsh8.6 /usr/bin/tclsh finish # 8.5. Expect-5.45.4 begin expect5.45.4 tar.gz ./configure --prefix=/usr \ --with-tcl=/usr/lib \ --enable-shared \ --mandir=/usr/share/man \ --with-tclinclude=/usr/include make make install ln -svf expect5.45.4/libexpect5.45.4.so /usr/lib finish # 8.6. DejaGNU-1.6.2 begin dejagnu-1.6.2 tar.gz ./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.2 install -v -m644 doc/dejagnu.{html,txt} /usr/share/doc/dejagnu-1.6.2 finish # 8.7. Iana-Etc-20200821 begin iana-etc-20200821 tar.gz cp services protocols /etc finish # 8.8. Glibc-2.32 begin glibc-2.32 tar.xz patch -Np1 -i ../glibc-2.32-fhs-1.patch mkdir -v build cd build ../configure --prefix=/usr \ --disable-werror \ --enable-kernel=3.2 \ --enable-stack-protector=strong \ --with-headers=/usr/include \ libc_cv_slibdir=/lib make case $(uname -m) in i?86) ln -sfnv $PWD/elf/ld-linux.so.2 /lib ;; x86_64) ln -sfnv $PWD/elf/ld-linux-x86-64.so.2 /lib ;; esac touch /etc/ld.so.conf sed '/test-installation/s@$(PERL)@echo not running@' -i ../Makefile make install cp -v ../nscd/nscd.conf /etc/nscd.conf mkdir -pv /var/cache/nscd mkdir -pv /usr/lib/locale localedef -i POSIX -f UTF-8 C.UTF-8 2> /dev/null || true localedef -i en_US -f ISO-8859-1 en_US localedef -i en_US -f UTF-8 en_US.UTF-8 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 ../../tzdata2020a.tar.gz ZONEINFO=/usr/share/zoneinfo mkdir -pv $ZONEINFO/{posix,right} for tz in etcetera southamerica northamerica europe africa antarctica \ asia australasia backward pacificnew systemv; 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/America/Sao_Paulo /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 finish # 8.9. Zlib-1.2.11 begin zlib-1.2.11 tar.xz ./configure --prefix=/usr make make install mv -v /usr/lib/libz.so.* /lib ln -sfv ../../lib/$(readlink /usr/lib/libz.so) /usr/lib/libz.so finish # 8.10. Bzip2-1.0.8 begin bzip2-1.0.8 tar.gz 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 -v bzip2-shared /bin/bzip2 cp -av libbz2.so* /lib ln -sv ../../lib/libbz2.so.1.0 /usr/lib/libbz2.so rm -v /usr/bin/{bunzip2,bzcat,bzip2} ln -sv bzip2 /bin/bunzip2 ln -sv bzip2 /bin/bzcat finish # 8.11. Xz-5.2.5 begin xz-5.2.5 tar.xz ./configure --prefix=/usr \ --disable-static \ --docdir=/usr/share/doc/xz-5.2.5 make make install mv -v /usr/bin/{lzma,unlzma,lzcat,xz,unxz,xzcat} /bin mv -v /usr/lib/liblzma.so.* /lib ln -svf ../../lib/$(readlink /usr/lib/liblzma.so) /usr/lib/liblzma.so finish # 8.12. Zstd-1.4.5 begin zstd-1.4.5 tar.gz make make prefix=/usr install rm -v /usr/lib/libzstd.a mv -v /usr/lib/libzstd.so.* /lib ln -sfv ../../lib/$(readlink /usr/lib/libzstd.so) /usr/lib/libzstd.so finish # 8.13. File-5.39 begin file-5.39 tar.gz ./configure --prefix=/usr make make install finish # 8.14. Readline-8.0 begin readline-8.0 tar.gz 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.0 make SHLIB_LIBS="-lncursesw" make SHLIB_LIBS="-lncursesw" install mv -v /usr/lib/lib{readline,history}.so.* /lib chmod -v u+w /lib/lib{readline,history}.so.* ln -sfv ../../lib/$(readlink /usr/lib/libreadline.so) /usr/lib/libreadline.so ln -sfv ../../lib/$(readlink /usr/lib/libhistory.so ) /usr/lib/libhistory.so install -v -m644 doc/*.{ps,pdf,html,dvi} /usr/share/doc/readline-8.0 finish # 8.15. M4-1.4.18 begin m4-1.4.18 tar.xz sed -i 's/IO_ftrylockfile/IO_EOF_SEEN/' lib/*.c echo "#define _IO_IN_BACKUP 0x100" >> lib/stdio-impl.h ./configure --prefix=/usr make make install finish # 8.16. Bc-3.1.5 begin bc-3.1.5 tar.xz PREFIX=/usr CC=gcc CFLAGS="-std=c99" ./configure.sh -G -O3 make make install finish # ## 8.17. Flex-2.6.4 begin flex-2.6.4 tar.gz ./configure --prefix=/usr --docdir=/usr/share/doc/flex-2.6.4 make make install ln -sv flex /usr/bin/lex finish # 8.18. Binutils-2.35 begin binutils-2.35 tar.xz sed -i '/@\tincremental_copy/d' gold/testsuite/Makefile.in mkdir -v build cd build ../configure --prefix=/usr \ --enable-gold \ --enable-ld=default \ --enable-plugins \ --enable-shared \ --disable-werror \ --enable-64-bit-bfd \ --with-system-zlib make tooldir=/usr make tooldir=/usr install finish # 8.19. GMP-6.2.0 begin gmp-6.2.0 tar.xz ./configure --prefix=/usr \ --enable-cxx \ --disable-static \ --docdir=/usr/share/doc/gmp-6.2.0 make make html make install make install-html finish # 8.20. MPFR-4.1.0 begin mpfr-4.1.0 tar.xz ./configure --prefix=/usr \ --disable-static \ --enable-thread-safe \ --docdir=/usr/share/doc/mpfr-4.1.0 make make html make install make install-html finish # 8.21. MPC-1.1.0 begin mpc-1.1.0 tar.gz ./configure --prefix=/usr \ --disable-static \ --docdir=/usr/share/doc/mpc-1.1.0 make make html make install make install-html finish # 8.22. Attr-2.4.48 begin attr-2.4.48 tar.gz ./configure --prefix=/usr \ --bindir=/bin \ --disable-static \ --sysconfdir=/etc \ --docdir=/usr/share/doc/attr-2.4.48 make make install mv -v /usr/lib/libattr.so.* /lib ln -sfv ../../lib/$(readlink /usr/lib/libattr.so) /usr/lib/libattr.so finish # 8.23. Acl-2.2.53 begin acl-2.2.53 tar.gz ./configure --prefix=/usr \ --bindir=/bin \ --disable-static \ --libexecdir=/usr/lib \ --docdir=/usr/share/doc/acl-2.2.53 make make install mv -v /usr/lib/libacl.so.* /lib ln -sfv ../../lib/$(readlink /usr/lib/libacl.so) /usr/lib/libacl.so finish # 8.24. Libcap-2.42 begin libcap-2.42 tar.xz sed -i '/install -m.*STACAPLIBNAME/d' libcap/Makefile make lib=lib make lib=lib PKGCONFIGDIR=/usr/lib/pkgconfig install chmod -v 755 /lib/libcap.so.2.42 mv -v /lib/libpsx.a /usr/lib rm -v /lib/libcap.so ln -sfv ../../lib/libcap.so.2 /usr/lib/libcap.so finish # 8.25. Shadow-4.8.1 begin shadow-4.8.1 tar.xz 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:/var/spool/mail:/var/mail:' \ -i etc/login.defs sed -i 's/1000/999/' etc/useradd touch /usr/bin/passwd ./configure --sysconfdir=/etc \ --with-group-name-max-length=32 make make install pwconv grpconv echo "root" | passwd --stdin root finish # 8.26. GCC-10.2.0 begin gcc-10.2.0 tar.xz 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++ \ --disable-multilib \ --disable-bootstrap \ --with-system-zlib make make install rm -rf /usr/lib/gcc/$(gcc -dumpmachine)/10.2.0/include-fixed/bits/ chown -v -R root:root \ /usr/lib/gcc/*linux-gnu/10.2.0/include{,-fixed} ln -sv ../usr/bin/cpp /lib install -v -dm755 /usr/lib/bfd-plugins ln -sfv ../../libexec/gcc/$(gcc -dumpmachine)/10.2.0/liblto_plugin.so \ /usr/lib/bfd-plugins/ echo 'int main(){}' > dummy.c cc dummy.c -v -Wl,--verbose &> dummy.log readelf -l a.out | grep ': /lib' grep -o '/usr/lib.*/crt[1in].*succeeded' dummy.log grep -B4 '^ /usr/include' dummy.log grep 'SEARCH.*/usr/lib' dummy.log |sed 's|; |\n|g' grep "/lib.*/libc.so.6 " dummy.log grep found dummy.log 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 finish # 8.27. Pkg-config-0.29.2 begin pkg-config-0.29.2 tar.gz ./configure --prefix=/usr \ --with-internal-glib \ --disable-host-tool \ --docdir=/usr/share/doc/pkg-config-0.29.2 make make install finish # 8.28. Ncurses-6.2 begin ncurses-6.2 tar.gz sed -i '/LIBTOOL_INSTALL/d' c++/Makefile.in ./configure --prefix=/usr \ --mandir=/usr/share/man \ --with-shared \ --without-debug \ --without-normal \ --enable-pc-files \ --enable-widec make make install mv -v /usr/lib/libncursesw.so.6* /lib ln -sfv ../../lib/$(readlink /usr/lib/libncursesw.so) /usr/lib/libncursesw.so 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 -v /usr/share/doc/ncurses-6.2 cp -v -R doc/* /usr/share/doc/ncurses-6.2 finish # 8.29. Sed-4.8 begin sed-4.8 tar.xz ./configure --prefix=/usr --bindir=/bin make make html make install install -d -m755 /usr/share/doc/sed-4.8 install -m644 doc/sed.html /usr/share/doc/sed-4.8 finish # 8.30. Psmisc-23.3 begin psmisc-23.3 tar.xz ./configure --prefix=/usr make make install mv -v /usr/bin/fuser /bin mv -v /usr/bin/killall /bin finish # 8.31. Gettext-0.21 begin gettext-0.21 tar.xz ./configure --prefix=/usr \ --disable-static \ --docdir=/usr/share/doc/gettext-0.21 make make install chmod -v 0755 /usr/lib/preloadable_libintl.so finish # 8.32. Bison-3.7.1 begin bison-3.7.1 tar.xz ./configure --prefix=/usr --docdir=/usr/share/doc/bison-3.7.1 make make install finish # 8.33. Grep-3.4 begin grep-3.4 tar.xz ./configure --prefix=/usr --bindir=/bin make make install finish # 8.34. Bash-5.0 begin bash-5.0 tar.gz patch -Np1 -i ../bash-5.0-upstream_fixes-1.patch ./configure --prefix=/usr \ --docdir=/usr/share/doc/bash-5.0 \ --without-bash-malloc \ --with-installed-readline make make install mv -vf /usr/bin/bash /bin finish # 8.35. Libtool-2.4.6 begin libtool-2.4.6 tar.xz ./configure --prefix=/usr make make install finish # 8.36. GDBM-1.18.1 begin gdbm-1.18.1 tar.gz sed -r -i '/^char.*parseopt_program_(doc|args)/d' src/parseopt.c ./configure --prefix=/usr \ --disable-static \ --enable-libgdbm-compat make make install finish # 8.37. Gperf-3.1 begin gperf-3.1 tar.gz ./configure --prefix=/usr --docdir=/usr/share/doc/gperf-3.1 make make install finish # 8.38. Expat-2.2.9 begin expat-2.2.9 tar.xz ./configure --prefix=/usr \ --disable-static \ --docdir=/usr/share/doc/expat-2.2.9 make make install finish # 8.39. Inetutils-1.9.4 begin inetutils-1.9.4 tar.xz ./configure --prefix=/usr \ --localstatedir=/var \ --disable-logger \ --disable-whois \ --disable-rcp \ --disable-rexec \ --disable-rlogin \ --disable-rsh \ --disable-servers make make install mv -v /usr/bin/{hostname,ping,ping6,traceroute} /bin mv -v /usr/bin/ifconfig /sbin finish # 8.40. Perl-5.32.0 begin perl-5.32.0 tar.xz export BUILD_ZLIB=False export BUILD_BZIP2=0 sh Configure -des \ -Dprefix=/usr \ -Dvendorprefix=/usr \ -Dprivlib=/usr/lib/perl5/5.32/core_perl \ -Darchlib=/usr/lib/perl5/5.32/core_perl \ -Dsitelib=/usr/lib/perl5/5.32/site_perl \ -Dsitearch=/usr/lib/perl5/5.32/site_perl \ -Dvendorlib=/usr/lib/perl5/5.32/vendor_perl \ -Dvendorarch=/usr/lib/perl5/5.32/vendor_perl \ -Dman1dir=/usr/share/man/man1 \ -Dman3dir=/usr/share/man/man3 \ -Dpager="/usr/bin/less -isR" \ -Duseshrplib \ -Dusethreads make make install unset BUILD_ZLIB BUILD_BZIP2 finish # 8.41. XML::Parser-2.46 begin XML-Parser-2.46 tar.gz perl Makefile.PL make make install finish # 8.42. Intltool-0.51.0 begin intltool-0.51.0 tar.gz sed -i 's:\\\${:\\\$\\{:' intltool-update.in ./configure --prefix=/usr make make install install -v -Dm644 doc/I18N-HOWTO /usr/share/doc/intltool-0.51.0/I18N-HOWTO finish # 8.43. Autoconf-2.69 begin autoconf-2.69 tar.xz sed -i '361 s/{/\\{/' bin/autoscan.in ./configure --prefix=/usr make make install finish # 8.44. Automake-1.16.2 begin automake-1.16.2 tar.xz sed -i "s/''/etags/" t/tags-lisp-space.sh ./configure --prefix=/usr --docdir=/usr/share/doc/automake-1.16.2 make make install finish # 8.45. Kmod-27 begin kmod-27 tar.xz ./configure --prefix=/usr \ --bindir=/bin \ --sysconfdir=/etc \ --with-rootlibdir=/lib \ --with-xz \ --with-zlib make make install for target in depmod insmod lsmod modinfo modprobe rmmod; do ln -sfv ../bin/kmod /sbin/$target done ln -sfv kmod /bin/lsmod finish # 8.46. Libelf from Elfutils-0.180 begin elfutils-0.180 tar.bz2 ./configure --prefix=/usr --disable-debuginfod --libdir=/lib make make -C libelf install install -vm644 config/libelf.pc /usr/lib/pkgconfig rm /lib/libelf.a finish # 8.47. Libffi-3.3 begin libffi-3.3 tar.gz ./configure --prefix=/usr --disable-static --with-gcc-arch=native make make install finish # 8.48. OpenSSL-1.1.1g begin openssl-1.1.1g tar.gz ./config --prefix=/usr \ --openssldir=/etc/ssl \ --libdir=lib \ shared \ zlib-dynamic make sed -i '/INSTALL_LIBS/s/libcrypto.a libssl.a//' Makefile make MANSUFFIX=ssl install mv -v /usr/share/doc/openssl /usr/share/doc/openssl-1.1.1g cp -vfr doc/* /usr/share/doc/openssl-1.1.1g finish # 8.49. Python-3.8.5 begin Python-3.8.5 tar.xz ./configure --prefix=/usr \ --enable-shared \ --with-system-expat \ --with-system-ffi \ --with-ensurepip=yes make make install chmod -v 755 /usr/lib/libpython3.8.so chmod -v 755 /usr/lib/libpython3.so ln -sfv pip3.8 /usr/bin/pip3 install -v -dm755 /usr/share/doc/python-3.8.5/html tar --strip-components=1 \ --no-same-owner \ --no-same-permissions \ -C /usr/share/doc/python-3.8.5/html \ -xvf ../python-3.8.5-docs-html.tar.bz2 finish # 8.50. Ninja-1.10.0 begin ninja-1.10.0 tar.gz sed -i '/int Guess/a \ int j = 0;\ char* jobs = getenv( "NINJAJOBS" );\ if ( jobs != NULL ) j = atoi( jobs );\ if ( j > 0 ) return j;\ ' src/ninja.cc python3 configure.py --bootstrap install -vm755 ninja /usr/bin/ install -vDm644 misc/bash-completion /usr/share/bash-completion/completions/ninja install -vDm644 misc/zsh-completion /usr/share/zsh/site-functions/_ninja finish # 8.51. Meson-0.55.0 begin meson-0.55.0 tar.gz python3 setup.py build python3 setup.py install --root=dest cp -rv dest/* / finish # 8.52. Coreutils-8.32 begin coreutils-8.32 tar.xz patch -Np1 -i ../coreutils-8.32-i18n-1.patch sed -i '/test.lock/s/^/#/' gnulib-tests/gnulib.mk autoreconf -fiv FORCE_UNSAFE_CONFIGURE=1 ./configure \ --prefix=/usr \ --enable-no-install-program=kill,uptime make make install mv -v /usr/bin/{cat,chgrp,chmod,chown,cp,date,dd,df,echo} /bin mv -v /usr/bin/{false,ln,ls,mkdir,mknod,mv,pwd,rm} /bin mv -v /usr/bin/{rmdir,stty,sync,true,uname} /bin mv -v /usr/bin/chroot /usr/sbin mv -v /usr/share/man/man1/chroot.1 /usr/share/man/man8/chroot.8 sed -i 's/"1"/"8"/' /usr/share/man/man8/chroot.8 mv -v /usr/bin/{head,nice,sleep,touch} /bin finish # 8.53. Check-0.15.2 begin check-0.15.2 tar.gz ./configure --prefix=/usr --disable-static make make docdir=/usr/share/doc/check-0.15.2 install finish # 8.54. Diffutils-3.7 begin diffutils-3.7 tar.xz ./configure --prefix=/usr make make install finish # 8.55. Gawk-5.1.0 begin gawk-5.1.0 tar.xz sed -i 's/extras//' Makefile.in ./configure --prefix=/usr make make install mkdir -v /usr/share/doc/gawk-5.1.0 cp -v doc/{awkforai.txt,*.{eps,pdf,jpg}} /usr/share/doc/gawk-5.1.0 finish # 8.56. Findutils-4.7.0 begin findutils-4.7.0 tar.xz ./configure --prefix=/usr --localstatedir=/var/lib/locate make make install mv -v /usr/bin/find /bin sed -i 's|find:=${BINDIR}|find:=/bin|' /usr/bin/updatedb finish # 8.57. Groff-1.22.4 begin groff-1.22.4 tar.gz PAGE=A4 ./configure --prefix=/usr make -j1 make install finish # 8.58. GRUB-2.04 begin grub-2.04 tar.xz ./configure --prefix=/usr \ --sbindir=/sbin \ --sysconfdir=/etc \ --disable-efiemu \ --disable-werror make make install mv -v /etc/bash_completion.d/grub /usr/share/bash-completion/completions finish # 8.59. Less-551 begin less-551 tar.gz ./configure --prefix=/usr --sysconfdir=/etc make make install finish # 8.60. Gzip-1.10 begin gzip-1.10 tar.xz ./configure --prefix=/usr make make install mv -v /usr/bin/gzip /bin finish # 8.61. IPRoute2-5.8.0 begin iproute2-5.8.0 tar.xz sed -i /ARPD/d Makefile rm -fv man/man8/arpd.8 sed -i 's/.m_ipt.o//' tc/Makefile make make DOCDIR=/usr/share/doc/iproute2-5.8.0 install finish # 8.62. Kbd-2.3.0 begin kbd-2.3.0 tar.xz patch -Np1 -i ../kbd-2.3.0-backspace-1.patch sed -i '/RESIZECONS_PROGS=/s/yes/no/' configure sed -i 's/resizecons.8 //' docs/man/man8/Makefile.in ./configure --prefix=/usr --disable-vlock make make install rm -v /usr/lib/libtswrap.{a,la,so*} mkdir -v /usr/share/doc/kbd-2.3.0 cp -R -v docs/doc/* /usr/share/doc/kbd-2.3.0 finish # 8.63. Libpipeline-1.5.3 begin libpipeline-1.5.3 tar.gz ./configure --prefix=/usr make make install finish # 8.64. Make-4.3 begin make-4.3 tar.gz ./configure --prefix=/usr make make install finish # 8.65. Patch-2.7.6 begin patch-2.7.6 tar.x ./configure --prefix=/usr make make install finish # 8.66. Man-DB-2.9.3 begin man-db-2.9.3 tar.xz ./configure --prefix=/usr \ --docdir=/usr/share/doc/man-db-2.9.3 \ --sysconfdir=/etc \ --disable-setuid \ --enable-cache-owner=bin \ --with-browser=/usr/bin/lynx \ --with-vgrind=/usr/bin/vgrind \ --with-grap=/usr/bin/grap \ --with-systemdtmpfilesdir= \ --with-systemdsystemunitdir= make make install finish # 8.67. Tar-1.32 begin tar-1.32 tar.xz FORCE_UNSAFE_CONFIGURE=1 \ ./configure --prefix=/usr \ --bindir=/bin make make install make -C doc install-html docdir=/usr/share/doc/tar-1.32 finish # 8.68. Texinfo-6.7 begin texinfo-6.7 tar.xz ./configure --prefix=/usr --disable-static make make install make TEXMF=/usr/share/texmf install-tex pushd /usr/share/info rm -v dir for f in * do install-info $f dir 2>/dev/null done popd finish # 8.69. Vim-8.2.1361 begin vim-8.2.1361 tar.gz echo '#define SYS_VIMRC_FILE "/etc/vimrc"' >> src/feature.h ./configure --prefix=/usr make make install ln -sv vim /usr/bin/vi for L in /usr/share/man/{,*/}man1/vim.1; do ln -sv vim.1 $(dirname $L)/vi.1 done ln -sv ../vim/vim82/doc /usr/share/doc/vim-8.2.1361 cat > /etc/vimrc << "EOF" " Begin /etc/vimrc " Ensure defaults are set before customizing settings, not after source $VIMRUNTIME/defaults.vim let skip_defaults_vim=1 set nocompatible set backspace=2 set mouse= syntax on if (&term == "xterm") || (&term == "putty") set background=dark endif " End /etc/vimrc EOF finish # 8.70. Eudev-3.2.9 begin eudev-3.2.9 tar.gz ./configure --prefix=/usr \ --bindir=/sbin \ --sbindir=/sbin \ --libdir=/usr/lib \ --sysconfdir=/etc \ --libexecdir=/lib \ --with-rootprefix= \ --with-rootlibdir=/lib \ --enable-manpages \ --disable-static make make install tar -xvf ../udev-lfs-20171102.tar.xz make -f udev-lfs-20171102/Makefile.lfs install udevadm hwdb --update finish # 8.71. Procps-ng-3.3.16 begin procps-ng-3.3.16 tar.xz ./configure --prefix=/usr \ --exec-prefix= \ --libdir=/usr/lib \ --docdir=/usr/share/doc/procps-ng-3.3.16 \ --disable-static \ --disable-kill make make install mv -v /usr/lib/libprocps.so.* /lib ln -sfv ../../lib/$(readlink /usr/lib/libprocps.so) /usr/lib/libprocps.so finish # 8.72. Util-linux-2.36 begin util-linux-2.36 tar.xz mkdir -pv /var/lib/hwclock ./configure ADJTIME_PATH=/var/lib/hwclock/adjtime \ --docdir=/usr/share/doc/util-linux-2.36 \ --disable-chfn-chsh \ --disable-login \ --disable-nologin \ --disable-su \ --disable-setpriv \ --disable-runuser \ --disable-pylibmount \ --disable-static \ --without-python \ --without-systemd \ --without-systemdsystemunitdir make make install finish # 8.73. E2fsprogs-1.45.6 begin e2fsprogs-1.45.6 tar.gz mkdir -v build cd build ../configure --prefix=/usr \ --bindir=/bin \ --with-root-prefix="" \ --enable-elf-shlibs \ --disable-libblkid \ --disable-libuuid \ --disable-uuidd \ --disable-fsck make make install chmod -v u+w /usr/lib/{libcom_err,libe2p,libext2fs,libss}.a gunzip -v /usr/share/info/libext2fs.info.gz install-info --dir-file=/usr/share/info/dir /usr/share/info/libext2fs.info makeinfo -o doc/com_err.info ../lib/et/com_err.texinfo install -v -m644 doc/com_err.info /usr/share/info install-info --dir-file=/usr/share/info/dir /usr/share/info/com_err.info finish # 8.74. Sysklogd-1.5.1 begin sysklogd-1.5.1 tar.gz sed -i '/Error loading kernel symbols/{n;n;d}' ksym_mod.c sed -i 's/union wait/int/' syslogd.c make make BINDIR=/sbin install finish # 8.75. Sysvinit-2.97 begin sysvinit-2.97 tar.xz patch -Np1 -i ../sysvinit-2.97-consolidated-1.patch make make install finish # 8.77. Stripping Again save_lib="ld-2.32.so libc-2.32.so libpthread-2.32.so libthread_db-1.0.so" cd /lib for LIB in $save_lib; do objcopy --only-keep-debug $LIB $LIB.dbg strip --strip-unneeded $LIB objcopy --add-gnu-debuglink=$LIB.dbg $LIB done save_usrlib="libquadmath.so.0.0.0 libstdc++.so.6.0.28 libitm.so.1.0.0 libatomic.so.1.2.0" cd /usr/lib for LIB in $save_usrlib; do objcopy --only-keep-debug $LIB $LIB.dbg strip --strip-unneeded $LIB objcopy --add-gnu-debuglink=$LIB.dbg $LIB done unset LIB save_lib save_usrlib find /usr/lib -type f -name \*.a \ -exec strip --strip-debug {} ';' find /lib /usr/lib -type f -name \*.so* ! -name \*dbg \ -exec strip --strip-unneeded {} ';' find /{bin,sbin} /usr/{bin,sbin,libexec} -type f \ -exec strip --strip-all {} ';' # 8.78. Cleaning Up rm -rf /tmp/*