From 59f094cc23628ea9132dfa085c34eed7f1fc8d09 Mon Sep 17 00:00:00 2001 From: Kyle Glaws Date: Sat, 26 Mar 2022 17:55:10 -0400 Subject: [PATCH] working on massive rewrite --- clean_img.sh | 14 +- config.sh | 37 ++ config/global.sh | 38 -- config/user.sh | 31 - logs/.gitignore | 2 + main.sh | 546 +++++++++++++++++- phase1/binutils.sh | 15 + {stage3 => phase1}/gcc.sh | 25 +- {stage3 => phase1}/glibc.sh | 20 +- {stage3 => phase1}/libstdcpp.sh | 17 +- phase1/linux_headers.sh | 8 + {stage4 => phase2}/bash.sh | 17 +- {stage4 => phase2}/binutils.sh | 17 +- phase2/coreutils.sh | 15 + phase2/diffutils.sh | 6 + {stage4 => phase2}/file.sh | 16 +- phase2/findutils.sh | 9 + phase2/gawk.sh | 10 + {stage4 => phase2}/gcc.sh | 16 +- phase2/grep.sh | 6 + phase2/gzip.sh | 6 + phase2/m4.sh | 8 + phase2/make.sh | 9 + {stage4 => phase2}/ncurses.sh | 17 +- phase2/patch.sh | 8 + phase2/sed.sh | 7 + phase2/tar.sh | 8 + {stage4 => phase2}/xz.sh | 17 +- phase3/bison.sh | 7 + phase3/gettext.sh | 7 + {stage5 => phase3}/libstdcpp.sh | 21 +- {stage5 => phase3}/perl.sh | 17 +- phase3/python.sh | 8 + phase3/texinfo.sh | 9 + stage5/util_linux.sh => phase3/utillinux.sh | 17 +- {stage6 => phase4}/acl.sh | 0 {stage6 => phase4}/attr.sh | 0 {stage6 => phase4}/autoconf.sh | 0 {stage6 => phase4}/automake.sh | 0 {stage6 => phase4}/bash.sh | 0 {stage6 => phase4}/bc.sh | 0 {stage6 => phase4}/binutils.sh | 0 {stage6 => phase4}/bison.sh | 0 {stage6 => phase4}/bzip2.sh | 18 +- {stage6 => phase4}/check.sh | 0 {stage6 => phase4}/coreutils.sh | 0 {stage6 => phase4}/dejagnu.sh | 0 {stage6 => phase4}/diffutils.sh | 0 {stage6 => phase4}/e2fsprogs.sh | 0 {stage6 => phase4}/efibootmgr.sh | 0 {stage6 => phase4}/efivar.sh | 0 {stage6 => phase4}/elfutils.sh | 0 {stage6 => phase4}/eudev.sh | 0 {stage6 => phase4}/expat.sh | 0 {stage6 => phase4}/expect.sh | 0 phase4/file.sh | 14 + {stage6 => phase4}/findutils.sh | 0 {stage6 => phase4}/flex.sh | 0 {stage6 => phase4}/gawk.sh | 0 {stage6 => phase4}/gcc.sh | 0 {stage6 => phase4}/gdbm.sh | 0 {stage6 => phase4}/gettext.sh | 0 {stage6 => phase4}/glibc.sh | 27 +- {stage6 => phase4}/gmp.sh | 0 {stage6 => phase4}/gperf.sh | 0 {stage6 => phase4}/grep.sh | 0 {stage6 => phase4}/groff.sh | 0 {stage6 => phase4}/grub.sh | 0 {stage6 => phase4}/gzip.sh | 0 phase4/ianaetc.sh | 3 + {stage6 => phase4}/inetutils.sh | 0 {stage6 => phase4}/intltool.sh | 0 {stage6 => phase4}/iproute2.sh | 0 {stage6 => phase4}/kbd.sh | 0 {stage6 => phase4}/kmod.sh | 0 {stage6 => phase4}/less.sh | 0 {stage6 => phase4}/lfsbootscripts.sh | 0 {stage6 => phase4}/libcap.sh | 0 {stage6 => phase4}/libffi.sh | 0 {stage6 => phase4}/libpipeline.sh | 0 {stage6 => phase4}/libtool.sh | 0 {stage6 => phase4}/linux.sh | 0 {stage6 => phase4}/m4.sh | 0 {stage6 => phase4}/make.sh | 0 {stage6 => phase4}/mandb.sh | 0 {stage6 => phase4}/mandoc.sh | 0 phase4/manpages.sh | 3 + {stage6 => phase4}/meson.sh | 0 {stage6 => phase4}/mpc.sh | 0 {stage6 => phase4}/mpfr.sh | 0 {stage6 => phase4}/ncurses.sh | 0 {stage6 => phase4}/ninja.sh | 0 {stage6 => phase4}/openssl.sh | 0 {stage6 => phase4}/patch.sh | 0 {stage6 => phase4}/perl.sh | 0 {stage6 => phase4}/pkgconfig.sh | 0 {stage6 => phase4}/popt.sh | 0 {stage6 => phase4}/procps.sh | 0 {stage6 => phase4}/psmisc.sh | 0 {stage6 => phase4}/python.sh | 0 {stage6 => phase4}/readline.sh | 0 {stage6 => phase4}/sed.sh | 0 {stage6 => phase4}/shadow.sh | 0 {stage6 => phase4}/sysklogd.sh | 0 {stage6 => phase4}/sysvinit.sh | 0 {stage6 => phase4}/tar.sh | 0 {stage6 => phase4}/tcl.sh | 0 {stage6 => phase4}/texinfo.sh | 0 {stage6 => phase4}/utillinux.sh | 0 {stage6 => phase4}/vim.sh | 0 {stage6 => phase4}/xmlparser.sh | 0 phase4/xz.sh | 16 + phase4/zlib.sh | 16 + phase4/zstd.sh | 13 + config/pkgs.sh => pkgs.sh | 0 pkgs/.gitignore | 2 + stage1/build_img.sh | 57 -- stage1/check_dep_versions.sh | 112 ---- stage1/main.sh | 30 - stage2/hosts | 3 - stage2/main.sh | 133 ----- stage3/binutils.sh | 38 -- stage3/lfs_main.sh | 23 - stage3/linux_headers.sh | 23 - stage3/main.sh | 32 - stage4/coreutils.sh | 33 -- stage4/diffutils.sh | 21 - stage4/findutils.sh | 24 - stage4/gawk.sh | 25 - stage4/grep.sh | 21 - stage4/gzip.sh | 20 - stage4/lfs_main.sh | 35 -- stage4/m4.sh | 24 - stage4/main.sh | 34 -- stage4/make.sh | 24 - stage4/patch.sh | 23 - stage4/sed.sh | 22 - stage4/tar.sh | 23 - stage5/bison.sh | 22 - stage5/chroot_main.sh | 36 -- stage5/gettext.sh | 22 - stage5/main.sh | 63 -- stage5/python.sh | 23 - stage5/texinfo.sh | 23 - stage6/chroot_main.sh | 119 ---- stage6/file.sh | 29 - stage6/ianaetc.sh | 18 - stage6/main.sh | 47 -- stage6/manpages.sh | 18 - stage6/xz.sh | 31 - stage6/zlib.sh | 30 - stage6/zstd.sh | 28 - .../boot__config-5.16.9 | 0 stage2/group => static/etc__group | 0 stage2/inittab => static/etc__inittab | 0 stage2/inputrc => static/etc__inputrc | 0 .../etc__modprobe.d__usb.conf | 0 stage2/passwd => static/etc__passwd | 0 stage2/shells => static/etc__shells | 0 stage2/clock => static/etc__sysconfig__clock | 0 .../rc.site => static/etc__sysconfig__rc.site | 0 .../boot__grub__grub.cfg | 0 stage2/fstab => templates/etc__fstab | 0 templates/etc__hosts | 9 + test.sh | 1 + 165 files changed, 822 insertions(+), 1620 deletions(-) create mode 100644 config.sh delete mode 100644 config/global.sh delete mode 100644 config/user.sh create mode 100644 logs/.gitignore create mode 100644 phase1/binutils.sh rename {stage3 => phase1}/gcc.sh (77%) mode change 100755 => 100644 rename {stage3 => phase1}/glibc.sh (77%) mode change 100755 => 100644 rename {stage3 => phase1}/libstdcpp.sh (62%) mode change 100755 => 100644 create mode 100644 phase1/linux_headers.sh rename {stage4 => phase2}/bash.sh (50%) mode change 100755 => 100644 rename {stage4 => phase2}/binutils.sh (57%) mode change 100755 => 100644 create mode 100644 phase2/coreutils.sh create mode 100644 phase2/diffutils.sh rename {stage4 => phase2}/file.sh (57%) mode change 100755 => 100644 create mode 100644 phase2/findutils.sh create mode 100644 phase2/gawk.sh rename {stage4 => phase2}/gcc.sh (84%) mode change 100755 => 100644 create mode 100644 phase2/grep.sh create mode 100644 phase2/gzip.sh create mode 100644 phase2/m4.sh create mode 100644 phase2/make.sh rename {stage4 => phase2}/ncurses.sh (73%) mode change 100755 => 100644 create mode 100644 phase2/patch.sh create mode 100644 phase2/sed.sh create mode 100644 phase2/tar.sh rename {stage4 => phase2}/xz.sh (56%) mode change 100755 => 100644 create mode 100644 phase3/bison.sh create mode 100644 phase3/gettext.sh rename {stage5 => phase3}/libstdcpp.sh (54%) rename {stage5 => phase3}/perl.sh (71%) create mode 100644 phase3/python.sh create mode 100644 phase3/texinfo.sh rename stage5/util_linux.sh => phase3/utillinux.sh (67%) rename {stage6 => phase4}/acl.sh (100%) rename {stage6 => phase4}/attr.sh (100%) rename {stage6 => phase4}/autoconf.sh (100%) rename {stage6 => phase4}/automake.sh (100%) rename {stage6 => phase4}/bash.sh (100%) rename {stage6 => phase4}/bc.sh (100%) rename {stage6 => phase4}/binutils.sh (100%) rename {stage6 => phase4}/bison.sh (100%) rename {stage6 => phase4}/bzip2.sh (60%) rename {stage6 => phase4}/check.sh (100%) rename {stage6 => phase4}/coreutils.sh (100%) rename {stage6 => phase4}/dejagnu.sh (100%) rename {stage6 => phase4}/diffutils.sh (100%) rename {stage6 => phase4}/e2fsprogs.sh (100%) rename {stage6 => phase4}/efibootmgr.sh (100%) rename {stage6 => phase4}/efivar.sh (100%) rename {stage6 => phase4}/elfutils.sh (100%) rename {stage6 => phase4}/eudev.sh (100%) rename {stage6 => phase4}/expat.sh (100%) rename {stage6 => phase4}/expect.sh (100%) create mode 100644 phase4/file.sh rename {stage6 => phase4}/findutils.sh (100%) rename {stage6 => phase4}/flex.sh (100%) rename {stage6 => phase4}/gawk.sh (100%) rename {stage6 => phase4}/gcc.sh (100%) rename {stage6 => phase4}/gdbm.sh (100%) rename {stage6 => phase4}/gettext.sh (100%) rename {stage6 => phase4}/glibc.sh (88%) rename {stage6 => phase4}/gmp.sh (100%) rename {stage6 => phase4}/gperf.sh (100%) rename {stage6 => phase4}/grep.sh (100%) rename {stage6 => phase4}/groff.sh (100%) rename {stage6 => phase4}/grub.sh (100%) rename {stage6 => phase4}/gzip.sh (100%) create mode 100644 phase4/ianaetc.sh rename {stage6 => phase4}/inetutils.sh (100%) rename {stage6 => phase4}/intltool.sh (100%) rename {stage6 => phase4}/iproute2.sh (100%) rename {stage6 => phase4}/kbd.sh (100%) rename {stage6 => phase4}/kmod.sh (100%) rename {stage6 => phase4}/less.sh (100%) rename {stage6 => phase4}/lfsbootscripts.sh (100%) rename {stage6 => phase4}/libcap.sh (100%) rename {stage6 => phase4}/libffi.sh (100%) rename {stage6 => phase4}/libpipeline.sh (100%) rename {stage6 => phase4}/libtool.sh (100%) rename {stage6 => phase4}/linux.sh (100%) rename {stage6 => phase4}/m4.sh (100%) rename {stage6 => phase4}/make.sh (100%) rename {stage6 => phase4}/mandb.sh (100%) rename {stage6 => phase4}/mandoc.sh (100%) create mode 100644 phase4/manpages.sh rename {stage6 => phase4}/meson.sh (100%) rename {stage6 => phase4}/mpc.sh (100%) rename {stage6 => phase4}/mpfr.sh (100%) rename {stage6 => phase4}/ncurses.sh (100%) rename {stage6 => phase4}/ninja.sh (100%) rename {stage6 => phase4}/openssl.sh (100%) rename {stage6 => phase4}/patch.sh (100%) rename {stage6 => phase4}/perl.sh (100%) rename {stage6 => phase4}/pkgconfig.sh (100%) rename {stage6 => phase4}/popt.sh (100%) rename {stage6 => phase4}/procps.sh (100%) rename {stage6 => phase4}/psmisc.sh (100%) rename {stage6 => phase4}/python.sh (100%) rename {stage6 => phase4}/readline.sh (100%) rename {stage6 => phase4}/sed.sh (100%) rename {stage6 => phase4}/shadow.sh (100%) rename {stage6 => phase4}/sysklogd.sh (100%) rename {stage6 => phase4}/sysvinit.sh (100%) rename {stage6 => phase4}/tar.sh (100%) rename {stage6 => phase4}/tcl.sh (100%) rename {stage6 => phase4}/texinfo.sh (100%) rename {stage6 => phase4}/utillinux.sh (100%) rename {stage6 => phase4}/vim.sh (100%) rename {stage6 => phase4}/xmlparser.sh (100%) create mode 100644 phase4/xz.sh create mode 100644 phase4/zlib.sh create mode 100644 phase4/zstd.sh rename config/pkgs.sh => pkgs.sh (100%) create mode 100644 pkgs/.gitignore delete mode 100755 stage1/build_img.sh delete mode 100755 stage1/check_dep_versions.sh delete mode 100755 stage1/main.sh delete mode 100644 stage2/hosts delete mode 100755 stage2/main.sh delete mode 100755 stage3/binutils.sh delete mode 100755 stage3/lfs_main.sh delete mode 100755 stage3/linux_headers.sh delete mode 100755 stage3/main.sh delete mode 100755 stage4/coreutils.sh delete mode 100755 stage4/diffutils.sh delete mode 100755 stage4/findutils.sh delete mode 100755 stage4/gawk.sh delete mode 100755 stage4/grep.sh delete mode 100755 stage4/gzip.sh delete mode 100755 stage4/lfs_main.sh delete mode 100755 stage4/m4.sh delete mode 100755 stage4/main.sh delete mode 100755 stage4/make.sh delete mode 100755 stage4/patch.sh delete mode 100755 stage4/sed.sh delete mode 100755 stage4/tar.sh delete mode 100644 stage5/bison.sh delete mode 100644 stage5/chroot_main.sh delete mode 100644 stage5/gettext.sh delete mode 100755 stage5/main.sh delete mode 100644 stage5/python.sh delete mode 100644 stage5/texinfo.sh delete mode 100644 stage6/chroot_main.sh delete mode 100644 stage6/file.sh delete mode 100644 stage6/ianaetc.sh delete mode 100755 stage6/main.sh delete mode 100644 stage6/manpages.sh delete mode 100644 stage6/xz.sh delete mode 100644 stage6/zlib.sh delete mode 100644 stage6/zstd.sh rename stage2/config-5.16.9 => static/boot__config-5.16.9 (100%) rename stage2/group => static/etc__group (100%) rename stage2/inittab => static/etc__inittab (100%) rename stage2/inputrc => static/etc__inputrc (100%) rename stage2/usb.conf => static/etc__modprobe.d__usb.conf (100%) rename stage2/passwd => static/etc__passwd (100%) rename stage2/shells => static/etc__shells (100%) rename stage2/clock => static/etc__sysconfig__clock (100%) rename stage2/rc.site => static/etc__sysconfig__rc.site (100%) rename stage2/grub.cfg => templates/boot__grub__grub.cfg (100%) rename stage2/fstab => templates/etc__fstab (100%) create mode 100644 templates/etc__hosts create mode 100755 test.sh diff --git a/clean_img.sh b/clean_img.sh index 8d7df6b..9aeb240 100755 --- a/clean_img.sh +++ b/clean_img.sh @@ -9,10 +9,8 @@ then exit -1 fi -SCRIPT_DIR="$(cd -- "$(dirname -- "${BASH_SOURCE[0]}")" &> /dev/null && pwd)" -source $SCRIPT_DIR/config/global.sh - -echo "Cleaning LFS image..." +cd $(dirname $0) +source ./config.sh # unmount $LFS if [ -n "$(mount | grep $LFS)" ] @@ -32,10 +30,14 @@ fi if [ -f $LFS_IMG ] then read -p "WARNING: This will delete ${LFS_IMG}. Continue? (Y/N): " CONFIRM - [[ $CONFIRM == [yY] || $CONFIRM == [yY][eE][sS] ]] || exit + [[ $CONFIRM == [yY] || $CONFIRM == [yY][eE][sS] ]] || { echo "Cancelled." && exit -1; } echo "Deleting ${LFS_IMG}..." rm $LFS_IMG fi -echo "Done." +# delete logs +if [ -n "$(ls ./logs)" ] +then + rm -rf ./logs/*log ./logs/*gz +fi diff --git a/config.sh b/config.sh new file mode 100644 index 0000000..b511c7b --- /dev/null +++ b/config.sh @@ -0,0 +1,37 @@ +# ####################### +# LFS Build Configuration +# ~~~~~~~~~~~~~~~~~~~~~~~ + +FULLPATH=$(cd $(dirname $0) && pwd) + +export MAKEFLAGS=-j8 +export PACKAGE_LIST=$FULLPATH/pkgs.sh +export PACKAGE_DIR=$FULLPATH/pkgs +export LOG_DIR=$FULLPATH/logs +export LFS=/mnt/lfs +export LFS_TGT=$(uname -m)-lfs-linux-gnu +export LFS_FS=ext4 +export LFS_IMG=$FULLPATH/lfs.img +export LFS_IMG_SIZE=$((10*1024*1024*1024)) # 10 GiB +export ROOT_PASSWD=password +export RUN_TESTS=false +export BUILDLOG_DIR=$FULLPATH/buildlogs +export TESTLOG_DIR=$FULLPATH/testlogs +export LFSHOSTNAME=lfs +export LFSROOTLABEL=LFSROOT +export LFSEFILABEL=LFSEFI +export LFSFSTYPE=ext4 + +KEYS="MAKEFLAGS PACKAGE_LIST PACKAGE_DIR LOG_DIR"\ +" LFS LFS_TGT LFS_FS LFS_IMG LFS_IMG_SIZE ROOT_PASSWD RUN_TESTS TESTLOG_DIR"\ +" LFSHOSTNAME LFSROOTLABEL LFSEFILABEL LFSFSTYPE" + +for KEY in $KEYS +do + if [ -z ${!KEY} ] + then + echo "ERROR: '$KEY' config is not set." + exit -1 + fi +done + diff --git a/config/global.sh b/config/global.sh deleted file mode 100644 index a620b8c..0000000 --- a/config/global.sh +++ /dev/null @@ -1,38 +0,0 @@ -# LFS Build Configuration -# ~~~~~~~~~~~~~~~~~~~~~~~ -# This file should be sourced by the other scripts -# that need these variables. - -export CONF_DIR=$(cd $(dirname $BASH_SOURCE) && pwd) -export MAIN_DIR=$(dirname $CONF_DIR) -export GLOBAL_CONF=$CONF_DIR/global.sh -export USER_CONF=$CONF_DIR/user.sh -export MAKEFLAGS=-j4 -export PACKAGE_LIST=$CONF_DIR/pkgs.sh -export LFS=/mnt/lfs -export LFS_TGT=$(uname -m)-lfs-linux-gnu -export LFS_FS=ext4 -export LFS_IMG=$MAIN_DIR/lfs.img -export LFS_IMG_SIZE=$((10*1024*1024*1024)) # 10 GiB -export LFS_USER=lfs -export ROOT_PASSWD=password -export RUN_TESTS=false -export TESTLOG_DIR=/sources/tests -export HOSTNAME=lfs -export LFSROOTLABEL=lfsroot -export LFSEFILABEL=lfsefi -export LFSFSTYPE=ext4 - -KEYS="CONF_DIR MAIN_DIR GLOBAL_CONF USER_CONF MAKEFLAGS PACKAGE_LIST"\ -" LFS LFS_TGT LFS_FS LFS_IMG LFS_IMG_SIZE LFS_USER ROOT_PASSWD RUN_TESTS TESTLOG_DIR"\ -" HOSTNAME LFSROOTLABEL LFSEFILABEL LFSFSTYPE" - -for KEY in $KEYS -do - if [ -z ${!KEY} ] - then - echo "ERROR: '$KEY' config is not set." - exit -1 - fi -done - diff --git a/config/user.sh b/config/user.sh deleted file mode 100644 index 8a7a2a2..0000000 --- a/config/user.sh +++ /dev/null @@ -1,31 +0,0 @@ -# LFS User shell configuration file. -# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -set +h -umask 022 - -PATH=/usr/bin -if [ ! -L /bin ] -then - PATH=/bin:$PATH -fi -PATH=$LFS/tools/bin:$PATH - -CONFIG_SITE=$LFS/usr/share/config.site -LC_ALL=POSIX - -function build_package { - PACKAGE_NAME=$1 - BUILD_SCRIPT=$2 - BUILD_LOG=$3 - - echo -n "Building ${PACKAGE_NAME}... " - if ! { $BUILD_SCRIPT &> $BUILD_LOG && rm $BUILD_LOG && echo "done."; } - then - echo "failed. Check $BUILD_LOG for more information." - exit -1 - fi -} - -export -f build_package -export LC_ALL PATH CONFIG_SITE - diff --git a/logs/.gitignore b/logs/.gitignore new file mode 100644 index 0000000..d6b7ef3 --- /dev/null +++ b/logs/.gitignore @@ -0,0 +1,2 @@ +* +!.gitignore diff --git a/main.sh b/main.sh index acf333b..b66fe3c 100755 --- a/main.sh +++ b/main.sh @@ -1,30 +1,540 @@ #!/usr/bin/env bash -# main.sh -# ~~~~~~~ -# This is the main entry point for this project. set -e - -if [ "$UID" != "0" ] -then - echo "ERROR: $0 must be run as root." - exit -1 -fi - cd $(dirname $0) -source ./config/global.sh +source ./config.sh -function build_stage { - local STAGE_NO=$1 +while read pkg; +do + eval $pkg + export $(echo $pkg | cut -d"=" -f1) +done < ./pkgs.sh - echo "Starting stage $STAGE_NO... " +./clean_img.sh - { ./stage$STAGE_NO/main.sh && echo "Completed stage $STAGE_NO."; } || - { echo "Stage $STAGE_NO failed." && exit -1; } + +# ######### +# Functions +# ~~~~~~~~~ + +function compare_version { + local MINVERS=$1 + local CURRVERS=$2 + local NDIGS=$(echo $MINVERS | tr . ' ' | wc -w) + + for ((FIELD=1; FIELD < NDIGS; FIELD++)) + do + MINDIGIT=$(echo $MINVERS | cut -d"." -f$FIELD) + CURRDIGIT=$(echo $CURRVERS | cut -d"." -f$FIELD) + if [[ "0x$CURRDIGIT" -gt "0x$MINDIGIT" ]] + then + return 0 + elif [[ "0x$CURRDIGIT" -eq "0x$MINDIGIT" ]] + then + continue + else + return -1 + fi + done + + return 0 } -for ((STAGE = 1; STAGE <= 6; STAGE++)) +function check_dependency { + local PROG=$1 + local MINVERS=$2 + local CURRVERSFIELD=$3 + + if ! command -v $PROG 1 > /dev/null + then + echo "ERROR: '$PROG' not found" + return -1 + fi + + CURRVERS=$($PROG --version 2>&1 | head -n1 | cut -d" " -f$CURRVERSFIELD | cut -d"(" -f1 | cut -d"," -f1 | cut -d"-" -f1) + CURRVERS=${CURRVERS%"${CURRVERS##*[0-9]}"} + + if ! compare_version "$MINVERS" "$CURRVERS" + then + echo "ERROR: $PROG $CURRVERS does not satisfy minimum version $MINVERS" + fi +} + +function get_packages { + PACKAGE_URLS=$(cat $PACKAGE_LIST | cut -d"=" -f2) + PACKAGES=$(ls ./pkgs) + + # check if packages have already been downloaded + if [ -z "$PACKAGES" ] + then +# no indent because here-doc +wget --quiet --directory-prefix $PACKAGE_DIR --input-file - < /dev/null + if $CHROOT + then + if ! chroot "$LFS" /usr/bin/env -i \ + HOME=/root \ + TERM=$TERM \ + PATH=/usr/bin:/usr/sbin &> $LOG_FILE \ + LFS_TGT=$LFS_TGT \ + ROOT_PASSWD=$ROOT_PASSWD \ + RUN_TESTS=$RUN_TESTS \ + "$(cat $PACKAGE_LIST)" \ + /bin/bash +h -c "$BUILD_INSTR" &> $LOG_FILE + then + echo -e "\nERROR: $NAME Phase $PHASE failed:" + tail $LOG_FILE + return -1 + fi + elif ! (eval "$BUILD_INSTR") &> $LOG_FILE + then + echo -e "\nERROR: $NAME Phase $PHASE failed:" + tail $LOG_FILE + return -1 + fi + popd > /dev/null + + (cd $LOG_DIR && gzip $LOG_FILE) + + echo "done." + + return 0 +} + + +# ######################### +# Check system dependencies +# ~~~~~~~~~~~~~~~~~~~~~~~~~ + +EXIT_STATUS=0 + +echo -n "Checking system dependencies... " + +if ! check_dependency bash 3.2 4; then EXIT_STATUS=-1; fi +if ! check_dependency ld 2.13.1 7; then EXIT_STATUS=-1; fi # binutils +if ! check_dependency bison 2.7 4; then EXIT_STATUS=-1; fi +if ! check_dependency chown 6.9 4; then EXIT_STATUS=-1; fi # coreutils +if ! check_dependency diff 2.8.1 4; then EXIT_STATUS=-1; fi +if ! check_dependency find 4.2.31 4; then EXIT_STATUS=-1; fi +if ! check_dependency gawk 4.0.1 3; then EXIT_STATUS=-1; fi +if ! check_dependency gcc 4.8 4; then EXIT_STATUS=-1; fi +if ! check_dependency g++ 4.8 4; then EXIT_STATUS=-1; fi +if ! check_dependency grep 2.5.1a 4; then EXIT_STATUS=-1; fi +if ! check_dependency gzip 1.3.12 2; then EXIT_STATUS=-1; fi +if ! check_dependency m4 1.4.10 4; then EXIT_STATUS=-1; fi +if ! check_dependency make 4.0 3; then EXIT_STATUS=-1; fi +if ! check_dependency patch 2.5.4 3; then EXIT_STATUS=-1; fi +if ! check_dependency python3 3.4 2; then EXIT_STATUS=-1; fi +if ! check_dependency sed 4.1.5 4; then EXIT_STATUS=-1; fi +if ! check_dependency tar 1.22 4; then EXIT_STATUS=-1; fi +if ! check_dependency makeinfo 4.7 4; then EXIT_STATUS=-1; fi # texinfo +if ! check_dependency xz 5.0.0 4; then EXIT_STATUS=-1; fi + +# check that yacc is a link to bison +if [ ! -h /usr/bin/yacc -a "$(readlink -f /usr/bin/yacc)"="/usr/bin/bison.yacc" ] +then + echo "ERROR: /usr/bin/yacc needs to be a link to /usr/bin/bison.yacc" + EXIT_STATUS=-1 +fi + +# check that awk is a link to gawk +if [ ! -h /usr/bin/awk -a "$(readlink -f /usr/bin/awk)"="/usr/bin/gawk" ] +then + echo "ERROR: /usr/bin/awk needs to be a link to /usr/bin/gawk" + EXIT_STATUS=-1 +fi + +# check linux version +MIN_LINUX_VERS=3.2 +LINUX_VERS=$(cat /proc/version | head -n1 | cut -d" " -f3 | cut -d"-" -f1) +if ! compare_version "$MIN_LINUX_VERSION" "$LINUX_VERS" +then + echo "ERROR: Linux kernel version '$LINUX_VERS' does not satisfy minium version $MIN_LINUX_VERS" + EXIT_STATUS=-1 +fi + +# check perl version +MIN_PERL_VERS=5.8.8 +PERL_VERS=$(perl -V:version | cut -d"'" -f2) +if ! compare_version "$MIN_PERL_VERS" "$PERL_VERS" +then + echo "ERROR: Perl version '$PERL_VERS' does not satisfy minium version $MIN_PERL_VERS" + EXIT_STATUS=-1 +fi + +# check G++ compilation +echo 'int main(){}' > dummy.c && g++ -o dummy dummy.c +if [ ! -x dummy ] +then + echo "ERROR: g++ compilation failed" + EXIT_STATUS=-1 +fi +rm -f dummy.c dummy + +echo "done." + +[ "$EXIT_STATUS" == "0" ] || exit $EXIT_STATUS + + +# #################### +# Create OS image file +# ~~~~~~~~~~~~~~~~~~~~ + +echo -n "Creating image file... " + +# create image file +fallocate -l$LFS_IMG_SIZE $LFS_IMG + +# attach loop device +LOOP=$(losetup -f) +losetup $LOOP $LFS_IMG + +# partition the device +FDISK_STR=" +g # create GPT +n # new partition + # default 1st partition + # default start sector (2048) ++512M # 512 MiB +t # modify parition type +uefi # EFI type +n # new partition + # default 2nd partition + # default start sector + # default end sector +w # write to device and quit +" +FDISK_STR=$(echo "$FDISK_STR" | sed 's/ *#.*//g') +# fdisk fails to get kernel to re-read the partition table +# so ignore non-zero exit code, and manually re-read +set +e +fdisk $LOOP &>> /dev/null < /dev/null +mkdir -p $LFS +mount $LOOP_P2 $LFS + +# setup EFI partition +mkfs.vfat $LOOP_P1 &> /dev/null +mkdir -p $LFS/boot/efi +mount -t vfat $LOOP_P1 $LFS/boot/efi + +# label the partitions +dosfslabel $LOOP_P1 $LFSEFILABEL &> /dev/null +e2label $LOOP_P2 $LFSROOTLABEL + +echo "done." + + +# ####################### +# Basic file system setup +# ~~~~~~~~~~~~~~~~~~~~~~~ + +echo -n "Creating basic directory layout... " + +mkdir -p $LFS/{bin,boot,dev,etc,home,lib64,media,mnt,opt,proc,run,srv,sys,tools,usr,var} +mkdir -p $LFS/boot/grub +mkdir -p $LFS/etc/{modprobe.d,opt,sysconfig} +mkdir -p $LFS/media/{cdrom,floppy} +mkdir -p $LFS/usr/{bin,lib/{,firmware},sbin} +mkdir -p $LFS/usr/local/{bin,include,lib,sbin,share,src} +mkdir -p $LFS/usr/local/share/{color,dict,doc,info,locale,man,misc,terminfo,zoneinfo} +mkdir -p $LFS/usr/local/share/man/{1..8} +mkdir -p $LFS/var/{cache,lib,local,log,mail,opt,spool} +mkdir -p $LFS/var/lib/{color,misc,locate} + +install -d -m 0750 $LFS/root +install -d -m 1777 $LFS/tmp $LFS/var/tmp + +# removed at end of build +mkdir -p $LFS/home/tester +chown 101:101 $LFS/home/tester +mkdir -p $LFS/sources + +# create symlinks +for i in bin lib sbin do - build_stage $STAGE + ln -s usr/$i $LFS/$i +done +ln -s /run $LFS/var/run +ln -s /run/lock $LFS/var/lock +ln -s /proc/self/mounts $LFS/etc/mtab + +# install static files +echo $LFSHOSTNAME > $LFS/etc/hostname +for file in ./static/* +do + install_static $file done +# install templates +install_template ./templates/boot__grub__grub.cfg LFSROOTLABEL +install_template ./templates/etc__fstab LFSROOTLABEL LFSEFILABEL LFSFSTYPE +install_template ./templates/etc__hosts LFSHOSTNAME + +# make special device files +mknod -m 600 $LFS/dev/console c 5 1 +mknod -m 666 $LFS/dev/null c 1 3 + +# create login log files +touch $LFS/var/log/{btmp,lastlog,faillog,wtmp} +chgrp 13 $LFS/var/log/lastlog +chmod 664 $LFS/var/log/lastlog +chmod 600 $LFS/var/log/btmp + +# mount stuff from the host onto the target disk +mount --bind /dev $LFS/dev +mount --bind /dev/pts $LFS/dev/pts +mount -t proc proc $LFS/proc +mount -t sysfs sysfs $LFS/sys +mount -t tmpfs tmpfs $LFS/run + +if [ -h $LFS/dev/shm ]; then + mkdir -p $LFS/$(readlink $LFS/dev/shm) +fi + +echo "done." + +echo -n "Downloading packages to $LFS/sources... " +get_packages +echo "done." + + +# ###################### +# Setup environment vars +# ~~~~~~~~~~~~~~~~~~~~~~ + +TMP_PATH=$PATH +PATH=/usr/bin +if [ ! -L /bin ]; +then + PATH=/bin:$PATH; +fi +PATH=$LFS/tools/bin:$PATH +CONFIG_SITE=$LFS/usr/share/config.site +LC_ALL=POSIX +export LC_ALL PATH CONFIG_SITE + +echo -e \ +"# #######\n"\ +"# Phase 1\n"\ +"# ~~~~~~~" + +CHROOT=false +PHASE=1 +build_package binutils +build_package gcc +build_package linux_headers LINUX +build_package glibc +build_package libstdcpp GCC + +echo -e \ +"# #######\n"\ +"# Phase 2\n"\ +"# ~~~~~~~" + +PHASE=2 +build_package m4 +build_package ncurses +build_package bash +build_package coreutils +build_package diffutils +build_package file +build_package findutils +build_package gawk +build_package grep +build_package gzip +build_package make +build_package patch +build_package sed +build_package tar +build_package xz +build_package binutils +build_package gcc + +echo -e \ +"# #######\n"\ +"# Phase 3\n"\ +"# ~~~~~~~" + +PATH=$TMP_PATH +CHROOT=true +PHASE=3 +build_package libstdcpp GCC +build_package gettext +build_package bison +build_package perl +build_package python +build_package texinfo +build_package utillinux + +# Cleanup +rm -rf $LFS/usr/share/{info,man,doc}/* +find $LFS/usr/{lib,libexec} -name \*.la -delete +rm -rf $LFS/tools + +echo -e \ +"# #######\n"\ +"# Phase 4\n"\ +"# ~~~~~~~" + +exit + +PHASE=4 +build_package manpages +build_package ianaetc +build_package glibc +build_package zlib +build_package bzip2 +build_package xz +build_package zstd +build_package file +build_package readline +build_package m4 +build_package bc +build_package flex +build_package tcl +build_package expect +build_package dejagnu +build_package binutils +build_package gmp +build_package mpfr +build_package mpc +build_package attr +build_package acl +build_package libcap +build_package shadow +build_package gcc +build_package pkgconfig +build_package ncurses +build_package sed +build_package psmisc +build_package gettext +build_package bison +build_package grep +build_package bash +build_package libtool +build_package gdbm +build_package gperf +build_package expat +build_package inetutils +build_package less +build_package perl +build_package xmlparser +build_package intltool +build_package autoconf +build_package automake +build_package openssl +build_package kmod +build_package elfutils +build_package libffi +build_package python +build_package ninja +build_package meson +build_package coreutils +build_package check +build_package diffutils +build_package gawk +build_package findutils +build_package groff +# Skipping GRUB MBR build since we are using UEFI +build_package gzip +build_package iproute2 +build_package kbd +build_package libpipeline +build_package make +build_package patch +build_package tar +build_package texinfo +build_package vim +build_package eudev +build_package mandb +build_package procps +build_package utillinux +build_package e2fsprogs +build_package sysklogd +build_package sysvinit +build_package lfsbootscripts + +# UEFI Boot Dependencies +build_pakcage popt +build_package mandoc +build_package efivar +build_package efibootmgr +build_package grub + +# delete tmp files created during builds +rm -rf $LFS/tmp/* + +# delete libtool archives (only useful when linking to static libs) +find $LFS/usr/lib $LFS/usr/libexec -name \*.la -delete + +# delete cross compiler tools from previous stages +find $LFS/usr -depth -name $LFS_TGT\* | xargs rm -rf + +# remove 'tester' user account +rm -r $LFS/home/tester +sed -i 's/^.*tester.*$//' $LFS/etc/{passwd,group} + diff --git a/phase1/binutils.sh b/phase1/binutils.sh new file mode 100644 index 0000000..4193b2c --- /dev/null +++ b/phase1/binutils.sh @@ -0,0 +1,15 @@ +# Bintuils Phase 1 +mkdir build +cd build + +../configure \ + --prefix=$LFS/tools \ + --with-sysroot=$LFS \ + --target=$LFS_TGT \ + --disable-nls \ + --disable-werror + +make + +make install + diff --git a/stage3/gcc.sh b/phase1/gcc.sh old mode 100755 new mode 100644 similarity index 77% rename from stage3/gcc.sh rename to phase1/gcc.sh index bd58562..50aa1e2 --- a/stage3/gcc.sh +++ b/phase1/gcc.sh @@ -1,19 +1,8 @@ -#!/usr/bin/env bash -# GCC Stage 3 -# ~~~~~~~~~~~ -set -e - -cd $LFS/sources - -eval "$(grep "PKG_GCC\|PKG_MPFR\|PKG_GMP\|PKG_MPC" $PACKAGE_LIST)" -PKG_GCC=$(basename $PKG_GCC) +# GCC Phase 1 PKG_MPFR=$(basename $PKG_MPFR) PKG_GMP=$(basename $PKG_GMP) PKG_MPC=$(basename $PKG_MPC) -tar -xf $PKG_GCC -cd ${PKG_GCC%.tar*} - tar -xf ../$PKG_MPFR mv ${PKG_MPFR%.tar*} mpfr @@ -24,9 +13,9 @@ tar -xf ../$PKG_MPC mv ${PKG_MPC%.tar*} mpc case $(uname -m) in - x86_64) - sed -e '/m64=/s/lib64/lib/' -i.orig gcc/config/i386/t-linux64 - ;; + x86_64) + sed -e '/m64=/s/lib64/lib/' -i.orig gcc/config/i386/t-linux64 + ;; esac mkdir build @@ -57,9 +46,7 @@ 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 - -cd $LFS/sources -rm -rf ${PKG_GCC%.tar*} + $(dirname $($LFS_TGT-gcc -print-libgcc-file-name))/install-tools/include/limits.h diff --git a/stage3/glibc.sh b/phase1/glibc.sh old mode 100755 new mode 100644 similarity index 77% rename from stage3/glibc.sh rename to phase1/glibc.sh index 65ce3f2..a96e678 --- a/stage3/glibc.sh +++ b/phase1/glibc.sh @@ -1,17 +1,4 @@ -#!/usr/bin/env bash -# Glibc Stage 3 -# ~~~~~~~~~~~~~ -set -e - -cd $LFS/sources - -eval "$(grep "PKG_GLIBC\|PATCH_GLIBC" $PACKAGE_LIST)" -PKG_GLIBC=$(basename $PKG_GLIBC) -PATCH_GLIBC=$(basename $PATCH_GLIBC) - -tar -xf $PKG_GLIBC -cd ${PKG_GLIBC%.tar*} - +# Glibc Phase 1 case $(uname -m) in i?86) ln -sfv ld-linux.so.2 $LFS/lib/ld-lsb.so.3 @@ -45,7 +32,7 @@ sed '/RTLDLIST=/s@/usr@@g' -i $LFS/usr/bin/ldd # check that everything is good echo 'int main(){}' > dummy.c $LFS_TGT-gcc dummy.c -OUTPUT=$(readelf -l a.out | grep '/ld-linux') +OUTPUT=$(readelf -l a.out | grep '/ld-linux') EXPECTED='[Requesting program interpreter: /lib64/ld-linux-x86-64.so.2]' if [[ "$OUTPUT" != *"${EXPECTED}"* ]] then @@ -58,6 +45,3 @@ rm dummy.c a.out $LFS/tools/libexec/gcc/$LFS_TGT/11.2.0/install-tools/mkheaders -cd $LFS/sources -rm -rf ${PKG_GLIBC%.tar*} - diff --git a/stage3/libstdcpp.sh b/phase1/libstdcpp.sh old mode 100755 new mode 100644 similarity index 62% rename from stage3/libstdcpp.sh rename to phase1/libstdcpp.sh index 8fc33f1..5ffb330 --- a/stage3/libstdcpp.sh +++ b/phase1/libstdcpp.sh @@ -1,16 +1,4 @@ -#!/usr/bin/env bash -# Libstdc++ Stage 3 -# ~~~~~~~~~~~~~~~~~ -set -e - -cd $LFS/sources - -eval "$(grep PKG_GCC $PACKAGE_LIST)" -PKG_GCC=$(basename $PKG_GCC) - -tar -xf $PKG_GCC -cd ${PKG_GCC%.tar*} - +# Libstdc++ Phase 1 mkdir build cd build @@ -26,6 +14,3 @@ cd build make make DESTDIR=$LFS install -cd $LFS/sources -rm -rf ${PKG_GCC%.tar*} - diff --git a/phase1/linux_headers.sh b/phase1/linux_headers.sh new file mode 100644 index 0000000..a3cdaab --- /dev/null +++ b/phase1/linux_headers.sh @@ -0,0 +1,8 @@ +# Linux API headers Phase 1 +make mrproper +make headers + +find usr/include -name '.*' -delete +rm usr/include/Makefile +cp -r usr/include $LFS/usr + diff --git a/stage4/bash.sh b/phase2/bash.sh old mode 100755 new mode 100644 similarity index 50% rename from stage4/bash.sh rename to phase2/bash.sh index ba0121f..8991565 --- a/stage4/bash.sh +++ b/phase2/bash.sh @@ -1,16 +1,4 @@ -#!/usr/bin/env bash -# Bash Stage 4 -# ~~~~~~~~~~~~ -set -e - -cd $LFS/sources - -eval "$(grep BASH $PACKAGE_LIST)" -PKG_BASH=$(basename $PKG_BASH) - -tar -xf $PKG_BASH -cd ${PKG_BASH%.tar*} - +# Bash Phase 2 ./configure --prefix=/usr \ --build=$(support/config.guess) \ --host=$LFS_TGT \ @@ -20,6 +8,3 @@ make make DESTDIR=$LFS install ln -sv bash $LFS/bin/sh -cd $LFS/sources -rm -rf ${PKG_BASH%.tar*} - diff --git a/stage4/binutils.sh b/phase2/binutils.sh old mode 100755 new mode 100644 similarity index 57% rename from stage4/binutils.sh rename to phase2/binutils.sh index ace1f96..b5235af --- a/stage4/binutils.sh +++ b/phase2/binutils.sh @@ -1,16 +1,4 @@ -#!/usr/bin/env bash -# Binutils Stage 4 -# ~~~~~~~~~~~~~~~~ -set -e - -cd $LFS/sources - -eval "$(grep BINUTILS $PACKAGE_LIST)" -PKG_BINUTILS=$(basename $PKG_BINUTILS) - -tar -xf $PKG_BINUTILS -cd ${PKG_BINUTILS%.tar*} - +# Binutils Phase 2 sed '6009s/$add_dir//' -i ltmain.sh mkdir build @@ -28,6 +16,3 @@ cd build make make DESTDIR=$LFS install -cd $LFS/sources -rm -rf ${PKG_BINUTILS%.tar*} - diff --git a/phase2/coreutils.sh b/phase2/coreutils.sh new file mode 100644 index 0000000..32c4d76 --- /dev/null +++ b/phase2/coreutils.sh @@ -0,0 +1,15 @@ +# Coreutils Phase 2 +./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 $LFS/usr/bin/chroot $LFS/usr/sbin +mkdir -p $LFS/usr/share/man/man8 +mv $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 + diff --git a/phase2/diffutils.sh b/phase2/diffutils.sh new file mode 100644 index 0000000..c8e31d9 --- /dev/null +++ b/phase2/diffutils.sh @@ -0,0 +1,6 @@ +# Diffutils Phase 2 +./configure --prefix=/usr --host=$LFS_TGT + +make +make DESTDIR=$LFS install + diff --git a/stage4/file.sh b/phase2/file.sh old mode 100755 new mode 100644 similarity index 57% rename from stage4/file.sh rename to phase2/file.sh index fb2db8b..94e8e99 --- a/stage4/file.sh +++ b/phase2/file.sh @@ -1,16 +1,4 @@ -#!/usr/bin/env bash -# File Stage 4 -# ~~~~~~~~~~~~ -set -e - -cd $LFS/sources - -eval "$(grep FILE $PACKAGE_LIST)" -PKG_FILE=$(basename $PKG_FILE) - -tar -xf $PKG_FILE -cd ${PKG_FILE%.tar*} - +# File Phase 2 mkdir build pushd build ../configure --disable-bzlib \ @@ -24,5 +12,3 @@ popd make FILE_COMPILE=$(pwd)/build/src/file make DESTDIR=$LFS install -cd $LFS/sources -rm -rf ${PKG_FILE%.tar*} diff --git a/phase2/findutils.sh b/phase2/findutils.sh new file mode 100644 index 0000000..ce980df --- /dev/null +++ b/phase2/findutils.sh @@ -0,0 +1,9 @@ +# Findutils Phase 2 +./configure --prefix=/usr \ + --localstatedir=/var/lib/locate \ + --host=$LFS_TGT \ + --build=$(build-aux/config.guess) + +make +make DESTDIR=$LFS install + diff --git a/phase2/gawk.sh b/phase2/gawk.sh new file mode 100644 index 0000000..d3e3655 --- /dev/null +++ b/phase2/gawk.sh @@ -0,0 +1,10 @@ +# Gawk Phase 2 +sed -i 's/extras//' Makefile.in + +./configure --prefix=/usr \ + --host=$LFS_TGT \ + --build=$(build-aux/config.guess) + +make +make DESTDIR=$LFS install + diff --git a/stage4/gcc.sh b/phase2/gcc.sh old mode 100755 new mode 100644 similarity index 84% rename from stage4/gcc.sh rename to phase2/gcc.sh index dbc7b9d..dfd11f8 --- a/stage4/gcc.sh +++ b/phase2/gcc.sh @@ -1,19 +1,8 @@ -#!/usr/bin/env bash -# GCC Stage 4 -# ~~~~~~~~~~~ -set -e - -cd $LFS/sources - -eval "$(grep "PKG_GCC\|PKG_MPFR\|PKG_GMP\|PKG_MPC" $PACKAGE_LIST)" -PKG_GCC=$(basename $PKG_GCC) +# GCC Phase 2 PKG_MPFR=$(basename $PKG_MPFR) PKG_GMP=$(basename $PKG_GMP) PKG_MPC=$(basename $PKG_MPC) -tar -xf $PKG_GCC -cd ${PKG_GCC%.tar*} - tar -xf ../$PKG_MPFR mv ${PKG_MPFR%.tar*} mpfr @@ -58,6 +47,3 @@ make DESTDIR=$LFS install ln -s gcc $LFS/usr/bin/cc -cd $LFS/sources -rm -rf ${PKG_GCC%.tar*} - diff --git a/phase2/grep.sh b/phase2/grep.sh new file mode 100644 index 0000000..69fb0e0 --- /dev/null +++ b/phase2/grep.sh @@ -0,0 +1,6 @@ +# Grep Phase 2 +./configure --prefix=/usr \ + --host=$LFS_TGT +make +make DESTDIR=$LFS install + diff --git a/phase2/gzip.sh b/phase2/gzip.sh new file mode 100644 index 0000000..f43bb91 --- /dev/null +++ b/phase2/gzip.sh @@ -0,0 +1,6 @@ +# Gzip Phase 2 +./configure --prefix=/usr --host=$LFS_TGT + +make +make DESTDIR=$LFS install + diff --git a/phase2/m4.sh b/phase2/m4.sh new file mode 100644 index 0000000..8f592f7 --- /dev/null +++ b/phase2/m4.sh @@ -0,0 +1,8 @@ +# M4 Phase 2 +./configure --prefix=/usr \ + --host=$LFS_TGT \ + --build=$(build-aux/config.guess) + +make +make DESTDIR=$LFS install + diff --git a/phase2/make.sh b/phase2/make.sh new file mode 100644 index 0000000..d6eb172 --- /dev/null +++ b/phase2/make.sh @@ -0,0 +1,9 @@ +# Make Phase 2 +./configure --prefix=/usr \ + --without-guile \ + --host=$LFS_TGT \ + --build=$(build-aux/config.guess) + +make +make DESTDIR=$LFS install + diff --git a/stage4/ncurses.sh b/phase2/ncurses.sh old mode 100755 new mode 100644 similarity index 73% rename from stage4/ncurses.sh rename to phase2/ncurses.sh index 6a54a4a..604eeff --- a/stage4/ncurses.sh +++ b/phase2/ncurses.sh @@ -1,16 +1,4 @@ -#!/usr/bin/env bash -# ncurses Stage 4 -# ~~~~~~~~~~~~~~~ -set -e - -cd $LFS/sources - -eval "$(grep NCURSES $PACKAGE_LIST)" -PKG_NCURSES=$(basename $PKG_NCURSES) - -tar -xf $PKG_NCURSES -cd ${PKG_NCURSES%.tar*} - +# ncurses Phase 2 sed -i s/mawk// configure mkdir build @@ -36,6 +24,3 @@ make make DESTDIR=$LFS TIC_PATH=$(pwd)/build/progs/tic install echo "INPUT(-lncursesw)" > $LFS/usr/lib/libncurses.so -cd $LFS/sources -rm -rf ${PKG_NCURSES%.tar*} - diff --git a/phase2/patch.sh b/phase2/patch.sh new file mode 100644 index 0000000..52f416f --- /dev/null +++ b/phase2/patch.sh @@ -0,0 +1,8 @@ +# Patch Phase 2 +./configure --prefix=/usr \ + --host=$LFS_TGT \ + --build=$(build-aux/config.guess) + +make +make DESTDIR=$LFS install + diff --git a/phase2/sed.sh b/phase2/sed.sh new file mode 100644 index 0000000..03d0010 --- /dev/null +++ b/phase2/sed.sh @@ -0,0 +1,7 @@ +# Sed Phase 2 +./configure --prefix=/usr \ + --host=$LFS_TGT + +make +make DESTDIR=$LFS install + diff --git a/phase2/tar.sh b/phase2/tar.sh new file mode 100644 index 0000000..713ff41 --- /dev/null +++ b/phase2/tar.sh @@ -0,0 +1,8 @@ +# Tar Phase 2 +./configure --prefix=/usr \ + --host=$LFS_TGT \ + --build=$(build-aux/config.guess) + +make +make DESTDIR=$LFS install + diff --git a/stage4/xz.sh b/phase2/xz.sh old mode 100755 new mode 100644 similarity index 56% rename from stage4/xz.sh rename to phase2/xz.sh index 565129c..5dc5b30 --- a/stage4/xz.sh +++ b/phase2/xz.sh @@ -1,16 +1,4 @@ -#!/usr/bin/env bash -# Xz Stage 4 -# ~~~~~~~~~~ -set -e - -cd $LFS/sources - -eval "$(grep XZ $PACKAGE_LIST)" -PKG_XZ=$(basename $PKG_XZ) - -tar -xf $PKG_XZ -cd ${PKG_XZ%.tar*} - +# Xz Phase 2 ./configure --prefix=/usr \ --host=$LFS_TGT \ --build=$(build-aux/config.guess) \ @@ -20,6 +8,3 @@ cd ${PKG_XZ%.tar*} make make DESTDIR=$LFS install -cd $LFS/sources -rm -rf ${PKG_XZ%.tar*} - diff --git a/phase3/bison.sh b/phase3/bison.sh new file mode 100644 index 0000000..6c752c6 --- /dev/null +++ b/phase3/bison.sh @@ -0,0 +1,7 @@ +# Bison Phase 3 +./configure --prefix=/usr \ + --docdir=/usr/share/doc/${PKG_BISON%.tar*} + +make +make install + diff --git a/phase3/gettext.sh b/phase3/gettext.sh new file mode 100644 index 0000000..9b1e29e --- /dev/null +++ b/phase3/gettext.sh @@ -0,0 +1,7 @@ +# Gettext Phase 3 +./configure --disable-shared + +make + +cp gettext-tools/src/{msgfmt,msgmerge,xgettext} /usr/bin + diff --git a/stage5/libstdcpp.sh b/phase3/libstdcpp.sh similarity index 54% rename from stage5/libstdcpp.sh rename to phase3/libstdcpp.sh index b0f2f6f..dca71a4 100644 --- a/stage5/libstdcpp.sh +++ b/phase3/libstdcpp.sh @@ -1,16 +1,4 @@ -#!/usr/bin/env bash -# Libstdc++ Stage 5 -# ~~~~~~~~~~~~~~~~~ -set -e - -cd /sources - -eval "$(grep PKG_GCC $PACKAGE_LIST)" -PKG_GCC=$(basename $PKG_GCC) - -tar -xf $PKG_GCC -cd ${PKG_GCC%.tar*} - +# Libstdc++ Phase 3 ln -s gthr-posix.h libgcc/gthr-default.h mkdir build @@ -18,15 +6,12 @@ cd build ../libstdc++-v3/configure \ CXXFLAGS="-g -O2 -D_GNU_SOURCE" \ - --host=$LFS_TGT \ --prefix=/usr \ --disable-multilib \ --disable-nls \ - --disable-libstdcxx-pch \ + --host=$LFS_TGT \ + --disable-libstdcxx-pch make make install -cd /sources -rm -rf ${PKG_GCC%.tar*} - diff --git a/stage5/perl.sh b/phase3/perl.sh similarity index 71% rename from stage5/perl.sh rename to phase3/perl.sh index ff8ac9b..be2c240 100644 --- a/stage5/perl.sh +++ b/phase3/perl.sh @@ -1,16 +1,4 @@ -#!/usr/bin/env bash -# Perl Stage 5 -# ~~~~~~~~~~~~ -set -e - -cd /sources - -eval "$(grep PERL $PACKAGE_LIST)" -PKG_PERL=$(basename $PKG_PERL) - -tar -xf $PKG_PERL -cd ${PKG_PERL%.tar*} - +# Perl Phase 3 sh Configure -des \ -Dprefix=/usr \ -Dvendorprefix=/usr \ @@ -24,6 +12,3 @@ sh Configure -des \ make make install -cd /sources -rm -rf ${PKG_PERL%.tar*} - diff --git a/phase3/python.sh b/phase3/python.sh new file mode 100644 index 0000000..32a66ff --- /dev/null +++ b/phase3/python.sh @@ -0,0 +1,8 @@ +# Python Phase 3 +./configure --prefix=/usr \ + --enable-shared \ + --without-ensurepip + +make +make install + diff --git a/phase3/texinfo.sh b/phase3/texinfo.sh new file mode 100644 index 0000000..2f85ad1 --- /dev/null +++ b/phase3/texinfo.sh @@ -0,0 +1,9 @@ +# Texinfo Phase 3 +sed -e 's/__attribute_nonnull__/__nonnull/' \ + -i gnulib/lib/malloc/dynarray-skeleton.c + +./configure --prefix=/usr + +make +make install + diff --git a/stage5/util_linux.sh b/phase3/utillinux.sh similarity index 67% rename from stage5/util_linux.sh rename to phase3/utillinux.sh index 22457b5..a7a490a 100644 --- a/stage5/util_linux.sh +++ b/phase3/utillinux.sh @@ -1,16 +1,4 @@ -#!/usr/bin/env bash -# Util Linux Stage 5 -# ~~~~~~~~~~~~~~~~~~ -set -e - -cd /sources - -eval "$(grep UTILLINUX $PACKAGE_LIST)" -PKG_UTILLINUX=$(basename $PKG_UTILLINUX) - -tar -xf $PKG_UTILLINUX -cd ${PKG_UTILLINUX%.tar*} - +# Util Linux Phase 3 mkdir -p /var/lib/hwclock ./configure ADJTIME_PATH=/var/lib/hwclock/adjtime \ @@ -30,6 +18,3 @@ mkdir -p /var/lib/hwclock make make install -cd /sources -rm -rf ${PKG_UTILLINUX%.tar*} - diff --git a/stage6/acl.sh b/phase4/acl.sh similarity index 100% rename from stage6/acl.sh rename to phase4/acl.sh diff --git a/stage6/attr.sh b/phase4/attr.sh similarity index 100% rename from stage6/attr.sh rename to phase4/attr.sh diff --git a/stage6/autoconf.sh b/phase4/autoconf.sh similarity index 100% rename from stage6/autoconf.sh rename to phase4/autoconf.sh diff --git a/stage6/automake.sh b/phase4/automake.sh similarity index 100% rename from stage6/automake.sh rename to phase4/automake.sh diff --git a/stage6/bash.sh b/phase4/bash.sh similarity index 100% rename from stage6/bash.sh rename to phase4/bash.sh diff --git a/stage6/bc.sh b/phase4/bc.sh similarity index 100% rename from stage6/bc.sh rename to phase4/bc.sh diff --git a/stage6/binutils.sh b/phase4/binutils.sh similarity index 100% rename from stage6/binutils.sh rename to phase4/binutils.sh diff --git a/stage6/bison.sh b/phase4/bison.sh similarity index 100% rename from stage6/bison.sh rename to phase4/bison.sh diff --git a/stage6/bzip2.sh b/phase4/bzip2.sh similarity index 60% rename from stage6/bzip2.sh rename to phase4/bzip2.sh index 4a026d5..4ec0cf9 100644 --- a/stage6/bzip2.sh +++ b/phase4/bzip2.sh @@ -1,17 +1,4 @@ -#!/usr/bin/env bash -# Bzip2 Stage 6 -# ~~~~~~~~~~~~~ -set -e - -cd /sources - -eval "$(grep BZIP2 $PACKAGE_LIST)" -PKG_BZIP2=$(basename $PKG_BZIP2) -PATCH_BZIP2=$(basename $PATCH_BZIP2) - -tar -xf $PKG_BZIP2 -cd ${PKG_BZIP2%.tar*} - +# Bzip2 Phase 4 patch -Np1 -i ../$PATCH_BZIP2 sed -i 's@\(ln -s -f \)$(PREFIX)/bin/@\1@' Makefile @@ -30,6 +17,3 @@ for i in /usr/bin/{bzcat,bunzip2}; do done rm -f /usr/lib/libbz2.a -cd /sources -rm -rf ${PKG_BZIP2%.tar*} - diff --git a/stage6/check.sh b/phase4/check.sh similarity index 100% rename from stage6/check.sh rename to phase4/check.sh diff --git a/stage6/coreutils.sh b/phase4/coreutils.sh similarity index 100% rename from stage6/coreutils.sh rename to phase4/coreutils.sh diff --git a/stage6/dejagnu.sh b/phase4/dejagnu.sh similarity index 100% rename from stage6/dejagnu.sh rename to phase4/dejagnu.sh diff --git a/stage6/diffutils.sh b/phase4/diffutils.sh similarity index 100% rename from stage6/diffutils.sh rename to phase4/diffutils.sh diff --git a/stage6/e2fsprogs.sh b/phase4/e2fsprogs.sh similarity index 100% rename from stage6/e2fsprogs.sh rename to phase4/e2fsprogs.sh diff --git a/stage6/efibootmgr.sh b/phase4/efibootmgr.sh similarity index 100% rename from stage6/efibootmgr.sh rename to phase4/efibootmgr.sh diff --git a/stage6/efivar.sh b/phase4/efivar.sh similarity index 100% rename from stage6/efivar.sh rename to phase4/efivar.sh diff --git a/stage6/elfutils.sh b/phase4/elfutils.sh similarity index 100% rename from stage6/elfutils.sh rename to phase4/elfutils.sh diff --git a/stage6/eudev.sh b/phase4/eudev.sh similarity index 100% rename from stage6/eudev.sh rename to phase4/eudev.sh diff --git a/stage6/expat.sh b/phase4/expat.sh similarity index 100% rename from stage6/expat.sh rename to phase4/expat.sh diff --git a/stage6/expect.sh b/phase4/expect.sh similarity index 100% rename from stage6/expect.sh rename to phase4/expect.sh diff --git a/phase4/file.sh b/phase4/file.sh new file mode 100644 index 0000000..e62cb64 --- /dev/null +++ b/phase4/file.sh @@ -0,0 +1,14 @@ +# File Phase 4 +./configure --prefix=/usr + +make + +if $RUN_TESTS +then + set +e + make check + set -e +fi + +make install + diff --git a/stage6/findutils.sh b/phase4/findutils.sh similarity index 100% rename from stage6/findutils.sh rename to phase4/findutils.sh diff --git a/stage6/flex.sh b/phase4/flex.sh similarity index 100% rename from stage6/flex.sh rename to phase4/flex.sh diff --git a/stage6/gawk.sh b/phase4/gawk.sh similarity index 100% rename from stage6/gawk.sh rename to phase4/gawk.sh diff --git a/stage6/gcc.sh b/phase4/gcc.sh similarity index 100% rename from stage6/gcc.sh rename to phase4/gcc.sh diff --git a/stage6/gdbm.sh b/phase4/gdbm.sh similarity index 100% rename from stage6/gdbm.sh rename to phase4/gdbm.sh diff --git a/stage6/gettext.sh b/phase4/gettext.sh similarity index 100% rename from stage6/gettext.sh rename to phase4/gettext.sh diff --git a/stage6/glibc.sh b/phase4/glibc.sh similarity index 88% rename from stage6/glibc.sh rename to phase4/glibc.sh index 0423df4..4da5749 100644 --- a/stage6/glibc.sh +++ b/phase4/glibc.sh @@ -1,17 +1,5 @@ -#!/usr/bin/env bash -# Glibc Stage6 -# ~~~~~~~~~~~~ -set -e - -cd /sources - -eval "$(grep GLIBC $PACKAGE_LIST)" -PKG_GLIBC=$(basename $PKG_GLIBC) - -tar -xf $PKG_GLIBC -cd ${PKG_GLIBC%.tar*} - -patch -Np1 -i ../glibc-2.35-fhs-1.patch +# Glibc Phase 4 +patch -Np1 -i ../$PATCH_GLIBC mkdir build cd build @@ -30,7 +18,7 @@ make if $RUN_TESTS then set +e - make check &> $TESTLOG_DIR/glibc.log + make check set -e fi @@ -79,8 +67,6 @@ localedef -i zh_HK -f BIG5-HKSCS zh_HK.BIG5-HKSCS localedef -i zh_TW -f UTF-8 zh_TW.UTF-8 cat > /etc/nsswitch.conf << "EOF" -# Begin /etc/nsswitch.conf - passwd: files group: files shadow: files @@ -92,8 +78,6 @@ protocols: files services: files ethers: files rpc: files - -# End /etc/nsswitch.conf EOF tar -xf ../../tzdata2021e.tar.gz @@ -115,12 +99,7 @@ unset ZONEINFO ln -sf /usr/share/zoneinfo/America/New_York /etc/localtime cat > /etc/ld.so.conf << "EOF" -# Begin /etc/ld.so.conf /usr/local/lib /opt/lib - EOF -cd /sources -rm -rf ${PKG_GLIBC%.tar*} - diff --git a/stage6/gmp.sh b/phase4/gmp.sh similarity index 100% rename from stage6/gmp.sh rename to phase4/gmp.sh diff --git a/stage6/gperf.sh b/phase4/gperf.sh similarity index 100% rename from stage6/gperf.sh rename to phase4/gperf.sh diff --git a/stage6/grep.sh b/phase4/grep.sh similarity index 100% rename from stage6/grep.sh rename to phase4/grep.sh diff --git a/stage6/groff.sh b/phase4/groff.sh similarity index 100% rename from stage6/groff.sh rename to phase4/groff.sh diff --git a/stage6/grub.sh b/phase4/grub.sh similarity index 100% rename from stage6/grub.sh rename to phase4/grub.sh diff --git a/stage6/gzip.sh b/phase4/gzip.sh similarity index 100% rename from stage6/gzip.sh rename to phase4/gzip.sh diff --git a/phase4/ianaetc.sh b/phase4/ianaetc.sh new file mode 100644 index 0000000..6347894 --- /dev/null +++ b/phase4/ianaetc.sh @@ -0,0 +1,3 @@ +# Iana-Etc Phase 4 +cp services protocols /etc + diff --git a/stage6/inetutils.sh b/phase4/inetutils.sh similarity index 100% rename from stage6/inetutils.sh rename to phase4/inetutils.sh diff --git a/stage6/intltool.sh b/phase4/intltool.sh similarity index 100% rename from stage6/intltool.sh rename to phase4/intltool.sh diff --git a/stage6/iproute2.sh b/phase4/iproute2.sh similarity index 100% rename from stage6/iproute2.sh rename to phase4/iproute2.sh diff --git a/stage6/kbd.sh b/phase4/kbd.sh similarity index 100% rename from stage6/kbd.sh rename to phase4/kbd.sh diff --git a/stage6/kmod.sh b/phase4/kmod.sh similarity index 100% rename from stage6/kmod.sh rename to phase4/kmod.sh diff --git a/stage6/less.sh b/phase4/less.sh similarity index 100% rename from stage6/less.sh rename to phase4/less.sh diff --git a/stage6/lfsbootscripts.sh b/phase4/lfsbootscripts.sh similarity index 100% rename from stage6/lfsbootscripts.sh rename to phase4/lfsbootscripts.sh diff --git a/stage6/libcap.sh b/phase4/libcap.sh similarity index 100% rename from stage6/libcap.sh rename to phase4/libcap.sh diff --git a/stage6/libffi.sh b/phase4/libffi.sh similarity index 100% rename from stage6/libffi.sh rename to phase4/libffi.sh diff --git a/stage6/libpipeline.sh b/phase4/libpipeline.sh similarity index 100% rename from stage6/libpipeline.sh rename to phase4/libpipeline.sh diff --git a/stage6/libtool.sh b/phase4/libtool.sh similarity index 100% rename from stage6/libtool.sh rename to phase4/libtool.sh diff --git a/stage6/linux.sh b/phase4/linux.sh similarity index 100% rename from stage6/linux.sh rename to phase4/linux.sh diff --git a/stage6/m4.sh b/phase4/m4.sh similarity index 100% rename from stage6/m4.sh rename to phase4/m4.sh diff --git a/stage6/make.sh b/phase4/make.sh similarity index 100% rename from stage6/make.sh rename to phase4/make.sh diff --git a/stage6/mandb.sh b/phase4/mandb.sh similarity index 100% rename from stage6/mandb.sh rename to phase4/mandb.sh diff --git a/stage6/mandoc.sh b/phase4/mandoc.sh similarity index 100% rename from stage6/mandoc.sh rename to phase4/mandoc.sh diff --git a/phase4/manpages.sh b/phase4/manpages.sh new file mode 100644 index 0000000..0a65805 --- /dev/null +++ b/phase4/manpages.sh @@ -0,0 +1,3 @@ +# Man Pages Phase 4 +make prefix=/usr install + diff --git a/stage6/meson.sh b/phase4/meson.sh similarity index 100% rename from stage6/meson.sh rename to phase4/meson.sh diff --git a/stage6/mpc.sh b/phase4/mpc.sh similarity index 100% rename from stage6/mpc.sh rename to phase4/mpc.sh diff --git a/stage6/mpfr.sh b/phase4/mpfr.sh similarity index 100% rename from stage6/mpfr.sh rename to phase4/mpfr.sh diff --git a/stage6/ncurses.sh b/phase4/ncurses.sh similarity index 100% rename from stage6/ncurses.sh rename to phase4/ncurses.sh diff --git a/stage6/ninja.sh b/phase4/ninja.sh similarity index 100% rename from stage6/ninja.sh rename to phase4/ninja.sh diff --git a/stage6/openssl.sh b/phase4/openssl.sh similarity index 100% rename from stage6/openssl.sh rename to phase4/openssl.sh diff --git a/stage6/patch.sh b/phase4/patch.sh similarity index 100% rename from stage6/patch.sh rename to phase4/patch.sh diff --git a/stage6/perl.sh b/phase4/perl.sh similarity index 100% rename from stage6/perl.sh rename to phase4/perl.sh diff --git a/stage6/pkgconfig.sh b/phase4/pkgconfig.sh similarity index 100% rename from stage6/pkgconfig.sh rename to phase4/pkgconfig.sh diff --git a/stage6/popt.sh b/phase4/popt.sh similarity index 100% rename from stage6/popt.sh rename to phase4/popt.sh diff --git a/stage6/procps.sh b/phase4/procps.sh similarity index 100% rename from stage6/procps.sh rename to phase4/procps.sh diff --git a/stage6/psmisc.sh b/phase4/psmisc.sh similarity index 100% rename from stage6/psmisc.sh rename to phase4/psmisc.sh diff --git a/stage6/python.sh b/phase4/python.sh similarity index 100% rename from stage6/python.sh rename to phase4/python.sh diff --git a/stage6/readline.sh b/phase4/readline.sh similarity index 100% rename from stage6/readline.sh rename to phase4/readline.sh diff --git a/stage6/sed.sh b/phase4/sed.sh similarity index 100% rename from stage6/sed.sh rename to phase4/sed.sh diff --git a/stage6/shadow.sh b/phase4/shadow.sh similarity index 100% rename from stage6/shadow.sh rename to phase4/shadow.sh diff --git a/stage6/sysklogd.sh b/phase4/sysklogd.sh similarity index 100% rename from stage6/sysklogd.sh rename to phase4/sysklogd.sh diff --git a/stage6/sysvinit.sh b/phase4/sysvinit.sh similarity index 100% rename from stage6/sysvinit.sh rename to phase4/sysvinit.sh diff --git a/stage6/tar.sh b/phase4/tar.sh similarity index 100% rename from stage6/tar.sh rename to phase4/tar.sh diff --git a/stage6/tcl.sh b/phase4/tcl.sh similarity index 100% rename from stage6/tcl.sh rename to phase4/tcl.sh diff --git a/stage6/texinfo.sh b/phase4/texinfo.sh similarity index 100% rename from stage6/texinfo.sh rename to phase4/texinfo.sh diff --git a/stage6/utillinux.sh b/phase4/utillinux.sh similarity index 100% rename from stage6/utillinux.sh rename to phase4/utillinux.sh diff --git a/stage6/vim.sh b/phase4/vim.sh similarity index 100% rename from stage6/vim.sh rename to phase4/vim.sh diff --git a/stage6/xmlparser.sh b/phase4/xmlparser.sh similarity index 100% rename from stage6/xmlparser.sh rename to phase4/xmlparser.sh diff --git a/phase4/xz.sh b/phase4/xz.sh new file mode 100644 index 0000000..7459582 --- /dev/null +++ b/phase4/xz.sh @@ -0,0 +1,16 @@ +# Xz Phase 4 +./configure --prefix=/usr \ + --disable-static \ + --docdir=/usr/share/doc/${PKG_XZ%.tar*} + +make + +if $RUN_TESTS +then + set +e + make check + set -e +fi + +make install + diff --git a/phase4/zlib.sh b/phase4/zlib.sh new file mode 100644 index 0000000..6772e60 --- /dev/null +++ b/phase4/zlib.sh @@ -0,0 +1,16 @@ +# Zlib Phase 4 +./configure --prefix=/usr + +make + +if $RUN_TESTS +then + set +e + make check + set -e +fi + +make install + +rm -f /usr/lib/libz.a + diff --git a/phase4/zstd.sh b/phase4/zstd.sh new file mode 100644 index 0000000..4249707 --- /dev/null +++ b/phase4/zstd.sh @@ -0,0 +1,13 @@ +# Zstd Phase 4 +make + +if $RUN_TESTS +then + set +e + make check + set -e +fi + +make PREFIX=/usr install +rm /usr/lib/libzstd.a + diff --git a/config/pkgs.sh b/pkgs.sh similarity index 100% rename from config/pkgs.sh rename to pkgs.sh diff --git a/pkgs/.gitignore b/pkgs/.gitignore new file mode 100644 index 0000000..d6b7ef3 --- /dev/null +++ b/pkgs/.gitignore @@ -0,0 +1,2 @@ +* +!.gitignore diff --git a/stage1/build_img.sh b/stage1/build_img.sh deleted file mode 100755 index b489828..0000000 --- a/stage1/build_img.sh +++ /dev/null @@ -1,57 +0,0 @@ -#!/usr/bin/env bash -# Script to create OS image file -# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -set -e - -# create image file -fallocate -l$LFS_IMG_SIZE $LFS_IMG - -# attach loop device -LOOP=$(losetup -f) -losetup $LOOP $LFS_IMG - -# partition the device -FDISK_STR=" -g # create GPT -n # new partition - # default 1st partition - # default start sector (2048) -+512M # 512 MiB -t # modify parition type -uefi # EFI type -n # new partition - # default 2nd partition - # default start sector - # default end sector -w # write to device and quit -" -FDISK_STR=$(echo "$FDISK_STR" | sed 's/ *#.*//g') -# fdisk fails to get kernel to re-read the partition table -# so ignore non-zero exit code, and manually re-read -set +e -fdisk $LOOP &>> /dev/null <> /dev/null -mkdir -p $LFS -mount $LOOP_P2 $LFS - -# setup EFI partition -mkfs.vfat $LOOP_P1 -mkdir -p $LFS/boot/efi -mount -t vfat $LOOP_P1 $LFS/boot/efi - diff --git a/stage1/check_dep_versions.sh b/stage1/check_dep_versions.sh deleted file mode 100755 index 4ae4288..0000000 --- a/stage1/check_dep_versions.sh +++ /dev/null @@ -1,112 +0,0 @@ -#!/usr/bin/env bash -# Check build dependencies -# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - -EXIT_STATUS=0 - -function compare_version { - local MINVERS=$1 - local CURRVERS=$2 - local NDIGS=$(echo $MINVERS | tr . ' ' | wc -w) - - for ((FIELD=1; FIELD < NDIGS; FIELD++)) - do - MINDIGIT=$(echo $MINVERS | cut -d"." -f$FIELD) - CURRDIGIT=$(echo $CURRVERS | cut -d"." -f$FIELD) - if [[ "0x$CURRDIGIT" -gt "0x$MINDIGIT" ]] - then - return 0 - elif [[ "0x$CURRDIGIT" -eq "0x$MINDIGIT" ]] - then - continue - else - return -1 - fi - done - - return 0 -} - -function check_dependency { - local PROG=$1 - local MINVERS=$2 - local CURRVERSFIELD=$3 - - if ! command -v $PROG 1>/dev/null - then - echo "ERROR: '$PROG' not found" - return -1 - fi - - CURRVERS=$($PROG --version 2>&1 | head -n1 | cut -d" " -f$CURRVERSFIELD | cut -d"(" -f1 | cut -d"," -f1 | cut -d"-" -f1) - CURRVERS=${CURRVERS%"${CURRVERS##*[0-9]}"} - - if ! compare_version "$MINVERS" "$CURRVERS" - then - echo "ERROR: $PROG $CURRVERS does not satisfy minimum version $MINVERS" - fi -} - -if ! check_dependency bash 3.2 4; then EXIT_STATUS=-1; fi -if ! check_dependency ld 2.13.1 7; then EXIT_STATUS=-1; fi # binutils -if ! check_dependency bison 2.7 4; then EXIT_STATUS=-1; fi -if ! check_dependency chown 6.9 4; then EXIT_STATUS=-1; fi # coreutils -if ! check_dependency diff 2.8.1 4; then EXIT_STATUS=-1; fi -if ! check_dependency find 4.2.31 4; then EXIT_STATUS=-1; fi -if ! check_dependency gawk 4.0.1 3; then EXIT_STATUS=-1; fi -if ! check_dependency gcc 4.8 4; then EXIT_STATUS=-1; fi -if ! check_dependency g++ 4.8 4; then EXIT_STATUS=-1; fi -if ! check_dependency grep 2.5.1a 4; then EXIT_STATUS=-1; fi -if ! check_dependency gzip 1.3.12 2; then EXIT_STATUS=-1; fi -if ! check_dependency m4 1.4.10 4; then EXIT_STATUS=-1; fi -if ! check_dependency make 4.0 3; then EXIT_STATUS=-1; fi -if ! check_dependency patch 2.5.4 3; then EXIT_STATUS=-1; fi -if ! check_dependency python3 3.4 2; then EXIT_STATUS=-1; fi -if ! check_dependency sed 4.1.5 4; then EXIT_STATUS=-1; fi -if ! check_dependency tar 1.22 4; then EXIT_STATUS=-1; fi -if ! check_dependency makeinfo 4.7 4; then EXIT_STATUS=-1; fi # texinfo -if ! check_dependency xz 5.0.0 4; then EXIT_STATUS=-1; fi - -# check that yacc is a link to bison -if [ ! -h /usr/bin/yacc -a "$(readlink -f /usr/bin/yacc)"="/usr/bin/bison.yacc" ] -then - echo "ERROR: /usr/bin/yacc needs to be a link to /usr/bin/bison.yacc" - EXIT_STATUS=-1 -fi - -# check that awk is a link to gawk -if [ ! -h /usr/bin/awk -a "$(readlink -f /usr/bin/awk)"="/usr/bin/gawk" ] -then - echo "ERROR: /usr/bin/awk needs to be a link to /usr/bin/gawk" - EXIT_STATUS=-1 -fi - -# check linux version -MIN_LINUX_VERS=3.2 -LINUX_VERS=$(cat /proc/version | head -n1 | cut -d" " -f3 | cut -d"-" -f1) -if ! compare_version "$MIN_LINUX_VERSION" "$LINUX_VERS" -then - echo "ERROR: Linux kernel version '$LINUX_VERS' does not satisfy minium version $MIN_LINUX_VERS" - EXIT_STATUS=-1 -fi - -# check perl version -MIN_PERL_VERS=5.8.8 -PERL_VERS=$(perl -V:version | cut -d"'" -f2) -if ! compare_version "$MIN_PERL_VERS" "$PERL_VERS" -then - echo "ERROR: Perl version '$PERL_VERS' does not satisfy minium version $MIN_PERL_VERS" - EXIT_STATUS=-1 -fi - -# check G++ compilation -echo 'int main(){}' > dummy.c && g++ -o dummy dummy.c -if [ ! -x dummy ] -then - echo "ERROR: g++ compilation failed" - EXIT_STATUS=-1 -fi -rm -f dummy.c dummy - -exit $EXIT_STATUS - diff --git a/stage1/main.sh b/stage1/main.sh deleted file mode 100755 index 944712c..0000000 --- a/stage1/main.sh +++ /dev/null @@ -1,30 +0,0 @@ -#!/usr/bin/env bash -# Stage 1 -# ~~~~~~~ -# This stage covers chapters 1-2 of LFS 11.1, -# which involves checking system requirements, -# and creating and partitioning a virtual disk. -set -e - -if [ "$UID" != "0" ] -then - echo "ERROR: $0 must be run as root." - exit -1 -fi - -if [ -z "$LFS" ] -then - echo "ERROR: $0: Missing config vars." - exit -1 -fi - -cd $(dirname $0) - -echo -n "Checking dependency versions... " -./check_dep_versions.sh -echo "done." - -echo -n "Building image... " -./build_img.sh -echo "done." - diff --git a/stage2/hosts b/stage2/hosts deleted file mode 100644 index 059ada9..0000000 --- a/stage2/hosts +++ /dev/null @@ -1,3 +0,0 @@ -127.0.0.1 localhost apollo -::1 localhost - diff --git a/stage2/main.sh b/stage2/main.sh deleted file mode 100755 index db75a53..0000000 --- a/stage2/main.sh +++ /dev/null @@ -1,133 +0,0 @@ -#!/usr/bin/env bash -# Stage 2 -# ~~~~~~~ -# This stage roughly covers chapters 3 and 4 -# of LFS 11.1, which involves setting up the -# basic directory layout, creating the LFS -# user, and downloading the necessary packages. -set -e - -if [ "$UID" != "0" ] -then - echo "ERROR: $0 must be run as root." - exit -1 -fi - -if [ -z "$LFS" ] -then - echo "ERROR: $0: Missing config vars." - exit -1 -fi - -if [ -z "$(mount | grep $LFS)" ] -then - echo "ERROR: $LFS_IMG does not appear to be mounted on $LFS." - exit -1 -fi - -cd $(dirname $0) - -echo -n "Creating basic directory layout... " - -mkdir -p $LFS/sources -chmod a+wt $LFS/sources - -mkdir -p $LFS/{etc,var} $LFS/usr/{bin,lib,sbin} - -for i in bin lib sbin -do - ln -s usr/$i $LFS/$i -done - -case $(uname -m) in - x86_64) mkdir -p $LFS/lib64;; -esac - -mkdir -p $LFS/tools -mkdir -p $LFS/{boot/{,grub},home,mnt,opt,srv} -mkdir -p $LFS/etc/{opt,sysconfig,modprobe.d} -mkdir -p $LFS/lib/firmware -mkdir -p $LFS/media/{floppy,cdrom} -mkdir -p $LFS/usr/{,local/}{include,src} -mkdir -p $LFS/usr/local/{bin,lib,sbin} -mkdir -p $LFS/usr/{,local/}share/{color,dict,doc,info,locale,man} -mkdir -p $LFS/usr/{,local/}share/{misc,terminfo,zoneinfo} -mkdir -p $LFS/usr/{,local/}share/man/man{1..8} -mkdir -p $LFS/var/{cache,local,log,mail,opt,spool} -mkdir -p $LFS/var/lib/{color,misc,locate} -mkdir -p $LFS/{dev,proc,sys,run} -mkdir -p $LFS/home/tester -mkdir -p $LFS/var/mail/tester - -echo $HOSTNAME > $LFS/etc/hostname - -cat > $LFS/etc/hosts < $LFS/etc/fstab -cat ./grub.cfg | sed "s/LFSROOTLABEL/$LFSROOTLABEL/" > $LFS/boot/grub/grub.cfg - -mknod -m 600 $LFS/dev/console c 5 1 -mknod -m 666 $LFS/dev/null c 1 3 - -touch $LFS/var/log/{btmp,lastlog,faillog,wtmp} - -ln -s /run $LFS/var/run -ln -s /run/lock $LFS/var/lock -ln -s /proc/self/mounts $LFS/etc/mtab - -install -d -m 0750 $LFS/root -install -d -m 1777 $LFS/tmp $LFS/var/tmp - -# group 13 is utmp in the /etc/group file -chgrp 13 $LFS/var/log/lastlog -chmod 664 $LFS/var/log/lastlog -chmod 600 $LFS/var/log/btmp - -echo "done." - -echo -n "Creating $LFS_USER user... " - -if [ -z "$(getent group $LFS_USER)" ] -then - groupadd $LFS_USER -fi - -if ! id $LFS_USER &> /dev/null -then - useradd -s /bin/bash -g $LFS_USER -m -k /dev/null $LFS_USER -fi - -if [ -h $LFS/dev/shm ]; then - mkdir -p $LFS/$(readlink $LFS/dev/shm) -fi - -cp ./{hosts,group,passwd} $LFS/etc - -echo "done." - -echo -n "Downloading packages to $LFS/sources... " - -PACKAGE_URLS=$(cat $PACKAGE_LIST | cut -d"=" -f2) -wget --quiet --directory-prefix $LFS/sources --input-file - < $BUILD_LOG && rm $BUILD_LOG && echo "done."; } - then - echo "failed. Check $BUILD_LOG for more information." - exit -1 - fi -} - -cd /sources/stage5 - -build_package "libstdcpp" ./libstdcpp.sh /sources/libstdcpp_stage5.log -build_package "Gettext" ./gettext.sh /sources/gettext_stage5.log -build_package "Bison" ./bison.sh /sources/bison_stage5.log -build_package "Perl" ./perl.sh /sources/perl_stage5.log -build_package "Python" ./python.sh /sources/python_stage5.log -build_package "Texinfo" ./texinfo.sh /sources/texinfo_stage5.log -build_package "Util Linux" ./util_linux.sh /sources/util_linux_stage5.log - -# Cleanup -rm -rf /usr/share/{info,man,doc}/* -find /usr/{lib,libexec} -name \*.la -delete -rm -rf /tools - diff --git a/stage5/gettext.sh b/stage5/gettext.sh deleted file mode 100644 index fe5478c..0000000 --- a/stage5/gettext.sh +++ /dev/null @@ -1,22 +0,0 @@ -#!/usr/bin/env bash -# Gettext Stage 5 -# ~~~~~~~~~~~~~~~ -set -e - -cd /sources - -eval "$(grep GETTEXT $PACKAGE_LIST)" -PKG_GETTEXT=$(basename $PKG_GETTEXT) - -tar -xf $PKG_GETTEXT -cd ${PKG_GETTEXT%.tar*} - -./configure --disable-shared - -make - -cp gettext-tools/src/{msgfmt,msgmerge,xgettext} /usr/bin - -cd /sources -rm -rf ${PKG_GETTEXT%.tar*} - diff --git a/stage5/main.sh b/stage5/main.sh deleted file mode 100755 index 685ba59..0000000 --- a/stage5/main.sh +++ /dev/null @@ -1,63 +0,0 @@ -#!/usr/bin/env bash -# Stage 5 -# ~~~~~~~ -# This stage roughly covers chapter 7, which -# involves mounting a few files and directories -# from the host system into the $LFS filesystem -# tree, entering the chroot environment, and building -# additional temporary tools. -set -e - -if [ "$UID" != "0" ] -then - echo "ERROR: $0 must be run as root." - exit -1 -fi - -if [ -z "$LFS" ] -then - echo "ERROR: $0: Missing config vars." - exit -1 -fi - -if [ -z "$(mount | grep $LFS)" ] -then - echo "ERROR: $LFS_IMG does not appear to be mounted on $LFS." - exit -1 -fi - -cd $(dirname $0) - -echo -n "Performing final environment setup... " - -chown -R root:root $LFS/* -chown 101:101 $LFS/home/tester - -mount --bind /dev $LFS/dev -mount --bind /dev/pts $LFS/dev/pts - -mount -t proc proc $LFS/proc -mount -t sysfs sysfs $LFS/sys -mount -t tmpfs tmpfs $LFS/run - -BUILD_SCRIPTS=$(find . ! -name "main.sh" -a ! -name ".") - -mkdir $LFS/sources/stage5 -cp $BUILD_SCRIPTS $CONF_DIR/pkgs.sh $LFS/sources/stage5 -chmod +x $LFS/sources/stage5/*.sh - -echo "done." - -echo -n "Entering chroot environment... " - -chroot "$LFS" /usr/bin/env -i \ - HOME=/root \ - TERM="$TERM" \ - PS1='(lfs chroot) \u:\w\$ ' \ - PATH=/usr/bin:/usr/sbin \ - LFS_TGT=$LFS_TGT \ - PACKAGE_LIST=/sources/stage5/pkgs.sh \ - /bin/bash +h -c "/sources/stage5/chroot_main.sh" - -rm -r $LFS/sources/stage5 - diff --git a/stage5/python.sh b/stage5/python.sh deleted file mode 100644 index 22b1a63..0000000 --- a/stage5/python.sh +++ /dev/null @@ -1,23 +0,0 @@ -#!/usr/bin/env bash -# Python Stage 5 -# ~~~~~~~~~~~~~~ -set -e - -cd /sources - -eval "$(grep PYTHON $PACKAGE_LIST)" -PKG_PYTHON=$(basename $PKG_PYTHON) - -tar -xf $PKG_PYTHON -cd ${PKG_PYTHON%.tar*} - -./configure --prefix=/usr \ - --enable-shared \ - --without-ensurepip - -make -make install - -cd /sources -rm -rf ${PKG_PYTHON%.tar*} - diff --git a/stage5/texinfo.sh b/stage5/texinfo.sh deleted file mode 100644 index 985bd12..0000000 --- a/stage5/texinfo.sh +++ /dev/null @@ -1,23 +0,0 @@ -#!/usr/bin/env bash -# Texinfo Stage 5 -# ~~~~~~~~~~~~~~~ -set -e - -cd /sources - -eval "$(grep TEXINFO $PACKAGE_LIST)" -PKG_TEXINFO=$(basename $PKG_TEXINFO) - -tar -xf $PKG_TEXINFO -cd ${PKG_TEXINFO%.tar*} - -sed -e 's/__attribute_nonnull__/__nonnull/' \ - -i gnulib/lib/malloc/dynarray-skeleton.c - -./configure --prefix=/usr - -make -make install - -cd /sources -rm -rf ${PKG_TEXINFO%.tar*} diff --git a/stage6/chroot_main.sh b/stage6/chroot_main.sh deleted file mode 100644 index 2d2ae8f..0000000 --- a/stage6/chroot_main.sh +++ /dev/null @@ -1,119 +0,0 @@ -# This script will be loaded into the $LFS/sources directory -# where it will be executed by a chroot shell. -# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -set -e -echo "done." - -# This is copied from config/user.sh since I'm too lazy to -# figure out a way to pass it into the chroot environment. -function build_package { - BUILD_SCRIPT=$1 - PACKAGE_NAME=${BUILD_SCRIPT%.sh} - BUILD_LOG=/sources/${PACKAGE_NAME}_stage6.log - - echo -n "Building ${PACKAGE_NAME}... " - if ! { $BUILD_SCRIPT &> $BUILD_LOG && rm $BUILD_LOG && echo "done."; } - then - echo "failed. Check $BUILD_LOG for more information." - exit -1 - fi -} - -mkdir -p $TESTLOG_DIR - -cd /sources/stage6 - -build_package ./manpages.sh -build_package ./ianaetc.sh -build_package ./glibc.sh -build_package ./zlib.sh -build_package ./bzip2.sh -build_package ./xz.sh -build_package ./zstd.sh -build_package ./file.sh -build_package ./readline.sh -build_package ./m4.sh -build_package ./bc.sh -build_package ./flex.sh -build_package ./tcl.sh -build_package ./expect.sh -build_package ./dejagnu.sh -build_package ./binutils.sh -build_package ./gmp.sh -build_package ./mpfr.sh -build_package ./mpc.sh -build_package ./attr.sh -build_package ./acl.sh -build_package ./libcap.sh -build_package ./shadow.sh -build_package ./gcc.sh -build_package ./pkgconfig.sh -build_package ./ncurses.sh -build_package ./sed.sh -build_package ./psmisc.sh -build_package ./gettext.sh -build_package ./bison.sh -build_package ./grep.sh -build_package ./bash.sh -build_package ./libtool.sh -build_package ./gdbm.sh -build_package ./gperf.sh -build_package ./expat.sh -build_package ./inetutils.sh -build_package ./less.sh -build_package ./perl.sh -build_package ./xmlparser.sh -build_package ./intltool.sh -build_package ./autoconf.sh -build_package ./automake.sh -build_package ./openssl.sh -build_package ./kmod.sh -build_package ./elfutils.sh -build_package ./libffi.sh -build_package ./python.sh -build_package ./ninja.sh -build_package ./meson.sh -build_package ./coreutils.sh -build_package ./check.sh -build_package ./diffutils.sh -build_package ./gawk.sh -build_package ./findutils.sh -build_package ./groff.sh -# Skipping GRUB MBR build since we are using UEFI -build_package ./gzip.sh -build_package ./iproute2.sh -build_package ./kbd.sh -build_package ./libpipeline.sh -build_package ./make.sh -build_package ./patch.sh -build_package ./tar.sh -build_package ./texinfo.sh -build_package ./vim.sh -build_package ./eudev.sh -build_package ./mandb.sh -build_package ./procps.sh -build_package ./utillinux.sh -build_package ./e2fsprogs.sh -build_package ./sysklogd.sh -build_package ./sysvinit.sh -build_package ./lfsbootscripts.sh - -# UEFI Boot Dependencies -build_pakcage ./popt.sh -build_package ./mandoc.sh -build_package ./efivar.sh -build_package ./efibootmgr.sh -build_package ./grub.sh - -# delete temp files leftover from tests -rm -rf /tmp/* - -# delete libtool archives (only useful when linking to static libs) -find /usr/lib /usr/libexec -name \*.la -delete - -# delete cross compiler tools from previous stages -find /usr -depth -name $LFS_TGT\* | xargs rm -rf - -# remove 'tester' user account -userdel -r tester - diff --git a/stage6/file.sh b/stage6/file.sh deleted file mode 100644 index c4f2173..0000000 --- a/stage6/file.sh +++ /dev/null @@ -1,29 +0,0 @@ -#!/usr/bin/env bash -# File Stage 6 -# ~~~~~~~~~~~~ -set -e - -cd /sources - -eval "$(grep FILE $PACKAGE_LIST)" -PKG_FILE=$(basename $PKG_FILE) - -tar -xf $PKG_FILE -cd ${PKG_FILE%.tar*} - -./configure --prefix=/usr - -make - -if $RUN_TESTS -then - set +e - make check &> $TESTLOG_DIR/file.log - set -e -fi - -make install - -cd /sources -rm -rf ${PKG_FILE%.tar*} - diff --git a/stage6/ianaetc.sh b/stage6/ianaetc.sh deleted file mode 100644 index 3cd7ddd..0000000 --- a/stage6/ianaetc.sh +++ /dev/null @@ -1,18 +0,0 @@ -#!/usr/bin/env bash -# Iana-Etc Stage 6 -# ~~~~~~~~~~~~~~~~ -set -e - -cd /sources - -eval "$(grep IANAETC $PACKAGE_LIST)" -PKG_IANAETC=$(basename $PKG_IANAETC) - -tar -xf $PKG_IANAETC -cd ${PKG_IANAETC%.tar*} - -cp services protocols /etc - -cd /sources -rm -rf ${PKG_IANAETC%.tar*} - diff --git a/stage6/main.sh b/stage6/main.sh deleted file mode 100755 index d6b2522..0000000 --- a/stage6/main.sh +++ /dev/null @@ -1,47 +0,0 @@ -#!/usr/bin/env bash -# Stage 6 -# ~~~~~~~ -# This stage covers chapter 8. This will build the final set of -# packages in LFS. -set -e - -if [ "$UID" != "0" ] -then - echo "ERROR: $0 must be run as root." - exit -1 -fi - -if [ -z "$LFS" ] -then - echo "ERROR: $0: Missing config vars." - exit -1 -fi - -if [ -z "$(mount | grep $LFS)" ] -then - echo "ERROR: $LFS_IMG does not appear to be mounted on $LFS." - exit -1 -fi - -cd $(dirname $0) - -BUILD_SCRIPTS=$(find . ! -name "main.sh" -a ! -name ".") - -mkdir $LFS/sources/stage6 -cp $BUILD_SCRIPTS $CONF_DIR/pkgs.sh $LFS/sources/stage6 -chmod +x $LFS/sources/stage6/*.sh - -echo -n "Entering chroot environment... " - -chroot "$LFS" /usr/bin/env -i \ - HOME=/root \ - TERM="$TERM" \ - PS1='(lfs chroot) \u:\w\$ ' \ - PATH=/usr/bin:/usr/sbin \ - LFS_TGT=$LFS_TGT \ - PACKAGE_LIST=/sources/stage6/pkgs.sh \ - RUN_TESTS=$RUN_TESTS \ - TESTLOG_DIR=$TESTLOG_DIR \ - ROOT_PASSWD=$ROOT_PASSWD \ - /bin/bash +h -c "/sources/stage6/chroot_main.sh" - diff --git a/stage6/manpages.sh b/stage6/manpages.sh deleted file mode 100644 index 1778c50..0000000 --- a/stage6/manpages.sh +++ /dev/null @@ -1,18 +0,0 @@ -#!/usr/bin/env bash -# Man Pages Stage 6 -# ~~~~~~~~~~~~~~~~~ -set -e - -cd /sources - -eval "$(grep MANPAGES $PACKAGE_LIST)" -PKG_MANPAGES=$(basename $PKG_MANPAGES) - -tar -xf $PKG_MANPAGES -cd ${PKG_MANPAGES%.tar*} - -make prefix=/usr install - -cd /sources -rm -rf ${PKG_MANPAGES%.tar*} - diff --git a/stage6/xz.sh b/stage6/xz.sh deleted file mode 100644 index 1ecb9c3..0000000 --- a/stage6/xz.sh +++ /dev/null @@ -1,31 +0,0 @@ -#!/usr/bin/env bash -# Xz Stage 6 -# ~~~~~~~~~~ -set -e - -cd /sources - -eval "$(grep XZ $PACKAGE_LIST)" -PKG_XZ=$(basename $PKG_XZ) - -tar -xf $PKG_XZ -cd ${PKG_XZ%.tar*} - -./configure --prefix=/usr \ - --disable-static \ - --docdir=/usr/share/doc/${PKG_XZ%.tar*} - -make - -if $RUN_TESTS -then - set +e - make check &> $TESTLOG_DIR/xz.log - set -e -fi - -make install - -cd /sources -rm -rf ${PKG_XZ%.tar*} - diff --git a/stage6/zlib.sh b/stage6/zlib.sh deleted file mode 100644 index ece3aa9..0000000 --- a/stage6/zlib.sh +++ /dev/null @@ -1,30 +0,0 @@ -#!/usr/bin/env bash -# Zlib Stage 6 -# ~~~~~~~~~~~~ -set -e - -cd /sources - -eval "$(grep ZLIB $PACKAGE_LIST)" -PKG_ZLIB=$(basename $PKG_ZLIB) - -tar -xf $PKG_ZLIB -cd ${PKG_ZLIB%.tar*} - -./configure --prefix=/usr - -make - -if $RUN_TESTS -then - set +e - make check &> $TESTLOG_DIR/zlib.log - set -e -fi - -make install - -rm -f /usr/lib/libz.a - -cd /sources -rm -rf ${PKG_ZLIB%.tar*} diff --git a/stage6/zstd.sh b/stage6/zstd.sh deleted file mode 100644 index f423680..0000000 --- a/stage6/zstd.sh +++ /dev/null @@ -1,28 +0,0 @@ -#!/usr/bin/env bash -# Zstd Stage 6 -# ~~~~~~~~~~~~ -set -e - -cd /sources - -eval "$(grep ZSTD $PACKAGE_LIST)" -PKG_ZSTD=$(basename $PKG_ZSTD) - -tar -xf $PKG_ZSTD -cd ${PKG_ZSTD%.tar*} - -make - -if $RUN_TESTS -then - set +e - make check &> $TESTLOG_DIR/zstd.log - set -e -fi - -make PREFIX=/usr install -rm /usr/lib/libzstd.a - -cd /sources -rm -rf ${PKG_ZSTD%.tar*} - diff --git a/stage2/config-5.16.9 b/static/boot__config-5.16.9 similarity index 100% rename from stage2/config-5.16.9 rename to static/boot__config-5.16.9 diff --git a/stage2/group b/static/etc__group similarity index 100% rename from stage2/group rename to static/etc__group diff --git a/stage2/inittab b/static/etc__inittab similarity index 100% rename from stage2/inittab rename to static/etc__inittab diff --git a/stage2/inputrc b/static/etc__inputrc similarity index 100% rename from stage2/inputrc rename to static/etc__inputrc diff --git a/stage2/usb.conf b/static/etc__modprobe.d__usb.conf similarity index 100% rename from stage2/usb.conf rename to static/etc__modprobe.d__usb.conf diff --git a/stage2/passwd b/static/etc__passwd similarity index 100% rename from stage2/passwd rename to static/etc__passwd diff --git a/stage2/shells b/static/etc__shells similarity index 100% rename from stage2/shells rename to static/etc__shells diff --git a/stage2/clock b/static/etc__sysconfig__clock similarity index 100% rename from stage2/clock rename to static/etc__sysconfig__clock diff --git a/stage2/rc.site b/static/etc__sysconfig__rc.site similarity index 100% rename from stage2/rc.site rename to static/etc__sysconfig__rc.site diff --git a/stage2/grub.cfg b/templates/boot__grub__grub.cfg similarity index 100% rename from stage2/grub.cfg rename to templates/boot__grub__grub.cfg diff --git a/stage2/fstab b/templates/etc__fstab similarity index 100% rename from stage2/fstab rename to templates/etc__fstab diff --git a/templates/etc__hosts b/templates/etc__hosts new file mode 100644 index 0000000..746247f --- /dev/null +++ b/templates/etc__hosts @@ -0,0 +1,9 @@ +127.0.0.1 localhost +127.0.1.1 LFSHOSTNAME + +::1 localhost ip6-localhost ip6-loopback +fe00::0 ip6-localnet +ff00::0 ip6-mcastprefix +ff02::1 ip6-allnodes +ff02::2 ip6-allrouters + diff --git a/test.sh b/test.sh new file mode 100755 index 0000000..08547bd --- /dev/null +++ b/test.sh @@ -0,0 +1 @@ +echo $TEST