NAME="IPFire" # Software name
SNAME="ipfire" # Short name
-VERSION="2.0" # Version number
-SLOGAN="www.ipfire.eu" # Software slogan
+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
MACHINE=`uname -m`
SVN_REVISION=`svn info | grep Revision | cut -c 11-`
-IPFVER="full" # Which version should be compiled? (full|light|voice)
+IPFVER="full" # Which versions should be compiled? (full|light|voice|devel)
# Set an information about the build number
if [ -e ./.svn ]; then
# Setup environment
set +h
LC_ALL=POSIX
- MAKETUNING="-j8"
+ MAKETUNING="-j4"
export LFS LC_ALL CFLAGS CXXFLAGS MAKETUNING
unset CC CXX CPP LD_LIBRARY_PATH LD_PRELOAD
lfsmake2 bzip2
lfsmake2 diffutils
lfsmake2 e2fsprogs
+ lfsmake2 ed
lfsmake2 file
lfsmake2 findutils
lfsmake2 flex
lfsmake2 man
lfsmake2 mktemp
lfsmake2 modutils
+ lfsmake2 net-tools
lfsmake2 patch
lfsmake2 psmisc
lfsmake2 shadow
buildipfire() {
LOGFILE="$BASEDIR/log/_build.ipfire.log"
export LOGFILE
- ipfiremake inetutils
- ipfiremake net-tools
- ipfiremake ed
ipfiremake configroot
ipfiremake dhcp
ipfiremake dhcpcd
ipfiremake libusb
ipfiremake libpcap
-# Temporary disabled.
-# ipfiremake linux-atm
+ ipfiremake linux-atm
ipfiremake ppp
ipfiremake rp-pppoe
ipfiremake unzip
-# ipfiremake linux PASS=I # Can we remove the installer kernel?
- ipfiremake linux PASS=S
-# ipfiremake 3cp4218 PASS=SMP
-# ipfiremake amedyn PASS=SMP
-# ipfiremake cxacru PASS=SMP
-# ipfiremake eagle PASS=SMP
-# ipfiremake cnx_pci PASS=SMP
-# ipfiremake fcdsl PASS=SMP
-# ipfiremake fcdsl2 PASS=SMP
-# ipfiremake fcdslsl PASS=SMP
-# ipfiremake fcdslusb PASS=SMP
-# ipfiremake fcdslslusb PASS=SMP
-# ipfiremake fcpci PASS=SMP
-# ipfiremake fcclassic PASS=SMP
-# ipfiremake pulsar PASS=SMP
-# ipfiremake unicorn PASS=SMP
-# ipfiremake promise-sata-300-tx PASS=SMP
- ipfiremake zaptel PASS=S
+ 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 3cp4218
-# ipfiremake amedyn
-# ipfiremake cxacru
-# ipfiremake eciadsl
-# ipfiremake eagle
-# ipfiremake speedtouch
-# ipfiremake cnx_pci
-# ipfiremake fcdsl
-# ipfiremake fcdsl2
-# ipfiremake fcdslsl
-# ipfiremake fcdslusb
-# ipfiremake fcdslslusb
-# ipfiremake fcpci
-# ipfiremake fcclassic
-# ipfiremake pulsar
-# ipfiremake unicorn
+ ipfiremake ipp2p
+ ipfiremake fcdsl
+ ipfiremake fcdsl2
+ ipfiremake fcdslsl
+ ipfiremake fcdslusb
+ ipfiremake fcdslslusb
+ ipfiremake fcpci
# ipfiremake promise-sata-300-tx
ipfiremake zaptel
-# ipfiremake pcmciautils
+ ipfiremake fuse
+ ipfiremake pkg-config
ipfiremake expat
ipfiremake gdbm
ipfiremake gmp
ipfiremake mysql
ipfiremake cyrus-sasl
ipfiremake openldap
-# ipfiremake cyrus-sasl PASS=L # Doesn't work yet. Thereby there's the question: Do we really need this?
ipfiremake apache2
ipfiremake php
- ipfiremake subversion
- ipfiremake apache2 PASS=C
+ ipfiremake apache2 PASS=C
ipfiremake arping
ipfiremake beep
ipfiremake bind
ipfiremake cdrtools
ipfiremake dnsmasq
ipfiremake dosfstools
+ ipfiremake reiserfsprogs
+ ipfiremake squashfstools
+ ipfiremake ntfs-3g
ipfiremake ethtool
ipfiremake ez-ipupdate
ipfiremake fcron
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 # ERROR :(
+ ipfiremake isapnptools
# ipfiremake isdn4k-utils # What about mISDN???
-# ipfiremake kudzu # ERROR :(
+ ipfiremake kudzu
ipfiremake logrotate
ipfiremake logwatch
- ipfiremake mingetty
ipfiremake misc-progs
ipfiremake mtools
ipfiremake nano
ipfiremake nash
ipfiremake nasm
-### The Perl Modules have to be updated! I will skip this now!
ipfiremake URI
ipfiremake HTML-Tagset
ipfiremake HTML-Parser
ipfiremake Text-Tabs+Wrap
ipfiremake Locale-Country
ipfiremake GeoIP
-###
ipfiremake fwhits
ipfiremake noip_updater
ipfiremake ntp
ipfiremake squid
ipfiremake squid-graph
ipfiremake squidguard
-# ipfiremake tcpdump
+ ipfiremake tcpdump
ipfiremake traceroute
ipfiremake vlan
ipfiremake wireless
ipfiremake libsafe
ipfiremake 3c5x9setup
ipfiremake pakfire
- ipfiremake startscripts
ipfiremake java
ipfiremake bootsplash
ipfiremake spandsp
ipfiremake lzo
ipfiremake openvpn
- ipfiremake pkg-config
ipfiremake glib
ipfiremake pammysql
ipfiremake xinetd
LOGFILE="$BASEDIR/log/_build.installer.log"
export LOGFILE
ipfiremake syslinux
- ipfiremake as86
- ipfiremake mbr
- ipfiremake uClibc
+ ipfiremake memtest
+ installmake linux-libc-header
+ installmake binutils
+ ipfiremake uClibc PASS=1
+ ipfiremake gcc INST=1
+ installmake uClibc PASS=2
+ installmake gcc INST=2
+ installmake uClibc PASS=3
installmake busybox
+ installmake udev
+ installmake slang
+ installmake newt
+ installmake gettext
+ installmake kbd
+ installmake popt
installmake sysvinit
- installmake e2fsprogs
installmake misc-progs
- installmake slang
+ installmake e2fsprogs
+ installmake reiserfsprogs
+ installmake sysfsutils
installmake util-linux
- installmake newt
installmake pciutils
- installmake pcmcia-cs
- installmake kbd
+ installmake kudzu
installmake installer
- installmake scsi.img
- installmake driver.img
installmake initrd
- installmake boot.img
}
buildpackages() {
LOGFILE="$BASEDIR/log/_build.packages.log"
export LOGFILE
echo "... see detailed log in _build.*.log files" >> $LOGFILE
- echo -ne "`date -u '+%b %e %T'`: Stage5 packages build \n" | tee -a $LOGFILE
- # Strip files
- echo "`date -u '+%b %e %T'`: Stripping files" | tee -a $LOGFILE
- find $LFS/lib $LFS/usr/lib $LFS/usr/share/rrdtool-* $LFS/install ! -type l \( -name '*.so' -o -name '*.so[\.0-9]*' \) \
- ! -name 'libc.so' ! -name 'libpthread.so' ! -name 'libcrypto.so.0.9.7.sha1' \
- -exec $LFS/tools/bin/strip --strip-all {} \; >> $LOGFILE 2>&1
- # add -ls before -exec if you want to verify what files are stripped
- find $LFS/{,s}bin $LFS/usr/{,s}bin $LFS/usr/local/{,s}bin ! -type l \
- -exec file {} \; | grep " ELF " | cut -f1 -d ':' | xargs $LFS/tools/bin/strip --strip-all >> $LOGFILE 2>&1
- # there add -v to strip to verify
-
- if [ 'i386' = $MACHINE ]; then
- # Create fcdsl packages
- echo "`date -u '+%b %e %T'`: Building fcdsl tgz" | tee -a $LOGFILE
- cp $LFS/install/images/fcdsl/license.txt $LFS >> $LOGFILE 2>&1
- touch $LFS/var/run/{need-depmod-$KVER,need-depmod-$KVER-smp}
- cd $LFS && tar cvfz $LFS/install/images/$SNAME-fcdsl-$VERSION.$MACHINE.tgz \
- lib/modules/$KVER/misc/fcdsl*.o.gz \
- lib/modules/$KVER-smp/misc/fcdsl*.o.gz \
- usr/lib/isdn/{fds?base.bin,fd?ubase.frm} \
- etc/fcdsl/fcdsl*.conf \
- etc/drdsl/{drdsl,drdsl.ini} \
- license.txt \
- var/run/{need-depmod-$KVER,need-depmod-$KVER-smp} >> $LOGFILE 2>&1
- rm -f $LFS/license.txt >> $LOGFILE 2>&1
- cd $BASEDIR
- fi
+ installmake strip
# Generating list of packages used
- echo "`date -u '+%b %e %T'`: Generating packages list from logs" | tee -a $LOGFILE
+ echo -n "Generating packages list from logs" | tee -a $LOGFILE
rm -f $BASEDIR/doc/packages-list
for i in `ls -1tr $BASEDIR/log/[^_]*`; do
if [ "$i" != "$BASEDIR/log/FILES" -a -n $i ]; then
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$\|.tgz$\|-config$' \
+ grep -v 'configroot$\|img$\|initrd$\|initscripts$\|installer$\|install$\|setup$\|pakfire$\|stage2$\|smp$\|tools$\|tools1$\|tools2$\|.tgz$\|-config$\|_missing_rootfile$' \
$BASEDIR/doc/packages-list | sort >> $BASEDIR/doc/packages-list.txt
rm -f $BASEDIR/doc/packages-list
# packages-list.txt is ready to be displayed for wiki page
+ beautify message DONE
- # Create ISO for CDROM
- ipfiremake cdrom
- rm -f $LFS/install/images/*usb*
- cp $LFS/install/images/{*.iso,*.tgz} $BASEDIR >> $LOGFILE 2>&1
+ # Create images for install
+ for i in $IPFVER
+ do
+ if [ $i == "devel" ]; then
+ if [ ! -e ipfire-$VERSION.i586-devel.iso ]; then
+ ipfiremake cdrom ED=$i
+ fi
+ else
+ ipfiremake cdrom ED=$i
+ fi
+ done
+ ipfiremake pxe
+ cp -f $LFS/install/images/{*.iso,*.tgz} $BASEDIR >> $LOGFILE 2>&1
- ipfirepackages
+# ipfirepackages
# Cleanup
stdumount
rm -rf $BASEDIR/build/tmp/*
# Generating total list of files
- echo "`date -u '+%b %e %T'`: Generating files list from logs" | tee -a $LOGFILE
+ echo "Generating files list from logs" | tee -a $LOGFILE
rm -f $BASEDIR/log/FILES
for i in `ls -1tr $BASEDIR/log/[^_]*`; do
if [ "$i" != "$BASEDIR/log/FILES" -a -n $i ]; then
prepareenv
fi
- beautify build_stage "Building base"
+ beautify build_start
+ beautify build_stage "Building LFS"
buildbase
beautify build_stage "Building IPFire"
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!"
+ 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
- ;;
-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
+ beautify message DONE
;;
downloadsrc)
if [ ! -d $BASEDIR/cache ]; then
# 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
clear
if [ -f /usr/bin/mcedit ]; then
export EDITOR=/usr/bin/mcedit
- else
- if [ -f /usr/bin/nano ]; then
- export EDITOR=/usr/bin/nano
- fi
+ fi
+ if [ -f /usr/bin/nano ]; then
+ export EDITOR=/usr/bin/nano
fi
echo -ne "Selecting editor $EDITOR..."
beautify message DONE
exit 0
fi
echo -en "REV $SVN_REVISION: Downloading..."
- svn export http://svn.ipfire.eu/svn/ipfire/trunk ipfire-source/ --force > /dev/null
- svn log http://svn.ipfire.eu/svn/ipfire/trunk -r 1:$SVN_REVISION > ipfire-source/Changelog
- #svn info http://svn.ipfire.eu/svn/ipfire/trunk -r $SVN_REVISION > ipfire-source/svn_status
+ 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..."
PWD=`pwd`
cd $BASEDIR/cache/
echo -e "Uploading cache to ftp server:"
- ncftpls -u $IPFIRE_FTP_USER_INT -p $IPFIRE_FTP_PASS_INT ftp://$IPFIRE_FTP_URL_INT$IPFIRE_FTP_PATH_INT/ > /var/tmp/ftplist
+ 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 /var/tmp/ftplist
+ grep -q $i /tmp/ftplist
if [ "$?" -ne "0" ]; then
echo -ne "$i"
- ncftpput -bb -u $IPFIRE_FTP_USER_INT -p $IPFIRE_FTP_PASS_INT $IPFIRE_FTP_URL_INT $IPFIRE_FTP_PATH_INT/ $i > /dev/null 2>&1
- if [ "$?" -eq "0" ]; then
- beautify message DONE
- else
+ 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
- rm -f /var/tmp/ftplist
- UL_TIME_START=`date +'%s'`
- ncftpbatch -d > /dev/null 2>&1
- while ps acx | grep -q ncftpbatch
- do
- UL_TIME=$(expr `date +'%s'` - $UL_TIME_START)
- echo -ne "\r ${UL_TIME}s : Upload is running..."
- sleep 1
- done
- beautify message DONE
+ rm -f /tmp/ftplist
cd $PWD
exit 0
;;
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
;;
batch)
- if [ "$2" -eq "--background" ]; then
+ if [ "$2" = "--background" ]; then
batch_script
exit $?
fi
watch)
watch_screen
;;
+pxe)
+ case "$2" in
+ start)
+ start_tftpd
+ ;;
+ stop)
+ stop_tftpd
+ ;;
+ reload|restart)
+ reload_tftpd
+ ;;
+ esac
+ exit 0
+ ;;
"")
clear
svn info
$0 svn update
;;
"Help")
- echo "Usage: $0 {build|changelog|clean|gettoolchain|newpak|downloadsrc|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|newpak|downloadsrc|shell|sync|toolchain}"
+ echo "Usage: $0 {build|changelog|clean|gettoolchain|downloadsrc|shell|sync|toolchain}"
cat doc/make.sh-usage
;;
esac