X-Git-Url: http://git.ipfire.org/?p=people%2Fteissler%2Fipfire-2.x.git;a=blobdiff_plain;f=tools%2Fmake-functions;h=16352b4a2f84b01f2870c0f302363cc45d384cb0;hp=e6333a3838b3675401b0177f6242b0cbe465aa07;hb=b34dac1ff503f405f08144b89f6bc290a624f762;hpb=70d0654f627a7c416ffd01ffb161fa85968df6e1 diff --git a/tools/make-functions b/tools/make-functions index e6333a383..16352b4a2 100644 --- a/tools/make-functions +++ b/tools/make-functions @@ -2,7 +2,7 @@ ############################################################################### # # # IPFire.org - A linux based firewall # -# Copyright (C) 2010 IPFire Team # +# Copyright (C) 2007-2011 IPFire Team # # # # 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 # @@ -195,12 +195,14 @@ beautify() get_pkg_ver() { - PKG_VER=`grep ^VER $1 | awk '{print $3}'` + PKG_VER=`grep -E "^VER |^VER=|^VER " $1 | awk '{print $3}'` if [ -z $PKG_VER ]; then PKG_VER=`grep "Exp " $1 | awk '{print $4}'` fi - + if [ -z $PKG_VER ]; then + PKG_VER="?" + fi if [ ${#PKG_VER} -gt $VER_WIDTH ]; then # If a package version number is greater than $VER_WIDTH, we keep the first 4 characters # and replace enough characters to fit the resulting string on the screen. We'll replace @@ -218,22 +220,24 @@ 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="-O2 -march=i586 -pipe -fomit-frame-pointer" CXXFLAGS="-O2 -march=i586 -pipe -fomit-frame-pointer" C2FLAGS="-O2 -march=i586 -mtune=i586 -pipe -fomit-frame-pointer" CXX2FLAGS="-O2 -march=i586 -mtune=i586 -pipe -fomit-frame-pointer" -elif [ 'armv5tejl' = $MACHINE -o 'armv5tel' = $MACHINE ]; then +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="-O2 -march=armv5te -fomit-frame-pointer -pipe" + CFLAGS="-O2 -march=armv5te -mfloat-abi=soft -fomit-frame-pointer -pipe" CXXFLAGS="$CFLAGS" C2FLAGS="$CFLAGS" CXX2FLAGS="$CXXFLAGS" else - echo "`date -u '+%b %e %T'`: Can't determine your architecture - $MACHINE" >> $LOGFILE + echo "`date -u '+%b %e %T'`: Can't determine your architecture - $MACHINE" exit 1 fi @@ -268,24 +272,42 @@ exiterror() { exit 1 } +fake_environ() { + [ -e "${BASEDIR}/build/tools/lib/libpakfire_preload.so" ] || return + + local env="LD_PRELOAD=/tools/lib/libpakfire_preload.so" + + # Fake kernel version, because some of the packages do not compile + # with kernel 3.0 and later. + env="${env} UTS_RELEASE=${KVER}" + + # Fake machine version. + env="${env} UTS_MACHINE=${MACHINE}" + + echo "${env}" +} + 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" - $linux32 chroot $LFS /tools/bin/env -i HOME=/root TERM=$TERM PS1='\u:\w\$ ' \ - PATH=/usr/local/bin:/bin:/usr/bin:/sbin:/usr/sbin:/tools/bin \ + 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_HASHDIR=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 @@ -363,6 +385,7 @@ lfsmake1() { local PKG_TIME_START=`date +%s` cd $BASEDIR/lfs && make -f $* BUILDTARGET=$BUILDTARGET \ + CROSSTARGET="${CROSSTARGET}" \ MACHINE=$MACHINE \ MACHINE_TYPE=$MACHINE_TYPE \ LFS_BASEDIR=$BASEDIR \ @@ -388,18 +411,21 @@ lfsmake2() { [ $? == 1 ] && return 0 local PKG_TIME_START=`date +%s` - $linux32 chroot $LFS /tools/bin/env -i HOME=/root \ + chroot $LFS /tools/bin/env -i HOME=/root \ TERM=$TERM PS1='\u:\w\$ ' \ - PATH=/usr/local/bin:/bin:/usr/bin:/sbin:/usr/sbin:/tools/bin \ + 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="$C2FLAGS" CXXFLAGS="$CXX2FLAGS" \ - CCACHE_DIR=/usr/src/ccache CCACHE_COMPRESS=1 CCACHE_HASHDIR=1 \ + CCACHE_DIR=/usr/src/ccache CCACHE_COMPRESS=1 \ + CCACHE_COMPILERCHECK="none" \ KVER=$KVER MAKETUNING=$MAKETUNING \ - BUILDTARGET="$BUILDTARGET" MACHINE="$MACHINE" \ + BUILDTARGET="$BUILDTARGET" \ + CROSSTARGET="${CROSSTARGET}" \ + MACHINE="$MACHINE" \ MACHINE_TYPE="$MACHINE_TYPE" \ - IPFVER="$IPFVER" \ + $(fake_environ) \ /tools/bin/bash -x -c "cd /usr/src/lfs && \ make -f $* LFS_BASEDIR=/usr/src install" >>$LOGFILE 2>&1 local COMPILE_SUCCESS=$? @@ -420,19 +446,22 @@ ipfiremake() { [ $? == 1 ] && return 0 local PKG_TIME_START=`date +%s` - $linux32 chroot $LFS /tools/bin/env -i HOME=/root \ + chroot $LFS /tools/bin/env -i HOME=/root \ TERM=$TERM PS1='\u:\w\$ ' \ - PATH=/usr/local/bin:/bin:/usr/bin:/sbin:/usr/sbin \ + 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_HASHDIR=1 \ + CCACHE_DIR=/usr/src/ccache CCACHE_COMPRESS=1 \ + CCACHE_COMPILERCHECK="none" \ KVER=$KVER MAKETUNING=$MAKETUNING \ - BUILDTARGET="$BUILDTARGET" MACHINE="$MACHINE" \ + BUILDTARGET="$BUILDTARGET" \ + CROSSTARGET="${CROSSTARGET}" \ + MACHINE="$MACHINE" \ MACHINE_TYPE="$MACHINE_TYPE" \ - IPFVER="$IPFVER" \ + $(fake_environ) \ /bin/bash -x -c "cd /usr/src/lfs && \ make -f $* LFS_BASEDIR=/usr/src install" >>$LOGFILE 2>&1 @@ -455,15 +484,19 @@ ipfiredist() { local PKG_TIME_START=`date +%s` chroot $LFS /tools/bin/env -i HOME=/root \ TERM=$TERM PS1='\u:\w\$ ' \ - PATH=/usr/local/bin:/bin:/usr/bin:/sbin:/usr/sbin \ + 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_HASHDIR=1 \ - KVER=$KVER IPFVER="$IPFVER" \ - BUILDTARGET="$BUILDTARGET" MACHINE="$MACHINE" \ + 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 @@ -484,20 +517,22 @@ installmake() { [ $? == 1 ] && return 0 local PKG_TIME_START=`date +%s` - $linux32 chroot $LFS /tools/bin/env -i HOME=/root \ + chroot $LFS /tools/bin/env -i HOME=/root \ TERM=$TERM PS1='\u:\w\$ ' \ - PATH=/opt/i586-uClibc/i586-linux-uclibc/bin:/opt/i586-uClibc/bin:/usr/local/bin:/bin:/usr/bin:/sbin:/usr/sbin \ + PATH=/tools/ccache/bin:/bin:/usr/bin:/sbin:/usr/sbin \ VERSION=$VERSION \ CONFIG_ROOT=$CONFIG_ROOT \ - LFS_PASS="install" \ NAME="$NAME" SNAME="$SNAME" SLOGAN="$SLOGAN" \ CFLAGS="-Os" CXXFLAGS="-Os" \ CCACHE_DIR=/usr/src/ccache CCACHE_COMPRESS=1 CCACHE_HASHDIR=1 \ - KVER=$KVER IPFVER="$IPFVER" \ - BUILDTARGET="$BUILDTARGET" MACHINE="$MACHINE" \ + KVER=$KVER \ + BUILDTARGET="$BUILDTARGET" \ + CROSSTARGET="${CROSSTARGET}" \ + MACHINE="$MACHINE" \ MACHINE_TYPE="$MACHINE_TYPE" \ - /bin/bash -x -c "cd /usr/src/lfs && \ - make -f $* LFS_BASEDIR=/usr/src install" >>$LOGFILE 2>&1 + 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` @@ -511,247 +546,6 @@ installmake() { return 0 } -update_logs() { - tar cfz log/ipfire-logs-`date +'%Y-%m-%d-%H:%M'`.tgz log/_build.* - rm -f log/_build.* -} - -batch_script() { - echo -ne "${BOLD}***This is our auto buildscript! Have fun...${NORMAL}\n" - update_logs - evaluate 1 - - if [ "$IPFIRE_REBUILD" -eq "0" ]; then - export IPFIRE_START_TIME=`date` - - $0 clean - evaluate 1 - - $0 git update --force - evaluate 1 mail_me UPDATE - - echo "### EXPORT SOURCES" - $0 git dist - evaluate 1 mail_me DIST - fi - - echo "### RUNNING BUILD" - $0 build - evaluate 1 mail_me ERROR - - echo "### UPLOADING ISO" - $0 upload iso - evaluate 1 mail_me ISO - - echo -ne "### UPLOADING PAKS" - $0 upload paks - evaluate 1 mail_me PAKS - - echo -ne "${BOLD}***SUCCESS!${NORMAL}" - mail_me success - exit 0 -} - -watch_screen() { - echo -e "${BOLD}Exit with Ctrl+A, Ctrl+D.${NORMAL}" - sleep 0.5 - screen -x ipfire -} - -mail_me() { - echo "From: $MAIL_FROM" > /tmp/ipfire_mail_body.$$ - echo "To: $MAIL_TO" >> /tmp/ipfire_mail_body.$$ - case "$1" in - success) - cat <> /tmp/ipfire_mail_body.$$ -Subject: SUCCESS: IPFIRE-BUILD on `hostname` -Building IPFire on `hostname` was successfull! -You can find the ISO on your ftp server if you told the script where it is. - -Statistics: ------------ -Started: $IPFIRE_START_TIME -Finished: `date` - -Best Regards -Your IPFire-Build-Script - -END - echo -ne "${BOLD}***Sending success message${NORMAL}" - ;; - *) - cat <> /tmp/ipfire_mail_body.$$ -Subject: ERROR $1: IPFIRE-BUILD on `hostname` -When I was building IPFire on `hostname`, I have found an ERROR with name $1! -Here you can see the logs and detect the reason for this error. - -Best Regards -Your IPFire-Build-Script - - -Here is a summary... The full logs are in the attachment. ---------------------------------------------------------- - -`tail log/_*` -END - echo -ne "${BOLD}***Sending error message${NORMAL}" - ;; - esac - -sleep 15 - python tools/sendEmail < /tmp/ipfire_mail_body.$$ - if [ "$?" -eq "0" ]; then - beautify message DONE - else - beautify message FAIL - fi - rm -f /tmp/ipfire_mail_body.$$ -} - -make_config() { - clear - echo -e "${BOLD}***This will create your configuration...${NORMAL}" - echo -ne "***If your are ready press !" - read - clear - echo -ne "***The buildscript will create a full iso image.\n" - echo -ne "***If you want to skip any package please enter its name here seperated with space.\n" - echo -ne "Actually in the list are: $SKIP_PACKAGE_LIST\n" - echo -ne "Do you want to change this? (y/N) " - read YESNO - if [ "$YESNO" == "y" ]; then - echo -ne "Please type: " - read SKIP_PACKAGE_LIST - echo -ne "You entered: $SKIP_PACKAGE_LIST\n" - fi - - clear - echo -ne "***When you have compiled successfully, there is the possibility\n" - echo -ne "***to upload the iso image to a ftp server.\n" - echo -ne "***If the url is empty there will be no upload.\n" - echo -ne "Actually there is: $FTP_ISO_URL\n" - echo -ne "Do you want to change this? (y/N) " - read YESNO - if [ "$YESNO" == "y" ]; then - echo -ne "Please type the url: " - read FTP_ISO_URL - echo -ne "Please type the path: " - read FTP_ISO_PATH - echo -ne "Please type the username: " - read FTP_ISO_USER - echo -ne "Please type the password (hidden): " - read -s FTP_ISO_PASS - - fi - - clear - echo -ne "***When you add some new software you can easyly\n" - echo -ne "***upload the source code to our repository server.\n" - echo -ne "***If the url is empty there will be no upload.\n" - echo -ne "Actually there is: $FTP_CACHE_URL\n" - echo -ne "Do you want to change this? (y/N) " - read YESNO - if [ "$YESNO" == "y" ]; then - echo -ne "Please type the url: " - read FTP_CACHE_URL - echo -ne "Please type the path: " - read FTP_CACHE_PATH - echo -ne "Please type the username: " - read FTP_CACHE_USER - echo -ne "Please type the password (hidden): " - read -s FTP_CACHE_PASS - - fi - - clear - echo -ne "***If there are some important messages you\n" - echo -ne "***can get a notification mail.\n" - echo -ne "***Please type one ore more email adresses (seperated by comma).\n" - echo -ne "Actually there is: $MAIL_TO\n" - echo -ne "Do you want to change this? (y/N) " - read YESNO - if [ "$YESNO" == "y" ]; then - echo -ne "Please type: " - read MAIL_TO - echo -ne "You should enter a mail server to login...\n" - echo -ne "Please type the url: " - read MAIL_SERVER - echo -ne "Please type where the email is from: " - read MAIL_FROM - echo -ne "Please type the username: " - read MAIL_USER - echo -ne "Please type the password (hidden): " - read -s MAIL_PASS - - fi - echo -ne "\n${BOLD}***Saving...${NORMAL}" - cat < $BASEDIR/.config -### iso server -FTP_ISO_URL=$FTP_ISO_URL -FTP_ISO_PATH=$FTP_ISO_PATH -FTP_ISO_USER=$FTP_ISO_USER -FTP_ISO_PASS=$FTP_ISO_PASS -### cache server -FTP_CACHE_URL=$FTP_CACHE_URL -FTP_CACHE_PATH=$FTP_CACHE_PATH -FTP_CACHE_USER=$FTP_CACHE_USER -FTP_CACHE_PASS=$FTP_CACHE_PASS -### mail reports -MAIL_TO="$MAIL_TO" -MAIL_FROM=$MAIL_FROM -MAIL_SERVER=$MAIL_SERVER -MAIL_USER=$MAIL_USER -MAIL_PASS=$MAIL_PASS -### misc -SKIP_PACKAGE_LIST="$SKIP_PACKAGE_LIST" -END - beautify message DONE -} - -compile_tftpd() { - mkdir $BASEDIR/tmp - tar xvfz $BASEDIR/cache/tftp-hpa-0.42.tar.gz -C $BASEDIR/tmp - cd $BASEDIR/tmp/tftp-hpa-* - ./configure --prefix=/ipfire/trunk/tools/ \ - --sbindir=/ipfire/trunk/tools/ --disable-nls - make - install -c tftpd/tftpd $BASEDIR/tools/in.tftpd - cd - - rm -rf $BASEDIR/tmp/tftp-hpa-* -} - -start_tftpd() { - if [ ! -e $BASEDIR/tools/in.tftpd ]; then - compile_tftpd - fi - reload_tftpd - if [ "$?" == "0" ]; then - $BASEDIR/tools/in.tftpd -l -s $BASEDIR/tftpboot - beautify message DONE - else - echo -en "You don not have a pxe boot image in your base directory.\nPlease compile first." - beautify message FAIL - exit 1 - fi -} - -stop_tftpd() { - echo -n "Stopping TFTPD..." - killall in.tftpd >/dev/null 2>&1 - sleep 3 - killall -9 in.tftp >/dev/null 2>&1 - beautify message DONE -} - -reload_tftpd() { - if [ -e $BASEDIR/ipfire-$VERSION.$MACHINE-pxe.tgz ]; then - mkdir -p $BASEDIR/tftpboot - tar xfz $BASEDIR/ipfire-$VERSION.$MACHINE-pxe.tgz -C $BASEDIR/tftpboot - return 0 - fi - return 1 -} - 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} @@ -761,12 +555,14 @@ update_langs() { $BASEDIR/tools/sort_strings.pl es $BASEDIR/tools/sort_strings.pl pl $BASEDIR/tools/sort_strings.pl ru + $BASEDIR/tools/sort_strings.pl nl $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 es > $BASEDIR/doc/language_issues.es $BASEDIR/tools/check_strings.pl es > $BASEDIR/doc/language_issues.pl $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_langs.sh > $BASEDIR/doc/language_missings beautify message DONE }