#!/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-2019 IPFire Team <info@ipfire.org>. #
-# #
-############################################################################
-#
+###############################################################################
+# #
+# IPFire.org - A linux based firewall #
+# Copyright (C) 2007-2023 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.25" # Version number
-CORE="142" # Core Level (Filename)
-PAKFIRE_CORE="141" # Core Level (PAKFIRE)
-GIT_BRANCH=`git rev-parse --abbrev-ref HEAD` # Git Branch
+VERSION="2.29" # Version number
+CORE="185" # 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 log | head -n1 | cut -d" " -f2 |head -c8) # Last commit
-TOOLCHAINVER=20200108
+# Information from Git
+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=20240210
+
+# use multicore and max compression
+ZSTD_OPT="-T0 --ultra -22"
###############################################################################
#
case "${build_arch}" in
x86_64)
- BUILDTARGET="${build_arch}-unknown-linux-gnu"
- CROSSTARGET="${build_arch}-cross-linux-gnu"
- BUILD_PLATFORM="x86"
- CFLAGS_ARCH="-m64 -mindirect-branch=thunk -mfunction-return=thunk -mtune=generic"
- ;;
-
- i586)
BUILDTARGET="${build_arch}-pc-linux-gnu"
CROSSTARGET="${build_arch}-cross-linux-gnu"
BUILD_PLATFORM="x86"
- CFLAGS_ARCH="-march=i586 -mindirect-branch=thunk -mfunction-return=thunk -mtune=generic -fomit-frame-pointer"
+ CFLAGS_ARCH="-m64 -mtune=generic -fcf-protection=full"
;;
aarch64)
- BUILDTARGET="${build_arch}-unknown-linux-gnu"
+ BUILDTARGET="${build_arch}-pc-linux-gnu"
CROSSTARGET="${build_arch}-cross-linux-gnu"
BUILD_PLATFORM="arm"
- CFLAGS_ARCH=""
+ CFLAGS_ARCH="-mbranch-protection=standard"
;;
- armv7hl)
- BUILDTARGET="${build_arch}-unknown-linux-gnueabi"
- CROSSTARGET="${build_arch}-cross-linux-gnueabi"
- BUILD_PLATFORM="arm"
- CFLAGS_ARCH="-march=armv7-a -mfpu=vfpv3-d16 -mfloat-abi=hard"
- ;;
-
- armv5tel)
- 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"
+ riscv64)
+ BUILDTARGET="${build_arch}-pc-linux-gnu"
+ CROSSTARGET="${build_arch}-cross-linux-gnu"
+ BUILD_PLATFORM="riscv"
+ CFLAGS_ARCH=""
;;
*)
TOOLS_DIR="/tools_${BUILD_ARCH}"
# Enables hardening
- HARDENING_CFLAGS="-Wp,-D_FORTIFY_SOURCE=2 -Wp,-D_GLIBCXX_ASSERTIONS -fstack-protector-strong"
+ HARDENING_CFLAGS="-Wp,-U_FORTIFY_SOURCE -Wp,-D_FORTIFY_SOURCE=3 -Wp,-D_GLIBCXX_ASSERTIONS -fstack-protector-strong -fstack-clash-protection"
- CFLAGS="-O2 -pipe -Wall -fexceptions -fPIC ${CFLAGS_ARCH}"
+ CFLAGS="-O2 -g0 -pipe -Wall -fexceptions -fPIC ${CFLAGS_ARCH}"
CXXFLAGS="${CFLAGS}"
+ RUSTFLAGS="-Copt-level=3 -Clink-arg=-Wl,-z,relro,-z,now -Ccodegen-units=1 --cap-lints=warn ${RUSTFLAGS_ARCH}"
+
# Determine parallelism
# We assume that each process consumes about
# 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
# We allow XZ to use up to 70% of all system memory.
local xz_memory=$(( SYSTEM_MEMORY * 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"
}
x86_64)
echo "x86_64"
;;
- i?86)
- echo "i586"
- ;;
aarch64)
echo "aarch64"
;;
- armv7*|armv6*|armv5*)
- echo "armv5tel"
+ riscv64)
+ echo "riscv64"
;;
*)
umount $BASEDIR/build/usr/src/log 2>/dev/null;
umount $BASEDIR/build/usr/src/src 2>/dev/null;
umount $BASEDIR/build/usr/src 2>/dev/null;
-}
-
-now() {
- date -u "+%s"
+ umount $BASEDIR/build/tmp 2>/dev/null;
}
format_runtime() {
fi
# 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
+ trap "exiterror 'Build process interrupted'" SIGINT SIGTERM SIGQUIT
# Checking if running as root user
if [ $(id -u) -ne 0 ]; then
# 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 -t tmpfs tmpfs -o size=4G,nr_inodes=1M,mode=1777 $BASEDIR/build/usr/src
+ mount -t tmpfs tmpfs -o size=8G,nr_inodes=1M,mode=1777 $BASEDIR/build/usr/src
+
+ mkdir -p ${BASEDIR}/build/tmp
+ mount -t tmpfs tmpfs -o size=4G,nr_inodes=1M,mode=1777 ${BASEDIR}/build/tmp
fi
mkdir -p $BASEDIR/build/usr/src/{cache,config,doc,html,langs,lfs,log,src,ccache}
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_COMPRESS=1
+ export CCACHE_TEMPDIR="/tmp"
export CCACHE_COMPILERCHECK="string:toolchain-${TOOLCHAINVER} ${BUILD_ARCH}"
# Remove pre-install list of installed files in case user erase some files before rebuild
rm -f $BASEDIR/build/usr/src/lsalr 2>/dev/null
# Prepare string for /etc/system-release.
- SYSTEM_RELEASE="${NAME} ${VERSION} (${BUILD_ARCH})"
- if [ "$(git status -s | wc -l)" == "0" ]; then
- GIT_STATUS=""
- else
- GIT_STATUS="-dirty"
+ local system_release="${NAME} ${VERSION} (${BUILD_ARCH})"
+
+ case "${GIT_BRANCH}" in
+ core*|beta?|rc?)
+ system_release="${system_release} - ${GIT_BRANCH}"
+ ;;
+ *)
+ system_release="${system_release} - core${CORE} Development Build: ${GIT_BRANCH}/${GIT_LASTCOMMIT:0:8}"
+ ;;
+ esac
+
+ # Append -dirty tag for local changes
+ if [ "$(git status -s | wc -l)" != "0" ]; then
+ system_release="${system_release}-dirty"
fi
- case "$GIT_BRANCH" in
- core*|beta?|rc?)
- SYSTEM_RELEASE="${SYSTEM_RELEASE} - $GIT_BRANCH$GIT_STATUS"
- ;;
- *)
- SYSTEM_RELEASE="${SYSTEM_RELEASE} - Development Build: $GIT_BRANCH/$GIT_LASTCOMMIT$GIT_STATUS"
- ;;
+
+ # Export variable
+ SYSTEM_RELEASE="${system_release}"
+
+ # Decide on PAKFIRE_TREE
+ case "${GIT_BRANCH}" in
+ core*)
+ PAKFIRE_TREE="stable"
+ ;;
+ master)
+ PAKFIRE_TREE="testing"
+ ;;
+ *)
+ PAKFIRE_TREE="unstable"
+ ;;
esac
# Setup ccache cache size
- enterchroot ccache --max-size="${CCACHE_CACHE_SIZE}" >/dev/null
+ enterchroot ccache --max-size="${CCACHE_CACHE_SIZE}"
}
enterchroot() {
# Install QEMU helper, if needed
qemu_install_helper
- local PATH="${TOOLS_DIR}/ccache/bin:/bin:/usr/bin:/sbin:/usr/sbin:${TOOLS_DIR}/bin"
+ local PATH="${TOOLS_DIR}/ccache/bin:/bin:/usr/bin:/sbin:/usr/sbin:${TOOLS_DIR}/sbin:${TOOLS_DIR}/bin"
+
+ # Prepend any custom changes to PATH
+ if [ -n "${CUSTOM_PATH}" ]; then
+ PATH="${CUSTOM_PATH}:${PATH}"
+ fi
PATH="${PATH}" chroot ${LFS} env -i \
HOME="/root" \
PS1="${PS1}" \
PATH="${PATH}" \
SYSTEM_RELEASE="${SYSTEM_RELEASE}" \
- PAKFIRE_CORE="${PAKFIRE_CORE}" \
+ PAKFIRE_TREE="${PAKFIRE_TREE}" \
NAME="${NAME}" \
SNAME="${SNAME}" \
VERSION="${VERSION}" \
BUILD_ARCH="${BUILD_ARCH}" \
BUILD_PLATFORM="${BUILD_PLATFORM}" \
CCACHE_DIR=/usr/src/ccache \
- CCACHE_COMPRESS="${CCACHE_COMPRESS}" \
+ CCACHE_TEMPDIR="${CCACHE_TEMPDIR}" \
CCACHE_COMPILERCHECK="${CCACHE_COMPILERCHECK}" \
GOCACHE="/usr/src/ccache/go" \
KVER="${KVER}" \
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!
lfsmakecommoncheck $*
[ $? == 1 ] && return 0
+ # Set PATH to use the toolchain tools first and then whatever the host has set
+ local PATH="${TOOLS_DIR}/ccache/bin:${TOOLS_DIR}/sbin:${TOOLS_DIR}/bin:${PATH}"
+
+ if [ -n "${CUSTOM_PATH}" ]; then
+ PATH="${CUSTOM_PATH}:${PATH}"
+ fi
+
cd $BASEDIR/lfs && env -i \
- PATH="${TOOLS_DIR}/ccache/bin:${TOOLS_DIR}/bin:$PATH" \
- CCACHE_DIR="${CCACHE_DIR}" \
- CCACHE_COMPRESS="${CCACHE_COMPRESS}" \
+ PATH="${PATH}" \
+ CCACHE_DIR="${CCACHE_DIR}"/${BUILD_ARCH}/${TOOLCHAINVER} \
+ CCACHE_TEMPDIR="${CCACHE_TEMPDIR}" \
CCACHE_COMPILERCHECK="${CCACHE_COMPILERCHECK}" \
CFLAGS="${CFLAGS}" \
CXXFLAGS="${CXXFLAGS}" \
local PS1='\u:\w$ '
enterchroot \
- ${EXTRA_PATH}bash -x -c "cd /usr/src/lfs && \
+ bash -x -c "cd /usr/src/lfs && \
make -f $* \
LFS_BASEDIR=/usr/src install" \
>> ${LOGFILE} 2>&1 &
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
env="${env} QEMU_CPU=${QEMU_CPU}"
;;
+ riscv64)
+ QEMU_CPU="${QEMU_CPU:-sifive-u54}"
+ G_SLICE="always-malloc"
+ env="${env} QEMU_CPU=${QEMU_CPU} G_SLICE=${G_SLICE}"
+ ;;
esac
# Enable QEMU strace
fi
case "${HOST_ARCH},${build_arch}" in
- x86_64,arm*|i?86,arm*|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
;;
*)
local magic
case "${build_arch}" in
+ aarch64)
+ magic="7f454c460201010000000000000000000200b700"
+ ;;
arm*)
magic="7f454c4601010100000000000000000002002800"
;;
+ riscv64)
+ magic="7f454c460201010000000000000000000200f300"
+ ;;
x86_64)
magic="7f454c4602010100000000000000000002003e00"
;;
file_is_static() {
local file="${1}"
- file ${file} 2>/dev/null | grep -q "statically linked"
+ file -L "${file}" 2>/dev/null | grep -q -e "statically linked" -e "static-pie linked"
}
update_language_list() {
fi
buildtoolchain() {
- local error=false
- case "${BUILD_ARCH}:${HOST_ARCH}" in
- # x86_64
- x86_64:x86_64)
- # This is working.
- ;;
-
- # x86
- i586:i586|i586:i686|i586:x86_64)
- # These are working.
- ;;
- i586:*)
- error=true
- ;;
-
- # ARM
- arvm7hl:armv7hl|armv7hl:armv7l)
- # These are working.
- ;;
-
- armv5tel:armv5tel|armv5tel:armv5tejl|armv5tel:armv6l|armv5tel:armv7l|armv5tel:aarch64)
- # These are working.
- ;;
- armv5tel:*)
- 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."
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 binutils PASS=2
lfsmake1 gcc PASS=2
- lfsmake1 zlib
- lfsmake1 ccache PASS=2
+ lfsmake1 zstd
+ lfsmake1 ccache
lfsmake1 tcl
lfsmake1 expect
lfsmake1 dejagnu
lfsmake1 bison
lfsmake1 flex
lfsmake1 fake-environ
- lfsmake1 strip
+ CUSTOM_PATH="${PATH}" lfsmake1 strip
lfsmake1 cleanup-toolchain
}
lfsmake2 tzdata
lfsmake2 cleanup-toolchain
lfsmake2 zlib
+ [ "${BUILD_ARCH}" = "riscv64" ] && lfsmake2 gcc PASS=A
+ lfsmake2 zstd
+ lfsmake2 autoconf
+ lfsmake2 automake
+ lfsmake2 help2man
+ lfsmake2 libtool
lfsmake2 binutils
lfsmake2 gmp
- lfsmake2 gmp-compat
lfsmake2 mpfr
lfsmake2 libmpc
+ lfsmake2 libxcrypt
lfsmake2 file
lfsmake2 gcc
+ lfsmake2 attr
+ lfsmake2 acl
lfsmake2 sed
- lfsmake2 autoconf
- lfsmake2 automake
lfsmake2 berkeley
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 bash
lfsmake2 diffutils
- lfsmake2 e2fsprogs
lfsmake2 ed
lfsmake2 findutils
lfsmake2 flex
lfsmake2 gawk
- lfsmake2 gettext
+ lfsmake2 go
lfsmake2 grep
lfsmake2 groff
lfsmake2 gperf
lfsmake2 gzip
lfsmake2 hostname
- lfsmake2 iproute2
- lfsmake2 jwhois
+ lfsmake2 whois
lfsmake2 kbd
lfsmake2 less
lfsmake2 pkg-config
+ lfsmake2 procps
lfsmake2 make
+ lfsmake2 libpipeline
lfsmake2 man
- lfsmake2 kmod
lfsmake2 net-tools
lfsmake2 patch
lfsmake2 psmisc
lfsmake2 tar
lfsmake2 texinfo
lfsmake2 util-linux
- lfsmake2 udev
lfsmake2 vim
+ lfsmake2 e2fsprogs
+ lfsmake2 jq
}
buildipfire() {
lfsmake2 configroot
lfsmake2 initscripts
lfsmake2 backup
+ lfsmake2 rust
lfsmake2 openssl
- [ "${BUILD_ARCH}" = "i586" ] && lfsmake2 openssl KCFG='-sse2'
lfsmake2 popt
lfsmake2 libedit
- lfsmake2 libusb
- lfsmake2 libusb-compat
+ lfsmake2 pam
+ lfsmake2 libcap
+ lfsmake2 libcap-ng
lfsmake2 libpcap
lfsmake2 ppp
lfsmake2 pptp
lfsmake2 unzip
lfsmake2 which
- lfsmake2 linux-firmware
- lfsmake2 dvb-firmwares
- lfsmake2 xr819-firmware
- lfsmake2 zd1211-firmware
- lfsmake2 rpi-firmware
- lfsmake2 intel-microcode
- lfsmake2 pcengines-apu-firmware
lfsmake2 bc
- lfsmake2 u-boot MKIMAGE=1
lfsmake2 cpio
- lfsmake2 mdadm
- lfsmake2 dracut
lfsmake2 libaio
- lfsmake2 lvm2
- lfsmake2 multipath-tools
lfsmake2 freetype
lfsmake2 libmnl
lfsmake2 libnfnetlink
lfsmake2 libnetfilter_cthelper
lfsmake2 libnetfilter_cttimeout
lfsmake2 iptables
+ lfsmake2 iproute2
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-pae (Native and new XEN) kernel build
- lfsmake2 linux KCFG="-pae"
-# lfsmake2 backports KCFG="-pae"
-# lfsmake2 e1000e KCFG="-pae"
-# lfsmake2 igb KCFG="-pae"
-# lfsmake2 ixgbe KCFG="-pae"
- lfsmake2 xtables-addons KCFG="-pae"
- lfsmake2 linux-initrd KCFG="-pae"
-
- # 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"
+ lfsmake2 expat
+ lfsmake2 libconfig
+ lfsmake2 curl
+ lfsmake2 libarchive
+ lfsmake2 cmake
+ lfsmake2 json-c
+ lfsmake2 tcl
+ lfsmake2 libffi
+ lfsmake2 gdbm
+ lfsmake2 sqlite
+ lfsmake2 python3
+ lfsmake2 python3-setuptools
+ lfsmake2 python3-MarkupSafe
+ lfsmake2 python3-Jinja2
+ lfsmake2 ninja
+ lfsmake2 meson
+ lfsmake2 kmod
+ lfsmake2 udev
+ lfsmake2 libusb
+ lfsmake2 mdadm
+ lfsmake2 dracut
+ lfsmake2 lvm2
+ lfsmake2 multipath-tools
+ lfsmake2 glib
+ lfsmake2 libgudev
lfsmake2 libgpg-error
lfsmake2 libgcrypt
lfsmake2 libassuan
lfsmake2 nettle
- lfsmake2 json-c
- lfsmake2 libconfig
- lfsmake2 libevent
+ lfsmake2 libsodium
lfsmake2 libevent2
- lfsmake2 expat
lfsmake2 apr
lfsmake2 aprutil
lfsmake2 unbound
lfsmake2 gnutls
+ lfsmake2 libuv
lfsmake2 bind
lfsmake2 dhcp
lfsmake2 dhcpcd
lfsmake2 boost
lfsmake2 linux-atm
- lfsmake2 gdbm
- lfsmake2 pam
- lfsmake2 curl
- lfsmake2 tcl
- lfsmake2 sqlite
- lfsmake2 libffi
- lfsmake2 python
- lfsmake2 python3
+ lfsmake2 libqmi
+ lfsmake2 c-ares
+ lfsmake2 rust-dissimilar
+ lfsmake2 rust-cfg-if
+ lfsmake2 rust-libc
+ lfsmake2 rust-getrandom
+ lfsmake2 rust-typenum
+ lfsmake2 rust-version-check
+ lfsmake2 rust-generic-array
+ lfsmake2 rust-crypto-common
+ lfsmake2 rust-cipher
+ lfsmake2 rust-hex
+ lfsmake2 rust-unicode-xid
+ lfsmake2 rust-proc-macro2
+ lfsmake2 rust-quote
+ lfsmake2 rust-syn
+ lfsmake2 rust-home
+ lfsmake2 rust-lazy-static
+ lfsmake2 rust-memchr
+ lfsmake2 rust-aho-corasick
+ lfsmake2 rust-regex-syntax
+ lfsmake2 rust-regex
+ lfsmake2 rust-ucd-trie
+ lfsmake2 rust-pest
+ lfsmake2 rust-semver-parser
+ lfsmake2 rust-semver
+ lfsmake2 rust-same-file
+ lfsmake2 rust-walkdir
+ lfsmake2 rust-dirs
+ lfsmake2 rust-toolchain_find
+ lfsmake2 rust-serde
+ lfsmake2 rust-itoa
+ lfsmake2 rust-ryu
+ lfsmake2 rust-serde_json
+ lfsmake2 rust-synstructure
+ lfsmake2 rust-block-buffer
+ lfsmake2 rust-digest
+ lfsmake2 rust-ppv-lite86
+ lfsmake2 rust-rand_core
+ lfsmake2 rust-rand_core-0.4.2
+ lfsmake2 rust-rand_core-0.3.1
+ lfsmake2 rust-rand_chacha
+ lfsmake2 rust-rand_hc
+ lfsmake2 rust-rand
+ lfsmake2 rust-rdrand
+ lfsmake2 rust-rand-0.4
+ lfsmake2 rust-log
+ lfsmake2 rust-num_cpus
+ lfsmake2 rust-crossbeam-utils
+ lfsmake2 rust-autocfg
+ lfsmake2 rust-memoffset
+ lfsmake2 rust-scopeguard
+ lfsmake2 rust-crossbeam-epoch
+ lfsmake2 rust-crossbeam-deque
+ lfsmake2 rust-either
+ lfsmake2 rust-crossbeam-channel
+ lfsmake2 rust-rayon-core
+ lfsmake2 rust-rayon
+ lfsmake2 rust-remove_dir_all
+ lfsmake2 rust-tempdir
+ lfsmake2 rust-glob
+ lfsmake2 rust-once_cell
+ lfsmake2 rust-termcolor
+ lfsmake2 rust-toml
+ lfsmake2 rust-serde_derive
+ lfsmake2 rust-trybuild
+ lfsmake2 rust-unindent
+ 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_core
+ 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-inventory
+ lfsmake2 rust-pyo3-build-config
+ 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-iana-time-zone
+ 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 p11-kit
lfsmake2 ca-certificates
lfsmake2 fireinfo
lfsmake2 libnet
- lfsmake2 libnl
lfsmake2 libnl-3
lfsmake2 libidn
lfsmake2 nasm
lfsmake2 libjpeg
- lfsmake2 libjpeg-compat
+ lfsmake2 openjpeg
lfsmake2 libexif
lfsmake2 libpng
lfsmake2 libtiff
- lfsmake2 libart
lfsmake2 gd
lfsmake2 slang
lfsmake2 newt
lfsmake2 libsmooth
- lfsmake2 attr
- lfsmake2 acl
- lfsmake2 libcap
- lfsmake2 libcap-ng
lfsmake2 pciutils
lfsmake2 usbutils
lfsmake2 libxml2
lfsmake2 libxslt
- lfsmake2 BerkeleyDB
+ lfsmake2 perl-BerkeleyDB
lfsmake2 cyrus-sasl
lfsmake2 openldap
lfsmake2 apache2
lfsmake2 bootstrap
lfsmake2 arping
lfsmake2 beep
- lfsmake2 libarchive
- lfsmake2 cmake
lfsmake2 libssh
+ lfsmake2 libinih
lfsmake2 cdrkit
lfsmake2 dosfstools
+ lfsmake2 exfatprogs
lfsmake2 reiserfsprogs
+ lfsmake2 liburcu
lfsmake2 xfsprogs
lfsmake2 sysfsutils
lfsmake2 fuse
lfsmake2 ntfs-3g
lfsmake2 ethtool
- lfsmake2 ez-ipupdate
lfsmake2 fcron
+ 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
- lfsmake2 mtools
lfsmake2 whatmask
+ lfsmake2 libtirpc
lfsmake2 conntrack-tools
- lfsmake2 libupnp
- lfsmake2 ipaddr
lfsmake2 iputils
lfsmake2 l7-protocols
lfsmake2 hwdata
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 Convert-TNEF
- lfsmake2 Convert-UUlib
- lfsmake2 Archive-Tar
- lfsmake2 Archive-Zip
- lfsmake2 Text-Tabs+Wrap
- lfsmake2 Locale-Country
- lfsmake2 XML-Parser
- 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 glib
- lfsmake2 GeoIP
- lfsmake2 geoip-database
+ 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 perl-JSON
+ lfsmake2 perl-Capture-Tiny
+ lfsmake2 perl-Config-AutoConf
+ lfsmake2 perl-Object-Tiny
+ lfsmake2 perl-Archive-Peek-Libarchive
+ lfsmake2 python3-inotify
+ lfsmake2 python3-docutils
+ lfsmake2 python3-daemon
lfsmake2 ntp
lfsmake2 openssh
lfsmake2 fontconfig
lfsmake2 freefont
lfsmake2 pixman
lfsmake2 cairo
+ lfsmake2 harfbuzz
+ lfsmake2 fribidi
lfsmake2 pango
lfsmake2 rrdtool
- lfsmake2 setserial
lfsmake2 setup
- lfsmake2 libdnet
- lfsmake2 rust
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 vlan
lfsmake2 wireless
lfsmake2 pakfire
- lfsmake2 spandsp
lfsmake2 lz4
lfsmake2 lzo
lfsmake2 openvpn
lfsmake2 ghostscript
lfsmake2 qpdf
lfsmake2 poppler
+ lfsmake2 poppler-data
lfsmake2 cups-filters
lfsmake2 epson-inkjet-printer-escpr
+ lfsmake2 cups-pdf
lfsmake2 foomatic
lfsmake2 hplip
lfsmake2 cifs-utils
lfsmake2 krb5
+ lfsmake2 rpcsvc-proto
lfsmake2 samba
+ lfsmake2 netatalk
lfsmake2 sudo
lfsmake2 mc
lfsmake2 wget
lfsmake2 chkconfig
lfsmake2 postfix
lfsmake2 fetchmail
- lfsmake2 cyrus-imapd
lfsmake2 clamav
lfsmake2 perl-NetAddr-IP
- lfsmake2 spamassassin
- lfsmake2 perl-Net-LibIDN
- lfsmake2 amavisd
lfsmake2 dma
lfsmake2 alsa
lfsmake2 mpfire
lfsmake2 libmad
lfsmake2 libogg
lfsmake2 libvorbis
- lfsmake2 libdvbpsi
lfsmake2 flac
lfsmake2 lame
- lfsmake2 sox
lfsmake2 soxr
lfsmake2 libshout
lfsmake2 xvid
lfsmake2 libmpeg2
lfsmake2 gnump3d
lfsmake2 rsync
- lfsmake2 libtirpc
lfsmake2 rpcbind
lfsmake2 keyutils
lfsmake2 nfs
- lfsmake2 gnu-netcat
lfsmake2 ncat
lfsmake2 nmap
lfsmake2 etherwake
lfsmake2 rng-tools
lfsmake2 lsof
lfsmake2 br2684ctl
- lfsmake2 pcmciautils
lfsmake2 lm_sensors
+ lfsmake2 libstatgrab
lfsmake2 liboping
lfsmake2 collectd
+ lfsmake2 git
+ lfsmake2 linux-firmware
+ lfsmake2 dvb-firmwares
+ lfsmake2 zd1211-firmware
+ lfsmake2 rpi-firmware
+ lfsmake2 intel-microcode
+ lfsmake2 pcengines-apu-firmware
lfsmake2 elinks
lfsmake2 igmpproxy
- lfsmake2 fbset
lfsmake2 opus
- lfsmake2 python-six
- lfsmake2 python-pyparsing
+ lfsmake2 python3-toml
+ lfsmake2 python3-pyproject2setuppy
+ lfsmake2 python3-pyparsing
lfsmake2 spice-protocol
lfsmake2 spice
- lfsmake2 sdl
+ lfsmake2 sdl2
lfsmake2 libusbredir
lfsmake2 libseccomp
+ lfsmake2 libslirp
lfsmake2 qemu
- lfsmake2 sane
- lfsmake2 netpbm
lfsmake2 netsnmpd
lfsmake2 nagios_nrpe
lfsmake2 nagios-plugins
lfsmake2 icinga
lfsmake2 observium-agent
lfsmake2 ebtables
- lfsmake2 directfb
lfsmake2 faad2
lfsmake2 alac
lfsmake2 ffmpeg
lfsmake2 vdr_dvbapi
lfsmake2 vdr_eepg
lfsmake2 w_scan
- lfsmake2 icecast
- lfsmake2 icegenerator
+ lfsmake2 fmt
lfsmake2 mpd
lfsmake2 libmpdclient
lfsmake2 mpc
lfsmake2 perl-Authen-SASL
lfsmake2 perl-MIME-Lite
lfsmake2 perl-Email-Date-Format
- lfsmake2 git
- lfsmake2 squidclamav
lfsmake2 vnstat
lfsmake2 iw
lfsmake2 wpa_supplicant
lfsmake2 hostapd
- lfsmake2 pycurl
- lfsmake2 urlgrabber
lfsmake2 syslinux
lfsmake2 tftpd
lfsmake2 cpufrequtils
- lfsmake2 bluetooth
lfsmake2 gutenprint
lfsmake2 apcupsd
+ lfsmake2 fireperf
lfsmake2 iperf
lfsmake2 iperf3
lfsmake2 7zip
lfsmake2 lynis
- lfsmake2 streamripper
lfsmake2 sshfs
lfsmake2 taglib
lfsmake2 sslh
lfsmake2 perl-DBD-SQLite
lfsmake2 perl-File-ReadBackwards
lfsmake2 openvmtools
- 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 swig
+ lfsmake2 dtc
lfsmake2 u-boot
- lfsmake2 u-boot-kirkwood
- lfsmake2 u-boot-friendlyarm
- lfsmake2 python-typing
- lfsmake2 python-m2crypto
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-pycparser
+ lfsmake2 python3-charset-normalizer
+ lfsmake2 python3-certifi
+ lfsmake2 python3-idna
+ lfsmake2 python3-requests
+ 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
lfsmake2 python3-colorama
- lfsmake2 python3-docutils
lfsmake2 python3-yaml
lfsmake2 python3-s3transfer
lfsmake2 python3-rsa
lfsmake2 python3-pyasn1
lfsmake2 python3-botocore
- lfsmake2 python3-llfuse
+ 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-editables
+ lfsmake2 python3-pathspec
+ lfsmake2 python3-pluggy
+ lfsmake2 python3-calver
+ lfsmake2 python3-trove-classifiers
+ lfsmake2 python3-hatchling
+ lfsmake2 python3-hatch-vcs
+ lfsmake2 python3-hatch-fancy-pypi-readme
+ lfsmake2 python3-attrs
+ lfsmake2 python3-sniffio
+ lfsmake2 python3-sortedcontainers
+ lfsmake2 python3-outcome
+ lfsmake2 python3-async_generator
+ lfsmake2 python3-flit_scm
+ lfsmake2 python3-exceptiongroup
+ lfsmake2 python3-trio
+ lfsmake2 python3-pyfuse3
lfsmake2 aws-cli
+ lfsmake2 oci-python-sdk
+ lfsmake2 oci-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 check_mk_agent
lfsmake2 nginx
- lfsmake2 sendEmail
lfsmake2 sysbench
lfsmake2 strace
lfsmake2 ltrace
lfsmake2 ipfire-netboot
lfsmake2 lcdproc
- lfsmake2 bitstream
- lfsmake2 multicat
lfsmake2 keepalived
lfsmake2 ipvsadm
lfsmake2 perl-Carp-Clan
lfsmake2 perl-TimeDate
lfsmake2 swatch
lfsmake2 tor
- lfsmake2 arm
lfsmake2 wavemon
lfsmake2 iptraf-ng
lfsmake2 iotop
lfsmake2 stunnel
lfsmake2 bacula
- lfsmake2 batctl
lfsmake2 perl-Font-TTF
lfsmake2 perl-IO-String
lfsmake2 perl-PDF-API2
- lfsmake2 squid-accounting
- lfsmake2 pigz
+ lfsmake2 proxy-accounting
lfsmake2 tmux
lfsmake2 perl-Text-CSV_XS
+ lfsmake2 lua
lfsmake2 haproxy
lfsmake2 ipset
- lfsmake2 lua
lfsmake2 dnsdist
lfsmake2 bird
+ lfsmake2 libyang
+ lfsmake2 abseil-cpp
+ lfsmake2 protobuf
+ lfsmake2 protobuf-c
lfsmake2 frr
lfsmake2 dmidecode
lfsmake2 mcelog
- lfsmake2 rtpproxy
- lfsmake2 util-macros
lfsmake2 libpciaccess
lfsmake2 libyajl
lfsmake2 libvirt
+ lfsmake2 libtalloc
lfsmake2 freeradius
lfsmake2 perl-common-sense
lfsmake2 perl-inotify2
lfsmake2 i2c-tools
lfsmake2 nss-myhostname
lfsmake2 dehydrated
+ lfsmake2 libplist
+ lfsmake2 nqptp
lfsmake2 shairport-sync
lfsmake2 borgbackup
+ lfsmake2 lmdb
lfsmake2 knot
lfsmake2 spectre-meltdown-checker
lfsmake2 zabbix_agentd
lfsmake2 flashrom
lfsmake2 firmware-update
lfsmake2 tshark
- lfsmake2 geoip-generator
lfsmake2 speedtest-cli
- lfsmake2 rfkill
lfsmake2 amazon-ssm-agent
+ lfsmake2 libloc
+ lfsmake2 ncdu
+ lfsmake2 lshw
+ lfsmake2 socat
+ lfsmake2 libcdada
+ lfsmake2 pmacct
+ lfsmake2 squid-asnbl
+ lfsmake2 qemu-ga
+ 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
+ lfsmake2 rsnapshot
+ lfsmake2 mympd
+ lfsmake2 wsdd
+
+ # Kernelbuild ... current we have no platform that need
+ # multi kernel builds so KCFG is empty
+ lfsmake2 linux KCFG=""
+ lfsmake2 rtl8812au KCFG=""
+ lfsmake2 linux-initrd KCFG=""
}
buildinstaller() {
lfsmake2 memtest
lfsmake2 installer
# use toolchain bash for chroot to strip
- EXTRA_PATH=${TOOLS_DIR}/bin/ lfsmake2 strip
+ CUSTOM_PATH="${TOOLS_DIR}/bin" lfsmake2 strip
}
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
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
ipfirepackages
- lfsmake2 xen-image
- mv $LFS/install/images/*.bz2 $BASEDIR >> $LOGFILE 2>&1
-
cd $BASEDIR
- # remove not useable iso on armv5tel (needed to build flash images)
- [ "${BUILD_ARCH}" = "armv5tel" ] && rm -rf *.iso
-
- for i in `ls *.bz2 *.img.xz *.iso`; do
- md5sum $i > $i.md5
+ for i in $(ls *.bz2 *.img.xz *.iso 2>/dev/null); do
+ b2sum $i > $i.b2
done
cd $PWD
done
# See what we're supposed to do
-case "$1" in
+case "$1" in
build)
- START_TIME=$(now)
-
- # Clear screen
- ${INTERACTIVE} && clear
+ START_TIME="${SECONDS}"
- 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
+ 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
print_build_stage "Building packages"
buildpackages
-
+
print_build_stage "Checking Logfiles for new Files"
cd $BASEDIR
tools/checkrootfiles
cd $PWD
- print_build_summary $(( $(now) - ${START_TIME} ))
+ print_build_summary $(( SECONDS - START_TIME ))
;;
shell)
# enter a shell inside LFS chroot
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
FINISHED=0
cd $BASEDIR/lfs
for c in `seq $MAX_RETRIES`; do
- if (( FINISHED==1 )); then
+ if (( FINISHED==1 )); then
break
fi
FINISHED=1
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
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 \
- > cache/toolchains/$SNAME-$VERSION-toolchain-$TOOLCHAINVER-${BUILD_ARCH}.md5
+ 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
+ b2sum cache/toolchains/$SNAME-$VERSION-toolchain-$TOOLCHAINVER-${BUILD_ARCH}.tar.zst \
+ > cache/toolchains/$SNAME-$VERSION-toolchain-$TOOLCHAINVER-${BUILD_ARCH}.b2
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.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.xz | 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
;;
uploadsrc)
- PWD=`pwd`
if [ -z $IPFIRE_USER ]; then
echo -n "You have to setup IPFIRE_USER first. See .config for details."
print_status FAIL
exit 1
fi
- URL_SOURCE=$(grep URL_SOURCE lfs/Config | awk '{ print $3 }')
- REMOTE_FILES=$(echo "ls -1" | sftp -C ${IPFIRE_USER}@${URL_SOURCE})
+ URL_SOURCE="$(awk '/^URL_SOURCE/ { print $3 }' lfs/Config)"
+
+ rsync \
+ --recursive \
+ --update \
+ --ignore-existing \
+ --progress \
+ --human-readable \
+ --exclude="toolchains/" \
+ "${BASEDIR}/cache/" \
+ "${IPFIRE_USER}@${URL_SOURCE}"
- for file in ${BASEDIR}/cache/*; do
- [ -d "${file}" ] && continue
- grep -q "$(basename ${file})" <<<$REMOTE_FILES && continue
- NEW_FILES="$NEW_FILES $file"
- done
- [ -n "$NEW_FILES" ] && scp -2 $NEW_FILES ${IPFIRE_USER}@${URL_SOURCE}
- cd $BASEDIR
- cd $PWD
exit 0
;;
lang)
$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
update-contributors)
update_contributors
;;
+find-dependencies)
+ shift
+ exec "${BASEDIR}/tools/find-dependencies" "${BASEDIR}/build" "$@"
+ ;;
+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
+ else
+ print_status FAIL
+ fi
+ ;;
*)
- echo "Usage: $0 {build|changelog|clean|gettoolchain|downloadsrc|shell|sync|toolchain|update-contributors}"
+ 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