SNAME="ipfire" # Short name
# If you update the version don't forget to update backupiso and add it to core update
VERSION="2.25" # Version number
-CORE="154" # Core Level (Filename)
+CORE="158" # Core Level (Filename)
SLOGAN="www.ipfire.org" # Software slogan
CONFIG_ROOT=/var/ipfire # Configuration rootdir
-NICE=10 # Nice level
MAX_RETRIES=1 # prefetch/check loop
BUILD_IMAGES=1 # Flash and Xen Downloader
KVER=`grep --max-count=1 VER lfs/linux | awk '{ print $3 }'`
GIT_TAG="$(git tag | tail -1)" # Git Tag
GIT_LASTCOMMIT="$(git rev-parse --verify HEAD)" # Last commit
-TOOLCHAINVER=20200924
+TOOLCHAINVER=20210701
+
+# use multicore and max compression
+ZSTD_OPT="-T0 --ultra -22"
###############################################################################
#
CFLAGS_ARCH="-march=armv7-a -mfpu=vfpv3-d16 -mfloat-abi=hard"
;;
- armv5tel)
+ armv6l)
BUILDTARGET="${build_arch}-unknown-linux-gnueabi"
CROSSTARGET="${build_arch}-cross-linux-gnueabi"
BUILD_PLATFORM="arm"
- CFLAGS_ARCH="-march=armv5te -mfloat-abi=soft -fomit-frame-pointer"
- RUSTFLAGS="-Ccodegen-units=1"
+ CFLAGS_ARCH="-march=armv6zk+fp -mfpu=vfp -mfloat-abi=softfp -fomit-frame-pointer"
+ #RUSTFLAGS="-Ccodegen-units=1"
+ ;;
+
+ riscv64)
+ BUILDTARGET="${build_arch}-unknown-linux-gnu"
+ CROSSTARGET="${build_arch}-cross-linux-gnu"
+ BUILD_PLATFORM="riscv"
+ CFLAGS_ARCH="-fstack-clash-protection"
;;
*)
# 128MB of memory. Therefore we find out how
# many processes fit into memory.
local mem_max=$(( ${SYSTEM_MEMORY} / 128 ))
- local cpu_max=$(( ${SYSTEM_PROCESSORS} + 1 ))
+ local cpu_max=$(( ${SYSTEM_PROCESSORS} ))
local parallelism
if [ ${mem_max} -lt ${cpu_max} ]; then
# Use this as default PARALLELISM
DEFAULT_PARALLELISM="${parallelism}"
+ # Limit lauched ninja build jobs to computed parallel value.
+ NINJAJOBS="${parallelism}"
+
# Compression parameters
# We use mode 8 for reasonable memory usage when decompressing
# but with overall good compression
echo "aarch64"
;;
- armv7*|armv6*|armv5*)
- echo "armv5tel"
+ armv7*|armv6*)
+ echo "armv6l"
+ ;;
+
+ riscv64)
+ echo "riscv64"
;;
*)
# Trap on emergency exit
trap "exiterror 'Build process interrupted'" SIGINT SIGTERM SIGKILL SIGSTOP SIGQUIT
- # Resetting our nice level
- if ! renice ${NICE} $$ >/dev/null; then
- exiterror "Failed to set nice level to ${NICE}"
- fi
-
# Checking if running as root user
if [ $(id -u) -ne 0 ]; then
exiterror "root privileges required for building"
# Setup environment
set +h
LC_ALL=POSIX
- export LFS LC_ALL CFLAGS CXXFLAGS DEFAULT_PARALLELISM RUSTFLAGS
+ export LFS LC_ALL CFLAGS CXXFLAGS DEFAULT_PARALLELISM RUSTFLAGS NINJAJOBS
unset CC CXX CPP LD_LIBRARY_PATH LD_PRELOAD
# Make some extra directories
mkdir -p "${BASEDIR}/build${TOOLS_DIR}" 2>/dev/null
mkdir -p $BASEDIR/build/{etc,usr/src} 2>/dev/null
mkdir -p $BASEDIR/build/{dev/{shm,pts},proc,sys}
- mkdir -p $BASEDIR/{cache,ccache/${BUILD_ARCH}} 2>/dev/null
+ mkdir -p $BASEDIR/{cache,ccache/${BUILD_ARCH}/${TOOLCHAINVER}} 2>/dev/null
if [ "${ENABLE_RAMDISK}" = "on" ]; then
mkdir -p $BASEDIR/build/usr/src
mount --bind /proc $BASEDIR/build/proc
mount --bind /sys $BASEDIR/build/sys
mount --bind $BASEDIR/cache $BASEDIR/build/usr/src/cache
- mount --bind $BASEDIR/ccache/${BUILD_ARCH} $BASEDIR/build/usr/src/ccache
+ mount --bind $BASEDIR/ccache/${BUILD_ARCH}/${TOOLCHAINVER} $BASEDIR/build/usr/src/ccache
mount --bind $BASEDIR/config $BASEDIR/build/usr/src/config
mount --bind $BASEDIR/doc $BASEDIR/build/usr/src/doc
mount --bind $BASEDIR/html $BASEDIR/build/usr/src/html
# Run LFS static binary creation scripts one by one
export CCACHE_DIR=$BASEDIR/ccache
export CCACHE_TEMPDIR="/tmp"
- export CCACHE_COMPRESS=1
export CCACHE_COMPILERCHECK="string:toolchain-${TOOLCHAINVER} ${BUILD_ARCH}"
# Remove pre-install list of installed files in case user erase some files before rebuild
BUILD_PLATFORM="${BUILD_PLATFORM}" \
CCACHE_DIR=/usr/src/ccache \
CCACHE_TEMPDIR="${CCACHE_TEMPDIR}" \
- CCACHE_COMPRESS="${CCACHE_COMPRESS}" \
CCACHE_COMPILERCHECK="${CCACHE_COMPILERCHECK}" \
GOCACHE="/usr/src/ccache/go" \
KVER="${KVER}" \
cd $BASEDIR/lfs && env -i \
PATH="${TOOLS_DIR}/ccache/bin:${TOOLS_DIR}/bin:$PATH" \
- CCACHE_DIR="${CCACHE_DIR}" \
+ CCACHE_DIR="${CCACHE_DIR}"/${BUILD_ARCH}/${TOOLCHAINVER} \
CCACHE_TEMPDIR="${CCACHE_TEMPDIR}" \
- CCACHE_COMPRESS="${CCACHE_COMPRESS}" \
CCACHE_COMPILERCHECK="${CCACHE_COMPILERCHECK}" \
CFLAGS="${CFLAGS}" \
CXXFLAGS="${CXXFLAGS}" \
fi
case "${HOST_ARCH},${build_arch}" in
- x86_64,arm*|x86_64,aarch64|i?86,arm*|i?86,aarch64|i?86,x86_64)
+ x86_64,arm*|x86_64,aarch64|x86_64,riscv64|i?86,arm*|i?86,aarch64|i?86,x86_64)
return 0
;;
*)
arm*)
magic="7f454c4601010100000000000000000002002800"
;;
+ riscv64)
+ magic="7f454c460201010000000000000000000200f300"
+ ;;
x86_64)
magic="7f454c4602010100000000000000000002003e00"
;;
# These are working.
;;
- armv5tel:armv5tel|armv5tel:armv5tejl|armv5tel:armv6l|armv5tel:armv7l|armv5tel:aarch64)
+ armv6l:armv6l|armv6l:armv7l|armv6l:aarch64)
# These are working.
;;
- armv5tel:*)
+ armv6l:*)
error=true
;;
esac
export LOGFILE
lfsmake1 stage1
- lfsmake1 ccache PASS=1
lfsmake1 binutils PASS=1
lfsmake1 gcc PASS=1
lfsmake1 linux KCFG="-headers"
lfsmake1 glibc
+ lfsmake1 libxcrypt
lfsmake1 gcc PASS=L
+ lfsmake1 zlib
+ lfsmake1 zstd
lfsmake1 binutils PASS=2
lfsmake1 gcc PASS=2
- lfsmake1 zlib
- lfsmake1 ccache PASS=2
+ lfsmake1 ccache
lfsmake1 tcl
lfsmake1 expect
lfsmake1 dejagnu
lfsmake2 tzdata
lfsmake2 cleanup-toolchain
lfsmake2 zlib
+ lfsmake2 zstd
+ lfsmake2 autoconf
+ lfsmake2 automake
+ lfsmake2 libtool
lfsmake2 binutils
lfsmake2 gmp
- lfsmake2 gmp-compat
lfsmake2 mpfr
lfsmake2 libmpc
+ lfsmake2 libxcrypt
lfsmake2 file
lfsmake2 gcc
lfsmake2 sed
- lfsmake2 autoconf
- lfsmake2 automake
lfsmake2 berkeley
- lfsmake2 berkeley-compat
lfsmake2 coreutils
lfsmake2 iana-etc
lfsmake2 m4
lfsmake2 bison
lfsmake2 ncurses
- lfsmake2 procps
- lfsmake2 libtool
lfsmake2 perl
lfsmake2 readline
- lfsmake2 readline-compat
lfsmake2 bzip2
lfsmake2 xz
+ lfsmake2 lzip
lfsmake2 pcre
- lfsmake2 pcre-compat
+ lfsmake2 pcre2
+ lfsmake2 gettext
+ lfsmake2 attr
+ lfsmake2 acl
lfsmake2 bash
lfsmake2 diffutils
- lfsmake2 e2fsprogs
lfsmake2 ed
lfsmake2 findutils
lfsmake2 flex
lfsmake2 gawk
- lfsmake2 gettext
lfsmake2 go
lfsmake2 grep
lfsmake2 groff
lfsmake2 kbd
lfsmake2 less
lfsmake2 pkg-config
+ lfsmake2 procps
lfsmake2 make
lfsmake2 man
lfsmake2 net-tools
lfsmake2 texinfo
lfsmake2 util-linux
lfsmake2 vim
+ lfsmake2 e2fsprogs
}
buildipfire() {
lfsmake2 initscripts
lfsmake2 backup
lfsmake2 openssl
- [ "${BUILD_ARCH}" = "i586" ] && lfsmake2 openssl KCFG='-sse2'
lfsmake2 kmod
lfsmake2 udev
lfsmake2 popt
lfsmake2 screen
lfsmake2 elfutils
- case "${BUILD_ARCH}" in
- x86_64|aarch64)
- lfsmake2 linux KCFG=""
-# lfsmake2 backports KCFG=""
-# lfsmake2 e1000e KCFG=""
-# lfsmake2 igb KCFG=""
-# lfsmake2 ixgbe KCFG=""
- lfsmake2 xtables-addons KCFG=""
- lfsmake2 linux-initrd KCFG=""
- ;;
- i586)
- # x86 kernel build
- lfsmake2 linux KCFG=""
-# lfsmake2 backports KCFG=""
-# lfsmake2 e1000e KCFG=""
-# lfsmake2 igb KCFG=""
-# lfsmake2 ixgbe KCFG=""
- lfsmake2 xtables-addons KCFG=""
- lfsmake2 linux-initrd KCFG=""
- ;;
-
- armv5tel)
- # 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 xtables-addons KCFG="-multi"
- lfsmake2 linux-initrd KCFG="-multi"
- ;;
- esac
- lfsmake2 xtables-addons USPACE="1"
+ # Kernelbuild ... current we have no platform that need
+ # multi kernel builds so KCFG is empty
+ lfsmake2 linux KCFG=""
+ lfsmake2 rtl8189es KCFG=""
+ lfsmake2 rtl8812au KCFG=""
+ lfsmake2 xradio KCFG=""
+ lfsmake2 xtables-addons KCFG=""
+ lfsmake2 linux-initrd KCFG=""
+
+ lfsmake2 xtables-addons USPACE="1"
lfsmake2 libgpg-error
lfsmake2 libgcrypt
lfsmake2 libassuan
lfsmake2 ninja
lfsmake2 meson
lfsmake2 libjpeg
- lfsmake2 libjpeg-compat
lfsmake2 openjpeg
lfsmake2 libexif
lfsmake2 libpng
lfsmake2 slang
lfsmake2 newt
lfsmake2 libsmooth
- lfsmake2 attr
- lfsmake2 acl
lfsmake2 libcap
lfsmake2 libcap-ng
lfsmake2 pciutils
lfsmake2 arping
lfsmake2 beep
lfsmake2 libssh
+ lfsmake2 libinih
lfsmake2 cdrkit
lfsmake2 dosfstools
lfsmake2 reiserfsprogs
lfsmake2 perl-Device-Modem
lfsmake2 perl-Apache-Htpasswd
lfsmake2 perl-Parse-Yapp
+ lfsmake2 perl-Data-UUID
lfsmake2 gnupg
lfsmake2 hdparm
lfsmake2 sdparm
- lfsmake2 mtools
lfsmake2 whatmask
lfsmake2 libtirpc
lfsmake2 conntrack-tools
- lfsmake2 libupnp
lfsmake2 ipaddr
lfsmake2 iputils
lfsmake2 l7-protocols
lfsmake2 Mail-Tools
lfsmake2 MIME-Tools
lfsmake2 Net-Server
+ lfsmake2 Canary-Stability
lfsmake2 Convert-TNEF
lfsmake2 Convert-UUlib
lfsmake2 Archive-Tar
lfsmake2 Crypt-PasswdMD5
lfsmake2 Net-Telnet
lfsmake2 python-setuptools
- lfsmake2 python-clientform
- lfsmake2 python-mechanize
- lfsmake2 python-feedparser
- lfsmake2 python-rssdler
- lfsmake2 python-inotify
- lfsmake2 python-docutils
- lfsmake2 python-daemon
- lfsmake2 python-ipaddress
+ lfsmake2 python3-setuptools
+ lfsmake2 python3-inotify
+ lfsmake2 python3-docutils
+ lfsmake2 python3-daemon
lfsmake2 glib
lfsmake2 ntp
lfsmake2 openssh
lfsmake2 spandsp
lfsmake2 lz4
lfsmake2 lzo
- lfsmake2 zstd
lfsmake2 openvpn
lfsmake2 mpage
lfsmake2 dbus
lfsmake2 libmad
lfsmake2 libogg
lfsmake2 libvorbis
- lfsmake2 libdvbpsi
lfsmake2 flac
lfsmake2 lame
lfsmake2 sox
lfsmake2 collectd
lfsmake2 elinks
lfsmake2 igmpproxy
- lfsmake2 fbset
lfsmake2 opus
- lfsmake2 python-six
- lfsmake2 python-pyparsing
+ lfsmake2 python3-pyparsing
lfsmake2 spice-protocol
lfsmake2 spice
lfsmake2 sdl
lfsmake2 libusbredir
lfsmake2 libseccomp
lfsmake2 qemu
- lfsmake2 sane
lfsmake2 netpbm
lfsmake2 netsnmpd
lfsmake2 nagios_nrpe
lfsmake2 iw
lfsmake2 wpa_supplicant
lfsmake2 hostapd
- lfsmake2 pycurl
- lfsmake2 urlgrabber
lfsmake2 syslinux
lfsmake2 tftpd
lfsmake2 cpufrequtils
lfsmake2 gutenprint
lfsmake2 apcupsd
+ lfsmake2 fireperf
lfsmake2 iperf
lfsmake2 iperf3
lfsmake2 7zip
lfsmake2 perl-DBD-SQLite
lfsmake2 perl-File-ReadBackwards
lfsmake2 openvmtools
- lfsmake2 libmicrohttpd
- lfsmake2 motion
lfsmake2 joe
lfsmake2 monit
lfsmake2 nut
lfsmake2 watchdog
lfsmake2 libpri
- lfsmake2 libsrtp
- lfsmake2 asterisk
lfsmake2 usb_modeswitch
lfsmake2 usb_modeswitch_data
lfsmake2 zerofree
lfsmake2 minicom
lfsmake2 ddrescue
- lfsmake2 miniupnpd
lfsmake2 client175
lfsmake2 powertop
lfsmake2 parted
lfsmake2 wireless-regdb
lfsmake2 crda
lfsmake2 libsolv
- lfsmake2 python-distutils-extra
- lfsmake2 python-lzma
- 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-urllib3
lfsmake2 python3-botocore
- lfsmake2 python3-llfuse
lfsmake2 python3-msgpack
lfsmake2 aws-cli
lfsmake2 transmission
- lfsmake2 dpfhack
- lfsmake2 lcd4linux
lfsmake2 mtr
lfsmake2 minidlna
lfsmake2 acpid
lfsmake2 fping
lfsmake2 telnet
lfsmake2 xinetd
- lfsmake2 gpgme
- lfsmake2 pygpgme
- lfsmake2 pakfire3
lfsmake2 stress
lfsmake2 libstatgrab
lfsmake2 sarg
lfsmake2 nginx
- lfsmake2 sendEmail
lfsmake2 sysbench
lfsmake2 strace
lfsmake2 ltrace
lfsmake2 ncdu
lfsmake2 lshw
lfsmake2 socat
+ lfsmake2 libcdada
+ lfsmake2 pmacct
}
buildinstaller() {
cd $BASEDIR
- # remove not useable iso on armv5tel (needed to build flash images)
- [ "${BUILD_ARCH}" = "armv5tel" ] && rm -rf *.iso
+ # remove not useable iso on armv6l (needed to build flash images)
+ [ "${BUILD_ARCH}" = "armv6l" ] && rm -rf *.iso
for i in $(ls *.bz2 *.img.xz *.iso 2>/dev/null); do
md5sum $i > $i.md5
# Clear screen
${INTERACTIVE} && clear
- PACKAGE=`ls -v -r $BASEDIR/cache/toolchains/$SNAME-$VERSION-toolchain-$TOOLCHAINVER-${BUILD_ARCH}.tar.xz 2> /dev/null | head -n 1`
+ PACKAGE="$BASEDIR/cache/toolchains/$SNAME-$VERSION-toolchain-$TOOLCHAINVER-${BUILD_ARCH}.tar.zst"
#only restore on a clean disk
if [ ! -e "${BASEDIR}/build${TOOLS_DIR}/.toolchain-successful" ]; then
if [ ! -n "$PACKAGE" ]; then
prepareenv
buildtoolchain
else
- PACKAGENAME=${PACKAGE%.tar.xz}
+ PACKAGENAME=${PACKAGE%.tar.zst}
print_build_stage "Packaged toolchain compilation"
if [ `md5sum $PACKAGE | awk '{print $1}'` == `cat $PACKAGENAME.md5 | awk '{print $1}'` ]; then
tar axf $PACKAGE
for i in `mount | grep $BASEDIR | sed 's/^.*loop=\(.*\))/\1/'`; do
$LOSETUP -d $i 2>/dev/null
done
- for i in `mount | grep $BASEDIR | cut -d " " -f 1`; do
- umount $i
- done
+ #for i in `mount | grep $BASEDIR | cut -d " " -f 1`; do
+ # umount $i
+ #done
stdumount
for i in `seq 0 7`; do
if ( losetup /dev/loop${i} 2>/dev/null | grep -q "/install/images" ); then
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 && 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 \
+ cd $BASEDIR && tar -cf- --exclude='log/_build.*.log' build/${TOOLS_DIR} build/bin/sh log \
+ | zstd ${ZSTD_OPT} > cache/toolchains/$SNAME-$VERSION-toolchain-$TOOLCHAINVER-${BUILD_ARCH}.tar.zst
+ md5sum cache/toolchains/$SNAME-$VERSION-toolchain-$TOOLCHAINVER-${BUILD_ARCH}.tar.zst \
> cache/toolchains/$SNAME-$VERSION-toolchain-$TOOLCHAINVER-${BUILD_ARCH}.md5
stdumount
;;
gettoolchain)
# arbitrary name to be updated in case of new toolchain package upload
PACKAGE=$SNAME-$VERSION-toolchain-$TOOLCHAINVER-${BUILD_ARCH}
- if [ ! -f $BASEDIR/cache/toolchains/$PACKAGE.tar.xz ]; then
+ if [ ! -f $BASEDIR/cache/toolchains/$PACKAGE.tar.zst ]; then
URL_TOOLCHAIN=`grep URL_TOOLCHAIN lfs/Config | awk '{ print $3 }'`
test -d $BASEDIR/cache/toolchains || mkdir -p $BASEDIR/cache/toolchains
echo "`date -u '+%b %e %T'`: Load toolchain image for ${BUILD_ARCH}" | tee -a $LOGFILE
cd $BASEDIR/cache/toolchains
- wget -U "IPFireSourceGrabber/2.x" $URL_TOOLCHAIN/$PACKAGE.tar.xz $URL_TOOLCHAIN/$PACKAGE.md5 >& /dev/null
+ wget -U "IPFireSourceGrabber/2.x" $URL_TOOLCHAIN/$PACKAGE.tar.zst $URL_TOOLCHAIN/$PACKAGE.md5 >& /dev/null
if [ $? -ne 0 ]; then
echo "`date -u '+%b %e %T'`: error downloading $PACKAGE toolchain for ${BUILD_ARCH} machine" | tee -a $LOGFILE
else
$BASEDIR/tools/check_strings.pl de > $BASEDIR/doc/language_issues.de
$BASEDIR/tools/check_strings.pl fr > $BASEDIR/doc/language_issues.fr
$BASEDIR/tools/check_strings.pl es > $BASEDIR/doc/language_issues.es
- $BASEDIR/tools/check_strings.pl es > $BASEDIR/doc/language_issues.pl
+ $BASEDIR/tools/check_strings.pl pl > $BASEDIR/doc/language_issues.pl
$BASEDIR/tools/check_strings.pl ru > $BASEDIR/doc/language_issues.ru
$BASEDIR/tools/check_strings.pl nl > $BASEDIR/doc/language_issues.nl
$BASEDIR/tools/check_strings.pl tr > $BASEDIR/doc/language_issues.tr