From 79d0589b249aa127a0040982b5e40c911a2fe9c9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Lu=C3=ADs=20Guilherme=20Bergamini=20Mendes?= Date: Wed, 16 Sep 2020 11:22:47 -0300 Subject: [PATCH] Adding scripts --- lfs-chroot.sh | 103 ++++++ lfs-cross.sh | 359 ++++++++++++++++++ lfs-system.sh | 994 ++++++++++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 1456 insertions(+) create mode 100644 lfs-chroot.sh create mode 100644 lfs-cross.sh create mode 100644 lfs-system.sh diff --git a/lfs-chroot.sh b/lfs-chroot.sh new file mode 100644 index 0000000..722ca25 --- /dev/null +++ b/lfs-chroot.sh @@ -0,0 +1,103 @@ +#!/bin/bash +# LFS 10.0 Build Script +# Builds the additional temporary tools from chapter 7 +# by Luís Mendes :) +# 14/09/2020 + +package_name="" +package_ext="" + +begin() { + package_name=$1 + package_ext=$2 + + tar xf $package_name.$package_ext + cd $package_name +} + +finish() { + cd /sources + rm -rf $package_name +} + +cd /sources + +# 7.7. Libstdc++ from GCC-10.2.0, Pass 2 +begin gcc-10.2.0 tar.xz +ln -s gthr-posix.h libgcc/gthr-default.h +mkdir -v build +cd build +../libstdc++-v3/configure \ + CXXFLAGS="-g -O2 -D_GNU_SOURCE" \ + --prefix=/usr \ + --disable-multilib \ + --disable-nls \ + --host=$(uname -m)-lfs-linux-gnu \ + --disable-libstdcxx-pch +make +make install +finish + +# 7.8. Gettext-0.21 +begin gettext-0.21 tar.xz +./configure --disable-shared +make +cp -v gettext-tools/src/{msgfmt,msgmerge,xgettext} /usr/bin +finish + +# 7.9. 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 + +# 7.10. Perl-5.32.0 +begin perl-5.32.0 tar.xz +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 +make +make install +finish + +# 7.11. Python-3.8.5 +begin Python-3.8.5 tar.xz +./configure --prefix=/usr \ + --enable-shared \ + --without-ensurepip +make +make install +finish + +# 7.12. Texinfo-6.7 +begin texinfo-6.7 tar.xz +./configure --prefix=/usr +make +make install +finish + +# 7.13. 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 +make +make install +finish diff --git a/lfs-cross.sh b/lfs-cross.sh new file mode 100644 index 0000000..6f88737 --- /dev/null +++ b/lfs-cross.sh @@ -0,0 +1,359 @@ +#!/bin/bash +# LFS 10.0 Build Script +# Builds the cross-toolchain and cross compiling temporary tools from chapters 5 and 6 +# by Luís Mendes :) +# 14/09/2020 + +package_name="" +package_ext="" + +begin() { + package_name=$1 + package_ext=$2 + + tar xf $package_name.$package_ext + cd $package_name +} + +finish() { + cd /sources + rm -rf $package_name +} + +cd $LFS/sources + +# 5.2. Binutils-2.35 - Pass 1 +begin binutils-2.35 tar.xz +mkdir -v build +cd build +../configure --prefix=$LFS/tools \ + --with-sysroot=$LFS \ + --target=$LFS_TGT \ + --disable-nls \ + --disable-werror +make +make install +finish + +# 5.3. GCC-10.2.0 - Pass 1 +begin gcc-10.2.0 tar.xz +tar -xf ../mpfr-4.1.0.tar.xz +mv -v mpfr-4.1.0 mpfr +tar -xf ../gmp-6.2.0.tar.xz +mv -v gmp-6.2.0 gmp +tar -xf ../mpc-1.1.0.tar.gz +mv -v mpc-1.1.0 mpc +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 \ + --target=$LFS_TGT \ + --prefix=$LFS/tools \ + --with-glibc-version=2.11 \ + --with-sysroot=$LFS \ + --with-newlib \ + --without-headers \ + --enable-initfini-array \ + --disable-nls \ + --disable-shared \ + --disable-multilib \ + --disable-decimal-float \ + --disable-threads \ + --disable-libatomic \ + --disable-libgomp \ + --disable-libquadmath \ + --disable-libssp \ + --disable-libvtv \ + --disable-libstdcxx \ + --enable-languages=c,c++ +make +make install +cd .. +cat gcc/limitx.h gcc/glimits.h gcc/limity.h > \ + `dirname $($LFS_TGT-gcc -print-libgcc-file-name)`/install-tools/include/limits.h +finish + +# 5.4. Linux-5.8.3 API Headers +begin linux-5.8.3 tar.xz +make mrproper +make headers +find usr/include -name '.*' -delete +rm usr/include/Makefile +cp -rv usr/include $LFS/usr +finish + +# 5.5. Glibc-2.32 +begin glibc-2.32 tar.xz +case $(uname -m) in + i?86) ln -sfv ld-linux.so.2 $LFS/lib/ld-lsb.so.3 + ;; + x86_64) ln -sfv ../lib/ld-linux-x86-64.so.2 $LFS/lib64 + ln -sfv ../lib/ld-linux-x86-64.so.2 $LFS/lib64/ld-lsb-x86-64.so.3 + ;; +esac +patch -Np1 -i ../glibc-2.32-fhs-1.patch +mkdir -v build +cd build +../configure \ + --prefix=/usr \ + --host=$LFS_TGT \ + --build=$(../scripts/config.guess) \ + --enable-kernel=3.2 \ + --with-headers=$LFS/usr/include \ + libc_cv_slibdir=/lib +make +make DESTDIR=$LFS install +echo 'int main(){}' > dummy.c +$LFS_TGT-gcc dummy.c +readelf -l a.out | grep '/ld-linux' +rm -v dummy.c a.out +$LFS/tools/libexec/gcc/$LFS_TGT/10.2.0/install-tools/mkheaders +finish + +# 5.6. Libstdc++ from GCC-10.2.0, Pass 1 +begin gcc-10.2.0 tar.xz +mkdir -v build +cd build +../libstdc++-v3/configure \ + --host=$LFS_TGT \ + --build=$(../config.guess) \ + --prefix=/usr \ + --disable-multilib \ + --disable-nls \ + --disable-libstdcxx-pch \ + --with-gxx-include-dir=/tools/$LFS_TGT/include/c++/10.2.0 +make +make DESTDIR=$LFS install +finish + +# 6.2. 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 \ + --host=$LFS_TGT \ + --build=$(build-aux/config.guess) +make +make DESTDIR=$LFS install +finish + +# 6.3. Ncurses-6.2 +begin ncurses-6.2 tar.gz +sed -i s/mawk// configure +mkdir build +pushd build + ../configure + make -C include + make -C progs tic +popd +./configure --prefix=/usr \ + --host=$LFS_TGT \ + --build=$(./config.guess) \ + --mandir=/usr/share/man \ + --with-manpage-format=normal \ + --with-shared \ + --without-debug \ + --without-ada \ + --without-normal \ + --enable-widec +make +make DESTDIR=$LFS TIC_PATH=$(pwd)/build/progs/tic install +echo "INPUT(-lncursesw)" > $LFS/usr/lib/libncurses.so +mv -v $LFS/usr/lib/libncursesw.so.6* $LFS/lib +ln -sfv ../../lib/$(readlink $LFS/usr/lib/libncursesw.so) $LFS/usr/lib/libncursesw.so +finish + +# 6.4. Bash-5.0 +begin bash-5.0 tar.gz +./configure --prefix=/usr \ + --build=$(support/config.guess) \ + --host=$LFS_TGT \ + --without-bash-malloc +make +make DESTDIR=$LFS install +mv $LFS/usr/bin/bash $LFS/bin/bash +ln -sv bash $LFS/bin/sh +finish + +# 6.5. Coreutils-8.32 +begin coreutils-8.32 tar.xz +./configure --prefix=/usr \ + --host=$LFS_TGT \ + --build=$(build-aux/config.guess) \ + --enable-install-program=hostname \ + --enable-no-install-program=kill,uptime +make +make DESTDIR=$LFS install +mv -v $LFS/usr/bin/{cat,chgrp,chmod,chown,cp,date,dd,df,echo} $LFS/bin +mv -v $LFS/usr/bin/{false,ln,ls,mkdir,mknod,mv,pwd,rm} $LFS/bin +mv -v $LFS/usr/bin/{rmdir,stty,sync,true,uname} $LFS/bin +mv -v $LFS/usr/bin/{head,nice,sleep,touch} $LFS/bin +mv -v $LFS/usr/bin/chroot $LFS/usr/sbin +mkdir -pv $LFS/usr/share/man/man8 +mv -v $LFS/usr/share/man/man1/chroot.1 $LFS/usr/share/man/man8/chroot.8 +sed -i 's/"1"/"8"/' $LFS/usr/share/man/man8/chroot.8 +finish + +# 6.6. Diffutils-3.7 +begin diffutils-3.7 tar.xz +./configure --prefix=/usr --host=$LFS_TGT +make +make DESTDIR=$LFS install +finish + +# 6.7. File-5.39 +begin file-5.39 tar.gz +./configure --prefix=/usr --host=$LFS_TGT +make +make DESTDIR=$LFS install +finish + +# 6.8. Findutils-4.7.0 +begin findutils-4.7.0 tar.xz +./configure --prefix=/usr \ + --host=$LFS_TGT \ + --build=$(build-aux/config.guess) +make +make DESTDIR=$LFS install +mv -v $LFS/usr/bin/find $LFS/bin +sed -i 's|find:=${BINDIR}|find:=/bin|' $LFS/usr/bin/updatedb +finish + +# 6.9. Gawk-5.1.0 +begin gawk-5.1.0 tar.xz +sed -i 's/extras//' Makefile.in +./configure --prefix=/usr \ + --host=$LFS_TGT \ + --build=$(./config.guess) +make +make DESTDIR=$LFS install +finish + +# 6.10. Grep-3.4 +begin grep-3.4 tar.xz +./configure --prefix=/usr \ + --host=$LFS_TGT \ + --bindir=/bin +make +make DESTDIR=$LFS install +finish + +# 6.11. Gzip-1.10 +begin gzip-1.10 tar.xz +./configure --prefix=/usr --host=$LFS_TGT +make +make DESTDIR=$LFS install +mv -v $LFS/usr/bin/gzip $LFS/bin +finish + +# 6.12. Make-4.3 +begin make-4.3 tar.gz +./configure --prefix=/usr \ + --without-guile \ + --host=$LFS_TGT \ + --build=$(build-aux/config.guess) +make +make DESTDIR=$LFS install +finish + +# 6.13. Patch-2.7.6 +begin patch-2.7.6 tar.xz +./configure --prefix=/usr \ + --host=$LFS_TGT \ + --build=$(build-aux/config.guess) +make +make DESTDIR=$LFS install +finish + +# 6.14. Sed-4.8 +begin sed-4.8 tar.xz +./configure --prefix=/usr \ + --host=$LFS_TGT \ + --bindir=/bin +make +make DESTDIR=$LFS install +finish + +# 6.15. Tar-1.32 +begin tar-1.32 tar.xz +./configure --prefix=/usr \ + --host=$LFS_TGT \ + --build=$(build-aux/config.guess) \ + --bindir=/bin +make +make DESTDIR=$LFS install +finish + +# 6.16. Xz-5.2.5 +begin xz-5.2.5 tar.xz +./configure --prefix=/usr \ + --host=$LFS_TGT \ + --build=$(build-aux/config.guess) \ + --disable-static \ + --docdir=/usr/share/doc/xz-5.2.5 +make +make DESTDIR=$LFS install +mv -v $LFS/usr/bin/{lzma,unlzma,lzcat,xz,unxz,xzcat} $LFS/bin +mv -v $LFS/usr/lib/liblzma.so.* $LFS/lib +ln -svf ../../lib/$(readlink $LFS/usr/lib/liblzma.so) $LFS/usr/lib/liblzma.so +finish + +# 6.17. Binutils-2.35 - Pass 2 +begin binutils-2.35 tar.xz +mkdir -v build +cd build +../configure \ + --prefix=/usr \ + --build=$(../config.guess) \ + --host=$LFS_TGT \ + --disable-nls \ + --enable-shared \ + --disable-werror \ + --enable-64-bit-bfd +make +make DESTDIR=$LFS install +finish + +# 6.18. GCC-10.2.0 - Pass 2 +begin gcc-10.2.0 tar.xz +tar -xf ../mpfr-4.1.0.tar.xz +mv -v mpfr-4.1.0 mpfr +tar -xf ../gmp-6.2.0.tar.xz +mv -v gmp-6.2.0 gmp +tar -xf ../mpc-1.1.0.tar.gz +mv -v mpc-1.1.0 mpc +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 +mkdir -pv $LFS_TGT/libgcc +ln -s ../../../libgcc/gthr-posix.h $LFS_TGT/libgcc/gthr-default.h +../configure \ + --build=$(../config.guess) \ + --host=$LFS_TGT \ + --prefix=/usr \ + CC_FOR_TARGET=$LFS_TGT-gcc \ + --with-build-sysroot=$LFS \ + --enable-initfini-array \ + --disable-nls \ + --disable-multilib \ + --disable-decimal-float \ + --disable-libatomic \ + --disable-libgomp \ + --disable-libquadmath \ + --disable-libssp \ + --disable-libvtv \ + --disable-libstdcxx \ + --enable-languages=c,c++ +make +make DESTDIR=$LFS install +ln -sv gcc $LFS/usr/bin/cc +finish diff --git a/lfs-system.sh b/lfs-system.sh new file mode 100644 index 0000000..e0c8f10 --- /dev/null +++ b/lfs-system.sh @@ -0,0 +1,994 @@ +#!/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 + + tar xf $package_name.$package_ext + cd $package_name +} + +finish() { + 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/*