X-Git-Url: http://git.ipfire.org/?p=ipfire-2.x.git;a=blobdiff_plain;f=make.sh;h=2b94e94de656f64f4c0001d87a34f658dafbc480;hp=c527cf1a03c146fcb6d6a7f8c9fad6406a54bd88;hb=e67a57fed9b0d0a6582dd0a9f1b681b4fc1eae13;hpb=98d413ac7bcf56fcf950f1f5815bf5402577ef01 diff --git a/make.sh b/make.sh index c527cf1a03..2b94e94de6 100644 --- a/make.sh +++ b/make.sh @@ -26,11 +26,10 @@ NAME="IPFire" # Software name SNAME="ipfire" # Short name VERSION="1.4" # Version number -# PREVIOUSTAG=IPCOP_v1_4_10_FINAL SLOGAN="We secure your network" # Software slogan CONFIG_ROOT=/var/ipfire # Configuration rootdir NICE=10 - MAX_RETRIES=3 # prefetch/check loop + MAX_RETRIES=3 # prefetch/check loop KVER=`grep --max-count=1 VER lfs/linux | awk '{ print $3 }'` MACHINE=`uname -m` @@ -336,6 +335,8 @@ ipcopmake() { ipfiredist() { if [ -f $BASEDIR/build/usr/src/lfs/$1 ]; then + ls $BASEDIR/packages/$1* >& /dev/null + if [ $? -eq 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 \ @@ -353,11 +354,12 @@ ipfiredist() { 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 exiterror "No such file or directory: $BASEDIR/build/usr/src/lfs/$1" fi - test -d $BASEDIR/packages || mkdir $BASEDIR/packages - mv -f $BASEDIR/build/paks/* $BASEDIR/packages/ return 0 } @@ -505,8 +507,8 @@ buildbase() { } buildipcop() { - # Run IPCop make scripts one by one - LOGFILE="$BASEDIR/log/_build.ipcop.log" + # Run IPFire make scripts one by one + LOGFILE="$BASEDIR/log/_build.ipfire.log" export LOGFILE echo -ne "`date -u '+%b %e %T'`: Stage3 $NAME build \n" | tee -a $LOGFILE @@ -540,6 +542,7 @@ buildipcop() { ipcopmake fcdslsl SMP=1 ipcopmake fcdslusb SMP=1 ipcopmake fcdslslusb SMP=1 + ipcopmake fcpci SMP=1 ipcopmake pulsar SMP=1 ipcopmake unicorn SMP=1 fi @@ -559,7 +562,8 @@ buildipcop() { ipcopmake fcdsl2 ipcopmake fcdslsl ipcopmake fcdslusb - ipcopmake fcdslslusb + ipcopmake fcdslslusb + ipcopmake fcpci ipcopmake pulsar ipcopmake unicorn fi @@ -601,6 +605,7 @@ buildipcop() { ipcopmake iproute2 ipcopmake iptstate ipcopmake iputils + ipcopmake l7-protocols ipcopmake isapnptools ipcopmake isdn4k-utils ipcopmake kudzu @@ -623,6 +628,17 @@ buildipcop() { 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 GeoIP + ipcopmake fwhits ipcopmake noip_updater ipcopmake ntp ipcopmake oinkmaster @@ -639,16 +655,22 @@ buildipcop() { ipcopmake tcpdump ipcopmake traceroute ipcopmake vlan - ipcopmake wireless + #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 libxml2 ipcopmake spandsp ipcopmake lzo + ipcopmake openvpn ipcopmake pkg-config ipcopmake glib ipcopmake xampp @@ -657,23 +679,49 @@ buildipcop() { ipcopmake saslauthd PASS=1 ipcopmake openldap 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 xinetd ipcopmake wget ipcopmake bridge-utils + echo -ne "`date -u '+%b %e %T'`: Building ### Mailserver ### \n" | tee -a $LOGFILE ipcopmake postfix + ipcopmake fetchmail + ipcopmake cyrusimap + ipcopmake procmail + 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 lpd - ipcopmake openvpn ipcopmake asterisk + echo -ne "`date -u '+%b %e %T'`: Building ### MP3-Server ### \n" | tee -a $LOGFILE + ipcopmake lame + ipcopmake gnump3d + echo -ne "`date -u '+%b %e %T'`: Building ### P2P-Clients ### \n" | tee -a $LOGFILE + ipcopmake applejuice ipcopmake edonkeyclc + ipcopmake sane + ipcopmake rsync + ipcopmake tcpwrapper + ipcopmake portmap + ipcopmake screen + ipcopmake nmap + ipcopmake htop + ipcopmake nfs + ipcopmake ncftp + ipcopmake ethereal # wget http://www.guzu.net/linux/hddtemp.db && mv hddtemp.db $BASEDIR/build/etc/hddtemp.db # ipcopmake hddtemp -# ipcopmake stunnel # Ausgeschaltet, weil wir es doch nicht nutzen +# ipcopmake stunnel # Ausgeschaltet, weil wir es doch nicht nutzen } buildinstaller() { @@ -736,13 +784,6 @@ buildpackages() { rm -f $LFS/license.txt >> $LOGFILE 2>&1 cd $BASEDIR fi - -# Create update for this version -# echo "`date -u '+%b %e %T'`: Building update $VERSION tgz" | tee -a $LOGFILE -# tar -cz -C $BASEDIR/build --files-from=$BASEDIR/updates/$VERSION/ROOTFILES.$MACHINE-$VERSION -f $BASEDIR/updates/$VERSION/patch.tar.gz --exclude='#*'; -# chmod 755 $BASEDIR/updates/$VERSION/setup -# tar -cz -C $BASEDIR/updates/$VERSION -f $LFS/install/images/$SNAME-update-$VERSION.$MACHINE.tgz patch.tar.gz setup information -# rm -f $LFS/var/run/{need-depmod-$KVER,need-depmod-$KVER-smp} # Generating list of packages used echo "`date -u '+%b %e %T'`: Generating packages list from logs" | tee -a $LOGFILE @@ -753,27 +794,17 @@ buildpackages() { 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$\|stage2$\|smp$\|tools$\|tools1$\|tools2$' \ + grep -v 'configroot$\|img$\|initrd$\|initscripts$\|installer$\|install$\|ipcop$\|setup$\|pakfire$\|stage2$\|smp$\|tools$\|tools1$\|tools2$' \ $BASEDIR/doc/packages-list | sort >> $BASEDIR/doc/packages-list.txt rm -f $BASEDIR/doc/packages-list # packages-list.txt is ready to be displayed for wiki page # Create ISO for CDRom and USB-superfloppy -# ipcopmake cdrom -# cp $LFS/install/images/{*.iso,*.tgz} $BASEDIR >> $LOGFILE 2>&1 + ipcopmake cdrom + rm -f $LFS/install/images/*usb* + cp $LFS/install/images/{*.iso,*.tgz} $BASEDIR >> $LOGFILE 2>&1 - # Build IPFire packages - ipfiredist asterisk - ipfiredist libtiff - ipfiredist libxml2 - ipfiredist mc - ipfiredist postfix - ipfiredist pwlib - ipfiredist spandsp - ipfiredist sudo - ipfiredist xinetd - test -d $BASEDIR/packages || mkdir $BASEDIR/packages - cp -f $LFS/paks/* $BASEDIR/packages >> $LOGFILE 2>&1 + ipfirepackages # Cleanup stdumount @@ -795,6 +826,29 @@ buildpackages() { } +ipfirepackages() { + ipfiredist applejuice + ipfiredist asterisk + ipfiredist cyrusimap + ipfiredist fetchmail + ipfiredist gnump3d + ipfiredist lame + ipfiredist libtiff + ipfiredist libxml2 + ipfiredist mc + ipfiredist postfix + ipfiredist pwlib + ipfiredist sane + ipfiredist spandsp + ipfiredist sudo + ipfiredist xampp + ipfiredist xinetd + 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/* +} + # See what we're supposed to do case "$1" in build) @@ -832,20 +886,9 @@ shell) entershell ;; changelog) - echo "Building doc/Changelog from CVS" - # cv2cl script come from http://www.red-bean.com/cvs2cl/ - if [ ! -s $BASEDIR/doc/CVS/Tag ]; then - BRANCHOPTS="" - else - BRANCH=`cat $BASEDIR/doc/CVS/Tag` - BRANCH=${BRANCH:1} - BRANCHOPTS="--follow-only $BRANCH" - fi - - $BASEDIR/tools/cvs2cl.pl --gmt --show-dead $BRANCHOPTS -f $BASEDIR/doc/ChangeLog - rm -f $BASEDIR/doc/ChangeLog.bak - echo - echo "Commit the change now to update CVS" + 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" @@ -893,54 +936,19 @@ clean) done rm -rf $BASEDIR/build rm -rf $BASEDIR/cdrom + rm -rf $BASEDIR/packages rm -rf $BASEDIR/log - rm -f $BASEDIR/updates/$VERSION/patch.tar.gz; if [ -h /tools ]; then rm -f /tools fi ;; dist) - echo "Building source package from CVS, list of changed files, MD5 of release files" - if [ ! -s $BASEDIR/doc/CVS/Tag ]; then - BRANCH="" - BRANCHOPTS="-D `date +'%Y-%m-%d'`" - else - BRANCH=`cat $BASEDIR/doc/CVS/Tag` - BRANCH=${BRANCH:1} - BRANCHOPTS="-r $BRANCH" - fi - - rm -rf $BASEDIR/build/tmp/$SNAME-$VERSION $BASEDIR/doc/release.txt - cd $BASEDIR/build/tmp - # build sources tgz - echo "Export tree $BRANCH $SNAME-$VERSION" - cvs -z3 -d `cat $BASEDIR/CVS/Root` export $BRANCHOPTS ipcop - if [ $? -eq 0 ]; then - mv ipcop $SNAME-$VERSION - tar cfz $BASEDIR/$SNAME-sources-$VERSION.tgz $SNAME-$VERSION - cd $BASEDIR - - if [ ! -d $BASEDIR/build/tmp/$PREVIOUSTAG ]; then - # export previous version to be compared with actual, this help to check wich files need to go in update - cd $BASEDIR/build/tmp - echo "Export tree $PREVIOUSTAG" - cvs -z3 -d `cat $BASEDIR/CVS/Root` export -r $PREVIOUSTAG ipcop - mv ipcop $PREVIOUSTAG - fi - if [ -d $BASEDIR/build/tmp/$PREVIOUSTAG -o -d $BASEDIR/build/tmp/$SNAME-$VERSION ]; then - cd $BASEDIR/build/tmp - echo "diff $PREVIOUSTAG <> $BRANCH $SNAME-$VERSION >doc/updated-sources.txt" - diff -rq $PREVIOUSTAG $SNAME-$VERSION > $BASEDIR/doc/updated-sources.txt - mv $BASEDIR/doc/updated-sources.txt $BASEDIR/doc/updated-sources.bak - sed -e "s+Files $PREVIOUSTAG\/++" \ - -e "s+ and .*$++" \ - -e "s+src/rc.d+etc/rc.d+" \ - -e "s+^langs/+var/ipcop/langs/+" \ - -e "s+html/cgi-bin+home/httpd/cgi-bin+" $BASEDIR/doc/updated-sources.bak \ - > $BASEDIR/doc/updated-sources.txt - rm -f $BASEDIR/doc/updated-sources.bak - fi - fi + 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 @@ -1038,40 +1046,6 @@ prefetch) fi cd - ;; -rootfiles) - PREVIOUSVERSION=`echo $PREVIOUSTAG | sed -e 's/IPCOP_v//' -e 's/_FINAL//' -e 's/_/\./g'` - # make md5 list of actual build - # some packages include a timestamp (kernel/perl/python/vim and more), so md5 vary at each build - # anyway, it is sometime usable after a patch or a minor upgrade to know wich files include in update - if [ ! -f "$BASEDIR/build/install/cdrom/$SNAME-$VERSION.tgz" ]; then - echo "need cdrom be build to read include files list, use ./make.sh build before." - else - tar tzf $BASEDIR/build/install/cdrom/$SNAME-$VERSION.tgz > $BASEDIR/updates/$VERSION/FILES.tmp - cd $BASEDIR/build - rm -f $BASEDIR/updates/$VERSION/FILES-$MACHINE-$VERSION.md5 - for line in `cat $BASEDIR/updates/$VERSION/FILES.tmp`; do - if [ -f "$line" -a ! -L "$line" ]; then - md5sum "$line" >> $BASEDIR/updates/$VERSION/FILES-$MACHINE-$VERSION.md5 - fi - done - diff $BASEDIR/updates/$PREVIOUSVERSION/FILES-$MACHINE-$PREVIOUSVERSION.md5 \ - $BASEDIR/updates/$VERSION/FILES-$MACHINE-$VERSION.md5 \ - > $BASEDIR/updates/$VERSION/FILES-$MACHINE.diff - awk '$1==">" {print $3}' $BASEDIR/updates/$VERSION/FILES-$MACHINE.diff \ - > $BASEDIR/updates/$VERSION/ROOTFILES.add.$MACHINE - awk '$1=="<" {print $3}' $BASEDIR/updates/$VERSION/FILES-$MACHINE.diff \ - > $BASEDIR/updates/$VERSION/ROOTFILES.remove.$MACHINE.tmp - rm -f $BASEDIR/updates/$VERSION/ROOTFILES.remove.$MACHINE - for line in `cat $BASEDIR/updates/$VERSION/ROOTFILES.remove.$MACHINE.tmp`; do - # a file is only removed when not in add file - if ( ! grep -q "^$line$" $BASEDIR/updates/$VERSION/ROOTFILES.add.$MACHINE ); then - echo $line >> $BASEDIR/updates/$VERSION/ROOTFILES.remove.$MACHINE - fi - done - rm -f $BASEDIR/updates/$VERSION/{FILES.tmp,FILES-*.diff,ROOTFILES.remove.*.tmp} - fi - exit 0 - ;; toolchain) prepareenv buildtoolchain @@ -1092,25 +1066,90 @@ gettoolchain) 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 -c $URL_IPFIRE/toolchains/$PACKAGE.tar.gz $URL_IPFIRE/toolchains/$PACKAGE.md5 + 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 xvfz cache/$PACKAGE.tar.gz -C . + cd $BASEDIR && tar xfz cache/$PACKAGE.tar.gz -C . + rm -vf $BASEDIR/cache/$PACKAGE.{tar.gz,md5} else exiterror "$PACKAGE.md5 did not match, check downloaded package" fi fi ;; +paks) + prepareenv + buildpackages + # ipfirepackages + ;; update) echo "Load the latest source-files:" svn update ;; +commit) + echo "Upload the changed files:" + svn commit + svn up > /dev/null + ;; +make) + echo "Do a complete compile:" + ./make.sh prefetch && ./make.sh gettoolchain && ./make.sh build + ;; +diff) + echo -ne "Make a local diff to last SVN revision: " + svn diff > ipfire-diff-`date +'%Y-%m-%d-%H:%M'`-r`svn info | grep Revision | cut -c 11-`.diff + echo "Finished!" + echo "Diff was successfully saved to ipfire-diff-`date +'%Y-%m-%d-%H:%M'`-r`svn info | grep Revision | cut -c 11-`.diff" + ;; +sync) + echo -e "Syncing Cache to FTP:" + 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 + 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 + 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." + 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 + ;; +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 + else + echo -e "File with name ipfire-install-1.4.i386-r`svn info | grep Revision | cut -c 11-`.iso already exists on the ftp server!" + fi + rm -f ipfire-install-1.4.i386-r`svn info | grep Revision | cut -c 11-`.iso{,.md5} + ;; *) - echo "Usage: $0 {build|changelog|check|checkclean|clean|dist|gettoolchain|newpak|prefetch|rootfiles|shell|toolchain|update}" + 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 ;;