]> git.ipfire.org Git - people/mfischer/ipfire-2.x.git/blobdiff - make.sh
Merge branch 'master' of ssh://git.ipfire.org/pub/git/ipfire-2.x
[people/mfischer/ipfire-2.x.git] / make.sh
diff --git a/make.sh b/make.sh
index 702190a62a879e3e4fcd0470124957ccf1087445..95e6e89db3a04ded3f5847af3af00fca202fc562 100755 (executable)
--- 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 <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="167"                                                     # Core Level (Filename)
 SLOGAN="www.ipfire.org"                                                # Software slogan
 CONFIG_ROOT=/var/ipfire                                                # Configuration rootdir
 MAX_RETRIES=1                                                  # prefetch/check loop
@@ -295,10 +292,6 @@ stdumount() {
        umount $BASEDIR/build/tmp               2>/dev/null;
 }
 
-now() {
-       date -u "+%s"
-}
-
 format_runtime() {
        local seconds=${1}
 
@@ -437,7 +430,7 @@ prepareenv() {
        fi
 
        # Trap on emergency exit
-       trap "exiterror 'Build process interrupted'" SIGINT SIGTERM SIGKILL SIGSTOP SIGQUIT
+       trap "exiterror 'Build process interrupted'" SIGINT SIGTERM SIGQUIT
 
        # Checking if running as root user
        if [ $(id -u) -ne 0 ]; then
@@ -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() {
@@ -1094,6 +1092,8 @@ buildbase() {
        lfsmake2 libxcrypt
        lfsmake2 file
        lfsmake2 gcc
+       lfsmake2 attr
+       lfsmake2 acl
        lfsmake2 sed
        lfsmake2 berkeley
        lfsmake2 coreutils
@@ -1109,8 +1109,6 @@ buildbase() {
        lfsmake2 pcre
        lfsmake2 pcre2
        lfsmake2 gettext
-       lfsmake2 attr
-       lfsmake2 acl
        lfsmake2 bash
        lfsmake2 diffutils
        lfsmake2 ed
@@ -1150,6 +1148,7 @@ buildipfire() {
   lfsmake2 configroot
   lfsmake2 initscripts
   lfsmake2 backup
+  lfsmake2 rust
   lfsmake2 openssl
   lfsmake2 kmod
   lfsmake2 udev
@@ -1193,13 +1192,12 @@ 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=""
-  lfsmake2 xtables-addons      KCFG=""
   lfsmake2 linux-initrd                KCFG=""
 
-  lfsmake2 xtables-addons      USPACE="1"
   lfsmake2 libgpg-error
   lfsmake2 libgcrypt
   lfsmake2 libassuan
@@ -1344,7 +1342,7 @@ buildipfire() {
   lfsmake2 usbutils
   lfsmake2 libxml2
   lfsmake2 libxslt
-  lfsmake2 BerkeleyDB
+  lfsmake2 perl-BerkeleyDB
   lfsmake2 cyrus-sasl
   lfsmake2 openldap
   lfsmake2 apache2
@@ -1367,15 +1365,18 @@ buildipfire() {
   lfsmake2 ntfs-3g
   lfsmake2 ethtool
   lfsmake2 fcron
-  lfsmake2 ExtUtils-PkgConfig
+  lfsmake2 perl-ExtUtils-PkgConfig
   lfsmake2 perl-GD
-  lfsmake2 GD-Graph
-  lfsmake2 GD-TextUtil
+  lfsmake2 perl-GD-Graph
+  lfsmake2 perl-GD-TextUtil
   lfsmake2 perl-Device-SerialPort
   lfsmake2 perl-Device-Modem
   lfsmake2 perl-Apache-Htpasswd
   lfsmake2 perl-Parse-Yapp
   lfsmake2 perl-Data-UUID
+  lfsmake2 perl-Try-Tiny
+  lfsmake2 perl-HTTP-Message
+  lfsmake2 perl-HTTP-Date
   lfsmake2 gnupg
   lfsmake2 hdparm
   lfsmake2 sdparm
@@ -1389,35 +1390,37 @@ buildipfire() {
   lfsmake2 logwatch
   lfsmake2 misc-progs
   lfsmake2 nano
-  lfsmake2 URI
+  lfsmake2 perl-URI
   lfsmake2 perl-CGI
   lfsmake2 perl-Switch
-  lfsmake2 HTML-Tagset
-  lfsmake2 HTML-Parser
-  lfsmake2 HTML-Template
-  lfsmake2 Compress-Zlib
-  lfsmake2 Digest
-  lfsmake2 Digest-SHA1
-  lfsmake2 Digest-HMAC
-  lfsmake2 libwww-perl
-  lfsmake2 Net-DNS
-  lfsmake2 Net-IPv4Addr
-  lfsmake2 Net_SSLeay
-  lfsmake2 IO-Stringy
-  lfsmake2 IO-Socket-SSL
-  lfsmake2 Unix-Syslog
-  lfsmake2 Mail-Tools
-  lfsmake2 MIME-Tools
-  lfsmake2 Net-Server
-  lfsmake2 Canary-Stability
-  lfsmake2 Convert-TNEF
-  lfsmake2 Convert-UUlib
-  lfsmake2 Archive-Tar
-  lfsmake2 Archive-Zip
-  lfsmake2 Text-Tabs+Wrap
-  lfsmake2 XML-Parser
-  lfsmake2 Crypt-PasswdMD5
-  lfsmake2 Net-Telnet
+  lfsmake2 perl-HTML-Tagset
+  lfsmake2 perl-HTML-Parser
+  lfsmake2 perl-HTML-Template
+  lfsmake2 perl-Compress-Zlib
+  lfsmake2 perl-Digest
+  lfsmake2 perl-Digest-SHA1
+  lfsmake2 perl-Digest-HMAC
+  lfsmake2 perl-libwww
+  lfsmake2 perl-LWP-Protocol-https
+  lfsmake2 perl-Net-HTTP
+  lfsmake2 perl-Net-DNS
+  lfsmake2 perl-Net-IPv4Addr
+  lfsmake2 perl-Net_SSLeay
+  lfsmake2 perl-IO-Stringy
+  lfsmake2 perl-IO-Socket-SSL
+  lfsmake2 perl-Unix-Syslog
+  lfsmake2 perl-Mail-Tools
+  lfsmake2 perl-MIME-Tools
+  lfsmake2 perl-Net-Server
+  lfsmake2 perl-Canary-Stability
+  lfsmake2 perl-Convert-TNEF
+  lfsmake2 perl-Convert-UUlib
+  lfsmake2 perl-Archive-Tar
+  lfsmake2 perl-Archive-Zip
+  lfsmake2 perl-Text-Tabs+Wrap
+  lfsmake2 perl-XML-Parser
+  lfsmake2 perl-Crypt-PasswdMD5
+  lfsmake2 perl-Net-Telnet
   lfsmake2 python3-setuptools
   lfsmake2 python3-inotify
   lfsmake2 python3-docutils
@@ -1604,7 +1607,24 @@ buildipfire() {
   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-setuptools-scm
+  lfsmake2 python3-setuptools-rust
   lfsmake2 python3-six
   lfsmake2 python3-dateutil
   lfsmake2 python3-jmespath
@@ -1613,10 +1633,17 @@ buildipfire() {
   lfsmake2 python3-s3transfer
   lfsmake2 python3-rsa
   lfsmake2 python3-pyasn1
-  lfsmake2 python3-urllib3
   lfsmake2 python3-botocore
-  lfsmake2 python3-msgpack
+  lfsmake2 python3-cffi
+  lfsmake2 python3-cryptography
+  lfsmake2 python3-circuitbreaker
+  lfsmake2 python3-pytz
+  lfsmake2 python3-click
+  lfsmake2 python3-arrow
+  lfsmake2 python3-terminaltables
   lfsmake2 aws-cli
+  lfsmake2 oci-python-sdk
+  lfsmake2 oci-cli
   lfsmake2 transmission
   lfsmake2 mtr
   lfsmake2 minidlna
@@ -1649,7 +1676,7 @@ buildipfire() {
   lfsmake2 perl-Font-TTF
   lfsmake2 perl-IO-String
   lfsmake2 perl-PDF-API2
-  lfsmake2 squid-accounting
+  lfsmake2 proxy-accounting
   lfsmake2 pigz
   lfsmake2 tmux
   lfsmake2 perl-Text-CSV_XS
@@ -1686,7 +1713,6 @@ buildipfire() {
   lfsmake2 firmware-update
   lfsmake2 tshark
   lfsmake2 speedtest-cli
-  lfsmake2 rfkill
   lfsmake2 amazon-ssm-agent
   lfsmake2 libloc
   lfsmake2 ncdu
@@ -1696,6 +1722,7 @@ buildipfire() {
   lfsmake2 pmacct
   lfsmake2 squid-asnbl
   lfsmake2 qemu-ga
+       lfsmake2 gptfdisk
 }
 
 buildinstaller() {
@@ -1713,7 +1740,7 @@ buildpackages() {
   export LOGFILE
   echo "... see detailed log in _build.*.log files" >> $LOGFILE
 
-  
+
   # Generating list of packages used
   print_line "Generating packages list from logs"
   rm -f $BASEDIR/doc/packages-list
@@ -1728,7 +1755,7 @@ buildpackages() {
   rm -f $BASEDIR/doc/packages-list
   # packages-list.txt is ready to be displayed for wiki page
   print_status DONE
-  
+
   # Update changelog
   cd $BASEDIR
   [ -z $GIT_TAG ]  || LAST_TAG=$GIT_TAG
@@ -1754,7 +1781,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
 
@@ -1800,9 +1827,9 @@ while [ $# -gt 0 ]; do
 done
 
 # See what we're supposed to do
-case "$1" in 
+case "$1" in
 build)
-       START_TIME=$(now)
+       START_TIME="${SECONDS}"
 
        # Clear screen
        ${INTERACTIVE} && clear
@@ -1817,11 +1844,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
@@ -1839,7 +1866,7 @@ build)
 
        print_build_stage "Building packages"
        buildpackages
-       
+
        print_build_stage "Checking Logfiles for new Files"
 
        cd $BASEDIR
@@ -1847,7 +1874,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
@@ -1904,7 +1931,7 @@ downloadsrc)
        FINISHED=0
        cd $BASEDIR/lfs
        for c in `seq $MAX_RETRIES`; do
-               if (( FINISHED==1 )); then 
+               if (( FINISHED==1 )); then
                        break
                fi
                FINISHED=1
@@ -1926,22 +1953,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}"
@@ -1960,8 +1987,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)
@@ -1972,14 +1999,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
@@ -2045,7 +2072,7 @@ find-dependencies)
        ;;
 check-manualpages)
        echo "Checking the manual pages for broken links..."
-       
+
        chmod 755 $BASEDIR/tools/check_manualpages.pl
        if $BASEDIR/tools/check_manualpages.pl; then
                print_status DONE
@@ -2058,4 +2085,3 @@ check-manualpages)
        cat doc/make.sh-usage
        ;;
 esac
-