NAME="IPFire" # Software name
SNAME="ipfire" # Short name
-VERSION="2.0t4" # Version number
+VERSION="2.1" # 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|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`
fi
fi
+if [ -z $EDITOR ]; then
+ for i in nano emacs vi; do
+ EDITOR=$(which $i 2>/dev/null)
+ if ! [ -z $EDITOR ]; then
+ export EDITOR=$EDITOR
+ break
+ fi
+ done
+ [ -z $EDITOR ] && exiterror "You should have installed an editor."
+fi
+
prepareenv() {
############################################################################
# #
# #
############################################################################
if [ ! "$BASH" ]; then
- exiterror "BASH environment variable is not set. You're probably running the wrong shell."
+ exiterror "BASH environment variable is not set. You're probably running the wrong shell."
fi
if [ -z "${BASH_VERSION}" ]; then
- exiterror "Not running BASH shell."
+ exiterror "Not running BASH shell."
fi
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"
+ beautify message FAIL
+ exiterror "Failed to set correct nice level"
else
- beautify message DONE
+ beautify message DONE
fi
############################################################################
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"
+ beautify message FAIL
+ exiterror "Not building as root"
else
- beautify message DONE
+ beautify message DONE
fi
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 (( 2048000 > $BASE_ASPACE )); then
- BASE_USPACE=`du -skx $BASEDIR | awk '{print $1}'`
- if (( 2048000 - $BASE_USPACE > $BASE_ASPACE )); then
- beautify message FAIL
- exiterror "Not enough temporary space available, need at least 2GB on $BASE_DEV"
- fi
+ BASE_USPACE=`du -skx $BASEDIR | awk '{print $1}'`
+ 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
+ beautify message DONE
fi
############################################################################
rm -f /tools
fi
if [ ! -a /tools ]; then
- ln -s $BASEDIR/build/tools /
+ ln -s $BASEDIR/build/tools /
fi
if [ ! -h /tools ]; then
- exiterror "Could not create /tools symbolic link."
+ exiterror "Could not create /tools symbolic link."
fi
# Setup environment
LOGFILE="$BASEDIR/log/_build.ipfire.log"
export LOGFILE
ipfiremake configroot
+ ipfiremake backup
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 promise-sata-300-tx SMP=1
ipfiremake zaptel SMP=1
- ipfiremake fuse SMP=1
+ ipfiremake r8169 SMP=1
+ ipfiremake r8168 SMP=1
+ ipfiremake mcs7830 SMP=1
+ ipfiremake atl1 SMP=1
+ ipfiremake dm9601 SMP=1
+ ipfiremake kqemu SMP=1
+ ipfiremake v4l-dvb SMP=1
+ ipfiremake sane KMOD=1 SMP=1
ipfiremake linux
ipfiremake ipp2p
- ipfiremake fcdsl
- ipfiremake fcdsl2
- ipfiremake fcdslsl
- ipfiremake fcdslusb
- ipfiremake fcdslslusb
-# ipfiremake promise-sata-300-tx
ipfiremake zaptel
- ipfiremake fuse
+ ipfiremake r8169
+ ipfiremake r8168
+ ipfiremake mcs7830
+ ipfiremake atl1
+ ipfiremake dm9601
+ ipfiremake kqemu
+ ipfiremake v4l-dvb
+ ipfiremake sane KMOD=1
ipfiremake pkg-config
+ ipfiremake linux-atm
ipfiremake cpio
ipfiremake klibc
ipfiremake mkinitcpio
ipfiremake curl
ipfiremake python
ipfiremake libnet
+ ipfiremake libidn
ipfiremake libjpeg
ipfiremake libpng
ipfiremake libtiff
ipfiremake arping
ipfiremake beep
ipfiremake bind
- ipfiremake capi4k-utils
ipfiremake cdrtools
ipfiremake dnsmasq
ipfiremake dosfstools
+ ipfiremake squashfstools
ipfiremake reiserfsprogs
+ ipfiremake xfsprogs
ipfiremake sysfsutils
+ ipfiremake fuse
ipfiremake ntfs-3g
ipfiremake ethtool
ipfiremake ez-ipupdate
ipfiremake fcron
- ipfiremake GD
+ ipfiremake perl-GD
ipfiremake GD-Graph
ipfiremake GD-TextUtil
ipfiremake gnupg
ipfiremake hdparm
- ipfiremake ibod
+ ipfiremake sdparm
+ ipfiremake mtools
ipfiremake initscripts
ipfiremake whatmask
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 isdn4k-utils
ipfiremake mISDN
+ ipfiremake capi4k-utils
ipfiremake hwdata
ipfiremake kudzu
ipfiremake logrotate
ipfiremake logwatch
ipfiremake misc-progs
- ipfiremake mtools
ipfiremake nano
ipfiremake nasm
ipfiremake URI
ipfiremake Text-Tabs+Wrap
ipfiremake Locale-Country
ipfiremake XML-Parser
- ipfiremake MP3-Info
- ipfiremake MP3-Tag
ipfiremake glib
ipfiremake GeoIP
ipfiremake fwhits
ipfiremake ntp
ipfiremake openssh
ipfiremake openswan
- ipfiremake pptpclient
ipfiremake rrdtool
ipfiremake setserial
ipfiremake setup
ipfiremake snort
- ipfiremake snortsnarf
ipfiremake oinkmaster
ipfiremake squid
ipfiremake squid-graph
ipfiremake lzo
ipfiremake openvpn
ipfiremake pammysql
- ipfiremake ghostscript
ipfiremake cups
+ ipfiremake ghostscript
+ ipfiremake foomatic
+ ipfiremake hplip
ipfiremake samba
ipfiremake sudo
ipfiremake mc
ipfiremake htop
ipfiremake postfix
ipfiremake fetchmail
- ipfiremake cyrusimap
- ipfiremake webcyradm
- ipfiremake mailx
+ ipfiremake cyrus-imapd
+ ipfiremake openmailadmin
ipfiremake clamav
ipfiremake spamassassin
ipfiremake amavisd
ipfiremake mpg123
ipfiremake mpfire
ipfiremake guardian
+ ipfiremake libid3tag
ipfiremake libmad
ipfiremake libogg
ipfiremake libvorbis
ipfiremake lame
ipfiremake sox
- ipfiremake mp3blaster
+ ipfiremake libshout
+ ipfiremake icecast
+ ipfiremake icegenerator
+ ipfiremake mpd
+ ipfiremake mpc
+ ipfiremake xvid
+ ipfiremake libmpeg2
+ ipfiremake cmake
ipfiremake libpri
- ipfiremake stund
ipfiremake asterisk
- ipfiremake backup
ipfiremake gnump3d
ipfiremake libsigc++
ipfiremake applejuice
ipfiremake nfs
ipfiremake nmap
ipfiremake mbmon
- ipfiremake iftop
ipfiremake ncftp
- ipfiremake cftp
ipfiremake etherwake
- ipfiremake ethereal
- ipfiremake tftp-hpa
ipfiremake bwm-ng
ipfiremake tripwire
ipfiremake sysstat
ipfiremake vsftpd
ipfiremake which
ipfiremake lsof
+ ipfiremake centerim
+ ipfiremake br2684ctl
+ ipfiremake pcmciautils
+ ipfiremake collectd
+ ipfiremake lcd4linux
+ ipfiremake neon
+ ipfiremake subversion
+ ipfiremake tcptrack
+ ipfiremake teamspeak
+ ipfiremake elinks
+ ipfiremake igmpproxy
+ ipfiremake sdl
+ ipfiremake qemu
+ ipfiremake sane
+ ipfiremake netpbm
+ ipfiremake phpSANE
+ ipfiremake tunctl
+ ipfiremake nagios
+ ipfiremake ebtables
+ ipfiremake arptables
+ ipfiremake fontconfig
+ ipfiremake freefont
+ ipfiremake ffmpeg
+ ipfiremake videolan
+ ipfiremake vdr
+ ipfiremake w_scan
+ ipfiremake git
+ ipfiremake squidclamav
+ ipfiremake bc
}
buildinstaller() {
installmake wget
installmake hwdata
installmake kudzu
+ installmake pcmciautils
installmake installer
installmake initrd
}
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$\|setup$\|pakfire$\|stage2$\|smp$\|tools$\|tools1$\|tools2$\|.tgz$\|-config$\|_missing_rootfile$' \
+ grep -v 'configroot$\|img$\|initrd$\|initscripts$\|installer$\|install$\|setup$\|pakfire$\|stage2$\|smp$\|tools$\|tools1$\|tools2$\|.tgz$\|-config$\|_missing_rootfile$\|install1$\|install2$\|pass1$\|pass2$\|pass3$' \
$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
- if [ "$DEVEL" == "1" ]; then
- ipfiremake cdrom ED=devel
- fi
ipfiremake cdrom ED=full
# Check if there is a loop device for building in virtual environments
- if [ -e /dev/loop0 ]; then
+ if [ -e /dev/loop/0 ] || [ -e /dev/loop0 ]; then
ipfiremake usb-stick
fi
- ipfiremake pxe
mv $LFS/install/images/{*.iso,*.tgz,*.img.gz} $BASEDIR >> $LOGFILE 2>&1
ipfirepackages
}
ipfirepackages() {
- ipfiredist alsa
-# ipfiredist amavisd
- ipfiredist applejuice
-# ipfiredist asterisk
- ipfiredist clamav
- ipfiredist cups
- ipfiredist cyrus-sasl
-# ipfiredist fetchmail
-# ipfiredist gnump3d
- ipfiredist guardian
- ipfiredist ipfireseeder
- ipfiredist java
- ipfiredist libogg
- ipfiredist libvorbis
-# ipfiredist mailx
-# ipfiredist mldonkey
- ipfiredist mp3blaster
- ipfiredist mpfire
- ipfiredist mpg123
-# ipfiredist nfs
- ipfiredist openldap
-# ipfiredist postfix
- ipfiredist rtorrent
- ipfiredist samba
-# ipfiredist sox
-# ipfiredist spamassassin
- ipfiredist tripwire
- ipfiredist vsftpd
-# ipfiredist webcyradm
+ ipfiremake core-updates
+ for i in $(ls -1 $BASEDIR/config/rootfiles/packages); do
+ if [ -e $BASEDIR/lfs/$i ]; then
+ ipfiredist $i
+ else
+ echo -n $i
+ beautify message SKIP
+ fi
+ done
test -d $BASEDIR/packages || mkdir $BASEDIR/packages
mv -f $LFS/install/packages/* $BASEDIR/packages >> $LOGFILE 2>&1
rm -rf $BASEDIR/build/install/packages/*
build)
clear
BUILDMACHINE=`uname -m`
- DEVEL=0
- if [ "$2" == "--devel" ]; then
- DEVEL=1
- fi
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/cleanup-toolchain-2-tools ]; then
beautify build_stage "Building IPFire"
buildipfire
- # Setzen des IPFire Builds
- if [ "$FIREBUILD" ]; then
- echo "$FIREBUILD" > $BASEDIR/build/var/ipfire/firebuild
- else
- echo "_(OvO)_" > $BASEDIR/build/var/ipfire/firebuild
- fi
-
beautify build_stage "Building installer"
buildinstaller
prepareenv
entershell
;;
-changelog)
- echo -n "Loading new Changelog from SVN: "
- 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
fi
stdumount
;;
-svn)
+git)
case "$2" in
update|up)
- # clear
- 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
- beautify message FAIL
- exit 1
- fi
- echo -ne "Writing the svn-info to a file"
- svn info > $PWD/svn_status
- if [ $? -eq "0" ]; then
- beautify message DONE
- else
- beautify message FAIL
- exit 1
- fi
- chmod 755 $0
- exit 0
- ;;
+ git pull
+ ;;
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
- if [ "`echo $SVN_REVISION | cut -c 3`" -eq "0" ]; then
- $0 changelog
- fi
- fi
- update_langs
- svn commit
- $0 svn up
- if [ -n "$FTP_CACHE_URL" ]; then
- $0 uploadsrc
- fi
- ;;
+ shift 2
+ git commit $*
+
+ [ "$?" -eq "0" ] || exiterror "git commit $* failed."
+
+ echo -e "${BOLD}Do you want to push, too? [y/N]${NORMAL}"
+ read
+ [ -z $REPLY ] && exit 0
+ for i in y Y j J; do
+ if [ "$i" == "$REPLY" ]; then
+ $0 git push
+ exit $?
+ fi
+ done
+ exiterror "\"$REPLY\" is not a valid answer."
+ ;;
dist)
- if [ $3 ]; then
- SVN_REVISION=$3
- fi
- if [ -f ipfire-source-r$SVN_REVISION.tar.gz ]; then
- echo -ne "REV $SVN_REVISION: SKIPPED!\n"
- exit 0
- fi
- 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
- ;;
+ git archive HEAD | gzip -9 > ${SNAME}-${VERSION}.tar.gz
+ ;;
diff|di)
- update_langs
- 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
- 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"
- svn status
- ;;
+ echo -ne "Make a local diff to last revision"
+ git diff HEAD > ipfire-diff-$(date +'%Y-%m-%d-%H:%M').diff
+ evaluate 1
+ echo "Diff was successfully saved to ipfire-diff-$(date +'%Y-%m-%d-%H:%M').diff"
+ git diff --stat
+ ;;
+ push)
+ [ -z $GIT_USER ] && exiterror "You have to setup GIT_USER first."
+ GIT_URL="ssh://${GIT_USER}@git.ipfire.org/pub/git/ipfire-2.x"
+
+ git push ${GIT_URL} master
+ ;;
esac
;;
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
+ 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 [ "$(basename $i)" == "toolchains" ]; then continue; fi
+ grep -q $(basename $i) /tmp/ftplist
if [ "$?" -ne "0" ]; then
- echo -ne "$i"
- ncftpput -u $FTP_CACHE_USER -p $FTP_CACHE_PASS $FTP_CACHE_URL $FTP_CACHE_PATH/ $i
+ echo -ne "$(basename $i)"
+ ncftpput -u $FTP_CACHE_USER -p $FTP_CACHE_PASS $FTP_CACHE_URL $FTP_CACHE_PATH/ $(basename $i)
if [ "$?" -ne "0" ]; then
beautify message FAIL
fi
fi
fi
done
+ rm -f ipfire-$VERSION.$MACHINE-full.iso.md5
if [ "$3" = "--with-sources-cd" ]; then
ncftpput -u $FTP_ISO_USER -p $FTP_ISO_PASS -P $FTP_ISO_PORT $FTP_ISO_URL $FTP_ISO_PATH/$SVN_REVISION/ ipfire-sources-cd-$VERSION.$MACHINE.iso
fi
lang)
update_langs
;;
-packages)
- case "$2" in
- sign)
- sign_packages
- ;;
- esac
- ;;
"")
clear
- svn info
- 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"
+ select name in "Exit" "IPFIRE: Downloadsrc" "IPFIRE: Build (silent)" "IPFIRE: Watch Build" "IPFIRE: Batch" "IPFIRE: Clean" "LOG: Tail" "Help"
do
case $name in
"IPFIRE: Downloadsrc")
"IPFIRE: Clean")
$0 clean
;;
- "SVN: Update")
- $0 svn update
- ;;
"Help")
echo "Usage: $0 {build|changelog|clean|gettoolchain|downloadsrc|shell|sync|toolchain}"
cat doc/make.sh-usage