New paste Repaste Download
#!/bin/bash
set +h
umask 022
ZBefore=`date +%s`
zzreset="\033[0m"
zzwhite="\033[1;37m"
zzred="\033[1;31m"
zzpurple="\033[1;35m"
zoption=$1
SET_PASSWORD=0
LC_ALL=POSIX
zprint() { echo -e "${zzwhite} *** $* *** ${zzreset}"; }
zmsg() { echo -e "${zzred} *** $* *** ${zzreset}"; }
stars() { echo -e "${zzpurple} $(printf '%.0s*' {1..100}) ${zzreset}"; }
print_formatted_duration() {
    duration=$1
    hour=$((duration / 3600))
    mins=$(( (duration % 3600) / 60 ))
    sec=$((duration % 60))
    zprint $(printf "%02d Hours, %02d Minutes and %02d Seconds \n" ${hour} ${mins} ${sec})
}
zbuild_check() {
    local file="$1"
    if [[ -f ${ZBUILD}/${file} ]]; then
        return 0
    else
        stars
        zprint "Error: Missing $file ... Exiting"
        return 1
    fi
}
zbuild_wait() {
    local wait=${1:-5}
    zmsg "Waiting $wait seconds or Press [SPACE] to continue..."
    read -t $wait -n 1 key
    if [[ $key == " " ]]; then
        zmsg "Skipped wait."
    else
        zmsg "Continuing..."
    fi
}
zbuild_exec() {
    local file="$1"
    case "$file" in
        *.zbc)
            ${ZBUILD}/zbuild "${ZBUILD}/$file" || { echo "Error: $file - Exiting: $?"; return 1; }
            ;;
        *.sh)
            "${ZBUILD}/$file" || { echo "Error: $file - Exiting: $?"; return 1; }
            ;;
        *)
            zmsg "Invalid File Found in Stream"
            return 666
            ;;
    esac
}
check_chroot() {
    IS_CHROOT=0
    if [[ ! /proc/1/root/. -ef / ]]; then
        zmsg "Inside chroot"
        ZBUILD=${ZBUILD:-/zbuild}
        ZSRC=${ZSRC:-/sources}
        IS_CHROOT=1
    else
        zmsg "Outside chroot"
        source $(pwd)/stage0/0-environment.sh || { zmsg "Error Getting Environment"; exit 1; }
    fi
}
check_chroot
STAGE=0
case "$zoption" in
    "1")
        zprint "Stage 1 Section 1 Build"
        [[ $IS_CHROOT -eq 0 ]] && {
            STAGE=1
            stage_build=$(printf "%s " stage1/{100..121}-*.zbc)
        }
        ;;
    "2")
        zprint "Stage 1 Section 2 Build"
        [[ $IS_CHROOT -eq 1 ]] && {
            STAGE=2
            stage_build=$(printf "%s " stage1/{200..208}-*)
        }
        ;;
    "3")
        zprint "Stage 3 Base System"
        [[ $IS_CHROOT -eq 1 ]] && {
            ZBUILD_PASSWORD="${2:-lfsroot}"
            SET_PASSWORD=1
            STAGE=3
            echo "root:${ZBUILD_PASSWORD}"
            stage_build=$(printf "%s " stage2/{001..079}-*.zbc)
        }
        ;;
    "4")
        zprint "Stage 4 Configuration"
        [[ $IS_CHROOT -eq 1 ]] && {
            STAGE=4
            stage_build=$(printf "%s " stage2/{100..107}-*.sh)
        }
        ;;
    "5")
        zprint "Stage 5 Extra Packages"
        [[ $IS_CHROOT -eq 1 ]] && {
            STAGE=5
            stage_build=$(printf "%s " stage2/{110..129}-*.zbc)
        }
        ;;
    "6")
        zprint "Stage 6 Finalize and Reboot"
        [[ $IS_CHROOT -eq 1 ]] && {
            STAGE=6
            stage_build=$(printf "%s " stage2/{200..202}-*.sh)
        }
        ;;
    *)
        zprint "Usage: $0 1 - Primary Build Not in Chroot"
        zprint " The Following Options Require chroot "
        zprint " $0 2 - Extra Temporary Packages"
        zprint " $0 3 {password} - Main Build System"
        zprint " $0 4 - Finalize Scripts"
        zprint " $0 5 - Extra Packages"
        zprint " $0 6 - Kernel and Grub Setup"
esac
ZERROR=0
for script in ${stage_build[@]}; do
    stars
    zprint "Executing ${script}"
    zbuild_check "${script}" || break
    zbuild_wait 5
    zbuild_exec "${script}" || ZERROR=666
    stars
done
if [[ $ZERROR -eq 0 ]]; then
    if [[ $STAGE -eq 2 ]]; then
        zmsg "Cleaning up Temporary Tools"
        rm -rf /usr/share/{info,man,doc}/*
        find /usr/{lib,libexec} -name \*.la -delete
        rm -rf /tools
        rm -rf /zbuild/log/*
        rm -rf /zbuild/tmp/*
    fi
    if [[ $SET_PASSWORD -eq 1 ]]; then
        echo "${ZBUILD_PASSWORD}" | passwd --stdin root
    fi
    if [[ $STAGE -eq 3 ]]; then
        zmsg "Cleaning Up Temporary Files"
        rm -rf /tmp/{*,.*}
        find /usr/lib /usr/libexec -name \*.la -delete
        find /usr -depth -name $(uname -m)-lfs-linux-gnu\* | xargs rm -rf
    fi
fi
ZAfter=`date +%s`
let duration=ZAfter-ZBefore
print_formatted_duration $duration
Filename: build_stage.sh. Size: 4kb. View raw, , hex, or download this file.

This paste expires on 2025-07-28 19:15:33.598161. Pasted through web.