X-Git-Url: http://git.ipfire.org/?a=blobdiff_plain;f=make.sh;h=7fb63b913cf98a23a2af5f803d9d428a04c3fcae;hb=2b25c029326c6651026499688a8ac283d2e2b63a;hp=37c2756d9eba10a3be892ffecb0cbb9723772874;hpb=8debeb1da033e31a1dab20284294befe9bb424d3;p=people%2Fpmueller%2Fipfire-2.x.git diff --git a/make.sh b/make.sh index 37c2756d9e..7fb63b913c 100755 --- a/make.sh +++ b/make.sh @@ -1,32 +1,29 @@ #!/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 . # -# # -############################################################################ -# +############################################################################### +# # +# IPFire.org - A linux based firewall # +# Copyright (C) 2007-2022 IPFire Team # +# # +# 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 . # +# # +############################################################################### 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="170" # Core Level (Filename) SLOGAN="www.ipfire.org" # Software slogan CONFIG_ROOT=/var/ipfire # Configuration rootdir MAX_RETRIES=1 # prefetch/check loop @@ -38,7 +35,7 @@ GIT_BRANCH="$(git rev-parse --abbrev-ref HEAD)" # Git Branch GIT_TAG="$(git tag | tail -1)" # Git Tag GIT_LASTCOMMIT="$(git rev-parse --verify HEAD)" # Last commit -TOOLCHAINVER=20220203 +TOOLCHAINVER=20220508 # use multicore and max compression ZSTD_OPT="-T0 --ultra -22" @@ -295,10 +292,6 @@ stdumount() { umount $BASEDIR/build/tmp 2>/dev/null; } -now() { - date -u "+%s" -} - format_runtime() { local seconds=${1} @@ -547,7 +540,7 @@ prepareenv() { esac # Setup ccache cache size - enterchroot ccache --max-size="${CCACHE_CACHE_SIZE}" >/dev/null + enterchroot ccache --max-size="${CCACHE_CACHE_SIZE}" } enterchroot() { @@ -651,9 +644,9 @@ lfsmakecommoncheck() { 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! @@ -741,7 +734,7 @@ ipfiredist() { wait_until_finished() { local pid=${1} - local start_time=$(now) + local start_time="${SECONDS}" # Show progress if ${INTERACTIVE}; then @@ -751,7 +744,7 @@ wait_until_finished() { 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 @@ -763,7 +756,7 @@ wait_until_finished() { local ret=$? if ! ${INTERACTIVE}; then - print_runtime $(( $(now) - ${start_time} )) + print_runtime $(( SECONDS - start_time )) fi return ${ret} @@ -785,7 +778,7 @@ fake_environ() { } 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 @@ -797,6 +790,11 @@ qemu_environ() { 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 @@ -912,7 +910,7 @@ qemu_find_build_helper_name() { 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() { @@ -986,29 +984,6 @@ if [ "${ENABLE_RAMDISK}" = "auto" ]; then 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." @@ -1094,6 +1069,8 @@ buildbase() { lfsmake2 libxcrypt lfsmake2 file lfsmake2 gcc + lfsmake2 attr + lfsmake2 acl lfsmake2 sed lfsmake2 berkeley lfsmake2 coreutils @@ -1109,8 +1086,6 @@ buildbase() { lfsmake2 pcre lfsmake2 pcre2 lfsmake2 gettext - lfsmake2 attr - lfsmake2 acl lfsmake2 bash lfsmake2 diffutils lfsmake2 ed @@ -1129,6 +1104,7 @@ buildbase() { lfsmake2 pkg-config lfsmake2 procps lfsmake2 make + lfsmake2 libpipeline lfsmake2 man lfsmake2 net-tools lfsmake2 patch @@ -1157,7 +1133,6 @@ buildipfire() { lfsmake2 popt lfsmake2 libedit lfsmake2 libusb - lfsmake2 libusb-compat lfsmake2 libpcap lfsmake2 ppp lfsmake2 pptp @@ -1194,6 +1169,7 @@ buildipfire() { # multi kernel builds so KCFG is empty lfsmake2 linux KCFG="" lfsmake2 rtl8189es KCFG="" + lfsmake2 rtl8189fs KCFG="" lfsmake2 rtl8812au KCFG="" lfsmake2 rtl8822bu KCFG="" lfsmake2 xradio KCFG="" @@ -1205,7 +1181,6 @@ buildipfire() { lfsmake2 nettle lfsmake2 json-c lfsmake2 libconfig - lfsmake2 libevent lfsmake2 libevent2 lfsmake2 expat lfsmake2 apr @@ -1295,6 +1270,7 @@ buildipfire() { 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 @@ -1302,6 +1278,7 @@ buildipfire() { 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 @@ -1310,6 +1287,22 @@ buildipfire() { 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 efivar @@ -1319,7 +1312,6 @@ buildipfire() { lfsmake2 ca-certificates lfsmake2 fireinfo lfsmake2 libnet - lfsmake2 libnl lfsmake2 libnl-3 lfsmake2 libidn lfsmake2 nasm @@ -1332,7 +1324,6 @@ buildipfire() { lfsmake2 libexif lfsmake2 libpng lfsmake2 libtiff - lfsmake2 libart lfsmake2 gd lfsmake2 slang lfsmake2 newt @@ -1380,7 +1371,6 @@ buildipfire() { lfsmake2 perl-HTTP-Date lfsmake2 gnupg lfsmake2 hdparm - lfsmake2 sdparm lfsmake2 whatmask lfsmake2 libtirpc lfsmake2 conntrack-tools @@ -1402,7 +1392,7 @@ buildipfire() { 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 @@ -1422,6 +1412,7 @@ buildipfire() { lfsmake2 perl-XML-Parser lfsmake2 perl-Crypt-PasswdMD5 lfsmake2 perl-Net-Telnet + lfsmake2 perl-JSON lfsmake2 python3-setuptools lfsmake2 python3-inotify lfsmake2 python3-docutils @@ -1440,7 +1431,6 @@ buildipfire() { lfsmake2 pango lfsmake2 rrdtool lfsmake2 setup - lfsmake2 libdnet lfsmake2 jansson lfsmake2 yaml lfsmake2 libhtp @@ -1448,8 +1438,8 @@ buildipfire() { lfsmake2 ragel lfsmake2 hyperscan lfsmake2 suricata - lfsmake2 oinkmaster lfsmake2 ids-ruleset-sources + lfsmake2 ipblocklist-sources lfsmake2 squid lfsmake2 squidguard lfsmake2 calamaris @@ -1475,6 +1465,7 @@ buildipfire() { lfsmake2 poppler-data lfsmake2 cups-filters lfsmake2 epson-inkjet-printer-escpr + lfsmake2 cups-pdf lfsmake2 foomatic lfsmake2 hplip lfsmake2 cifs-utils @@ -1538,7 +1529,6 @@ buildipfire() { lfsmake2 libusbredir lfsmake2 libseccomp lfsmake2 qemu - lfsmake2 netpbm lfsmake2 netsnmpd lfsmake2 nagios_nrpe lfsmake2 nagios-plugins @@ -1554,6 +1544,7 @@ buildipfire() { lfsmake2 vdr_dvbapi lfsmake2 vdr_eepg lfsmake2 w_scan + lfsmake2 fmt lfsmake2 mpd lfsmake2 libmpdclient lfsmake2 mpc @@ -1593,7 +1584,6 @@ buildipfire() { lfsmake2 monit lfsmake2 nut lfsmake2 watchdog - lfsmake2 libpri lfsmake2 usb_modeswitch lfsmake2 usb_modeswitch_data lfsmake2 zerofree @@ -1606,8 +1596,8 @@ buildipfire() { 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 @@ -1617,10 +1607,12 @@ buildipfire() { 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 @@ -1631,10 +1623,16 @@ buildipfire() { 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 aws-cli lfsmake2 oci-python-sdk lfsmake2 oci-cli @@ -1671,7 +1669,6 @@ buildipfire() { lfsmake2 perl-IO-String lfsmake2 perl-PDF-API2 lfsmake2 proxy-accounting - lfsmake2 pigz lfsmake2 tmux lfsmake2 perl-Text-CSV_XS lfsmake2 lua @@ -1707,7 +1704,6 @@ buildipfire() { lfsmake2 firmware-update lfsmake2 tshark lfsmake2 speedtest-cli - lfsmake2 rfkill lfsmake2 amazon-ssm-agent lfsmake2 libloc lfsmake2 ncdu @@ -1717,7 +1713,18 @@ buildipfire() { 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() { @@ -1776,7 +1783,7 @@ buildpackages() { [ "${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 @@ -1824,10 +1831,7 @@ done # 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 @@ -1839,11 +1843,11 @@ build) 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 @@ -1869,7 +1873,7 @@ build) tools/checkrootfiles cd $PWD - print_build_summary $(( $(now) - ${START_TIME} )) + print_build_summary $(( SECONDS - START_TIME )) ;; shell) # enter a shell inside LFS chroot @@ -1948,22 +1952,22 @@ downloadsrc) 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}" @@ -1972,9 +1976,6 @@ downloadsrc) cd - >/dev/null 2>&1 ;; toolchain) - # Clear screen - ${INTERACTIVE} && clear - prepareenv print_build_stage "Toolchain compilation (${BUILD_ARCH})" buildtoolchain @@ -1982,8 +1983,8 @@ toolchain) 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) @@ -1994,14 +1995,14 @@ 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 @@ -2076,7 +2077,7 @@ check-manualpages) 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