NAME="IPFire" # Software name
SNAME="ipfire" # Short name
-VERSION="2.9" # Version number
-CORE="52" # Core Level (Filename)
-PAKFIRE_CORE="51" # Core Level (PAKFIRE)
+VERSION="2.11" # Version number
+CORE="54" # Core Level (Filename)
+PAKFIRE_CORE="53" # Core Level (PAKFIRE)
GIT_BRANCH=`git status | head -n1 | cut -d" " -f4` # Git Branch
SLOGAN="www.ipfire.org" # Software slogan
CONFIG_ROOT=/var/ipfire # Configuration rootdir
GIT_TAG=$(git tag | tail -1) # Git Tag
GIT_LASTCOMMIT=$(git log | head -n1 | cut -d" " -f2 |head -c8) # Last commit
TOOLCHAINVER=1
-IPFVER="full" # Which versions should be compiled? (full|devel)
BUILDMACHINE=$MACHINE
if [ "$MACHINE" = "x86_64" ]; then
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
if [ -z $EDITOR ]; then
lfsmake1 make PASS=1
lfsmake1 binutils PASS=1
lfsmake1 gcc PASS=1
- if [ "${MACHINE}" = "arm" ]; then
+ if [ "${MACHINE_TYPE}" = "arm" ]; then
lfsmake1 linux TOOLS=1 HEADERS=1
else
lfsmake1 linux-libc-header
lfsmake1 tar
lfsmake1 texinfo
lfsmake1 util-linux
+ lfsmake1 strip
lfsmake1 cleanup-toolchain PASS=2
export PATH=$ORG_PATH
}
LOGFILE="$BASEDIR/log/_build.base.log"
export LOGFILE
lfsmake2 stage2
- if [ "${MACHINE}" = "arm" ]; then
+ if [ "${MACHINE_TYPE}" = "arm" ]; then
lfsmake2 linux HEADERS=1
else
lfsmake2 linux-libc-header
fi
lfsmake2 man-pages
lfsmake2 glibc
+ lfsmake2 tzdata
lfsmake2 cleanup-toolchain PASS=3
lfsmake2 binutils
lfsmake2 gcc
lfsmake2 udev
lfsmake2 util-linux
lfsmake2 vim
-
- # ARM cannot use grub.
- if [ "${MACHINE}" != "arm" ]; then
- lfsmake2 grub
- fi
+ lfsmake2 grub
}
buildipfire() {
ipfiremake xz
ipfiremake linux-firmware
ipfiremake zd1211-firmware
+ ipfiremake u-boot
# The xen and PAE kernels are only available for x86
- if [ "${MACHINE}" != "arm" ]; then
- ipfiremake linux XEN=1
- ipfiremake kqemu XEN=1
- ipfiremake v4l-dvb XEN=1
- ipfiremake madwifi XEN=1
- ipfiremake mISDN XEN=1
- ipfiremake dahdi XEN=1 KMOD=1
- ipfiremake cryptodev XEN=1
- ipfiremake compat-wireless XEN=1
- ipfiremake r8169 XEN=1
- ipfiremake r8168 XEN=1
- ipfiremake r8101 XEN=1
- ipfiremake e1000 XEN=1
- ipfiremake e1000e XEN=1
- ipfiremake igb XEN=1
- ipfiremake linux PAE=1
- ipfiremake kqemu PAE=1
- ipfiremake kvm-kmod PAE=1
- ipfiremake v4l-dvb PAE=1
- ipfiremake madwifi PAE=1
- ipfiremake alsa PAE=1 KMOD=1
- ipfiremake mISDN PAE=1
- ipfiremake dahdi PAE=1 KMOD=1
- ipfiremake cryptodev PAE=1
- ipfiremake compat-wireless PAE=1
-# ipfiremake r8169 PAE=1
-# ipfiremake r8168 PAE=1
-# ipfiremake r8101 PAE=1
- ipfiremake e1000 PAE=1
- ipfiremake e1000e PAE=1
- ipfiremake igb PAE=1
+ if [ "${MACHINE_TYPE}" != "arm" ]; then
+ ipfiremake linux KCFG="-xen"
+ ipfiremake kqemu KCFG="-xen"
+ ipfiremake v4l-dvb KCFG="-xen"
+ ipfiremake madwifi KCFG="-xen"
+ ipfiremake mISDN KCFG="-xen"
+ ipfiremake dahdi KCFG="-xen" KMOD=1
+ ipfiremake cryptodev KCFG="-xen"
+ ipfiremake compat-wireless KCFG="-xen"
+ ipfiremake r8169 KCFG="-xen"
+ ipfiremake r8168 KCFG="-xen"
+ ipfiremake r8101 KCFG="-xen"
+ ipfiremake e1000 KCFG="-xen"
+ ipfiremake e1000e KCFG="-xen"
+ ipfiremake igb KCFG="-xen"
+ ipfiremake linux KCFG="-pae"
+ ipfiremake kqemu KCFG="-pae"
+ ipfiremake kvm-kmod KCFG="-pae"
+ ipfiremake v4l-dvb KCFG="-pae"
+ ipfiremake madwifi KCFG="-pae"
+ ipfiremake alsa KCFG="-pae" KMOD=1
+ ipfiremake mISDN KCFG="-pae"
+ ipfiremake dahdi KCFG="-pae" KMOD=1
+ ipfiremake cryptodev KCFG="-pae"
+ ipfiremake compat-wireless KCFG="-pae"
+# ipfiremake r8169 KCFG="-pae"
+# ipfiremake r8168 KCFG="-pae"
+# ipfiremake r8101 KCFG="-pae"
+ ipfiremake e1000 KCFG="-pae"
+ ipfiremake e1000e KCFG="-pae"
+ ipfiremake igb KCFG="-pae"
fi
# Default kernel build
- #ipfiremake linux
- ipfiremake v4l-dvb
-
- # Virtualization helpers are only available for x86.
- if [ "${MACHINE}" != "arm" ]; then
- ipfiremake kqemu
- ipfiremake kvm-kmod
+ ipfiremake linux KCFG=""
+ ipfiremake v4l-dvb KCFG=""
+ ipfiremake kqemu KCFG=""
+ ipfiremake kvm-kmod KCFG=""
+ ipfiremake madwifi KCFG=""
+ if [ "${MACHINE_TYPE}" != "arm" ]; then
+ #todo enable alsa driver in kernel config
+ ipfiremake alsa KCFG="" KMOD=1
fi
- #ipfiremake madwifi
- #ipfiremake alsa KMOD=1
- #ipfiremake mISDN
- ipfiremake dahdi KMOD=1
- ipfiremake cryptodev
- #ipfiremake compat-wireless
-# ipfiremake r8169
-# ipfiremake r8168
-# ipfiremake r8101
- #ipfiremake e1000
- #ipfiremake e1000e
- #ipfiremake igb
+ #undefined declaration in echo canceler try to fix later
+ ipfiremake mISDN KCFG=""
+ ipfiremake dahdi KCFG="" KMOD=1
+ ipfiremake cryptodev KCFG=""
+ ipfiremake compat-wireless KCFG=""
+# ipfiremake r8169 KCFG=""
+# ipfiremake r8168 KCFG=""
+# ipfiremake r8101 KCFG=""
+ ipfiremake e1000 KCFG=""
+ ipfiremake e1000e KCFG=""
+ ipfiremake igb KCFG=""
ipfiremake pkg-config
- #ipfiremake linux-atm
+ ipfiremake linux-atm
ipfiremake cpio
-
- installmake strip
-
ipfiremake dracut
ipfiremake expat
ipfiremake gdbm
ipfiremake arping
ipfiremake beep
ipfiremake bind
- ipfiremake cdrtools
+ ipfiremake dvdrtools
ipfiremake dnsmasq
ipfiremake dosfstools
ipfiremake reiserfsprogs
ipfiremake wireless
ipfiremake libsafe
ipfiremake pakfire
- ipfiremake java
ipfiremake spandsp
ipfiremake lzo
ipfiremake openvpn
ipfiremake rsync
ipfiremake tcpwrapper
ipfiremake libevent
+ ipfiremake libevent2
ipfiremake portmap
ipfiremake nfs
ipfiremake nmap
ipfiremake strongswan
ipfiremake lsof
ipfiremake centerim
- #ipfiremake br2684ctl
+ ipfiremake br2684ctl
ipfiremake pcmciautils
ipfiremake lm_sensors
ipfiremake liboping
ipfiremake igmpproxy
ipfiremake fbset
ipfiremake sdl
- #ipfiremake qemu
- #ipfiremake qemu-kqemu
+ ipfiremake qemu
+ ipfiremake qemu-kqemu
ipfiremake sane
ipfiremake netpbm
ipfiremake phpSANE
- #ipfiremake tunctl
+ ipfiremake tunctl
ipfiremake nagios
ipfiremake nagios_nrpe
ipfiremake ebtables
ipfiremake faad2
ipfiremake ffmpeg
ipfiremake videolan
- #ipfiremake vdr
+ ipfiremake vdr
ipfiremake w_scan
ipfiremake icecast
ipfiremake icegenerator
ipfiremake vnstat
ipfiremake vnstati
ipfiremake iw
- #ipfiremake wpa_supplicant
- #ipfiremake hostapd
+ ipfiremake wpa_supplicant
+ ipfiremake hostapd
ipfiremake urlgrabber
- if [ "${MACHINE:0:3}" != "arm" ]; then
- ipfiremake syslinux
- fi
+ ipfiremake syslinux
ipfiremake tftpd
ipfiremake cpufrequtils
ipfiremake dbus
ipfiremake python-m2crypto
ipfiremake wireless-regdb
ipfiremake crda
- ipfiremake libsatsolver
- ipfiremake python-satsolver
+ ipfiremake libsolv
ipfiremake python-distutils-extra
ipfiremake python-lzma
ipfiremake python-progressbar
ipfiremake python-xattr
ipfiremake intltool
ipfiremake pakfire3-deps
+ ipfiremake transmission
echo Build on $HOSTNAME > $BASEDIR/build/var/ipfire/firebuild
cat /proc/version >> $BASEDIR/build/var/ipfire/firebuild
echo >> $BASEDIR/build/var/ipfire/firebuild
echo >> $BASEDIR/build/var/ipfire/firebuild
cat /proc/cpuinfo >> $BASEDIR/build/var/ipfire/firebuild
echo $PAKFIRE_CORE > $BASEDIR/build/opt/pakfire/db/core/mine
- if [ "$GIT_BRANCH" = "master" ]; then
- echo "$NAME $VERSION - (Development Build: $GIT_LASTCOMMIT)" > $BASEDIR/build/etc/system-release
+ if [ "$GIT_BRANCH" = "next" ]; then
+ echo "$NAME $VERSION ($MACHINE) - Development Build: $GIT_LASTCOMMIT" > $BASEDIR/build/etc/system-release
else
- echo "$NAME $VERSION - $GIT_BRANCH" > $BASEDIR/build/etc/system-release
+ echo "$NAME $VERSION ($MACHINE) - $GIT_BRANCH" > $BASEDIR/build/etc/system-release
fi
}
# Update changelog
cd $BASEDIR
- $0 git log
+ [ -z $GIT_TAG ] || LAST_TAG=$GIT_TAG
+ [ -z $LAST_TAG ] || EXT="$LAST_TAG..HEAD"
+ git log -n 500 --no-merges --pretty=medium --shortstat $EXT > $BASEDIR/doc/ChangeLog
# Create images for install
- ipfiremake cdrom ED=$IPFVER
+ ipfiremake cdrom
# Check if there is a loop device for building in virtual environments
- if [ $BUILD_IMAGES == 1 ] && ([ -e /dev/loop/0 ] || [ -e /dev/loop0 ]); then
- ipfiremake usb-stick ED=$IPFVER
- ipfiremake flash-images ED=$IPFVER
+ if [ $BUILD_IMAGES == 1 ] && ([ -e /dev/loop/0 ] || [ -e /dev/loop0 ]); then
+ if [ "${MACHINE_TYPE}" != "arm" ]; then
+ ipfiremake usb-stick
+ fi
+ ipfiremake flash-images
fi
mv $LFS/install/images/{*.iso,*.tgz,*.img.gz,*.bz2} $BASEDIR >> $LOGFILE 2>&1
ipfirepackages
# Check if there is a loop device for building in virtual environments
- if [ $BUILD_IMAGES == 1 ] && ([ -e /dev/loop/0 ] || [ -e /dev/loop0 ]); then
+ if [ $BUILD_IMAGES == 1 ] && ([ -e /dev/loop/0 ] || [ -e /dev/loop0 ]) && [ "${MACHINE_TYPE}" != "arm" ]; then
cp -f $BASEDIR/packages/linux-xen-*.ipfire $LFS/install/packages/
cp -f $BASEDIR/packages/meta-linux-xen $LFS/install/packages/
- ipfiremake xen-image ED=$IPFVER
+ ipfiremake xen-image
rm -rf $LFS/install/packages/linux-xen-*.ipfire
rm -rf $LFS/install/packages/meta-linux-xen
fi
ipfirepackages() {
ipfiremake core-updates
- for i in $(ls -1 $BASEDIR/config/rootfiles/packages); do
+
+ local i
+ for i in $(find $BASEDIR/config/rootfiles/packages{${machine},} -maxdepth 1 -type f); do
+ i=$(basename ${i})
if [ -e $BASEDIR/lfs/$i ]; then
ipfiredist $i
else
case "$1" in
build)
clear
- PACKAGE=`ls -v -r $BASEDIR/cache/toolchains/$SNAME-$VERSION-toolchain-$TOOLCHAINVER-$BUILDMACHINE.tar.gz 2> /dev/null | head -n 1`
+ PACKAGE=`ls -v -r $BASEDIR/cache/toolchains/$SNAME-$VERSION-toolchain-$TOOLCHAINVER-$MACHINE.tar.gz 2> /dev/null | head -n 1`
#only restore on a clean disk
if [ ! -f log/cleanup-toolchain-2-tools ]; then
if [ ! -n "$PACKAGE" ]; then
cd $BASEDIR/lfs
for i in *; do
if [ -f "$i" -a "$i" != "Config" ]; then
- echo -ne "Loading $i"
+ lfsmakecommoncheck ${i} || continue
+
make -s -f $i LFS_BASEDIR=$BASEDIR MACHINE=$MACHINE \
MESSAGE="$i\t ($c/$MAX_RETRIES)" download >> $LOGFILE 2>&1
if [ $? -ne 0 ]; then
prepareenv
beautify build_stage "Toolchain compilation - Native GCC: `gcc --version | grep GCC | awk {'print $3'}`"
buildtoolchain
- echo "`date -u '+%b %e %T'`: Create toolchain tar.gz for $BUILDMACHINE" | tee -a $LOGFILE
+ echo "`date -u '+%b %e %T'`: Create toolchain tar.gz for $MACHINE" | tee -a $LOGFILE
test -d $BASEDIR/cache/toolchains || mkdir -p $BASEDIR/cache/toolchains
- cd $BASEDIR && tar -zc --exclude='log/_build.*.log' -f cache/toolchains/$SNAME-$VERSION-toolchain-$TOOLCHAINVER-$BUILDMACHINE.tar.gz \
+ cd $BASEDIR && tar -zc --exclude='log/_build.*.log' -f cache/toolchains/$SNAME-$VERSION-toolchain-$TOOLCHAINVER-$MACHINE.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/toolchains/$SNAME-$VERSION-toolchain-$TOOLCHAINVER-$BUILDMACHINE.tar.gz \
- > cache/toolchains/$SNAME-$VERSION-toolchain-$TOOLCHAINVER-$BUILDMACHINE.md5
+ md5sum cache/toolchains/$SNAME-$VERSION-toolchain-$TOOLCHAINVER-$MACHINE.tar.gz \
+ > cache/toolchains/$SNAME-$VERSION-toolchain-$TOOLCHAINVER-$MACHINE.md5
stdumount
;;
gettoolchain)
# arbitrary name to be updated in case of new toolchain package upload
- PACKAGE=$SNAME-$VERSION-toolchain-$TOOLCHAINVER-$BUILDMACHINE
+ PACKAGE=$SNAME-$VERSION-toolchain-$TOOLCHAINVER-$MACHINE
if [ ! -f $BASEDIR/cache/toolchains/$PACKAGE.tar.gz ]; then
URL_TOOLCHAIN=`grep URL_TOOLCHAIN lfs/Config | awk '{ print $3 }'`
test -d $BASEDIR/cache/toolchains || mkdir -p $BASEDIR/cache/toolchains
- echo "`date -u '+%b %e %T'`: Load toolchain tar.gz for $BUILDMACHINE" | tee -a $LOGFILE
+ echo "`date -u '+%b %e %T'`: Load toolchain tar.gz for $MACHINE" | tee -a $LOGFILE
cd $BASEDIR/cache/toolchains
wget -U "IPFireSourceGrabber/2.x" $URL_TOOLCHAIN/$PACKAGE.tar.gz $URL_TOOLCHAIN/$PACKAGE.md5 >& /dev/null
if [ $? -ne 0 ]; then
- echo "`date -u '+%b %e %T'`: error downloading $PACKAGE toolchain for $BUILDMACHINE machine" | tee -a $LOGFILE
+ echo "`date -u '+%b %e %T'`: error downloading $PACKAGE toolchain for $MACHINE 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
fi
stdumount
;;
-git)
- case "$2" in
- update|up)
- ## REMOVES ALL UNCOMMITTED CHANGES!
- [ "$3" == "--force" ] && git checkout -f
- git pull
- ;;
- commit|ci)
- 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)
- git archive HEAD | gzip -9 > ${SNAME}-${VERSION}.tar.gz
- ;;
- diff|di)
- 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} $3
- ;;
- log)
- [ -z $GIT_TAG ] || LAST_TAG=$GIT_TAG
- [ -z $LAST_TAG ] || EXT="$LAST_TAG..HEAD"
-
- git log -n 500 --no-merges --pretty=medium --shortstat $EXT > $BASEDIR/doc/ChangeLog
- ;;
- esac
- ;;
uploadsrc)
PWD=`pwd`
if [ -z $IPFIRE_USER ]; then
cd $PWD
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
- if [ "$2" = "--rebuild" ]; then
- export IPFIRE_REBUILD=1
- echo "REBUILD!"
- else
- export IPFIRE_REBUILD=0
- 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
- ;;
lang)
update_langs
;;
-"")
- clear
- 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")
- $0 downloadsrc
- ;;
- "IPFIRE: Build (silent)")
- $0 build-silent
- ;;
- "IPFIRE: Watch Build")
- $0 watch
- ;;
- "IPFIRE: Batch")
- $0 batch
- ;;
- "IPFIRE: Clean")
- $0 clean
- ;;
- "Help")
- echo "Usage: $0 {build|changelog|clean|gettoolchain|downloadsrc|shell|sync|toolchain}"
- cat doc/make.sh-usage
- ;;
- "LOG: Tail")
- tail -f log/_*
- ;;
- "Exit")
- break
- ;;
- esac
- done
- ;;
-config)
- make_config
- ;;
*)
echo "Usage: $0 {build|changelog|clean|gettoolchain|downloadsrc|shell|sync|toolchain}"
cat doc/make.sh-usage