From aecbe1232b0952155b3b11b941089ded84c6eabf Mon Sep 17 00:00:00 2001 From: Michael Tremer Date: Thu, 23 Nov 2017 12:35:17 +0000 Subject: [PATCH] make.sh: Cleanup prepareenv Signed-off-by: Michael Tremer --- make.sh | 277 +++++++++++++++++++++++++------------------------------- 1 file changed, 124 insertions(+), 153 deletions(-) diff --git a/make.sh b/make.sh index 4609c29772..def61eaece 100755 --- a/make.sh +++ b/make.sh @@ -100,10 +100,10 @@ else fi # This is the directory where make.sh is in -BASEDIR=$(echo $FULLPATH | sed "s/\/$BASENAME//g") +export BASEDIR=$(echo $FULLPATH | sed "s/\/$BASENAME//g") LOGFILE=$BASEDIR/log/_build.preparation.log -export BASEDIR LOGFILE +export LOGFILE DIR_CHK=$BASEDIR/cache/check mkdir $BASEDIR/log/ 2>/dev/null @@ -426,6 +426,128 @@ exiterror() { exit 1 } +prepareenv() { + # Are we running the right shell? + if [ ! -z "${BASH}" ]; then + exiterror "BASH environment variable is not set. You're probably running the wrong shell." + fi + + if [ -z "${BASH_VERSION}" ]; then + exiterror "Not running BASH shell." + fi + + # Trap on emergency exit + trap "exiterror 'Build process interrupted'" SIGINT SIGTERM SIGKILL SIGSTOP SIGQUIT + + # Resetting our nice level + echo -ne "Resetting our nice level to $NICE" | tee -a $LOGFILE + renice $NICE $$ > /dev/null + if [ `nice` != "$NICE" ]; then + beautify message FAIL + exiterror "Failed to set correct nice level" + else + beautify message DONE + fi + + # Checking if running as root user + echo -ne "Checking if we're running as root user" | tee -a $LOGFILE + if [ `id -u` != 0 ]; then + beautify message FAIL + exiterror "Not building as root" + else + beautify message DONE + fi + + # Checking for necessary temporary space + echo -ne "Checking for necessary space on disk $BASE_DEV" | tee -a $LOGFILE + BASE_DEV=`df -P -k $BASEDIR | tail -n 1 | awk '{ print $1 }'` + BASE_ASPACE=`df -P -k $BASEDIR | tail -n 1 | awk '{ print $4 }'` + if (( 2048000 > $BASE_ASPACE )); then + BASE_USPACE=`du -skx $BASEDIR | awk '{print $1}'` + if (( 2048000 - $BASE_USPACE > $BASE_ASPACE )); then + beautify message FAIL + exiterror "Not enough temporary space available, need at least 2GB on $BASE_DEV" + fi + else + beautify message DONE + fi + + # Set umask + umask 022 + + # Set LFS Directory + LFS=$BASEDIR/build + + # Check ${TOOLS_DIR} symlink + if [ -h "${TOOLS_DIR}" ]; then + rm -f "${TOOLS_DIR}" + fi + + if [ ! -e "${TOOLS_DIR}" ]; then + ln -s "${BASEDIR}/build${TOOLS_DIR}" "${TOOLS_DIR}" + fi + + if [ ! -h "${TOOLS_DIR}" ]; then + exiterror "Could not create ${TOOLS_DIR} symbolic link" + fi + + # Setup environment + set +h + LC_ALL=POSIX + export LFS LC_ALL CFLAGS CXXFLAGS MAKETUNING + unset CC CXX CPP LD_LIBRARY_PATH LD_PRELOAD + + # Make some extra directories + mkdir -p "${BASEDIR}/build${TOOLS_DIR}" 2>/dev/null + mkdir -p $BASEDIR/build/{etc,usr/src} 2>/dev/null + mkdir -p $BASEDIR/build/{dev/{shm,pts},proc,sys} + mkdir -p $BASEDIR/{cache,ccache} 2>/dev/null + mkdir -p $BASEDIR/build/usr/src/{cache,config,doc,html,langs,lfs,log,src,ccache} + + mknod -m 600 $BASEDIR/build/dev/console c 5 1 2>/dev/null + mknod -m 666 $BASEDIR/build/dev/null c 1 3 2>/dev/null + + # Make all sources and proc available under lfs build + mount --bind /dev $BASEDIR/build/dev + mount --bind /dev/pts $BASEDIR/build/dev/pts + mount --bind /dev/shm $BASEDIR/build/dev/shm + mount --bind /proc $BASEDIR/build/proc + mount --bind /sys $BASEDIR/build/sys + mount --bind $BASEDIR/cache $BASEDIR/build/usr/src/cache + mount --bind $BASEDIR/ccache $BASEDIR/build/usr/src/ccache + mount --bind $BASEDIR/config $BASEDIR/build/usr/src/config + mount --bind $BASEDIR/doc $BASEDIR/build/usr/src/doc + mount --bind $BASEDIR/html $BASEDIR/build/usr/src/html + mount --bind $BASEDIR/langs $BASEDIR/build/usr/src/langs + mount --bind $BASEDIR/lfs $BASEDIR/build/usr/src/lfs + mount --bind $BASEDIR/log $BASEDIR/build/usr/src/log + mount --bind $BASEDIR/src $BASEDIR/build/usr/src/src + + # Run LFS static binary creation scripts one by one + export CCACHE_DIR=$BASEDIR/ccache + export CCACHE_COMPRESS=1 + export CCACHE_COMPILERCHECK="string:toolchain-${TOOLCHAINVER} ${BUILD_ARCH}" + + # Remove pre-install list of installed files in case user erase some files before rebuild + rm -f $BASEDIR/build/usr/src/lsalr 2>/dev/null + + # Prepare string for /etc/system-release. + SYSTEM_RELEASE="${NAME} ${VERSION} (${BUILD_ARCH})" + if [ "$(git status -s | wc -l)" == "0" ]; then + GIT_STATUS="" + else + GIT_STATUS="-dirty" + fi + case "$GIT_BRANCH" in + core*|beta?|rc?) + SYSTEM_RELEASE="${SYSTEM_RELEASE} - $GIT_BRANCH$GIT_STATUS" + ;; + *) + SYSTEM_RELEASE="${SYSTEM_RELEASE} - Development Build: $GIT_BRANCH/$GIT_LASTCOMMIT$GIT_STATUS" + ;; + esac +} + enterchroot() { # Install QEMU helper, if needed qemu_install_helper @@ -782,157 +904,6 @@ else configure_build "default" fi -prepareenv() { - ############################################################################ - # # - # Are we running the right shell? # - # # - ############################################################################ - if [ ! "$BASH" ]; then - exiterror "BASH environment variable is not set. You're probably running the wrong shell." - fi - - if [ -z "${BASH_VERSION}" ]; then - exiterror "Not running BASH shell." - fi - - - ############################################################################ - # # - # Trap on emergency exit # - # # - ############################################################################ - trap "exiterror 'Build process interrupted'" SIGINT SIGTERM SIGKILL SIGSTOP SIGQUIT - - - ############################################################################ - # # - # Resetting our nice level # - # # - ############################################################################ - echo -ne "Resetting our nice level to $NICE" | tee -a $LOGFILE - renice $NICE $$ > /dev/null - if [ `nice` != "$NICE" ]; then - beautify message FAIL - exiterror "Failed to set correct nice level" - else - beautify message DONE - fi - - - ############################################################################ - # # - # Checking if running as root user # - # # - ############################################################################ - echo -ne "Checking if we're running as root user" | tee -a $LOGFILE - if [ `id -u` != 0 ]; then - beautify message FAIL - exiterror "Not building as root" - else - beautify message DONE - fi - - - ############################################################################ - # # - # Checking for necessary temporary space # - # # - ############################################################################ - echo -ne "Checking for necessary space on disk $BASE_DEV" | tee -a $LOGFILE - BASE_DEV=`df -P -k $BASEDIR | tail -n 1 | awk '{ print $1 }'` - BASE_ASPACE=`df -P -k $BASEDIR | tail -n 1 | awk '{ print $4 }'` - if (( 2048000 > $BASE_ASPACE )); then - BASE_USPACE=`du -skx $BASEDIR | awk '{print $1}'` - if (( 2048000 - $BASE_USPACE > $BASE_ASPACE )); then - beautify message FAIL - exiterror "Not enough temporary space available, need at least 2GB on $BASE_DEV" - fi - else - beautify message DONE - fi - - ############################################################################ - # # - # Building Linux From Scratch system # - # # - ############################################################################ - # Set umask - umask 022 - - # Set LFS Directory - LFS=$BASEDIR/build - - # Check ${TOOLS_DIR} symlink - if [ -h "${TOOLS_DIR}" ]; then - rm -f "${TOOLS_DIR}" - fi - - if [ ! -e "${TOOLS_DIR}" ]; then - ln -s "${BASEDIR}/build${TOOLS_DIR}" "${TOOLS_DIR}" - fi - - if [ ! -h "${TOOLS_DIR}" ]; then - exiterror "Could not create ${TOOLS_DIR} symbolic link" - fi - - # Setup environment - set +h - LC_ALL=POSIX - export LFS LC_ALL CFLAGS CXXFLAGS MAKETUNING - unset CC CXX CPP LD_LIBRARY_PATH LD_PRELOAD - - # Make some extra directories - mkdir -p "${BASEDIR}/build${TOOLS_DIR}" 2>/dev/null - mkdir -p $BASEDIR/build/{etc,usr/src} 2>/dev/null - mkdir -p $BASEDIR/build/{dev/{shm,pts},proc,sys} - mkdir -p $BASEDIR/{cache,ccache} 2>/dev/null - mkdir -p $BASEDIR/build/usr/src/{cache,config,doc,html,langs,lfs,log,src,ccache} - - mknod -m 600 $BASEDIR/build/dev/console c 5 1 2>/dev/null - mknod -m 666 $BASEDIR/build/dev/null c 1 3 2>/dev/null - - # Make all sources and proc available under lfs build - mount --bind /dev $BASEDIR/build/dev - mount --bind /dev/pts $BASEDIR/build/dev/pts - mount --bind /dev/shm $BASEDIR/build/dev/shm - mount --bind /proc $BASEDIR/build/proc - mount --bind /sys $BASEDIR/build/sys - mount --bind $BASEDIR/cache $BASEDIR/build/usr/src/cache - mount --bind $BASEDIR/ccache $BASEDIR/build/usr/src/ccache - mount --bind $BASEDIR/config $BASEDIR/build/usr/src/config - mount --bind $BASEDIR/doc $BASEDIR/build/usr/src/doc - mount --bind $BASEDIR/html $BASEDIR/build/usr/src/html - mount --bind $BASEDIR/langs $BASEDIR/build/usr/src/langs - mount --bind $BASEDIR/lfs $BASEDIR/build/usr/src/lfs - mount --bind $BASEDIR/log $BASEDIR/build/usr/src/log - mount --bind $BASEDIR/src $BASEDIR/build/usr/src/src - - # Run LFS static binary creation scripts one by one - export CCACHE_DIR=$BASEDIR/ccache - export CCACHE_COMPRESS=1 - export CCACHE_COMPILERCHECK="string:toolchain-${TOOLCHAINVER} ${BUILD_ARCH}" - - # Remove pre-install list of installed files in case user erase some files before rebuild - rm -f $BASEDIR/build/usr/src/lsalr 2>/dev/null - - # Prepare string for /etc/system-release. - SYSTEM_RELEASE="${NAME} ${VERSION} (${BUILD_ARCH})" - if [ "$(git status -s | wc -l)" == "0" ]; then - GIT_STATUS="" - else - GIT_STATUS="-dirty" - fi - case "$GIT_BRANCH" in - core*|beta?|rc?) - SYSTEM_RELEASE="${SYSTEM_RELEASE} - $GIT_BRANCH$GIT_STATUS" - ;; - *) - SYSTEM_RELEASE="${SYSTEM_RELEASE} - Development Build: $GIT_BRANCH/$GIT_LASTCOMMIT$GIT_STATUS" - ;; - esac -} - buildtoolchain() { local error=false case "${BUILD_ARCH}:${HOST_ARCH}" in -- 2.39.2