X-Git-Url: http://git.ipfire.org/?p=people%2Fpmueller%2Fipfire-2.x.git;a=blobdiff_plain;f=make.sh;h=cf15c5b59dd378f2ce77cc91fec11bc3e2028728;hp=9dbea0d9d3cb98a960a5736b8c6178411b49b3b4;hb=03ad5f93eb86832e32f8dc1b8bbbb16fa7212c27;hpb=f28d0ddc6d42c7787dbdf91c4a4555675bfd18f8 diff --git a/make.sh b/make.sh index 9dbea0d9d3..cf15c5b59d 100644 --- a/make.sh +++ b/make.sh @@ -1,5 +1,4 @@ #!/bin/bash -# ############################################################################ # # # This file is part of the IPFire Firewall. # @@ -18,108 +17,57 @@ # along with IPFire; if not, write to the Free Software # # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA # # # -# Copyright (C) 2006 IPFire-Team . # +# Copyright (C) 2006 IPFire-Team . # # # ############################################################################ # - NAME="IPFire" # Software name - SNAME="ipfire" # Short name - VERSION="1.4" # Version number - SLOGAN="We secure your network" # Software slogan - CONFIG_ROOT=/var/ipfire # Configuration rootdir - NICE=10 - MAX_RETRIES=3 # prefetch/check loop - KVER=`grep --max-count=1 VER lfs/linux | awk '{ print $3 }'` - MACHINE=`uname -m` +NAME="IPFire" # Software name +SNAME="ipfire" # Short name +VERSION="2.0" # Version number +SLOGAN="www.ipfire.eu" # Software slogan +CONFIG_ROOT=/var/ipfire # Configuration rootdir +NICE=10 # Nice level +MAX_RETRIES=1 # prefetch/check loop +KVER=`grep --max-count=1 VER lfs/linux | awk '{ print $3 }'` +MACHINE=`uname -m` +SVN_REVISION=`svn info | grep Revision | cut -c 11-` + +IPFVER="full" # Which version should be compiled? (full|light|voice) - # Debian specific settings - if [ ! -e /etc/debian_version ]; then +# Set an information about the build number +if [ -e ./.svn ]; then + FIREBUILD=`cat .svn/entries |sed -n 's/^[ \t]*revision=\"// p' | sed -n 's/\".*$// p'` +fi + +# Debian specific settings +if [ ! -e /etc/debian_version ]; then FULLPATH=`which $0` - else +else if [ -x /usr/bin/realpath ]; then FULLPATH=`/usr/bin/realpath $0` else echo "ERROR: Need to do apt-get install realpath" exit 1 fi - fi +fi +PWD=`pwd` +BASENAME=`basename $0` +BASEDIR=`echo $FULLPATH | sed "s/\/$BASENAME//g"` +LOGFILE=$BASEDIR/log/_build.preparation.log +export BASEDIR LOGFILE +DIR_CHK=$BASEDIR/cache/check +mkdir $BASEDIR/log/ 2>/dev/null - PWD=`pwd` - BASENAME=`basename $0` - BASEDIR=`echo $FULLPATH | sed "s/\/$BASENAME//g"` - LOGFILE=$BASEDIR/log/_build.preparation.log - export BASEDIR LOGFILE - DIR_CHK=$BASEDIR/cache/check - mkdir $BASEDIR/log/ 2>/dev/null - - if [ 'x86_64' = $MACHINE -o 'i686' = $MACHINE -o 'i586' = $MACHINE -o 'i486' = $MACHINE -o 'i386' = $MACHINE ]; then - echo "`date -u '+%b %e %T'`: Machine is ix86 (or equivalent)" | tee -a $LOGFILE - MACHINE=i386 - BUILDTARGET=i386-pc-linux-gnu - CFLAGS="-O2 -mcpu=i386 -march=i386 -pipe -fomit-frame-pointer" - CXXFLAGS="-O2 -mcpu=i386 -march=i386 -pipe -fomit-frame-pointer" - elif [ 'alpha' = $MACHINE ]; then - echo "`date -u '+%b %e %T'`: Machine is Alpha AXP" | tee -a $LOGFILE - BUILDTARGET=alpha-unknown-linux-gnu - CFLAGS="-O2 -mcpu=ev4 -mieee -pipe" - CXXFLAGS="-O2 -mcpu=ev4 -mieee -pipe" - else - echo "`date -u '+%b %e %T'`: Can't determine your architecture - $MACHINE" | tee -a $LOGFILE - exit 1 - fi - -# Define immediately -stdumount() { - umount $BASEDIR/build/dev/pts 2>/dev/null; - umount $BASEDIR/build/proc 2>/dev/null; - umount $BASEDIR/build/install/mnt 2>/dev/null; - umount $BASEDIR/build/usr/src/cache 2>/dev/null; - umount $BASEDIR/build/usr/src/ccache 2>/dev/null; - umount $BASEDIR/build/usr/src/config 2>/dev/null; - umount $BASEDIR/build/usr/src/doc 2>/dev/null; - umount $BASEDIR/build/usr/src/html 2>/dev/null; - umount $BASEDIR/build/usr/src/langs 2>/dev/null; - umount $BASEDIR/build/usr/src/lfs 2>/dev/null; - umount $BASEDIR/build/usr/src/log 2>/dev/null; - umount $BASEDIR/build/usr/src/src 2>/dev/null; -} +# Include funtions +. tools/make-functions -exiterror() { - stdumount - for i in `seq 0 7`; do - if ( losetup /dev/loop${i} 2>/dev/null | grep -q "/install/images" ); then - losetup -d /dev/loop${i} 2>/dev/null - fi; - done - echo "ERROR: $*" - echo " Check $LOGFILE for errors if applicable" - exit 1 -} - -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=/usr/local/bin:/bin:/usr/bin:/sbin:/usr/sbin:/tools/bin \ - VERSION=$VERSION CONFIG_ROOT=$CONFIG_ROOT \ - NAME="$NAME" SNAME="$SNAME" SLOGAN="$SLOGAN" \ - CFLAGS="$CFLAGS" CXXFLAGS="$CXXFLAGS" \ - CCACHE_DIR=/usr/src/ccache \ - CCACHE_HASHDIR=1 \ - KVER=$KVER \ - BUILDTARGET="$BUILDTARGET" MACHINE="$MACHINE" \ - KGCC="ccache /usr/bin/gcc" \ - /tools/bin/bash - if [ $? -ne 0 ]; then - exiterror "chroot error" - else - stdumount - fi -} +if [ -f .config ]; then + . .config +else + make_config +fi prepareenv() { ############################################################################ @@ -149,20 +97,27 @@ prepareenv() { # Resetting our nice level # # # ############################################################################ - echo "`date -u '+%b %e %T'`: Resetting our nice level to $NICE" | tee -a $LOGFILE + echo -ne "Resetting our nice level to $NICE" | tee -a $LOGFILE renice $NICE $$ > /dev/null if [ `nice` != "$NICE" ]; then + beautify message FAIL exiterror "Failed to set correct nice level" + else + beautify message DONE fi + ############################################################################ # # # Checking if running as root user # # # ############################################################################ - echo "`date -u '+%b %e %T'`: Checking if we're running as root user" | tee -a $LOGFILE + echo -ne "Checking if we're running as root user" | tee -a $LOGFILE if [ `id -u` != 0 ]; then + beautify message FAIL exiterror "Not building as root" + else + beautify message DONE fi @@ -171,14 +126,17 @@ prepareenv() { # Checking for necessary temporary space # # # ############################################################################ - echo "`date -u '+%b %e %T'`: Checking for necessary space on disk $BASE_DEV" | tee -a $LOGFILE + echo -ne "Checking for necessary space on disk $BASE_DEV" | tee -a $LOGFILE BASE_DEV=`df -P -k $BASEDIR | tail -n 1 | awk '{ print $1 }'` BASE_ASPACE=`df -P -k $BASEDIR | tail -n 1 | awk '{ print $4 }'` if (( 2202000 > $BASE_ASPACE )); then BASE_USPACE=`du -skx $BASEDIR | awk '{print $1}'` if (( 2202000 - $BASE_USPACE > $BASE_ASPACE )); then + beautify message FAIL exiterror "Not enough temporary space available, need at least 2.1GB on $BASE_DEV" fi + else + beautify message DONE fi ############################################################################ @@ -186,8 +144,6 @@ prepareenv() { # Building Linux From Scratch system # # # ############################################################################ - echo "`date -u '+%b %e %T'`: Building Linux From Scratch system" | tee -a $LOGFILE - # Set umask umask 022 @@ -208,17 +164,25 @@ prepareenv() { # Setup environment set +h LC_ALL=POSIX - export LFS LC_ALL CFLAGS CXXFLAGS + MAKETUNING="-j8" + export LFS LC_ALL CFLAGS CXXFLAGS MAKETUNING unset CC CXX CPP LD_LIBRARY_PATH LD_PRELOAD # Make some extra directories mkdir -p $BASEDIR/build/{tools,etc,usr/src} 2>/dev/null + mkdir -p $BASEDIR/build/{dev/{shm,pts},proc,sys} mkdir -p $BASEDIR/{cache,ccache} 2>/dev/null - mkdir -p $BASEDIR/build/dev/pts $BASEDIR/build/proc $BASEDIR/build/usr/src/{cache,config,doc,html,langs,lfs,log,src,ccache} + mkdir -p $BASEDIR/build/usr/src/{cache,config,doc,html,langs,lfs,log,src,ccache} + + mknod -m 600 $BASEDIR/build/dev/console c 5 1 2>/dev/null + mknod -m 666 $BASEDIR/build/dev/null c 1 3 2>/dev/null # Make all sources and proc available under lfs build + mount --bind /dev $BASEDIR/build/dev mount --bind /dev/pts $BASEDIR/build/dev/pts + mount --bind /dev/shm $BASEDIR/build/dev/shm mount --bind /proc $BASEDIR/build/proc + mount --bind /sys $BASEDIR/build/sys mount --bind $BASEDIR/cache $BASEDIR/build/usr/src/cache mount --bind $BASEDIR/ccache $BASEDIR/build/usr/src/ccache mount --bind $BASEDIR/config $BASEDIR/build/usr/src/config @@ -229,6 +193,9 @@ prepareenv() { mount --bind $BASEDIR/log $BASEDIR/build/usr/src/log mount --bind $BASEDIR/src $BASEDIR/build/usr/src/src + # This is a temporary hack!!! + cp -f /bin/hostname /tools/bin/hostname 2>/dev/null + # Run LFS static binary creation scripts one by one export CCACHE_DIR=$BASEDIR/ccache export CCACHE_HASHDIR=1 @@ -237,515 +204,345 @@ prepareenv() { rm -f $BASEDIR/build/usr/src/lsalr 2>/dev/null } - -############################################################################ -# # -# Necessary shell functions # -# # -############################################################################ -lfsmake1() { - if [ -f $BASEDIR/lfs/$1 ]; then - echo "`date -u '+%b %e %T'`: Building $*" | tee -a $LOGFILE - cd $BASEDIR/lfs && make -s -f $* LFS_BASEDIR=$BASEDIR 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 - if [ $? -ne 0 ]; then - exiterror "md5sum error in $1, check file in cache or signature" - fi - cd $BASEDIR/lfs && make -f $* BUILDTARGET=$BUILDTARGET \ - MACHINE=$MACHINE \ - LFS_BASEDIR=$BASEDIR \ - ROOT=$LFS \ - KVER=$KVER \ - install >> $LOGFILE 2>&1 - if [ $? -ne 0 ]; then - exiterror "Building $*"; - fi - else - exiterror "No such file or directory: $BASEDIR/$1" - fi - return 0 -} - -lfsmake2() { - if [ -f $BASEDIR/build/usr/src/lfs/$1 ]; then - echo "`date -u '+%b %e %T'`: Building $*" | tee -a $LOGFILE - cd $BASEDIR/lfs && make -s -f $* LFS_BASEDIR=$BASEDIR 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 - if [ $? -ne 0 ]; then - exiterror "md5sum error in $1, check file in cache or signature" - fi - 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="$CFLAGS" CXXFLAGS="$CXXFLAGS" \ - CCACHE_DIR=/usr/src/ccache CCACHE_HASHDIR=1 \ - KVER=$KVER \ - BUILDTARGET="$BUILDTARGET" MACHINE="$MACHINE" \ - /tools/bin/bash -x -c "cd /usr/src/lfs && \ - make -f $* LFS_BASEDIR=/usr/src install" >>$LOGFILE 2>&1 - if [ $? -ne 0 ]; then - exiterror "Building $*" - fi - else - exiterror "No such file or directory: $BASEDIR/build/usr/src/lfs/$1" - fi - return 0 -} - -ipcopmake() { - if [ -f $BASEDIR/build/usr/src/lfs/$1 ]; then - echo "`date -u '+%b %e %T'`: Building $*" | tee -a $LOGFILE - cd $BASEDIR/lfs && make -s -f $* LFS_BASEDIR=$BASEDIR 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 - if [ $? -ne 0 ]; then - exiterror "md5sum error in $1, check file in cache or signature" - fi - 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="$CFLAGS" CXXFLAGS="$CXXFLAGS" \ - CCACHE_DIR=/usr/src/ccache CCACHE_HASHDIR=1 \ - KVER=$KVER \ - BUILDTARGET="$BUILDTARGET" MACHINE="$MACHINE" \ - /bin/bash -x -c "cd /usr/src/lfs && \ - make -f $* LFS_BASEDIR=/usr/src install" >>$LOGFILE 2>&1 - if [ $? -ne 0 ]; then - exiterror "Building $*" - fi - else - exiterror "No such file or directory: $BASEDIR/build/usr/src/lfs/$1" - fi - return 0 -} - -ipfiredist() { - if [ -f $BASEDIR/build/usr/src/lfs/$1 ]; then -# if [ ! `ls -w1 $BASEDIR/packages/*.tar.gz | grep $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="$CFLAGS" CXXFLAGS="$CXXFLAGS" \ - CCACHE_DIR=/usr/src/ccache CCACHE_HASHDIR=1 \ - KVER=$KVER \ - 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 -# else -# echo "`date -u '+%b %e %T'`: Packaging: The package $1 already exists" -# fi - else - exiterror "No such file or directory: $BASEDIR/build/usr/src/lfs/$1" - fi - return 0 -} - - -installmake() { - if [ -f $BASEDIR/build/usr/src/lfs/$1 ]; then - echo "`date -u '+%b %e %T'`: Building $*" | tee -a $LOGFILE - cd $BASEDIR/lfs && make -s -f $* LFS_BASEDIR=$BASEDIR 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 - if [ $? -ne 0 ]; then - exiterror "md5sum error in $1, check file in cache or signature" - fi - chroot $LFS /tools/bin/env -i HOME=/root \ - TERM=$TERM PS1='\u:\w\$ ' \ - PATH=/usr/local/bin:/opt/$MACHINE-uClibc/usr/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_HASHDIR=1 \ - KVER=$KVER \ - BUILDTARGET="$BUILDTARGET" MACHINE="$MACHINE" \ - /bin/bash -x -c "cd /usr/src/lfs && \ - make -f $* LFS_BASEDIR=/usr/src install" >>$LOGFILE 2>&1 - if [ $? -ne 0 ]; then - exiterror "Building $*" - fi - else - exiterror "No such file or directory: $BASEDIR/build/usr/src/lfs/$1" - fi - return 0 -} - buildtoolchain() { LOGFILE="$BASEDIR/log/_build.toolchain.log" export LOGFILE - echo -ne "`date -u '+%b %e %T'`: Stage1 toolchain build \n" | tee -a $LOGFILE - # Build sed now, as we use some extensions ORG_PATH=$PATH NATIVEGCC=`gcc --version | grep GCC | awk {'print $3'}` export NATIVEGCC GCCmajor=${NATIVEGCC:0:1} GCCminor=${NATIVEGCC:2:1} GCCrelease=${NATIVEGCC:4:1} lfsmake1 ccache - lfsmake1 sed LFS_PASS=1 - lfsmake1 m4 LFS_PASS=1 - lfsmake1 bison LFS_PASS=1 - lfsmake1 flex LFS_PASS=1 - lfsmake1 binutils LFS_PASS=1 - lfsmake1 gcc LFS_PASS=1 + lfsmake1 binutils PASS=1 + lfsmake1 gcc PASS=1 export PATH=$BASEDIR/build/usr/local/bin:$BASEDIR/build/tools/bin:$PATH - - lfsmake1 linux + lfsmake1 linux-libc-header + lfsmake1 glibc + lfsmake1 cleanup-toolchain PASS=1 lfsmake1 tcl lfsmake1 expect - lfsmake1 glibc lfsmake1 dejagnu - lfsmake1 gcc LFS_PASS=2 - lfsmake1 binutils LFS_PASS=2 - lfsmake1 gawk - lfsmake1 coreutils + lfsmake1 gcc PASS=2 + lfsmake1 binutils PASS=2 + lfsmake1 ncurses + lfsmake1 bash lfsmake1 bzip2 - lfsmake1 gzip + lfsmake1 coreutils lfsmake1 diffutils lfsmake1 findutils - lfsmake1 make - lfsmake1 grep - lfsmake1 sed LFS_PASS=2 - lfsmake1 m4 LFS_PASS=2 - lfsmake1 bison LFS_PASS=2 - lfsmake1 flex LFS_PASS=2 + lfsmake1 gawk lfsmake1 gettext - lfsmake1 ncurses + lfsmake1 grep + lfsmake1 gzip + lfsmake1 m4 + lfsmake1 make lfsmake1 patch + lfsmake1 perl + lfsmake1 sed lfsmake1 tar lfsmake1 texinfo - lfsmake1 bash lfsmake1 util-linux - lfsmake1 perl + lfsmake1 cleanup-toolchain PASS=2 export PATH=$ORG_PATH } buildbase() { LOGFILE="$BASEDIR/log/_build.base.log" export LOGFILE - echo -ne "`date -u '+%b %e %T'`: Stage2 linux base build \n" | tee -a $LOGFILE - # Run LFS dynamic binary creation scripts one by one lfsmake2 stage2 - lfsmake2 makedev - lfsmake2 linux +# lfsmake2 makedev + lfsmake2 linux-libc-header lfsmake2 man-pages lfsmake2 glibc + lfsmake2 cleanup-toolchain PASS=3 lfsmake2 binutils lfsmake2 gcc + lfsmake2 berkeley lfsmake2 coreutils - lfsmake2 zlib - lfsmake2 mktemp lfsmake2 iana-etc - lfsmake2 findutils - lfsmake2 gawk - lfsmake2 ncurses - lfsmake2 vim lfsmake2 m4 lfsmake2 bison - lfsmake2 less - lfsmake2 groff + lfsmake2 ncurses + lfsmake2 procps lfsmake2 sed - lfsmake2 flex - lfsmake2 gettext - lfsmake2 net-tools - lfsmake2 inetutils + lfsmake2 libtool lfsmake2 perl - lfsmake2 texinfo + lfsmake2 readline + lfsmake2 zlib lfsmake2 autoconf lfsmake2 automake lfsmake2 bash - lfsmake2 file - lfsmake2 libtool lfsmake2 bzip2 lfsmake2 diffutils - lfsmake2 ed - lfsmake2 kbd lfsmake2 e2fsprogs + lfsmake2 file + lfsmake2 findutils + lfsmake2 flex + lfsmake2 grub + lfsmake2 gawk + lfsmake2 gettext lfsmake2 grep - if [ 'i386' = $MACHINE ]; then - lfsmake2 grub - elif [ 'alpha' = $MACHINE ]; then - lfsmake2 aboot - fi + lfsmake2 groff lfsmake2 gzip - lfsmake2 man + lfsmake2 inetutils + lfsmake2 iproute2 + lfsmake2 kbd + lfsmake2 less lfsmake2 make + lfsmake2 man + lfsmake2 mktemp lfsmake2 modutils lfsmake2 patch - lfsmake2 procinfo - lfsmake2 procps lfsmake2 psmisc lfsmake2 shadow lfsmake2 sysklogd lfsmake2 sysvinit lfsmake2 tar + lfsmake2 texinfo + lfsmake2 udev lfsmake2 util-linux + lfsmake2 vim +#### +# lfsmake2 net-tools +# lfsmake2 inetutils +# lfsmake2 ed +# lfsmake2 procinfo } -buildipcop() { - # Run IPFire make scripts one by one +buildipfire() { LOGFILE="$BASEDIR/log/_build.ipfire.log" export LOGFILE - echo -ne "`date -u '+%b %e %T'`: Stage3 $NAME build \n" | tee -a $LOGFILE - - # Build these first as some of the kernel packages below rely on - # these for some of their client program functionality - ipcopmake configroot - ipcopmake dhcp - ipcopmake dhcpcd - ipcopmake libusb - ipcopmake libpcap - ipcopmake linux-atm - ipcopmake ppp - ipcopmake rp-pppoe - ipcopmake unzip - # Do SMP now - if [ 'i386' = $MACHINE ]; then - # abuse the SMP flag, and make an minimal installer kernel first - # so that the boot floppy always works..... - ipcopmake linux LFS_PASS=ipfire SMP=installer - ipcopmake linux LFS_PASS=ipfire SMP=1 - ipcopmake 3cp4218 SMP=1 - ipcopmake amedyn SMP=1 - ipcopmake cxacru SMP=1 - ipcopmake eagle SMP=1 - - # These are here because they have i386 only binary libraries - # included in the package. - ipcopmake cnx_pci SMP=1 - ipcopmake fcdsl SMP=1 - ipcopmake fcdsl2 SMP=1 - ipcopmake fcdslsl SMP=1 - ipcopmake fcdslusb SMP=1 - ipcopmake fcdslslusb SMP=1 - ipcopmake fcpci SMP=1 - ipcopmake fcclassic SMP=1 - ipcopmake pulsar SMP=1 - ipcopmake unicorn SMP=1 - fi - - ipcopmake linux LFS_PASS=ipfire - ipcopmake 3cp4218 - ipcopmake amedyn - ipcopmake cxacru - ipcopmake eciadsl - ipcopmake eagle - ipcopmake speedtouch - if [ 'i386' = $MACHINE ]; then - # These are here because they have i386 only binary libraries - # included in the package. - ipcopmake cnx_pci - ipcopmake fcdsl - ipcopmake fcdsl2 - ipcopmake fcdslsl - ipcopmake fcdslusb - ipcopmake fcdslslusb - ipcopmake fcpci - ipcopmake fcclassic - ipcopmake pulsar - ipcopmake unicorn - fi - - ipcopmake pcmcia-cs - ipcopmake expat - ipcopmake gdbm - ipcopmake gmp - ipcopmake openssl - ipcopmake python - ipcopmake libnet - ipcopmake libpng - ipcopmake gd - ipcopmake popt - ipcopmake slang - ipcopmake newt - ipcopmake libcap - ipcopmake pciutils - ipcopmake pcre - ipcopmake apache - ipcopmake arping - ipcopmake beep - ipcopmake bind - ipcopmake capi4k-utils - ipcopmake cdrtools - ipcopmake dnsmasq - ipcopmake dosfstools - ipcopmake ethtool - ipcopmake ez-ipupdate - ipcopmake fcron - ipcopmake perl-GD - ipcopmake gnupg - ipcopmake hdparm - ipcopmake ibod - ipcopmake initscripts - ipcopmake iptables - ipcopmake ipac-ng - ipcopmake ipaddr - ipcopmake iproute2 - ipcopmake iptstate - ipcopmake iputils - ipcopmake l7-protocols - ipcopmake isapnptools - ipcopmake isdn4k-utils - ipcopmake kudzu - ipcopmake logrotate - ipcopmake logwatch - ipcopmake mingetty - ipcopmake misc-progs - ipcopmake mtools - ipcopmake nano - ipcopmake nash - ipcopmake nasm - ipcopmake URI - ipcopmake HTML-Tagset - ipcopmake HTML-Parser - ipcopmake Compress-Zlib - ipcopmake Digest - ipcopmake Digest-SHA1 - ipcopmake Digest-HMAC - ipcopmake libwww-perl - ipcopmake Net-DNS - ipcopmake Net-IPv4Addr - ipcopmake Net_SSLeay - ipcopmake IO-Stringy - ipcopmake Unix-Syslog - ipcopmake Mail-Tools - ipcopmake MIME-Tools - ipcopmake Net-Server - ipcopmake Convert-TNEF - ipcopmake Convert-UUlib - ipcopmake Archive-Tar - ipcopmake Archive-Zip - ipcopmake Text-Tabs+Wrap - ipcopmake Locale-Country - ipcopmake GeoIP - ipcopmake fwhits - ipcopmake berkeley - ipcopmake BerkeleyDB ## The Perl module - ipcopmake noip_updater - ipcopmake ntp - ipcopmake oinkmaster - ipcopmake openssh - ipcopmake openswan - ipcopmake pptpclient - ipcopmake rrdtool - ipcopmake setserial - ipcopmake setup - ipcopmake snort - #ipcopmake speedycgi - ipcopmake saslauthd PASS=1 - ipcopmake openldap - ipcopmake squid - ipcopmake squid-graph - ipcopmake squidguard - ipcopmake tcpdump - ipcopmake traceroute - ipcopmake vlan - #ipcopmake wireless - ipcopmake libsafe - ipcopmake 3c5x9setup -# echo -ne "`date -u '+%b %e %T'`: Building ### IPFire modules ### \n" | tee -a $LOGFILE - ipcopmake pakfire - ipcopmake startscripts -## Zuerst die Libs und dann die Programme. Ordnung muss sein! - ipcopmake java - ipcopmake libtiff - ipcopmake libjpeg - ipcopmake libxml2 - ipcopmake spandsp - ipcopmake lzo - ipcopmake openvpn - ipcopmake pkg-config - ipcopmake glib - ipcopmake xampp - ipcopmake pam - ipcopmake pammysql - ipcopmake saslauthd PASS=2 - ipcopmake xinetd - ipcopmake ghostscript - ipcopmake cups -# ipcopmake lpd ## Im Moment aus, da CUPS vorhanden ist. - ipcopmake samba - ipcopmake sudo - ipcopmake mc - ipcopmake pwlib - ipcopmake openh323 - ipcopmake wget - ipcopmake wput - ipcopmake bridge-utils - ipcopmake screen - ipcopmake hddtemp - ipcopmake htop - ipcopmake lynx - echo -ne "`date -u '+%b %e %T'`: Building ### Mailserver ### \n" | tee -a $LOGFILE - ipcopmake postfix - ipcopmake procmail - ipcopmake fetchmail - ipcopmake cyrusimap - ipcopmake web-cyradm - ipcopmake mailx - ipcopmake clamav - ipcopmake razor - ipcopmake spamassassin -# ipcopmake amavisd - echo -ne "`date -u '+%b %e %T'`: Building ### VoIP-Server ### \n" | tee -a $LOGFILE - ipcopmake stund - ipcopmake asterisk - ipcopmake mpg123 - echo -ne "`date -u '+%b %e %T'`: Building ### MP3-Server ### \n" | tee -a $LOGFILE - ipcopmake lame - ipcopmake gnump3d - echo -ne "`date -u '+%b %e %T'`: Building ### P2P-Clients ### \n" | tee -a $LOGFILE - ipcopmake applejuice - ipcopmake edonkeyclc -# ipcopmake sane - echo -ne "`date -u '+%b %e %T'`: Building ### Net-Tools ### \n" | tee -a $LOGFILE - ipcopmake ntop -# ipcopmake rsync - ipcopmake tcpwrapper - ipcopmake portmap - ipcopmake nfs - ipcopmake nmap - ipcopmake iftop - ipcopmake ncftp - ipcopmake cftp - ipcopmake etherwake - ipcopmake ethereal -# ipcopmake stunnel # Ausgeschaltet, weil wir es doch nicht nutzen + ipfiremake configroot + ipfiremake dhcp + ipfiremake dhcpcd + ipfiremake libusb + ipfiremake libpcap +# Temporary disabled. +# ipfiremake linux-atm + ipfiremake ppp + ipfiremake rp-pppoe + ipfiremake unzip + ipfiremake linux PASS=ipfire SMP=installer + ipfiremake linux PASS=ipfire SMP=1 +# ipfiremake 3cp4218 SMP=1 +# ipfiremake amedyn SMP=1 +# ipfiremake cxacru SMP=1 +# ipfiremake eagle SMP=1 +# ipfiremake cnx_pci SMP=1 +# ipfiremake fcdsl SMP=1 +# ipfiremake fcdsl2 SMP=1 +# ipfiremake fcdslsl SMP=1 +# ipfiremake fcdslusb SMP=1 +# ipfiremake fcdslslusb SMP=1 +# ipfiremake fcpci SMP=1 +# ipfiremake fcclassic SMP=1 +# ipfiremake pulsar SMP=1 +# ipfiremake unicorn SMP=1 +# ipfiremake promise-sata-300-tx SMP=1 + ipfiremake linux PASS=ipfire +# ipfiremake 3cp4218 +# ipfiremake amedyn +# ipfiremake cxacru +# ipfiremake eciadsl +# ipfiremake eagle +# ipfiremake speedtouch +# ipfiremake cnx_pci +# ipfiremake fcdsl +# ipfiremake fcdsl2 +# ipfiremake fcdslsl +# ipfiremake fcdslusb +# ipfiremake fcdslslusb +# ipfiremake fcpci +# ipfiremake fcclassic +# ipfiremake pulsar +# ipfiremake unicorn +# ipfiremake promise-sata-300-tx + ipfiremake pcmcia-cs + ipfiremake expat + ipfiremake gdbm + ipfiremake gmp + ipfiremake openssl + ipfiremake python + ipfiremake libnet + ipfiremake libpng + ipfiremake libtiff + ipfiremake libjpeg + ipfiremake lcms + ipfiremake libmng + ipfiremake freetype + ipfiremake gd + ipfiremake popt + ipfiremake slang + ipfiremake newt + ipfiremake libcap + ipfiremake pciutils + ipfiremake pcre + ipfiremake readline + ipfiremake libxml2 + ipfiremake berkeley + ipfiremake BerkeleyDB ## The Perl module + ipfiremake mysql + ipfiremake saslauthd PASS=1 + ipfiremake openldap + ipfiremake apache2 + ipfiremake php + ipfiremake subversion + ipfiremake apache2 PASS=CONFIG + ipfiremake arping + ipfiremake beep + ipfiremake bind + ipfiremake capi4k-utils + ipfiremake cdrtools + ipfiremake dnsmasq + ipfiremake dosfstools + ipfiremake ethtool + ipfiremake ez-ipupdate + ipfiremake fcron + ipfiremake perl-GD + ipfiremake gnupg + ipfiremake hdparm + ipfiremake ibod + ipfiremake initscripts + ipfiremake iptables + ipfiremake ipac-ng + ipfiremake ipaddr + ipfiremake iproute2 + ipfiremake iptstate + ipfiremake iputils + ipfiremake l7-protocols + ipfiremake isapnptools + ipfiremake isdn4k-utils + ipfiremake kudzu + ipfiremake logrotate + ipfiremake logwatch + ipfiremake mingetty + ipfiremake misc-progs + ipfiremake mtools + ipfiremake nano + ipfiremake nash + ipfiremake nasm + ipfiremake URI + ipfiremake HTML-Tagset + ipfiremake HTML-Parser + ipfiremake Compress-Zlib + ipfiremake Digest + ipfiremake Digest-SHA1 + ipfiremake Digest-HMAC + ipfiremake libwww-perl + ipfiremake Net-DNS + ipfiremake Net-IPv4Addr + ipfiremake Net_SSLeay + ipfiremake IO-Stringy + ipfiremake Unix-Syslog + ipfiremake Mail-Tools + ipfiremake MIME-Tools + ipfiremake Net-Server + ipfiremake Convert-TNEF + ipfiremake Convert-UUlib + ipfiremake Archive-Tar + ipfiremake Archive-Zip + ipfiremake Text-Tabs+Wrap + ipfiremake Locale-Country + ipfiremake GeoIP + ipfiremake fwhits + ipfiremake noip_updater + ipfiremake ntp + ipfiremake oinkmaster + ipfiremake openssh + ipfiremake openswan + ipfiremake pptpclient + ipfiremake rrdtool + ipfiremake setserial + ipfiremake setup + ipfiremake snort + ipfiremake squid + ipfiremake squid-graph + ipfiremake squidguard + ipfiremake tcpdump + ipfiremake traceroute + ipfiremake vlan + ipfiremake wireless + ipfiremake libsafe + ipfiremake 3c5x9setup + ipfiremake pakfire + ipfiremake startscripts + ipfiremake java + ipfiremake bootsplash + ipfiremake spandsp + ipfiremake lzo + ipfiremake openvpn + ipfiremake pkg-config + ipfiremake glib + ipfiremake pam + ipfiremake pammysql + ipfiremake saslauthd PASS=2 + ipfiremake xinetd + ipfiremake ghostscript + ipfiremake cups + ipfiremake samba + ipfiremake sudo + ipfiremake mc + ipfiremake wget + ipfiremake wput + ipfiremake bridge-utils + ipfiremake screen + ipfiremake hddtemp + ipfiremake smartmontools + ipfiremake htop + ipfiremake lynx + ipfiremake postfix + ipfiremake procmail + ipfiremake fetchmail + ipfiremake cyrusimap + ipfiremake webcyradm + ipfiremake mailx + ipfiremake clamav + ipfiremake razor + ipfiremake spamassassin +# ipfiremake amavisd + ipfiremake stund + ipfiremake zaptel + ipfiremake libpri + ipfiremake bristuff + ipfiremake asterisk + ipfiremake mpg123 + ipfiremake libmad + ipfiremake libogg + ipfiremake libvorbis + ipfiremake lame + ipfiremake xvid + ipfiremake mpeg2dec + ipfiremake ffmpeg + ipfiremake sox + ipfiremake gnump3d + ipfiremake videolan + ipfiremake applejuice + ipfiremake ocaml + ipfiremake mldonkey + ipfiremake ntop + ipfiremake rsync + ipfiremake tcpwrapper + ipfiremake portmap + ipfiremake nfs + ipfiremake nmap + ipfiremake mbmon + ipfiremake iftop + ipfiremake ncftp + ipfiremake cftp + ipfiremake etherwake + ipfiremake ethereal + ipfiremake tftp-hpa + ipfiremake iptraf + ipfiremake nagios + ipfiremake yasuc } buildinstaller() { # Run installer scripts one by one LOGFILE="$BASEDIR/log/_build.installer.log" export LOGFILE - echo -ne "`date -u '+%b %e %T'`: Stage4 installer build \n" | tee -a $LOGFILE - if [ 'i386' = $MACHINE ]; then - ipcopmake syslinux - ipcopmake as86 - ipcopmake mbr - ipcopmake uClibc - fi + ipfiremake syslinux + ipfiremake as86 + ipfiremake mbr + ipfiremake uClibc installmake busybox installmake sysvinit installmake e2fsprogs @@ -801,17 +598,17 @@ buildpackages() { rm -f $BASEDIR/doc/packages-list for i in `ls -1tr $BASEDIR/log/[^_]*`; do if [ "$i" != "$BASEDIR/log/FILES" -a -n $i ]; then - echo " * `basename $i`" >>$BASEDIR/doc/packages-list + echo "* `basename $i`" >>$BASEDIR/doc/packages-list fi done - echo "====== List of softwares used to build $NAME Version: $VERSION ======" > $BASEDIR/doc/packages-list.txt - grep -v 'configroot$\|img$\|initrd$\|initscripts$\|installer$\|install$\|ipcop$\|setup$\|pakfire$\|stage2$\|smp$\|tools$\|tools1$\|tools2$' \ + echo "== List of softwares used to build $NAME Version: $VERSION ==" > $BASEDIR/doc/packages-list.txt + grep -v 'configroot$\|img$\|initrd$\|initscripts$\|installer$\|install$\|ipfire$\|setup$\|pakfire$\|stage2$\|smp$\|tools$\|tools1$\|tools2$\|.tgz$\|-config$' \ $BASEDIR/doc/packages-list | sort >> $BASEDIR/doc/packages-list.txt rm -f $BASEDIR/doc/packages-list # packages-list.txt is ready to be displayed for wiki page - # Create ISO for CDRom and USB-superfloppy - ipcopmake cdrom + # Create ISO for CDROM + ipfiremake cdrom rm -f $LFS/install/images/*usb* cp $LFS/install/images/{*.iso,*.tgz} $BASEDIR >> $LOGFILE 2>&1 @@ -832,57 +629,73 @@ buildpackages() { cat $i | sed "s%^\./%#%" | sort >> $BASEDIR/log/FILES fi done + cd $BASEDIR/packages; ls -w1 *.ipfire | awk -F ".ipfire" '{ print $1 }' > $BASEDIR/packages/packages_list.txt + echo -n "###EOF###" >> $BASEDIR/packages/packages_list.txt cd $PWD } ipfirepackages() { - for i in `ls $BASEDIR/packages`; do - touch $BASEDIR/build/install/packages/$i.empty - done - ipfiredist amavisd + if [ -d "$BASEDIR/packages" ]; then + for i in `ls $BASEDIR/packages`; do + touch $BASEDIR/build/install/packages/$i.empty + done + fi +# ipfiredist amavisd ipfiredist applejuice ipfiredist asterisk ipfiredist clamav ipfiredist cups ipfiredist cyrusimap ipfiredist fetchmail + ipfiredist ffmpeg ipfiredist gnump3d + ipfiredist iptraf ipfiredist java ipfiredist lame + ipfiredist libmad + ipfiredist libogg ipfiredist libtiff - ipfiredist libxml2 + ipfiredist libvorbis ipfiredist mailx + ipfiredist mldonkey + ipfiredist mpeg2dec + ipfiredist nagios ipfiredist nfs ipfiredist nmap ipfiredist ntop + ipfiredist portmap ipfiredist postfix ipfiredist procmail ipfiredist samba + ipfiredist sox ipfiredist spamassassin - ipfiredist web-cyradm - ipfiredist xampp - ipfiredist xinetd + ipfiredist subversion + ipfiredist videolan + ipfiredist webcyradm + ipfiredist xvid + ipfiredist yasuc test -d $BASEDIR/packages || mkdir $BASEDIR/packages - mv -f $LFS/install/packages/*.{tar.gz,md5} $BASEDIR/packages >> $LOGFILE 2>&1 + mv -f $LFS/install/packages/*.{ipfire,md5} $BASEDIR/packages >> $LOGFILE 2>&1 rm -rf $BASEDIR/build/install/packages/* } # See what we're supposed to do case "$1" in build) + clear BUILDMACHINE=`uname -m` - PACKAGE=`ls -v -r $BASEDIR/cache/$SNAME-1.4-toolchain-$BUILDMACHINE.tar.gz 2> /dev/null | head -n 1` + PACKAGE=`ls -v -r $BASEDIR/cache/toolchains/$SNAME-$VERSION-toolchain-$BUILDMACHINE.tar.gz 2> /dev/null | head -n 1` #only restore on a clean disk - if [ ! -f log/perl-*-tools ]; then + if [ ! -f log/cleanup-toolchain-2-tools ]; then if [ ! -n "$PACKAGE" ]; then - echo "`date -u '+%b %e %T'`: Full toolchain compilation" | tee -a $LOGFILE + beautify build_stage "Full toolchain compilation - Native GCC: `gcc --version | grep GCC | awk {'print $3'}`" prepareenv buildtoolchain else PACKAGENAME=${PACKAGE%.tar.gz} - echo "`date -u '+%b %e %T'`: Restore from $PACKAGE" | tee -a $LOGFILE + beautify build_stage "Packaged toolchain compilation" if [ `md5sum $PACKAGE | awk '{print $1}'` == `cat $PACKAGENAME.md5 | awk '{print $1}'` ]; then tar zxf $PACKAGE prepareenv @@ -891,12 +704,28 @@ build) fi fi else - echo "`date -u '+%b %e %T'`: Using installed toolchain" | tee -a $LOGFILE + echo -n "Using installed toolchain" | tee -a $LOGFILE + beautify message SKIP prepareenv fi + + beautify build_stage "Building base" buildbase - buildipcop + + beautify build_stage "Building IPFire" + buildipfire + + # Setzen des IPFire Builds + if [ "$FIREBUILD" ]; then + echo "$FIREBUILD" > $BASEDIR/build/var/ipfire/firebuild + else + echo "_(OvO)_" > $BASEDIR/build/var/ipfire/firebuild + fi + + beautify build_stage "Building installer" buildinstaller + + beautify build_stage "Building packages" buildpackages ;; shell) @@ -910,36 +739,6 @@ changelog) svn log http://svn.ipfire.eu/svn/ipfire > doc/ChangeLog echo "Finished!" ;; -check) - echo "Checking sources files availability on the web" - if [ ! -d $DIR_CHK ]; then - mkdir -p $DIR_CHK - fi - FINISHED=0 - cd $BASEDIR/lfs - for c in `seq $MAX_RETRIES`; do - if (( FINISHED==1 )); then - break - fi - FINISHED=1 - cd $BASEDIR/lfs - for i in *; do - if [ -f "$i" -a "$i" != "Config" ]; then - make -s -f $i MACHINE=$MACHINE LFS_BASEDIR=$BASEDIR ROOT=$BASEDIR/build \ - MESSAGE="$i\t ($c/$MAX_RETRIES)" check - if [ $? -ne 0 ]; then - echo "Check : wget error in lfs/$i" - FINISHED=0 - fi - fi - done - done - cd - - ;; -checkclean) - echo "Erasing sources files availability tags" - rm -rf $DIR_CHK/* - ;; clean) for i in `mount | grep $BASEDIR | sed 's/^.*loop=\(.*\))/\1/'`; do $LOSETUP -d $i 2>/dev/null @@ -962,14 +761,6 @@ clean) rm -f /tools fi ;; -dist) - echo -ne "Updating & building source package from SVN: " - svn up > /dev/null - svn export http://svn.ipfire.eu/svn/ipfire ipfire-source/ --force > /dev/null - tar cfz ipfire-source-`date +'%Y-%m-%d'`-r`svn info | grep Revision | cut -c 11-`.tar.gz ipfire-source - rm ipfire-source/ -r - echo "Finished!" - ;; newpak) # create structure for a new package echo -e "Name of the new package: $2" @@ -1026,7 +817,7 @@ prefetch) mkdir $BASEDIR/cache fi mkdir -p $BASEDIR/log - echo "`date -u '+%b %e %T'`:Preload all source files" | tee -a $LOGFILE + echo -e "${BOLD}Preload all source files${NORMAL}" | tee -a $LOGFILE FINISHED=0 cd $BASEDIR/lfs for c in `seq $MAX_RETRIES`; do @@ -1037,161 +828,316 @@ prefetch) cd $BASEDIR/lfs for i in *; do if [ -f "$i" -a "$i" != "Config" ]; then + echo -ne "Loading $i" make -s -f $i LFS_BASEDIR=$BASEDIR MESSAGE="$i\t ($c/$MAX_RETRIES)" download >> $LOGFILE 2>&1 if [ $? -ne 0 ]; then - echo "Prefetch : wget error in lfs/$i" + beautify message FAIL FINISHED=0 else if [ $c -eq 1 ]; then - echo "Prefetch : lfs/$i files loaded" + beautify message DONE fi fi fi done done - echo "Prefetch : verifying md5sum" + echo -e "${BOLD}***Verifying md5sums${NORMAL}" ERROR=0 for i in *; do if [ -f "$i" -a "$i" != "Config" ]; then make -s -f $i LFS_BASEDIR=$BASEDIR MESSAGE="$i\t " md5 >> $LOGFILE 2>&1 if [ $? -ne 0 ]; then - echo "md5 difference in lfs/$i" + echo -ne "MD5 difference in lfs/$i" + beautify message FAIL ERROR=1 fi fi done if [ $ERROR -eq 0 ]; then - echo "Prefetch : all files md5sum match" + echo -ne "${BOLD}all files md5sum match${NORMAL}" + beautify message DONE + else + echo -ne "${BOLD}not all files were correctly download${NORMAL}" + beautify message FAIL fi - cd - + cd - >/dev/null 2>&1 ;; toolchain) + clear prepareenv + beautify build_stage "Toolchain compilation - Native GCC: `gcc --version | grep GCC | awk {'print $3'}`" buildtoolchain BUILDMACHINE=`uname -m` echo "`date -u '+%b %e %T'`: Create toolchain tar.gz for $BUILDMACHINE" | tee -a $LOGFILE - cd $BASEDIR && tar -zc --exclude='log/_build.*.log' -f cache/$SNAME-$VERSION-toolchain-$BUILDMACHINE.tar.gz \ + test -d $BASEDIR/cache/toolchains || mkdir $BASEDIR/cache/toolchains + cd $BASEDIR && tar -zc --exclude='log/_build.*.log' -f cache/toolchains/$SNAME-$VERSION-toolchain-$BUILDMACHINE.tar.gz \ build/{bin,etc,usr/bin,usr/local} \ build/tools/{bin,etc,*-linux-gnu,include,lib,libexec,sbin,share,var} \ log >> $LOGFILE - md5sum cache/$SNAME-$VERSION-toolchain-$BUILDMACHINE.tar.gz \ - > cache/$SNAME-$VERSION-toolchain-$BUILDMACHINE.md5 + md5sum cache/toolchains/$SNAME-$VERSION-toolchain-$BUILDMACHINE.tar.gz \ + > cache/toolchains/$SNAME-$VERSION-toolchain-$BUILDMACHINE.md5 stdumount ;; gettoolchain) BUILDMACHINE=`uname -m` # arbitrary name to be updated in case of new toolchain package upload - PACKAGE=$SNAME-1.4-toolchain-$BUILDMACHINE - URL_IPFIRE=`grep URL_IPFIRE lfs/Config | awk '{ print $3 }'` - echo "`date -u '+%b %e %T'`: Load toolchain tar.gz for $BUILDMACHINE" | tee -a $LOGFILE - cd $BASEDIR/cache - wget $URL_IPFIRE/toolchains/$PACKAGE.tar.gz $URL_IPFIRE/toolchains/$PACKAGE.md5 >& /dev/null - if [ $? -ne 0 ]; then - echo "`date -u '+%b %e %T'`: error downloading toolchain for $BUILDMACHINE machine" | tee -a $LOGFILE -# else -# if [ "`md5sum $PACKAGE.tar.gz | awk '{print $1}'`" = "`cat $PACKAGE.md5 | awk '{print $1}'`" ]; then -# echo "`date -u '+%b %e %T'`: toolchain md5 ok" | tee -a $LOGFILE -# echo "`date -u '+%b %e %T'`: Uncompressing toolchain" | tee -a $LOGFILE -# cd $BASEDIR && tar xfz cache/$PACKAGE.tar.gz -C . -# rm -f $BASEDIR/cache/$PACKAGE.{tar.gz,md5} -# else -# exiterror "$PACKAGE.md5 did not match, check downloaded package" -# fi + PACKAGE=$SNAME-$VERSION-toolchain-$BUILDMACHINE + if [ ! -f $BASEDIR/cache/toolchains/$PACKAGE.tar.gz ]; then + URL_IPFIRE=`grep URL_IPFIRE lfs/Config | awk '{ print $3 }'` + test -d $BASEDIR/cache/toolchains || mkdir $BASEDIR/cache/toolchains + echo "`date -u '+%b %e %T'`: Load toolchain tar.gz for $BUILDMACHINE" | tee -a $LOGFILE + cd $BASEDIR/cache/toolchains + wget $URL_IPFIRE/toolchains/$PACKAGE.tar.gz $URL_IPFIRE/toolchains/$PACKAGE.md5 >& /dev/null + if [ $? -ne 0 ]; then + echo "`date -u '+%b %e %T'`: error downloading toolchain for $BUILDMACHINE machine" | tee -a $LOGFILE + else + if [ "`md5sum $PACKAGE.tar.gz | awk '{print $1}'`" = "`cat $PACKAGE.md5 | awk '{print $1}'`" ]; then + echo "`date -u '+%b %e %T'`: toolchain md5 ok" | tee -a $LOGFILE + else + exiterror "$PACKAGE.md5 did not match, check downloaded package" + fi + fi + else + echo "Toolchain is already downloaded. Exiting..." fi ;; -paks) +othersrc) prepareenv - # buildpackages - ipfirepackages - ;; -update) - echo "Load the latest source-files:" - svn update - ;; -commit) - echo "Upload the changed files:" - svn commit - ./make.sh sync - svn up > /dev/null - ;; -make) - echo "Do a complete compile:" - ./make.sh prefetch && ./make.sh gettoolchain && ./make.sh build - ;; -diff) - echo -ne "Make a local diff to last SVN revision: " - svn diff > ipfire-diff-`date +'%Y-%m-%d-%H:%M'`-r`svn info | grep Revision | cut -c 11-`.diff - echo "Finished!" - echo "Diff was successfully saved to ipfire-diff-`date +'%Y-%m-%d-%H:%M'`-r`svn info | grep Revision | cut -c 11-`.diff" - ;; -sync) - echo -e "Syncing Cache to FTP:" - if [ -f .pass ]; then - PASS="`cat .pass`" + echo -ne "`date -u '+%b %e %T'`: Build sources iso for $MACHINE" | 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 NAME="$NAME" SNAME="$SNAME" MACHINE=$MACHINE \ + /bin/bash -x -c "cd /usr/src/lfs && make -f sources-iso LFS_BASEDIR=/usr/src install" >>$LOGFILE 2>&1 + mv $LFS/install/images/ipfire-* $BASEDIR >> $LOGFILE 2>&1 + if [ $? -eq "0" ]; then + beautify message DONE else - echo -ne "Password for mirror.ipfire.org: "; read PASS + beautify message FAIL fi - rm -f doc/packages-to-remove-from-ftp - ncftpls -u web3 -p $PASS ftp://mirror.ipfire.org/html/source-packages/source/ > ftplist - for i in `ls -w1 cache/`; do - grep $i ftplist + stdumount + ;; +svn) + case "$2" in + update|up) + # clear + echo -ne "Loading the latest source files...\n" + if [ $3 ]; then + svn update -r $3 | tee -a $PWD/log/_build.svn.update.log + else + svn update | tee -a $PWD/log/_build.svn.update.log + fi + if [ $? -eq "0" ]; then + beautify message DONE + else + beautify message FAIL + exit 1 + fi + echo -ne "Writing the svn-info to a file" + svn info > $PWD/svn_status + if [ $? -eq "0" ]; then + beautify message DONE + else + beautify message FAIL + exit 1 + fi + chmod 755 $0 + exit 0 + ;; + commit|ci) + clear + if [ -e /sbin/yast ]; then + if [ "`echo $SVN_REVISION | cut -c 3`" -eq "0" ]; then + $0 changelog + fi + fi + echo "Upload the changed files..." + sleep 1 + svn commit + $0 svn up + ;; + dist) + if [ $3 ]; then + SVN_REVISION=$3 + fi + if [ -f ipfire-source-r$SVN_REVISION.tar.gz ]; then + echo -ne "REV $SVN_REVISION: SKIPPED!\n" + exit 0 + fi + echo -en "REV $SVN_REVISION: Downloading..." + svn export http://svn.ipfire.eu/svn/ipfire/trunk ipfire-source/ --force > /dev/null + svn log http://svn.ipfire.eu/svn/ipfire/trunk -r 1:$SVN_REVISION > ipfire-source/Changelog + #svn info http://svn.ipfire.eu/svn/ipfire/trunk -r $SVN_REVISION > ipfire-source/svn_status + evaluate 1 + + echo -en "REV $SVN_REVISION: Compressing files..." + if [ -e ipfire-source/trunk/make.sh ]; then + chmod 755 ipfire-source/trunk/make.sh + fi + tar cfz ipfire-source-r$SVN_REVISION.tar.gz ipfire-source + evaluate 1 + echo -en "REV $SVN_REVISION: Cleaning up..." + rm ipfire-source/ -r + evaluate 1 + ;; + diff|di) + echo -ne "Make a local diff to last svn revision" + svn diff > ipfire-diff-`date +'%Y-%m-%d-%H:%M'`-r`svn info | grep Revision | cut -c 11-`.diff + evaluate 1 + echo "Diff was successfully saved to ipfire-diff-`date +'%Y-%m-%d-%H:%M'`-r`svn info | grep Revision | cut -c 11-`.diff" + ;; + esac + ;; +uploadsrc) + PWD=`pwd` + cd $BASEDIR/cache/ + echo -e "Uploading cache to ftp server:" + ncftpls -u $IPFIRE_FTP_USER_INT -p $IPFIRE_FTP_PASS_INT ftp://$IPFIRE_FTP_URL_INT$IPFIRE_FTP_PATH_INT/ > /var/tmp/ftplist + for i in *; do + if [ "$i" == "toolchains" ]; then continue; fi + grep -q $i /var/tmp/ftplist if [ "$?" -ne "0" ]; then - ncftpput -u web3 -p $PASS mirror.ipfire.org /html/source-packages/source cache/$i + echo -ne "$i" + ncftpput -bb -u $IPFIRE_FTP_USER_INT -p $IPFIRE_FTP_PASS_INT $IPFIRE_FTP_URL_INT $IPFIRE_FTP_PATH_INT/ $i > /dev/null 2>&1 if [ "$?" -eq "0" ]; then - echo -e "$i was successfully uploaded to the ftp server." + beautify message DONE else - echo -e "There was an error while uploading $i to the ftp server." + beautify message FAIL fi fi done - for i in `cat ftplist`; do - ls -w1 cache/ | grep $i - if [ "$?" -eq "1" ]; then - echo $i | grep -v toolchain >> doc/packages-to-remove-from-ftp - fi + rm -f /var/tmp/ftplist + UL_TIME_START=`date +'%s'` + ncftpbatch -d > /dev/null 2>&1 + while ps acx | grep -q ncftpbatch + do + UL_TIME=$(expr `date +'%s'` - $UL_TIME_START) + echo -ne "\r ${UL_TIME}s : Upload is running..." + sleep 1 done - rm -f ftplist + beautify message DONE + cd $PWD + exit 0 ;; -pub-iso) - echo -e "Upload the ISO to the beta-mirror!" - if [ -f .pass ]; then - PASS="`cat .pass`" - else - echo -ne "Password for mirror.ipfire.org: "; read PASS - fi - ncftpls -u web3 -p $PASS ftp://mirror.ipfire.org/html/source-packages/beta/ | grep `svn info | grep Revision | cut -c 11-` - if [ "$?" -eq "1" ]; then - cp $BASEDIR/ipfire-install-1.4.i386.iso $BASEDIR/ipfire-install-1.4.i386-r`svn info | grep Revision | cut -c 11-`.iso - md5sum ipfire-install-1.4.i386-r`svn info | grep Revision | cut -c 11-`.iso > ipfire-install-1.4.i386-r`svn info | grep Revision | cut -c 11-`.iso.md5 - ncftpput -u web3 -p $PASS mirror.ipfire.org /html/source-packages/beta/ ipfire-install-1.4.i386-r`svn info | grep Revision | cut -c 11-`.iso - ncftpput -u web3 -p $PASS mirror.ipfire.org /html/source-packages/beta/ ipfire-install-1.4.i386-r`svn info | grep Revision | cut -c 11-`.iso.md5 - if [ "$?" -eq "0" ]; then - echo -e "The ISO of Revision `svn info | grep Revision | cut -c 11-` was successfully uploaded to the ftp server." - else - echo -e "There was an error while uploading the ISO to the ftp server." - fi - else - echo -e "File with name ipfire-install-1.4.i386-r`svn info | grep Revision | cut -c 11-`.iso already exists on the ftp server!" - fi - rm -f ipfire-install-1.4.i386-r`svn info | grep Revision | cut -c 11-`.iso{,.md5} +upload) + case "$2" in + iso) + echo -e "Uploading the iso to $IPFIRE_FTP_URL_EXT." + cat < .ftp-commands +mkdir $IPFIRE_FTP_PATH_EXT +ls -lah +quit +EOF + ncftp -u $IPFIRE_FTP_USER_EXT -p $IPFIRE_FTP_PASS_EXT $IPFIRE_FTP_URL_EXT < .ftp-commands + rm -f .ftp-commands + md5sum ipfire-install-$VERSION.i386.iso > ipfire-install-$VERSION.i386.iso.md5 + ncftpput -u $IPFIRE_FTP_USER_EXT -p $IPFIRE_FTP_PASS_EXT $IPFIRE_FTP_URL_EXT $IPFIRE_FTP_PATH_EXT/ ipfire-install-$VERSION.i386.iso + ncftpput -u $IPFIRE_FTP_USER_EXT -p $IPFIRE_FTP_PASS_EXT $IPFIRE_FTP_URL_EXT $IPFIRE_FTP_PATH_EXT/ ipfire-install-$VERSION.i386.iso.md5 + ncftpput -u $IPFIRE_FTP_USER_EXT -p $IPFIRE_FTP_PASS_EXT $IPFIRE_FTP_URL_EXT $IPFIRE_FTP_PATH_EXT/ ipfire-source-r$SVN_REVISION.tar.gz + ncftpput -u $IPFIRE_FTP_USER_EXT -p $IPFIRE_FTP_PASS_EXT $IPFIRE_FTP_URL_EXT $IPFIRE_FTP_PATH_EXT/ svn_status + if [ "$?" -eq "0" ]; then + echo -e "The iso of Revision $SVN_REVISION was successfully uploaded to $IPFIRE_FTP_URL_EXT$IPFIRE_FTP_PATH_EXT/." + else + echo -e "There was an error while uploading the iso to the ftp server." + exit 1 + fi + if [ "$3" = "--with-sources-cd" ]; then + ncftpput -u $IPFIRE_FTP_USER_EXT -p $IPFIRE_FTP_PASS_EXT $IPFIRE_FTP_URL_EXT $IPFIRE_FTP_PATH_EXT/ ipfire-sources-cd-$VERSION.$MACHINE.iso + fi + ;; + paks) + cat < .ftp-commands +mkdir $IPFIRE_FTP_PATH_PAK +ls -lah +quit +EOF + ncftp -u $IPFIRE_FTP_USER_PAK -p $IPFIRE_FTP_PASS_PAK $IPFIRE_FTP_URL_PAK < .ftp-commands + rm -f .ftp-commands + ncftpput -z -u $IPFIRE_FTP_USER_PAK -p $IPFIRE_FTP_PASS_PAK $IPFIRE_FTP_URL_PAK $IPFIRE_FTP_PATH_PAK/ packages/* + if [ "$?" -eq "0" ]; then + echo -e "The packages were successfully uploaded to $IPFIRE_FTP_URL_PAK$IPFIRE_FTP_PATH_PAK/." + else + echo -e "There was an error while uploading the packages to the ftp server." + exit 1 + fi + ;; + esac ;; -pub-paks) - echo -e "Upload the packages to the beta-mirror!" - if [ -f .pass ]; then - PASS="`cat .pass`" - else - echo -ne "Password for mirror.ipfire.org: "; read PASS +batch) + if [ "$2" -eq "--background" ]; then + batch_script + exit $? fi - ncftpput -z -u web3 -p $PASS mirror.ipfire.org /html/source-packages/packages/ packages/* - if [ "$?" -eq "0" ]; then - echo -e "The packages were successfully uploaded to the ftp server." + if [ `screen -ls | grep -q ipfire` ]; then + echo "Build is already running, sorry!" + exit 1 else - echo -e "There was an error while uploading the packages to the ftp server." + if [ "$2" = "--rebuild" ]; then + export IPFIRE_REBUILD=1 + echo "REBUILD!" + else + export IPFIRE_REBUILD=0 + fi + echo -en "${BOLD}***IPFire-Batch-Build is starting...${NORMAL}" + screen -dmS ipfire $0 batch --background + evaluate 1 + exit 0 fi ;; +watch) + watch_screen + ;; *) - echo "Usage: $0 {build|changelog|check|checkclean|clean|commit|diff|dist|gettoolchain|make|newpak|prefetch|pub-iso|pub-paks|shell|sync|toolchain|update}" - cat doc/make.sh-usage - exit 1 + clear + svn info + select name in "Exit" "IPFIRE: Prefetch" "IPFIRE: Build (silent)" "IPFIRE: Watch Build" "IPFIRE: Batch" "IPFIRE: Clean" "SVN: Commit" "SVN: Update" "SVN: Status" "SVN: Diff" "LOG: Tail" "Help" + do + case $name in + "IPFIRE: Prefetch") + $0 prefetch + ;; + "IPFIRE: Build (silent)") + $0 build-silent + ;; + "IPFIRE: Watch Build") + $0 watch + ;; + "IPFIRE: Batch") + $0 batch + ;; + "IPFIRE: Clean") + $0 clean + ;; + "SVN: Commit") + if [ -f /usr/bin/mcedit ]; then + export EDITOR=/usr/bin/mcedit + fi + if [ -f /usr/bin/nano ]; then + export EDITOR=/usr/bin/nano + fi + $0 svn commit + $0 uploadsrc + ;; + "SVN: Update") + $0 svn update + ;; + "SVN: Status") + svn status # | grep -v ^? + ;; + "SVN: Diff") + $0 svn diff + ;; + "Help") + echo "Usage: $0 {build|changelog|clean|gettoolchain|newpak|prefetch|shell|sync|toolchain}" + cat doc/make.sh-usage + ;; + "LOG: Tail") + tail -f log/_* + ;; + "Exit") + break + ;; + esac + done ;; esac