# 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-2019 IPFire Team <info@ipfire.org>. #
# #
############################################################################
#
NAME="IPFire" # Software name
SNAME="ipfire" # Short name
-VERSION="2.19" # Version number
-CORE="117" # Core Level (Filename)
-PAKFIRE_CORE="116" # 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=20171121
+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)
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}"
local mem_max=$(( ${HOST_MEM} / 192 ))
local processors="$(system_processors)"
- local cpu_max=$(( ${processors} * 2 ))
+ local cpu_max=$(( ${processors} + 1 ))
local parallelism
if [ ${mem_max} -lt ${cpu_max} ]; then
parallelism=${cpu_max}
fi
+ # limit to -j23 because perl will not build
+ # more
+ if [ ${parallelism} -gt 23 ]; then
+ parallelism=23
+ fi
+
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) \
"$@"
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
local PS1='\u:\w$ '
enterchroot \
- bash -x -c "cd /usr/src/lfs && \
+ ${EXTRA_PATH}bash -x -c "cd /usr/src/lfs && \
MAKETUNING=${MAKETUNING} \
make -f $* \
LFS_BASEDIR=/usr/src install" \
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
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 readline
lfsmake2 readline-compat
lfsmake2 bzip2
+ lfsmake2 xz
lfsmake2 pcre
lfsmake2 pcre-compat
lfsmake2 bash
lfsmake2 jwhois
lfsmake2 kbd
lfsmake2 less
+ lfsmake2 pkg-config
lfsmake2 make
lfsmake2 man
lfsmake2 kmod
lfsmake2 util-linux
lfsmake2 udev
lfsmake2 vim
- lfsmake2 xz
- lfsmake2 paxctl
}
buildipfire() {
lfsmake2 configroot
lfsmake2 initscripts
lfsmake2 backup
- lfsmake2 pkg-config
+ 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=""
;;
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 libevent2-compat
lfsmake2 expat
lfsmake2 apr
lfsmake2 aprutil
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 php
lfsmake2 web-user-interface
lfsmake2 flag-icons
lfsmake2 jquery
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 wireless
lfsmake2 pakfire
lfsmake2 spandsp
+ 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 postfix
lfsmake2 fetchmail
lfsmake2 cyrus-imapd
- lfsmake2 openmailadmin
lfsmake2 clamav
lfsmake2 spamassassin
lfsmake2 amavisd
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 qemu
lfsmake2 sane
lfsmake2 netpbm
- lfsmake2 phpSANE
- lfsmake2 tunctl
lfsmake2 netsnmpd
- lfsmake2 nagios
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 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 cacti
lfsmake2 openvmtools
- lfsmake2 nagiosql
lfsmake2 motion
lfsmake2 joe
lfsmake2 monit
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 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 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 dnsdist
lfsmake2 bird
+ lfsmake2 frr
lfsmake2 dmidecode
lfsmake2 mcelog
lfsmake2 rtpproxy
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
+ lfsmake2 nss-myhostname
+ lfsmake2 dehydrated
+ lfsmake2 shairport-sync
}
buildinstaller() {
export LOGFILE
lfsmake2 memtest
lfsmake2 installer
- lfsmake1 strip
+ # use toolchain bash for chroot to strip
+ EXTRA_PATH=${TOOLS_DIR}/bin/ lfsmake2 strip
}
buildpackages() {
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