###############################################################################
# #
# IPFire.org - A linux based firewall #
-# Copyright (C) 2007-2011 IPFire Team <info@ipfire.org> #
+# Copyright (C) 2007-2016 IPFire Team <info@ipfire.org> #
# #
# This program is free software: you can redistribute it and/or modify #
# it under the terms of the GNU General Public License as published by #
FAIL="\\033[1;31m"
NORMAL="\\033[0;39m"
+system_processors() {
+ getconf _NPROCESSORS_ONLN 2>/dev/null || echo "1"
+}
+
+system_memory() {
+ local key val unit
+
+ while read -r key val unit; do
+ case "${key}" in
+ MemTotal:*)
+ # Convert to MB
+ echo "$(( ${val} / 1024 ))"
+ break
+ ;;
+ esac
+ done < /proc/meminfo
+}
+
+configure_build() {
+ local build_arch="${1}"
+
+ if [ "${build_arch}" = "default" ]; then
+ build_arch="$(configure_build_guess)"
+ fi
+
+ case "${build_arch}" in
+ x86_64)
+ BUILDTARGET="${build_arch}-unknown-linux-gnu"
+ CROSSTARGET="${build_arch}-cross-linux-gnu"
+ BUILD_PLATFORM="x86"
+ CFLAGS_ARCH="-m64 -mtune=generic"
+ ;;
+
+ i586)
+ BUILDTARGET="${build_arch}-pc-linux-gnu"
+ CROSSTARGET="${build_arch}-cross-linux-gnu"
+ BUILD_PLATFORM="x86"
+ CFLAGS_ARCH="-march=i586 -mtune=generic -fomit-frame-pointer"
+ ;;
+
+ aarch64)
+ BUILDTARGET="${build_arch}-unknown-linux-gnu"
+ CROSSTARGET="${build_arch}-cross-linux-gnu"
+ BUILD_PLATFORM="arm"
+ CFLAGS_ARCH=""
+ ;;
+
+ armv7hl)
+ BUILDTARGET="${build_arch}-unknown-linux-gnueabi"
+ CROSSTARGET="${build_arch}-cross-linux-gnueabi"
+ BUILD_PLATFORM="arm"
+ CFLAGS_ARCH="-march=armv7-a -mfpu=vfpv3-d16 -mfloat-abi=hard"
+ ;;
+
+ armv5tel)
+ BUILDTARGET="${build_arch}-unknown-linux-gnueabi"
+ CROSSTARGET="${build_arch}-cross-linux-gnueabi"
+ BUILD_PLATFORM="arm"
+ CFLAGS_ARCH="-march=armv5te -mfloat-abi=soft -fomit-frame-pointer"
+ ;;
+
+ *)
+ exiterror "Cannot build for architure ${build_arch}"
+ ;;
+ esac
+
+ # Check if the QEMU helper is available if needed.
+ if qemu_is_required "${build_arch}"; then
+ local qemu_build_helper="$(qemu_find_build_helper_name "${build_arch}")"
+
+ if [ -n "${qemu_build_helper}" ]; then
+ QEMU_TARGET_HELPER="${qemu_build_helper}"
+ else
+ exiterror "Could not find a binfmt_misc helper entry for ${build_arch}"
+ fi
+ fi
+
+ BUILD_ARCH="${build_arch}"
+
+ # Enables hardening
+ HARDENING_CFLAGS="-Wp,-D_FORTIFY_SOURCE=2 -fstack-protector-strong --param=ssp-buffer-size=4"
+
+ CFLAGS="-O2 -Wall -fexceptions -fPIC ${CFLAGS_ARCH}"
+
+ # Run compiler and assembler simultaneously on systems that have enough memory
+ if [ ${HOST_MEM} -ge 1024 ]; then
+ CFLAGS="${CFLAGS} -pipe"
+ fi
+
+ CXXFLAGS="${CFLAGS}"
+
+ # Determine parallelism
+ if [ -z "${MAKETUNING}" ]; then
+ # We assume that each process consumes about
+ # 192MB of memory. Therefore we find out how
+ # many processes fit into memory.
+ local mem_max=$(( ${HOST_MEM} / 192 ))
+
+ local processors="$(system_processors)"
+ local cpu_max=$(( ${processors} * 2 ))
+
+ local parallelism
+ if [ ${mem_max} -lt ${cpu_max} ]; then
+ parallelism=${mem_max}
+ else
+ parallelism=${cpu_max}
+ fi
+
+ MAKETUNING="-j${parallelism}"
+ fi
+}
+
+configure_build_guess() {
+ case "${HOST_ARCH}" in
+ x86_64|i686|i586)
+ echo "i586"
+ ;;
+
+ aarch64)
+ echo "aarch64"
+ ;;
+
+ armv7*)
+ echo "armv7hl"
+ ;;
+
+ armv6*|armv5*)
+ echo "armv5tel"
+ ;;
+
+ *)
+ exiterror "Cannot guess build architecture"
+ ;;
+ esac
+}
+
evaluate() {
if [ "$?" -eq "0" ]; then
beautify message DONE
LAST_STAGE_TIME=$[ `date +%s` - $STAGE_TIME_START ]
fi
STAGE_TIME_START=`date +%s`
- echo -ne "${BOLD}*** ${MESSAGE}${NORMAL}"
+ echo -ne "${BOLD}*** (${BUILD_ARCH}) ${MESSAGE}${NORMAL}"
if [ "$LAST_STAGE_TIME" ]; then
- echo -ne "${DONE} (Last stage took $LAST_STAGE_TIME secs)${NORMAL}"
+ echo -ne "${DONE} (Last stage took $LAST_STAGE_TIME secs)${NORMAL}\n"
fi
echo -ne "${BOLD}${SET_VER_COL} version${SET_OPT_COL} options${SET_TIME_COL} time (sec)${SET_RESULT_COL} status${NORMAL}\n"
;;
echo "$PKG_VER"
} # End of get_pkg_ver()
-if [ 'x86_64' = $MACHINE -o 'i686' = $MACHINE -o 'i586' = $MACHINE ]; then
- echo "`date -u '+%b %e %T'`: Machine is iX86 (or equivalent)" >> $LOGFILE
- MACHINE=i586
- CROSSTARGET=${MACHINE}-cross-linux-gnu
- BUILDTARGET=i586-pc-linux-gnu
- CFLAGS_ARCH="${GLOBAL_CFLAGS} -march=i586 -fomit-frame-pointer"
-elif [ 'armv5tejl' = $MACHINE -o 'armv5tel' = $MACHINE -o 'armv6l' = $MACHINE -o 'armv7l' = $MACHINE ]; then
- echo "`date -u '+%b %e %T'`: Machine is ARM (or equivalent)" >> $LOGFILE
- MACHINE=armv5tel
- MACHINE_TYPE=arm
- CROSSTARGET=${MACHINE}-cross-linux-gnueabi
- BUILDTARGET=${MACHINE}-unknown-linux-gnueabi
- CFLAGS_ARCH="-march=armv5te -mfloat-abi=soft -fomit-frame-pointer"
-else
- echo "`date -u '+%b %e %T'`: Can't determine your architecture - $MACHINE"
- exit 1
-fi
-
-CFLAGS="-O2 -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fPIC"
-CFLAGS="${CFLAGS} -fstack-protector-all --param=ssp-buffer-size=4 ${CFLAGS_ARCH}"
-CXXFLAGS="${CFLAGS}"
-C2FLAGS="${CFLAGS}"
-CXX2FLAGS="${CXXFLAGS}"
-
# Define immediately
stdumount() {
umount $BASEDIR/build/sys 2>/dev/null;
losetup -d /dev/loop${i} 2>/dev/null
fi;
done
+
+ if [ -n "${LOGFILE}" ]; then
+ echo # empty line
+
+ local line
+ while read -r line; do
+ echo " ${line}"
+ done <<< "$(tail -n30 ${LOGFILE})"
+ fi
+
echo -e "\nERROR: $*"
echo " Check $LOGFILE for errors if applicable"
exit 1
env="${env} UTS_RELEASE=${KVER}"
# Fake machine version.
- env="${env} UTS_MACHINE=${MACHINE}"
+ env="${env} UTS_MACHINE=${BUILD_ARCH}"
echo "${env}"
}
+qemu_environ() {
+ local env
+
+ # Don't add anything if qemu is not used.
+ if ! qemu_is_required; then
+ return
+ fi
+
+ # Set default qemu options
+ case "${BUILD_ARCH}" in
+ arm*)
+ QEMU_CPU="${QEMU_CPU:-cortex-a9}"
+
+ env="${env} QEMU_CPU=${QEMU_CPU}"
+ ;;
+ esac
+
+ # Enable QEMU strace
+ #env="${env} QEMU_STRACE=1"
+
+ echo "${env}"
+}
+
+qemu_is_required() {
+ local build_arch="${1}"
+
+ if [ -z "${build_arch}" ]; then
+ build_arch="${BUILD_ARCH}"
+ fi
+
+ case "${HOST_ARCH},${build_arch}" in
+ x86_64,arm*|i?86,arm*|i?86,x86_64)
+ return 0
+ ;;
+ *)
+ return 1
+ ;;
+ esac
+}
+
+qemu_install_helper() {
+ # Do nothing, if qemu is not required
+ if ! qemu_is_required; then
+ return 0
+ fi
+
+ if [ ! -e /proc/sys/fs/binfmt_misc/status ]; then
+ exiterror "binfmt_misc not mounted. QEMU_TARGET_HELPER not useable."
+ fi
+
+ if [ ! $(cat /proc/sys/fs/binfmt_misc/status) = 'enabled' ]; then
+ exiterror "binfmt_misc not enabled. QEMU_TARGET_HELPER not useable."
+ fi
+
+
+ if [ -z "${QEMU_TARGET_HELPER}" ]; then
+ exiterror "QEMU_TARGET_HELPER not set"
+ fi
+
+ # Check if the helper is already installed.
+ if [ -x "${LFS}${QEMU_TARGET_HELPER}" ]; then
+ return 0
+ fi
+
+ # Try to find a suitable binary that we can install
+ # to the build environment.
+ local file
+ for file in "${QEMU_TARGET_HELPER}" "${QEMU_TARGET_HELPER}-static"; do
+ # file must exist and be executable.
+ [ -x "${file}" ] || continue
+
+ # Must be static.
+ file_is_static "${file}" || continue
+
+ local dirname="${LFS}$(dirname "${file}")"
+ mkdir -p "${dirname}"
+
+ install -m 755 "${file}" "${LFS}${QEMU_TARGET_HELPER}"
+ return 0
+ done
+
+ exiterror "Could not find a statically-linked QEMU emulator: ${QEMU_TARGET_HELPER}"
+}
+
+qemu_find_build_helper_name() {
+ local build_arch="${1}"
+
+ local magic
+ case "${build_arch}" in
+ arm*)
+ magic="7f454c4601010100000000000000000002002800"
+ ;;
+ x86_64)
+ magic="7f454c4602010100000000000000000002003e00"
+ ;;
+ esac
+
+ [ -z "${magic}" ] && return 1
+
+ local file
+ for file in /proc/sys/fs/binfmt_misc/*; do
+ # skip write only register entry
+ [ $(basename "${file}") = "register" ] && continue
+ # Search for the file with the correct magic value.
+ grep -qE "^magic ${magic}$" "${file}" || continue
+
+ local interpreter="$(grep "^interpreter" "${file}" | awk '{ print $2 }')"
+
+ [ -n "${interpreter}" ] || continue
+ [ "${interpreter:0:1}" = "/" ] || continue
+ [ -x "${interpreter}" ] || continue
+
+ echo "${interpreter}"
+ return 0
+ done
+
+ return 1
+}
+
+file_is_static() {
+ local file="${1}"
+
+ file ${file} 2>/dev/null | grep -q "statically linked"
+}
+
+enterchroot() {
+ # Install QEMU helper, if needed
+ qemu_install_helper
+
+ local PATH="/tools/ccache/bin:/bin:/usr/bin:/sbin:/usr/sbin:/tools/bin"
+
+ PATH="${PATH}" chroot ${LFS} env -i \
+ HOME="/root" \
+ TERM="${TERM}" \
+ PS1="${PS1}" \
+ PATH="${PATH}" \
+ SYSTEM_RELEASE="${SYSTEM_RELEASE}" \
+ PAKFIRE_CORE="${PAKFIRE_CORE}" \
+ NAME="${NAME}" \
+ SNAME="${SNAME}" \
+ VERSION="${VERSION}" \
+ CORE="${CORE}" \
+ SLOGAN="${SLOGAN}" \
+ CONFIG_ROOT="${CONFIG_ROOT}" \
+ CFLAGS="${CFLAGS} ${HARDENING_CFLAGS}" \
+ CXXFLAGS="${CXXFLAGS} ${HARDENING_CFLAGS}" \
+ BUILDTARGET="${BUILDTARGET}" \
+ CROSSTARGET="${CROSSTARGET}" \
+ BUILD_ARCH="${BUILD_ARCH}" \
+ BUILD_PLATFORM="${BUILD_PLATFORM}" \
+ CCACHE_DIR=/usr/src/ccache \
+ CCACHE_COMPRESS="${CCACHE_COMPRESS}" \
+ CCACHE_COMPILERCHECK="${CCACHE_COMPILERCHECK}" \
+ KVER="${KVER}" \
+ $(fake_environ) \
+ $(qemu_environ) \
+ "$@"
+}
+
entershell() {
if [ ! -e $BASEDIR/build/usr/src/lfs/ ]; then
exiterror "No such file or directory: $BASEDIR/build/usr/src/lfs/"
fi
echo "Entering to a shell inside LFS chroot, go out with exit"
- chroot $LFS /tools/bin/env -i HOME=/root TERM=$TERM PS1='\u:\w\$ ' \
- PATH=/tools/ccache/bin:/bin:/usr/bin:/sbin:/usr/sbin:/tools/bin \
- VERSION=$VERSION CONFIG_ROOT=$CONFIG_ROOT \
- NAME="$NAME" SNAME="$SNAME" SLOGAN="$SLOGAN" \
- CFLAGS="$CF2LAGS" CXXFLAGS="$CXX2FLAGS" \
- CCACHE_DIR=/usr/src/ccache \
- CCACHE_COMPRESS=1 \
- CCACHE_COMPILERCHECK="none" \
- KVER=$KVER \
- BUILDTARGET="$BUILDTARGET" \
- CROSSTARGET="${CROSSTARGET}" \
- MACHINE="$MACHINE" \
- MACHINE_TYPE="$MACHINE_TYPE" \
- KGCC="ccache /usr/bin/gcc" \
- $(fake_environ) \
- /tools/bin/bash
- if [ $? -ne 0 ]; then
- beautify message FAIL
- exiterror "chroot error"
- else
+ local PS1="ipfire build chroot ($(uname -m)) \u:\w\$ "
+
+ if enterchroot bash -i; then
stdumount
+ else
+ beautify message FAIL
+ exiterror "chroot error"
fi
}
# Check if this package is supported by our architecture.
# If no SUP_ARCH is found, we assume the package can be built for all.
if grep "^SUP_ARCH" ${BASEDIR}/lfs/${1} >/dev/null; then
- # Check if package supports ${MACHINE} or all architectures.
- if ! grep -E "^SUP_ARCH.*${MACHINE}|^SUP_ARCH.*all" ${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
beautify result SKIP
return 1
fi
echo -ne "`date -u '+%b %e %T'`: Building $* " >> $LOGFILE
- cd $BASEDIR/lfs && make -s -f $* LFS_BASEDIR=$BASEDIR MACHINE=$MACHINE \
- MACHINE_TYPE="$MACHINE_TYPE" \
+ cd $BASEDIR/lfs && make -s -f $* LFS_BASEDIR=$BASEDIR BUILD_ARCH="${BUILD_ARCH}" \
MESSAGE="$1\t " download >> $LOGFILE 2>&1
if [ $? -ne 0 ]; then
exiterror "Download error in $1"
fi
- cd $BASEDIR/lfs && make -s -f $* LFS_BASEDIR=$BASEDIR MACHINE=$MACHINE \
- MACHINE_TYPE="$MACHINE_TYPE" \
+ cd $BASEDIR/lfs && make -s -f $* LFS_BASEDIR=$BASEDIR BUILD_ARCH="${BUILD_ARCH}" \
MESSAGE="$1\t md5sum" md5 >> $LOGFILE 2>&1
if [ $? -ne 0 ]; then
exiterror "md5sum error in $1, check file in cache or signature"
local PKG_TIME_START=`date +%s`
- cd $BASEDIR/lfs && make -f $* BUILDTARGET=$BUILDTARGET \
- CROSSTARGET="${CROSSTARGET}" \
- MACHINE=$MACHINE \
- MACHINE_TYPE=$MACHINE_TYPE \
- LFS_BASEDIR=$BASEDIR \
- ROOT=$LFS \
- KVER=$KVER \
- MAKETUNING=$MAKETUNING \
- install >> $LOGFILE 2>&1
+ cd $BASEDIR/lfs && env -i \
+ PATH="/tools/ccache/bin:/tools/bin:$PATH" \
+ CCACHE_DIR="${CCACHE_DIR}" \
+ CCACHE_COMPRESS="${CCACHE_COMPRESS}" \
+ CCACHE_COMPILERCHECK="${CCACHE_COMPILERCHECK}" \
+ CFLAGS="${CFLAGS}" \
+ CXXFLAGS="${CXXFLAGS}" \
+ MAKETUNING="${MAKETUNING}" \
+ make -f $* \
+ TOOLCHAIN=1 \
+ CROSSTARGET="${CROSSTARGET}" \
+ BUILDTARGET="${BUILDTARGET}" \
+ BUILD_ARCH="${BUILD_ARCH}" \
+ BUILD_PLATFORM="${BUILD_PLATFORM}" \
+ LFS_BASEDIR="${BASEDIR}" \
+ ROOT="${LFS}" \
+ KVER="${KVER}" \
+ install >> $LOGFILE 2>&1
+
local COMPILE_SUCCESS=$?
local PKG_TIME_END=`date +%s`
[ $? == 1 ] && return 0
local PKG_TIME_START=`date +%s`
- chroot $LFS /tools/bin/env -i HOME=/root \
- TERM=$TERM PS1='\u:\w\$ ' \
- PATH=/tools/ccache/bin:/bin:/usr/bin:/sbin:/usr/sbin:/tools/bin \
- VERSION=$VERSION PAKFIRE_CORE="${PAKFIRE_CORE}" \
- SYSTEM_RELEASE="${SYSTEM_RELEASE}" \
- CONFIG_ROOT=$CONFIG_ROOT \
- NAME="$NAME" SNAME="$SNAME" SLOGAN="$SLOGAN" \
- CFLAGS="$C2FLAGS" CXXFLAGS="$CXX2FLAGS" \
- CCACHE_DIR=/usr/src/ccache CCACHE_COMPRESS=1 \
- CCACHE_COMPILERCHECK="none" \
- KVER=$KVER MAKETUNING=$MAKETUNING \
- BUILDTARGET="$BUILDTARGET" \
- CROSSTARGET="${CROSSTARGET}" \
- MACHINE="$MACHINE" \
- MACHINE_TYPE="$MACHINE_TYPE" \
- $(fake_environ) \
- /tools/bin/bash -x -c "cd /usr/src/lfs && \
- make -f $* LFS_BASEDIR=/usr/src install" >>$LOGFILE 2>&1
- local COMPILE_SUCCESS=$?
- local PKG_TIME_END=`date +%s`
+ local PS1='\u:\w$ '
- if [ $COMPILE_SUCCESS -ne 0 ]; then
- beautify result FAIL $[ $PKG_TIME_END - $PKG_TIME_START ]
- exiterror "Building $*";
- else
- beautify result DONE $[ $PKG_TIME_END - $PKG_TIME_START ]
- fi
-
- return 0
-}
-
-ipfiremake() {
- lfsmakecommoncheck $*
- [ $? == 1 ] && return 0
-
- local PKG_TIME_START=`date +%s`
- chroot $LFS /tools/bin/env -i HOME=/root \
- TERM=$TERM PS1='\u:\w\$ ' \
- PATH=/tools/ccache/bin:/bin:/usr/bin:/sbin:/usr/sbin \
- VERSION=$VERSION \
- CORE=$CORE \
- CONFIG_ROOT=$CONFIG_ROOT \
- NAME="$NAME" SNAME="$SNAME" SLOGAN="$SLOGAN" \
- CFLAGS="$C2FLAGS" CXXFLAGS="$CXX2FLAGS" \
- CCACHE_DIR=/usr/src/ccache CCACHE_COMPRESS=1 \
- CCACHE_COMPILERCHECK="none" \
- KVER=$KVER MAKETUNING=$MAKETUNING \
- BUILDTARGET="$BUILDTARGET" \
- CROSSTARGET="${CROSSTARGET}" \
- MACHINE="$MACHINE" \
- MACHINE_TYPE="$MACHINE_TYPE" \
- $(fake_environ) \
- /bin/bash -x -c "cd /usr/src/lfs && \
- make -f $* LFS_BASEDIR=/usr/src install" >>$LOGFILE 2>&1
+ enterchroot \
+ bash -x -c "cd /usr/src/lfs && \
+ MAKETUNING=${MAKETUNING} \
+ make -f $* \
+ LFS_BASEDIR=/usr/src install" \
+ >> ${LOGFILE} 2>&1
local COMPILE_SUCCESS=$?
local PKG_TIME_END=`date +%s`
else
beautify result DONE $[ $PKG_TIME_END - $PKG_TIME_START ]
fi
- return 0
-}
-ipfiredist() {
- lfsmakecommoncheck $*
- [ $? == 1 ] && return 0
-
- local PKG_TIME_START=`date +%s`
- chroot $LFS /tools/bin/env -i HOME=/root \
- TERM=$TERM PS1='\u:\w\$ ' \
- PATH=/tools/ccache/bin:/bin:/usr/bin:/sbin:/usr/sbin \
- VERSION=$VERSION \
- CONFIG_ROOT=$CONFIG_ROOT \
- NAME="$NAME" SNAME="$SNAME" SLOGAN="$SLOGAN" \
- CFLAGS="$C2FLAGS" CXXFLAGS="$CXX2FLAGS" \
- CCACHE_DIR=/usr/src/ccache CCACHE_COMPRESS=1 \
- CCACHE_COMPILERCHECK="none" \
- KVER=$KVER \
- BUILDTARGET="$BUILDTARGET" \
- CROSSTARGET="${CROSSTARGET}" \
- MACHINE="$MACHINE" \
- MACHINE_TYPE="$MACHINE_TYPE" \
- $(fake_environ) \
- /bin/bash -x -c "cd /usr/src/lfs && \
- make -f $1 LFS_BASEDIR=/usr/src dist" >>$LOGFILE 2>&1
-
- local COMPILE_SUCCESS=$?
- local PKG_TIME_END=`date +%s`
-
- if [ $COMPILE_SUCCESS -ne 0 ]; then
- beautify result FAIL $[ $PKG_TIME_END - $PKG_TIME_START ]
- exiterror "Packaging $*";
- else
- beautify result DONE $[ $PKG_TIME_END - $PKG_TIME_START ]
- fi
return 0
}
-installmake() {
+ipfiredist() {
lfsmakecommoncheck $*
[ $? == 1 ] && return 0
local PKG_TIME_START=`date +%s`
- chroot $LFS /tools/bin/env -i HOME=/root \
- TERM=$TERM PS1='\u:\w\$ ' \
- PATH=/tools/ccache/bin:/bin:/usr/bin:/sbin:/usr/sbin \
- VERSION=$VERSION \
- SYSTEM_RELEASE="${SYSTEM_RELEASE}" \
- CONFIG_ROOT=$CONFIG_ROOT \
- NAME="$NAME" SNAME="$SNAME" SLOGAN="$SLOGAN" \
- CFLAGS="-Os" CXXFLAGS="-Os" \
- CCACHE_DIR=/usr/src/ccache CCACHE_COMPRESS=1 CCACHE_HASHDIR=1 \
- KVER=$KVER \
- BUILDTARGET="$BUILDTARGET" \
- CROSSTARGET="${CROSSTARGET}" \
- MACHINE="$MACHINE" \
- MACHINE_TYPE="$MACHINE_TYPE" \
- LD_LIBRARY_PATH=/tools/lib \
- /tools/bin/bash -x -c "cd /usr/src/lfs && \
- /tools/bin/make -f $* LFS_BASEDIR=/usr/src install" >>$LOGFILE 2>&1
+ local PS1='\u:\w$ '
+
+ enterchroot \
+ bash -x -c "cd /usr/src/lfs && make -f $* LFS_BASEDIR=/usr/src dist" \
+ >> ${LOGFILE} 2>&1
local COMPILE_SUCCESS=$?
local PKG_TIME_END=`date +%s`
if [ $COMPILE_SUCCESS -ne 0 ]; then
beautify result FAIL $[ $PKG_TIME_END - $PKG_TIME_START ]
- exiterror "Building $*";
+ exiterror "Packaging $*";
else
beautify result DONE $[ $PKG_TIME_END - $PKG_TIME_START ]
fi
$BASEDIR/tools/sort_strings.pl ru
$BASEDIR/tools/sort_strings.pl nl
$BASEDIR/tools/sort_strings.pl tr
+ $BASEDIR/tools/sort_strings.pl it
$BASEDIR/tools/check_strings.pl en > $BASEDIR/doc/language_issues.en
$BASEDIR/tools/check_strings.pl de > $BASEDIR/doc/language_issues.de
$BASEDIR/tools/check_strings.pl fr > $BASEDIR/doc/language_issues.fr
$BASEDIR/tools/check_strings.pl ru > $BASEDIR/doc/language_issues.ru
$BASEDIR/tools/check_strings.pl nl > $BASEDIR/doc/language_issues.nl
$BASEDIR/tools/check_strings.pl tr > $BASEDIR/doc/language_issues.tr
+ $BASEDIR/tools/check_strings.pl it > $BASEDIR/doc/language_issues.it
$BASEDIR/tools/check_langs.sh > $BASEDIR/doc/language_missings
beautify message DONE
+
+ echo -ne "Updating language lists..."
+ update_language_list ${BASEDIR}/src/installer/po
+ update_language_list ${BASEDIR}/src/setup/po
+ beautify message DONE
+}
+
+update_language_list() {
+ local path="${1}"
+
+ local lang
+ for lang in ${path}/*.po; do
+ lang="$(basename "${lang}")"
+ echo "${lang%*.po}"
+ done | sort -u > "${path}/LINGUAS"
}