]> git.ipfire.org Git - people/pmueller/ipfire-2.x.git/blobdiff - make.sh
Changelog-Fix
[people/pmueller/ipfire-2.x.git] / make.sh
diff --git a/make.sh b/make.sh
index 9764ffd83c3e47cf09563e059fbbc7604ae1669b..3664cbefc76359ee5d432e9c776c34d19801ce49 100644 (file)
--- a/make.sh
+++ b/make.sh
-#!/bin/bash\r
-#\r
-############################################################################\r
-#                                                                          #\r
-# This file is part of the IPCop Firewall.                                 #\r
-#                                                                          #\r
-# IPCop is free software; you can redistribute it and/or modify            #\r
-# it under the terms of the GNU General Public License as published by     #\r
-# the Free Software Foundation; either version 2 of the License, or        #\r
-# (at your option) any later version.                                      #\r
-#                                                                          #\r
-# IPCop is distributed in the hope that it will be useful,                 #\r
-# but WITHOUT ANY WARRANTY; without even the implied warranty of           #\r
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the            #\r
-# GNU General Public License for more details.                             #\r
-#                                                                          #\r
-# You should have received a copy of the GNU General Public License        #\r
-# along with IPCop; if not, write to the Free Software                     #\r
-# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA #\r
-#                                                                          #\r
-# Copyright (C) 2001 Mark Wormgoor <mark@wormgoor.com>.                    #\r
-#                                                                          #\r
-# (c) 2001 Eric S. Johansson <esj@harvee.billerica.ma.us> Check for Bash   #\r
-# (c) 2002 Thorsten Fischer <frosch@cs.tu-berlin.de> MD5Sum checking       #\r
-#                                                                          #\r
-############################################################################\r
-#\r
-# $Id: make.sh,v 1.129.2.145 2006/02/01 07:04:09 gespinasse Exp $\r
-#\r
-\r
-  NAME="IPFire"                                        # Software name\r
-  SNAME="ipfire"                                       # Short name\r
-  VERSION="1.4.11"                             # Version number\r
-  PREVIOUSTAG=IPCOP_v1_4_10_FINAL\r
-  SLOGAN="We save your network"                # Software slogan\r
-  CONFIG_ROOT=/var/ipfire                      # Configuration rootdir\r
-  NICE=10\r
-  MAX_RETRIES=3                                        # prefetch/check loop\r
-  KVER=`grep --max-count=1 VER lfs/linux | awk '{ print $3 }'`\r
-  MACHINE=`uname -m`\r
-\r
-  # Debian specific settings\r
-  if [ ! -e /etc/debian_version ]; then\r
-       FULLPATH=`which $0`\r
-  else\r
-       if [ -x /usr/bin/realpath ]; then\r
-               FULLPATH=`/usr/bin/realpath $0`\r
-       else\r
-               echo "ERROR: Need to do apt-get install realpath"\r
-               exit 1\r
-       fi\r
-  fi\r
-\r
-\r
-  PWD=`pwd`\r
-  BASENAME=`basename $0`\r
-  BASEDIR=`echo $FULLPATH | sed "s/\/$BASENAME//g"`\r
-  LOGFILE=$BASEDIR/log/_build.preparation.log\r
-  export BASEDIR LOGFILE\r
-  DIR_CHK=$BASEDIR/cache/check\r
-  mkdir $BASEDIR/log/ 2>/dev/null\r
-\r
-  if [ 'x86_64' = $MACHINE -o 'i686' = $MACHINE -o 'i586' = $MACHINE -o 'i486' = $MACHINE -o 'i386' = $MACHINE ]; then\r
-       echo "`date -u '+%b %e %T'`: Machine is ix86 (or equivalent)" | tee -a $LOGFILE\r
-       MACHINE=i386\r
-       BUILDTARGET=i386-pc-linux-gnu\r
-       CFLAGS="-O2 -mcpu=i386 -march=i386 -pipe -fomit-frame-pointer"\r
-       CXXFLAGS="-O2 -mcpu=i386 -march=i386 -pipe -fomit-frame-pointer"\r
-  elif [ 'alpha' = $MACHINE ]; then\r
-       echo "`date -u '+%b %e %T'`: Machine is Alpha AXP" | tee -a $LOGFILE\r
-       BUILDTARGET=alpha-unknown-linux-gnu\r
-       CFLAGS="-O2 -mcpu=ev4 -mieee -pipe"\r
-       CXXFLAGS="-O2 -mcpu=ev4 -mieee -pipe"\r
-  else\r
-       echo "`date -u '+%b %e %T'`: Can't determine your architecture - $MACHINE" | tee -a $LOGFILE\r
-       exit 1\r
-  fi\r
-\r
-# Define immediately\r
-stdumount() {\r
-       umount $BASEDIR/build/dev/pts           2>/dev/null;\r
-       umount $BASEDIR/build/proc              2>/dev/null;\r
-       umount $BASEDIR/build/install/mnt       2>/dev/null;\r
-       umount $BASEDIR/build/usr/src/cache     2>/dev/null;\r
-       umount $BASEDIR/build/usr/src/ccache    2>/dev/null;\r
-       umount $BASEDIR/build/usr/src/config    2>/dev/null;\r
-       umount $BASEDIR/build/usr/src/doc       2>/dev/null;\r
-       umount $BASEDIR/build/usr/src/html      2>/dev/null;\r
-       umount $BASEDIR/build/usr/src/langs     2>/dev/null;\r
-       umount $BASEDIR/build/usr/src/lfs       2>/dev/null;\r
-       umount $BASEDIR/build/usr/src/log       2>/dev/null;\r
-       umount $BASEDIR/build/usr/src/src       2>/dev/null;\r
-}\r
-\r
-exiterror() {\r
-       stdumount\r
-       for i in `seq 0 7`; do\r
-           if ( losetup /dev/loop${i} 2>/dev/null | grep -q "/install/images" ); then\r
-               losetup -d /dev/loop${i} 2>/dev/null\r
-           fi;\r
-       done\r
-       echo "ERROR: $*"\r
-       echo "       Check $LOGFILE for errors if applicable"\r
-       exit 1\r
-}\r
-\r
-entershell() {\r
-       if [ ! -e $BASEDIR/build/usr/src/lfs/ ]; then\r
-               exiterror "No such file or directory: $BASEDIR/build/usr/src/lfs/"\r
-       fi\r
-       echo "Entering to a shell inside LFS chroot, go out with exit"\r
-       chroot $LFS /tools/bin/env -i HOME=/root TERM=$TERM PS1='\u:\w\$ ' \\r
-               PATH=/usr/local/bin:/bin:/usr/bin:/sbin:/usr/sbin:/tools/bin \\r
-               VERSION=$VERSION CONFIG_ROOT=$CONFIG_ROOT \\r
-               NAME="$NAME" SNAME="$SNAME" SLOGAN="$SLOGAN" \\r
-               CFLAGS="$CFLAGS" CXXFLAGS="$CXXFLAGS" \\r
-               CCACHE_DIR=/usr/src/ccache \\r
-               CCACHE_HASHDIR=1 \\r
-               KVER=$KVER \\r
-               BUILDTARGET="$BUILDTARGET" MACHINE="$MACHINE" \\r
-               KGCC="ccache /usr/bin/gcc" \\r
-               /tools/bin/bash\r
-       if [ $? -ne 0 ]; then\r
-                       exiterror "chroot error"\r
-       else\r
-               stdumount\r
-       fi\r
-}\r
-\r
-prepareenv() {\r
-    ############################################################################\r
-    #                                                                          #\r
-    # Are we running the right shell?                                          #\r
-    #                                                                          #\r
-    ############################################################################\r
-    if [ ! "$BASH" ]; then\r
-       exiterror "BASH environment variable is not set.  You're probably running the wrong shell."\r
-    fi\r
-\r
-    if [ -z "${BASH_VERSION}" ]; then\r
-       exiterror "Not running BASH shell."\r
-    fi\r
-\r
-\r
-    ############################################################################\r
-    #                                                                          #\r
-    # Trap on emergency exit                                                   #\r
-    #                                                                          #\r
-    ############################################################################\r
-    trap "exiterror 'Build process interrupted'" SIGINT SIGTERM SIGKILL SIGSTOP SIGQUIT\r
-\r
-\r
-    ############################################################################\r
-    #                                                                          #\r
-    # Resetting our nice level                                                 #\r
-    #                                                                          #\r
-    ############################################################################\r
-    echo "`date -u '+%b %e %T'`: Resetting our nice level to $NICE" | tee -a $LOGFILE\r
-    renice $NICE $$ > /dev/null\r
-    if [ `nice` != "$NICE" ]; then\r
-       exiterror "Failed to set correct nice level"\r
-    fi\r
-\r
-    ############################################################################\r
-    #                                                                          #\r
-    # Checking if running as root user                                         #\r
-    #                                                                          #\r
-    ############################################################################\r
-    echo "`date -u '+%b %e %T'`: Checking if we're running as root user" | tee -a $LOGFILE\r
-    if [ `id -u` != 0 ]; then\r
-       exiterror "Not building as root"\r
-    fi\r
-\r
-\r
-    ############################################################################\r
-    #                                                                          #\r
-    # Checking for necessary temporary space                                   #\r
-    #                                                                          #\r
-    ############################################################################\r
-    echo "`date -u '+%b %e %T'`: Checking for necessary space on disk $BASE_DEV" | tee -a $LOGFILE\r
-    BASE_DEV=`df -P -k $BASEDIR | tail -n 1 | awk '{ print $1 }'`\r
-    BASE_ASPACE=`df -P -k $BASEDIR | tail -n 1 | awk '{ print $4 }'`\r
-    if (( 2202000 > $BASE_ASPACE )); then\r
-       BASE_USPACE=`du -skx $BASEDIR | awk '{print $1}'`\r
-       if (( 2202000 - $BASE_USPACE > $BASE_ASPACE )); then\r
-               exiterror "Not enough temporary space available, need at least 2.1GB on $BASE_DEV"\r
-       fi\r
-    fi\r
-\r
-    ############################################################################\r
-    #                                                                          #\r
-    # Building Linux From Scratch system                                       #\r
-    #                                                                          #\r
-    ############################################################################\r
-    echo "`date -u '+%b %e %T'`: Building Linux From Scratch system" | tee -a $LOGFILE\r
-\r
-    # Set umask\r
-    umask 022\r
-\r
-    # Set LFS Directory\r
-    LFS=$BASEDIR/build\r
-\r
-    # Check /tools symlink\r
-    if [ -h /tools ]; then\r
-        rm -f /tools\r
-    fi\r
-    if [ ! -a /tools ]; then\r
-       ln -s $BASEDIR/build/tools /\r
-    fi\r
-    if [ ! -h /tools ]; then\r
-       exiterror "Could not create /tools symbolic link."\r
-    fi\r
-\r
-    # Setup environment\r
-    set +h\r
-    LC_ALL=POSIX\r
-    export LFS LC_ALL CFLAGS CXXFLAGS\r
-    unset CC CXX CPP LD_LIBRARY_PATH LD_PRELOAD\r
-\r
-    # Make some extra directories\r
-    mkdir -p $BASEDIR/build/{tools,etc,usr/src} 2>/dev/null\r
-    mkdir -p $BASEDIR/{cache,ccache} 2>/dev/null\r
-    mkdir -p $BASEDIR/build/dev/pts $BASEDIR/build/proc $BASEDIR/build/usr/src/{cache,config,doc,html,langs,lfs,log,src,ccache}\r
-\r
-    # Make all sources and proc available under lfs build\r
-    mount --bind /dev/pts        $BASEDIR/build/dev/pts\r
-    mount --bind /proc           $BASEDIR/build/proc\r
-    mount --bind $BASEDIR/cache  $BASEDIR/build/usr/src/cache\r
-    mount --bind $BASEDIR/ccache $BASEDIR/build/usr/src/ccache\r
-    mount --bind $BASEDIR/config $BASEDIR/build/usr/src/config\r
-    mount --bind $BASEDIR/doc    $BASEDIR/build/usr/src/doc\r
-    mount --bind $BASEDIR/html   $BASEDIR/build/usr/src/html\r
-    mount --bind $BASEDIR/langs  $BASEDIR/build/usr/src/langs\r
-    mount --bind $BASEDIR/lfs    $BASEDIR/build/usr/src/lfs\r
-    mount --bind $BASEDIR/log    $BASEDIR/build/usr/src/log\r
-    mount --bind $BASEDIR/src    $BASEDIR/build/usr/src/src\r
-\r
-    # Run LFS static binary creation scripts one by one\r
-    export CCACHE_DIR=$BASEDIR/ccache\r
-    export CCACHE_HASHDIR=1\r
-\r
-    # Remove pre-install list of installed files in case user erase some files before rebuild\r
-    rm -f $BASEDIR/build/usr/src/lsalr 2>/dev/null\r
-}\r
-\r
-\r
-############################################################################\r
-#                                                                          #\r
-# Necessary shell functions                                                #\r
-#                                                                          #\r
-############################################################################\r
-lfsmake1() {\r
-       if [ -f $BASEDIR/lfs/$1 ]; then\r
-               echo "`date -u '+%b %e %T'`: Building $*" | tee -a $LOGFILE\r
-               cd $BASEDIR/lfs && make -s -f $* LFS_BASEDIR=$BASEDIR MESSAGE="$1\t " download  >> $LOGFILE 2>&1\r
-               if [ $? -ne 0 ]; then\r
-                       exiterror "Download error in $1"\r
-               fi\r
-               cd $BASEDIR/lfs && make -s -f $* LFS_BASEDIR=$BASEDIR MESSAGE="$1\t md5sum" md5  >> $LOGFILE 2>&1\r
-               if [ $? -ne 0 ]; then\r
-                       exiterror "md5sum error in $1, check file in cache or signature"\r
-               fi\r
-               cd $BASEDIR/lfs && make -f $*   BUILDTARGET=$BUILDTARGET \\r
-                                               MACHINE=$MACHINE \\r
-                                               LFS_BASEDIR=$BASEDIR \\r
-                                               ROOT=$LFS \\r
-                                               KVER=$KVER \\r
-                                               install >> $LOGFILE 2>&1\r
-               if [ $? -ne 0 ]; then\r
-                       exiterror "Building $*";\r
-               fi\r
-       else\r
-               exiterror "No such file or directory: $BASEDIR/$1"\r
-       fi\r
-       return 0\r
-}\r
-\r
-lfsmake2() {\r
-       if [ -f $BASEDIR/build/usr/src/lfs/$1 ]; then\r
-               echo "`date -u '+%b %e %T'`: Building $*" | tee -a $LOGFILE\r
-               cd $BASEDIR/lfs && make -s -f $* LFS_BASEDIR=$BASEDIR MESSAGE="$1\t " download  >> $LOGFILE 2>&1\r
-               if [ $? -ne 0 ]; then\r
-                       exiterror "Download error in $1"\r
-               fi\r
-               cd $BASEDIR/lfs && make -s -f $* LFS_BASEDIR=$BASEDIR MESSAGE="$1\t md5sum" md5  >> $LOGFILE 2>&1\r
-               if [ $? -ne 0 ]; then\r
-                       exiterror "md5sum error in $1, check file in cache or signature"\r
-               fi\r
-               chroot $LFS /tools/bin/env -i   HOME=/root \\r
-                                               TERM=$TERM PS1='\u:\w\$ ' \\r
-                                               PATH=/usr/local/bin:/bin:/usr/bin:/sbin:/usr/sbin:/tools/bin \\r
-                                               VERSION=$VERSION \\r
-                                               CONFIG_ROOT=$CONFIG_ROOT \\r
-                                               NAME="$NAME" SNAME="$SNAME" SLOGAN="$SLOGAN" \\r
-                                               CFLAGS="$CFLAGS" CXXFLAGS="$CXXFLAGS" \\r
-                                               CCACHE_DIR=/usr/src/ccache CCACHE_HASHDIR=1 \\r
-                                               KVER=$KVER \\r
-                                               BUILDTARGET="$BUILDTARGET" MACHINE="$MACHINE" \\r
-                   /tools/bin/bash -x -c "cd /usr/src/lfs && \\r
-                   make -f $* LFS_BASEDIR=/usr/src install" >>$LOGFILE 2>&1\r
-               if [ $? -ne 0 ]; then\r
-                       exiterror "Building $*"\r
-               fi\r
-       else\r
-               exiterror "No such file or directory: $BASEDIR/build/usr/src/lfs/$1"\r
-       fi\r
-       return 0\r
-}\r
-\r
-ipcopmake() {\r
-       if [ -f $BASEDIR/build/usr/src/lfs/$1 ]; then\r
-               echo "`date -u '+%b %e %T'`: Building $*" | tee -a $LOGFILE\r
-               cd $BASEDIR/lfs && make -s -f $* LFS_BASEDIR=$BASEDIR MESSAGE="$1\t " download  >> $LOGFILE 2>&1\r
-               if [ $? -ne 0 ]; then\r
-                       exiterror "Download error in $1"\r
-               fi\r
-               cd $BASEDIR/lfs && make -s -f $* LFS_BASEDIR=$BASEDIR MESSAGE="$1\t md5sum" md5  >> $LOGFILE 2>&1\r
-               if [ $? -ne 0 ]; then\r
-                       exiterror "md5sum error in $1, check file in cache or signature"\r
-               fi\r
-               chroot $LFS /tools/bin/env -i   HOME=/root \\r
-                                               TERM=$TERM PS1='\u:\w\$ ' \\r
-                                               PATH=/usr/local/bin:/bin:/usr/bin:/sbin:/usr/sbin \\r
-                                               VERSION=$VERSION \\r
-                                               CONFIG_ROOT=$CONFIG_ROOT \\r
-                                               NAME="$NAME" SNAME="$SNAME" SLOGAN="$SLOGAN" \\r
-                                               CFLAGS="$CFLAGS" CXXFLAGS="$CXXFLAGS" \\r
-                                               CCACHE_DIR=/usr/src/ccache CCACHE_HASHDIR=1 \\r
-                                               KVER=$KVER \\r
-                                               BUILDTARGET="$BUILDTARGET" MACHINE="$MACHINE" \\r
-                   /bin/bash -x -c "cd /usr/src/lfs && \\r
-                   make -f $* LFS_BASEDIR=/usr/src install" >>$LOGFILE 2>&1\r
-               if [ $? -ne 0 ]; then\r
-                       exiterror "Building $*"\r
-               fi\r
-       else\r
-               exiterror "No such file or directory: $BASEDIR/build/usr/src/lfs/$1"\r
-       fi\r
-       return 0\r
-}\r
-\r
-\r
-installmake() {\r
-       if [ -f $BASEDIR/build/usr/src/lfs/$1 ]; then\r
-               echo "`date -u '+%b %e %T'`: Building $*" | tee -a $LOGFILE\r
-               cd $BASEDIR/lfs && make -s -f $* LFS_BASEDIR=$BASEDIR MESSAGE="$1\t " download  >> $LOGFILE 2>&1\r
-               if [ $? -ne 0 ]; then\r
-                       exiterror "Download error in $1"\r
-               fi\r
-               cd $BASEDIR/lfs && make -s -f $* LFS_BASEDIR=$BASEDIR MESSAGE="$1\t md5sum" md5  >> $LOGFILE 2>&1\r
-               if [ $? -ne 0 ]; then\r
-                       exiterror "md5sum error in $1, check file in cache or signature"\r
-               fi\r
-               chroot $LFS /tools/bin/env -i   HOME=/root \\r
-                                               TERM=$TERM PS1='\u:\w\$ ' \\r
-                                               PATH=/usr/local/bin:/opt/$MACHINE-uClibc/usr/bin:/bin:/usr/bin:/sbin:/usr/sbin \\r
-                                               VERSION=$VERSION \\r
-                                               CONFIG_ROOT=$CONFIG_ROOT \\r
-                                               LFS_PASS="install" \\r
-                                               NAME="$NAME" SNAME="$SNAME" SLOGAN="$SLOGAN" \\r
-                                               CFLAGS="-Os" CXXFLAGS="-Os" \\r
-                                               CCACHE_DIR=/usr/src/ccache CCACHE_HASHDIR=1 \\r
-                                               KVER=$KVER \\r
-                                               BUILDTARGET="$BUILDTARGET" MACHINE="$MACHINE" \\r
-                   /bin/bash -x -c "cd /usr/src/lfs && \\r
-                   make -f $* LFS_BASEDIR=/usr/src install" >>$LOGFILE 2>&1\r
-               if [ $? -ne 0 ]; then\r
-                       exiterror "Building $*"\r
-               fi\r
-       else\r
-               exiterror "No such file or directory: $BASEDIR/build/usr/src/lfs/$1"\r
-       fi\r
-       return 0\r
-}\r
-\r
-buildtoolchain() {\r
-    LOGFILE="$BASEDIR/log/_build.toolchain.log"\r
-    export LOGFILE\r
-    echo -ne "`date -u '+%b %e %T'`: Stage1 toolchain build \n" | tee -a $LOGFILE\r
-    # Build sed now, as we use some extensions\r
-    ORG_PATH=$PATH\r
-    NATIVEGCC=`gcc --version | grep GCC | awk {'print $3'}`\r
-    export NATIVEGCC GCCmajor=${NATIVEGCC:0:1} GCCminor=${NATIVEGCC:2:1} GCCrelease=${NATIVEGCC:4:1}\r
-    lfsmake1 ccache\r
-    lfsmake1 sed       LFS_PASS=1\r
-    lfsmake1 m4                LFS_PASS=1\r
-    lfsmake1 bison     LFS_PASS=1\r
-    lfsmake1 flex      LFS_PASS=1\r
-    lfsmake1 binutils   LFS_PASS=1\r
-    lfsmake1 gcc        LFS_PASS=1\r
-    export PATH=$BASEDIR/build/usr/local/bin:$BASEDIR/build/tools/bin:$PATH\r
-    \r
-    lfsmake1 linux\r
-    lfsmake1 tcl\r
-    lfsmake1 expect\r
-    lfsmake1 glibc\r
-    lfsmake1 dejagnu\r
-    lfsmake1 gcc        LFS_PASS=2\r
-    lfsmake1 binutils   LFS_PASS=2\r
-    lfsmake1 gawk\r
-    lfsmake1 coreutils\r
-    lfsmake1 bzip2\r
-    lfsmake1 gzip\r
-    lfsmake1 diffutils\r
-    lfsmake1 findutils\r
-    lfsmake1 make\r
-    lfsmake1 grep\r
-    lfsmake1 sed       LFS_PASS=2\r
-    lfsmake1 m4                LFS_PASS=2\r
-    lfsmake1 bison     LFS_PASS=2\r
-    lfsmake1 flex      LFS_PASS=2\r
-    lfsmake1 gettext\r
-    lfsmake1 ncurses\r
-    lfsmake1 patch\r
-    lfsmake1 tar\r
-    lfsmake1 texinfo\r
-    lfsmake1 bash\r
-    lfsmake1 util-linux\r
-    lfsmake1 perl\r
-    export PATH=$ORG_PATH\r
-}\r
-\r
-buildbase() {\r
-    LOGFILE="$BASEDIR/log/_build.base.log"\r
-    export LOGFILE\r
-    echo -ne "`date -u '+%b %e %T'`: Stage2 linux base build \n" | tee -a $LOGFILE\r
-    # Run LFS dynamic binary creation scripts one by one\r
-    lfsmake2 stage2\r
-    lfsmake2 makedev\r
-    lfsmake2 linux\r
-    lfsmake2 man-pages\r
-    lfsmake2 glibc\r
-    lfsmake2 binutils\r
-    lfsmake2 gcc\r
-    lfsmake2 coreutils\r
-    lfsmake2 zlib\r
-    lfsmake2 mktemp\r
-    lfsmake2 iana-etc\r
-    lfsmake2 findutils\r
-    lfsmake2 gawk\r
-    lfsmake2 ncurses\r
-    lfsmake2 vim\r
-    lfsmake2 m4\r
-    lfsmake2 bison\r
-    lfsmake2 less\r
-    lfsmake2 groff\r
-    lfsmake2 sed\r
-    lfsmake2 flex\r
-    lfsmake2 gettext\r
-    lfsmake2 net-tools\r
-    lfsmake2 inetutils\r
-    lfsmake2 perl\r
-    lfsmake2 texinfo\r
-    lfsmake2 autoconf\r
-    lfsmake2 automake\r
-    lfsmake2 bash\r
-    lfsmake2 file\r
-    lfsmake2 libtool\r
-    lfsmake2 bzip2\r
-    lfsmake2 diffutils\r
-    lfsmake2 ed\r
-    lfsmake2 kbd\r
-    lfsmake2 e2fsprogs\r
-    lfsmake2 grep\r
-    if [ 'i386' = $MACHINE ]; then \r
-       lfsmake2 grub\r
-    elif [ 'alpha' = $MACHINE ]; then \r
-       lfsmake2 aboot\r
-    fi\r
-    lfsmake2 gzip\r
-    lfsmake2 man\r
-    lfsmake2 make\r
-    lfsmake2 modutils\r
-    lfsmake2 patch\r
-    lfsmake2 procinfo\r
-    lfsmake2 procps\r
-    lfsmake2 psmisc\r
-    lfsmake2 shadow\r
-    lfsmake2 sysklogd\r
-    lfsmake2 sysvinit\r
-    lfsmake2 tar\r
-    lfsmake2 util-linux\r
-}\r
-\r
-buildipcop() {\r
-  # Run IPCop make scripts one by one\r
-  LOGFILE="$BASEDIR/log/_build.ipcop.log"\r
-  export LOGFILE\r
-  echo -ne "`date -u '+%b %e %T'`: Stage3 $NAME build \n" | tee -a $LOGFILE\r
-\r
-  # Build these first as some of the kernel packages below rely on \r
-  # these for some of their client program functionality \r
-  ipcopmake configroot\r
-  ipcopmake dhcp\r
-  ipcopmake dhcpcd\r
-  ipcopmake libusb\r
-  ipcopmake libpcap\r
-  ipcopmake linux-atm\r
-  ipcopmake ppp\r
-  ipcopmake rp-pppoe\r
-  ipcopmake unzip\r
-  # Do SMP now\r
-  if [ 'i386' = $MACHINE ]; then \r
-       # abuse the SMP flag, and make an minimal installer kernel first\r
-       # so that the boot floppy always works.....\r
-       ipcopmake linux         LFS_PASS=ipcop SMP=installer\r
-       ipcopmake linux         LFS_PASS=ipcop SMP=1\r
-       ipcopmake 3cp4218       SMP=1\r
-       ipcopmake amedyn        SMP=1\r
-       ipcopmake cxacru        SMP=1\r
-       ipcopmake eagle         SMP=1\r
-\r
-       # These are here because they have i386 only binary libraries\r
-       # included in the package.\r
-       ipcopmake cnx_pci       SMP=1\r
-       ipcopmake fcdsl         SMP=1\r
-       ipcopmake fcdsl2        SMP=1\r
-       ipcopmake fcdslsl       SMP=1\r
-       ipcopmake fcdslusb      SMP=1\r
-       ipcopmake fcdslslusb    SMP=1\r
-       ipcopmake pulsar        SMP=1\r
-       ipcopmake unicorn       SMP=1\r
-  fi\r
-\r
-  ipcopmake linux      LFS_PASS=ipcop\r
-  ipcopmake 3cp4218    \r
-  ipcopmake amedyn     \r
-  ipcopmake cxacru     \r
-  ipcopmake eciadsl    \r
-  ipcopmake eagle      \r
-  ipcopmake speedtouch         \r
-  if [ 'i386' = $MACHINE ]; then \r
-       # These are here because they have i386 only binary libraries\r
-       # included in the package.\r
-       ipcopmake cnx_pci       \r
-       ipcopmake fcdsl         \r
-       ipcopmake fcdsl2        \r
-       ipcopmake fcdslsl       \r
-       ipcopmake fcdslusb      \r
-       ipcopmake fcdslslusb    \r
-       ipcopmake pulsar        \r
-       ipcopmake unicorn       \r
-  fi\r
-\r
-  ipcopmake pcmcia-cs\r
-  ipcopmake expat\r
-  ipcopmake gdbm\r
-  ipcopmake gmp\r
-  ipcopmake openssl\r
-  ipcopmake python\r
-  ipcopmake libnet\r
-  ipcopmake libpng\r
-  ipcopmake gd\r
-  ipcopmake popt\r
-  ipcopmake slang\r
-  ipcopmake newt\r
-  ipcopmake libcap\r
-  ipcopmake pciutils\r
-  ipcopmake pcre\r
-  ipcopmake apache\r
-  ipcopmake arping\r
-  ipcopmake beep\r
-  ipcopmake bind\r
-  ipcopmake capi4k-utils\r
-  ipcopmake cdrtools\r
-  ipcopmake dnsmasq\r
-  ipcopmake dosfstools\r
-  ipcopmake ethtool\r
-  ipcopmake ez-ipupdate\r
-  ipcopmake fcron\r
-  ipcopmake GD\r
-  ipcopmake gnupg\r
-  ipcopmake hdparm\r
-  ipcopmake ibod\r
-  ipcopmake initscripts\r
-  ipcopmake iptables\r
-  ipcopmake ipac-ng\r
-  ipcopmake ipaddr\r
-  ipcopmake iproute2\r
-  ipcopmake iptstate\r
-  ipcopmake iputils\r
-  ipcopmake isapnptools\r
-  ipcopmake isdn4k-utils\r
-  ipcopmake kudzu\r
-  ipcopmake logrotate\r
-  ipcopmake logwatch\r
-  ipcopmake mingetty\r
-  ipcopmake misc-progs\r
-  ipcopmake mtools\r
-  ipcopmake nano\r
-  ipcopmake nash\r
-  ipcopmake nasm\r
-  ipcopmake URI\r
-  ipcopmake HTML-Tagset\r
-  ipcopmake HTML-Parser\r
-  ipcopmake Compress-Zlib\r
-  ipcopmake Digest\r
-  ipcopmake Digest-SHA1\r
-  ipcopmake Digest-HMAC\r
-  ipcopmake libwww-perl\r
-  ipcopmake Net-DNS\r
-  ipcopmake Net-IPv4Addr\r
-  ipcopmake Net_SSLeay\r
-  ipcopmake noip_updater\r
-  ipcopmake ntp\r
-  ipcopmake oinkmaster\r
-  ipcopmake openssh\r
-  ipcopmake openswan\r
-  ipcopmake pptpclient\r
-  ipcopmake rrdtool\r
-  ipcopmake setserial\r
-  ipcopmake setup\r
-  ipcopmake snort\r
-  #ipcopmake speedycgi\r
-  ipcopmake squid\r
-  ipcopmake squid-graph\r
-  ipcopmake tcpdump\r
-  ipcopmake traceroute\r
-  ipcopmake vlan\r
-  ipcopmake wireless\r
-  ipcopmake libsafe\r
-  ipcopmake 3c5x9setup\r
-  ipcopmake stund\r
-  ipcopmake lpd\r
-  ipcopmake xampp\r
-  ipcopmake pam\r
-}\r
-\r
-buildinstaller() {\r
-  # Run installer scripts one by one\r
-  LOGFILE="$BASEDIR/log/_build.installer.log"\r
-  export LOGFILE\r
-  echo -ne "`date -u '+%b %e %T'`: Stage4 installer build \n" | tee -a $LOGFILE\r
-  if [ 'i386' = $MACHINE ]; then \r
-       ipcopmake syslinux\r
-       ipcopmake as86\r
-       ipcopmake mbr\r
-       ipcopmake uClibc\r
-  fi\r
-  installmake busybox\r
-  installmake sysvinit\r
-  installmake e2fsprogs\r
-  installmake misc-progs\r
-  installmake slang\r
-  installmake util-linux\r
-  installmake newt\r
-  installmake pciutils\r
-  installmake pcmcia-cs\r
-  installmake kbd\r
-  installmake installer\r
-  installmake scsi.img\r
-  installmake driver.img\r
-  installmake initrd\r
-  installmake boot.img\r
-}\r
-\r
-buildpackages() {\r
-  LOGFILE="$BASEDIR/log/_build.packages.log"\r
-  export LOGFILE\r
-  echo "... see detailed log in _build.*.log files" >> $LOGFILE\r
-  echo -ne "`date -u '+%b %e %T'`: Stage5 packages build \n" | tee -a $LOGFILE\r
-  # Strip files\r
-  echo "`date -u '+%b %e %T'`: Stripping files" | tee -a $LOGFILE\r
-  find $LFS/lib $LFS/usr/lib $LFS/usr/share/rrdtool-* $LFS/install ! -type l \( -name '*.so' -o -name '*.so[\.0-9]*' \) \\r
-       ! -name 'libc.so' ! -name 'libpthread.so' ! -name 'libcrypto.so.0.9.7.sha1' \\r
-       -exec $LFS/tools/bin/strip --strip-all {} \; >> $LOGFILE 2>&1\r
-  # add -ls before -exec if you want to verify what files are stripped\r
-\r
-  find $LFS/{,s}bin $LFS/usr/{,s}bin $LFS/usr/local/{,s}bin ! -type l \\r
-       -exec file {} \; | grep " ELF " | cut -f1 -d ':' | xargs $LFS/tools/bin/strip --strip-all >> $LOGFILE 2>&1\r
-  # there add -v to strip to verify\r
-\r
-  if [ 'i386' = $MACHINE ]; then\r
-       # Create fcdsl packages\r
-       echo "`date -u '+%b %e %T'`: Building fcdsl tgz" | tee -a $LOGFILE\r
-       cp $LFS/install/images/fcdsl/license.txt $LFS  >> $LOGFILE 2>&1\r
-       touch $LFS/var/run/{need-depmod-$KVER,need-depmod-$KVER-smp}\r
-       cd $LFS && tar cvfz $LFS/install/images/$SNAME-fcdsl-$VERSION.$MACHINE.tgz \\r
-               lib/modules/$KVER/misc/fcdsl*.o.gz \\r
-               lib/modules/$KVER-smp/misc/fcdsl*.o.gz \\r
-               usr/lib/isdn/{fds?base.bin,fd?ubase.frm} \\r
-               etc/fcdsl/fcdsl*.conf \\r
-               etc/drdsl/{drdsl,drdsl.ini} \\r
-               license.txt \\r
-               var/run/{need-depmod-$KVER,need-depmod-$KVER-smp} >> $LOGFILE 2>&1\r
-       rm -f $LFS/license.txt >> $LOGFILE 2>&1\r
-       cd $BASEDIR\r
-  fi\r
-\r
-  # Create update for this version\r
-#  echo "`date -u '+%b %e %T'`: Building update $VERSION tgz" | tee -a $LOGFILE\r
-#  tar -cz -C $BASEDIR/build --files-from=$BASEDIR/updates/$VERSION/ROOTFILES.$MACHINE-$VERSION -f $BASEDIR/updates/$VERSION/patch.tar.gz --exclude='#*'; \r
-#  chmod 755 $BASEDIR/updates/$VERSION/setup\r
-#  tar -cz -C $BASEDIR/updates/$VERSION -f $LFS/install/images/$SNAME-update-$VERSION.$MACHINE.tgz patch.tar.gz setup information\r
-#  rm -f $LFS/var/run/{need-depmod-$KVER,need-depmod-$KVER-smp}\r
-  \r
-  # Generating list of packages used\r
-  echo "`date -u '+%b %e %T'`: Generating packages list from logs" | tee -a $LOGFILE\r
-  rm -f $BASEDIR/doc/packages-list\r
-  for i in `ls -1tr $BASEDIR/log/[^_]*`; do\r
-       if [ "$i" != "$BASEDIR/log/FILES" -a -n $i ]; then\r
-               echo "* `basename $i`" >>$BASEDIR/doc/packages-list\r
-       fi\r
-  done\r
-  echo "!!! List of softwares used to build $NAME Version:$VERSION" > $BASEDIR/doc/packages-list.txt\r
-  grep -v 'configroot$\|img$\|initrd$\|initscripts$\|installer$\|install$\|ipcop$\|setup$\|stage2$\|smp$\|tools$\|tools1$\|tools2$' \\r
-       $BASEDIR/doc/packages-list | sort >> $BASEDIR/doc/packages-list.txt\r
-  rm -f $BASEDIR/doc/packages-list\r
-  # packages-list.txt is ready to be displayed for wiki page IPCopSoftwares\r
-\r
-  # Create ISO for CDRom and USB-superfloppy\r
-  ipcopmake cdrom\r
-  cp $LFS/install/images/{*.iso,*.tgz} $BASEDIR >> $LOGFILE 2>&1\r
-\r
-  # Cleanup\r
-  stdumount\r
-  rm -rf $BASEDIR/build/tmp/*\r
-\r
-  # Generating total list of files\r
-  echo "`date -u '+%b %e %T'`: Generating files list from logs" | tee -a $LOGFILE\r
-  rm -f $BASEDIR/log/FILES\r
-  for i in `ls -1tr $BASEDIR/log/[^_]*`; do\r
-       if [ "$i" != "$BASEDIR/log/FILES" -a -n $i ]; then\r
-               echo "##" >>$BASEDIR/log/FILES\r
-               echo "## `basename $i`" >>$BASEDIR/log/FILES\r
-               echo "##" >>$BASEDIR/log/FILES\r
-               cat $i | sed "s%^\./%#%" | sort >> $BASEDIR/log/FILES\r
-       fi\r
-  done\r
-\r
-  cd $PWD\r
-\r
-}\r
-\r
-# See what we're supposed to do\r
-case "$1" in \r
-build)\r
-       BUILDMACHINE=`uname -m`\r
-       PACKAGE=`ls -v -r $BASEDIR/cache/$SNAME-1.4.*-toolchain-$BUILDMACHINE.tar.gz 2> /dev/null | head -n 1`\r
-       #only restore on a clean disk\r
-       if [ ! -f log/perl-*-tools ]; then\r
-               if [ ! -n "$PACKAGE" ]; then\r
-                       echo "`date -u '+%b %e %T'`: Full toolchain compilation" | tee -a $LOGFILE\r
-                       prepareenv\r
-                       buildtoolchain\r
-               else\r
-                       PACKAGENAME=${PACKAGE%.tar.gz}\r
-                       echo "`date -u '+%b %e %T'`: Restore from $PACKAGE" | tee -a $LOGFILE\r
-                       if [ `md5sum $PACKAGE | awk '{print $1}'` == `cat $PACKAGENAME.md5 | awk '{print $1}'` ]; then\r
-                               tar zxf $PACKAGE\r
-                               prepareenv\r
-                       else\r
-                               exiterror "$PACKAGENAME md5 did not match, check downloaded package"\r
-                       fi\r
-               fi\r
-       else\r
-               echo "`date -u '+%b %e %T'`: Using installed toolchain" | tee -a $LOGFILE\r
-               prepareenv\r
-       fi\r
-       buildbase\r
-       buildipcop\r
-       buildinstaller\r
-       buildpackages\r
-       ;;\r
-shell)\r
-       # enter a shell inside LFS chroot\r
-       # may be used to changed kernel settings\r
-       prepareenv\r
-       entershell\r
-       ;;\r
-changelog)\r
-       echo "Building doc/Changelog from CVS"\r
-       # cv2cl script come from http://www.red-bean.com/cvs2cl/\r
-       if [ ! -s $BASEDIR/doc/CVS/Tag ]; then\r
-               BRANCHOPTS=""\r
-       else\r
-               BRANCH=`cat $BASEDIR/doc/CVS/Tag`\r
-               BRANCH=${BRANCH:1}\r
-               BRANCHOPTS="--follow-only $BRANCH"\r
-       fi\r
-       \r
-       $BASEDIR/tools/cvs2cl.pl --gmt --show-dead $BRANCHOPTS -f $BASEDIR/doc/ChangeLog\r
-       rm -f $BASEDIR/doc/ChangeLog.bak\r
-       echo\r
-       echo "Commit the change now to update CVS"\r
-       ;;\r
-check)\r
-       echo "Checking sources files availability on the web"\r
-       if [ ! -d $DIR_CHK ]; then\r
-               mkdir -p $DIR_CHK\r
-       fi\r
-       FINISHED=0\r
-       cd $BASEDIR/lfs\r
-       for c in `seq $MAX_RETRIES`; do\r
-               if (( FINISHED==1 )); then\r
-                       break\r
-               fi\r
-               FINISHED=1\r
-               cd $BASEDIR/lfs\r
-               for i in *; do\r
-                       if [ -f "$i" -a "$i" != "Config" ]; then\r
-                               make -s -f $i MACHINE=$MACHINE LFS_BASEDIR=$BASEDIR ROOT=$BASEDIR/build \\r
-                                       MESSAGE="$i\t ($c/$MAX_RETRIES)" check\r
-                               if [ $? -ne 0 ]; then\r
-                                       echo "Check : wget error in lfs/$i"\r
-                                       FINISHED=0\r
-                               fi\r
-                       fi\r
-               done\r
-       done\r
-       cd -\r
-       ;;\r
-checkclean)\r
-       echo "Erasing sources files availability tags"\r
-       rm -rf $DIR_CHK/*\r
-       ;;\r
-clean)\r
-       for i in `mount | grep $BASEDIR | sed 's/^.*loop=\(.*\))/\1/'`; do\r
-               $LOSETUP -d $i 2>/dev/null\r
-       done\r
-       for i in `mount | grep $BASEDIR | cut -d " " -f 1`; do\r
-               umount $i\r
-       done\r
-       stdumount\r
-       for i in `seq 0 7`; do\r
-           if ( losetup /dev/loop${i} 2>/dev/null | grep -q "/install/images" ); then\r
-               umount /dev/loop${i}     2>/dev/null;\r
-               losetup -d /dev/loop${i} 2>/dev/null;\r
-           fi;\r
-       done\r
-       rm -rf $BASEDIR/build\r
-       rm -rf $BASEDIR/cdrom\r
-       rm -rf $BASEDIR/log\r
-       rm -f $BASEDIR/updates/$VERSION/patch.tar.gz;\r
-       if [ -h /tools ]; then\r
-               rm -f /tools\r
-       fi\r
-       ;;\r
-dist)\r
-       echo "Building source package from CVS, list of changed files, MD5 of release files"\r
-       if [ ! -s $BASEDIR/doc/CVS/Tag ]; then\r
-               BRANCH=""\r
-               BRANCHOPTS="-D `date +'%Y-%m-%d'`"\r
-       else\r
-               BRANCH=`cat $BASEDIR/doc/CVS/Tag`\r
-               BRANCH=${BRANCH:1}\r
-               BRANCHOPTS="-r $BRANCH"\r
-       fi\r
-\r
-       rm -rf $BASEDIR/build/tmp/$SNAME-$VERSION $BASEDIR/doc/release.txt\r
-       cd $BASEDIR/build/tmp\r
-       # build sources tgz\r
-       echo "Export tree $BRANCH $SNAME-$VERSION"\r
-       cvs -z3 -d `cat $BASEDIR/CVS/Root` export $BRANCHOPTS ipcop\r
-       if [ $? -eq 0 ]; then\r
-               mv ipcop $SNAME-$VERSION\r
-               tar cfz $BASEDIR/$SNAME-sources-$VERSION.tgz $SNAME-$VERSION\r
-               cd $BASEDIR\r
-\r
-               if [ ! -d $BASEDIR/build/tmp/$PREVIOUSTAG ]; then\r
-                       # export previous version to be compared with actual, this help to check wich files need to go in update\r
-                       cd $BASEDIR/build/tmp\r
-                       echo "Export tree $PREVIOUSTAG"\r
-                       cvs -z3 -d `cat $BASEDIR/CVS/Root` export -r $PREVIOUSTAG ipcop\r
-                       mv ipcop $PREVIOUSTAG\r
-               fi\r
-               if [ -d $BASEDIR/build/tmp/$PREVIOUSTAG -o -d $BASEDIR/build/tmp/$SNAME-$VERSION ]; then\r
-                       cd $BASEDIR/build/tmp\r
-                       echo "diff $PREVIOUSTAG <> $BRANCH $SNAME-$VERSION >doc/updated-sources.txt"\r
-                       diff -rq $PREVIOUSTAG $SNAME-$VERSION > $BASEDIR/doc/updated-sources.txt\r
-                       mv $BASEDIR/doc/updated-sources.txt $BASEDIR/doc/updated-sources.bak\r
-                       sed -e "s+Files $PREVIOUSTAG\/++" \\r
-                               -e "s+ and .*$++" \\r
-                               -e "s+src/rc.d+etc/rc.d+" \\r
-                               -e "s+^langs/+var/ipcop/langs/+" \\r
-                               -e "s+html/cgi-bin+home/httpd/cgi-bin+" $BASEDIR/doc/updated-sources.bak \\r
-                               > $BASEDIR/doc/updated-sources.txt\r
-                       rm -f $BASEDIR/doc/updated-sources.bak\r
-               fi\r
-       fi\r
-       ;;\r
-newupdate)\r
-       # create structure for $VERSION update\r
-       if [ ! -f "updates/$VERSION" ]; then\r
-               mkdir -p updates/$VERSION\r
-               cd updates/$VERSION\r
-               touch information\r
-               echo 'etc/issue' > ROOTFILES.alpha-$VERSION\r
-               echo 'etc/issue' > ROOTFILES.i386-$VERSION\r
-               echo 'patch.tar.gz' > .cvsignore\r
-               sed -e "s+^UPGRADEVERSION.*$+UPGRADEVERSION=$VERSION+" $BASEDIR/src/scripts/updatesetup > setup\r
-               chmod 755 setup\r
-               cd ..\r
-               echo "Adding directory $VERSION to cvs"\r
-               cvs add $VERSION\r
-               echo "Adding files to cvs"\r
-               cvs add $VERSION/ROOTFILES.alpha-$VERSION \\r
-                       $VERSION/ROOTFILES.i386-$VERSION \\r
-                       $VERSION/information \\r
-                       $VERSION/setup \\r
-                       $VERSION/.cvsignore\r
-       else\r
-               echo "update/$VERSION already exist"\r
-       fi\r
-       cd -\r
-       exit 0\r
-       ;;\r
-prefetch)\r
-       if [ ! -d $BASEDIR/cache ]; then\r
-               mkdir $BASEDIR/cache\r
-       fi\r
-       mkdir -p $BASEDIR/log\r
-       echo "`date -u '+%b %e %T'`:Preload all source files" | tee -a $LOGFILE\r
-       FINISHED=0\r
-       cd $BASEDIR/lfs\r
-       for c in `seq $MAX_RETRIES`; do\r
-               if (( FINISHED==1 )); then \r
-                       break\r
-               fi\r
-               FINISHED=1\r
-               cd $BASEDIR/lfs\r
-               for i in *; do\r
-                       if [ -f "$i" -a "$i" != "Config" ]; then\r
-                               make -s -f $i LFS_BASEDIR=$BASEDIR MESSAGE="$i\t ($c/$MAX_RETRIES)" download >> $LOGFILE 2>&1\r
-                               if [ $? -ne 0 ]; then\r
-                                       echo "Prefetch : wget error in lfs/$i"\r
-                                       FINISHED=0\r
-                               else\r
-                                       if [ $c -eq 1 ]; then\r
-                                               echo "Prefetch : lfs/$i files loaded"\r
-                                       fi\r
-                               fi\r
-                       fi\r
-               done\r
-       done\r
-       echo "Prefetch : verifying md5sum"\r
-       ERROR=0\r
-       for i in *; do\r
-               if [ -f "$i" -a "$i" != "Config" ]; then\r
-                       make -s -f $i LFS_BASEDIR=$BASEDIR MESSAGE="$i\t " md5 >> $LOGFILE 2>&1\r
-                       if [ $? -ne 0 ]; then\r
-                               echo "md5 difference in lfs/$i"\r
-                               ERROR=1\r
-                       fi\r
-               fi\r
-       done\r
-       if [ $ERROR -eq 0 ]; then\r
-               echo "Prefetch : all files md5sum match"\r
-       fi\r
-       cd -\r
-       ;;\r
-rootfiles)\r
-       PREVIOUSVERSION=`echo $PREVIOUSTAG | sed -e 's/IPCOP_v//' -e 's/_FINAL//' -e 's/_/\./g'`\r
-       # make md5 list of actual build\r
-       # some packages include a timestamp (kernel/perl/python/vim and more), so md5 vary at each build\r
-       # anyway, it is sometime usable after a patch or a minor upgrade to know wich files include in update\r
-       if [ ! -f "$BASEDIR/build/install/cdrom/$SNAME-$VERSION.tgz" ]; then\r
-               echo "need cdrom be build to read include files list, use ./make.sh build before."\r
-       else\r
-               tar tzf $BASEDIR/build/install/cdrom/$SNAME-$VERSION.tgz > $BASEDIR/updates/$VERSION/FILES.tmp\r
-               cd $BASEDIR/build\r
-               rm -f $BASEDIR/updates/$VERSION/FILES-$MACHINE-$VERSION.md5\r
-               for line in `cat $BASEDIR/updates/$VERSION/FILES.tmp`; do\r
-                       if [ -f "$line" -a ! -L "$line" ]; then\r
-                               md5sum "$line" >> $BASEDIR/updates/$VERSION/FILES-$MACHINE-$VERSION.md5\r
-                       fi\r
-               done\r
-               diff $BASEDIR/updates/$PREVIOUSVERSION/FILES-$MACHINE-$PREVIOUSVERSION.md5 \\r
-                       $BASEDIR/updates/$VERSION/FILES-$MACHINE-$VERSION.md5 \\r
-                       > $BASEDIR/updates/$VERSION/FILES-$MACHINE.diff\r
-               awk '$1==">" {print $3}' $BASEDIR/updates/$VERSION/FILES-$MACHINE.diff \\r
-                       > $BASEDIR/updates/$VERSION/ROOTFILES.add.$MACHINE\r
-               awk '$1=="<" {print $3}' $BASEDIR/updates/$VERSION/FILES-$MACHINE.diff \\r
-                       > $BASEDIR/updates/$VERSION/ROOTFILES.remove.$MACHINE.tmp\r
-               rm -f $BASEDIR/updates/$VERSION/ROOTFILES.remove.$MACHINE\r
-               for line in `cat $BASEDIR/updates/$VERSION/ROOTFILES.remove.$MACHINE.tmp`; do\r
-                       # a file is only removed when not in add file\r
-                       if ( ! grep -q "^$line$" $BASEDIR/updates/$VERSION/ROOTFILES.add.$MACHINE ); then\r
-                               echo $line >> $BASEDIR/updates/$VERSION/ROOTFILES.remove.$MACHINE\r
-                       fi\r
-               done\r
-               rm -f $BASEDIR/updates/$VERSION/{FILES.tmp,FILES-*.diff,ROOTFILES.remove.*.tmp}\r
-       fi\r
-       exit 0\r
-       ;;\r
-toolchain)\r
-       prepareenv\r
-       buildtoolchain\r
-       BUILDMACHINE=`uname -m`\r
-       echo "`date -u '+%b %e %T'`: Create toolchain tar.gz for $BUILDMACHINE" | tee -a $LOGFILE\r
-       cd $BASEDIR && tar -zc --exclude='log/_build.*.log' -f cache/$SNAME-$VERSION-toolchain-$BUILDMACHINE.tar.gz \\r
-               build/{bin,etc,usr/bin,usr/local} \\r
-               build/tools/{bin,etc,*-linux-gnu,include,lib,libexec,sbin,share,var} \\r
-               log >> $LOGFILE\r
-       md5sum cache/$SNAME-$VERSION-toolchain-$BUILDMACHINE.tar.gz \\r
-               > cache/$SNAME-$VERSION-toolchain-$BUILDMACHINE.md5\r
-       stdumount\r
-       ;;\r
-gettoolchain)\r
-       BUILDMACHINE=`uname -m`\r
-       # arbitrary name to be updated in case of new toolchain package upload\r
-       PACKAGE=$SNAME-1.4.11-toolchain-$BUILDMACHINE\r
-       URL_SFNET=`grep URL_SFNET lfs/Config | awk '{ print $3 }'`\r
-       echo "`date -u '+%b %e %T'`: Load toolchain tar.gz for $BUILDMACHINE" | tee -a $LOGFILE\r
-       cd $BASEDIR/cache\r
-       wget -c $URL_SFNET/ipcop/$PACKAGE.tar.gz $URL_SFNET/ipcop/$PACKAGE.md5\r
-       if [ $? -ne 0 ]; then\r
-               echo "`date -u '+%b %e %T'`: error downloading toolchain for $BUILDMACHINE machine" | tee -a $LOGFILE\r
-       else\r
-               if [ "`md5sum $PACKAGE.tar.gz | awk '{print $1}'`" = "`cat $PACKAGE.md5 | awk '{print $1}'`" ]; then\r
-                       echo "`date -u '+%b %e %T'`: toolchain md5 ok" | tee -a $LOGFILE\r
-               else\r
-                       exiterror "$PACKAGE.md5 did not match, check downloaded package"\r
-               fi\r
-       fi\r
-       ;;\r
-*)\r
-       echo "Usage: $0 {build|changelog|check|checkclean|clean|dist|gettoolchain|newupdate|prefetch|rootfiles|shell|toolchain}"\r
-       cat doc/make.sh-usage\r
-       exit 1\r
-       ;;\r
-esac\r
+#!/bin/bash
+############################################################################
+#                                                                          #
+# This file is part of the IPFire Firewall.                                #
+#                                                                          #
+# IPFire 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 2 of the License, or        #
+# (at your option) any later version.                                      #
+#                                                                          #
+# IPFire 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 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 <info@ipfire.eu>.                         #
+#                                                                          #
+############################################################################
+#
+
+NAME="IPFire"                          # Software name
+SNAME="ipfire"                 # Short name
+VERSION="2.0b"                 # Version number
+SLOGAN="www.ipfire.org"                # 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 devel"                            # Which version should be compiled? (full|light|voice|devel)
+
+# 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
+       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
+
+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
+
+# Include funtions
+. tools/make-functions
+
+if [ -f .config ]; then
+       . .config
+else
+       echo -e  "${BOLD}No configuration found!${NORMAL}"
+       echo -ne "Do you want to create one (y/N)?"
+       read CREATE_CONFIG
+       echo ""
+       if [ "$CREATE_CONFIG" == "y" ]; then
+               make_config
+       fi
+fi
+
+prepareenv() {
+    ############################################################################
+    #                                                                          #
+    # Are we running the right shell?                                          #
+    #                                                                          #
+    ############################################################################
+    if [ ! "$BASH" ]; then
+       exiterror "BASH environment variable is not set.  You're probably running the wrong shell."
+    fi
+
+    if [ -z "${BASH_VERSION}" ]; then
+       exiterror "Not running BASH shell."
+    fi
+
+
+    ############################################################################
+    #                                                                          #
+    # Trap on emergency exit                                                   #
+    #                                                                          #
+    ############################################################################
+    trap "exiterror 'Build process interrupted'" SIGINT SIGTERM SIGKILL SIGSTOP SIGQUIT
+
+
+    ############################################################################
+    #                                                                          #
+    # Resetting our nice level                                                 #
+    #                                                                          #
+    ############################################################################
+    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 -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
+
+
+    ############################################################################
+    #                                                                          #
+    # Checking for necessary temporary space                                   #
+    #                                                                          #
+    ############################################################################
+    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 (( 2048000 > $BASE_ASPACE )); then
+       BASE_USPACE=`du -skx $BASEDIR | awk '{print $1}'`
+       if (( 2048000 - $BASE_USPACE > $BASE_ASPACE )); then
+               beautify message FAIL
+               exiterror "Not enough temporary space available, need at least 2GB on $BASE_DEV"
+       fi
+    else
+       beautify message DONE
+    fi
+
+    ############################################################################
+    #                                                                          #
+    # Building Linux From Scratch system                                       #
+    #                                                                          #
+    ############################################################################
+    # Set umask
+    umask 022
+
+    # Set LFS Directory
+    LFS=$BASEDIR/build
+
+    # Check /tools symlink
+    if [ -h /tools ]; then
+        rm -f /tools
+    fi
+    if [ ! -a /tools ]; then
+       ln -s $BASEDIR/build/tools /
+    fi
+    if [ ! -h /tools ]; then
+       exiterror "Could not create /tools symbolic link."
+    fi
+
+    # Setup environment
+    set +h
+    LC_ALL=POSIX
+    MAKETUNING="-j12"
+    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/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
+    mount --bind $BASEDIR/doc    $BASEDIR/build/usr/src/doc
+    mount --bind $BASEDIR/html   $BASEDIR/build/usr/src/html
+    mount --bind $BASEDIR/langs  $BASEDIR/build/usr/src/langs
+    mount --bind $BASEDIR/lfs    $BASEDIR/build/usr/src/lfs
+    mount --bind $BASEDIR/log    $BASEDIR/build/usr/src/log
+    mount --bind $BASEDIR/src    $BASEDIR/build/usr/src/src
+
+    # This is a temporary hack!!!
+    if [ ! -f /tools/bin/hostname ]; then
+      cp -f /bin/hostname /tools/bin/hostname 2>/dev/null
+    fi
+
+    # Run LFS static binary creation scripts one by one
+    export CCACHE_DIR=$BASEDIR/ccache
+    export CCACHE_HASHDIR=1
+
+    # Remove pre-install list of installed files in case user erase some files before rebuild
+    rm -f $BASEDIR/build/usr/src/lsalr 2>/dev/null
+}
+
+buildtoolchain() {
+    LOGFILE="$BASEDIR/log/_build.toolchain.log"
+    export LOGFILE
+    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 binutils  PASS=1
+    lfsmake1 gcc               PASS=1
+    export PATH=$BASEDIR/build/usr/local/bin:$BASEDIR/build/tools/bin:$PATH
+    lfsmake1 linux-libc-header
+    lfsmake1 glibc
+    lfsmake1 cleanup-toolchain PASS=1
+    lfsmake1 tcl
+    lfsmake1 expect
+    lfsmake1 dejagnu
+    lfsmake1 gcc               PASS=2
+    lfsmake1 binutils  PASS=2
+    lfsmake1 ncurses
+    lfsmake1 bash
+    lfsmake1 bzip2
+    lfsmake1 coreutils
+    lfsmake1 diffutils
+    lfsmake1 findutils
+    lfsmake1 gawk
+    lfsmake1 gettext
+    lfsmake1 grep
+    lfsmake1 gzip
+    lfsmake1 m4
+    lfsmake1 make
+    lfsmake1 patch
+    lfsmake1 perl
+    lfsmake1 sed
+    lfsmake1 tar
+    lfsmake1 texinfo
+    lfsmake1 util-linux
+    lfsmake1 cleanup-toolchain PASS=2
+    export PATH=$ORG_PATH
+}
+
+buildbase() {
+    LOGFILE="$BASEDIR/log/_build.base.log"
+    export LOGFILE
+    lfsmake2 stage2
+    lfsmake2 linux-libc-header
+    lfsmake2 man-pages
+    lfsmake2 glibc
+    lfsmake2 cleanup-toolchain PASS=3
+    lfsmake2 binutils
+    lfsmake2 gcc
+    lfsmake2 berkeley
+    lfsmake2 coreutils
+    lfsmake2 iana-etc
+    lfsmake2 m4
+    lfsmake2 bison
+    lfsmake2 ncurses
+    lfsmake2 procps
+    lfsmake2 sed
+    lfsmake2 libtool
+    lfsmake2 perl
+    lfsmake2 readline
+    lfsmake2 zlib
+    lfsmake2 autoconf
+    lfsmake2 automake
+    lfsmake2 bash
+    lfsmake2 bzip2
+    lfsmake2 diffutils
+    lfsmake2 e2fsprogs
+    lfsmake2 ed
+    lfsmake2 file
+    lfsmake2 findutils
+    lfsmake2 flex
+    lfsmake2 grub
+    lfsmake2 gawk
+    lfsmake2 gettext
+    lfsmake2 grep
+    lfsmake2 groff
+    lfsmake2 gzip
+    lfsmake2 inetutils
+    lfsmake2 iproute2
+    lfsmake2 kbd
+    lfsmake2 less
+    lfsmake2 make
+    lfsmake2 man
+    lfsmake2 mktemp
+    lfsmake2 modutils
+    lfsmake2 net-tools
+    lfsmake2 patch
+    lfsmake2 psmisc
+    lfsmake2 shadow
+    lfsmake2 sysklogd
+    lfsmake2 sysvinit
+    lfsmake2 tar
+    lfsmake2 texinfo
+    lfsmake2 udev
+    lfsmake2 util-linux
+    lfsmake2 vim
+}
+
+buildipfire() {
+  LOGFILE="$BASEDIR/log/_build.ipfire.log"
+  export LOGFILE
+  ipfiremake configroot
+  ipfiremake dhcp
+  ipfiremake dhcpcd
+  ipfiremake libusb
+  ipfiremake libpcap
+  ipfiremake linux-atm
+  ipfiremake ppp
+  ipfiremake rp-pppoe
+  ipfiremake unzip
+  ipfiremake linux                     SMP=1
+  ipfiremake ipp2p                     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 promise-sata-300-tx      SMP=1
+  ipfiremake zaptel                    SMP=1
+  ipfiremake linux
+  ipfiremake ipp2p
+  ipfiremake fcdsl
+  ipfiremake fcdsl2
+  ipfiremake fcdslsl
+  ipfiremake fcdslusb
+  ipfiremake fcdslslusb
+  ipfiremake fcpci
+#  ipfiremake promise-sata-300-tx
+  ipfiremake zaptel
+  ipfiremake expat
+  ipfiremake gdbm
+  ipfiremake gmp
+  ipfiremake pam
+  ipfiremake openssl
+  ipfiremake python
+  ipfiremake libnet
+  ipfiremake libjpeg
+  ipfiremake libpng
+  ipfiremake libtiff
+  ipfiremake lcms
+  ipfiremake libmng
+  ipfiremake freetype
+  ipfiremake libart
+  ipfiremake gd
+  ipfiremake popt
+  ipfiremake pcre
+  ipfiremake slang
+  ipfiremake newt
+  ipfiremake libcap
+  ipfiremake pciutils
+  ipfiremake libxml2
+  ipfiremake BerkeleyDB
+  ipfiremake mysql
+  ipfiremake cyrus-sasl
+  ipfiremake openldap
+  ipfiremake apache2
+  ipfiremake php
+  ipfiremake apache2                   PASS=C
+  ipfiremake arping
+  ipfiremake beep
+  ipfiremake bind
+  ipfiremake capi4k-utils
+  ipfiremake cdrtools
+  ipfiremake dnsmasq
+  ipfiremake dosfstools
+  ipfiremake reiserfsprogs
+  ipfiremake squashfstools
+  ipfiremake ethtool
+  ipfiremake ez-ipupdate
+  ipfiremake fcron
+  ipfiremake GD
+  ipfiremake gnupg
+  ipfiremake hdparm
+  ipfiremake ibod
+  ipfiremake initscripts
+  ipfiremake iptables
+  ipfiremake libupnp
+  ipfiremake ipp2p                     IPT=1
+  ipfiremake linux-igd
+  ipfiremake ipac-ng
+  ipfiremake ipaddr
+  ipfiremake iptstate
+  ipfiremake iputils
+  ipfiremake l7-protocols
+  ipfiremake isapnptools
+#  ipfiremake isdn4k-utils # What about mISDN???
+  ipfiremake kudzu
+  ipfiremake logrotate
+  ipfiremake logwatch
+  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 java
+  ipfiremake bootsplash
+  ipfiremake spandsp
+  ipfiremake lzo
+  ipfiremake openvpn
+  ipfiremake pkg-config
+  ipfiremake glib
+  ipfiremake pammysql
+  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 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
+  ipfiremake syslinux
+  ipfiremake memtest
+  installmake linux-libc-header
+  installmake binutils
+  ipfiremake uClibc                    PASS=1
+  ipfiremake gcc                       INST=1
+  installmake uClibc                   PASS=2
+  installmake gcc                      INST=2
+  installmake uClibc                   PASS=3
+  installmake busybox
+  installmake udev
+  installmake slang
+  installmake newt
+  installmake gettext
+  installmake kbd
+  installmake popt
+  installmake sysvinit
+  installmake misc-progs
+  installmake e2fsprogs
+  installmake reiserfsprogs
+  installmake sysfsutils
+  installmake util-linux
+  installmake pciutils
+  installmake kudzu
+  installmake installer
+  installmake initrd
+}
+
+buildpackages() {
+  LOGFILE="$BASEDIR/log/_build.packages.log"
+  export LOGFILE
+  echo "... see detailed log in _build.*.log files" >> $LOGFILE
+
+  installmake strip
+  
+  # Generating list of packages used
+  echo -n "Generating packages list from logs" | tee -a $LOGFILE
+  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
+       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$\|setup$\|pakfire$\|stage2$\|smp$\|tools$\|tools1$\|tools2$\|.tgz$\|-config$\|_missing_rootfile$' \
+       $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
+  beautify message DONE
+
+  # Create images for install
+  for i in $IPFVER
+  do
+       ipfiremake cdrom ED=$i
+  done
+  ipfiremake pxe
+  cp -f $LFS/install/images/{*.iso,*.tgz} $BASEDIR >> $LOGFILE 2>&1
+
+#  ipfirepackages
+
+  # Cleanup
+  stdumount
+  rm -rf $BASEDIR/build/tmp/*
+
+  # Generating total list of files
+  echo "Generating files list from logs" | tee -a $LOGFILE
+  rm -f $BASEDIR/log/FILES
+  for i in `ls -1tr $BASEDIR/log/[^_]*`; do
+       if [ "$i" != "$BASEDIR/log/FILES" -a -n $i ]; then
+               echo "##" >>$BASEDIR/log/FILES
+               echo "## `basename $i`" >>$BASEDIR/log/FILES
+               echo "##" >>$BASEDIR/log/FILES
+               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() {
+  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 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 subversion
+  ipfiredist videolan
+  ipfiredist webcyradm
+  ipfiredist xvid
+  ipfiredist yasuc
+  test -d $BASEDIR/packages || mkdir $BASEDIR/packages
+  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/toolchains/$SNAME-$VERSION-toolchain-$BUILDMACHINE.tar.gz 2> /dev/null | head -n 1`
+       #only restore on a clean disk
+       if [ ! -f log/cleanup-toolchain-2-tools ]; then
+               if [ ! -n "$PACKAGE" ]; then
+                       beautify build_stage "Full toolchain compilation - Native GCC: `gcc --version | grep GCC | awk {'print $3'}`"
+                       prepareenv
+                       buildtoolchain
+               else
+                       PACKAGENAME=${PACKAGE%.tar.gz}
+                       beautify build_stage "Packaged toolchain compilation"
+                       if [ `md5sum $PACKAGE | awk '{print $1}'` == `cat $PACKAGENAME.md5 | awk '{print $1}'` ]; then
+                               tar zxf $PACKAGE
+                               prepareenv
+                       else
+                               exiterror "$PACKAGENAME md5 did not match, check downloaded package"
+                       fi
+               fi
+       else
+               echo -n "Using installed toolchain" | tee -a $LOGFILE
+               beautify message SKIP
+               prepareenv
+       fi
+
+       beautify build_start
+       beautify build_stage "Building LFS"
+       buildbase
+
+       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
+       beautify build_end
+       ;;
+shell)
+       # enter a shell inside LFS chroot
+       # may be used to changed kernel settings
+       prepareenv
+       entershell
+       ;;
+changelog)
+       echo -n "Loading new Changelog from SVN: "
+       svn log http://svn.ipfire.org/svn/ipfire > doc/ChangeLog
+       beautify message DONE
+       ;;
+clean)
+       echo -en "${BOLD}Cleaning build directory...${NORMAL}"
+       for i in `mount | grep $BASEDIR | sed 's/^.*loop=\(.*\))/\1/'`; do
+               $LOSETUP -d $i 2>/dev/null
+       done
+       for i in `mount | grep $BASEDIR | cut -d " " -f 1`; do
+               umount $i
+       done
+       stdumount
+       for i in `seq 0 7`; do
+           if ( losetup /dev/loop${i} 2>/dev/null | grep -q "/install/images" ); then
+               umount /dev/loop${i}     2>/dev/null;
+               losetup -d /dev/loop${i} 2>/dev/null;
+           fi;
+       done
+       rm -rf $BASEDIR/build
+       rm -rf $BASEDIR/cdrom
+       rm -rf $BASEDIR/packages
+       rm -rf $BASEDIR/log
+       if [ -h /tools ]; then
+               rm -f /tools
+       fi
+       beautify message DONE
+       ;;
+downloadsrc)
+       if [ ! -d $BASEDIR/cache ]; then
+               mkdir $BASEDIR/cache
+       fi
+       mkdir -p $BASEDIR/log
+       echo -e "${BOLD}Preload all source files${NORMAL}" | tee -a $LOGFILE
+       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
+                               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
+                                       beautify message FAIL
+                                       FINISHED=0
+                               else
+                                       if [ $c -eq 1 ]; then
+                                       beautify message DONE
+                                       fi
+                               fi
+                       fi
+               done
+       done
+       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 -ne "MD5 difference in lfs/$i"
+                               beautify message FAIL
+                               ERROR=1
+                       fi
+               fi
+       done
+       if [ $ERROR -eq 0 ]; then
+               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 - >/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
+       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/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-$VERSION-toolchain-$BUILDMACHINE
+       if [ ! -f $BASEDIR/cache/toolchains/$PACKAGE.tar.gz ]; then
+               URL_TOOLCHAIN=`grep URL_TOOLCHAIN 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_TOOLCHAIN/$PACKAGE.tar.gz $URL_TOOLCHAIN/$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
+       ;;
+othersrc)
+       prepareenv
+       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
+               beautify message FAIL
+       fi
+       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 [ -f /usr/bin/mcedit ]; then
+                       export EDITOR=/usr/bin/mcedit
+               fi
+               if [ -f /usr/bin/nano ]; then
+                       export EDITOR=/usr/bin/nano
+               fi
+               echo -ne "Selecting editor $EDITOR..."
+               beautify message DONE
+               if [ -e /sbin/yast ]; then
+                       if [ "`echo $SVN_REVISION | cut -c 3`" -eq "0" ]; then
+                               $0 changelog
+                       fi
+               fi
+               svn commit
+               $0 svn up
+               $0 uploadsrc
+         ;;
+         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.org/svn/ipfire/trunk ipfire-source/ --force > /dev/null
+               svn log http://svn.ipfire.org/svn/ipfire/trunk -r 1:$SVN_REVISION > ipfire-source/Changelog
+               #svn info http://svn.ipfire.org/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 $FTP_CACHE_USER -p $FTP_CACHE_PASS ftp://$FTP_CACHE_URL$FTP_CACHE_PATH/ > /var/tmp/ftplist
+       for i in *; do
+               if [ "$i" == "toolchains" ]; then continue; fi
+               grep -q $i /var/tmp/ftplist
+               if [ "$?" -ne "0" ]; then
+                       echo -ne "$i"
+                       ncftpput -u $FTP_CACHE_USER -p $FTP_CACHE_PASS $FTP_CACHE_URL $FTP_CACHE_PATH/ $i
+                       if [ "$?" -eq "0" ]; then
+                               beautify message DONE
+                       else
+                               beautify message FAIL
+                       fi
+               fi
+       done
+       rm -f /var/tmp/ftplist
+       cd $PWD
+       exit 0
+       ;;
+upload)
+       case "$2" in
+         iso)
+               echo -e "Uploading the iso to $IPFIRE_FTP_URL_EXT."
+               cat <<EOF > .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 $FTP_ISO_USER -p $FTP_ISO_PASS $FTP_ISO_URL $FTP_ISO_PATH/ ipfire-install-$VERSION.i386.iso
+               ncftpput -u $FTP_ISO_USER -p $FTP_ISO_PASS $FTP_ISO_URL $FTP_ISO_PATH/ ipfire-install-$VERSION.i386.iso.md5
+               ncftpput -u $FTP_ISO_USER -p $FTP_ISO_PASS $FTP_ISO_URL $FTP_ISO_PATH/ ipfire-source-r$SVN_REVISION.tar.gz
+               ncftpput -u $FTP_ISO_USER -p $FTP_ISO_PASS $FTP_ISO_URL $FTP_ISO_PATH/ 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 $FTP_ISO_USER -p $FTP_ISO_PASS $FTP_ISO_URL $FTP_ISO_PATH/ ipfire-sources-cd-$VERSION.$MACHINE.iso
+               fi
+               ;;
+         paks)
+               cat <<EOF > .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
+       ;;
+batch)
+       if [ "$2" -eq "--background" ]; then
+               batch_script
+               exit $?
+       fi
+       if [ `screen -ls | grep -q ipfire` ]; then
+               echo "Build is already running, sorry!"
+               exit 1
+       else
+               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
+       ;;
+pxe)
+       case "$2" in
+         start)
+               start_tftpd
+               ;;
+         stop)
+               stop_tftpd
+               ;;
+         reload|restart)
+               reload_tftpd
+               ;;              
+       esac
+       exit 0
+       ;;
+"")
+       clear
+       svn info
+       select name in "Exit" "IPFIRE: Downloadsrc" "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: Downloadsrc")
+               $0 downloadsrc
+               ;;
+       "IPFIRE: Build (silent)")
+               $0 build-silent
+               ;;
+       "IPFIRE: Watch Build")
+               $0 watch
+               ;;
+       "IPFIRE: Batch")
+               $0 batch
+               ;;
+       "IPFIRE: Clean")
+               $0 clean
+               ;;
+       "SVN: Update")
+               $0 svn update
+               ;;
+       "Help")
+               echo "Usage: $0 {build|changelog|clean|gettoolchain|downloadsrc|shell|sync|toolchain}"
+               cat doc/make.sh-usage
+               ;;
+       "LOG: Tail")
+               tail -f log/_*
+               ;;
+       "Exit")
+               break
+               ;;
+       esac
+       done
+       ;;
+config)
+       make_config
+       ;;
+*)
+       echo "Usage: $0 {build|changelog|clean|gettoolchain|downloadsrc|shell|sync|toolchain}"
+       cat doc/make.sh-usage
+       ;;
+esac