NAME="IPFire" # Software name
SNAME="ipfire" # Short name
VERSION="2.19" # Version number
-CORE="117" # Core Level (Filename)
-PAKFIRE_CORE="116" # Core Level (PAKFIRE)
+CORE="118" # Core Level (Filename)
+PAKFIRE_CORE="117" # Core Level (PAKFIRE)
GIT_BRANCH=`git rev-parse --abbrev-ref HEAD` # Git Branch
SLOGAN="www.ipfire.org" # Software slogan
CONFIG_ROOT=/var/ipfire # Configuration rootdir
INTERACTIVE=false
fi
-## Screen Dimentions
-# Find current screen size
-if [ -z "${COLUMNS}" ]; then
- COLUMNS=$(stty size)
- COLUMNS=${COLUMNS##* }
-fi
+# Sets or adjusts pretty formatting variables
+resize_terminal() {
+ ## Screen Dimentions
+ # Find current screen size
+ COLUMNS=$(tput cols)
-# When using remote connections, such as a serial port, stty size returns 0
-if ! ${INTERACTIVE} || [ "${COLUMNS}" = "0" ]; then
- COLUMNS=80
-fi
+ # When using remote connections, such as a serial port, stty size returns 0
+ if ! ${INTERACTIVE} || [ "${COLUMNS}" = "0" ]; then
+ COLUMNS=80
+ fi
+
+ # Measurements for positioning result messages
+ OPTIONS_WIDTH=20
+ TIME_WIDTH=12
+ STATUS_WIDTH=8
+ NAME_WIDTH=$(( COLUMNS - OPTIONS_WIDTH - TIME_WIDTH - STATUS_WIDTH ))
+ LINE_WIDTH=$(( COLUMNS - STATUS_WIDTH ))
+
+ TIME_COL=$(( NAME_WIDTH + OPTIONS_WIDTH ))
+ STATUS_COL=$(( TIME_COL + TIME_WIDTH ))
+}
-## Measurements for positioning result messages
-OPTIONS_WIDTH=20
-TIME_WIDTH=12
-STATUS_WIDTH=8
-NAME_WIDTH=$(( COLUMNS - OPTIONS_WIDTH - TIME_WIDTH - STATUS_WIDTH ))
-LINE_WIDTH=$(( COLUMNS - STATUS_WIDTH ))
+# Initially setup terminal
+resize_terminal
-TIME_COL=$(( COLUMNS - TIME_WIDTH - STATUS_WIDTH ))
-STATUS_COL=$(( COLUMNS - STATUS_WIDTH ))
+# Call resize_terminal when terminal is being resized
+trap "resize_terminal" WINCH
# Define color for messages
BOLD="\\033[1;39m"
parallelism=${cpu_max}
fi
+ # limit to -j23 because perl will not build
+ # more
+ if [ ${parallelism} -gt 23 ]; then
+ parallelism=23
+ fi
+
MAKETUNING="-j${parallelism}"
fi
}
fi
printf "%-$(( ${NAME_WIDTH} - 1 ))s " "${string}"
-
- if [ -n "${options}" ]; then
- printf "[ %-$(( ${OPTIONS_WIDTH} - 4 ))s ]" "${options}"
- else
- printf "%${OPTIONS_WIDTH}s" ""
- fi
+ printf "%$(( ${OPTIONS_WIDTH} - 1 ))s " "${options}"
}
print_runtime() {
# 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
if grep "^SUP_ARCH" ${BASEDIR}/lfs/${1} >/dev/null; then
# Check if package supports ${BUILD_ARCH} or all architectures.
if ! grep -E "^SUP_ARCH.*${BUILD_ARCH}|^SUP_ARCH.*all" ${BASEDIR}/lfs/${1} >/dev/null; then
+ print_runtime 0
print_status SKIP
return 1
fi
local PS1='\u:\w$ '
enterchroot \
- bash -x -c "cd /usr/src/lfs && \
+ ${EXTRA_PATH}bash -x -c "cd /usr/src/lfs && \
MAKETUNING=${MAKETUNING} \
make -f $* \
LFS_BASEDIR=/usr/src install" \
exiterror "Could not find GCC. You will need a working build enviroment in order to build the toolchain."
fi
+ # 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
+
LOGFILE="$BASEDIR/log/_build.toolchain.log"
export LOGFILE
lfsmake1 texinfo
lfsmake1 xz
lfsmake1 fake-environ
+ lfsmake1 strip
lfsmake1 cleanup-toolchain
}
lfsmake2 etherwake
lfsmake2 bwm-ng
lfsmake2 sysstat
- lfsmake2 vsftpd
lfsmake2 strongswan
lfsmake2 rng-tools
lfsmake2 lsof
lfsmake2 usb_modeswitch
lfsmake2 usb_modeswitch_data
lfsmake2 zerofree
- lfsmake2 pound
lfsmake2 minicom
lfsmake2 ddrescue
lfsmake2 miniupnpd
lfsmake2 iptraf-ng
lfsmake2 iotop
lfsmake2 stunnel
- lfsmake2 sslscan
lfsmake2 owncloud
lfsmake2 bacula
lfsmake2 batctl
export LOGFILE
lfsmake2 memtest
lfsmake2 installer
- lfsmake1 strip
+ # use toolchain bash for chroot to strip
+ EXTRA_PATH=${TOOLS_DIR}/bin/ lfsmake2 strip
}
buildpackages() {
# Generating list of packages used
- echo -n "Generating packages list from logs" | tee -a $LOGFILE
+ print_line "Generating packages list from logs"
rm -f $BASEDIR/doc/packages-list
for i in `ls -1tr $BASEDIR/log/[^_]*`; do
if [ "$i" != "$BASEDIR/log/FILES" -a -n $i ]; then
stdumount
rm -rf $BASEDIR/build/tmp/*
- # Generating total list of files
- echo -n "Generating files list from logs" | tee -a $LOGFILE
- rm -f $BASEDIR/log/FILES
- for i in `ls -1tr $BASEDIR/log/[^_]*`; do
- if [ "$i" != "$BASEDIR/log/FILES" -a -n $i ]; then
- echo "##" >>$BASEDIR/log/FILES
- echo "## `basename $i`" >>$BASEDIR/log/FILES
- echo "##" >>$BASEDIR/log/FILES
- cat $i | sed "s%^\./%#%" | sort >> $BASEDIR/log/FILES
- fi
- done
- print_status DONE
-
cd $PWD
}