#!/bin/bash
-############################################################################
-# #
-# This file is part of the IPFire Firewall. #
-# #
-# IPFire is free software; you can redistribute it and/or modify #
-# it under the terms of the GNU General Public License as published by #
-# the Free Software Foundation; either version 2 of the License, or #
-# (at your option) any later version. #
-# #
-# IPFire is distributed in the hope that it will be useful, #
-# but WITHOUT ANY WARRANTY; without even the implied warranty of #
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the #
-# GNU General Public License for more details. #
-# #
-# You should have received a copy of the GNU General Public License #
-# 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-2022 IPFire Team <info@ipfire.org>. #
-# #
-############################################################################
-#
+###############################################################################
+# #
+# IPFire.org - A linux based firewall #
+# Copyright (C) 2007-2022 IPFire Team <info@ipfire.org> #
+# #
+# This program is free software: you can redistribute it and/or modify #
+# it under the terms of the GNU General Public License as published by #
+# the Free Software Foundation, either version 3 of the License, or #
+# (at your option) any later version. #
+# #
+# This program is distributed in the hope that it will be useful, #
+# but WITHOUT ANY WARRANTY; without even the implied warranty of #
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the #
+# GNU General Public License for more details. #
+# #
+# You should have received a copy of the GNU General Public License #
+# along with this program. If not, see <http://www.gnu.org/licenses/>. #
+# #
+###############################################################################
NAME="IPFire" # Software name
SNAME="ipfire" # Short name
# If you update the version don't forget to update backupiso and add it to core update
VERSION="2.27" # Version number
-CORE="165" # Core Level (Filename)
+CORE="171" # Core Level (Filename)
SLOGAN="www.ipfire.org" # Software slogan
CONFIG_ROOT=/var/ipfire # Configuration rootdir
MAX_RETRIES=1 # prefetch/check loop
GIT_TAG="$(git tag | tail -1)" # Git Tag
GIT_LASTCOMMIT="$(git rev-parse --verify HEAD)" # Last commit
-TOOLCHAINVER=20220203
+TOOLCHAINVER=20220808
# use multicore and max compression
ZSTD_OPT="-T0 --ultra -22"
umount $BASEDIR/build/tmp 2>/dev/null;
}
-now() {
- date -u "+%s"
-}
-
format_runtime() {
local seconds=${1}
esac
# Setup ccache cache size
- enterchroot ccache --max-size="${CCACHE_CACHE_SIZE}" >/dev/null
+ enterchroot ccache --max-size="${CCACHE_CACHE_SIZE}"
}
enterchroot() {
fi
cd $BASEDIR/lfs && make -s -f $* LFS_BASEDIR=$BASEDIR BUILD_ARCH="${BUILD_ARCH}" \
- MESSAGE="$1\t md5sum" md5 >> $LOGFILE 2>&1
+ MESSAGE="$1\t b2sum" b2 >> $LOGFILE 2>&1
if [ $? -ne 0 ]; then
- exiterror "md5sum error in $1, check file in cache or signature"
+ exiterror "BLAKE2 checksum error in $1, check file in cache or signature"
fi
return 0 # pass all!
wait_until_finished() {
local pid=${1}
- local start_time=$(now)
+ local start_time="${SECONDS}"
# Show progress
if ${INTERACTIVE}; then
local runtime
while kill -0 ${pid} 2>/dev/null; do
- print_runtime $(( $(now) - ${start_time} ))
+ print_runtime $(( SECONDS - start_time ))
# Wait a little
sleep 1
local ret=$?
if ! ${INTERACTIVE}; then
- print_runtime $(( $(now) - ${start_time} ))
+ print_runtime $(( SECONDS - start_time ))
fi
return ${ret}
}
qemu_environ() {
- local env
+ local env="QEMU_TARGET_HELPER=${QEMU_TARGET_HELPER}"
# Don't add anything if qemu is not used.
if ! qemu_is_required; then
arm*)
QEMU_CPU="${QEMU_CPU:-cortex-a9}"
+ env="${env} QEMU_CPU=${QEMU_CPU}"
+ ;;
+ riscv64)
+ QEMU_CPU="${QEMU_CPU:-sifive-u54}"
+
env="${env} QEMU_CPU=${QEMU_CPU}"
;;
esac
file_is_static() {
local file="${1}"
- file ${file} 2>/dev/null | grep -q "statically linked"
+ file -L "${file}" 2>/dev/null | grep -q "statically linked"
}
update_language_list() {
fi
buildtoolchain() {
- local error=false
- case "${BUILD_ARCH}:${HOST_ARCH}" in
- # x86_64
- x86_64:x86_64)
- # This is working.
- ;;
-
- # ARM
- arvm7hl:armv7hl|armv7hl:armv7l)
- # These are working.
- ;;
-
- armv6l:armv6l|armv6l:armv7l|armv6l:aarch64)
- # These are working.
- ;;
- armv6l:*)
- error=true
- ;;
- esac
-
- ${error} && \
- exiterror "Cannot build ${BUILD_ARCH} toolchain on $(uname -m). Please use the download if any."
-
local gcc=$(type -p gcc)
if [ -z "${gcc}" ]; then
exiterror "Could not find GCC. You will need a working build enviroment in order to build the toolchain."
lfsmake2 libxcrypt
lfsmake2 file
lfsmake2 gcc
+ lfsmake2 attr
+ lfsmake2 acl
lfsmake2 sed
lfsmake2 berkeley
lfsmake2 coreutils
lfsmake2 pcre
lfsmake2 pcre2
lfsmake2 gettext
- lfsmake2 attr
- lfsmake2 acl
lfsmake2 bash
lfsmake2 diffutils
lfsmake2 ed
lfsmake2 pkg-config
lfsmake2 procps
lfsmake2 make
+ lfsmake2 libpipeline
lfsmake2 man
lfsmake2 net-tools
lfsmake2 patch
lfsmake2 popt
lfsmake2 libedit
lfsmake2 libusb
- lfsmake2 libusb-compat
lfsmake2 libpcap
lfsmake2 ppp
lfsmake2 pptp
# multi kernel builds so KCFG is empty
lfsmake2 linux KCFG=""
lfsmake2 rtl8189es KCFG=""
+ lfsmake2 rtl8189fs KCFG=""
lfsmake2 rtl8812au KCFG=""
lfsmake2 rtl8822bu KCFG=""
+ lfsmake2 rtl8821cu KCFG=""
lfsmake2 xradio KCFG=""
lfsmake2 linux-initrd KCFG=""
lfsmake2 libgcrypt
lfsmake2 libassuan
lfsmake2 nettle
+ lfsmake2 libsodium
lfsmake2 json-c
lfsmake2 libconfig
- lfsmake2 libevent
lfsmake2 libevent2
lfsmake2 expat
lfsmake2 apr
lfsmake2 rust-proc-macro-hack
lfsmake2 rust-indoc-impl
lfsmake2 rust-indoc
+ lfsmake2 rust-indoc-0.3.6
lfsmake2 rust-instant
lfsmake2 rust-lock_api
lfsmake2 rust-smallvec
lfsmake2 rust-parking_lot
lfsmake2 rust-paste-impl
lfsmake2 rust-paste
+ lfsmake2 rust-paste-0.1.18
lfsmake2 rust-ctor
lfsmake2 rust-ghost
lfsmake2 rust-inventory-impl
lfsmake2 rust-pyo3-macros-backend
lfsmake2 rust-pyo3-macros
lfsmake2 rust-pyo3
+ lfsmake2 rust-num-traits
+ lfsmake2 rust-num-integer
+ lfsmake2 rust-num_threads
+ lfsmake2 rust-time
+ lfsmake2 rust-chrono
+ lfsmake2 rust-asn1_derive
+ lfsmake2 rust-asn1
+ lfsmake2 rust-proc-macro-error-attr
+ lfsmake2 rust-proc-macro-error
+ lfsmake2 rust-Inflector
+ lfsmake2 rust-ouroboros_macro
+ lfsmake2 rust-aliasable
+ lfsmake2 rust-stable_deref_trait
+ lfsmake2 rust-ouroboros
+ lfsmake2 rust-base64
+ lfsmake2 rust-pem
lfsmake2 gdb
lfsmake2 grub
+ lfsmake2 mandoc
lfsmake2 efivar
lfsmake2 efibootmgr
lfsmake2 libtasn1
lfsmake2 ca-certificates
lfsmake2 fireinfo
lfsmake2 libnet
- lfsmake2 libnl
lfsmake2 libnl-3
lfsmake2 libidn
lfsmake2 nasm
lfsmake2 libexif
lfsmake2 libpng
lfsmake2 libtiff
- lfsmake2 libart
lfsmake2 gd
lfsmake2 slang
lfsmake2 newt
lfsmake2 perl-HTTP-Date
lfsmake2 gnupg
lfsmake2 hdparm
- lfsmake2 sdparm
lfsmake2 whatmask
lfsmake2 libtirpc
lfsmake2 conntrack-tools
lfsmake2 perl-Digest-SHA1
lfsmake2 perl-Digest-HMAC
lfsmake2 perl-libwww
- lfsmake2 perl-LWP-Protocol-https
+ lfsmake2 perl-LWP-Protocol-https
lfsmake2 perl-Net-HTTP
lfsmake2 perl-Net-DNS
lfsmake2 perl-Net-IPv4Addr
lfsmake2 perl-XML-Parser
lfsmake2 perl-Crypt-PasswdMD5
lfsmake2 perl-Net-Telnet
+ lfsmake2 perl-JSON
lfsmake2 python3-setuptools
lfsmake2 python3-inotify
lfsmake2 python3-docutils
lfsmake2 pango
lfsmake2 rrdtool
lfsmake2 setup
- lfsmake2 libdnet
lfsmake2 jansson
lfsmake2 yaml
lfsmake2 libhtp
lfsmake2 ragel
lfsmake2 hyperscan
lfsmake2 suricata
- lfsmake2 oinkmaster
lfsmake2 ids-ruleset-sources
+ lfsmake2 ipblocklist-sources
lfsmake2 squid
lfsmake2 squidguard
lfsmake2 calamaris
lfsmake2 poppler-data
lfsmake2 cups-filters
lfsmake2 epson-inkjet-printer-escpr
+ lfsmake2 cups-pdf
lfsmake2 foomatic
lfsmake2 hplip
lfsmake2 cifs-utils
lfsmake2 libusbredir
lfsmake2 libseccomp
lfsmake2 qemu
- lfsmake2 netpbm
lfsmake2 netsnmpd
lfsmake2 nagios_nrpe
lfsmake2 nagios-plugins
lfsmake2 vdr_dvbapi
lfsmake2 vdr_eepg
lfsmake2 w_scan
+ lfsmake2 fmt
lfsmake2 mpd
lfsmake2 libmpdclient
lfsmake2 mpc
lfsmake2 monit
lfsmake2 nut
lfsmake2 watchdog
- lfsmake2 libpri
lfsmake2 usb_modeswitch
lfsmake2 usb_modeswitch_data
lfsmake2 zerofree
lfsmake2 u-boot
lfsmake2 u-boot-friendlyarm
lfsmake2 wireless-regdb
- lfsmake2 libsolv
lfsmake2 ddns
+ lfsmake2 python3-pycparser
lfsmake2 python3-charset-normalizer
+ lfsmake2 python3-certifi
+ lfsmake2 python3-idna
lfsmake2 python3-requests
lfsmake2 python3-toml
lfsmake2 python3-pyproject2setuppy
lfsmake2 python3-tomli
+ lfsmake2 python3-pep517
+ lfsmake2 python3-build
+ lfsmake2 python3-install
+ lfsmake2 python3-urllib3
+ lfsmake2 python3-flit
+ lfsmake2 python3-packaging
lfsmake2 python3-typing-extensions
lfsmake2 python3-semantic-version
- lfsmake2 python3-packaging
lfsmake2 python3-setuptools-scm
lfsmake2 python3-setuptools-rust
lfsmake2 python3-six
lfsmake2 python3-s3transfer
lfsmake2 python3-rsa
lfsmake2 python3-pyasn1
- lfsmake2 python3-urllib3
lfsmake2 python3-botocore
lfsmake2 python3-cffi
lfsmake2 python3-cryptography
+ lfsmake2 python3-circuitbreaker
+ lfsmake2 python3-pytz
+ lfsmake2 python3-click
+ lfsmake2 python3-arrow
+ lfsmake2 python3-terminaltables
+ lfsmake2 python3-pkgconfig
+ lfsmake2 python3-msgpack
+ lfsmake2 python3-attr
+ lfsmake2 python3-attrs
+ lfsmake2 python3-sniffio
+ lfsmake2 python3-sortedcontainers
+ lfsmake2 python3-outcome
+ lfsmake2 python3-async_generator
+ lfsmake2 python3-Cython
+ lfsmake2 python3-trio
+ lfsmake2 python3-pyfuse3
lfsmake2 aws-cli
lfsmake2 oci-python-sdk
lfsmake2 oci-cli
lfsmake2 perl-IO-String
lfsmake2 perl-PDF-API2
lfsmake2 proxy-accounting
- lfsmake2 pigz
lfsmake2 tmux
lfsmake2 perl-Text-CSV_XS
lfsmake2 lua
lfsmake2 i2c-tools
lfsmake2 nss-myhostname
lfsmake2 dehydrated
+ lfsmake2 libplist
+ lfsmake2 nqptp
lfsmake2 shairport-sync
lfsmake2 borgbackup
lfsmake2 lmdb
lfsmake2 firmware-update
lfsmake2 tshark
lfsmake2 speedtest-cli
- lfsmake2 rfkill
lfsmake2 amazon-ssm-agent
lfsmake2 libloc
lfsmake2 ncdu
lfsmake2 pmacct
lfsmake2 squid-asnbl
lfsmake2 qemu-ga
- lfsmake2 gptfdisk
+ lfsmake2 gptfdisk
+ lfsmake2 oath-toolkit
+ lfsmake2 qrencode
+ lfsmake2 perl-File-Remove
+ lfsmake2 perl-Module-Build
+ lfsmake2 perl-Module-ScanDeps
+ lfsmake2 perl-YAML-Tiny
+ lfsmake2 perl-Module-Install
+ lfsmake2 perl-Imager
+ lfsmake2 perl-Imager-QRCode
+ lfsmake2 perl-MIME-Base32
+ lfsmake2 perl-URI-Encode
}
buildinstaller() {
[ "${BUILD_ARCH}" = "armv6l" ] && rm -rf *.iso
for i in $(ls *.bz2 *.img.xz *.iso 2>/dev/null); do
- md5sum $i > $i.md5
+ b2sum $i > $i.b2
done
cd $PWD
# See what we're supposed to do
case "$1" in
build)
- START_TIME=$(now)
-
- # Clear screen
- ${INTERACTIVE} && clear
+ START_TIME="${SECONDS}"
PACKAGE="$BASEDIR/cache/toolchains/$SNAME-$VERSION-toolchain-$TOOLCHAINVER-${BUILD_ARCH}.tar.zst"
#only restore on a clean disk
else
PACKAGENAME=${PACKAGE%.tar.zst}
print_build_stage "Packaged toolchain compilation"
- if [ `md5sum $PACKAGE | awk '{print $1}'` == `cat $PACKAGENAME.md5 | awk '{print $1}'` ]; then
+ if [ `b2sum $PACKAGE | awk '{print $1}'` == `cat $PACKAGENAME.b2 | awk '{print $1}'` ]; then
zstd -d < "${PACKAGE}" | tar x
prepareenv
else
- exiterror "$PACKAGENAME md5 did not match, check downloaded package"
+ exiterror "$PACKAGENAME BLAKE2 checksum did not match, check downloaded package"
fi
fi
else
tools/checkrootfiles
cd $PWD
- print_build_summary $(( $(now) - ${START_TIME} ))
+ print_build_summary $(( SECONDS - START_TIME ))
;;
shell)
# enter a shell inside LFS chroot
fi
done
done
- echo -e "${BOLD}***Verifying md5sums${NORMAL}"
+ echo -e "${BOLD}***Verifying BLAKE2 checksum${NORMAL}"
ERROR=0
for i in *; do
if [ -f "$i" -a "$i" != "Config" ]; then
lfsmakecommoncheck ${i} > /dev/null || continue
make -s -f $i LFS_BASEDIR=$BASEDIR BUILD_ARCH="${BUILD_ARCH}" \
- MESSAGE="$i\t " md5 >> $LOGFILE 2>&1
+ MESSAGE="$i\t " b2 >> $LOGFILE 2>&1
if [ $? -ne 0 ]; then
- echo -ne "MD5 difference in lfs/$i"
+ echo -ne "BLAKE2 checksum difference in lfs/$i"
print_status FAIL
ERROR=1
fi
fi
done
if [ $ERROR -eq 0 ]; then
- echo -ne "${BOLD}all files md5sum match${NORMAL}"
+ echo -ne "${BOLD}all files BLAKE2 checksum match${NORMAL}"
print_status DONE
else
echo -ne "${BOLD}not all files were correctly download${NORMAL}"
cd - >/dev/null 2>&1
;;
toolchain)
- # Clear screen
- ${INTERACTIVE} && clear
-
prepareenv
print_build_stage "Toolchain compilation (${BUILD_ARCH})"
buildtoolchain
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 \
| 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
+ b2sum cache/toolchains/$SNAME-$VERSION-toolchain-$TOOLCHAINVER-${BUILD_ARCH}.tar.zst \
+ > cache/toolchains/$SNAME-$VERSION-toolchain-$TOOLCHAINVER-${BUILD_ARCH}.b2
stdumount
;;
gettoolchain)
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.zst $URL_TOOLCHAIN/$PACKAGE.md5 >& /dev/null
+ wget -U "IPFireSourceGrabber/2.x" $URL_TOOLCHAIN/$PACKAGE.tar.zst $URL_TOOLCHAIN/$PACKAGE.b2 >& /dev/null
if [ $? -ne 0 ]; then
echo "`date -u '+%b %e %T'`: error downloading $PACKAGE toolchain for ${BUILD_ARCH} machine" | tee -a $LOGFILE
else
- if [ "`md5sum $PACKAGE.tar.zst | awk '{print $1}'`" = "`cat $PACKAGE.md5 | awk '{print $1}'`" ]; then
- echo "`date -u '+%b %e %T'`: toolchain md5 ok" | tee -a $LOGFILE
+ if [ "`b2sum $PACKAGE.tar.zst | awk '{print $1}'`" = "`cat $PACKAGE.b2 | awk '{print $1}'`" ]; then
+ echo "`date -u '+%b %e %T'`: toolchain BLAKE2 checksum ok" | tee -a $LOGFILE
else
- exiterror "$PACKAGE.md5 did not match, check downloaded package"
+ exiterror "$PACKAGE BLAKE2 checksum did not match, check downloaded package"
fi
fi
else
fi
;;
*)
- echo "Usage: $0 [OPTIONS] {build|changelog|clean|gettoolchain|downloadsrc|shell|sync|toolchain|update-contributors|find-dependencies|check-manualpages}"
+ echo "Usage: $0 [OPTIONS] {build|check-manualpages|clean|docker|downloadsrc|find-dependencies|gettoolchain|lang|shell|toolchain|update-contributors|uploadsrc}"
cat doc/make.sh-usage
;;
esac