]> git.ipfire.org Git - ipfire-2.x.git/blobdiff - make.sh
Changelog-Fix
[ipfire-2.x.git] / make.sh
diff --git a/make.sh b/make.sh
index 63ec88e24111dae21d76ffc47de3be6b19cfe21a..3664cbefc76359ee5d432e9c776c34d19801ce49 100644 (file)
--- a/make.sh
+++ b/make.sh
@@ -1,5 +1,4 @@
 #!/bin/bash
-#
 ############################################################################
 #                                                                          #
 # This file is part of the IPFire Firewall.                                #
 # 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 <entwickler@ipfire.org>.                  #
+# Copyright (C) 2006 IPFire-Team <info@ipfire.eu>.                         #
 #                                                                          #
 ############################################################################
 #
 
-  NAME="IPFire"                        # Software name
-  SNAME="ipfire"                       # Short name
-  VERSION="2.0"                        # Version number
-  SLOGAN="www.ipfire.org"              # 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`
-  SVN_REVISION=`svn info | grep Revision | cut -c 11-`
-
-  # Setzen des IPFire Builds
-  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
+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
+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 [ -f .config ]; then
-       . .config
-  fi
+# Include funtions
+. tools/make-functions
 
-  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)" >> $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" >> $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" >> $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;
-}
-
-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
+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() {
     ############################################################################
@@ -158,20 +103,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
 
 
@@ -180,14 +132,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
+    if (( 2048000 > $BASE_ASPACE )); then
        BASE_USPACE=`du -skx $BASEDIR | awk '{print $1}'`
-       if (( 2202000 - $BASE_USPACE > $BASE_ASPACE )); then
-               exiterror "Not enough temporary space available, need at least 2.1GB on $BASE_DEV"
+       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
 
     ############################################################################
@@ -195,8 +150,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
 
@@ -217,17 +170,25 @@ prepareenv() {
     # Setup environment
     set +h
     LC_ALL=POSIX
-    export LFS LC_ALL CFLAGS CXXFLAGS
+    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/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
@@ -238,6 +199,11 @@ prepareenv() {
     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
@@ -246,621 +212,384 @@ 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/*.ipfire | 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 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 ed
+    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 net-tools
     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
 }
 
-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
-       ipcopmake promise-sata-300-tx 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
-       ipcopmake promise-sata-300-tx
-  fi
-
-  ipcopmake pcmcia-cs
-  ipcopmake expat
-  ipcopmake gdbm
-  ipcopmake gmp
-  ipcopmake openssl
-  ipcopmake python
-  ipcopmake libnet
-  ipcopmake libpng
-  ipcopmake libtiff
-  ipcopmake libjpeg
-  ipcopmake lcms
-  ipcopmake libmng
-  ipcopmake freetype
-  ipcopmake gd
-  ipcopmake popt
-  ipcopmake slang
-  ipcopmake newt
-  ipcopmake libcap
-  ipcopmake pciutils
-  ipcopmake pcre
-  ipcopmake readline
-  ipcopmake berkeley
-  ipcopmake BerkeleyDB ## The Perl module
-  ipcopmake mysql
-  ipcopmake saslauthd PASS=1
-  ipcopmake openldap
-  ipcopmake apache
-  ipcopmake apache2
-  ipcopmake php
-  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 noip_updater
-  ipcopmake ntp
-  ipcopmake oinkmaster
-  ipcopmake openssh
-  ipcopmake openswan
-  ipcopmake pptpclient
-  ipcopmake rrdtool
-  ipcopmake setserial
-  ipcopmake setup
-  ipcopmake snort
-  #ipcopmake speedycgi
-  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 bootsplash
-  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 smartmontools
-  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 zaptel
-  ipcopmake libpri
-  ipcopmake bristuff
-  ipcopmake asterisk
-  ipcopmake mpg123
-  echo -ne "`date -u '+%b %e %T'`: Building ### Multimedia-Server ### \n" | tee -a $LOGFILE
-  ipcopmake libmad
-  ipcopmake libogg
-  ipcopmake libvorbis
-  ipcopmake lame
-  ipcopmake xvid
-  ipcopmake mpeg2dec
-  ipcopmake ffmpeg
-  ipcopmake sox
-  ipcopmake gnump3d
-  ipcopmake videolan
-  echo -ne "`date -u '+%b %e %T'`: Building ### P2P-Clients ### \n" | tee -a $LOGFILE
-  ipcopmake applejuice
-  ipcopmake ocaml
-  ipcopmake mldonkey
-#  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 mbmon
-  ipcopmake iftop
-  ipcopmake ncftp
-  ipcopmake cftp
-  ipcopmake etherwake
-  ipcopmake ethereal
-  ipcopmake tftp-hpa
-  ipcopmake subversion
-  ipcopmake iptraf
-  ipcopmake nagios
-#  ipcopmake stunnel # Ausgeschaltet, weil wir es doch nicht nutzen
+  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
-  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 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 e2fsprogs
   installmake misc-progs
-  installmake slang
+  installmake e2fsprogs
+  installmake reiserfsprogs
+  installmake sysfsutils
   installmake util-linux
-  installmake newt
   installmake pciutils
-  installmake pcmcia-cs
-  installmake kbd
+  installmake kudzu
   installmake installer
-  installmake scsi.img
-  installmake driver.img
   installmake initrd
-  installmake boot.img
 }
 
 buildpackages() {
   LOGFILE="$BASEDIR/log/_build.packages.log"
   export LOGFILE
   echo "... see detailed log in _build.*.log files" >> $LOGFILE
-  echo -ne "`date -u '+%b %e %T'`: Stage5 packages build \n" | tee -a $LOGFILE
-  # Strip files
-  echo "`date -u '+%b %e %T'`: Stripping files" | tee -a $LOGFILE
-  find $LFS/lib $LFS/usr/lib $LFS/usr/share/rrdtool-* $LFS/install ! -type l \( -name '*.so' -o -name '*.so[\.0-9]*' \) \
-       ! -name 'libc.so' ! -name 'libpthread.so' ! -name 'libcrypto.so.0.9.7.sha1' \
-        -exec $LFS/tools/bin/strip --strip-all {} \; >> $LOGFILE 2>&1
-  # add -ls before -exec if you want to verify what files are stripped
-
-  find $LFS/{,s}bin $LFS/usr/{,s}bin $LFS/usr/local/{,s}bin ! -type l \
-       -exec file {} \; | grep " ELF " | cut -f1 -d ':' | xargs $LFS/tools/bin/strip --strip-all >> $LOGFILE 2>&1
-  # there add -v to strip to verify
 
-  if [ 'i386' = $MACHINE ]; then
-       # Create fcdsl packages
-       echo "`date -u '+%b %e %T'`: Building fcdsl tgz" | tee -a $LOGFILE
-       cp $LFS/install/images/fcdsl/license.txt $LFS  >> $LOGFILE 2>&1
-       touch $LFS/var/run/{need-depmod-$KVER,need-depmod-$KVER-smp}
-       cd $LFS && tar cvfz $LFS/install/images/$SNAME-fcdsl-$VERSION.$MACHINE.tgz \
-               lib/modules/$KVER/misc/fcdsl*.o.gz \
-               lib/modules/$KVER-smp/misc/fcdsl*.o.gz \
-               usr/lib/isdn/{fds?base.bin,fd?ubase.frm} \
-               etc/fcdsl/fcdsl*.conf \
-               etc/drdsl/{drdsl,drdsl.ini} \
-               license.txt \
-               var/run/{need-depmod-$KVER,need-depmod-$KVER-smp} >> $LOGFILE 2>&1
-       rm -f $LFS/license.txt >> $LOGFILE 2>&1
-       cd $BASEDIR
-  fi
+  installmake strip
   
   # Generating list of packages used
-  echo "`date -u '+%b %e %T'`: Generating packages list from logs" | tee -a $LOGFILE
+  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
+               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$\|ipfire$\|setup$\|pakfire$\|stage2$\|smp$\|tools$\|tools1$\|tools2$\|^ipfire-logs' \
+  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 ISO for CDRom and USB-superfloppy
-  ipcopmake cdrom
-  rm -f $LFS/install/images/*usb*
-  cp $LFS/install/images/{*.iso,*.tgz} $BASEDIR >> $LOGFILE 2>&1
+  # 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
+#  ipfirepackages
 
   # Cleanup
   stdumount
   rm -rf $BASEDIR/build/tmp/*
 
   # Generating total list of files
-  echo "`date -u '+%b %e %T'`: Generating files list from logs" | tee -a $LOGFILE
+  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
@@ -883,7 +612,7 @@ ipfirepackages() {
                touch $BASEDIR/build/install/packages/$i.empty
          done
   fi
-  ipfiredist amavisd
+#  ipfiredist amavisd
   ipfiredist applejuice
   ipfiredist asterisk
   ipfiredist clamav
@@ -897,9 +626,7 @@ ipfirepackages() {
   ipfiredist lame
   ipfiredist libmad
   ipfiredist libogg
-  ipfiredist libtiff
   ipfiredist libvorbis
-  ipfiredist libxml2
   ipfiredist mailx
   ipfiredist mldonkey
   ipfiredist mpeg2dec
@@ -915,34 +642,29 @@ ipfirepackages() {
   ipfiredist spamassassin
   ipfiredist subversion
   ipfiredist videolan
-  ipfiredist web-cyradm
-  ipfiredist xampp
-#  ipfiredist xinetd
+  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/*
 }
 
-update_logs() {
-       tar cfz log/ipfire-logs-`date +'%Y-%m-%d-%H:%M'`.tgz log/_build.*
-       rm -f log/_build.*
-}
-
 # 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/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
@@ -951,12 +673,17 @@ 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_start
+       beautify build_stage "Building LFS"
        buildbase
-       buildipcop
+
+       beautify build_stage "Building IPFire"
+       buildipfire
 
        # Setzen des IPFire Builds
        if [ "$FIREBUILD" ]; then
@@ -965,8 +692,12 @@ build)
                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
@@ -976,40 +707,11 @@ shell)
        ;;
 changelog)
        echo -n "Loading new Changelog from SVN: "
-       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/*
+       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
@@ -1030,64 +732,14 @@ clean)
        if [ -h /tools ]; then
                rm -f /tools
        fi
+       beautify message DONE
        ;;
-newpak)
-       # create structure for a new package
-       echo -e "Name of the new package: $2"
-       if [ ! -f "lfs/$2" ]; then
-               echo "`date -u '+%b %e %T'`: Creating directory src/paks/$2"
-               mkdir -p src/paks/$2
-               cd src/paks/$2
-               echo "`date -u '+%b %e %T'`: Creating files"
-               cp $BASEDIR/lfs/postfix $BASEDIR/lfs/$2
-
-               touch ROOTFILES
-               touch {,un}install.sh
-       ## install.sh
-               echo '#!/bin/bash' > install.sh
-               echo '#' >> install.sh
-               echo '#################################################################' >> install.sh
-               echo '#                                                               #' >> install.sh
-               echo '# This file belongs to IPFire Firewall - GPLv2 - www.ipfire.org #' >> install.sh
-               echo '#                                                               #' >> install.sh
-               echo '#################################################################' >> install.sh
-               echo '#' >> install.sh
-               echo '# Extract the files' >> install.sh
-               echo 'tar xfz files.tgz -C /' >> install.sh
-               echo 'cp -f ROOTFILES /opt/pakfire/installed/ROOTFILES.$2' >> install.sh
-       ## uninstall.sh
-               echo '#!/bin/bash' > uninstall.sh
-               echo '#################################################################' >> uninstall.sh
-               echo '#                                                               #' >> uninstall.sh
-               echo '# This file belongs to IPFire Firewall - GPLv2 - www.ipfire.org #' >> uninstall.sh
-               echo '#                                                               #' >> uninstall.sh
-               echo '#################################################################' >> uninstall.sh
-               echo '#' >> uninstall.sh
-               echo '# Delete the files' >> uninstall.sh
-               echo '## Befehl fehlt noch' >> uninstall.sh
-               echo 'rm -f /opt/pakfire/installed/ROOTFILES.$2' >> uninstall.sh
-               echo "`date -u '+%b %e %T'`: Adding files to SVN"
-               cd - && svn add lfs/$2 && svn add src/paks/$2
-
-               echo -n "Do you want to remove the folders? [y/n]"
-               read REM
-               if  [ "$REM" == "y" ]; then
-                       echo "Removing the folders..."
-                       svn del src/paks/$2 --force
-               else
-                       echo "Folders are kept."
-               fi
-       else
-               echo "$2 already exists"
-       fi
-       exit 0
-       ;;
-prefetch)
+downloadsrc)
        if [ ! -d $BASEDIR/cache ]; then
                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
@@ -1098,36 +750,44 @@ 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
@@ -1145,11 +805,11 @@ gettoolchain)
        # 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_IPFIRE=`grep URL_IPFIRE lfs/Config | awk '{ print $3 }'`
+               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_IPFIRE/toolchains/$PACKAGE.tar.gz $URL_IPFIRE/toolchains/$PACKAGE.md5 >& /dev/null
+               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
@@ -1163,206 +823,121 @@ gettoolchain)
                echo "Toolchain is already downloaded. Exiting..."
        fi
        ;;
-sources-iso)
+othersrc)
        prepareenv
-       echo "`date -u '+%b %e %T'`: Build sources iso for $MACHINE" | tee -a $LOGFILE
+       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 -n "Load the latest source files..."
-               svn update >> $PWD/log/_build.svn.update.log
-               if [ $? -eq 0 ]; then
-                       echo ".Done!"
+               echo -ne "Loading the latest source files...\n"
+               if [ $3 ]; then
+                       svn update -r $3 | tee -a $PWD/log/_build.svn.update.log
                else
-                       echo ".Fail!"
+                       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 -n "Write the svn info to a file..."
+               echo -ne "Writing the svn-info to a file"
                svn info > $PWD/svn_status
-               if [ "$?" -eq "0" ]; then
-                       echo ".Done!"
+               if [ $? -eq "0" ]; then
+                       beautify message DONE
                else
-                       echo ".Fail!"
+                       beautify message FAIL
                        exit 1
                fi
                chmod 755 $0
-               tail log/_build.svn.update.log
                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
-                       $0 changelog
+                       if [ "`echo $SVN_REVISION | cut -c 3`" -eq "0" ]; then
+                               $0 changelog
+                       fi
                fi
-               echo "Upload the changed files..."
-               sleep 1
-               IPFIRE_SVN_MESSAGE=/tmp/ipfire-svn-co-message.txt
-               rm -f $IPFIRE_SVN_MESSAGE
-               mcedit $IPFIRE_SVN_MESSAGE
-               svn commit -F $IPFIRE_SVN_MESSAGE
-               rm -f $IPFIRE_SVN_MESSAGE
+               svn commit
                $0 svn up
+               $0 uploadsrc
          ;;
          dist)
-               #$0 svn up
-               echo -ne "Download source package from svn..."
-               svn export http://svn.ipfire.eu/svn/ipfire ipfire-source/ --force > /dev/null
-               if [ "$?" -eq "0" ]; then
-                       echo ".Done!"
-               else
-                       echo ".Fail!"
-                       exit 1
+               if [ $3 ]; then
+                       SVN_REVISION=$3
                fi
-               echo -n "Compress files..."
-               tar cfz ipfire-source-r$SVN_REVISION.tar.gz ipfire-source
-               if [ "$?" -eq "0" ]; then
-                       echo ".Done!"
-               else
-                       echo ".Fail!"
-                       exit 1
+               if [ -f ipfire-source-r$SVN_REVISION.tar.gz ]; then
+                       echo -ne "REV $SVN_REVISION: SKIPPED!\n"
+                       exit 0
                fi
-               echo -n "Cleanup..."
-               rm ipfire-source/ -r
-               if [ "$?" -eq "0" ]; then
-                       echo ".Done!"
-               else
-                       echo ".Fail!"
-                       exit 1
+               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)
-               echo -ne "Make a local diff to last svn revision..."
+         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
-               if [ "$?" -eq "0" ]; then
-                       echo ".Done!"
-               else
-                       echo ".Fail!"
-                       exit 1
-               fi
+               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
        ;;
-make-config)
-       echo -e "This is for creating your configuration..."
-       echo -e "We will need some input:"
-       echo -e ""
-       echo -n "FTP-DOMAIN FOR THE ISO: "
-       read IPFIRE_FTP_URL_EXT
-       echo -n "PATH FOR $IPFIRE_FTP_URL_EXT: "
-       read IPFIRE_FTP_PATH_EXT
-       echo -n "USERNAME FOR $IPFIRE_FTP_URL_EXT: "
-       read IPFIRE_FTP_USER_EXT
-       echo -n "PASSWORD FOR $IPFIRE_FTP_URL_EXT: "
-       read -s IPFIRE_FTP_PASS_EXT
-       echo ""
-       echo "(You can leave this empty if the cache-server is the same as your iso-server.)"
-       echo -n "FTP-DOMAIN FOR THE CACHE: "
-       read IPFIRE_FTP_URL_INT
-       echo -n "PATH FOR $IPFIRE_FTP_URL_INT: "
-       read IPFIRE_FTP_PATH_INT
-       if [ $IPFIRE_FTP_URL_INT ]; then
-               echo -n "USERNAME FOR $IPFIRE_FTP_URL_INT: "
-               read IPFIRE_FTP_USER_INT
-               echo -n "PASSWORD FOR $IPFIRE_FTP_URL_INT: "
-               read -s IPFIRE_FTP_PASS_INT
-       else
-               IPFIRE_FTP_URL_INT=$IPFIRE_FTP_URL_EXT
-               IPFIRE_FTP_USER_INT=$IPFIRE_FTP_USER_EXT
-               IPFIRE_FTP_PASS_INT=$IPFIRE_FTP_PASS_EXT
-               echo "USERNAME FOR $IPFIRE_FTP_URL_INT: $IPFIRE_FTP_USER_INT"
-               echo "PASSWORD FOR $IPFIRE_FTP_URL_INT: !HIDDEN!"
-       fi
-       echo ""
-       echo "(You can leave this empty if the pak-server is the same as your iso-server.)"
-       echo -n "FTP-DOMAIN FOR THE PAKS: "
-       read IPFIRE_FTP_URL_PAK
-       echo -n "PATH FOR $IPFIRE_FTP_URL_PAK: "
-       read IPFIRE_FTP_PATH_PAK
-       if [ $IPFIRE_FTP_URL_PAK ]; then
-               echo -n "USERNAME FOR $IPFIRE_FTP_URL_PAK: "
-               read IPFIRE_FTP_USER_PAK
-               echo -n "PASSWORD FOR $IPFIRE_FTP_URL_PAK: "
-               read -s IPFIRE_FTP_PASS_PAK
-       else
-               IPFIRE_FTP_URL_PAK=$IPFIRE_FTP_URL_EXT
-               IPFIRE_FTP_USER_PAK=$IPFIRE_FTP_USER_EXT
-               IPFIRE_FTP_PASS_PAK=$IPFIRE_FTP_PASS_EXT
-               echo "USERNAME FOR $IPFIRE_FTP_URL_PAK: $IPFIRE_FTP_USER_PAK"
-               echo "PASSWORD FOR $IPFIRE_FTP_URL_PAK: !HIDDEN!"
-       fi
-       echo ""
-       echo -e "ONE OR MORE EMAIL ADDRESS(ES) TO WHICH THE REPORTS WILL BE SENT"
-       echo -e "(seperated by comma)"
-       read IPFIRE_MAIL_REPORT
-       echo -n "EMAIL FROM: "
-       read IPFIRE_MAIL_FROM
-       echo -n "EMAIL SERVER: "
-       read IPFIRE_MAIL_SERVER
-       echo -n "LOGIN TO MAIL SERVER: "
-       read IPFIRE_MAIL_USER
-       echo -n "MAIL PASSWORD: "
-       read -s IPFIRE_MAIL_PASS
-       echo -n "Saving..."
-       for i in `seq 20`; do
-               sleep 0.1; echo -n "."
-       done
-       echo ".Finished!"
-       cat <<END > .config
-### ISO server
-IPFIRE_FTP_URL_EXT=$IPFIRE_FTP_URL_EXT
-IPFIRE_FTP_PATH_EXT=$IPFIRE_FTP_PATH_EXT
-IPFIRE_FTP_USER_EXT=$IPFIRE_FTP_USER_EXT
-IPFIRE_FTP_PASS_EXT=$IPFIRE_FTP_PASS_EXT
-### cache server
-IPFIRE_FTP_URL_INT=$IPFIRE_FTP_URL_INT
-IPFIRE_FTP_PATH_INT=$IPFIRE_FTP_PATH_INT
-IPFIRE_FTP_USER_INT=$IPFIRE_FTP_USER_INT
-IPFIRE_FTP_PASS_INT=$IPFIRE_FTP_PASS_INT
-### paks server
-IPFIRE_FTP_URL_PAK=$IPFIRE_FTP_URL_PAK
-IPFIRE_FTP_PATH_PAK=$IPFIRE_FTP_PATH_PAK
-IPFIRE_FTP_USER_PAK=$IPFIRE_FTP_USER_PAK
-IPFIRE_FTP_PASS_PAK=$IPFIRE_FTP_PASS_PAK
-### mail reports
-IPFIRE_MAIL_REPORT=$IPFIRE_MAIL_REPORT
-IPFIRE_MAIL_FROM=$IPFIRE_MAIL_FROM
-IPFIRE_MAIL_SERVER=$IPFIRE_MAIL_SERVER
-IPFIRE_MAIL_USER=$IPFIRE_MAIL_USER
-IPFIRE_MAIL_PASS=$IPFIRE_MAIL_PASS
-END
-       ;;
-sync)
-       echo -e "Syncing cache to ftp:"
-#      rm -f doc/packages-to-remove-from-ftp
-       ncftpls -u $IPFIRE_FTP_USER_INT -p $IPFIRE_FTP_PASS_INT ftp://$IPFIRE_FTP_URL_INT$IPFIRE_FTP_PATH_INT/ > ftplist
-       for i in `ls -w1 cache/`; do
-               grep $i ftplist
+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
-                       ncftpput -u $IPFIRE_FTP_USER_INT -p $IPFIRE_FTP_PASS_INT $IPFIRE_FTP_URL_INT $IPFIRE_FTP_PATH_INT/ cache/$i
+                       echo -ne "$i"
+                       ncftpput -u $FTP_CACHE_USER -p $FTP_CACHE_PASS $FTP_CACHE_URL $FTP_CACHE_PATH/ $i
                        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
-#      done
-       rm -f ftplist
+       rm -f /var/tmp/ftplist
+       cd $PWD
+       exit 0
        ;;
 upload)
        case "$2" in
@@ -1376,10 +951,10 @@ 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
+               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
@@ -1387,7 +962,7 @@ EOF
                        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
+                       ncftpput -u $FTP_ISO_USER -p $FTP_ISO_PASS $FTP_ISO_URL $FTP_ISO_PATH/ ipfire-sources-cd-$VERSION.$MACHINE.iso
                fi
                ;;
          paks)
@@ -1408,197 +983,11 @@ EOF
          ;;
        esac
        ;;
-build-only)
-       rm -f $BASEDIR/log/$2*
-       BUILDMACHINE=`uname -m`
-       prepareenv
-       ipcopmake $2
-       ;;
-build-silent)
-       screen -dmS ipfire $0 build
-       echo "Build started... This will take a while!"
-       echo "You can see the status with 'screen -x ipfire'."
-       ;;
-mail)
-       chmod 755 tools/sendEmail
-       ATTACHMENT=/tmp/ipfire-build-logs-R$SVN_REVISION.tar.gz
-       if [ "$2" = "ERROR" ]; then
-               SUBJECT="ERROR: IPFIRE-BUILD R$SVN_REVISION on `hostname`"
-               echo "ERROR: $0 build!"
-               cat <<END > /tmp/ipfire_mail_body
-When I was building IPFire on `hostname`, I have found an ERROR!
-Here you can see the logs and detect the reason for this error.
-
-Best Regards
-Your IPFire-Build-Script
-END
-       fi
-       if [ "$2" = "SUCCESS" ]; then
-               SUBJECT="SUCCESS: IPFIRE-BUILD R$SVN_REVISION on `hostname`"
-               cat <<END > /tmp/ipfire_mail_body
-Building IPFire on `hostname` in Revision $SVN_REVISION was successfull!
-You can find the ISO on your ftp server.
-
-Statistics:
------------
-Started:       $IPFIRE_START_TIME
-Finished:      `date`
-
-Best Regards
-Your IPFire-Build-Script
-END
-       fi
-       if [ "$2" = "SVNUPDATE" ]; then
-               SUBJECT="SVNUPDATE: IPFIRE-BUILD R$SVN_REVISION on `hostname`"
-               echo "ERROR: $0 svn up!"
-               cat <<END > /tmp/ipfire_mail_body
-When I was downloading the latest svn source,
-I have found an ERROR!
-Here you can see the logs and detect the reason for this error.
-
-Best Regards
-Your IPFire-Build-Script
-END
-       fi
-
-       if [ "$2" = "SVNDIST" ]; then
-               SUBJECT="SVNDIST: IPFIRE-BUILD R$SVN_REVISION on `hostname`"
-               echo "ERROR: $0 svn dist!"
-               cat <<END > /tmp/ipfire_mail_body
-When I was exporting the latest svn source,
-I have found an ERROR!
-Here you can see the logs and detect the reason for this error.
-
-Best Regards
-Your IPFire-Build-Script
-END
-       fi
-
-       if [ "$2" = "PREFETCH" ]; then
-               SUBJECT="PREFETCH: IPFIRE-BUILD R$SVN_REVISION on `hostname`"
-               echo "ERROR: $0 prefetch!"
-               cat <<END > /tmp/ipfire_mail_body
-When I was downloading the source packages,
-I have found an ERROR!
-Here you can see the logs and detect the reason for this error.
-
-Best Regards
-Your IPFire-Build-Script
-END
-       fi
-
-       if [ "$2" = "ISO" ]; then
-               SUBJECT="ISO: IPFIRE-BUILD R$SVN_REVISION on `hostname`"
-               echo "ERROR: $0 upload iso!"
-               cat <<END > /tmp/ipfire_mail_body
-When I was uploading the iso image,
-I have found an ERROR!
-Here you can see the logs and detect the reason for this error.
-
-Best Regards
-Your IPFire-Build-Script
-END
-       fi
-
-       if [ "$2" = "PAKS" ]; then
-               SUBJECT="PAKS: IPFIRE-BUILD R$SVN_REVISION on `hostname`"
-               echo "ERROR: $0 upload paks!"
-               cat <<END > /tmp/ipfire_mail_body
-When I was uploading the packages,
-I have found an ERROR!
-Here you can see the logs and detect the reason for this error.
-
-Best Regards
-Your IPFire-Build-Script
-END
-       fi
-
-       tar cfz $ATTACHMENT log/_build*
-       cat <<END >> /tmp/ipfire_mail_body
-
-Here is a summary... The full logs are in the attachment.
----------------------------------------------------------
-
-`tail log/_*`
-END
-       cat /tmp/ipfire_mail_body | tools/sendEmail -q \
-               -f $IPFIRE_MAIL_FROM \
-               -t $IPFIRE_MAIL_REPORT \
-               -u $SUBJECT \
-               -s $IPFIRE_MAIL_SERVER:25 \
-               -xu $IPFIRE_MAIL_USER \
-               -xp $IPFIRE_MAIL_PASS \
-               -l log/_build.mail.log \
-               -a $ATTACHMENT # -v
-       rm -f /tmp/ipfire_mail_body $ATTACHMENT
-       ;;
-unattended)
-       if [ ! -f .config ]; then
-               echo "No configuration found. Try ./make.sh make-config."
-       fi
-       ### This is our procedure that will compile the IPFire by herself...
-       echo "### UPDATE LOGS"
-       update_logs
-
-       if [ "$IPFIRE_REBUILD" -eq "0" ]; then
-               echo "### SAVING TIME"
-               export IPFIRE_START_TIME=`date`
-
-               echo "### GETTING TOOLCHAIN"
-               $0 gettoolchain
-
-               echo "### RUNNING SVN-UPDATE"
-               $0 svn update
-               if [ $? -ne 0 ]; then
-                       $0 mail SVNUPDATE
-                       exit 1
-               fi
-       
-               echo "### EXPORT SOURCES"
-               $0 svn dist
-               if [ $? -ne 0 ]; then
-                       $0 mail SVNDIST
-                       exit 1
-               fi
-
-               echo "### RUNNING PREFETCH"
-               $0 prefetch | grep -q "md5 difference"
-               if [ $? -eq 0 ]; then
-                       $0 mail PREFETCH
-                       exit 1
-               fi
-       fi
-
-       echo "### RUNNING BUILD"
-       $0 build
-       if [ $? -ne 0 ]; then
-               $0 mail ERROR
-               exit 1
-       fi
-
-       echo "### MAKING SOURCES-ISO"
-       echo "DISABLED by Delaco!"
-       #$0 sources-iso
-
-       echo "### UPLOADING ISO"
-       $0 upload iso
-       if [ $? -ne 0 ]; then
-               $0 mail ISO
-               exit 1
-       fi
-       
-       echo "### UPLOADING PAKS"
-       $0 upload paks
-       if [ $? -ne 0 ]; then
-               $0 mail PAKS
-               exit 1
-       fi
-
-       echo "### SUCCESS!"
-       $0 mail SUCCESS
-       exit 0
-       ;;
 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
@@ -1609,38 +998,43 @@ batch)
                else
                        export IPFIRE_REBUILD=0
                fi
-               echo -n "IPFire-Batch-Build is starting..."
-               screen -dmS ipfire $0 unattended
-               if [ "$?" -eq "0" ]; then
-                       echo ".Done!"
-               else
-                       echo ".ERROR!"
-                       exit 1
-               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: Prefetch" "IPFIRE: Build (silent)" "IPFIRE: Watch Build" "IPFIRE: Batch" "IPFIRE: Clean" "SVN: Commit" "SVN: Update" "SVN: Status" "SVN: Diff" "LOG: Tail" "Help"
+       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: Prefetch")
-               $0 prefetch
+       "IPFIRE: Downloadsrc")
+               $0 downloadsrc
                ;;
        "IPFIRE: Build (silent)")
                $0 build-silent
                ;;
        "IPFIRE: Watch Build")
-               echo "Exit with Ctrl+A, Ctrl+D."
-               echo -n "Preparing..."
-               for i in `seq 10`; do
-                       sleep 0.1; echo -n "."
-               done
-               echo ".Ready!"
-               sleep 0.3
-               screen -x ipfire
+               $0 watch
                ;;
        "IPFIRE: Batch")
                $0 batch
@@ -1648,24 +1042,11 @@ batch)
        "IPFIRE: Clean")
                $0 clean
                ;;
-       "SVN: Commit")
-               echo "Are your sure to Update all Files to the Server (write: yes)?"; read input
-               if [ "$input" == "yes" ]; then
-                       $0 svn commit
-               fi
-               $0 sync
-               ;;
        "SVN: Update")
                $0 svn update
                ;;
-       "SVN: Status")
-               svn status # | grep -v ^?
-               ;;
-       "SVN: Diff")
-               $0 svn diff
-               ;;
        "Help")
-               echo "Usage: $0 {build|changelog|check|checkclean|clean|gettoolchain|newpak|prefetch|shell|sync|toolchain}"
+               echo "Usage: $0 {build|changelog|clean|gettoolchain|downloadsrc|shell|sync|toolchain}"
                cat doc/make.sh-usage
                ;;
        "LOG: Tail")
@@ -1677,4 +1058,11 @@ batch)
        esac
        done
        ;;
+config)
+       make_config
+       ;;
+*)
+       echo "Usage: $0 {build|changelog|clean|gettoolchain|downloadsrc|shell|sync|toolchain}"
+       cat doc/make.sh-usage
+       ;;
 esac