cacc6c5433
If using a new book, MAKEFLAGS is set to -j$(nproc), so that if we want to easure timings with 4 processors and our computer has more than that, we need to restrict the number of processors. Jhalfs allows to do that using th cpuset cgroup controller, so that it only restrits the make job and not the whole machine. For that use a small scripts written by Xi Ruoyao that restarts make this the cpuset set.
372 lines
7.3 KiB
Bash
372 lines
7.3 KiB
Bash
#!/bin/bash
|
|
|
|
#=== 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"`
|
|
|
|
|
|
SHELL = /bin/bash
|
|
|
|
SRC = /sources
|
|
MOUNT_PT = $BUILDDIR
|
|
PKG_LST = $PKG_LST
|
|
LUSER = $LUSER
|
|
LGROUP = $LGROUP
|
|
LHOME = $LHOME
|
|
SCRIPT_ROOT = $SCRIPT_ROOT
|
|
|
|
BASEDIR = \$(MOUNT_PT)
|
|
SRCSDIR = \$(BASEDIR)/sources
|
|
CMDSDIR = \$(BASEDIR)/\$(SCRIPT_ROOT)/$COMMANDS
|
|
LOGDIR = \$(BASEDIR)/\$(SCRIPT_ROOT)/$LOGDIRBASE
|
|
TESTLOGDIR = \$(BASEDIR)/\$(SCRIPT_ROOT)/$TESTLOGDIRBASE
|
|
|
|
crCMDSDIR = /\$(SCRIPT_ROOT)/$COMMANDS
|
|
crLOGDIR = /\$(SCRIPT_ROOT)/$LOGDIRBASE
|
|
crTESTLOGDIR = /\$(SCRIPT_ROOT)/$TESTLOGDIRBASE
|
|
crFILELOGDIR = /\$(SCRIPT_ROOT)/$FILELOGDIRBASE
|
|
|
|
SU_LUSER = sudo -H -u \$(LUSER) sh -c
|
|
LUSER_HOME = \$(LHOME)/\$(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 --exclude /var/lib / \`\n"
|
|
|
|
ADD_REPORT = $REPORT
|
|
ADD_CUSTOM_TOOLS = $CUSTOM_TOOLS
|
|
ADD_BLFS_TOOLS = $BLFS_TOOL
|
|
PKGMNGT = $PKGMNGT
|
|
WRAP_INSTALL = $WRAP_INSTALL
|
|
CPUSET = $CPUSET
|
|
|
|
|
|
export PATH := \${PATH}:/usr/sbin
|
|
|
|
include makefile-functions
|
|
|
|
EOF
|
|
) > $MKFILE
|
|
}
|
|
|
|
#=======================
|
|
|
|
|
|
#==== TARGET HEADER ====
|
|
|
|
#----------------------------------#
|
|
LUSER_wrt_target() { # Create target and initialize log file
|
|
#----------------------------------#
|
|
local i=$1
|
|
local PREV=$2
|
|
local version
|
|
if [ "$3" != "" ]; then
|
|
version=-$3
|
|
fi
|
|
(
|
|
cat << EOF
|
|
|
|
$i: $PREV
|
|
@\$(call echo_message, Building)
|
|
${NO_PROGRESS} @export BASHBIN=\$(SHELL) && \$(SHELL) progress_bar.sh \$@ \$\$PPID &
|
|
@echo "\$(nl_)\`date\`\$(nl_)" >logs/\$@$version
|
|
@ : > envars
|
|
EOF
|
|
) >> $MKFILE.tmp
|
|
}
|
|
|
|
#----------------------------------#
|
|
CHROOT_wrt_target() { # Create target and initialize log file
|
|
#----------------------------------#
|
|
local i=$1
|
|
local PREV=$2
|
|
local version
|
|
if [ "$3" != "" ]; then
|
|
version=-$3
|
|
fi
|
|
(
|
|
cat << EOF
|
|
|
|
$i: $PREV
|
|
@\$(call echo_message, Building)
|
|
${NO_PROGRESS} @export BASHBIN=\$(SHELL) && \$(SHELL) progress_bar.sh \$@ \$\$PPID &
|
|
@echo "\$(nl_)\`date\`\$(nl_)" >logs/\$@$version
|
|
@ : > envars
|
|
EOF
|
|
) >> $MKFILE.tmp
|
|
}
|
|
|
|
#=======================
|
|
|
|
|
|
#======== UNPACK =======
|
|
|
|
#----------------------------------#
|
|
LUSER_wrt_unpack() { # Unpack and set 'ROOT' var
|
|
#----------------------------------#
|
|
local FILE="$1"
|
|
local optSAVE_PREVIOUS="$2"
|
|
local version
|
|
if [ "$3" != "" ]; then
|
|
version=-"$3"
|
|
fi
|
|
|
|
if [[ "${optSAVE_PREVIOUS}" != "1" ]]; then
|
|
(
|
|
cat << EOF
|
|
@\$(call remove_existing_dirs,$FILE)
|
|
EOF
|
|
) >> $MKFILE.tmp
|
|
fi
|
|
|
|
(
|
|
cat << EOF
|
|
@\$(PRT_DU) >>logs/\$@$version
|
|
@\$(call unpack,$FILE)
|
|
@\$(call get_pkg_root_LUSER)
|
|
EOF
|
|
) >> $MKFILE.tmp
|
|
}
|
|
|
|
#----------------------------------#
|
|
CHROOT_Unpack() { #
|
|
#----------------------------------#
|
|
local FILE=$1
|
|
local optSAVE_PREVIOUS=$2
|
|
local version
|
|
if [ "$3" != "" ]; then
|
|
version=-"$3"
|
|
fi
|
|
|
|
if [ "${optSAVE_PREVIOUS}" != "1" ]; then
|
|
(
|
|
cat << EOF
|
|
@\$(call remove_existing_dirs2,$FILE)
|
|
EOF
|
|
) >> $MKFILE.tmp
|
|
fi
|
|
|
|
(
|
|
cat << EOF
|
|
@\$(PRT_DU_CR) >>logs/\$@$version
|
|
@\$(call unpack2,$FILE)
|
|
@\$(call get_pkg_root2)
|
|
EOF
|
|
) >> $MKFILE.tmp
|
|
}
|
|
|
|
#=======================
|
|
|
|
|
|
#===== TESTS LOGS ======
|
|
|
|
#----------------------------------#
|
|
LUSER_wrt_test_log() { # Initialize testsuite log file
|
|
#----------------------------------#
|
|
local version
|
|
if [ "$2" != "" ]; then
|
|
version=-$2
|
|
fi
|
|
local TESTLOGFILE=$1$version
|
|
(
|
|
cat << EOF
|
|
@echo "export TEST_LOG=\$(TESTLOGDIR)/$TESTLOGFILE" >> envars && \\
|
|
echo "\$(nl_)\`date\`\$(nl_)" >\$(TESTLOGDIR)/$TESTLOGFILE
|
|
EOF
|
|
) >> $MKFILE.tmp
|
|
}
|
|
|
|
#----------------------------------#
|
|
CHROOT_wrt_test_log() { #
|
|
#----------------------------------#
|
|
local version
|
|
if [ "$2" != "" ]; then
|
|
version=-$2
|
|
fi
|
|
local TESTLOGFILE=$1$version
|
|
(
|
|
cat << EOF
|
|
@echo "export TEST_LOG=\$(crTESTLOGDIR)/$TESTLOGFILE" >> envars && \\
|
|
echo "\$(nl_)\`date\`\$(nl_)" >\$(crTESTLOGDIR)/$TESTLOGFILE
|
|
EOF
|
|
) >> $MKFILE.tmp
|
|
}
|
|
|
|
#=======================
|
|
|
|
|
|
#======== RUN AS =======
|
|
|
|
#----------------------------------#
|
|
wrt_RunAsRoot() { # Some scripts must be run as root..
|
|
#----------------------------------#
|
|
local MOUNT_ENV
|
|
local version
|
|
if [ "$2" != "" ]; then
|
|
version=-$2
|
|
fi
|
|
local file=$1
|
|
|
|
(
|
|
cat << EOF
|
|
@export LFS=\$(MOUNT_PT) && \\
|
|
$COMMANDS/`dirname $file`/\$@ >>logs/\$@$version 2>&1
|
|
EOF
|
|
) >> $MKFILE.tmp
|
|
}
|
|
|
|
#----------------------------------#
|
|
LUSER_wrt_RunAsUser() { # Calculate time with perl, footer to log file
|
|
#----------------------------------#
|
|
local file=$1
|
|
local version
|
|
if [ "$2" != "" ]; then
|
|
version=-$2
|
|
fi
|
|
|
|
(
|
|
cat << EOF
|
|
@source ~/.bashrc && \\
|
|
\$(CMDSDIR)/`dirname $file`/\$@ >> \$(LOGDIR)/\$@$version 2>&1
|
|
EOF
|
|
) >> $MKFILE.tmp
|
|
}
|
|
|
|
#----------------------------------#
|
|
CHROOT_wrt_RunAsRoot() { #
|
|
#----------------------------------#
|
|
local file=$1
|
|
local version
|
|
if [ "$2" != "" ]; then
|
|
version=-$2
|
|
fi
|
|
(
|
|
cat << EOF
|
|
@source envars && \\
|
|
\$(crCMDSDIR)/`dirname $file`/\$@ >>\$(crLOGDIR)/\$@$version 2>&1
|
|
EOF
|
|
) >> $MKFILE.tmp
|
|
|
|
}
|
|
|
|
#=======================
|
|
|
|
|
|
#====== COPY FSTAB =====
|
|
|
|
#----------------------------------#
|
|
LUSER_wrt_CopyFstab() { #
|
|
#----------------------------------#
|
|
(
|
|
cat << EOF
|
|
@cp -v \$(MOUNT_PT)/sources/fstab \$(MOUNT_PT)/etc/fstab >>logs/\$@ 2>&1 && \\
|
|
\$(PRT_DU) >>logs/\$@
|
|
EOF
|
|
) >> $MKFILE.tmp
|
|
}
|
|
|
|
#----------------------------------#
|
|
CHROOT_wrt_CopyFstab() { #
|
|
#----------------------------------#
|
|
(
|
|
cat << EOF
|
|
@cp -v /sources/fstab /etc/fstab >>logs/\$@ 2>&1 && \\
|
|
\$(PRT_DU_CR) >>logs/\$@
|
|
EOF
|
|
) >> $MKFILE.tmp
|
|
}
|
|
|
|
#=======================
|
|
|
|
|
|
#==== INSTALLED FILES LOGS ====
|
|
|
|
#----------------------------------#
|
|
LUSER_wrt_TouchTimestamp() { #
|
|
#----------------------------------#
|
|
(
|
|
cat << EOF
|
|
@\$(call touch_timestamp_LUSER)
|
|
EOF
|
|
) >> $MKFILE.tmp
|
|
}
|
|
|
|
#----------------------------------#
|
|
CHROOT_wrt_TouchTimestamp() { #
|
|
#----------------------------------#
|
|
(
|
|
cat << EOF
|
|
@\$(call touch_timestamp)
|
|
EOF
|
|
) >> $MKFILE.tmp
|
|
}
|
|
|
|
#----------------------------------#
|
|
LUSER_wrt_LogNewFiles() { #
|
|
#----------------------------------#
|
|
(
|
|
cat << EOF
|
|
@\$(call log_new_files_LUSER,$1)
|
|
EOF
|
|
) >> $MKFILE.tmp
|
|
}
|
|
|
|
#----------------------------------#
|
|
CHROOT_wrt_LogNewFiles() { #
|
|
#----------------------------------#
|
|
(
|
|
cat << EOF
|
|
@\$(call log_new_files,$1)
|
|
EOF
|
|
) >> $MKFILE.tmp
|
|
}
|
|
|
|
#=======================
|
|
|
|
|
|
#==== RM BUILD DIRS ====
|
|
|
|
#----------------------------------#
|
|
LUSER_RemoveBuildDirs() { #
|
|
#----------------------------------#
|
|
local name=`echo ${1} | sed 's/[0-9]-//'`
|
|
(
|
|
cat << EOF
|
|
@\$(call remove_build_dirs,$name)
|
|
EOF
|
|
) >> $MKFILE.tmp
|
|
}
|
|
|
|
#----------------------------------#
|
|
CHROOT_wrt_RemoveBuildDirs() { #
|
|
#----------------------------------#
|
|
local name=`echo ${1} | sed 's/[0-9]-//'`
|
|
(
|
|
cat << EOF
|
|
@\$(call remove_build_dirs2,$name)
|
|
EOF
|
|
) >> $MKFILE.tmp
|
|
}
|
|
|
|
#=======================
|
|
|
|
|
|
#======== TOUCH ========
|
|
|
|
#----------------------------------#
|
|
wrt_touch() { #
|
|
#----------------------------------#
|
|
(
|
|
cat << EOF
|
|
@\$(call housekeeping)
|
|
EOF
|
|
) >> $MKFILE.tmp
|
|
}
|
|
|
|
#=======================
|