#!/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" # Which versions 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
-
- 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
-
- 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
+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;
-}
+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
-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
-}
+# Include funtions
+. tools/make-functions
-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() {
############################################################################
# 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
# 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
############################################################################
# Building Linux From Scratch system #
# #
############################################################################
- echo "`date -u '+%b %e %T'`: Building Linux From Scratch system" | tee -a $LOGFILE
-
# Set umask
umask 022
# Setup environment
set +h
LC_ALL=POSIX
- export LFS LC_ALL CFLAGS CXXFLAGS
+ MAKETUNING="-j4"
+ 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
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
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 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 libaal
lfsmake2 make
+ lfsmake2 man
+ lfsmake2 mktemp
lfsmake2 modutils
+ lfsmake2 net-tools
lfsmake2 patch
- lfsmake2 procinfo
- lfsmake2 procps
lfsmake2 psmisc
+ lfsmake2 reiser4progs
lfsmake2 shadow
lfsmake2 sysklogd
lfsmake2 sysvinit
lfsmake2 tar
+ lfsmake2 texinfo
+ lfsmake2 udev
lfsmake2 util-linux
+ lfsmake2 vim
+ lfsmake2 grub
}
-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 yasuc
-# 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 fuse 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 fuse
+ ipfiremake pkg-config
+ ipfiremake cpio
+ 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 libaal
+ ipfiremake dosfstools
+ ipfiremake reiserfsprogs
+ ipfiremake squashfstools
+ ipfiremake sysfsutils
+ ipfiremake ntfs-3g
+ ipfiremake ethtool
+ ipfiremake ez-ipupdate
+ ipfiremake fcron
+ ipfiremake GD
+ ipfiremake GD-Graph
+ ipfiremake GD-TextUtil
+ ipfiremake gnupg
+ ipfiremake hdparm
+ ipfiremake ibod
+ ipfiremake initscripts
+ ipfiremake iptables
+ ipfiremake libupnp
+ ipfiremake ipp2p IPT=1
+ ipfiremake moblock
+ ipfiremake linux-igd
+ ipfiremake ipac-ng
+ ipfiremake ipaddr
+ ipfiremake iptstate
+ ipfiremake iputils
+ ipfiremake l7-protocols
+ ipfiremake isapnptools
+# ipfiremake isdn4k-utils # What about mISDN???
+ ipfiremake hwdata
+ 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 XML-Parser
+ ipfiremake glib
+ ipfiremake dbus
+ ipfiremake hal
+ ipfiremake hwinfo
+ 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 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
}
buildinstaller() {
# Run installer scripts one by one
LOGFILE="$BASEDIR/log/_build.installer.log"
export LOGFILE
- echo -ne "`date -u '+%b %e %T'`: Stage4 installer build \n" | tee -a $LOGFILE
- if [ 'i386' = $MACHINE ]; then
- ipcopmake syslinux
- ipcopmake as86
- ipcopmake mbr
- ipcopmake uClibc
- fi
+ ipfiremake syslinux
+ ipfiremake as86
+ ipfiremake mbr
+ ipfiremake 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 libaal
+ installmake reiser4progs
+ installmake reiserfsprogs
+ installmake sysfsutils
installmake util-linux
- installmake newt
installmake pciutils
- installmake pcmcia-cs
- installmake kbd
+ installmake zlib
+ installmake wget
+ installmake libxml2
+ installmake dbus
+ installmake hal
+ installmake hwdata
+ installmake hwinfo
+ 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 images for install
+ for i in $IPFVER
+ do
+ if [ $i == "devel" ]; then
+ if [ ! -e ipfire-$VERSION.i586-devel.iso ]; then
+ ipfiremake cdrom ED=$i
+ fi
+ else
+ ipfiremake cdrom ED=$i
+ fi
+ done
+
+ # Check if there is a loop device for building in virtual environments
+ if [ -e /dev/loop0 ]; then
+ ipfiremake usb-stick
+ fi
+ ipfiremake pxe
+ mv $LFS/install/images/{*.iso,*.tgz,*.img.gz} $BASEDIR >> $LOGFILE 2>&1
- # 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
-
- 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
echo -n "###EOF###" >> $BASEDIR/packages/packages_list.txt
cd $PWD
-
}
ipfirepackages() {
touch $BASEDIR/build/install/packages/$i.empty
done
fi
- ipfiredist amavisd
+# ipfiredist amavisd
ipfiredist applejuice
ipfiredist asterisk
ipfiredist clamav
ipfiredist lame
ipfiredist libmad
ipfiredist libogg
- ipfiredist libtiff
ipfiredist libvorbis
- ipfiredist libxml2
ipfiredist mailx
ipfiredist mldonkey
ipfiredist mpeg2dec
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
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
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
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
;;
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
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
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
# 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
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
+ svn update | tee -a $PWD/log/_build.svn.update.log
+ fi
+ if [ $? -eq "0" ]; then
+ beautify message DONE
else
- echo ".Fail!"
+ 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
+ update_langs
+ svn commit
$0 svn up
+ if [ -n "$FTP_CACHE_URL" ]; then
+ $0 uploadsrc
+ fi
;;
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/ > /tmp/ftplist
+ for i in *; do
+ if [ "$i" == "toolchains" ]; then continue; fi
+ grep -q $i /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
- if [ "$?" -eq "0" ]; then
- echo -e "$i was successfully uploaded to the ftp server."
- else
- echo -e "There was an error while uploading $i to the ftp server."
+ echo -ne "$i"
+ ncftpput -u $FTP_CACHE_USER -p $FTP_CACHE_PASS $FTP_CACHE_URL $FTP_CACHE_PATH/ $i
+ if [ "$?" -ne "0" ]; then
+ 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 /tmp/ftplist
+ cd $PWD
+ exit 0
;;
upload)
case "$2" in
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
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)
;;
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" = "--background" ]; then
+ batch_script
+ exit $?
+ fi
if [ `screen -ls | grep -q ipfire` ]; then
echo "Build is already running, sorry!"
exit 1
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
"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")
esac
done
;;
+config)
+ make_config
+ ;;
+*)
+ echo "Usage: $0 {build|changelog|clean|gettoolchain|downloadsrc|shell|sync|toolchain}"
+ cat doc/make.sh-usage
+ ;;
esac