Orin/lfs-12.2.sh
L0m1g 297a61b943 Premier battement d’Orin.
La forge est allumée, la roche est chauffée, les outils sont prêts.
Sous l’œil du goéland et le souffle de l’hermine, la première pierre d’Erminig est posée.
Ce n’est qu’un début. Le vent tourne, la mer se lève.
2025-03-05 08:11:12 +01:00

2684 lines
59 KiB
Bash
Executable file

#!/usr/bin/env bash
#
#set -eux -o pipefail
export LFS=/mnt/lfs
export MAKEFLAGS=-j32
set +h
umask 022
LC_ALL=POSIX
LFS_TGT=$(uname -m)-lfs-linux-gnu
PATH=/usr/bin
if [ ! -L /bin ]; then PATH=/bin:$PATH; fi
PATH=$LFS/tools/bin:$PATH
CONFIG_SITE=$LFS/usr/share/config.site
export LFS LC_ALL LFS_TGT PATH CONFIG_SITE
#sudo umount -R $LFS/{proc,sys,run,dev/{pts,shm,}}
#sudo rm -rf $LFS
function 3.1-get_sources(){
mkdir -pv $LFS/sources
chmod -v a+wt $LFS/sources
wget https://lfs.maru-na.net/lfs/view/stable/wget-list-sysv
wget https://lfs.maru-na.net/lfs/view/stable/md5sums
wget --input-file=wget-list-sysv --continue --directory-prefix=$LFS/sources
wget https://sourceforge.net/projects/expat/files/expat/2.6.4/expat-2.6.4.tar.xz --directory-prefix=$LFS/sources
}
function 4.2-folder_structure(){
mkdir -pv $LFS/sources
chmod -v a+wt $LFS/sources
mkdir -pv $LFS/{root,etc,var} $LFS/usr/{bin,lib,sbin}
for i in bin lib sbin; do
ln -svf usr/$i $LFS/$i
done
case $(uname -m) in
x86_64) mkdir -pv $LFS/lib64 ;;
esac
mkdir -pv $LFS/tools
}
#function 4.4-configure_environment(){
# source /home/lomig/dev/bash_profile
# source /home/lomig/dev/bashrc
#}
function 5.2-binutils(){
echo "binutils"
cd $LFS/sources
tar -xf binutils-${1}.tar.xz
cd binutils-${1}
mkdir -v build
cd build
../configure --prefix=$LFS/tools \
--with-sysroot=$LFS \
--target=$LFS_TGT \
--disable-nls \
--enable-gprofng=no \
--disable-werror \
--enable-new-dtags \
--enable-default-hash-style=gnu
make
make install
cd $LFS/sources
rm -rf binutils-${1}
}
function 5.3-gcc(){
cd $LFS/sources
tar --use-compress-program=pixz -xf gcc-${1}.tar.xz
cd gcc-${1}
tar --use-compress-program=pixz -xf ../mpfr-4.2.1.tar.xz
mv -v mpfr-4.2.1 mpfr
tar --use-compress-program=pixz -xf ../gmp-6.3.0.tar.xz
mv -v gmp-6.3.0 gmp
tar --use-compress-program=pigz -xf ../mpc-1.3.1.tar.gz
mv -v mpc-1.3.1 mpc
sed -e '/m64=/s/lib64/lib/' \
-i.orig gcc/config/i386/t-linux64
mkdir build
cd build
../configure \
--target=$LFS_TGT \
--prefix=$LFS/tools \
--with-glibc-version=2.40 \
--with-sysroot=$LFS \
--with-newlib \
--without-headers \
--enable-default-pie \
--enable-default-ssp \
--disable-nls \
--disable-shared \
--disable-multilib \
--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)`/include/limits.h
cd $LFS/sources
rm -rf gcc-${1}
}
function 5.4-linux_headers(){
cd $LFS/sources
tar --use-compress-program=pixz -xf linux-${1}.tar.xz
cd linux-${1}
make mrproper
make headers
find usr/include -type f ! -name '*.h' -delete
cp -rv usr/include $LFS/usr
cd $LFS/sources
rm -rf linux-${1}
}
function 5.5-glibc(){
cd $LFS/sources
tar --use-compress-program=pixz -xf glibc-${1}.tar.xz
cd glibc-${1}
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
patch -Np1 -i ../glibc-2.40-fhs-1.patch
mkdir build
cd build
echo "rootsbindir=/usr/sbin" > configparms
../configure \
--prefix=/usr \
--host=$LFS_TGT \
--build=$(../scripts/config.guess) \
--enable-kernel=4.19 \
--with-headers=$LFS/usr/include \
--disable-nscd \
libc_cv_slibdir=/usr/lib
make
make DESTDIR=$LFS install
sed '/RTLDLIST=/s@/usr@@g' -i $LFS/usr/bin/ldd
echo 'int main(){}' | gcc -xc -
readelf -l a.out | grep ld-linux
rm -v a.out
cd $LFS/sources
rm -rf glibc-${1}
}
function 5.6-libstdcpp(){
cd $LFS/sources
tar --use-compress-program=pixz -xf gcc-${1}.tar.xz
cd gcc-${1}
mkdir 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++/14.2.0
make
make DESTDIR=$LFS install
rm -v $LFS/usr/lib/lib{stdc++{,exp,fs},supc++}.la
cd $LFS/sources
rm -rf gcc-${1}
}
function 6.2-m4(){
cd $LFS/sources
tar --use-compress-program=pixz -xf m4-${1}.tar.xz
cd m4-${1}
./configure --prefix=/usr \
--host=$LFS_TGT \
--build=$(build-aux/config.guess)
make
make DESTDIR=$LFS install
cd $LFS/sources
rm -rf m4-${1}
}
function 6.3-ncurses(){
cd $LFS/sources
tar --use-compress-program=pigz -xf ncurses-${1}.tar.gz
cd ncurses-${1}
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-normal \
--with-cxx-shared \
--without-debug \
--without-ada \
--disable-stripping
make
make DESTDIR=$LFS TIC_PATH=$(pwd)/build/progs/tic install
ln -sv libncursesw.so $LFS/usr/lib/libncurses.so
sed -e 's/^#if.*XOPEN.*$/#if 1/' \
-i $LFS/usr/include/curses.h
cd $LFS/sources
rm -rf ncurses-${1}
}
function 6.4-bash(){
cd $LFS/sources
tar --use-compress-program=pigz -xf bash-${1}.tar.gz
cd bash-${1}
./configure --prefix=/usr \
--build=$(sh support/config.guess) \
--host=$LFS_TGT \
--without-bash-malloc \
bash_cv_strtold_broken=no
make
make DESTDIR=$LFS install
ln -sv bash $LFS/bin/sh
cd $LFS/sources
rm -rf bash-${1}
}
function 6.5-coreutils(){
cd $LFS/sources
tar --use-compress-program=pixz -xf coreutils-${1}.tar.xz
cd coreutils-${1}
./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/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
cd $LFS/sources
rm -rf coreutils-${1}
}
function 6.6-diffutils(){
cd $LFS/sources
tar --use-compress-program=pixz -xf diffutils-${1}.tar.xz
cd diffutils-${1}
./configure --prefix=/usr \
--host=$LFS_TGT \
--build=$(./build-aux/config.guess)
make
make DESTDIR=$LFS install
cd $LFS/sources
rm -rf diffutils-${1}
}
function 6.7-file(){
cd $LFS/sources
tar --use-compress-program=pigz -xf file-${1}.tar.gz
cd file-${1}
mkdir build
pushd build
../configure --disable-bzlib \
--disable-libseccomp \
--disable-xzlib \
--disable-zlib
make
popd
./configure --prefix=/usr --host=$LFS_TGT --build=$(./config.guess)
make FILE_COMPILE=$(pwd)/build/src/file
make DESTDIR=$LFS install
rm -v $LFS/usr/lib/libmagic.la
cd $LFS/sources
rm -rf file-${1}
}
function 6.8-findutils(){
cd $LFS/sources
tar --use-compress-program=pixz -xf findutils-${1}.tar.xz
cd findutils-${1}
./configure --prefix=/usr \
--localstatedir=/var/lib/locate \
--host=$LFS_TGT \
--build=$(build-aux/config.guess)
make
make DESTDIR=$LFS install
cd $LFS/sources
rm -rf findutils-${1}
}
function 6.9-gawk(){
cd $LFS/sources
tar --use-compress-program=pixz -xf gawk-${1}.tar.xz
cd gawk-${1}
sed -i 's/extras//' Makefile.in
./configure --prefix=/usr \
--host=$LFS_TGT \
--build=$(build-aux/config.guess)
make
make DESTDIR=$LFS install
cd $LFS/sources
rm -rf gawk-${1}
}
function 6.10-grep(){
cd $LFS/sources
tar --use-compress-program=pixz -xf grep-${1}.tar.xz
cd grep-${1}
./configure --prefix=/usr \
--host=$LFS_TGT \
--build=$(./build-aux/config.guess)
make
make DESTDIR=$LFS install
cd $LFS/sources
rm -rf grep-${1}
}
function 6.11-gzip(){
cd $LFS/sources
tar --use-compress-program=pixz -xf gzip-${1}.tar.xz
cd gzip-${1}
./configure --prefix=/usr --host=$LFS_TGT
make
make DESTDIR=$LFS install
cd $LFS/sources
rm -rf gzip-${1}
}
function 6.12-make(){
cd $LFS/sources
tar --use-compress-program=pigz -xf make-${1}.tar.gz
cd make-${1}
./configure --prefix=/usr \
--without-guile \
--host=$LFS_TGT \
--build=$(build-aux/config.guess)
make
make DESTDIR=$LFS install
cd $LFS/sources
rm -rf make-${1}
}
function 6.13-patch(){
cd $LFS/sources
tar --use-compress-program=pixz -xf patch-${1}.tar.xz
cd patch-${1}
./configure --prefix=/usr \
--host=$LFS_TGT \
--build=$(build-aux/config.guess)
make
make DESTDIR=$LFS install
cd $LFS/sources
rm -rf patch-${1}
}
function 6.14-sed(){
cd $LFS/sources
tar --use-compress-program=pixz -xf sed-${1}.tar.xz
cd sed-${1}
./configure --prefix=/usr \
--host=$LFS_TGT \
--build=$(./build-aux/config.guess)
make
make DESTDIR=$LFS install
cd $LFS/sources
rm -rf sed-${1}
}
function 6.15-tar(){
cd $LFS/sources
tar --use-compress-program=pixz -xf tar-${1}.tar.xz
cd tar-${1}
./configure --prefix=/usr \
--host=$LFS_TGT \
--build=$(build-aux/config.guess)
make
make DESTDIR=$LFS install
cd $LFS/sources
rm -rf tar-${1}
}
function 6.16-xz(){
cd $LFS/sources
tar --use-compress-program=pixz -xf xz-${1}.tar.xz
cd xz-${1}
./configure --prefix=/usr \
--host=$LFS_TGT \
--build=$(build-aux/config.guess) \
--disable-static \
--docdir=/usr/share/doc/xz-${1}
make
make DESTDIR=$LFS install
rm -v $LFS/usr/lib/liblzma.la
cd $LFS/sources
rm -rf xz-${1}
}
function 6.17-binutils(){
cd $LFS/sources
tar --use-compress-program=pixz -xf binutils-${1}.tar.xz
cd binutils-${1}
sed '6009s/$add_dir//' -i ltmain.sh
mkdir -v build
cd build
../configure \
--prefix=/usr \
--build=$(../config.guess) \
--host=$LFS_TGT \
--disable-nls \
--enable-shared \
--enable-gprofng=no \
--disable-werror \
--enable-64-bit-bfd \
--enable-new-dtags \
--enable-default-hash-style=gnu
make
make DESTDIR=$LFS install
rm -v $LFS/usr/lib/lib{bfd,ctf,ctf-nobfd,opcodes,sframe}.{a,la}
cd $LFS/sources
rm -rf binutils-${1}
}
function 6.18-gcc(){
cd $LFS/sources
tar --use-compress-program=pixz -xf gcc-${1}.tar.xz
cd gcc-${1}
tar --use-compress-program=pixz -xf ../mpfr-4.2.1.tar.xz
mv -v mpfr-4.2.1 mpfr
tar --use-compress-program=pixz -xf ../gmp-6.3.0.tar.xz
mv -v gmp-6.3.0 gmp
tar --use-compress-program=pigz -xf ../mpc-1.3.1.tar.gz
mv -v mpc-1.3.1 mpc
sed -e '/m64=/s/lib64/lib/' \
-i.orig gcc/config/i386/t-linux64
sed '/thread_header =/s/@.*@/gthr-posix.h/' \
-i libgcc/Makefile.in libstdc++-v3/include/Makefile.in
mkdir build
cd build
../configure \
--build=$(../config.guess) \
--host=$LFS_TGT \
--target=$LFS_TGT \
LDFLAGS_FOR_TARGET=-L$PWD/$LFS_TGT/libgcc \
--prefix=/usr \
--with-build-sysroot=$LFS \
--enable-default-pie \
--enable-default-ssp \
--disable-nls \
--disable-multilib \
--disable-libatomic \
--disable-libgomp \
--disable-libquadmath \
--disable-libsanitizer \
--disable-libssp \
--disable-libvtv \
--enable-languages=c,c++
make
make DESTDIR=$LFS install
ln -sv gcc $LFS/usr/bin/cc
cd $LFS/sources
rm -rf gcc-${1}
}
function 7.3-prepare-filesystem(){
mkdir -pv $LFS/{dev,proc,sys,run}
mkdir /dev/pts
mount -t devpts devpts /dev/pts
/sbin/chroot /mnt/lfs /usr/bin/env -i HOME=/root TERM="$TERM" PATH=/usr/bin:/usr/sbin:/bin:/sbin /root/post-chroot
}
function 7.5-create-folders(){
cat << 'EOF' > $LFS/root/7.5-create-folders
#!/bin/bash
set -eux -o pipefail
rm -rf /dev/null
mknod -m 600 /dev/console c 5 1
mknod -m 666 /dev/null c 1 3
mkdir -pv /{boot,home,mnt,opt,srv}
mkdir -pv /etc/{opt,sysconfig}
mkdir -pv /lib/firmware
mkdir -pv /media/{floppy,cdrom}
mkdir -pv /usr/{,local/}{include,src}
mkdir -pv /usr/lib/locale
mkdir -pv /usr/local/{bin,lib,sbin}
mkdir -pv /usr/{,local/}share/{color,dict,doc,info,locale,man}
mkdir -pv /usr/{,local/}share/{misc,terminfo,zoneinfo}
mkdir -pv /usr/{,local/}share/man/man{1..8}
mkdir -pv /var/{cache,local,log,mail,opt,spool}
mkdir -pv /var/lib/{color,misc,locate}
ln -sfv /run /var/run
ln -sfv /run/lock /var/lock
install -dv -m 0750 /root
install -dv -m 1777 /tmp /var/tmp
EOF
}
function 7.6-create-symbolic-links(){
cat << 'EOF' > $LFS/root/7.6-create-symbolic-links
#!/bin/bash
set -eux -o pipefail
ln -sfv /proc/self/mounts /etc/mtab
cat > /etc/hosts << EOFa
127.0.0.1 localhost erminig
::1 localhost
EOFa
cat > /etc/passwd << EOFb
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/dev/null:/usr/bin/false
penn:x:3:3:penn:/var/lib/govel:/bin/bash
daemon:x:6:6:Daemon User:/dev/null:/usr/bin/false
messagebus:x:18:18:D-Bus Message Daemon User:/run/dbus:/usr/bin/false
uuidd:x:80:80:UUID Generation Daemon User:/dev/null:/usr/bin/false
nobody:x:65534:65534:Unprivileged User:/dev/null:/usr/bin/false
EOFb
cat > /etc/group << EOFc
root:x:0:
bin:x:1:daemon
sys:x:2:
penn:x:3:
tape:x:4:
tty:x:5:
daemon:x:6:
floppy:x:7:
disk:x:8:
lp:x:9:
dialout:x:10:
audio:x:11:
video:x:12:
utmp:x:13:
kmem:x:14:
cdrom:x:15:
adm:x:16:
messagebus:x:18:
input:x:24:
mail:x:34:
kvm:x:61:
uuidd:x:80:
wheel:x:97:
users:x:999:
nogroup:x:65534:
EOFc
localedef -i C -f UTF-8 C.UTF-8
echo "tester:x:101:101::/home/tester:/bin/bash" >> /etc/passwd
echo "tester:x:101:" >> /etc/group
install -o tester -d /home/tester
touch /var/log/{btmp,lastlog,faillog,wtmp}
chgrp -v utmp /var/log/lastlog
chmod -v 664 /var/log/lastlog
chmod -v 600 /var/log/btmp
EOF
}
function 7.7-gettext(){
cat << EOF > $LFS/root/7.7-gettext
#!/bin/bash
set -eux -o pipefail
cd /sources
tar -xf gettext-0.22.5.tar.xz
cd gettext-0.22.5
./configure --disable-shared
make
cp -v gettext-tools/src/{msgfmt,msgmerge,xgettext} /usr/bin
EOF
}
function 7.8-bison(){
cat << EOF > $LFS/root/7.8-bison
#!/bin/bash
set -eux -o pipefail
cd /sources
tar -xf bison-3.8.2.tar.xz
cd bison-3.8.2
./configure --prefix=/usr \
--docdir=/usr/share/doc/bison-3.8.2
make
make install
EOF
}
function 7.9-perl(){
cat << EOF > $LFS/root/7.9-perl
#!/bin/bash
set -eux -o pipefail
cd /sources
tar -xf perl-5.40.0.tar.xz
cd perl-5.40.0
sh Configure -des \
-D prefix=/usr \
-D vendorprefix=/usr \
-D useshrplib \
-D privlib=/usr/lib/perl5/5.40/core_perl \
-D archlib=/usr/lib/perl5/5.40/core_perl \
-D sitelib=/usr/lib/perl5/5.40/site_perl \
-D sitearch=/usr/lib/perl5/5.40/site_perl \
-D vendorlib=/usr/lib/perl5/5.40/vendor_perl \
-D vendorarch=/usr/lib/perl5/5.40/vendor_perl
make
make install
EOF
}
function 7.10-python(){
cat << EOF > $LFS/root/7.10-python
#!/bin/bash
set -eux -o pipefail
cd /sources
tar -xf Python-3.12.5.tar.xz
cd Python-3.12.5
./configure --prefix=/usr \
--enable-shared \
--without-ensurepip
make
make install
EOF
}
function 7.11-texinfo(){
cat << EOF > $LFS/root/7.11-texinfo
#!/bin/bash
set -eux -o pipefail
cd /sources
tar -xf texinfo-7.1.tar.xz
cd texinfo-7.1
./configure --prefix=/usr
make
make install
EOF
}
function 7.12-util-linux(){
cat << EOF > $LFS/root/7.12-util-linux
#!/bin/bash
set -eux -o pipefail
cd /sources
tar -xf util-linux-2.40.2.tar.xz
cd util-linux-2.40.2
mkdir -pv /var/lib/hwclock
./configure --libdir=/usr/lib \
--runstatedir=/run \
--disable-chfn-chsh \
--disable-login \
--disable-nologin \
--disable-su \
--disable-setpriv \
--disable-runuser \
--disable-pylibmount \
--disable-static \
--disable-liblastlog2 \
--without-python \
ADJTIME_PATH=/var/lib/hwclock/adjtime \
--docdir=/usr/share/doc/util-linux-2.40.2
make
make install
EOF
}
function 7.13-cleaning(){
cat << 'EOF' > $LFS/root/7.13-cleaning
#!/bin/bash
set -eux -o pipefail
rm -rf /usr/share/{info,man,doc}/*
find /usr/{lib,libexec} -name \*.la -delete
rm -rf /tools
EOF
}
function 8.3-man-pages(){
cat << 'EOF' > $LFS/root/8.3-man-pages
#!/bin/bash
set -eux -o pipefail
cd /sources
tar xf man-pages-6.9.1.tar.xz
cd man-pages-6.9.1
rm -v man3/crypt*
make prefix=/usr install
cd /sources
rm -rf man-pages-6.9.1
EOF
}
function 8.4-iana-etc(){
cat << 'EOF' > $LFS/root/8.4-iana-etc
#!/bin/bash
set -eux -o pipefail
cd /sources
tar xf iana-etc-20240806.tar.gz
cd iana-etc-20240806
cp services protocols /etc
cd /sources
rm -rf iana-etc-20240806
EOF
}
function 8.5-glibc(){
cat << 'EOF' > $LFS/root/8.5-glibc
#!/bin/bash
set -eux -o pipefail
cd /sources
tar xf glibc-2.40.tar.xz
cd glibc-2.40
patch -Np1 -i ../glibc-2.40-fhs-1.patch
mkdir 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
touch /etc/ld.so.conf
sed '/test-installation/s@$(PERL)@echo not running@' -i ../Makefile
make install
sed '/RTLDLIST=/s@/usr@@g' -i /usr/bin/ldd
localedef -i C -f UTF-8 C.UTF-8
localedef -i cs_CZ -f UTF-8 cs_CZ.UTF-8
localedef -i de_DE -f ISO-8859-1 de_DE
localedef -i de_DE@euro -f ISO-8859-15 de_DE@euro
localedef -i de_DE -f UTF-8 de_DE.UTF-8
localedef -i el_GR -f ISO-8859-7 el_GR
localedef -i en_GB -f ISO-8859-1 en_GB
localedef -i en_GB -f UTF-8 en_GB.UTF-8
localedef -i en_HK -f ISO-8859-1 en_HK
localedef -i en_PH -f ISO-8859-1 en_PH
localedef -i en_US -f ISO-8859-1 en_US
localedef -i en_US -f UTF-8 en_US.UTF-8
localedef -i es_ES -f ISO-8859-15 es_ES@euro
localedef -i es_MX -f ISO-8859-1 es_MX
localedef -i fa_IR -f UTF-8 fa_IR
localedef -i fr_FR -f ISO-8859-1 fr_FR
localedef -i fr_FR@euro -f ISO-8859-15 fr_FR@euro
localedef -i fr_FR -f UTF-8 fr_FR.UTF-8
localedef -i is_IS -f ISO-8859-1 is_IS
localedef -i is_IS -f UTF-8 is_IS.UTF-8
localedef -i it_IT -f ISO-8859-1 it_IT
localedef -i it_IT -f ISO-8859-15 it_IT@euro
localedef -i it_IT -f UTF-8 it_IT.UTF-8
localedef -i ja_JP -f EUC-JP ja_JP
localedef -i ja_JP -f SHIFT_JIS ja_JP.SJIS 2> /dev/null || true
localedef -i ja_JP -f UTF-8 ja_JP.UTF-8
localedef -i nl_NL@euro -f ISO-8859-15 nl_NL@euro
localedef -i ru_RU -f KOI8-R ru_RU.KOI8-R
localedef -i ru_RU -f UTF-8 ru_RU.UTF-8
localedef -i se_NO -f UTF-8 se_NO.UTF-8
localedef -i ta_IN -f UTF-8 ta_IN.UTF-8
localedef -i tr_TR -f UTF-8 tr_TR.UTF-8
localedef -i zh_CN -f GB18030 zh_CN.GB18030
localedef -i zh_HK -f BIG5-HKSCS zh_HK.BIG5-HKSCS
localedef -i zh_TW -f UTF-8 zh_TW.UTF-8
make localedata/install-locales
cd /sources
rm -rf glibc-2.40
cat > /etc/nsswitch.conf << "EOFa"
# 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
EOFa
cat > /etc/ld.so.conf << "EOFb"
# Begin /etc/ld.so.conf
/usr/local/lib
/opt/lib
EOFb
cat >> /etc/ld.so.conf << "EOFc"
# Add an include directory
include /etc/ld.so.conf.d/*.conf
EOFc
mkdir -pv /etc/ld.so.conf.d
EOF
}
function 8.6-zlib(){
cat << 'EOF' > $LFS/root/8.6-zlib
#!/bin/bash
set -eux -o pipefail
cd /sources
tar xf zlib-1.3.1.tar.gz
cd zlib-1.3.1
./configure --prefix=/usr
make
make install
rm -fv /usr/lib/libz.a
cd /sources
rm -rf zlib-1.3.1
EOF
}
function 8.7-bzip2(){
cat << 'EOF' > $LFS/root/8.7-bzip2
#!/bin/bash
set -eux -o pipefail
cd /sources
tar xf bzip2-1.0.8.tar.gz
cd bzip2-1.0.8
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 -sfv 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 /sources
rm -rf bzip2-1.0.8
EOF
}
function 8.8-xz(){
cat << 'EOF' > $LFS/root/8.8-xz
#!/bin/bash
set -eux -o pipefail
cd /sources
tar -xf xz-5.6.2.tar.xz
cd xz-5.6.2
./configure --prefix=/usr \
--disable-static \
--docdir=/usr/share/doc/xz-5.6.2
make
make install
cd /sources
rm -rf xz-5.6.2
EOF
}
function 8.9-lz4(){
cat << 'EOF' > $LFS/root/8.9-lz4
#!/bin/bash
set -eux -o pipefail
cd /sources
tar xf lz4-1.10.0.tar.gz
cd lz4-1.10.0
make BUILD_STATIC=no PREFIX=/usr
make BUILD_STATIC=no PREFIX=/usr install
cd /sources
rm -rf lz4-1.10.0
EOF
}
function 8.10-zstd(){
cat << 'EOF' > $LFS/root/8.10-zstd
#!/bin/bash
set -eux -o pipefail
cd /sources
tar xf zstd-1.5.6.tar.gz
cd zstd-1.5.6
make prefix=/usr
make prefix=/usr install
rm -v /usr/lib/libzstd.a
cd /sources
rm -rf zstd-1.5.6
EOF
}
function 8.11-file(){
cat << 'EOF' > $LFS/root/8.11-file
#!/bin/bash
set -eux -o pipefail
cd /sources
tar -xf file-5.45.tar.gz
cd file-5.45
./configure --prefix=/usr
make
make install
cd /sources
rm -rf file-5.45
EOF
}
function 8.12-readline(){
cat << 'EOF' > $LFS/root/8.12-readline
#!/bin/bash
set -eux -o pipefail
cd /sources
tar -xf readline-8.2.13.tar.gz
cd readline-8.2.13
sed -i '/MV.*old/d' Makefile.in
sed -i '/{OLDSUFF}/c:' support/shlib-install
sed -i 's/-Wl,-rpath,[^ ]*//' support/shobj-conf
./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 /sources
rm -rf readline-8.2.13
EOF
}
function 8.13-m4(){
cat << 'EOF' > $LFS/root/8.13-m4
#!/bin/bash
set -eux -o pipefail
cd /sources
tar xf m4-1.4.19.tar.xz
cd m4-1.4.19
./configure --prefix=/usr
make
make install
cd /sources
rm -rf m4-1.4.19
EOF
}
function 8.14-bc(){
cat << 'EOF' > $LFS/root/8.14-bc
#!/bin/bash
set -eux -o pipefail
cd /sources
tar -xf bc-6.7.6.tar.xz
cd bc-6.7.6
CC=gcc ./configure --prefix=/usr -G -O3 -r
make
make install
cd /sources
rm -rf bc-6.7.6
EOF
}
function 8.15-flex(){
cat << 'EOF' > $LFS/root/8.15-flex
#!/bin/bash
set -eux -o pipefail
cd /sources
tar -xf flex-2.6.4.tar.gz
cd flex-2.6.4
./configure --prefix=/usr \
--docdir=/usr/share/doc/flex-2.6.4 \
--disable-static
make
make install
ln -sv flex /usr/bin/lex
ln -sv flex.1 /usr/share/man/man1/lex.1
cd /sources
rm -rf flex-2.6.4
EOF
}
function 8.16-tcl(){
cat << 'EOF' > $LFS/root/8.16-tcl
#!/bin/bash
set -eux -o pipefail
cd /sources
tar xf tcl8.6.14-src.tar.gz
cd tcl8.6.14
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
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 /sources
rm -rf tcl8.6.14
EOF
}
function 8.17-expect(){
cat << 'EOF' > $LFS/root/8.17-expect
#!/bin/bash
set -eux -o pipefail
cd /sources
tar -xf expect5.45.4.tar.gz
cd expect5.45.4
python3 -c 'from pty import spawn; spawn(["echo", "ok"])'
patch -Np1 -i ../expect-5.45.4-gcc14-1.patch
./configure --prefix=/usr \
--with-tcl=/usr/lib \
--enable-shared \
--disable-rpath \
--mandir=/usr/share/man \
--with-tclinclude=/usr/include
make
make install
ln -svf expect5.45.4/libexpect5.45.4.so /usr/lib
cd /sources
rm -rf expect5.45.4
EOF
}
function 8.18-dejagnu(){
cat << 'EOF' > $LFS/root/8.18-dejagnu
#!/bin/bash
set -eux -o pipefail
cd /sources
tar -xf dejagnu-1.6.3.tar.gz
cd dejagnu-1.6.3
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
cd /sources
rm -rf dejagnu-1.6.3
EOF
}
function 8.19-pkgconf(){
cat << 'EOF' > $LFS/root/8.19-pkgconf
#!/bin/bash
set -eux -o pipefail
cd /sources
tar -xf pkgconf-2.3.0.tar.xz
cd pkgconf-2.3.0
./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 /sources
rm -rf pkgconf-2.3.0
EOF
}
function 8.20-binutils(){
cat << 'EOF' > $LFS/root/8.20-binutils
#!/bin/bash
set -eux -o pipefail
cd /sources
tar -xf binutils-2.43.1.tar.xz
cd binutils-2.43.1
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
make tooldir=/usr install
rm -fv /usr/lib/lib{bfd,ctf,ctf-nobfd,gprofng,opcodes,sframe}.a
cd /sources
rm -rf binutils-2.43.1
EOF
}
function 8.21-gmp(){
cat << 'EOF' > $LFS/root/8.21-gmp
#!/bin/bash
set -eux -o pipefail
cd /sources
tar -xf gmp-6.3.0.tar.xz
cd gmp-6.3.0
./configure --prefix=/usr \
--enable-cxx \
--disable-static \
--docdir=/usr/share/doc/gmp-6.3.0
make
make install
cd /sources
rm -rf gmp-6.3.0
EOF
}
function 8.22-mpfr(){
cat << 'EOF' > $LFS/root/8.22-mpfr
#!/bin/bash
set -eux -o pipefail
cd /sources
tar -xf mpfr-4.2.1.tar.xz
cd mpfr-4.2.1
./configure --prefix=/usr \
--disable-static \
--enable-thread-safe \
--docdir=/usr/share/doc/mpfr-4.2.1
make
make install
cd /sources
rm -rf mpfr-4.2.1
EOF
}
function 8.23-mpc(){
cat << 'EOF' > $LFS/root/8.23-mpc
#!/bin/bash
set -eux -o pipefail
cd /sources
tar -xf mpc-1.3.1.tar.gz
cd mpc-1.3.1
./configure --prefix=/usr \
--disable-static \
--docdir=/usr/share/doc/mpc-1.3.1
make
make install
cd /sources
rm -rf mpc-1.3.1
EOF
}
function 8.24-attr(){
cat << 'EOF' > $LFS/root/8.24-attr
#!/bin/bash
set -eux -o pipefail
cd /sources
tar -xf attr-2.5.2.tar.gz
cd attr-2.5.2
./configure --prefix=/usr \
--disable-static \
--sysconfdir=/etc \
--docdir=/usr/share/doc/attr-2.5.2
make
make install
cd /sources
rm -rf attr-2.5.2
EOF
}
function 8.25-acl(){
cat << 'EOF' > $LFS/root/8.25-acl
#!/bin/bash
set -eux -o pipefail
cd /sources
tar -xf acl-2.3.2.tar.xz
cd acl-2.3.2
./configure --prefix=/usr \
--disable-static \
--docdir=/usr/share/doc/acl-2.3.2
make
make install
cd /sources
rm -rf acl-2.3.2
EOF
}
function 8.26-libcap(){
cat << 'EOF' > $LFS/root/8.26-libcap
#!/bin/bash
set -eux -o pipefail
cd /sources
tar -xf libcap-2.70.tar.xz
cd libcap-2.70
sed -i '/install -m.*STA/d' libcap/Makefile
make prefix=/usr lib=lib
make prefix=/usr lib=lib install
cd /sources
rm -rf libcap-2.70
EOF
}
function 8.27-libxcrypt(){
cat << 'EOF' > $LFS/root/8.27-libxcrypt
#!/bin/bash
set -eux -o pipefail
cd /sources
tar -xf libxcrypt-4.4.36.tar.xz
cd libxcrypt-4.4.36
./configure --prefix=/usr \
--enable-hashes=strong,glibc \
--enable-obsolete-api=no \
--disable-static \
--disable-failure-tokens
make
make install
cd /sources
rm -rf libxcrypt-4.4.36
EOF
}
function 8.28-shadow(){
cat << 'EOF' > $LFS/root/8.28-shadow
#!/bin/bash
set -eux -o pipefail
cd /sources
tar -xf shadow-4.16.0.tar.xz
cd shadow-4.16.0
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
pwconv
grpconv
mkdir -p /etc/default
useradd -D --gid 999
cd /sources
rm -rf shadow-4.16.0
EOF
}
function 8.29-gcc(){
cat << 'EOF' > $LFS/root/8.29-gcc
#!/bin/bash
set -eux -o pipefail
cd /sources
tar -xf gcc-14.2.0.tar.xz
cd gcc-14.2.0
sed -e '/m64=/s/lib64/lib/' \
-i.orig gcc/config/i386/t-linux64
mkdir 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
make install
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 'int main(){}' > dummy.c
cc dummy.c -v -Wl,--verbose &> dummy.log
readelf -l a.out | grep ': /lib'
grep -E -o '/usr/lib.*/S?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
cd /sources
rm -rf gcc-14.2.0
EOF
}
function 8.30-ncurses(){
cat << 'EOF' > $LFS/root/8.30-ncurses
#!/bin/bash
set -eux -o pipefail
cd /sources
tar -xf ncurses-6.5.tar.gz
cd ncurses-6.5
./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 /sources
rm -rf ncurses-6.5
EOF
}
function 8.31-sed(){
cat << 'EOF' > $LFS/root/8.31-sed
#!/bin/bash
set -eux -o pipefail
cd /sources
tar -xf sed-4.9.tar.xz
cd sed-4.9
./configure --prefix=/usr
make
make install
cd /sources
rm -rf sed-4.9
EOF
}
function 8.32-psmisc(){
cat << 'EOF' > $LFS/root/8.32-psmisc
#!/bin/bash
set -eux -o pipefail
cd /sources
tar -xf psmisc-23.7.tar.xz
cd psmisc-23.7
./configure --prefix=/usr
make
make install
cd /sources
rm -rf psmisc-23.7
EOF
}
function 8.33-gettext(){
cat << 'EOF' > $LFS/root/8.33-gettext
#!/bin/bash
cd /sources
tar -xf gettext-0.22.5.tar.xz
cd gettext-0.22.5
./configure --prefix=/usr \
--disable-static \
--docdir=/usr/share/doc/gettext-0.22.5
make
rm -rf /sources/gettext-0.22.5
set -eux -o pipefail
cd /sources
tar -xf gettext-0.22.5.tar.xz
cd gettext-0.22.5
./configure --prefix=/usr \
--disable-static \
--docdir=/usr/share/doc/gettext-0.22.5
make
make install
chmod -v 0755 /usr/lib/preloadable_libintl.so
cd /sources
rm -rf gettext-0.22.5
EOF
}
function 8.34-bison(){
cat << 'EOF' > $LFS/root/8.34-bison
#!/bin/bash
set -eux -o pipefail
cd /sources
tar -xf bison-3.8.2.tar.xz
cd bison-3.8.2
./configure --prefix=/usr --docdir=/usr/share/doc/bison-3.8.2
make
make install
cd /sources
rm -rf bison-3.8.2
EOF
}
function 8.35-grep(){
cat << 'EOF' > $LFS/root/8.35-grep
#!/bin/bash
set -eux -o pipefail
cd /sources
tar -xf grep-3.11.tar.xz
cd grep-3.11
sed -i "s/echo/#echo/" src/egrep.sh
./configure --prefix=/usr
make
make install
cd /sources
rm -rf grep-3.11
EOF
}
function 8.36-bash(){
cat << 'EOF' > $LFS/root/8.36-bash
#!/bin/bash
set -eux -o pipefail
cd /sources
tar -xf bash-5.2.32.tar.gz
cd bash-5.2.32
./configure --prefix=/usr \
--without-bash-malloc \
--with-installed-readline \
bash_cv_strtold_broken=no \
--docdir=/usr/share/doc/bash-5.2.32
make
make install
#exec /usr/bin/bash --login
cd /sources
rm -rf bash-5.2.32
EOF
}
function 8.37-libtool(){
cat << 'EOF' > $LFS/root/8.37-libtool
#!/bin/bash
set -eux -o pipefail
cd /sources
tar -xf libtool-2.4.7.tar.xz
cd libtool-2.4.7
./configure --prefix=/usr
make
make install
rm -fv /usr/lib/libltdl.a
cd /sources
rm -rf libtool-2.4.7
EOF
}
function 8.38-gdbm(){
cat << 'EOF' > $LFS/root/8.38-gdbm
#!/bin/bash
set -eux -o pipefail
cd /sources
tar -xf gdbm-1.24.tar.gz
cd gdbm-1.24
./configure --prefix=/usr \
--disable-static \
--enable-libgdbm-compat
make
make install
cd /sources
rm -rf gdbm-1.24
EOF
}
function 8.39-gperf(){
cat << 'EOF' > $LFS/root/8.39-gperf
#!/bin/bash
set -eux -o pipefail
cd /sources
tar -xf gperf-3.1.tar.gz
cd gperf-3.1
./configure --prefix=/usr --docdir=/usr/share/doc/gperf-3.1
make
make install
cd /sources
rm -rf gperf-3.1
EOF
}
function 8.40-expat(){
cat << 'EOF' > $LFS/root/8.40-expat
#!/bin/bash
set -eux -o pipefail
cd /sources
tar -xf expat-2.6.4.tar.xz
cd expat-2.6.4
./configure --prefix=/usr \
--disable-static \
--docdir=/usr/share/doc/expat-2.6.4
make
make install
cd /sources
rm -rf expat-2.6.4
EOF
}
function 8.41-inetutils(){
cat << 'EOF' > $LFS/root/8.41-inetutils
#!/bin/bash
set -eux -o pipefail
cd /sources
tar -xf inetutils-2.5.tar.xz
cd inetutils-2.5
sed -i 's/def HAVE_TERMCAP_TGETENT/ 1/' telnet/telnet.c
./configure --prefix=/usr \
--bindir=/usr/bin \
--localstatedir=/var \
--disable-logger \
--disable-whois \
--disable-rcp \
--disable-rexec \
--disable-rlogin \
--disable-rsh \
--disable-servers
make
make install
mv -v /usr/{,s}bin/ifconfig
cd /sources
rm -rf inetutils-2.5
EOF
}
function 8.42-less(){
cat << 'EOF' > $LFS/root/8.42-less
#!/bin/bash
set -eux -o pipefail
cd /sources
tar -xf less-661.tar.gz
cd less-661
./configure --prefix=/usr --sysconfdir=/etc
make
make install
cd /sources
rm -rf less-661
EOF
}
function 8.43-perl(){
cat << 'EOF' > $LFS/root/8.43-perl
#!/bin/bash
set -eux -o pipefail
cd /sources
tar -xf perl-5.40.0.tar.xz
cd perl-5.40.0
export BUILD_ZLIB=False
export BUILD_BZIP2=0
sh Configure -des \
-D prefix=/usr \
-D vendorprefix=/usr \
-D privlib=/usr/lib/perl5/5.40/core_perl \
-D archlib=/usr/lib/perl5/5.40/core_perl \
-D sitelib=/usr/lib/perl5/5.40/site_perl \
-D sitearch=/usr/lib/perl5/5.40/site_perl \
-D vendorlib=/usr/lib/perl5/5.40/vendor_perl \
-D vendorarch=/usr/lib/perl5/5.40/vendor_perl \
-D man1dir=/usr/share/man/man1 \
-D man3dir=/usr/share/man/man3 \
-D pager="/usr/bin/less -isR" \
-D useshrplib \
-D usethreads
make
make install
unset BUILD_ZLIB BUILD_BZIP2
cd /sources
rm -rf perl-5.40.0
EOF
}
function 8.44-xml-parser(){
cat << 'EOF' > $LFS/root/8.44-xml-parser
#!/bin/bash
set -eux -o pipefail
cd /sources
tar -xf XML-Parser-2.47.tar.gz
cd XML-Parser-2.47
perl Makefile.PL
make
make install
cd /sources
rm -rf XML-Parser-2.47
EOF
}
function 8.45-intltool(){
cat << 'EOF' > $LFS/root/8.45-intltool
#!/bin/bash
set -eux -o pipefail
cd /sources
tar -xf intltool-0.51.0.tar.gz
cd intltool-0.51.0
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
cd /sources
rm -rf intltool-0.51.0
EOF
}
function 8.46-autoconf(){
cat << 'EOF' > $LFS/root/8.46-autoconf
#!/bin/bash
set -eux -o pipefail
cd /sources
tar -xf autoconf-2.72.tar.xz
cd autoconf-2.72
./configure --prefix=/usr
make
make install
cd /sources
rm -rf autoconf-2.72
EOF
}
function 8.47-automake(){
cat << 'EOF' > $LFS/root/8.47-automake
#!/bin/bash
set -eux -o pipefail
cd /sources
tar -xf automake-1.17.tar.xz
cd automake-1.17
./configure --prefix=/usr --docdir=/usr/share/doc/automake-1.17
make
make install
cd /sources
rm -rf automake-1.17
EOF
}
function 8.48-openssl(){
cat << 'EOF' > $LFS/root/8.48-openssl
#!/bin/bash
set -eux -o pipefail
cd /sources
tar -xf openssl-3.3.1.tar.gz
cd openssl-3.3.1
./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-3.3.1
cd /sources
rm -rf openssl-3.3.1
EOF
}
function 8.49-kmod(){
cat << 'EOF' > $LFS/root/8.49-kmod
#!/bin/bash
set -eux -o pipefail
cd /sources
tar -xf kmod-33.tar.xz
cd kmod-33
./configure --prefix=/usr \
--sysconfdir=/etc \
--with-openssl \
--with-xz \
--with-zstd \
--with-zlib \
--disable-manpages
make
make install
for target in depmod insmod modinfo modprobe rmmod; do
ln -sfv ../bin/kmod /usr/sbin/$target
rm -fv /usr/bin/$target
done
cd /sources
rm -rf kmod-33
EOF
}
function 8.50-libelf(){
cat << 'EOF' > $LFS/root/8.50-libelf
#!/bin/bash
set -eux -o pipefail
cd /sources
tar -xf elfutils-0.191.tar.bz2
cd elfutils-0.191
./configure --prefix=/usr \
--disable-debuginfod \
--enable-libdebuginfod=dummy
make
make -C libelf install
install -vm644 config/libelf.pc /usr/lib/pkgconfig
rm /usr/lib/libelf.a
cd /sources
rm -rf elfutils-0.191
EOF
}
function 8.51-libffi(){
cat << 'EOF' > $LFS/root/8.51-libffi
#!/bin/bash
set -eux -o pipefail
cd /sources
tar -xf libffi-3.4.6.tar.gz
cd libffi-3.4.6
./configure --prefix=/usr \
--disable-static \
--with-gcc-arch=native
make
make install
cd /sources
rm -rf libffi-3.4.6
EOF
}
function 8.52-python(){
cat << 'EOF' > $LFS/root/8.52-python
#!/bin/bash
set -eux -o pipefail
cd /sources
tar -xf Python-3.12.5.tar.xz
cd Python-3.12.5
./configure --prefix=/usr \
--enable-shared \
--with-system-expat \
--enable-optimizations
make
make install
ln -s /usr/bin/python3 /usr/bin/python
cat > /etc/pip.conf << EOFa
[global]
root-user-action = ignore
disable-pip-version-check = true
EOFa
cat > /etc/pip.conf << EOFb
[global]
root-user-action = ignore
disable-pip-version-check = true
EOFb
cd /sources
rm -rf Python-3.12.5
EOF
}
function 8.53-flit-core(){
cat << 'EOF' > $LFS/root/8.53-flit-core
#!/bin/bash
set -eux -o pipefail
cd /sources
tar -xf flit_core-3.9.0.tar.gz
cd flit_core-3.9.0
pip3 wheel -w dist --no-cache-dir --no-build-isolation --no-deps $PWD
pip3 install --no-index --no-user --find-links dist flit_core
cd /sources
rm -rf flit_core-3.9.0
EOF
}
function 8.54-wheel(){
cat << 'EOF' > $LFS/root/8.54-wheel
#!/bin/bash
set -eux -o pipefail
cd /sources
tar -xf wheel-0.44.0.tar.gz
cd wheel-0.44.0
pip3 wheel -w dist --no-cache-dir --no-build-isolation --no-deps $PWD
pip3 install --no-index --find-links=dist wheel
cd /sources
rm -rf wheel-0.44.0
EOF
}
function 8.55-setuptools(){
cat << 'EOF' > $LFS/root/8.55-setuptools
#!/bin/bash
set -eux -o pipefail
cd /sources
tar -xf setuptools-72.2.0.tar.gz
cd setuptools-72.2.0
pip3 wheel -w dist --no-cache-dir --no-build-isolation --no-deps $PWD
pip3 install --no-index --find-links dist setuptools
cd /sources
rm -rf setuptools-72.2.0
EOF
}
function 8.56-ninja(){
cat << 'EOF' > $LFS/root/8.56-ninja
#!/bin/bash
set -eux -o pipefail
cd /sources
tar -xf ninja-1.12.1.tar.gz
cd ninja-1.12.1
export NINJAJOBS=4
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
cd /sources
rm -rf ninja-1.12.1
EOF
}
function 8.57-meson(){
cat << 'EOF' > $LFS/root/8.57-meson
#!/bin/bash
set -eux -o pipefail
cd /sources
tar -xf meson-1.5.1.tar.gz
cd meson-1.5.1
pip3 wheel -w dist --no-cache-dir --no-build-isolation --no-deps $PWD
pip3 install --no-index --find-links dist meson
install -vDm644 data/shell-completions/bash/meson /usr/share/bash-completion/completions/meson
install -vDm644 data/shell-completions/zsh/_meson /usr/share/zsh/site-functions/_meson
cd /sources
rm -rf meson-1.5.1
EOF
}
function 8.58-coreutils(){
cat << EOF > $LFS/root/8.58-coreutils
#!/bin/bash
set -eux -o pipefail
cd /sources
tar -xf coreutils-9.5.tar.xz
cd coreutils-9.5
patch -Np1 -i ../coreutils-9.5-i18n-2.patch
autoreconf -fiv
FORCE_UNSAFE_CONFIGURE=1 ./configure \
--prefix=/usr \
--enable-no-install-program=kill,uptime
make
make install
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
cd /sources
rm -rf coreutils-9.5
EOF
}
function 8.59-check(){
cat << 'EOF' > $LFS/root/8.59-check
#!/bin/bash
set -eux -o pipefail
cd /sources
tar -xf check-0.15.2.tar.gz
cd check-0.15.2
./configure --prefix=/usr --disable-static
make
make docdir=/usr/share/doc/check-0.15.2 install
cd /sources
rm -rf check-0.15.2
EOF
}
function 8.60-diffutils(){
cat << 'EOF' > $LFS/root/8.60-diffutils
#!/bin/bash
set -eux -o pipefail
cd /sources
tar -xf diffutils-3.10.tar.xz
cd diffutils-3.10
./configure --prefix=/usr
make
make install
cd /sources
rm -rf diffutils-3.10
EOF
}
function 8.61-gawk(){
cat << 'EOF' > $LFS/root/8.61-gawk
#!/bin/bash
set -eux -o pipefail
cd /sources
tar -xf gawk-5.3.0.tar.xz
cd gawk-5.3.0
sed -i 's/extras//' Makefile.in
./configure --prefix=/usr
make
rm -f /usr/bin/gawk-5.3.0
make install
ln -sv gawk.1 /usr/share/man/man1/awk.1
cd /sources
rm -rf gawk-5.3.0
EOF
}
function 8.62-findutils(){
cat << 'EOF' > $LFS/root/8.62-findutils
#!/bin/bash
set -eux -o pipefail
cd /sources
tar -xf findutils-4.10.0.tar.xz
cd findutils-4.10.0
./configure --prefix=/usr --localstatedir=/var/lib/locate
make
make install
cd /sources
rm -rf findutils-4.10.0
EOF
}
function 8.63-groff(){
cat << 'EOF' > $LFS/root/8.63-groff
#!/bin/bash
set -eux -o pipefail
cd /sources
tar -xf groff-1.23.0.tar.gz
cd groff-1.23.0
PAGE=A4 ./configure --prefix=/usr
make
make install
cd /sources
rm -rf groff-1.23.0
EOF
}
function 8.64-grub(){
cat << 'EOF' > $LFS/root/8.64-grub
#!/bin/bash
set -eux -o pipefail
cd /sources
tar -xf grub-2.12.tar.xz
cd grub-2.12
unset {C,CPP,CXX,LD}FLAGS
echo depends bli part_gpt > grub-core/extra_deps.lst
./configure --prefix=/usr \
--sysconfdir=/etc \
--disable-efiemu \
--disable-werror
make
make install
mv -v /etc/bash_completion.d/grub /usr/share/bash-completion/completions
cd /sources
rm -rf grub-2.12
EOF
}
function 8.65-gzip(){
cat << 'EOF' > $LFS/root/8.65-gzip
#!/bin/bash
set -eux -o pipefail
cd /sources
tar -xf gzip-1.13.tar.xz
cd gzip-1.13
./configure --prefix=/usr
make
make install
cd /sources
rm -rf gzip-1.13
EOF
}
function 8.66-iproute(){
cat << 'EOF' > $LFS/root/8.66-iproute
#!/bin/bash
set -eux -o pipefail
cd /sources
tar -xf iproute2-6.10.0.tar.xz
cd iproute2-6.10.0
sed -i /ARPD/d Makefile
rm -fv man/man8/arpd.8
make NETNS_RUN_DIR=/run/netns
make SBINDIR=/usr/sbin install
cd /sources
rm -rf iproute2-6.10.0
EOF
}
function 8.67-kbd(){
cat << 'EOF' > $LFS/root/8.67-kbd
#!/bin/bash
set -eux -o pipefail
cd /sources
tar -xf kbd-2.6.4.tar.xz
cd kbd-2.6.4
patch -Np1 -i ../kbd-2.6.4-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
cd /sources
rm -rf kbd-2.6.4
EOF
}
function 8.68-libpipeline(){
cat << 'EOF' > $LFS/root/8.68-libpipeline
#!/bin/bash
set -eux -o pipefail
cd /sources
tar -xf libpipeline-1.5.7.tar.gz
cd libpipeline-1.5.7
./configure --prefix=/usr
make
make install
cd /sources
rm -rf libpipeline-1.5.7
EOF
}
function 8.69-make(){
cat << 'EOF' > $LFS/root/8.69-make
#!/bin/bash
set -eux -o pipefail
cd /sources
tar -xf make-4.4.1.tar.gz
cd make-4.4.1
./configure --prefix=/usr
make
make install
cd /sources
rm -rf make-4.4.1
EOF
}
function 8.70-patch(){
cat << 'EOF' > $LFS/root/8.70-patch
#!/bin/bash
set -eux -o pipefail
cd /sources
tar -xf patch-2.7.6.tar.xz
cd patch-2.7.6
./configure --prefix=/usr
make
make install
cd /sources
rm -rf patch-2.7.6
EOF
}
function 8.71-tar(){
cat << 'EOF' > $LFS/root/8.71-tar
#!/bin/bash
set -eux -o pipefail
cd /sources
tar -xf tar-1.35.tar.xz
cd tar-1.35
FORCE_UNSAFE_CONFIGURE=1 \
./configure --prefix=/usr
make
make install
cd /sources
rm -rf tar-1.35
EOF
}
function 8.72-texinfo(){
cat << 'EOF' > $LFS/root/8.72-texinfo
#!/bin/bash
set -eux -o pipefail
cd /sources
tar -xf texinfo-7.1.tar.xz
cd texinfo-7.1
./configure --prefix=/usr
make
make install
cd /sources
rm -rf texinfo-7.1
EOF
}
function 8.73-vim(){
cat << 'EOF' > $LFS/root/8.73-vim
#!/bin/bash
set -eux -o pipefail
cd /sources
tar -xf vim-9.1.0660.tar.gz
cd vim-9.1.0660
echo '#define SYS_VIMRC_FILE "/etc/vimrc"' >> src/feature.h
./configure --prefix=/usr
make
make install
cat > /etc/vimrc << "EOFa"
" Début de /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
" Fin de /etc/vimrc
EOFa
cd /sources
rm -rf vim-9.1.0660
EOF
}
function 8.74-markupsafe(){
cat << 'EOF' > $LFS/root/8.74-markupsafe
#!/bin/bash
set -eux -o pipefail
cd /sources
tar -xf MarkupSafe-2.1.5.tar.gz
cd MarkupSafe-2.1.5
pip3 wheel -w dist --no-cache-dir --no-build-isolation --no-deps $PWD
pip3 install --no-index --no-user --find-links dist Markupsafe
cd /sources
rm -rf MarkupSafe-2.1.5
EOF
}
function 8.75-jinja2(){
cat << 'EOF' > $LFS/root/8.75-jinja2
#!/bin/bash
set -eux -o pipefail
cd /sources
tar -xf jinja2-3.1.4.tar.gz
cd jinja2-3.1.4
pip3 wheel -w dist --no-cache-dir --no-build-isolation --no-deps $PWD
pip3 install --no-index --no-user --find-links dist Jinja2
cd /sources
rm -rf jinja2-3.1.4
EOF
}
function 8.76-udev(){
cat << 'EOF' > $LFS/root/8.76-udev
#!/bin/bash
set -eux -o pipefail
cd /sources
tar -xf systemd-256.4.tar.gz
cd systemd-256.4
sed -i -e 's/GROUP="render"/GROUP="video"/' \
-e 's/GROUP="sgx", //' rules.d/50-udev-default.rules.in
sed '/systemd-sysctl/s/^/#/' -i rules.d/99-systemd.rules.in
sed '/NETWORK_DIRS/s/systemd/udev/' -i src/basic/path-lookup.h
mkdir -p build
cd build
meson setup .. \
--prefix=/usr \
--buildtype=release \
-D mode=release \
-D dev-kvm-mode=0660 \
-D link-udev-shared=false \
-D logind=false \
-D vconsole=false
export udev_helpers=$(grep "'name' :" ../src/udev/meson.build | \
awk '{print $3}' | tr -d ",'" | grep -v 'udevadm')
ninja udevadm systemd-hwdb \
$(ninja -n | grep -Eo '(src/(lib)?udev|rules.d|hwdb.d)/[^ ]*') \
$(realpath libudev.so --relative-to .) \
$udev_helpers
install -vm755 -d {/usr/lib,/etc}/udev/{hwdb.d,rules.d,network}
install -vm755 -d /usr/{lib,share}/pkgconfig
install -vm755 udevadm /usr/bin/
install -vm755 systemd-hwdb /usr/bin/udev-hwdb
ln -svfn ../bin/udevadm /usr/sbin/udevd
cp -av libudev.so{,*[0-9]} /usr/lib/
install -vm644 ../src/libudev/libudev.h /usr/include/
install -vm644 src/libudev/*.pc /usr/lib/pkgconfig/
install -vm644 src/udev/*.pc /usr/share/pkgconfig/
install -vm644 ../src/udev/udev.conf /etc/udev/
install -vm644 rules.d/* ../rules.d/README /usr/lib/udev/rules.d/
install -vm644 $(find ../rules.d/*.rules \
-not -name '*power-switch*') /usr/lib/udev/rules.d/
install -vm644 hwdb.d/* ../hwdb.d/{*.hwdb,README} /usr/lib/udev/hwdb.d/
install -vm755 $udev_helpers /usr/lib/udev
install -vm644 ../network/99-default.link /usr/lib/udev/network
tar -xvf ../../udev-lfs-20230818.tar.xz
make -f udev-lfs-20230818/Makefile.lfs install
unset udev_helpers
cd /sources
rm -rf systemd-256.4
EOF
}
function 8.77-man-db(){
cat << 'EOF' > $LFS/root/8.77-man-db
#!/bin/bash
set -eux -o pipefail
cd /sources
tar -xf man-db-2.12.1.tar.xz
cd man-db-2.12.1
./configure --prefix=/usr \
--docdir=/usr/share/doc/man-db-2.12.1 \
--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
cd /sources
rm -rf man-db-2.12.1
EOF
}
function 8.78-procps-ng(){
cat << 'EOF' > $LFS/root/8.78-procps-ng
#!/bin/bash
set -eux -o pipefail
cd /sources
tar -xf procps-ng-4.0.4.tar.xz
cd procps-ng-4.0.4
./configure --prefix=/usr \
--docdir=/usr/share/doc/procps-ng-4.0.4 \
--disable-static \
--disable-kill
make
make install
cd /sources
rm -rf procps-ng-4.0.4
EOF
}
function 8.79-util-linux(){
cat << 'EOF' > $LFS/root/8.79-util-linux
#!/bin/bash
set -eux -o pipefail
cd /sources
tar -xf util-linux-2.40.2.tar.xz
cd util-linux-2.40.2
./configure --bindir=/usr/bin \
--libdir=/usr/lib \
--runstatedir=/run \
--sbindir=/usr/sbin \
--disable-chfn-chsh \
--disable-login \
--disable-nologin \
--disable-su \
--disable-setpriv \
--disable-runuser \
--disable-pylibmount \
--disable-liblastlog2 \
--disable-static \
--without-python \
--without-systemd \
--without-systemdsystemunitdir \
ADJTIME_PATH=/var/lib/hwclock/adjtime \
--docdir=/usr/share/doc/util-linux-2.40.2
make
make install
cd /sources
rm -rf util-linux-2.40.2
EOF
}
function 8.80-e2fsprogs(){
cat << 'EOF' > $LFS/root/8.80-e2fsprogs
#!/bin/bash
set -eux -o pipefail
cd /sources
tar -xf e2fsprogs-1.47.1.tar.gz
cd e2fsprogs-1.47.1
mkdir -v build
cd build
../configure --prefix=/usr \
--sysconfdir=/etc \
--enable-elf-shlibs \
--disable-libblkid \
--disable-libuuid \
--disable-uuidd \
--disable-fsck
make
make install
rm -fv /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
cd /sources
rm -rf e2fsprogs-1.47.1
EOF
}
function 8.81-sysklogd(){
cat << 'EOF' > $LFS/root/8.81-sysklogd
#!/bin/bash
set -eux -o pipefail
cd /sources
tar -xf sysklogd-2.6.1.tar.gz
cd sysklogd-2.6.1
./configure --prefix=/usr \
--sysconfdir=/etc \
--runstatedir=/run \
--without-logger
make
make install
cat > /etc/syslog.conf << EOFa
# Début de /etc/syslog.conf
auth,authpriv.* -/var/log/auth.log
*.*;auth,authpriv.none -/var/log/sys.log
daemon.* -/var/log/daemon.log
kern.* -/var/log/kern.log
mail.* -/var/log/mail.log
user.* -/var/log/user.log
*.emerg *
# Ne pas ouvrir de ports internet.
secure_mode 2
# Fin de /etc/syslog.conf
EOFa
cd /sources
rm -rf sysklogd-2.6.1
EOF
}
function 8.82-libpsl(){
cat << 'EOF' > $LFS/root/8.82-libpsl
#!/bin/bash
set -eux -o pipefail
cd /sources
tar xf libpsl-0.21.5.tar.gz
cd libpsl-0.21.5
mkdir build
cd build
meson setup --prefix=/usr --buildtype=release
ninja
ninja install
cd /sources
rm -rf libpsl-0.21.5
EOF
}
function 8.83-curl(){
cat << 'EOF' > $LFS/root/8.83-curl
#!/bin/bash
set -eux -o pipefail
cd /sources
tar -xf curl-8.11.0.tar.xz
cd curl-8.11.0
./configure --prefix=/usr \
--disable-static \
--with-openssl \
--with-ca-path=/etc/ssl/certs
make
make install
cd /sources
rm -rf curl-8.11.0
EOF
}
function 8.84-cpio(){
cat << 'EOF' > $LFS/root/8.84-cpio
#!/bin/bash
set -eux -o pipefail
cd /sources
tar -xf cpio-2.15.tar.bz2
cd cpio-2.15
./configure --prefix=/usr \
--enable-mt \
--with-rmt=/usr/libexec/rmt
make
make install
cd /sources
rm -rf cpio-2.15
EOF
}
function 8.85-dracut(){
cat << 'EOF' > $LFS/root/8.85-dracut
#!/bin/bash
set -eux -o pipefail
cd /sources
tar xf dracut-105.tar.gz
cd dracut-ng-105
./configure --prefix=/usr --disable-documentation
make
make install
cd /sources
rm -rf dracut-059
EOF
}
function 8.86-fakeroot(){
cat << 'EOF' > $LFS/root/8.86-fakeroot
#!/bin/bash
set -eux -o pipefail
cd /sources
tar xf fakeroot-1.36.tar.gz
cd fakeroot-1.36
./configure --prefix=/usr
make
make install
libtool --finish /usr/lib
cd /sources
rm -rf fakeroot-1.36
EOF
}
function 8.87-erminig-tools(){
cat << 'EOF' > $LFS/root/8.87-erminig-tools
#!/bin/bash
set -eux -o pipefail
install -d -o 3 -g 3 /usr/src
install -d -o 3 -g 3 /var/{cache,lib,log,tmp}/govel
install -d /var/cache/keo
EOF
}
function post-chroot(){
7.5-create-folders
7.6-create-symbolic-links
7.7-gettext
7.8-bison
7.9-perl
7.10-python
7.11-texinfo
7.12-util-linux
7.13-cleaning
8.3-man-pages
8.4-iana-etc
8.5-glibc
8.6-zlib
8.7-bzip2
8.8-xz
8.9-lz4
8.10-zstd
8.11-file
8.12-readline
8.13-m4
8.14-bc
8.15-flex
8.16-tcl
8.17-expect
8.18-dejagnu
8.19-pkgconf
8.20-binutils
8.21-gmp
8.22-mpfr
8.23-mpc
8.24-attr
8.25-acl
8.26-libcap
8.27-libxcrypt
8.28-shadow
8.29-gcc
8.30-ncurses
8.31-sed
8.32-psmisc
8.33-gettext
8.34-bison
8.35-grep
8.36-bash
8.37-libtool
8.38-gdbm
8.39-gperf
8.40-expat
8.41-inetutils
8.42-less
8.43-perl
8.44-xml-parser
8.45-intltool
8.46-autoconf
8.47-automake
8.48-openssl
8.49-kmod
8.50-libelf
8.51-libffi
8.52-python
8.53-flit-core
8.54-wheel
8.55-setuptools
8.56-ninja
8.57-meson
8.58-coreutils
8.59-check
8.60-diffutils
8.61-gawk
8.62-findutils
8.63-groff
8.64-grub
8.65-gzip
8.66-iproute
8.67-kbd
8.68-libpipeline
8.69-make
8.70-patch
8.71-tar
8.72-texinfo
8.73-vim
8.74-markupsafe
8.75-jinja2
8.76-udev
8.77-man-db
8.78-procps-ng
8.79-util-linux
8.80-e2fsprogs
8.81-sysklogd
8.82-libpsl
8.83-curl
8.84-cpio
8.85-dracut
8.86-fakeroot
8.87-erminig-tools
cat << 'EOF' > $LFS/root/post-chroot
#!/bin/bash
set -eux -o pipefail
bash /root/7.5-create-folders
bash /root/7.6-create-symbolic-links
bash /root/7.7-gettext
bash /root/7.8-bison
bash /root/7.9-perl
bash /root/7.10-python
bash /root/7.11-texinfo
bash /root/7.12-util-linux
bash /root/7.13-cleaning
#bash /root/8.3-man-pages
bash /root/8.4-iana-etc
bash /root/8.5-glibc
bash /root/8.6-zlib
bash /root/8.7-bzip2
bash /root/8.8-xz
bash /root/8.9-lz4
bash /root/8.10-zstd
bash /root/8.11-file
bash /root/8.12-readline
bash /root/8.13-m4
bash /root/8.14-bc
bash /root/8.15-flex
bash /root/8.16-tcl
bash /root/8.17-expect
bash /root/8.18-dejagnu
bash /root/8.19-pkgconf
bash /root/8.20-binutils
bash /root/8.21-gmp
bash /root/8.22-mpfr
bash /root/8.23-mpc
bash /root/8.24-attr
bash /root/8.25-acl
bash /root/8.26-libcap
bash /root/8.27-libxcrypt
bash /root/8.28-shadow
bash /root/8.29-gcc
bash /root/8.30-ncurses
bash /root/8.31-sed
bash /root/8.32-psmisc
bash /root/8.33-gettext
bash /root/8.34-bison
bash /root/8.35-grep
bash /root/8.36-bash
bash /root/8.37-libtool
bash /root/8.38-gdbm
bash /root/8.39-gperf
bash /root/8.40-expat
#bash /root/8.41-inetutils
bash /root/8.42-less
bash /root/8.43-perl
bash /root/8.44-xml-parser
bash /root/8.45-intltool
bash /root/8.46-autoconf
bash /root/8.47-automake
bash /root/8.48-openssl
bash /root/8.49-kmod
bash /root/8.50-libelf
bash /root/8.51-libffi
bash /root/8.52-python
bash /root/8.53-flit-core
bash /root/8.54-wheel
bash /root/8.55-setuptools
bash /root/8.56-ninja
bash /root/8.57-meson
bash /root/8.58-coreutils
bash /root/8.59-check
bash /root/8.60-diffutils
bash /root/8.61-gawk
bash /root/8.62-findutils
bash /root/8.63-groff
bash /root/8.64-grub
bash /root/8.65-gzip
bash /root/8.66-iproute
bash /root/8.67-kbd
bash /root/8.68-libpipeline
bash /root/8.69-make
bash /root/8.70-patch
bash /root/8.71-tar
bash /root/8.72-texinfo
bash /root/8.73-vim
bash /root/8.74-markupsafe
bash /root/8.75-jinja2
#bash /root/8.76-udev
#bash /root/8.77-man-db
#bash /root/8.78-procps-ng
#bash /root/8.79-util-linux
#bash /root/8.80-e2fsprogs
#bash /root/8.81-sysklogd
#bash /root/8.82-libpsl
#bash /root/8.83-curl
#bash /root/8.84-cpio
#bash /root/8.85-dracut
#bash /root/8.86-fakeroot
#bash /root/8.87-erminig-tools
EOF
}
function main(){
echo "Get sources"
3.1-get_sources
echo "Folder structure"
4.2-folder_structure
#4.4-configure_environment
echo "Binutils"
5.2-binutils 2.43.1
5.3-gcc 14.2.0
5.4-linux_headers 6.10.5
5.5-glibc 2.40
5.6-libstdcpp 14.2.0
6.2-m4 1.4.19
6.3-ncurses 6.5
6.4-bash 5.2.32
6.5-coreutils 9.5
6.6-diffutils 3.10
6.7-file 5.45
6.8-findutils 4.10.0
6.9-gawk 5.3.0
6.10-grep 3.11
6.11-gzip 1.13
6.12-make 4.4.1
6.13-patch 2.7.6
6.14-sed 4.9
6.15-tar 1.35
6.16-xz 5.6.2
6.17-binutils 2.43.1
6.18-gcc 14.2.0
7.3-prepare-filesystem
post-chroot
}
main