NAME="IPFire" # Software name
SNAME="ipfire" # Short name
- VERSION="1.4" # Version number
- SLOGAN="We secure your network" # Software slogan
+ 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
fi
fi
-
PWD=`pwd`
BASENAME=`basename $0`
BASEDIR=`echo $FULLPATH | sed "s/\/$BASENAME//g"`
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)" | tee -a $LOGFILE
+ 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" | tee -a $LOGFILE
+ 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" | tee -a $LOGFILE
+ echo "`date -u '+%b %e %T'`: Can't determine your architecture - $MACHINE" >> $LOGFILE
exit 1
fi
ipfiredist() {
if [ -f $BASEDIR/build/usr/src/lfs/$1 ]; then
- ls $BASEDIR/packages/$1* >& /dev/null
- if [ $? -eq 1 ]; then
+# if [ ! `ls -w1 $BASEDIR/packages/*.tar.gz | grep $1` ]; then
echo "`date -u '+%b %e %T'`: Packaging $1" | tee -a $LOGFILE
- cp -f $BASEDIR/src/scripts/make-packages.sh $BASEDIR/build/usr/local/bin
chroot $LFS /tools/bin/env -i HOME=/root \
TERM=$TERM PS1='\u:\w\$ ' \
PATH=/usr/local/bin:/bin:/usr/bin:/sbin:/usr/sbin \
if [ $? -ne 0 ]; then
exiterror "Packaging $1"
fi
- else
- echo -e "`date -u '+%b %e %T'`: Packages with name $1 already exists!" | tee -a $LOGFILE
- 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
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=ipcop SMP=installer
- ipcopmake linux LFS_PASS=ipcop SMP=1
+ 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 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=ipcop
+ ipcopmake linux LFS_PASS=ipfire
ipcopmake 3cp4218
ipcopmake amedyn
ipcopmake cxacru
ipcopmake fcdslsl
ipcopmake fcdslusb
ipcopmake fcdslslusb
- ipcopmake fcpci
- ipcopmake pulsar
- ipcopmake unicorn
+ ipcopmake fcpci
+ ipcopmake fcclassic
+ ipcopmake pulsar
+ ipcopmake unicorn
+ ipcopmake promise-sata-300-tx
fi
ipcopmake pcmcia-cs
ipcopmake python
ipcopmake libnet
ipcopmake libpng
+ ipcopmake libtiff
+ ipcopmake libjpeg
+ ipcopmake lcms
+ ipcopmake libmng
+ ipcopmake freetype
ipcopmake gd
ipcopmake popt
ipcopmake slang
ipcopmake Convert-UUlib
ipcopmake Archive-Tar
ipcopmake Archive-Zip
+ ipcopmake Text-Tabs+Wrap
+ ipcopmake Locale-Country
ipcopmake GeoIP
ipcopmake fwhits
+ ipcopmake berkeley
+ ipcopmake BerkeleyDB ## The Perl module
ipcopmake noip_updater
ipcopmake ntp
ipcopmake oinkmaster
ipcopmake setup
ipcopmake snort
#ipcopmake speedycgi
+ ipcopmake saslauthd PASS=1
+ ipcopmake openldap
ipcopmake squid
ipcopmake squid-graph
+ ipcopmake squidguard
ipcopmake tcpdump
ipcopmake traceroute
ipcopmake vlan
#ipcopmake wireless
ipcopmake libsafe
ipcopmake 3c5x9setup
- echo -ne "`date -u '+%b %e %T'`: Building ### IPFire modules ### \n" | tee -a $LOGFILE
+# 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 berkeley
- ipcopmake BerkeleyDB ## The Perl module
ipcopmake java
- ipcopmake libtiff
- ipcopmake libjpeg
+ ipcopmake bootsplash
ipcopmake libxml2
ipcopmake spandsp
ipcopmake lzo
ipcopmake xampp
ipcopmake pam
ipcopmake pammysql
- ipcopmake saslauthd PASS=1
- ipcopmake openldap
ipcopmake saslauthd PASS=2
ipcopmake xinetd
ipcopmake ghostscript
ipcopmake samba
ipcopmake sudo
ipcopmake mc
- ipcopmake pwlib
- ipcopmake openh323
+# 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 procmail
+ ipcopmake web-cyradm
ipcopmake mailx
ipcopmake clamav
ipcopmake razor
ipcopmake spamassassin
- ipcopmake amavisd
+# 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
- echo -ne "`date -u '+%b %e %T'`: Building ### MP3-Server ### \n" | tee -a $LOGFILE
+ 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 edonkeyclc
- ipcopmake sane
- ipcopmake rsync
+ 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 screen
- ipcopmake nmap
- ipcopmake htop
ipcopmake nfs
+ ipcopmake nmap
+ ipcopmake mbmon
+ ipcopmake iftop
ipcopmake ncftp
+ ipcopmake cftp
+ ipcopmake etherwake
ipcopmake ethereal
-# wget http://www.guzu.net/linux/hddtemp.db && mv hddtemp.db $BASEDIR/build/etc/hddtemp.db
-# ipcopmake hddtemp
+ ipcopmake tftp-hpa
+ ipcopmake subversion
+ ipcopmake iptraf
+ ipcopmake nagios
# ipcopmake stunnel # Ausgeschaltet, weil wir es doch nicht nutzen
}
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' \
- -ls -exec $LFS/tools/bin/strip --strip-all {} \; >> $LOGFILE 2>&1
+ -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 \
fi
done
echo "====== List of softwares used to build $NAME Version: $VERSION ======" > $BASEDIR/doc/packages-list.txt
- grep -v 'configroot$\|img$\|initrd$\|initscripts$\|installer$\|install$\|ipcop$\|setup$\|pakfire$\|stage2$\|smp$\|tools$\|tools1$\|tools2$' \
+ grep -v 'configroot$\|img$\|initrd$\|initscripts$\|installer$\|install$\|ipfire$\|setup$\|pakfire$\|stage2$\|smp$\|tools$\|tools1$\|tools2$\|^ipfire-logs' \
$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
cat $i | sed "s%^\./%#%" | sort >> $BASEDIR/log/FILES
fi
done
+ cd $BASEDIR/packages; ls -w1 *.tar.gz | awk -F ".tar.gz" '{ print $1 }' > $BASEDIR/packages/packages_list.txt
+ echo "###EOF###" >> $BASEDIR/packages/packages_list.txt
cd $PWD
}
ipfirepackages() {
+ if [ -d "$BASEDIR/packages" ]; then
+ for i in `ls $BASEDIR/packages`; do
+ touch $BASEDIR/build/install/packages/$i.empty
+ done
+ fi
+ ipfiredist amavisd
ipfiredist applejuice
ipfiredist asterisk
+ ipfiredist clamav
+ ipfiredist cups
ipfiredist cyrusimap
ipfiredist fetchmail
+ ipfiredist ffmpeg
ipfiredist gnump3d
+ ipfiredist iptraf
+ ipfiredist java
ipfiredist lame
+ ipfiredist libmad
+ ipfiredist libogg
ipfiredist libtiff
+ ipfiredist libvorbis
ipfiredist libxml2
- ipfiredist mc
+ ipfiredist mailx
+ ipfiredist mldonkey
+ ipfiredist mpeg2dec
+ ipfiredist nagios
+ ipfiredist nfs
+ ipfiredist nmap
+ ipfiredist ntop
+ ipfiredist portmap
ipfiredist postfix
- ipfiredist pwlib
- ipfiredist sane
- ipfiredist spandsp
- ipfiredist sudo
+ ipfiredist procmail
+ ipfiredist samba
+ ipfiredist sox
+ ipfiredist spamassassin
+ ipfiredist subversion
+ ipfiredist videolan
+ ipfiredist web-cyradm
ipfiredist xampp
- ipfiredist xinetd
+# ipfiredist xinetd
+ ipfiredist xvid
test -d $BASEDIR/packages || mkdir $BASEDIR/packages
- mv -f $LFS/paks/*.tar.gz $LFS/paks/*.md5 $BASEDIR/packages >> $LOGFILE 2>&1
- rm -rf $LFS/paks
- rm -rf $BASEDIR/build/tmp/*
+ mv -f $LFS/install/packages/*.{tar.gz,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)
BUILDMACHINE=`uname -m`
- PACKAGE=`ls -v -r $BASEDIR/cache/$SNAME-1.4.*-toolchain-$BUILDMACHINE.tar.gz 2> /dev/null | head -n 1`
+ PACKAGE=`ls -v -r $BASEDIR/cache/toolchains/$SNAME-$VERSION-toolchain-$BUILDMACHINE.tar.gz 2> /dev/null | head -n 1`
#only restore on a clean disk
if [ ! -f log/perl-*-tools ]; then
if [ ! -n "$PACKAGE" ]; then
echo "`date -u '+%b %e %T'`: Using installed toolchain" | tee -a $LOGFILE
prepareenv
fi
+
buildbase
buildipcop
+
+ # Setzen des IPFire Builds
+ if [ "$FIREBUILD" ]; then
+ echo "$FIREBUILD" > $BASEDIR/build/var/ipfire/firebuild
+ else
+ echo "_(OvO)_" > $BASEDIR/build/var/ipfire/firebuild
+ fi
+
buildinstaller
buildpackages
;;
rm -f /tools
fi
;;
-dist)
- echo -ne "Updating & building source package from SVN: "
- svn up > /dev/null
- svn export http://svn.ipfire.eu/svn/ipfire ipfire-source/ --force > /dev/null
- tar cfz ipfire-source-`date +'%Y-%m-%d'`-r`svn info | grep Revision | cut -c 11-`.tar.gz ipfire-source
- rm ipfire-source/ -r
- echo "Finished!"
- ;;
newpak)
# create structure for a new package
echo -e "Name of the new package: $2"
cp $BASEDIR/lfs/postfix $BASEDIR/lfs/$2
touch ROOTFILES
- touch CONFFILES
touch {,un}install.sh
## install.sh
echo '#!/bin/bash' > install.sh
buildtoolchain
BUILDMACHINE=`uname -m`
echo "`date -u '+%b %e %T'`: Create toolchain tar.gz for $BUILDMACHINE" | tee -a $LOGFILE
- cd $BASEDIR && tar -zc --exclude='log/_build.*.log' -f cache/$SNAME-$VERSION-toolchain-$BUILDMACHINE.tar.gz \
+ test -d $BASEDIR/cache/toolchains || mkdir $BASEDIR/cache/toolchains
+ cd $BASEDIR && tar -zc --exclude='log/_build.*.log' -f cache/toolchains/$SNAME-$VERSION-toolchain-$BUILDMACHINE.tar.gz \
build/{bin,etc,usr/bin,usr/local} \
build/tools/{bin,etc,*-linux-gnu,include,lib,libexec,sbin,share,var} \
log >> $LOGFILE
- md5sum cache/$SNAME-$VERSION-toolchain-$BUILDMACHINE.tar.gz \
- > cache/$SNAME-$VERSION-toolchain-$BUILDMACHINE.md5
+ md5sum cache/toolchains/$SNAME-$VERSION-toolchain-$BUILDMACHINE.tar.gz \
+ > cache/toolchains/$SNAME-$VERSION-toolchain-$BUILDMACHINE.md5
stdumount
;;
gettoolchain)
BUILDMACHINE=`uname -m`
# arbitrary name to be updated in case of new toolchain package upload
- PACKAGE=$SNAME-1.4-toolchain-$BUILDMACHINE
- URL_IPFIRE=`grep URL_IPFIRE lfs/Config | awk '{ print $3 }'`
- echo "`date -u '+%b %e %T'`: Load toolchain tar.gz for $BUILDMACHINE" | tee -a $LOGFILE
- cd $BASEDIR/cache
- wget $URL_IPFIRE/toolchains/$PACKAGE.tar.gz $URL_IPFIRE/toolchains/$PACKAGE.md5
- if [ $? -ne 0 ]; then
- echo "`date -u '+%b %e %T'`: error downloading toolchain for $BUILDMACHINE machine" | tee -a $LOGFILE
- else
- if [ "`md5sum $PACKAGE.tar.gz | awk '{print $1}'`" = "`cat $PACKAGE.md5 | awk '{print $1}'`" ]; then
- echo "`date -u '+%b %e %T'`: toolchain md5 ok" | tee -a $LOGFILE
- echo "`date -u '+%b %e %T'`: Uncompressing toolchain" | tee -a $LOGFILE
- cd $BASEDIR && tar xfz cache/$PACKAGE.tar.gz -C .
- rm -vf $BASEDIR/cache/$PACKAGE.{tar.gz,md5}
+ PACKAGE=$SNAME-$VERSION-toolchain-$BUILDMACHINE
+ if [ ! -f $BASEDIR/cache/toolchains/$PACKAGE.tar.gz ]; then
+ URL_IPFIRE=`grep URL_IPFIRE lfs/Config | awk '{ print $3 }'`
+ test -d $BASEDIR/cache/toolchains || mkdir $BASEDIR/cache/toolchains
+ echo "`date -u '+%b %e %T'`: Load toolchain tar.gz for $BUILDMACHINE" | tee -a $LOGFILE
+ cd $BASEDIR/cache/toolchains
+ wget $URL_IPFIRE/toolchains/$PACKAGE.tar.gz $URL_IPFIRE/toolchains/$PACKAGE.md5 >& /dev/null
+ if [ $? -ne 0 ]; then
+ echo "`date -u '+%b %e %T'`: error downloading toolchain for $BUILDMACHINE machine" | tee -a $LOGFILE
else
- exiterror "$PACKAGE.md5 did not match, check downloaded package"
+ if [ "`md5sum $PACKAGE.tar.gz | awk '{print $1}'`" = "`cat $PACKAGE.md5 | awk '{print $1}'`" ]; then
+ echo "`date -u '+%b %e %T'`: toolchain md5 ok" | tee -a $LOGFILE
+ else
+ exiterror "$PACKAGE.md5 did not match, check downloaded package"
+ fi
fi
+ else
+ echo "Toolchain is already downloaded. Exiting..."
fi
;;
-paks)
+sources-iso)
prepareenv
- buildpackages
- # ipfirepackages
- ;;
-update)
- echo "Load the latest source-files:"
- svn update
- ;;
-commit)
- echo "Upload the changed files:"
- svn commit
- svn up > /dev/null
+ echo "`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
+ stdumount
;;
-make)
- echo "Do a complete compile:"
- ./make.sh prefetch && ./make.sh gettoolchain && ./make.sh build
+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!"
+ else
+ echo ".Fail!"
+ exit 1
+ fi
+ echo -n "Write the svn info to a file..."
+ svn info > $PWD/svn_status
+ if [ "$?" -eq "0" ]; then
+ echo ".Done!"
+ else
+ echo ".Fail!"
+ exit 1
+ fi
+ chmod 755 $0
+ exit 0
+ ;;
+ commit|ci)
+ clear
+ if [ -e /sbin/yast ]; then
+ $0 changelog
+ 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
+ $0 svn up
+ ;;
+ 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
+ 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
+ fi
+ echo -n "Cleanup..."
+ rm ipfire-source/ -r
+ if [ "$?" -eq "0" ]; then
+ echo ".Done!"
+ else
+ echo ".Fail!"
+ exit 1
+ fi
+ ;;
+ diff)
+ echo -ne "Make a local diff to last svn revision..."
+ svn diff > ipfire-diff-`date +'%Y-%m-%d-%H:%M'`-r`svn info | grep Revision | cut -c 11-`.diff
+ if [ "$?" -eq "0" ]; then
+ echo ".Done!"
+ else
+ echo ".Fail!"
+ exit 1
+ fi
+ echo "Diff was successfully saved to ipfire-diff-`date +'%Y-%m-%d-%H:%M'`-r`svn info | grep Revision | cut -c 11-`.diff"
+ ;;
+ esac
;;
-diff)
- echo -ne "Make a local diff to last SVN revision: "
- svn diff > ipfire-diff-`date +'%Y-%m-%d-%H:%M'`-r`svn info | grep Revision | cut -c 11-`.diff
- echo "Finished!"
- echo "Diff was successfully saved to ipfire-diff-`date +'%Y-%m-%d-%H:%M'`-r`svn info | grep Revision | cut -c 11-`.diff"
+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:"
- echo -ne "Password for mirror.ipfire.org: "; read PASS
- rm -f doc/packages-to-remove-from-ftp
- ncftpls -u web3 -p $PASS ftp://mirror.ipfire.org/html/source-packages/source/ > ftplist
+ 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
if [ "$?" -ne "0" ]; then
- ncftpput -u web3 -p $PASS mirror.ipfire.org /html/source-packages/source cache/$i
+ 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
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
+# 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
;;
-pub)
- echo -e "Upload the ISO to the beta-mirror!"
- echo -ne "Password for mirror.ipfire.org: "; read PASS
-
- ncftpls -u web3 -p $PASS ftp://mirror.ipfire.org/html/source-packages/beta/ | grep `svn info | grep Revision | cut -c 11-`
- if [ "$?" -eq "1" ]; then
- cp $BASEDIR/ipfire-install-1.4.i386.iso $BASEDIR/ipfire-install-1.4.i386-r`svn info | grep Revision | cut -c 11-`.iso
- md5sum ipfire-install-1.4.i386-r`svn info | grep Revision | cut -c 11-`.iso > ipfire-install-1.4.i386-r`svn info | grep Revision | cut -c 11-`.iso.md5
- ncftpput -u web3 -p $PASS mirror.ipfire.org /html/source-packages/beta/ ipfire-install-1.4.i386-r`svn info | grep Revision | cut -c 11-`.iso
- ncftpput -u web3 -p $PASS mirror.ipfire.org /html/source-packages/beta/ ipfire-install-1.4.i386-r`svn info | grep Revision | cut -c 11-`.iso.md5
- if [ "$?" -eq "0" ]; then
- echo -e "The ISO of Revision `svn info | grep Revision | cut -c 11-` was successfully uploaded to the ftp server."
- else
- echo -e "There was an error while uploading the ISO to the ftp server."
- fi
+upload)
+ case "$2" in
+ iso)
+ echo -e "Uploading the iso to $IPFIRE_FTP_URL_EXT."
+ cat <<EOF > .ftp-commands
+mkdir $IPFIRE_FTP_PATH_EXT
+ls -lah
+quit
+EOF
+ ncftp -u $IPFIRE_FTP_USER_EXT -p $IPFIRE_FTP_PASS_EXT $IPFIRE_FTP_URL_EXT < .ftp-commands
+ rm -f .ftp-commands
+ md5sum ipfire-install-$VERSION.i386.iso > ipfire-install-$VERSION.i386.iso.md5
+ ncftpput -u $IPFIRE_FTP_USER_EXT -p $IPFIRE_FTP_PASS_EXT $IPFIRE_FTP_URL_EXT $IPFIRE_FTP_PATH_EXT/ ipfire-install-$VERSION.i386.iso
+ ncftpput -u $IPFIRE_FTP_USER_EXT -p $IPFIRE_FTP_PASS_EXT $IPFIRE_FTP_URL_EXT $IPFIRE_FTP_PATH_EXT/ ipfire-install-$VERSION.i386.iso.md5
+ ncftpput -u $IPFIRE_FTP_USER_EXT -p $IPFIRE_FTP_PASS_EXT $IPFIRE_FTP_URL_EXT $IPFIRE_FTP_PATH_EXT/ ipfire-source-r$SVN_REVISION.tar.gz
+ ncftpput -u $IPFIRE_FTP_USER_EXT -p $IPFIRE_FTP_PASS_EXT $IPFIRE_FTP_URL_EXT $IPFIRE_FTP_PATH_EXT/ svn_status
+ if [ "$?" -eq "0" ]; then
+ echo -e "The iso of Revision $SVN_REVISION was successfully uploaded to $IPFIRE_FTP_URL_EXT$IPFIRE_FTP_PATH_EXT/."
+ else
+ echo -e "There was an error while uploading the iso to the ftp server."
+ exit 1
+ fi
+ if [ "$3" = "--with-sources-cd" ]; then
+ ncftpput -u $IPFIRE_FTP_USER_EXT -p $IPFIRE_FTP_PASS_EXT $IPFIRE_FTP_URL_EXT $IPFIRE_FTP_PATH_EXT/ ipfire-sources-cd-$VERSION.$MACHINE.iso
+ fi
+ ;;
+ paks)
+ cat <<EOF > .ftp-commands
+mkdir $IPFIRE_FTP_PATH_PAK
+ls -lah
+quit
+EOF
+ ncftp -u $IPFIRE_FTP_USER_PAK -p $IPFIRE_FTP_PASS_PAK $IPFIRE_FTP_URL_PAK < .ftp-commands
+ rm -f .ftp-commands
+ ncftpput -z -u $IPFIRE_FTP_USER_PAK -p $IPFIRE_FTP_PASS_PAK $IPFIRE_FTP_URL_PAK $IPFIRE_FTP_PATH_PAK/ packages/*
+ if [ "$?" -eq "0" ]; then
+ echo -e "The packages were successfully uploaded to $IPFIRE_FTP_URL_PAK$IPFIRE_FTP_PATH_PAK/."
+ else
+ echo -e "There was an error while uploading the packages to the ftp server."
+ exit 1
+ fi
+ ;;
+ esac
+ ;;
+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 [ `screen -ls | grep -q ipfire` ]; then
+ echo "Build is already running, sorry!"
+ exit 1
else
- echo -e "File with name ipfire-install-1.4.i386-r`svn info | grep Revision | cut -c 11-`.iso already exists on the ftp server!"
+ if [ "$2" = "--rebuild" ]; then
+ export IPFIRE_REBUILD=1
+ echo "REBUILD!"
+ 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
+ exit 0
fi
- rm -f ipfire-install-1.4.i386-r`svn info | grep Revision | cut -c 11-`.iso{,.md5}
;;
*)
- echo "Usage: $0 {build|changelog|check|checkclean|clean|commit|diff|dist|gettoolchain|make|newpak|prefetch|pub|shell|sync|toolchain|update}"
- cat doc/make.sh-usage
- exit 1
+ clear
+ svn info
+ select name in "Exit" "IPFIRE: Prefetch" "IPFIRE: Build (silent)" "IPFIRE: Watch Build" "IPFIRE: Batch" "IPFIRE: Clean" "SVN: Commit" "SVN: Update" "SVN: Status" "SVN: Diff" "LOG: Tail" "Help"
+ do
+ case $name in
+ "IPFIRE: Prefetch")
+ $0 prefetch
+ ;;
+ "IPFIRE: Build (silent)")
+ $0 build-silent
+ ;;
+ "IPFIRE: Watch Build")
+ 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
+ ;;
+ "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}"
+ cat doc/make.sh-usage
+ ;;
+ "LOG: Tail")
+ tail -f log/_*
+ ;;
+ "Exit")
+ break
+ ;;
+ esac
+ done
;;
esac