NAME="IPFire" # Software name
SNAME="ipfire" # Short name
-VERSION="2.19" # Version number
-CORE="120" # Core Level (Filename)
-PAKFIRE_CORE="120" # Core Level (PAKFIRE)
+VERSION="2.21" # Version number
+CORE="127" # Core Level (Filename)
+PAKFIRE_CORE="126" # 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=20180213
+TOOLCHAINVER=20181030
###############################################################################
#
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
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 openssl-compat
+ lfsmake2 popt
lfsmake2 libusb
lfsmake2 libusb-compat
lfsmake2 libpcap
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 elfutils
case "${BUILD_ARCH}" in
- x86_64)
+ x86_64|aarch64)
lfsmake2 linux KCFG=""
# lfsmake2 backports KCFG=""
# lfsmake2 e1000e KCFG=""
lfsmake2 linux-initrd KCFG="-multi"
;;
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 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 bootstrap
lfsmake2 arping
lfsmake2 beep
- lfsmake2 dvdrtools
+ lfsmake2 libarchive
+ lfsmake2 cmake
+ lfsmake2 cdrkit
lfsmake2 dosfstools
lfsmake2 reiserfsprogs
lfsmake2 xfsprogs
lfsmake2 python-ipaddress
lfsmake2 glib
lfsmake2 GeoIP
- lfsmake2 noip_updater
lfsmake2 ntp
lfsmake2 openssh
lfsmake2 fontconfig
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 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 parted
lfsmake2 swig
lfsmake2 u-boot
+ lfsmake2 u-boot-kirkwood
lfsmake2 python-typing
lfsmake2 python-m2crypto
lfsmake2 wireless-regdb
lfsmake2 python-progressbar
lfsmake2 python-xattr
lfsmake2 ddns
+ 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 aws-cli
lfsmake2 transmission
lfsmake2 dpfhack
lfsmake2 lcd4linux
lfsmake2 lua
lfsmake2 dnsdist
lfsmake2 bird
+ lfsmake2 frr
lfsmake2 dmidecode
lfsmake2 mcelog
lfsmake2 rtpproxy
lfsmake2 iftop
lfsmake2 mdns-repeater
lfsmake2 i2c-tools
+ lfsmake2 nss-myhostname
+ lfsmake2 dehydrated
+ lfsmake2 shairport-sync
}
buildinstaller() {
lfsmake2 flash-images
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