X-Git-Url: http://git.ipfire.org/?p=ipfire-2.x.git;a=blobdiff_plain;f=tools%2Fmake-functions;h=439298b3fd03171cfb32245db6c6f669c9c1b993;hp=45b5cd350f863fdeb8f7c8324d4e726cb14ce844;hb=5a4fb99e8a4b8b79a8bd61c3d6b9581f8c1dfe24;hpb=489145db2d396e72d6d63b800244791a2f21c74c diff --git a/tools/make-functions b/tools/make-functions index 45b5cd350f..439298b3fd 100644 --- a/tools/make-functions +++ b/tools/make-functions @@ -60,6 +60,24 @@ WARN="\\033[1;35m" 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}" @@ -126,6 +144,26 @@ configure_build() { CFLAGS="-O2 -pipe -Wall -fexceptions -fPIC ${CFLAGS_ARCH}" 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() { @@ -138,11 +176,7 @@ configure_build_guess() { echo "aarch64" ;; - armv7*) - echo "armv7hl" - ;; - - armv6*|armv5*) + armv7*|armv6*|armv5*) echo "armv5tel" ;; @@ -223,9 +257,9 @@ beautify() 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" ;; @@ -607,21 +641,21 @@ lfsmake1() { 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}" \ - CFLAGS="${CFLAGS}" \ - CXXFLAGS="${CXXFLAGS}" \ LFS_BASEDIR="${BASEDIR}" \ ROOT="${LFS}" \ KVER="${KVER}" \ - MAKETUNING="${MAKETUNING}" \ - CCACHE_DIR="${CCACHE_DIR}" \ - CCACHE_COMPRESS="${CCACHE_COMPRESS}" \ - CCACHE_COMPILERCHECK="${CCACHE_COMPILERCHECK}" \ install >> $LOGFILE 2>&1 local COMPILE_SUCCESS=$? @@ -645,7 +679,10 @@ lfsmake2() { local PS1='\u:\w$ ' enterchroot \ - bash -x -c "cd /usr/src/lfs && make -f $* LFS_BASEDIR=/usr/src install" \ + bash -x -c "cd /usr/src/lfs && \ + MAKETUNING=${MAKETUNING} \ + make -f $* \ + LFS_BASEDIR=/usr/src install" \ >> ${LOGFILE} 2>&1 local COMPILE_SUCCESS=$? @@ -684,44 +721,6 @@ ipfiredist() { return 0 } -installmake() { - lfsmakecommoncheck $* - [ $? == 1 ] && return 0 - - # Install QEMU helper, if needed - qemu_install_helper - - 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="${CFLAGS} ${HARDENING_CFLAGS}" \ - CXXFLAGS="${CXXFLAGS} ${HARDENING_CFLAGS}" \ - CCACHE_DIR=/usr/src/ccache CCACHE_COMPRESS=1 CCACHE_HASHDIR=1 \ - KVER=$KVER \ - BUILDTARGET="$BUILDTARGET" \ - CROSSTARGET="${CROSSTARGET}" \ - BUILD_ARCH="${BUILD_ARCH}" \ - 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 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 $*"; - else - beautify result DONE $[ $PKG_TIME_END - $PKG_TIME_START ] - fi - return 0 -} - update_langs() { echo -ne "Checking the translations for missing or obsolete strings..." chmod 755 $BASEDIR/tools/{check_strings.pl,sort_strings.pl,check_langs.sh}