From 34c733421de1cd7b431fb0a70d71fa15df3a4773 Mon Sep 17 00:00:00 2001 From: William Harrington Date: Fri, 26 Mar 2021 14:36:09 -0500 Subject: Remove unset command. Not needed. Remove the sleep 5 when compiling. --- packageinstall.sh | 3 --- 1 file changed, 3 deletions(-) diff --git a/packageinstall.sh b/packageinstall.sh index 6dc7601..28f9f4b 100644 --- a/packageinstall.sh +++ b/packageinstall.sh @@ -28,7 +28,6 @@ else pushd "${DIRNAME}" > /dev/null || return 1 printf "%b" "\n${CYN}Compiling ${YLW}${PACKAGE}${RST}... " - sleep 5 mkdir -p "${LFS}/sources/log/chapter${CHAPTER}/" source "${LFS}/sources/chapter${CHAPTER}/${PACKAGE}.sh" 2>&1 > "${LFS}/sources/log/chapter${CHAPTER}/${PACKAGE}.log" 2>&1 & pid=$! @@ -48,5 +47,3 @@ else done fi - -unset VERSION URL CACHEFILE DIRNAME CHAPTER PACKAGE -- cgit v1.2.3-54-g00ecf From 40e3d866cdea72d8e21a13bff2c1aa0c1ee0b819 Mon Sep 17 00:00:00 2001 From: William Harrington Date: Fri, 26 Mar 2021 14:35:53 -0500 Subject: Capitalize the error and remove the unset. It is not needed. --- download.sh | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/download.sh b/download.sh index 72b7bb3..9b3da10 100644 --- a/download.sh +++ b/download.sh @@ -27,10 +27,8 @@ cat packages.csv patches.csv | while read -r line; do download "${URL}" if ! echo "${MD5SUM} ${LFS}/sources/${CACHEFILE}" | md5sum -c > /dev/null 2>&1; then rm -f "${LFS}/sources/${CACHEFILE}" - printf "%b" "\n${GRN}Verification of ${YLW}${CACHEFILE} ${RED}failed! MD5 mismatch!${RST}\n" + printf "%b" "\n${GRN}Verification of ${YLW}${CACHEFILE} ${RED}FAILED! MD5 MISMATCH!${RST}\n" exit 1 fi fi done - -unset VERSION URL MD5SUM CACHEFILE -- cgit v1.2.3-54-g00ecf From 0d3c8da1ea884e032ceb6529c4fb3f8e82eb8bff Mon Sep 17 00:00:00 2001 From: William Harrington Date: Fri, 26 Mar 2021 14:35:10 -0500 Subject: Last exit code will be the unset... remove it. Don't need it anyway. --- chapter6/m4.sh | 2 -- 1 file changed, 2 deletions(-) diff --git a/chapter6/m4.sh b/chapter6/m4.sh index 6dc2c9a..2f67ebe 100644 --- a/chapter6/m4.sh +++ b/chapter6/m4.sh @@ -12,5 +12,3 @@ sed '/^HELP2MAN/s/$/ --no-discard-stderr/' -i doc/Makefile.in --build="$(build-aux/config.guess)" && make && make DESTDIR="${LFS}" -j1 install - -unset CFLAGS -- cgit v1.2.3-54-g00ecf From 1db835499260d6deced9b9b9851503c78a4d8727 Mon Sep 17 00:00:00 2001 From: William Harrington Date: Fri, 26 Mar 2021 14:38:20 -0500 Subject: Colorize CHROOT as red. --- lfs.sh | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/lfs.sh b/lfs.sh index 8a940c3..15265d4 100755 --- a/lfs.sh +++ b/lfs.sh @@ -104,9 +104,9 @@ done chmod ugo+x preparechroot.sh chmod ugo+x insidechroot.sh -printf "%b" "${CYN}PREPARING CHROOT ENVIRONMENT...${RST}\n" +printf "%b" "${CYN}PREPARING ${RED}CHROOT${CYN} ENVIRONMENT...${RST}\n" sudo ./preparechroot.sh "${LFS}" -printf "%b" "${CYN}ENTERING CHROOT ENVIRONMENT...${RST}\n" +printf "%b" "${CYN}ENTERING ${RED}CHROOT${CYN} ENVIRONMENT...${RST}\n" sleep 3 sudo chroot "${LFS}" /usr/bin/env \ -- cgit v1.2.3-54-g00ecf From 87ac58595266f0bafcef0c9a48ca2d40615c7434 Mon Sep 17 00:00:00 2001 From: William Harrington Date: Fri, 26 Mar 2021 14:50:49 -0500 Subject: Provide wget exit status when download fails. --- download.sh | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/download.sh b/download.sh index 9b3da10..4e3c794 100644 --- a/download.sh +++ b/download.sh @@ -9,6 +9,11 @@ download() echo -n " " wget -nc -q --show-progress --progress=dot "$url" 2>&1 | grep --line-buffered "%" | \ sed -u -e "s,\.,,g" | awk '{printf("\b\b\b\b%4s", $2)}' + local retval="${PIPESTATUS[0]}" + if [ "${retval}" -ne 0 ]; then + printf "%b" "${RED}FAILED! WGET EXIT (${retval})\n${RST}" + exit "${retval}" + fi printf "%b" "\b\b\b\b\n" tput cnorm } -- cgit v1.2.3-54-g00ecf From 50b67be7e409161f5c6f4847ca2beb23e81b51ae Mon Sep 17 00:00:00 2001 From: William Harrington Date: Fri, 26 Mar 2021 15:03:25 -0500 Subject: Create a script exporting separate functions and remove download function from downloads script. Reformat MD5 mismatch failed message. --- download.sh | 18 +----------------- functions.sh | 19 +++++++++++++++++++ 2 files changed, 20 insertions(+), 17 deletions(-) create mode 100644 functions.sh diff --git a/download.sh b/download.sh index 4e3c794..2cec438 100644 --- a/download.sh +++ b/download.sh @@ -2,22 +2,6 @@ # Downlod Packages and Patches -download() -{ - tput civis - local url=$1 - echo -n " " - wget -nc -q --show-progress --progress=dot "$url" 2>&1 | grep --line-buffered "%" | \ - sed -u -e "s,\.,,g" | awk '{printf("\b\b\b\b%4s", $2)}' - local retval="${PIPESTATUS[0]}" - if [ "${retval}" -ne 0 ]; then - printf "%b" "${RED}FAILED! WGET EXIT (${retval})\n${RST}" - exit "${retval}" - fi - printf "%b" "\b\b\b\b\n" - tput cnorm -} - cat packages.csv patches.csv | while read -r line; do #NAME="$(echo "$line" | cut -d\, -f1)" VERSION="$(echo "$line" | cut -d\, -f2)" @@ -32,7 +16,7 @@ cat packages.csv patches.csv | while read -r line; do download "${URL}" if ! echo "${MD5SUM} ${LFS}/sources/${CACHEFILE}" | md5sum -c > /dev/null 2>&1; then rm -f "${LFS}/sources/${CACHEFILE}" - printf "%b" "\n${GRN}Verification of ${YLW}${CACHEFILE} ${RED}FAILED! MD5 MISMATCH!${RST}\n" + printf "%b" "${GRN}Verification of ${YLW}${CACHEFILE} ${RED}FAILED! MD5 MISMATCH!${RST}\n" exit 1 fi fi diff --git a/functions.sh b/functions.sh new file mode 100644 index 0000000..d2ff5be --- /dev/null +++ b/functions.sh @@ -0,0 +1,19 @@ +#!/bin/bash + +download() +{ + tput civis + local url=$1 + echo -n " " + wget -nc -q --show-progress --progress=dot "$url" 2>&1 | grep --line-buffered "%" | \ + sed -u -e "s,\.,,g" | awk '{printf("\b\b\b\b%4s", $2)}' + local retval="${PIPESTATUS[0]}" + if [ "${retval}" -ne 0 ]; then + printf "%b" "${RED}FAILED! WGET EXIT (${retval})\n${RST}" + exit "${retval}" + fi + printf "%b" "\b\b\b\b\n" + tput cnorm +} + +export -f download -- cgit v1.2.3-54-g00ecf From b8475089fd20a1711bf363f6ce145f7bbc81fed0 Mon Sep 17 00:00:00 2001 From: William Harrington Date: Fri, 26 Mar 2021 15:04:19 -0500 Subject: Source functions. --- lfs.sh | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/lfs.sh b/lfs.sh index 15265d4..63eb282 100755 --- a/lfs.sh +++ b/lfs.sh @@ -14,6 +14,10 @@ printf "%b" "Sourcing spinner...\n" # Spinner function (returns an exit value) source spinner.sh +printf "%b" "Sourcing functions...\n" +# Functions used during build +source functions.sh + # Version check script #source versioncheck.sh -- cgit v1.2.3-54-g00ecf From 9ed0afd2d6f7ea4402367beffa0780666c2f217d Mon Sep 17 00:00:00 2001 From: William Harrington Date: Fri, 26 Mar 2021 15:51:29 -0500 Subject: Remove spinner script and move spinner function to functions. --- functions.sh | 48 +++++++++++++++++++++++++++++++++++++++++++++++- spinner.sh | 48 ------------------------------------------------ 2 files changed, 47 insertions(+), 49 deletions(-) delete mode 100644 spinner.sh diff --git a/functions.sh b/functions.sh index d2ff5be..6b8671a 100644 --- a/functions.sh +++ b/functions.sh @@ -12,8 +12,54 @@ download() printf "%b" "${RED}FAILED! WGET EXIT (${retval})\n${RST}" exit "${retval}" fi - printf "%b" "\b\b\b\b\n" tput cnorm } export -f download + +## spinner takes the pid of the process as the first argument and +# string to display as second argument (default provided) and spins +# until the process completes. +spinner() { + local proc="$1" + #local str="${2:-'Copyright of KatworX© Tech. Developed by Arjun Singh Kathait and Debugged by the ☆Stack Overflow Community☆'}" + local str="" + local delay="0.1" + tput civis # hide cursor + printf "%b" "${WHT}" + while [ -d /proc/"$proc" ]; do + #-\|/ + #⠁⠂⠄⡀⢀⠠⠐⠈ + #▁▂▃▄▅▆▇█▇▆▅▄▃▂▁ + #←↖↑↗→↘↓↙ + #▖▘▝▗ + #◢◣◤◥ + #┤┘┴└├┌┬┐ + #◰◳◲◱ + #◴◷◶◵ + #◐◓◑◒ + #⣾⣽⣻⢿⡿⣟⣯⣷ + printf '\033[s\033[u[ ▁ ] %s\033[u' "$str"; sleep "$delay" + printf '\033[s\033[u[ ▂ ] %s\033[u' "$str"; sleep "$delay" + printf '\033[s\033[u[ ▃ ] %s\033[u' "$str"; sleep "$delay" + printf '\033[s\033[u[ ▄ ] %s\033[u' "$str"; sleep "$delay" + printf '\033[s\033[u[ ▅ ] %s\033[u' "$str"; sleep "$delay" + printf '\033[s\033[u[ ▆ ] %s\033[u' "$str"; sleep "$delay" + printf '\033[s\033[u[ ▇ ] %s\033[u' "$str"; sleep "$delay" + printf '\033[s\033[u[ █ ] %s\033[u' "$str"; sleep "$delay" + printf '\033[s\033[u[ ▇ ] %s\033[u' "$str"; sleep "$delay" + printf '\033[s\033[u[ ▆ ] %s\033[u' "$str"; sleep "$delay" + printf '\033[s\033[u[ ▅ ] %s\033[u' "$str"; sleep "$delay" + printf '\033[s\033[u[ ▄ ] %s\033[u' "$str"; sleep "$delay" + printf '\033[s\033[u[ ▃ ] %s\033[u' "$str"; sleep "$delay" + printf '\033[s\033[u[ ▂ ] %s\033[u' "$str"; sleep "$delay" + printf '\033[s\033[u[ ▁ ] %s\033[u' "$str"; sleep "$delay" + done + wait "${proc}" + retval=$? + printf '\033[s\033[u%*s\033[u\033[0m' $((${#str}+6)) " " # return to normal + tput cnorm # restore cursor + return $retval +} + +export -f spinner diff --git a/spinner.sh b/spinner.sh deleted file mode 100644 index 74cb450..0000000 --- a/spinner.sh +++ /dev/null @@ -1,48 +0,0 @@ -#!/bin/bash - -## spinner takes the pid of the process as the first argument and -# string to display as second argument (default provided) and spins -# until the process completes. -spinner() { - local proc="$1" - #local str="${2:-'Copyright of KatworX© Tech. Developed by Arjun Singh Kathait and Debugged by the ☆Stack Overflow Community☆'}" - local str="" - local delay="0.1" - tput civis # hide cursor - printf "%b" "${WHT}" - while [ -d /proc/"$proc" ]; do - #-\|/ - #⠁⠂⠄⡀⢀⠠⠐⠈ - #▁▂▃▄▅▆▇█▇▆▅▄▃▂▁ - #←↖↑↗→↘↓↙ - #▖▘▝▗ - #◢◣◤◥ - #┤┘┴└├┌┬┐ - #◰◳◲◱ - #◴◷◶◵ - #◐◓◑◒ - #⣾⣽⣻⢿⡿⣟⣯⣷ - printf '\033[s\033[u[ ▁ ] %s\033[u' "$str"; sleep "$delay" - printf '\033[s\033[u[ ▂ ] %s\033[u' "$str"; sleep "$delay" - printf '\033[s\033[u[ ▃ ] %s\033[u' "$str"; sleep "$delay" - printf '\033[s\033[u[ ▄ ] %s\033[u' "$str"; sleep "$delay" - printf '\033[s\033[u[ ▅ ] %s\033[u' "$str"; sleep "$delay" - printf '\033[s\033[u[ ▆ ] %s\033[u' "$str"; sleep "$delay" - printf '\033[s\033[u[ ▇ ] %s\033[u' "$str"; sleep "$delay" - printf '\033[s\033[u[ █ ] %s\033[u' "$str"; sleep "$delay" - printf '\033[s\033[u[ ▇ ] %s\033[u' "$str"; sleep "$delay" - printf '\033[s\033[u[ ▆ ] %s\033[u' "$str"; sleep "$delay" - printf '\033[s\033[u[ ▅ ] %s\033[u' "$str"; sleep "$delay" - printf '\033[s\033[u[ ▄ ] %s\033[u' "$str"; sleep "$delay" - printf '\033[s\033[u[ ▃ ] %s\033[u' "$str"; sleep "$delay" - printf '\033[s\033[u[ ▂ ] %s\033[u' "$str"; sleep "$delay" - printf '\033[s\033[u[ ▁ ] %s\033[u' "$str"; sleep "$delay" - done - wait "${proc}" - retval=$? - printf '\033[s\033[u%*s\033[u\033[0m' $((${#str}+6)) " " # return to normal - tput cnorm # restore cursor - return $retval -} - -export -f spinner -- cgit v1.2.3-54-g00ecf From c8facfd6a5004be24f413239b0c5adfa963c2aea Mon Sep 17 00:00:00 2001 From: William Harrington Date: Fri, 26 Mar 2021 15:52:17 -0500 Subject: Reformat MD5SUM information and include OK or FAILURE on line underneath successful download. --- download.sh | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/download.sh b/download.sh index 2cec438..5f5c608 100644 --- a/download.sh +++ b/download.sh @@ -16,8 +16,11 @@ cat packages.csv patches.csv | while read -r line; do download "${URL}" if ! echo "${MD5SUM} ${LFS}/sources/${CACHEFILE}" | md5sum -c > /dev/null 2>&1; then rm -f "${LFS}/sources/${CACHEFILE}" - printf "%b" "${GRN}Verification of ${YLW}${CACHEFILE} ${RED}FAILED! MD5 MISMATCH!${RST}\n" + printf "%b" "\n${IPRP} MD5SUM ${YLW}${MD5SUM} ${RED}FAILED! MD5 MISMATCH!${RST}\n" exit 1 fi + + printf "%b" "\n${IPRP} MD5SUM ${YLW}${MD5SUM}${GRN} OK\n${RST}" + fi done -- cgit v1.2.3-54-g00ecf From f1e0994f3ce25bfe25616c037fcbc83ac1324f4f Mon Sep 17 00:00:00 2001 From: William Harrington Date: Fri, 26 Mar 2021 15:52:39 -0500 Subject: Update to linux-5.10.26 from 5.10.17. --- packages.csv | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/packages.csv b/packages.csv index d8c63f0..8766065 100644 --- a/packages.csv +++ b/packages.csv @@ -44,8 +44,8 @@ libffi,3.3,https://sourceware.org/pub/libffi/libffi-@.tar.gz,6313289e32f1d38a9df libpipeline,1.5.3,http://download.savannah.gnu.org/releases/libpipeline/libpipeline-@.tar.gz,dad443d0911cf9f0f1bd90a334bc9004 libstdc++,10.2.0,http://ftp.gnu.org/gnu/gcc/gcc-@/gcc-@.tar.xz,e9fd9b1789155ad09bcf3ae747596b50 libtool,2.4.6,http://ftp.gnu.org/gnu/libtool/libtool-@.tar.xz,1bfb9b923f2c1339b4d2ce1807064aa5 -linux,5.10.17,https://www.kernel.org/pub/linux/kernel/v5.x/linux-@.tar.xz,4908707ed841923d8d1814130d5c380f -linux-api-headers,5.10.17,https://www.kernel.org/pub/linux/kernel/v5.x/linux-@.tar.xz,4908707ed841923d8d1814130d5c380f +linux,5.10.26,https://www.kernel.org/pub/linux/kernel/v5.x/linux-@.tar.xz,90c64d22f4e5deb6283c76365183e17e +linux-api-headers,5.10.26,https://www.kernel.org/pub/linux/kernel/v5.x/linux-@.tar.xz,4908707ed841923d8d1814130d5c380f m4,1.4.18,http://ftp.gnu.org/gnu/m4/m4-@.tar.xz,730bb15d96fffe47e148d1e09235af82 make,4.3,http://ftp.gnu.org/gnu/make/make-@.tar.gz,fc7a67ea86ace13195b0bce683fd4469 man-DB,2.9.4,http://download.savannah.gnu.org/releases/man-db/man-db-@.tar.xz,6e233a555f7b9ae91ce7cd0faa322bce -- cgit v1.2.3-54-g00ecf From 9258fd2d69a6c8caa3a8a5e50c522a90ccc03c88 Mon Sep 17 00:00:00 2001 From: William Harrington Date: Fri, 26 Mar 2021 15:52:56 -0500 Subject: Add bash-5.1 fixes patch up to patch level 004. --- patches.csv | 1 + 1 file changed, 1 insertion(+) diff --git a/patches.csv b/patches.csv index c556e42..48917ee 100644 --- a/patches.csv +++ b/patches.csv @@ -1,3 +1,4 @@ +bash,5.1,http://clfs.org/~kb0iic/patches/bash-5.1-fixes-1.patch,55340b67b1401007a816ea97951695d7 bzip2,1.0.8,http://www.linuxfromscratch.org/patches/lfs/10.1/bzip2-1.0.8-install_docs-1.patch,6a5ac7e89b791aae556de0f745916f7f coreutils,8.32,http://www.linuxfromscratch.org/patches/lfs/10.1/coreutils-8.32-i18n-1.patch,cd8ebed2a67fff2e231026df91af6776 glibc,2.33,http://www.linuxfromscratch.org/patches/lfs/10.1/glibc-2.33-fhs-1.patch,9a5997c3452909b1769918c759eff8a2 -- cgit v1.2.3-54-g00ecf From e1caa75a9b3733dbea28daea5cb928b64278c055 Mon Sep 17 00:00:00 2001 From: William Harrington Date: Fri, 26 Mar 2021 15:53:18 -0500 Subject: Add command for patching bash fixes patch. --- chapter6/bash.sh | 1 + 1 file changed, 1 insertion(+) diff --git a/chapter6/bash.sh b/chapter6/bash.sh index ae7bb34..dee96c6 100644 --- a/chapter6/bash.sh +++ b/chapter6/bash.sh @@ -1,5 +1,6 @@ #!/bin/bash +patch -Np1 -i ../bash-5.1-fixes-1.patch && ./configure --prefix=/usr \ --build="$(support/config.guess)" \ --host="${LFS_TGT}" \ -- cgit v1.2.3-54-g00ecf From ea911e8d99775949e31613d7cb4c5da83ed8ce0f Mon Sep 17 00:00:00 2001 From: William Harrington Date: Fri, 26 Mar 2021 15:53:43 -0500 Subject: Update with kernel version to 5.10.0. --- chapter5/glibc.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/chapter5/glibc.sh b/chapter5/glibc.sh index 54db90a..37dbd2b 100644 --- a/chapter5/glibc.sh +++ b/chapter5/glibc.sh @@ -17,7 +17,7 @@ cd build || exit 1 --prefix=/usr \ --host="${LFS_TGT}" \ --build="$(../scripts/config.guess)" \ - --enable-kernel=4.10.0 \ + --enable-kernel=5.10.0 \ --with-headers="${LFS}"/usr/include \ libc_cv_slibdir=/lib && -- cgit v1.2.3-54-g00ecf From 5b08034d816a147435d8e7ebaae9f72f57a7ec44 Mon Sep 17 00:00:00 2001 From: William Harrington Date: Fri, 26 Mar 2021 15:54:14 -0500 Subject: Remove spinner source since moved to functions. --- lfs.sh | 4 ---- 1 file changed, 4 deletions(-) diff --git a/lfs.sh b/lfs.sh index 63eb282..b21fb95 100755 --- a/lfs.sh +++ b/lfs.sh @@ -10,10 +10,6 @@ printf "%b" "Sourcing environment variables...\n" # LFS build environment settings source env.sh -printf "%b" "Sourcing spinner...\n" -# Spinner function (returns an exit value) -source spinner.sh - printf "%b" "Sourcing functions...\n" # Functions used during build source functions.sh -- cgit v1.2.3-54-g00ecf From dc9970b92ca782c11523252435a4878188d36c78 Mon Sep 17 00:00:00 2001 From: William Harrington Date: Fri, 26 Mar 2021 17:16:46 -0500 Subject: Remove unset command at end and direct all output to /dev/null for tar. --- chapter6/backup.sh | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) diff --git a/chapter6/backup.sh b/chapter6/backup.sh index f2f0d64..6d23c27 100644 --- a/chapter6/backup.sh +++ b/chapter6/backup.sh @@ -9,12 +9,12 @@ else echo -ne "${GRN}Backing up ${YLW}${LFS}${GRN} to ${YLW}${file}${RST}... " pushd "${LFS}" > /dev/null || exit 1 - sudo XZ_OPTS="-T${NUMPROCS} -e" tar cJpf "${HOME}"/"${file}" "${directories[@]}" & pid=$! + sudo XZ_OPTS="-T${NUMPROCS} -e" tar cJpf "${HOME}"/"${file}" "${directories[@]}" >/dev/null 2>&1 & pid=$! spinner "$pid" retval=$? if [ "$retval" -ne 0 ]; then - printf "%b" "${RED}Backup FAILED!${RST}\n" - exit 1 + printf "%b" "${RED}FAILED!${RST}\n" + exit "${retval}" else sudo chown "${USER}" "${HOME}"/"${file}" printf "%b" "${GRN}OK${RST}\n" @@ -23,5 +23,3 @@ else touch "${LFS}/sources/chapter6/backup" fi - -unset file directories -- cgit v1.2.3-54-g00ecf From ef869d7305957f3a20fb03626e81ada7e7f740bd Mon Sep 17 00:00:00 2001 From: William Harrington Date: Fri, 26 Mar 2021 20:29:47 -0500 Subject: Enable cleanup/backup for chapter 6 --- lfs.sh | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/lfs.sh b/lfs.sh index b21fb95..7a4eaa9 100755 --- a/lfs.sh +++ b/lfs.sh @@ -99,8 +99,8 @@ for package in m4 ncurses bash coreutils diffutils file findutils gawk grep gzip fi done -#source chapter6/cleanup.sh -#source chapter6/backup.sh +source chapter6/cleanup.sh +source chapter6/backup.sh chmod ugo+x preparechroot.sh chmod ugo+x insidechroot.sh -- cgit v1.2.3-54-g00ecf From 3a807e072a134b0f5ffc3dc0d616b4ef9f81cff3 Mon Sep 17 00:00:00 2001 From: William Harrington Date: Fri, 26 Mar 2021 23:10:09 -0500 Subject: Replace spinner with random spinner selection when building. Possibility to pass an argument to spinner which chooses which spinner to use. For now it is random. --- functions.sh | 126 ++++++++++++++++++++++++++++++++++++++--------------------- 1 file changed, 82 insertions(+), 44 deletions(-) diff --git a/functions.sh b/functions.sh index 6b8671a..4b1f988 100644 --- a/functions.sh +++ b/functions.sh @@ -17,49 +17,87 @@ download() export -f download -## spinner takes the pid of the process as the first argument and -# string to display as second argument (default provided) and spins -# until the process completes. -spinner() { - local proc="$1" - #local str="${2:-'Copyright of KatworX© Tech. Developed by Arjun Singh Kathait and Debugged by the ☆Stack Overflow Community☆'}" - local str="" - local delay="0.1" - tput civis # hide cursor - printf "%b" "${WHT}" - while [ -d /proc/"$proc" ]; do - #-\|/ - #⠁⠂⠄⡀⢀⠠⠐⠈ - #▁▂▃▄▅▆▇█▇▆▅▄▃▂▁ - #←↖↑↗→↘↓↙ - #▖▘▝▗ - #◢◣◤◥ - #┤┘┴└├┌┬┐ - #◰◳◲◱ - #◴◷◶◵ - #◐◓◑◒ - #⣾⣽⣻⢿⡿⣟⣯⣷ - printf '\033[s\033[u[ ▁ ] %s\033[u' "$str"; sleep "$delay" - printf '\033[s\033[u[ ▂ ] %s\033[u' "$str"; sleep "$delay" - printf '\033[s\033[u[ ▃ ] %s\033[u' "$str"; sleep "$delay" - printf '\033[s\033[u[ ▄ ] %s\033[u' "$str"; sleep "$delay" - printf '\033[s\033[u[ ▅ ] %s\033[u' "$str"; sleep "$delay" - printf '\033[s\033[u[ ▆ ] %s\033[u' "$str"; sleep "$delay" - printf '\033[s\033[u[ ▇ ] %s\033[u' "$str"; sleep "$delay" - printf '\033[s\033[u[ █ ] %s\033[u' "$str"; sleep "$delay" - printf '\033[s\033[u[ ▇ ] %s\033[u' "$str"; sleep "$delay" - printf '\033[s\033[u[ ▆ ] %s\033[u' "$str"; sleep "$delay" - printf '\033[s\033[u[ ▅ ] %s\033[u' "$str"; sleep "$delay" - printf '\033[s\033[u[ ▄ ] %s\033[u' "$str"; sleep "$delay" - printf '\033[s\033[u[ ▃ ] %s\033[u' "$str"; sleep "$delay" - printf '\033[s\033[u[ ▂ ] %s\033[u' "$str"; sleep "$delay" - printf '\033[s\033[u[ ▁ ] %s\033[u' "$str"; sleep "$delay" - done - wait "${proc}" - retval=$? - printf '\033[s\033[u%*s\033[u\033[0m' $((${#str}+6)) " " # return to normal - tput cnorm # restore cursor - return $retval +# Shows a spinner while another command is running. Randomly picks one of 12 spinner styles. +# @args command to run (with any parameters) while showing a spinner. +# E.g. ‹spinner sleep 10› + +function shutdown() { + tput cnorm # reset cursor +} +trap shutdown EXIT + +function cursorBack() { + echo -en "\033[$1D" } -export -f spinner +function spinner() { + # make sure we use non-unicode character type locale + # (that way it works for any locale as long as the font supports the characters) + local LC_CTYPE=C + + local pid=$1 # Process Id of the previous running command + + case $(($RANDOM % 12)) in + 0) + local spin='⠁⠂⠄⡀⢀⠠⠐⠈' + local charwidth=3 + ;; + 1) + local spin='-\|/' + local charwidth=1 + ;; + 2) + local spin="▁▂▃▄▅▆▇█▇▆▅▄▃▂▁" + local charwidth=3 + ;; + 3) + local spin="▉▊▋▌▍▎▏▎▍▌▋▊▉" + local charwidth=3 + ;; + 4) + local spin='←↖↑↗→↘↓↙' + local charwidth=3 + ;; + 5) + local spin='▖▘▝▗' + local charwidth=3 + ;; + 6) + local spin='┤┘┴└├┌┬┐' + local charwidth=3 + ;; + 7) + local spin='◢◣◤◥' + local charwidth=3 + ;; + 8) + local spin='◰◳◲◱' + local charwidth=3 + ;; + 9) + local spin='◴◷◶◵' + local charwidth=3 + ;; + 10) + local spin='◐◓◑◒' + local charwidth=3 + ;; + 11) + local spin='⣾⣽⣻⢿⡿⣟⣯⣷' + local charwidth=3 + ;; + esac + + local i=0 + tput civis # cursor invisible + while kill -0 $pid 2>/dev/null; do + local i=$(((i + $charwidth) % ${#spin})) + printf "%s" "${spin:$i:$charwidth}" + + cursorBack 1 + sleep .1 + done + tput cnorm + wait $pid # capture exit code + return $? +} -- cgit v1.2.3-54-g00ecf From 235efe5cc474d20bf0465ec72583f31f38791266 Mon Sep 17 00:00:00 2001 From: William Harrington Date: Fri, 26 Mar 2021 23:11:03 -0500 Subject: If extraction is successful, print OK. Remove new line before printing the compiling package message. --- packageinstall.sh | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/packageinstall.sh b/packageinstall.sh index 28f9f4b..5105fbb 100644 --- a/packageinstall.sh +++ b/packageinstall.sh @@ -23,11 +23,13 @@ else if [ "$retval" -ne 0 ]; then printf "%b" "${GRN}Extraction ${RED}FAILED!${RST}\n" return $retval + else + printf "%b" "${GRN}OK${RST}\n" fi pushd "${DIRNAME}" > /dev/null || return 1 - printf "%b" "\n${CYN}Compiling ${YLW}${PACKAGE}${RST}... " + printf "%b" "${CYN}Compiling ${YLW}${PACKAGE}${RST}... " mkdir -p "${LFS}/sources/log/chapter${CHAPTER}/" source "${LFS}/sources/chapter${CHAPTER}/${PACKAGE}.sh" 2>&1 > "${LFS}/sources/log/chapter${CHAPTER}/${PACKAGE}.log" 2>&1 & pid=$! -- cgit v1.2.3-54-g00ecf From 345aec40b7a7bfdbd13c13b5aeea833f849360ef Mon Sep 17 00:00:00 2001 From: William Harrington Date: Tue, 30 Mar 2021 09:57:10 -0500 Subject: Add chroot command with argument for chapter 7 and perform chapter 7 commands within insidechroot.sh. --- insidechroot.sh | 147 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++ lfs.sh | 5 +- 2 files changed, 151 insertions(+), 1 deletion(-) diff --git a/insidechroot.sh b/insidechroot.sh index f1eb140..9bd96a0 100644 --- a/insidechroot.sh +++ b/insidechroot.sh @@ -1,5 +1,152 @@ #!/bin/bash +CHAPTER="$1" + source /sources/colors.sh +source /sources/functions.sh printf "%b" "${CYN}SUCCESSFULLY ENTERED ${RED}CHROOT${RST}!\n" + +if [ "${CHAPTER}" -eq 7 ]; then + printf "%b" "${GRN}Creating directories...${RST}\n" + if [ -f /sources/createdirs ]; then + printf "%b" "${GRN} Directories already created.${RST}\n" + else + mkdir -p /boot + mkdir -p /home + mkdir -p /mnt + mkdir -p /opt + mkdir -p /srv + + mkdir -p /etc/opt + mkdir -p /etc/opt/sysconfig + mkdir -p /lib/firmware + mkdir -p /media/floppy + mkdir -p /media/cdrom + mkdir -p /usr/bin + mkdir -p /usr/include + mkdir -p /usr/lib + mkdir -p /usr/sbin + mkdir -p /usr/src + mkdir -p /usr/local/bin + mkdir -p /usr/local/include + mkdir -p /usr/local/lib + mkdir -p /usr/local/sbin + mkdir -p /usr/local/src + mkdir -p /usr/share/color + mkdir -p /usr/share/dict + mkdir -p /usr/share/doc + mkdir -p /usr/share/info + mkdir -p /usr/share/locale + mkdir -p /usr/share/man + mkdir -p /usr/share/man/man1 + mkdir -p /usr/share/man/man2 + mkdir -p /usr/share/man/man3 + mkdir -p /usr/share/man/man4 + mkdir -p /usr/share/man/man5 + mkdir -p /usr/share/man/man6 + mkdir -p /usr/share/man/man7 + mkdir -p /usr/share/man/man8 + mkdir -p /usr/share/misc + mkdir -p /usr/share/terminfo + mkdir -p /usr/share/zoneinfo + mkdir -p /usr/local/share/color + mkdir -p /usr/local/share/dict + mkdir -p /usr/local/share/doc + mkdir -p /usr/local/share/info + mkdir -p /usr/local/share/locale + mkdir -p /usr/local/share/man + mkdir -p /usr/local/share/man/man1 + mkdir -p /usr/local/share/man/man2 + mkdir -p /usr/local/share/man/man3 + mkdir -p /usr/local/share/man/man4 + mkdir -p /usr/local/share/man/man5 + mkdir -p /usr/local/share/man/man6 + mkdir -p /usr/local/share/man/man7 + mkdir -p /usr/local/share/man/man8 + mkdir -p /usr/local/share/misc + mkdir -p /usr/local/share/terminfo + mkdir -p /usr/local/share/zoneinfo + mkdir -p /var/cache + mkdir -p /var/local + mkdir -p /var/log + mkdir -p /var/mail + mkdir -p /var/opt + mkdir -p /var/spool + mkdir -p /var/lib/color + mkdir -p /var/lib/misc + mkdir -p /var/lib/locate + + ln -sf /run /var/run + ln -sf /run/lock /var/lock + + install -d -m 0750 /root + install -d -m 1777 /tmp /var/tmp + + printf "%b" " ${GRN}Directories created${RST}\n" + touch /sources/createdirs + fi + + printf "%b" "${GRN}Creating essential files and symbolic links... ${RST}\n" + if [ -f "/sources/symfiles" ]; then + printf "%b" " ${GRN}Files and symbolic links already created.${RST}\n" + else + ln -sf /proc/self/mounts /etc/mtab + echo "127.0.0.1 localhost $(hostname)" > /etc/hosts + + cat > /etc/passwd << "EOF" +root:x:0:0:root:/root:/bin/bash +bin:x:1:1:bin:/dev/null:/bin/false +daemon:x:6:6:Daemon User:/dev/null:/bin/false +messagebus:x:18:18:D-Bus Message Daemon User:/run/dbus:/bin/false +uuidd:x:80:80:UUID Generation Daemon User:/dev/null:/bin/false +nobody:x:99:99:Unprivileged User:/dev/null:/bin/false +EOF + + cat > /etc/group << "EOF" +root:x:0: +bin:x:1:daemon +sys:x:2: +kmem: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: +usb: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: +nogroup:x:99: +users:x:999: +EOF + + echo "tester:x:${TESTERUID}:101::/home/tester:/bin/bash" >> /etc/passwd + echo "tester:x:101:" >> /etc/group + install -o tester -d /home/tester + + touch /var/log/btmp + touch /var/log/lastlog + touch /var/log/faillog + touch /var/log/tmp + chgrp utmp /var/log/lastlog + chmod 664 /var/log/lastlog + chmod 600 /var/log/btmp + + echo -e " ${GRN}Files and symlinks created.${RST}" + touch /sources/symfiles + fi + + cd /sources || exit 1 + +fi diff --git a/lfs.sh b/lfs.sh index 7a4eaa9..f2b170c 100755 --- a/lfs.sh +++ b/lfs.sh @@ -116,4 +116,7 @@ sudo chroot "${LFS}" /usr/bin/env \ PATH=/bin:/usr/bin:/sbin:/usr/sbin \ NUMPROCS="${NUMPROCS}" \ MAKEFLAGS="${MAKEFLAGS}" \ - /bin/bash --login +h -c "/sources/insidechroot.sh" + TESTERUID="$(id -u)" \ + /bin/bash --login +h -c "/sources/insidechroot.sh 7" + +printf "%b" "${CYN}EXITED ${RED}CHROOT${CYN} ENVIRONMENT...${RST}\n" -- cgit v1.2.3-54-g00ecf From 367d99faff99b8b4143118ff42e9e1921a2d7ad0 Mon Sep 17 00:00:00 2001 From: William Harrington Date: Tue, 30 Mar 2021 10:02:31 -0500 Subject: Use essential for essential files and symlinks. --- insidechroot.sh | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/insidechroot.sh b/insidechroot.sh index 9bd96a0..91f75c9 100644 --- a/insidechroot.sh +++ b/insidechroot.sh @@ -88,8 +88,8 @@ if [ "${CHAPTER}" -eq 7 ]; then fi printf "%b" "${GRN}Creating essential files and symbolic links... ${RST}\n" - if [ -f "/sources/symfiles" ]; then - printf "%b" " ${GRN}Files and symbolic links already created.${RST}\n" + if [ -f "/sources/essential" ]; then + printf "%b" " ${GRN}Essential files and symbolic links already created.${RST}\n" else ln -sf /proc/self/mounts /etc/mtab echo "127.0.0.1 localhost $(hostname)" > /etc/hosts @@ -143,8 +143,8 @@ EOF chmod 664 /var/log/lastlog chmod 600 /var/log/btmp - echo -e " ${GRN}Files and symlinks created.${RST}" - touch /sources/symfiles + echo -e " ${GRN}Essential files and symlinks created.${RST}" + touch /sources/essential fi cd /sources || exit 1 -- cgit v1.2.3-54-g00ecf From 0acc64ba99e0a3d295342e647e096d404bd8f619 Mon Sep 17 00:00:00 2001 From: William Harrington Date: Tue, 30 Mar 2021 10:25:20 -0500 Subject: Update linux to 5.10.27 and update md5sum. --- packages.csv | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/packages.csv b/packages.csv index 8766065..5f1421f 100644 --- a/packages.csv +++ b/packages.csv @@ -44,8 +44,8 @@ libffi,3.3,https://sourceware.org/pub/libffi/libffi-@.tar.gz,6313289e32f1d38a9df libpipeline,1.5.3,http://download.savannah.gnu.org/releases/libpipeline/libpipeline-@.tar.gz,dad443d0911cf9f0f1bd90a334bc9004 libstdc++,10.2.0,http://ftp.gnu.org/gnu/gcc/gcc-@/gcc-@.tar.xz,e9fd9b1789155ad09bcf3ae747596b50 libtool,2.4.6,http://ftp.gnu.org/gnu/libtool/libtool-@.tar.xz,1bfb9b923f2c1339b4d2ce1807064aa5 -linux,5.10.26,https://www.kernel.org/pub/linux/kernel/v5.x/linux-@.tar.xz,90c64d22f4e5deb6283c76365183e17e -linux-api-headers,5.10.26,https://www.kernel.org/pub/linux/kernel/v5.x/linux-@.tar.xz,4908707ed841923d8d1814130d5c380f +linux,5.10.27,https://cdn.kernel.org/pub/linux/kernel/v5.x/linux-@.tar.xz,506ee265062384ac1194b2ea8317ca4f +linux-api-headers,5.10.27,cdn://www.kernel.org/pub/linux/kernel/v5.x/linux-@.tar.xz,506ee265062384ac1194b2ea8317ca4f m4,1.4.18,http://ftp.gnu.org/gnu/m4/m4-@.tar.xz,730bb15d96fffe47e148d1e09235af82 make,4.3,http://ftp.gnu.org/gnu/make/make-@.tar.gz,fc7a67ea86ace13195b0bce683fd4469 man-DB,2.9.4,http://download.savannah.gnu.org/releases/man-db/man-db-@.tar.xz,6e233a555f7b9ae91ce7cd0faa322bce -- cgit v1.2.3-54-g00ecf From 41923fdbc608b40fad3ba1822d2e4b262615ea04 Mon Sep 17 00:00:00 2001 From: William Harrington Date: Tue, 30 Mar 2021 10:26:15 -0500 Subject: Always check md5sum even if file exists. File my be partial. Print message that file is cached and then check md5sum. If md5sum fails, remove file. Next time script is ran, it will download and check again. --- download.sh | 15 +++++++++------ 1 file changed, 9 insertions(+), 6 deletions(-) diff --git a/download.sh b/download.sh index 5f5c608..d210b1e 100644 --- a/download.sh +++ b/download.sh @@ -14,13 +14,16 @@ cat packages.csv patches.csv | while read -r line; do printf "%b" "${PRP}Downloading ${YLW}${CACHEFILE}${RST}... " download "${URL}" - if ! echo "${MD5SUM} ${LFS}/sources/${CACHEFILE}" | md5sum -c > /dev/null 2>&1; then - rm -f "${LFS}/sources/${CACHEFILE}" - printf "%b" "\n${IPRP} MD5SUM ${YLW}${MD5SUM} ${RED}FAILED! MD5 MISMATCH!${RST}\n" - exit 1 - fi + else + printf "%b" "${PRP}File cached ${YLW}${CACHEFILE}${RST}... " + fi + + if ! echo "${MD5SUM} ${LFS}/sources/${CACHEFILE}" | md5sum -c > /dev/null 2>&1; then + rm -f "${LFS}/sources/${CACHEFILE}" + printf "%b" "\n${IPRP} MD5SUM ${YLW}${MD5SUM} ${RED}FAILED! MD5 MISMATCH!${RST}\n" + exit 1 + fi printf "%b" "\n${IPRP} MD5SUM ${YLW}${MD5SUM}${GRN} OK\n${RST}" - fi done -- cgit v1.2.3-54-g00ecf From a477e1713f783a2a1a18b7ca247d0e78bd3bb337 Mon Sep 17 00:00:00 2001 From: William Harrington Date: Tue, 30 Mar 2021 10:26:42 -0500 Subject: Use intense white for spinner and download percentage status. --- functions.sh | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/functions.sh b/functions.sh index 4b1f988..cab97b5 100644 --- a/functions.sh +++ b/functions.sh @@ -4,7 +4,7 @@ download() { tput civis local url=$1 - echo -n " " + printf "%b" "${IWHT} " wget -nc -q --show-progress --progress=dot "$url" 2>&1 | grep --line-buffered "%" | \ sed -u -e "s,\.,,g" | awk '{printf("\b\b\b\b%4s", $2)}' local retval="${PIPESTATUS[0]}" @@ -92,7 +92,7 @@ function spinner() { tput civis # cursor invisible while kill -0 $pid 2>/dev/null; do local i=$(((i + $charwidth) % ${#spin})) - printf "%s" "${spin:$i:$charwidth}" + printf "%b" "${IWHT}${spin:$i:$charwidth}${RST}" cursorBack 1 sleep .1 -- cgit v1.2.3-54-g00ecf From 909cf8496c276ab756ba5b41da44809817f48d5a Mon Sep 17 00:00:00 2001 From: William Harrington Date: Tue, 30 Mar 2021 10:41:37 -0500 Subject: Update bison to 3.7.5. --- packages.csv | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages.csv b/packages.csv index 5f1421f..cfa49e8 100644 --- a/packages.csv +++ b/packages.csv @@ -5,7 +5,7 @@ automake,1.16.3,http://ftp.gnu.org/gnu/automake/automake-@.tar.xz,c27f608a4e1f30 bash,5.1,http://ftp.gnu.org/gnu/bash/bash-@.tar.gz,bb91a17fd6c9032c26d0b2b78b50aff5 bc,3.3.0,https://github.com/gavinhoward/bc/releases/download/@/bc-@.tar.xz,452ae2d467b1d7212bb7896c0c689825 binutils,2.36.1,http://ftp.gnu.org/gnu/binutils/binutils-@.tar.xz,628d490d976d8957279bbbff06cf29d4 -bison,3.7.5,http://ftp.gnu.org/gnu/bison/bison-@.tar.xz,9b762dc24a6723f86d14d957d3deeb90 +bison,3.7.6,http://ftp.gnu.org/gnu/bison/bison-@.tar.xz,d61aa92e3562cb7292b004ce96173cf7 bzip2,1.0.8,https://www.sourceware.org/pub/bzip2/bzip2-@.tar.gz,67e051268d0c475ea773822f7500d0e5 check,0.15.2,https://github.com/libcheck/check/releases/download/@/check-@.tar.gz,50fcafcecde5a380415b12e9c574e0b2 coreutils,8.32,http://ftp.gnu.org/gnu/coreutils/coreutils-@.tar.xz,022042695b7d5bcf1a93559a9735e668 -- cgit v1.2.3-54-g00ecf