X-Git-Url: http://git.ipfire.org/?p=ipfire-2.x.git;a=blobdiff_plain;f=tools%2Fmake-functions;h=e556994f1bece5f612f5409a842753545d08560a;hp=a3b7d1bf4d6a5b7ab4c08544b743eefb7ab6e5ad;hb=df94e866a309f738cc87d0f469035172ee07a4d5;hpb=1be597891b762829809a03eb8f2a20f2693ac43f diff --git a/tools/make-functions b/tools/make-functions index a3b7d1bf4d..e556994f1b 100644 --- a/tools/make-functions +++ b/tools/make-functions @@ -1,9 +1,28 @@ #!/bin/bash -############################################################################ +############################################################################### +# # +# IPFire.org - A linux based firewall # +# Copyright (C) 2010 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 # +# the Free Software Foundation, either version 3 of the License, or # +# (at your option) any later version. # +# # +# This program is distributed in the hope that it will be useful, # +# but WITHOUT ANY WARRANTY; without even the implied warranty of # +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # +# GNU General Public License for more details. # +# # +# You should have received a copy of the GNU General Public License # +# along with this program. If not, see . # +# # +############################################################################### +############################################################################### # # Beautifying variables & presentation & input output interface # -############################################################################ +############################################################################### ## Screen Dimentions # Find current screen size @@ -123,7 +142,13 @@ beautify() ;; build_end) BUILD_TIME_END=`date +%s` - echo -ne "${DONE}***Build is finished now and took $[ $BUILD_TIME_END - $BUILD_TIME_START ] secs!${NORMAL}\n" + seconds=$[ $BUILD_TIME_END - $BUILD_TIME_START ] + hours=$((seconds / 3600)) + seconds=$((seconds % 3600)) + minutes=$((seconds / 60)) + seconds=$((seconds % 60)) + + echo -ne "${DONE}***Build is finished now and took $hours hour(s) $minutes minute(s) $seconds second(s)!${NORMAL}\n" ;; make_pkg) echo "$2" | while read PKG_VER PROGRAM OPTIONS @@ -199,6 +224,15 @@ if [ 'x86_64' = $MACHINE -o 'i686' = $MACHINE -o 'i586' = $MACHINE ]; then 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 + echo "`date -u '+%b %e %T'`: Machine is ARM (or equivalent)" >> $LOGFILE + MACHINE=armv5tel + MACHINE_TYPE=arm + BUILDTARGET=${MACHINE}-unknown-linux-gnueabi + CFLAGS="-O2 -march=armv5te -fomit-frame-pointer -pipe" + CXXFLAGS="$CFLAGS" + C2FLAGS="$CFLAGS" + CXX2FLAGS="$CXXFLAGS" else echo "`date -u '+%b %e %T'`: Can't determine your architecture - $MACHINE" >> $LOGFILE exit 1 @@ -240,15 +274,18 @@ entershell() { 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\$ ' \ + $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 \ 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 \ KVER=$KVER \ - BUILDTARGET="$BUILDTARGET" MACHINE="$MACHINE" \ + BUILDTARGET="$BUILDTARGET" \ + MACHINE="$MACHINE" \ + MACHINE_TYPE="$MACHINE_TYPE" \ KGCC="ccache /usr/bin/gcc" \ /tools/bin/bash if [ $? -ne 0 ]; then @@ -293,12 +330,16 @@ lfsmakecommoncheck() echo -ne "`date -u '+%b %e %T'`: Building $* " >> $LOGFILE - cd $BASEDIR/lfs && make -s -f $* LFS_BASEDIR=$BASEDIR MESSAGE="$1\t " download >> $LOGFILE 2>&1 + cd $BASEDIR/lfs && make -s -f $* LFS_BASEDIR=$BASEDIR MACHINE=$MACHINE \ + MACHINE_TYPE="$MACHINE_TYPE" \ + 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 MESSAGE="$1\t md5sum" md5 >> $LOGFILE 2>&1 + cd $BASEDIR/lfs && make -s -f $* LFS_BASEDIR=$BASEDIR MACHINE=$MACHINE \ + MACHINE_TYPE="$MACHINE_TYPE" \ + MESSAGE="$1\t md5sum" md5 >> $LOGFILE 2>&1 if [ $? -ne 0 ]; then exiterror "md5sum error in $1, check file in cache or signature" fi @@ -314,6 +355,7 @@ lfsmake1() { cd $BASEDIR/lfs && make -f $* BUILDTARGET=$BUILDTARGET \ MACHINE=$MACHINE \ + MACHINE_TYPE=$MACHINE_TYPE \ LFS_BASEDIR=$BASEDIR \ ROOT=$LFS \ KVER=$KVER \ @@ -337,16 +379,17 @@ lfsmake2() { [ $? == 1 ] && return 0 local PKG_TIME_START=`date +%s` - chroot $LFS /tools/bin/env -i HOME=/root \ + $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 \ VERSION=$VERSION \ CONFIG_ROOT=$CONFIG_ROOT \ NAME="$NAME" SNAME="$SNAME" SLOGAN="$SLOGAN" \ CFLAGS="$C2FLAGS" CXXFLAGS="$CXX2FLAGS" \ - CCACHE_DIR=/usr/src/ccache CCACHE_HASHDIR=1 \ + CCACHE_DIR=/usr/src/ccache CCACHE_COMPRESS=1 CCACHE_HASHDIR=1 \ KVER=$KVER MAKETUNING=$MAKETUNING \ BUILDTARGET="$BUILDTARGET" MACHINE="$MACHINE" \ + MACHINE_TYPE="$MACHINE_TYPE" \ IPFVER="$IPFVER" \ /tools/bin/bash -x -c "cd /usr/src/lfs && \ make -f $* LFS_BASEDIR=/usr/src install" >>$LOGFILE 2>&1 @@ -368,16 +411,18 @@ ipfiremake() { [ $? == 1 ] && return 0 local PKG_TIME_START=`date +%s` - chroot $LFS /tools/bin/env -i HOME=/root \ + $linux32 chroot $LFS /tools/bin/env -i HOME=/root \ TERM=$TERM PS1='\u:\w\$ ' \ PATH=/usr/local/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_HASHDIR=1 \ + CCACHE_DIR=/usr/src/ccache CCACHE_COMPRESS=1 CCACHE_HASHDIR=1 \ KVER=$KVER MAKETUNING=$MAKETUNING \ BUILDTARGET="$BUILDTARGET" MACHINE="$MACHINE" \ + MACHINE_TYPE="$MACHINE_TYPE" \ IPFVER="$IPFVER" \ /bin/bash -x -c "cd /usr/src/lfs && \ make -f $* LFS_BASEDIR=/usr/src install" >>$LOGFILE 2>&1 @@ -395,25 +440,32 @@ ipfiremake() { } ipfiredist() { - if [ -f $BASEDIR/build/usr/src/lfs/$1 ]; then - echo "`date -u '+%b %e %T'`: Packaging $1" | tee -a $LOGFILE - chroot $LFS /tools/bin/env -i HOME=/root \ - TERM=$TERM PS1='\u:\w\$ ' \ - PATH=/usr/local/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_HASHDIR=1 \ - KVER=$KVER IPFVER="$IPFVER" \ - BUILDTARGET="$BUILDTARGET" MACHINE="$MACHINE" \ - /bin/bash -x -c "cd /usr/src/lfs && \ - make -f $1 LFS_BASEDIR=/usr/src dist" >>$LOGFILE 2>&1 - if [ $? -ne 0 ]; then - exiterror "Packaging $1" - fi + lfsmakecommoncheck $* + [ $? == 1 ] && return 0 + + 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 \ + 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" \ + MACHINE_TYPE="$MACHINE_TYPE" \ + /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 - exiterror "No such file or directory: $BASEDIR/build/usr/src/lfs/$1" + beautify result DONE $[ $PKG_TIME_END - $PKG_TIME_START ] fi return 0 } @@ -423,7 +475,7 @@ installmake() { [ $? == 1 ] && return 0 local PKG_TIME_START=`date +%s` - chroot $LFS /tools/bin/env -i HOME=/root \ + $linux32 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 \ VERSION=$VERSION \ @@ -431,9 +483,10 @@ installmake() { LFS_PASS="install" \ NAME="$NAME" SNAME="$SNAME" SLOGAN="$SLOGAN" \ CFLAGS="-Os" CXXFLAGS="-Os" \ - CCACHE_DIR=/usr/src/ccache CCACHE_HASHDIR=1 \ + CCACHE_DIR=/usr/src/ccache CCACHE_COMPRESS=1 CCACHE_HASHDIR=1 \ KVER=$KVER IPFVER="$IPFVER" \ BUILDTARGET="$BUILDTARGET" MACHINE="$MACHINE" \ + MACHINE_TYPE="$MACHINE_TYPE" \ /bin/bash -x -c "cd /usr/src/lfs && \ make -f $* LFS_BASEDIR=/usr/src install" >>$LOGFILE 2>&1 @@ -461,19 +514,16 @@ batch_script() { if [ "$IPFIRE_REBUILD" -eq "0" ]; then export IPFIRE_START_TIME=`date` + + $0 clean evaluate 1 - echo -ne "### RUNNING SVN-UPDATE" - $0 svn update - evaluate 1 mail_me SVNUPDATE + $0 git update --force + evaluate 1 mail_me UPDATE echo "### EXPORT SOURCES" - $0 svn dist - evaluate 1 mail_me SVNDIST - - echo "### RUNNING PREFETCH" - $0 downloadsrc | grep -q "md5 difference" - evaluate 1 mail_me PREFETCH + $0 git dist + evaluate 1 mail_me DIST fi echo "### RUNNING BUILD" @@ -488,8 +538,8 @@ batch_script() { $0 upload paks evaluate 1 mail_me PAKS - echo -n "${BOLD}***SUCCESS!${NORMAL}" - evaluate 0 mail_me SUCCESS + echo -ne "${BOLD}***SUCCESS!${NORMAL}" + mail_me success exit 0 } @@ -500,14 +550,14 @@ watch_screen() { } mail_me() { - chmod 755 tools/sendEmail - ATTACHMENT=/tmp/ipfire-build-logs-R$SVN_REVISION.tar.gz + echo "From: $MAIL_FROM" > /tmp/ipfire_mail_body.$$ + echo "To: $MAIL_TO" >> /tmp/ipfire_mail_body.$$ case "$1" in success) - SUBJECT="SUCCESS: IPFIRE-BUILD R$SVN_REVISION on `hostname`" - cat < /tmp/ipfire_mail_body -Building IPFire on `hostname` in Revision $SVN_REVISION was successfull! -You can find the ISO on your ftp server. + 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: ----------- @@ -521,8 +571,8 @@ END echo -ne "${BOLD}***Sending success message${NORMAL}" ;; *) - SUBJECT="ERROR $1: IPFIRE-BUILD R$SVN_REVISION on `hostname`" - cat < /tmp/ipfire_mail_body + 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. @@ -538,22 +588,15 @@ END echo -ne "${BOLD}***Sending error message${NORMAL}" ;; esac - tar cfz $ATTACHMENT log/_build* - cat /tmp/ipfire_mail_body | tools/sendEmail -q \ - -f $IPFIRE_MAIL_FROM \ - -t $IPFIRE_MAIL_REPORT \ - -u $SUBJECT \ - -s $IPFIRE_MAIL_SERVER:25 \ - -xu $IPFIRE_MAIL_USER \ - -xp $IPFIRE_MAIL_PASS \ - -l log/_build.mail.log \ - -a $ATTACHMENT # -v + +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 $ATTACHMENT + rm -f /tmp/ipfire_mail_body.$$ } make_config() { @@ -624,6 +667,8 @@ make_config() { 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): " @@ -644,6 +689,7 @@ 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 @@ -696,3 +742,22 @@ reload_tftpd() { 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} + $BASEDIR/tools/sort_strings.pl en + $BASEDIR/tools/sort_strings.pl de + $BASEDIR/tools/sort_strings.pl fr + $BASEDIR/tools/sort_strings.pl es + $BASEDIR/tools/sort_strings.pl pl + $BASEDIR/tools/sort_strings.pl ru + $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_langs.sh > $BASEDIR/doc/language_missings + beautify message DONE +}