NAME="IPFire" # Software name
SNAME="ipfire" # Short name
VERSION="2.11" # Version number
-CORE="53" # Core Level (Filename)
-PAKFIRE_CORE="52" # Core Level (PAKFIRE)
+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
set +h
LC_ALL=POSIX
if [ -z $MAKETUNING ]; then
- MAKETUNING="-j6"
+ if [ "${MACHINE:0:3}" = "arm" ]; then
+ MAKETUNING="-j2"
+ else
+ MAKETUNING="-j6"
+ fi
fi
export LFS LC_ALL CFLAGS CXXFLAGS MAKETUNING
unset CC CXX CPP LD_LIBRARY_PATH LD_PRELOAD
LOGFILE="$BASEDIR/log/_build.toolchain.log"
export LOGFILE
- ORG_PATH=$PATH
NATIVEGCC=`gcc --version | grep GCC | awk {'print $3'}`
export NATIVEGCC GCCmajor=${NATIVEGCC:0:1} GCCminor=${NATIVEGCC:2:1} GCCrelease=${NATIVEGCC:4:1}
+ ORG_PATH=$PATH
+ export PATH=$BASEDIR/build/usr/local/bin:$BASEDIR/build/tools/bin:$PATH
lfsmake1 ccache PASS=1
lfsmake1 make PASS=1
lfsmake1 binutils PASS=1
lfsmake1 gcc PASS=1
- export PATH=$BASEDIR/build/usr/local/bin:$BASEDIR/build/tools/bin:$PATH
- lfsmake1 linux-libc-header
+ if [ "${MACHINE_TYPE}" = "arm" ]; then
+ lfsmake1 linux TOOLS=1 HEADERS=1
+ else
+ lfsmake1 linux-libc-header
+ fi
lfsmake1 glibc
lfsmake1 cleanup-toolchain PASS=1
lfsmake1 tcl
LOGFILE="$BASEDIR/log/_build.base.log"
export LOGFILE
lfsmake2 stage2
- lfsmake2 linux-libc-header
+ 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
ipfiremake xz
ipfiremake linux-firmware
ipfiremake zd1211-firmware
- 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
+ ipfiremake u-boot
+
+ # The xen and PAE kernels are only available for x86
+ if [ "${MACHINE_TYPE}" != "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
+ fi
+
+ # Default kernel build
ipfiremake linux
+ ipfiremake v4l-dvb
ipfiremake kqemu
ipfiremake kvm-kmod
- ipfiremake v4l-dvb
ipfiremake madwifi
- ipfiremake alsa KMOD=1
+ if [ "${MACHINE_TYPE}" != "arm" ]; then
+ #todo enable alsa driver in kernel config
+ ipfiremake alsa KMOD=1
+ fi
+ #undefined declaration in echo canceler try to fix later
ipfiremake mISDN
ipfiremake dahdi KMOD=1
ipfiremake cryptodev
ipfiremake pkg-config
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
cat /proc/cpuinfo >> $BASEDIR/build/var/ipfire/firebuild
echo $PAKFIRE_CORE > $BASEDIR/build/opt/pakfire/db/core/mine
if [ "$GIT_BRANCH" = "next" ]; then
- echo "$NAME $VERSION - (Development Build: $GIT_LASTCOMMIT)" > $BASEDIR/build/etc/system-release
+ 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
cd $BASEDIR/lfs
for i in *; do
if [ -f "$i" -a "$i" != "Config" ]; then
- echo -ne "Loading $i"
- make -s -f $i LFS_BASEDIR=$BASEDIR MESSAGE="$i\t ($c/$MAX_RETRIES)" download >> $LOGFILE 2>&1
+ 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
beautify message FAIL
FINISHED=0
ERROR=0
for i in *; do
if [ -f "$i" -a "$i" != "Config" ]; then
- make -s -f $i LFS_BASEDIR=$BASEDIR MESSAGE="$i\t " md5 >> $LOGFILE 2>&1
+ make -s -f $i LFS_BASEDIR=$BASEDIR MACHINE=$MACHINE \
+ MESSAGE="$i\t " md5 >> $LOGFILE 2>&1
if [ $? -ne 0 ]; then
echo -ne "MD5 difference in lfs/$i"
beautify message FAIL
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-$MACHINE.tar.gz \
build/{bin,etc,usr/bin,usr/local} \
- build/tools/{bin,etc,*-linux-gnu,include,lib,libexec,sbin,share,var} \
+ build/tools/{bin,etc,*-linux-gnu*,include,lib,libexec,sbin,share,var} \
log >> $LOGFILE
md5sum cache/toolchains/$SNAME-$VERSION-toolchain-$TOOLCHAINVER-$MACHINE.tar.gz \
> cache/toolchains/$SNAME-$VERSION-toolchain-$TOOLCHAINVER-$MACHINE.md5
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