# along with IPFire; if not, write to the Free Software #
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA #
# #
-# Copyright (C) 2007-2017 IPFire Team <info@ipfire.org>. #
+# Copyright (C) 2007-2018 IPFire Team <info@ipfire.org>. #
# #
############################################################################
#
NAME="IPFire" # Software name
SNAME="ipfire" # Short name
VERSION="2.19" # Version number
-CORE="118" # Core Level (Filename)
-PAKFIRE_CORE="117" # Core Level (PAKFIRE)
+CORE="121" # Core Level (Filename)
+PAKFIRE_CORE="120" # Core Level (PAKFIRE)
GIT_BRANCH=`git rev-parse --abbrev-ref HEAD` # 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=20171121
+TOOLCHAINVER=20180213
###############################################################################
#
BUILDTARGET="${build_arch}-unknown-linux-gnu"
CROSSTARGET="${build_arch}-cross-linux-gnu"
BUILD_PLATFORM="x86"
- CFLAGS_ARCH="-m64 -mtune=generic"
+ CFLAGS_ARCH="-m64 -mindirect-branch=thunk -mfunction-return=thunk -mtune=generic"
;;
i586)
BUILDTARGET="${build_arch}-pc-linux-gnu"
CROSSTARGET="${build_arch}-cross-linux-gnu"
BUILD_PLATFORM="x86"
- CFLAGS_ARCH="-march=i586 -mtune=generic -fomit-frame-pointer"
+ CFLAGS_ARCH="-march=i586 -mindirect-branch=thunk -mfunction-return=thunk -mtune=generic -fomit-frame-pointer"
;;
aarch64)
TOOLS_DIR="/tools_${BUILD_ARCH}"
# Enables hardening
- HARDENING_CFLAGS="-Wp,-D_FORTIFY_SOURCE=2 -fstack-protector-strong --param=ssp-buffer-size=4"
+ HARDENING_CFLAGS="-Wp,-D_FORTIFY_SOURCE=2 -Wp,-D_GLIBCXX_ASSERTIONS -fstack-protector-strong"
CFLAGS="-O2 -pipe -Wall -fexceptions -fPIC ${CFLAGS_ARCH}"
CXXFLAGS="${CFLAGS}"
MAKETUNING="-j${parallelism}"
fi
+
+ # Compression parameters
+ # We use mode 8 for reasonable memory usage when decompressing
+ # but with overall good compression
+ XZ_OPT="-8"
+
+ # We try to use as many cores as possible
+ XZ_OPT="${XZ_OPT} -T0"
+
+ # We need to limit memory because XZ uses too much when running
+ # in parallel and it isn't very smart in limiting itself.
+ # We allow XZ to use up to 70% of all system memory.
+ local xz_memory=$(( HOST_MEM * 7 / 10 ))
+
+ # XZ memory cannot be larger than 2GB on 32 bit systems
+ case "${build_arch}" in
+ i*86|armv*)
+ if [ ${xz_memory} -gt 2048 ]; then
+ xz_memory=2048
+ fi
+ ;;
+ esac
+
+ XZ_OPT="${XZ_OPT} --memory=${xz_memory}MiB"
}
configure_build_guess() {
# Checking if running as root user
if [ $(id -u) -ne 0 ]; then
- exiterror "Not building as root"
+ exiterror "root privileges required for building"
fi
# Checking for necessary temporary space
CCACHE_COMPRESS="${CCACHE_COMPRESS}" \
CCACHE_COMPILERCHECK="${CCACHE_COMPILERCHECK}" \
KVER="${KVER}" \
+ XZ_OPT="${XZ_OPT}" \
$(fake_environ) \
$(qemu_environ) \
"$@"
fi
echo "Entering to a shell inside LFS chroot, go out with exit"
- local PS1="ipfire build chroot ($(uname -m)) \u:\w\$ "
+ local PS1="ipfire build chroot (${BUILD_ARCH}) \u:\w\$ "
if enterchroot bash -i; then
stdumount
lfsmake1 gcc PASS=L
lfsmake1 binutils PASS=2
lfsmake1 gcc PASS=2
+ lfsmake1 zlib
lfsmake1 ccache PASS=2
lfsmake1 tcl
lfsmake1 expect
lfsmake1 tar
lfsmake1 texinfo
lfsmake1 xz
+ lfsmake1 bison
+ lfsmake1 flex
lfsmake1 fake-environ
lfsmake1 strip
lfsmake1 cleanup-toolchain
lfsmake2 iana-etc
lfsmake2 m4
lfsmake2 bison
- lfsmake2 ncurses-compat
lfsmake2 ncurses
lfsmake2 procps
lfsmake2 libtool
lfsmake2 jwhois
lfsmake2 kbd
lfsmake2 less
+ lfsmake2 pkg-config
lfsmake2 make
lfsmake2 man
lfsmake2 kmod
lfsmake2 configroot
lfsmake2 initscripts
lfsmake2 backup
- lfsmake2 pkg-config
lfsmake2 libusb
lfsmake2 libusb-compat
lfsmake2 libpcap
lfsmake2 unzip
lfsmake2 which
lfsmake2 linux-firmware
- lfsmake2 ath10k-firmware
lfsmake2 dvb-firmwares
- lfsmake2 mt7601u-firmware
+ lfsmake2 xr819-firmware
lfsmake2 zd1211-firmware
lfsmake2 rpi-firmware
lfsmake2 bc
- lfsmake2 u-boot
+ lfsmake2 u-boot MKIMAGE=1
lfsmake2 cpio
lfsmake2 mdadm
lfsmake2 dracut
lfsmake2 libnetfilter_cthelper
lfsmake2 libnetfilter_cttimeout
lfsmake2 iptables
+ lfsmake2 screen
+ lfsmake2 elfutils
case "${BUILD_ARCH}" in
x86_64)
lfsmake2 linux KCFG=""
- lfsmake2 backports KCFG=""
- lfsmake2 e1000e KCFG=""
- lfsmake2 igb KCFG=""
- lfsmake2 ixgbe KCFG=""
+# lfsmake2 backports KCFG=""
+# lfsmake2 e1000e KCFG=""
+# lfsmake2 igb KCFG=""
+# lfsmake2 ixgbe KCFG=""
lfsmake2 xtables-addons KCFG=""
lfsmake2 linux-initrd KCFG=""
;;
i586)
# x86-pae (Native and new XEN) kernel build
lfsmake2 linux KCFG="-pae"
- lfsmake2 backports KCFG="-pae"
- lfsmake2 e1000e KCFG="-pae"
- lfsmake2 igb KCFG="-pae"
- lfsmake2 ixgbe KCFG="-pae"
+# lfsmake2 backports KCFG="-pae"
+# lfsmake2 e1000e KCFG="-pae"
+# lfsmake2 igb KCFG="-pae"
+# lfsmake2 ixgbe KCFG="-pae"
lfsmake2 xtables-addons KCFG="-pae"
lfsmake2 linux-initrd KCFG="-pae"
# x86 kernel build
lfsmake2 linux KCFG=""
- lfsmake2 backports KCFG=""
- lfsmake2 e1000e KCFG=""
- lfsmake2 igb KCFG=""
- lfsmake2 ixgbe KCFG=""
+# lfsmake2 backports KCFG=""
+# lfsmake2 e1000e KCFG=""
+# lfsmake2 igb KCFG=""
+# lfsmake2 ixgbe KCFG=""
lfsmake2 xtables-addons KCFG=""
lfsmake2 linux-initrd KCFG=""
;;
armv5tel)
- # arm-rpi (Raspberry Pi) kernel build
- lfsmake2 linux KCFG="-rpi"
- lfsmake2 backports KCFG="-rpi"
- lfsmake2 xtables-addons KCFG="-rpi"
- lfsmake2 linux-initrd KCFG="-rpi"
+ # arm-kirkwood (Dreamplug, ICY-Box ...) kernel build
+ lfsmake2 linux KCFG="-kirkwood"
+# lfsmake2 backports KCFG="-kirkwood"
+# lfsmake2 e1000e KCFG="-kirkwood"
+# lfsmake2 igb KCFG="-kirkwood"
+# lfsmake2 ixgbe KCFG="-kirkwood"
+ lfsmake2 xtables-addons KCFG="-kirkwood"
+ lfsmake2 linux-initrd KCFG="-kirkwood"
# arm multi platform (Panda, Wandboard ...) kernel build
lfsmake2 linux KCFG="-multi"
- lfsmake2 backports KCFG="-multi"
- lfsmake2 e1000e KCFG="-multi"
- lfsmake2 igb KCFG="-multi"
- lfsmake2 ixgbe KCFG="-multi"
+# lfsmake2 backports KCFG="-multi"
+# lfsmake2 e1000e KCFG="-multi"
+# lfsmake2 igb KCFG="-multi"
+# lfsmake2 ixgbe KCFG="-multi"
lfsmake2 xtables-addons KCFG="-multi"
lfsmake2 linux-initrd KCFG="-multi"
-
- # arm-kirkwood (Dreamplug, ICY-Box ...) kernel build
- lfsmake2 linux KCFG="-kirkwood"
- lfsmake2 backports KCFG="-kirkwood"
- lfsmake2 e1000e KCFG="-kirkwood"
- lfsmake2 igb KCFG="-kirkwood"
- lfsmake2 ixgbe KCFG="-kirkwood"
- lfsmake2 xtables-addons KCFG="-kirkwood"
- lfsmake2 linux-initrd KCFG="-kirkwood"
;;
esac
+ lfsmake2 intel-microcode
lfsmake2 xtables-addons USPACE="1"
lfsmake2 openssl
[ "${BUILD_ARCH}" = "i586" ] && lfsmake2 openssl KCFG='-sse2'
+ lfsmake2 openssl-compat
lfsmake2 libgpg-error
lfsmake2 libgcrypt
lfsmake2 libassuan
lfsmake2 nettle
lfsmake2 libevent
lfsmake2 libevent2
- lfsmake2 libevent2-compat
lfsmake2 expat
lfsmake2 apr
lfsmake2 aprutil
lfsmake2 libxml2
lfsmake2 libxslt
lfsmake2 BerkeleyDB
- lfsmake2 mysql
lfsmake2 cyrus-sasl
lfsmake2 openldap
lfsmake2 apache2
- lfsmake2 php
lfsmake2 web-user-interface
lfsmake2 flag-icons
lfsmake2 jquery
lfsmake2 ipaddr
lfsmake2 iputils
lfsmake2 l7-protocols
- lfsmake2 mISDNuser
- lfsmake2 capi4k-utils
lfsmake2 hwdata
lfsmake2 logrotate
lfsmake2 logwatch
lfsmake2 python-ipaddress
lfsmake2 glib
lfsmake2 GeoIP
- lfsmake2 noip_updater
lfsmake2 ntp
lfsmake2 openssh
lfsmake2 fontconfig
lfsmake2 wireless
lfsmake2 pakfire
lfsmake2 spandsp
+ lfsmake2 lz4
lfsmake2 lzo
lfsmake2 openvpn
- lfsmake2 pammysql
lfsmake2 mpage
lfsmake2 dbus
lfsmake2 intltool
lfsmake2 mc
lfsmake2 wget
lfsmake2 bridge-utils
- lfsmake2 screen
+# lfsmake2 screen
lfsmake2 smartmontools
lfsmake2 htop
lfsmake2 chkconfig
lfsmake2 cmake
lfsmake2 gnump3d
lfsmake2 rsync
- lfsmake2 tcpwrapper
lfsmake2 libtirpc
lfsmake2 rpcbind
lfsmake2 nfs
lfsmake2 streamripper
lfsmake2 sshfs
lfsmake2 taglib
- #lfsmake2 mediatomb
lfsmake2 sslh
lfsmake2 perl-gettext
lfsmake2 perl-Sort-Naturally
lfsmake2 vdradmin
lfsmake2 miau
lfsmake2 perl-DBI
- lfsmake2 perl-DBD-mysql
lfsmake2 perl-DBD-SQLite
lfsmake2 perl-File-ReadBackwards
lfsmake2 openvmtools
lfsmake2 watchdog
lfsmake2 libpri
lfsmake2 libsrtp
+ lfsmake2 jansson
lfsmake2 asterisk
- lfsmake2 lcr
lfsmake2 usb_modeswitch
lfsmake2 usb_modeswitch_data
lfsmake2 zerofree
lfsmake2 powertop
lfsmake2 parted
lfsmake2 swig
+ lfsmake2 u-boot
+ lfsmake2 u-boot-kirkwood
+ lfsmake2 python-typing
lfsmake2 python-m2crypto
lfsmake2 wireless-regdb
lfsmake2 crda
lfsmake2 sendEmail
lfsmake2 sysbench
lfsmake2 strace
- lfsmake2 elfutils
lfsmake2 ltrace
lfsmake2 ipfire-netboot
lfsmake2 lcdproc
lfsmake2 iptraf-ng
lfsmake2 iotop
lfsmake2 stunnel
- lfsmake2 owncloud
lfsmake2 bacula
lfsmake2 batctl
lfsmake2 perl-Font-TTF
lfsmake2 pigz
lfsmake2 tmux
lfsmake2 perl-Text-CSV_XS
- lfsmake2 swconfig
lfsmake2 haproxy
lfsmake2 ipset
lfsmake2 lua
lfsmake2 libpciaccess
lfsmake2 libyajl
lfsmake2 libvirt
- lfsmake2 python3-libvirt
lfsmake2 freeradius
lfsmake2 perl-common-sense
lfsmake2 perl-inotify2
lfsmake2 perl-Net-IP
lfsmake2 wio
lfsmake2 iftop
+ lfsmake2 mdns-repeater
+ lfsmake2 i2c-tools
}
buildinstaller() {
modprobe loop 2>/dev/null
if [ $BUILD_IMAGES == 1 ] && ([ -e /dev/loop/0 ] || [ -e /dev/loop0 ] || [ -e "/dev/loop-control" ]); then
lfsmake2 flash-images
- lfsmake2 flash-images SCON=1
fi
- mv $LFS/install/images/{*.iso,*.tgz,*.img.gz,*.bz2} $BASEDIR >> $LOGFILE 2>&1
+ mv $LFS/install/images/{*.iso,*.img.xz,*.bz2} $BASEDIR >> $LOGFILE 2>&1
ipfirepackages
# remove not useable iso on armv5tel (needed to build flash images)
[ "${BUILD_ARCH}" = "armv5tel" ] && rm -rf *.iso
- for i in `ls *.bz2 *.img.gz *.iso`; do
+ for i in `ls *.bz2 *.img.xz *.iso`; do
md5sum $i > $i.md5
done
cd $PWD
buildtoolchain
echo "`date -u '+%b %e %T'`: Create toolchain image for ${BUILD_ARCH}" | tee -a $LOGFILE
test -d $BASEDIR/cache/toolchains || mkdir -p $BASEDIR/cache/toolchains
- cd $BASEDIR && XZ_OPT="-T0 -8" tar -Jc --exclude='log/_build.*.log' -f cache/toolchains/$SNAME-$VERSION-toolchain-$TOOLCHAINVER-${BUILD_ARCH}.tar.xz \
- build/${TOOLS_DIR} build/bin/sh log >> $LOGFILE
+ cd $BASEDIR && tar -cf- --exclude='log/_build.*.log' build/${TOOLS_DIR} build/bin/sh log | xz ${XZ_OPT} \
+ > cache/toolchains/$SNAME-$VERSION-toolchain-$TOOLCHAINVER-${BUILD_ARCH}.tar.xz
md5sum cache/toolchains/$SNAME-$VERSION-toolchain-$TOOLCHAINVER-${BUILD_ARCH}.tar.xz \
> cache/toolchains/$SNAME-$VERSION-toolchain-$TOOLCHAINVER-${BUILD_ARCH}.md5
stdumount