]> git.ipfire.org Git - ipfire-2.x.git/commitdiff
make.sh: Disable the toolchain during normal builds
authorMichael Tremer <michael.tremer@ipfire.org>
Tue, 28 Oct 2025 15:41:43 +0000 (15:41 +0000)
committerMichael Tremer <michael.tremer@ipfire.org>
Wed, 29 Oct 2025 11:05:06 +0000 (11:05 +0000)
This is a precaution because I have seen some files from the toolchain
being baked into the initrd. That should not happen and by keeping PATH
clean, there is no chance for any confusion.

In order to have the tools available that we need to build the initial
system, we will now have to pass a flag.

Signed-off-by: Michael Tremer <michael.tremer@ipfire.org>
make.sh

diff --git a/make.sh b/make.sh
index 006a69a463459960f836c22415798d67c5f29b77..5bdc7690c945d97758b8d3405414144959adc353 100755 (executable)
--- a/make.sh
+++ b/make.sh
@@ -676,7 +676,7 @@ execute() {
 
                                # Update some variables
                                environ+=(
-                                       [PATH]="${TOOLS_DIR}/ccache/bin:/bin:/usr/bin:/sbin:/usr/sbin:${TOOLS_DIR}/sbin:${TOOLS_DIR}/bin"
+                                       [PATH]="${TOOLS_DIR}/ccache/bin:/bin:/usr/bin:/sbin:/usr/sbin"
                                        [HOME]="/root"
 
                                        # Paths
@@ -708,6 +708,13 @@ execute() {
                                fi
                                ;;
 
+                       # Make the toolchain available in PATH
+                       --enable-toolchain)
+                               environ+=(
+                                       [PATH]="${environ[PATH]}:${TOOLS_DIR}/sbin:${TOOLS_DIR}/bin"
+                               )
+                               ;;
+
                        --interactive)
                                interactive="true"
 
@@ -949,20 +956,40 @@ lfsmake1() {
 }
 
 lfsmake2() {
-       local pkg="${1}"
-       shift
+       local args=()
+       local pkg
+
+       # Parse command line arguments
+       while [ $# -gt 0 ]; do
+               local arg="${1}"
+               shift
+
+               case "${arg}" in
+                       # Collect any arguments
+                       --*)
+                               args+=( "${arg}" )
+                               ;;
+
+                       # Abort once we found the package
+                       *)
+                               pkg="${arg}"
+                               break
+                               ;;
+               esac
+       done
 
        # Run the common check
        lfsmakecommoncheck "${pkg}" "$@"
        [ $? == 1 ] && return 0
 
        # Download source outside of the toolchain
-       if ! make_pkg --network "${pkg}" download "$@"; then
+       if ! make_pkg --network "${args[@]}" "${pkg}" download "$@"; then
                exiterror "Downloading ${pkg}"
        fi
 
        # Run install on the package
-       if ! make_pkg --chroot --timer="update_runtime" "${pkg}" b2 install "$@"; then
+       if ! make_pkg --chroot --timer="update_runtime" \
+                       "${args[@]}" "${pkg}" b2 install "$@"; then
                print_status FAIL
 
                exiterror "Building ${pkg}"
@@ -1402,76 +1429,78 @@ build_toolchain() {
 build_system() {
        local LOGFILE="${LOG_DIR}/_build.${SNAME}.log"
 
-       lfsmake2 stage2
-       lfsmake2 linux                  HEADERS=1
-       lfsmake2 man-pages
-       lfsmake2 glibc
-       lfsmake2 tzdata
-       lfsmake2 cleanup-toolchain
-       lfsmake2 zlib-ng
-       [ "${BUILD_ARCH}" = "riscv64" ] && lfsmake2 gcc PASS=A
-       lfsmake2 zstd
-       lfsmake2 autoconf
-       lfsmake2 autoconf-archive
-       lfsmake2 automake
-       lfsmake2 help2man
-       lfsmake2 libtool
-       lfsmake2 binutils
-       lfsmake2 gmp
-       lfsmake2 mpfr
-       lfsmake2 libmpc
-       lfsmake2 pkg-config
-       lfsmake2 libxcrypt
-       lfsmake2 file
-       lfsmake2 gcc
-       lfsmake2 attr
-       lfsmake2 acl
-       lfsmake2 sed
-       lfsmake2 berkeley
-       lfsmake2 coreutils
-       lfsmake2 iana-etc
-       lfsmake2 m4
-       lfsmake2 bison
-       lfsmake2 ncurses
-       lfsmake2 perl
-       lfsmake2 readline
-       lfsmake2 bzip2
-       lfsmake2 xz
-       lfsmake2 lzip
-       lfsmake2 pcre
-       lfsmake2 pcre2
-       lfsmake2 gettext
-       lfsmake2 bash
-       lfsmake2 diffutils
-       lfsmake2 ed
-       lfsmake2 findutils
-       lfsmake2 flex
-       lfsmake2 gawk
-       lfsmake2 go
-       lfsmake2 grep
-       lfsmake2 groff
-       lfsmake2 gperf
-       lfsmake2 gzip
-       lfsmake2 hostname
-       lfsmake2 whois
-       lfsmake2 kbd
-       lfsmake2 less
-       lfsmake2 procps
-       lfsmake2 make
-       lfsmake2 libpipeline
-       lfsmake2 man
-       lfsmake2 net-tools
-       lfsmake2 patch
-       lfsmake2 psmisc
-       lfsmake2 shadow
-       lfsmake2 sysklogd
-       lfsmake2 sysvinit
-       lfsmake2 tar
-       lfsmake2 texinfo
-       lfsmake2 util-linux
-       lfsmake2 vim
-       lfsmake2 e2fsprogs
-       lfsmake2 jq
+       lfsmake2 --enable-toolchain stage2
+       lfsmake2 --enable-toolchain linux                       HEADERS=1
+       lfsmake2 --enable-toolchain man-pages
+       lfsmake2 --enable-toolchain glibc
+       lfsmake2 --enable-toolchain tzdata
+       lfsmake2 --enable-toolchain cleanup-toolchain
+       lfsmake2 --enable-toolchain zlib-ng
+       [ "${BUILD_ARCH}" = "riscv64" ] && lfsmake2 --enable-toolchain gcc PASS=A
+       lfsmake2 --enable-toolchain zstd
+       lfsmake2 --enable-toolchain autoconf
+       lfsmake2 --enable-toolchain autoconf-archive
+       lfsmake2 --enable-toolchain automake
+       lfsmake2 --enable-toolchain help2man
+       lfsmake2 --enable-toolchain libtool
+       lfsmake2 --enable-toolchain binutils
+       lfsmake2 --enable-toolchain gmp
+       lfsmake2 --enable-toolchain mpfr
+       lfsmake2 --enable-toolchain libmpc
+       lfsmake2 --enable-toolchain pkg-config
+       lfsmake2 --enable-toolchain libxcrypt
+       lfsmake2 --enable-toolchain file
+       lfsmake2 --enable-toolchain gcc
+       lfsmake2 --enable-toolchain attr
+       lfsmake2 --enable-toolchain acl
+       lfsmake2 --enable-toolchain sed
+       lfsmake2 --enable-toolchain berkeley
+       lfsmake2 --enable-toolchain coreutils
+       lfsmake2 --enable-toolchain iana-etc
+       lfsmake2 --enable-toolchain m4
+       lfsmake2 --enable-toolchain bison
+       lfsmake2 --enable-toolchain ncurses
+       lfsmake2 --enable-toolchain perl
+       lfsmake2 --enable-toolchain readline
+       lfsmake2 --enable-toolchain bzip2
+       lfsmake2 --enable-toolchain xz
+       lfsmake2 --enable-toolchain lzip
+       lfsmake2 --enable-toolchain pcre
+       lfsmake2 --enable-toolchain pcre2
+       lfsmake2 --enable-toolchain gettext
+       lfsmake2 --enable-toolchain bash
+       lfsmake2 --enable-toolchain diffutils
+       lfsmake2 --enable-toolchain ed
+       lfsmake2 --enable-toolchain findutils
+       lfsmake2 --enable-toolchain flex
+       lfsmake2 --enable-toolchain gawk
+       lfsmake2 --enable-toolchain go
+       lfsmake2 --enable-toolchain grep
+       lfsmake2 --enable-toolchain groff
+       lfsmake2 --enable-toolchain gperf
+       lfsmake2 --enable-toolchain gzip
+       lfsmake2 --enable-toolchain hostname
+       lfsmake2 --enable-toolchain whois
+       lfsmake2 --enable-toolchain kbd
+       lfsmake2 --enable-toolchain less
+       lfsmake2 --enable-toolchain procps
+       lfsmake2 --enable-toolchain make
+       lfsmake2 --enable-toolchain libpipeline
+       lfsmake2 --enable-toolchain man
+       lfsmake2 --enable-toolchain net-tools
+       lfsmake2 --enable-toolchain patch
+       lfsmake2 --enable-toolchain psmisc
+       lfsmake2 --enable-toolchain shadow
+       lfsmake2 --enable-toolchain sysklogd
+       lfsmake2 --enable-toolchain sysvinit
+       lfsmake2 --enable-toolchain tar
+       lfsmake2 --enable-toolchain texinfo
+       lfsmake2 --enable-toolchain util-linux
+       lfsmake2 --enable-toolchain vim
+       lfsmake2 --enable-toolchain e2fsprogs
+       lfsmake2 --enable-toolchain jq
+
+       # From here, build without having the toolchain available
        lfsmake2 configroot
        lfsmake2 initscripts
        lfsmake2 backup
@@ -2038,7 +2067,7 @@ build_system() {
        lfsmake2 mcelog
        lfsmake2 socat
        lfsmake2 libtpms
-       lfsmake2 swtpm
+       lfsmake2 --enable-toolchain swtpm # requires expect from the toolchain
        lfsmake2 libpciaccess
        lfsmake2 ovmf
        lfsmake2 libvirt