#!/bin/bash # $Id$ #=== MAKEFILE HEADER === #----------------------------------# wrt_Makefile_header() { # #----------------------------------# ( cat << EOF # This file is automatically generated by jhalfs # DO NOT EDIT THIS FILE MANUALLY # # Generated on `date "+%F %X %Z"` SRC = /sources MOUNT_PT = $BUILDDIR PKG_LST = $PKG_LST LUSER = $LUSER LGROUP = $LGROUP SCRIPT_ROOT = $SCRIPT_ROOT ADD_BLFS_TOOLS = $BLFS_TOOL BASEDIR = \$(MOUNT_PT) SRCSDIR = \$(BASEDIR)/sources CMDSDIR = \$(BASEDIR)/\$(SCRIPT_ROOT)/$PROGNAME-commands LOGDIR = \$(BASEDIR)/\$(SCRIPT_ROOT)/logs TESTLOGDIR = \$(BASEDIR)/\$(SCRIPT_ROOT)/test-logs crCMDSDIR = /\$(SCRIPT_ROOT)/$PROGNAME-commands crLOGDIR = /\$(SCRIPT_ROOT)/logs crTESTLOGDIR = /\$(SCRIPT_ROOT)/test-logs SU_LUSER = su - \$(LUSER) -c LUSER_HOME = /home/\$(LUSER) PRT_DU = echo -e "\nKB: \`du -skx --exclude=\$(SCRIPT_ROOT) --exclude=lost+found \$(MOUNT_PT) \`\n" PRT_DU_CR = echo -e "\nKB: \`du -skx --exclude=\$(SCRIPT_ROOT) --exclude=lost+found / \`\n" export PATH := \${PATH}:/usr/sbin include makefile-functions EOF ) > $MKFILE } #======================= #==== PACKAGES NAMES === #----------------------------------# get_package_tarball_name() { # #----------------------------------# local script_name=`echo ${1} | sed -e 's@[0-9]\{1\}-@@'` # The use of 'head' is necessary to limit the return value to the FIRST match.. # hopefully this will not cause problems. # case $script_name in tcl) echo $(grep "^tcl" $JHALFSDIR/pkg_tarball_list | head -n1 ) ;; linux-headers) if [ "${PROGNAME}" = "lfs" ]; then # Uses kernel headers directly echo $(grep "^linux-[[:digit:]]" $JHALFSDIR/pkg_tarball_list | head -n1 ) else # CLFS/HLFS use massaged headers package echo $(grep "^linux-headers-[[:digit:]]" $JHALFSDIR/pkg_tarball_list | head -n1 ) fi ;; *) echo $(grep "^$script_name-[[:digit:]]" $JHALFSDIR/pkg_tarball_list | head -n1 ) ;; esac } #======================= #==== TARGET HEADER ==== #----------------------------------# LUSER_wrt_target() { # Create target and initialize log file #----------------------------------# local i=$1 local PREV=$2 ( cat << EOF $i: $PREV @\$(call echo_message, Building) @./progress_bar.sh \$@ \$\$PPID & @echo "\$(nl_)\`date\`\$(nl_)" >logs/\$@ @\$(PRT_DU) >>logs/\$@ EOF ) >> $MKFILE.tmp } #----------------------------------# CHROOT_wrt_target() { # Create target and initialize log file #----------------------------------# local i=$1 local PREV=$2 case $i in iteration* ) local LOGFILE="${this_script}.log" ;; * ) local LOGFILE="\$@" ;; esac ( cat << EOF $i: $PREV @\$(call echo_message, Building) @./progress_bar.sh \$@ \$\$PPID & @echo "\$(nl_)\`date\`\$(nl_)" >logs/$LOGFILE @\$(PRT_DU_CR) >>logs/$LOGFILE EOF ) >> $MKFILE.tmp } #======================= #======== UNPACK ======= #----------------------------------# ROOT_Unpack() { # An alias, for clairity #----------------------------------# local FILE=$1 local optSAVE_PREVIOUS=$2 if [[ "${optSAVE_PREVIOUS}" != "1" ]]; then ( cat << EOF @\$(call remove_existing_dirs,$FILE) EOF ) >> $MKFILE.tmp fi ( cat << EOF @\$(call unpack,$FILE) @\$(call get_pkg_root_LUSER) EOF ) >> $MKFILE.tmp } #----------------------------------# LUSER_wrt_unpack() { # Unpack and set 'ROOT' var #----------------------------------# local FILE=$1 local optSAVE_PREVIOUS=$2 if [[ "${optSAVE_PREVIOUS}" != "1" ]]; then ( cat << EOF @\$(call remove_existing_dirs,$FILE) EOF ) >> $MKFILE.tmp fi ( cat << EOF @\$(call unpack,$FILE) @\$(call get_pkg_root_LUSER) EOF ) >> $MKFILE.tmp } #----------------------------------# CHROOT_Unpack() { # #----------------------------------# local FILE=$1 local optSAVE_PREVIOUS=$2 if [ "${optSAVE_PREVIOUS}" != "1" ]; then ( cat << EOF @\$(call remove_existing_dirs2,$FILE) EOF ) >> $MKFILE.tmp fi ( cat << EOF @\$(call unpack3,$FILE) @\$(call get_pkg_root2) EOF ) >> $MKFILE.tmp } #======================= #===== TESTS LOGS ====== #----------------------------------# LUSER_wrt_test_log() { # Initialize testsuite log file #----------------------------------# local TESTLOGFILE=$1 ( cat << EOF @echo "export TEST_LOG=$TESTLOGDIR/$TESTLOGFILE" >> envars && \\ echo '\$(nl_)\`date\`\$(nl_)' >$TESTLOGDIR/$TESTLOGFILE EOF ) >> $MKFILE.tmp } #----------------------------------# CHROOT_wrt_test_log() { # #----------------------------------# local TESTLOGFILE=$1 ( cat << EOF @echo "export TEST_LOG=/\$(SCRIPT_ROOT)/test-logs/$TESTLOGFILE" >> envars && \\ echo "\$(nl_)\`date\`\$(nl_)" >test-logs/$TESTLOGFILE EOF ) >> $MKFILE.tmp } #======================= #======== RUN AS ======= #----------------------------------# wrt_RunAsRoot() { # Some scripts must be run as root.. #----------------------------------# local MOUNT_ENV local this_script=$1 local file=$2 case ${PROGNAME} in lfs ) MOUNT_ENV="LFS" ;; blfs ) MOUNT_ENV="BLFS" ;; clfs ) MOUNT_ENV="CLFS" ;; clfs2 ) MOUNT_ENV="CLFS" ;; clfs3 ) MOUNT_ENV="CLFS" ;; hlfs ) MOUNT_ENV="HLFS" ;; *) echo "undefined progname $PROGNAME"; exit 1 ;; esac ( cat << EOF @( time { export ${MOUNT_ENV}=\$(MOUNT_PT) && ${PROGNAME}-commands/`dirname $file`/\$@ >>logs/\$@ 2>&1 ; } ) 2>>logs/\$@ && \\ \$(PRT_DU) >>logs/\$@ EOF ) >> $MKFILE.tmp } #----------------------------------# ROOT_RunAsRoot() { # #----------------------------------# local file=$1 ( cat << EOF @( time { source envars && \$(CMDSDIR)/$file >>logs/\$@ 2>&1 ; } ) 2>>logs/\$@ && \\ \$(PRT_DU_CR) >>logs/\$@ EOF ) >> $MKFILE.tmp } #----------------------------------# LUSER_wrt_RunAsUser() { # Execute script inside time { }, footer to log file #----------------------------------# local file=$1 ( cat << EOF @( time { source ~/.bashrc && \$(CMDSDIR)/`dirname $file`/\$@ >> logs/\$@ 2>&1; } ) 2>> logs/\$@ && \\ \$(PRT_DU) >> logs/\$@ EOF ) >> $MKFILE.tmp } #----------------------------------# CHROOT_wrt_RunAsRoot() { # #----------------------------------# local file=$1 ( cat << EOF @( time { source envars && \$(crCMDSDIR)/$file >>logs/\$@ 2>&1 ; } ) 2>>logs/\$@ && \\ \$(PRT_DU_CR) >>logs/\$@ EOF ) >> $MKFILE.tmp } #======================= #====== COPY FSTAB ===== #----------------------------------# LUSER_wrt_CopyFstab() { # #----------------------------------# ( cat << EOF @( time { cp -v \$(MOUNT_PT)/sources/fstab \$(MOUNT_PT)/etc/fstab >>logs/\$@ 2>&1 ; } ) 2>>logs/\$@ EOF ) >> $MKFILE.tmp } #----------------------------------# CHROOT_wrt_CopyFstab() { # #----------------------------------# ( cat << EOF @( time { cp -v /sources/fstab /etc/fstab >>logs/\$@ 2>&1 ; } ) 2>>logs/\$@ EOF ) >> $MKFILE.tmp } #======================= #==== RM BUILD DIRS ==== #----------------------------------# LUSER_RemoveBuildDirs() { # #----------------------------------# local name=$1 ( cat << EOF @\$(call remove_build_dirs,$name) EOF ) >> $MKFILE.tmp } #----------------------------------# CHROOT_wrt_RemoveBuildDirs() { # #----------------------------------# local name=$1 ( cat << EOF @\$(call remove_build_dirs2,$name) EOF ) >> $MKFILE.tmp } #======================= #======== TOUCH ======== #----------------------------------# wrt_touch() { # #----------------------------------# ( cat << EOF @\$(call housekeeping) EOF ) >> $MKFILE.tmp } #=======================