# 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-2018 IPFire Team <info@ipfire.org>. #
+# Copyright (C) 2007-2019 IPFire Team <info@ipfire.org>. #
# #
############################################################################
#
NAME="IPFire" # Software name
SNAME="ipfire" # Short name
-VERSION="2.19" # Version number
-CORE="119" # Core Level (Filename)
-PAKFIRE_CORE="118" # Core Level (PAKFIRE)
+VERSION="2.21" # Version number
+CORE="128" # Core Level (Filename)
+PAKFIRE_CORE="127" # 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=20180210
+TOOLCHAINVER=20181030
###############################################################################
#
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)
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() {
case "${HOST_ARCH}" in
- x86_64|i686|i586)
+ x86_64)
+ echo "x86_64"
+ ;;
+ i?86)
echo "i586"
;;
# 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) \
"$@"
done | sort -u > "${path}/LINGUAS"
}
+contributors() {
+ local commits name
+
+ git shortlog --summary --numbered | while read -r commits name; do
+ echo "${name}"
+ done | grep -vE -e "^(alpha197|morlix|root|ummeegge)$" -e "via Development$" -e "@" -e "#$"
+}
+
+update_contributors() {
+ echo -n "Updating list of contributors"
+
+ local contributors="$(contributors | paste -sd , - | sed -e "s/,/&\\\\n/g")"
+
+ # Edit contributors into credits.cgi
+ awk -i inplace \
+ "/<!-- CONTRIBUTORS -->/{ p=1; print; printf \"${contributors}\n\"}/<!-- END -->/{ p=0 } !p" \
+ "${BASEDIR}/html/cgi-bin/credits.cgi"
+
+ print_status DONE
+ return 0
+}
+
# Load configuration file
if [ -f .config ]; then
. .config
lfsmake1 gcc PASS=L
lfsmake1 binutils PASS=2
lfsmake1 gcc PASS=2
+ lfsmake1 zlib
lfsmake1 ccache PASS=2
lfsmake1 tcl
lfsmake1 expect
lfsmake2 readline
lfsmake2 readline-compat
lfsmake2 bzip2
+ lfsmake2 xz
lfsmake2 pcre
lfsmake2 pcre-compat
lfsmake2 bash
lfsmake2 util-linux
lfsmake2 udev
lfsmake2 vim
- lfsmake2 xz
- lfsmake2 paxctl
}
buildipfire() {
lfsmake2 configroot
lfsmake2 initscripts
lfsmake2 backup
+ lfsmake2 openssl
+ [ "${BUILD_ARCH}" = "i586" ] && lfsmake2 openssl KCFG='-sse2'
+ lfsmake2 popt
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 libaio
lfsmake2 lvm2
lfsmake2 multipath-tools
lfsmake2 freetype
lfsmake2 grub
+ lfsmake2 efivar
+ lfsmake2 efibootmgr
lfsmake2 libmnl
lfsmake2 libnfnetlink
lfsmake2 libnetfilter_queue
lfsmake2 libnetfilter_cthelper
lfsmake2 libnetfilter_cttimeout
lfsmake2 iptables
+ lfsmake2 screen
+ lfsmake2 elfutils
case "${BUILD_ARCH}" in
- x86_64)
+ x86_64|aarch64)
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 libgpg-error
lfsmake2 libgcrypt
lfsmake2 libassuan
lfsmake2 nettle
+ lfsmake2 json-c
+ lfsmake2 libconfig
lfsmake2 libevent
lfsmake2 libevent2
lfsmake2 expat
lfsmake2 libtiff
lfsmake2 libart
lfsmake2 gd
- lfsmake2 popt
lfsmake2 slang
lfsmake2 newt
lfsmake2 libsmooth
lfsmake2 libxml2
lfsmake2 libxslt
lfsmake2 BerkeleyDB
- lfsmake2 mysql
lfsmake2 cyrus-sasl
lfsmake2 openldap
lfsmake2 apache2
lfsmake2 bootstrap
lfsmake2 arping
lfsmake2 beep
- lfsmake2 dvdrtools
+ lfsmake2 libarchive
+ lfsmake2 cmake
+ lfsmake2 cdrkit
lfsmake2 dosfstools
lfsmake2 reiserfsprogs
lfsmake2 xfsprogs
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 lz4
lfsmake2 lzo
lfsmake2 openvpn
- lfsmake2 pammysql
lfsmake2 mpage
lfsmake2 dbus
lfsmake2 intltool
lfsmake2 libdaemon
+ lfsmake2 avahi
lfsmake2 cups
lfsmake2 lcms2
lfsmake2 ghostscript
lfsmake2 mc
lfsmake2 wget
lfsmake2 bridge-utils
- lfsmake2 screen
lfsmake2 smartmontools
lfsmake2 htop
lfsmake2 chkconfig
lfsmake2 flac
lfsmake2 lame
lfsmake2 sox
+ lfsmake2 soxr
lfsmake2 libshout
lfsmake2 xvid
lfsmake2 libmpeg2
- lfsmake2 libarchive
- lfsmake2 cmake
lfsmake2 gnump3d
lfsmake2 rsync
- lfsmake2 tcpwrapper
lfsmake2 libtirpc
lfsmake2 rpcbind
+ lfsmake2 keyutils
lfsmake2 nfs
lfsmake2 gnu-netcat
lfsmake2 ncat
lfsmake2 nagios_nrpe
lfsmake2 nagios-plugins
lfsmake2 icinga
+ lfsmake2 observium-agent
lfsmake2 ebtables
lfsmake2 directfb
lfsmake2 faad2
+ lfsmake2 alac
lfsmake2 ffmpeg
lfsmake2 vdr
lfsmake2 vdr_streamdev
lfsmake2 mpd
lfsmake2 libmpdclient
lfsmake2 mpc
+ lfsmake2 perl-Net-CIDR-Lite
lfsmake2 perl-Net-SMTP-SSL
lfsmake2 perl-MIME-Base64
lfsmake2 perl-Authen-SASL
lfsmake2 vdradmin
lfsmake2 miau
lfsmake2 perl-DBI
- lfsmake2 perl-DBD-mysql
lfsmake2 perl-DBD-SQLite
lfsmake2 perl-File-ReadBackwards
lfsmake2 openvmtools
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 python-progressbar
lfsmake2 python-xattr
lfsmake2 ddns
+ lfsmake2 python3-setuptools
+ lfsmake2 python3-setuptools-scm
+ lfsmake2 python3-six
+ lfsmake2 python3-dateutil
+ lfsmake2 python3-jmespath
+ lfsmake2 python3-colorama
+ lfsmake2 python3-docutils
+ lfsmake2 python3-yaml
+ lfsmake2 python3-s3transfer
+ lfsmake2 python3-rsa
+ lfsmake2 python3-pyasn1
+ lfsmake2 python3-botocore
+ lfsmake2 python3-llfuse
+ lfsmake2 aws-cli
lfsmake2 transmission
lfsmake2 dpfhack
lfsmake2 lcd4linux
lfsmake2 sendEmail
lfsmake2 sysbench
lfsmake2 strace
- lfsmake2 elfutils
lfsmake2 ltrace
lfsmake2 ipfire-netboot
lfsmake2 lcdproc
lfsmake2 pigz
lfsmake2 tmux
lfsmake2 perl-Text-CSV_XS
- lfsmake2 swconfig
lfsmake2 haproxy
lfsmake2 ipset
lfsmake2 lua
lfsmake2 dnsdist
lfsmake2 bird
+ lfsmake2 frr
lfsmake2 dmidecode
lfsmake2 mcelog
lfsmake2 rtpproxy
lfsmake2 wio
lfsmake2 iftop
lfsmake2 mdns-repeater
+ lfsmake2 i2c-tools
+ lfsmake2 nss-myhostname
+ lfsmake2 dehydrated
+ lfsmake2 shairport-sync
}
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
rm -f $BASEDIR/ipfire-*
print_status DONE
;;
+docker)
+ # Build the docker image if it does not exist, yet
+ if ! docker images -a | grep -q ^ipfire-builder; then
+ if docker build -t ipfire-builder ${BASEDIR}/tools/docker; then
+ print_status DONE
+ else
+ print_status FAIL
+ exit 1
+ fi
+ fi
+
+ # Run the container and enter a shell
+ docker run -it --privileged -v "${BASEDIR}:/build" -w "/build" ipfire-builder bash -l
+ ;;
downloadsrc)
if [ ! -d $BASEDIR/cache ]; then
mkdir $BASEDIR/cache
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
update_language_list ${BASEDIR}/src/setup/po
print_status DONE
;;
+update-contributors)
+ update_contributors
+ ;;
*)
- echo "Usage: $0 {build|changelog|clean|gettoolchain|downloadsrc|shell|sync|toolchain}"
+ echo "Usage: $0 {build|changelog|clean|gettoolchain|downloadsrc|shell|sync|toolchain|update-contributors}"
cat doc/make.sh-usage
;;
esac