Files
axe-os/build.bash
ag-tsotetsi 409517b49f re-edit
2026-03-22 21:30:15 +02:00

875 lines
18 KiB
Bash
Executable File

#!/usr/bin/env bash
set -euo pipefail
umask 022
. version.bash
. flags.bash
. utilities.bash
toolchain_m4() {
}
toolchain_ncurses() {
fetch $NCURSES_URL
cd "$SOURCES" && tar xf ncurses-$NCURSES_VERSION.tar.gz && cd ncurses-$NCURSES_VERSION
mkdir -p build
pushd build
../configure \
--prefix="$CROSS" \
AWK=gawk \
--silent \
--quiet
make -C include
make -C progs tic
install progs/tic "$CROSS/bin"
popd
./configure \
--prefix=/usr \
--host=$TARGET \
--build=$(./config.guess) \
--mandir=/usr/share/man \
--with-manpage-format=normal \
--with-shared \
--without-normal \
--with-cxx-shared \
--without-debug \
--without-ada \
--disable-stripping \
AWK=gawk \
--silent \
--quiet
make && make DESTDIR="$SYSROOT" install
ln -s libncursesw.so "$SYSROOT"/usr/lib/libncurses.so
sed -e 's/^#if.*XOPEN.*$/#if 1/' -i "$SYSROOT"/usr/include/curses.h
cd "$SOURCES" && rm -rf ncurses-$NCURSES_VERSION
}
toolchain_bash() {
fetch $BASH_URL
cd "$SOURCES" && tar xf bash-$BASH_VERSION.tar.gz && cd bash-$BASH_VERSION
./configure \
--prefix=/usr \
--build=$(sh support/config.guess) \
--host=$TARGET \
--without-bash-malloc \
--silent \
--quiet
make && make DESTDIR="$SYSROOT" install
ln -s bash "$SYSROOT"/bin/sh
cd "$SOURCES" && rm -rf bash-$BASH_VERSION
}
toolchain_coreutils() {
fetch $COREUTILS_URL
cd "$SOURCES" && tar xf coreutils-$COREUTILS_VERSION.tar.xz && cd coreutils-$COREUTILS_VERSION
sed -r '/_GL_EXTERN_C/s/w?memchr|bsearch/(&)/' -i $(find -name \*.in.h)
./configure \
--prefix=/usr \
--host=$TARGET \
--build=$(build-aux/config.guess) \
--enable-install-program=hostname \
--enable-no-install-program=kill,uptime \
--silent \
--quiet
make && make DESTDIR="$SYSROOT" install
mv "$SYSROOT"/usr/bin/chroot "$SYSROOT"/usr/sbin
cd "$SOURCES" && rm -rf coreutils-$COREUTILS_VERSION
}
toolchain_diffutils() {
fetch $DIFFUTILS_URL
cd "$SOURCES" && tar xf diffutils-$DIFFUTILS_VERSION.tar.xz && cd diffutils-$DIFFUTILS_VERSION
./configure \
--prefix=/usr \
--host=$TARGET \
gl_cv_func_strcasecmp_works=y \
--build=$(./build-aux/config.guess) \
--silent \
--quiet
make && make DESTDIR="$SYSROOT" install
cd "$SOURCES" && rm -rf diffutils-$DIFFUTILS_VERSION
}
toolchain_file() {
fetch $FILE_URL
cd "$SOURCES" && tar xf file-$FILE_VERSION.tar.gz && cd file-$FILE_VERSION
mkdir -p build
pushd build
../configure \
--disable-bzlib \
--disable-libseccomp \
--disable-xzlib \
--disable-zlib \
--silent \
--quiet
make
popd
./configure \
--prefix=/usr \
--host="$TARGET" \
--build=$(./config.guess) \
--silent \
--quiet
make FILE_COMPILE="$(pwd)/build/src/file" && make DESTDIR="$SYSROOT" install
rm "$SYSROOT"/usr/lib/libmagic.la
cd "$SOURCES" && rm -rf file-$FILE_VERSION
}
toolchain_findutils() {
fetch $FINDUTILS_URL
cd "$SOURCES" && tar xf findutils-$FINDUTILS_VERSION.tar.xz && cd findutils-$FINDUTILS_VERSION
./configure \
--prefix=/usr \
--localstatedir=/var/lib/locate \
--host=$TARGET \
--build=$(build-aux/config.guess) \
--silent \
--quiet
make && make DESTDIR="$SYSROOT" install
cd "$SOURCES" && rm -rf findutils-$FINDUTILS_VERSION
}
toolchain_gawk() {
fetch $GAWK_URL
cd "$SOURCES" && tar xf gawk-$GAWK_VERSION.tar.xz && cd gawk-$GAWK_VERSION
sed -i 's/extras//' Makefile.in
./configure \
--prefix=/usr \
--host=$TARGET \
--build=$(build-aux/config.guess) \
--silent \
--quiet
make && make DESTDIR="$SYSROOT" install
cd "$SOURCES" && rm -rf gawk-$GAWK_VERSION
}
toolchain_grep() {
fetch $GREP_URL
cd "$SOURCES" && tar xf grep-$GREP_VERSION.tar.xz && cd grep-$GREP_VERSION
./configure \
--prefix=/usr \
--host=$TARGET \
--build=$(build-aux/config.guess) \
--silent \
--quiet
make && make DESTDIR="$SYSROOT" install
cd "$SOURCES" && rm -rf grep-$GREP_VERSION
}
toolchain_gzip() {
fetch $GZIP_URL
cd "$SOURCES" && tar xf gzip-$GZIP_VERSION.tar.xz && cd gzip-$GZIP_VERSION
./configure \
--prefix=/usr \
--host=$TARGET \
--silent \
--quiet
make && make DESTDIR="$SYSROOT" install
cd "$SOURCES" && rm -rf gzip-$GZIP_VERSION
}
toolchain_make() {
fetch $MAKE_URL
cd "$SOURCES" && tar xf make-$MAKE_VERSION.tar.gz && cd make-$MAKE_VERSION
./configure \
--prefix=/usr \
--host=$TARGET \
--build=$(build-aux/config.guess) \
--silent \
--quiet
make && make DESTDIR="$SYSROOT" install
cd "$SOURCES" && rm -rf make-$MAKE_VERSION
}
toolchain_patch() {
fetch $PATCH_URL
cd "$SOURCES" && tar xf patch-$PATCH_VERSION.tar.xz && cd patch-$PATCH_VERSION
./configure \
--prefix=/usr \
--host=$TARGET \
--build=$(build-aux/config.guess) \
--silent \
--quiet
make && make DESTDIR="$SYSROOT" install
cd "$SOURCES" && rm -rf patch-$PATCH_VERSION
}
toolchain_sed() {
fetch $SED_URL
cd "$SOURCES" && tar xf sed-$SED_VERSION.tar.xz && cd sed-$SED_VERSION
./configure \
--prefix=/usr \
--host=$TARGET \
--build=$(build-aux/config.guess) \
--silent \
--quiet
make && make DESTDIR="$SYSROOT" install
cd "$SOURCES" && rm -rf sed-$SED_VERSION
}
toolchain_tar() {
fetch $TAR_URL
cd "$SOURCES" && tar xf tar-$TAR_VERSION.tar.xz && cd tar-$TAR_VERSION
./configure \
--prefix=/usr \
--host=$TARGET \
--build=$(build-aux/config.guess) \
--silent \
--quiet
make && make DESTDIR="$SYSROOT" install
cd "$SOURCES" && rm -rf tar-$TAR_VERSION
}
toolchain_xz() {
fetch $XZ_URL
cd "$SOURCES" && tar xf xz-$XZ_VERSION.tar.xz && cd xz-$XZ_VERSION
./configure \
--prefix=/usr \
--host=$TARGET \
--build=$(build-aux/config.guess) \
--disable-static \
--silent \
--quiet
make && make DESTDIR="$SYSROOT" install
rm "$SYSROOT"/usr/lib/liblzma.la
cd "$SOURCES" && rm -rf xz-$XZ_VERSION
}
toolchain_binutils() {
cd "$SOURCES" && tar xf binutils-$BINUTILS_VERSION.tar.xz && cd binutils-$BINUTILS_VERSION
sed '6031s/$add_dir//' -i ltmain.sh
mkdir -p build && cd build
../configure \
--prefix=/usr \
--build=$(../config.guess) \
--host=$TARGET \
--disable-nls \
--enable-shared \
--enable-gprofng=no \
--disable-werror \
--enable-64-bit-bfd \
--enable-new-dtags \
--enable-default-hash-style=gnu \
--silent \
--quiet
make && make DESTDIR="$SYSROOT" install
rm "$SYSROOT"/usr/lib/lib{bfd,ctf,ctf-nobfd,opcodes,sframe}.{a,la}
cd "$SOURCES" && rm -rf binutils-$BINUTILS_VERSION
}
toolchain_gcc() {
cd "$SOURCES" && tar xf gcc-$GCC_VERSION.tar.xz && cd gcc-$GCC_VERSION
tar xf ../gmp-$GMP_VERSION.tar.xz && mv gmp-$GMP_VERSION gmp
tar xf ../isl-$ISL_VERSION.tar.xz && mv isl-$ISL_VERSION isl
tar xf ../mpc-$MPC_VERSION.tar.gz && mv mpc-$MPC_VERSION mpc
tar xf ../mpfr-$MPFR_VERSION.tar.xz && mv mpfr-$MPFR_VERSION mpfr
sed -e '/m64=/s/lib64/lib/' -i.orig gcc/config/i386/t-linux64
sed '/thread_header =/s/@.*@/gthr-posix.h/' -i libgcc/Makefile.in libstdc++-v3/include/Makefile.in
mkdir -p build && cd build
../configure \
--build=$(../config.guess) \
--host=$TARGET \
--target=$TARGET \
--prefix=/usr \
--with-build-sysroot="$SYSROOT" \
--enable-default-pie \
--enable-default-ssp \
--disable-nls \
--disable-multilib \
--disable-libatomic \
--disable-libgomp \
--disable-libquadmath \
--disable-libsanitizer \
--disable-libssp \
--disable-libvtv \
--enable-languages=c,c++ \
LDFLAGS_FOR_TARGET=-L"$PWD/$TARGET/libgcc" \
--silent \
--quiet
make && make DESTDIR="$SYSROOT" install
ln -s gcc "$SYSROOT"/usr/bin/cc
cd "$SOURCES" && rm -rf gcc-$GCC_VERSION
}
prechroot_gettext() {
fetch $GETTEXT_URL
sudo chroot "$SYSROOT" /usr/bin/env -i \
MAKEFLAGS="$MAKEFLAGS" \
PATH=/usr/bin:/usr/sbin \
SOURCES=/sources \
GETTEXT_VERSION=$GETTEXT_VERSION \
/usr/bin/bash <<- "EOF"
set -euo pipefail
cd "$SOURCES" && tar xf gettext-$GETTEXT_VERSION.tar.xz && cd gettext-$GETTEXT_VERSION
./configure \
--disable-shared \
--silent \
--quiet
make
cp gettext-tools/src/{msgfmt,msgmerge,xgettext} /usr/bin
cd "$SOURCES" && rm -rf gettext-$GETTEXT_VERSION
EOF
}
prechroot_bison() {
fetch $BISON_URL
sudo chroot "$SYSROOT" /usr/bin/env -i \
MAKEFLAGS="$MAKEFLAGS" \
PATH=/usr/bin:/usr/sbin \
SOURCES=/sources \
BISON_VERSION=$BISON_VERSION \
/usr/bin/bash <<- "EOF"
set -euo pipefail
cd "$SOURCES" && tar xf bison-$BISON_VERSION.tar.xz && cd bison-$BISON_VERSION
./configure \
--prefix=/usr \
--silent \
--quiet
make && make install
cd "$SOURCES" && rm -rf bison-$BISON_VERSION
EOF
}
prechroot_perl() {
fetch $PERL_URL
sudo chroot "$SYSROOT" /usr/bin/env -i \
MAKEFLAGS="$MAKEFLAGS" \
PATH=/usr/bin:/usr/sbin \
SOURCES=/sources \
PERL_VERSION=$PERL_VERSION \
/usr/bin/bash <<- "EOF"
set -euo pipefail
cd "$SOURCES" && tar xf perl-$PERL_VERSION.tar.gz && cd perl-$PERL_VERSION
sh Configure -des \
-D prefix=/usr \
-D vendorprefix=/usr \
-D useshrplib \
-D privlib=/usr/lib/perl5/$PERL_VERSION/core_perl \
-D archlib=/usr/lib/perl5/$PERL_VERSION/core_perl \
-D sitelib=/usr/lib/perl5/$PERL_VERSION/site_perl \
-D sitearch=/usr/lib/perl5/$PERL_VERSION/site_perl \
-D vendorlib=/usr/lib/perl5/$PERL_VERSION/vendor_perl \
-D vendorarch=/usr/lib/perl5/$PERL_VERSION/vendor_perl
make && make install
cd "$SOURCES" && rm -rf perl-$PERL_VERSION
EOF
}
prechroot_python() {
fetch $PYTHON_URL
sudo chroot "$SYSROOT" /usr/bin/env -i \
MAKEFLAGS="$MAKEFLAGS" \
PATH=/usr/bin:/usr/sbin \
SOURCES=/sources \
PYTHON_VERSION=$PYTHON_VERSION \
/usr/bin/bash <<- "EOF"
set -euo pipefail
cd "$SOURCES" && tar xf Python-$PYTHON_VERSION.tar.xz && cd Python-$PYTHON_VERSION
./configure \
--prefix=/usr \
--enable-shared \
--without-static-libpython \
--disable-test-modules \
--without-ensurepip \
--silent \
--quiet
make && make install
rm -rf /usr/lib/python$PYTHON_VERSION/test
cd "$SOURCES" && rm -rf Python-$PYTHON_VERSION
EOF
}
prechroot_util_linux() {
fetch $UTIL_LINUX_URL
sudo chroot "$SYSROOT" /usr/bin/env -i \
MAKEFLAGS="$MAKEFLAGS" \
PATH=/usr/bin:/usr/sbin \
SOURCES=/sources \
UTIL_LINUX_VERSION=$UTIL_LINUX_VERSION \
/usr/bin/bash <<- "EOF"
set -euo pipefail
cd "$SOURCES" && tar xf util-linux-$UTIL_LINUX_VERSION.tar.xz && cd util-linux-$UTIL_LINUX_VERSION
mkdir -p /var/lib/hwclock
./configure --libdir=/usr/lib \
--runstatedir=/run \
--disable-chfn-chsh \
--disable-login \
--disable-nologin \
--disable-su \
--disable-setpriv \
--disable-runuser \
--disable-pylibmount \
--disable-static \
--disable-liblastlog2 \
--without-python \
ADJTIME_PATH=/var/lib/hwclock/adjtime \
--silent \
--quiet
make && make install
cd "$SOURCES" && rm -rf util-linux-$UTIL_LINUX_VERSION
EOF
}
prechroot_cleanup() {
sudo chroot "$SYSROOT" /usr/bin/env -i \
/usr/bin/bash <<- "EOF"
rm -rf /usr/share/{info,man,doc}/*
find /usr/{lib,libexec} -name \*.la -delete
rm -rf /cross
EOF
}
chroot_tmpfs_setup() {
sudo chroot "$SYSROOT" /usr/bin/env -i /usr/bin/bash <<- "EOF"
ln -s run /var/run
ln -sfv run/lock /var/lock
install -dv -m 0750 /root
install -dv -m 1777 /tmp /var/tmp
ln -s proc/self/mounts /etc/mtab
cat > /etc/hosts <<- "END_OF_FILE"
127.0.0.1 localhost axe
::1 localhost
END_OF_FILE
cat > /etc/passwd <<- "END_OF_FILE"
root:x:0:0:root:/root:/usr/bin/bash
uuidd:x:6:6::/dev/null:/usr/bin/nologin
messagebus:x:7:7::/run/dbus:/usr/bin/nologin
nobody:x:65534:65534::/dev/null:/usr/bin/nologin
END_OF_FILE
cat > /etc/group <<- "END_OF_FILE"
root:x:0:
tty:x:1:
audio:x:2:
video:x:3:
input:x:4:
wheel:x:5:
uuidd:x:6:
messagebus:x:7:
users:x:999:
nogroup:x:65534:
END_OF_FILE
EOF
}
chroot_iana_etc() {
fetch $IANA_ETC_URL
sudo chroot "$SYSROOT" /usr/bin/env -i MAKEFLAGS="$MAKEFLAGS" PATH=/usr/bin:/usr/sbin SOURCES=/sources IANA_ETC_VERSION=$IANA_ETC_VERSION /usr/bin/bash <<- "EOF"
set -euo pipefail
cd "$SOURCES" && tar xf iana-etc-$IANA_ETC_VERSION.tar.gz && cd iana-etc-$IANA_ETC_VERSION
cp services protocols /etc
cd "$SOURCES" && rm -rf iana-etc-$IANA_ETC_VERSION
EOF
}
chroot_glibc() {
fetch $TZDATA_URL
sudo chroot "$SYSROOT" /usr/bin/env -i MAKEFLAGS="$MAKEFLAGS" PATH=/usr/bin:/usr/sbin SOURCES=/sources GLIBC_VERSION=$GLIBC_VERSION LINUX_VERSION=$LINUX_VERSION TZDATA_VERSION=$TZDATA_VERSION /usr/bin/bash <<- "EOF"
set -euo pipefail
cd "$SOURCES" && tar xf glibc-$GLIBC_VERSION.tar.xz && cd glibc-$GLIBC_VERSION
patch -Np1 -i ../glibc-fhs-1.patch
mkdir -p build && cd build
echo "rootsbindir=/usr/sbin" > configparms
../configure \
--prefix=/usr \
--disable-werror \
--disable-nscd \
libc_cv_slibdir=/usr/lib \
--enable-stack-protector=strong \
--enable-kernel= \
--disable-nls \
--enable-kernel=$LINUX_VERSION \
--silent \
--quiet
make && make install
touch /etc/ld.so.conf
sed '/RTLDLIST=/s@/usr@@g' -i /usr/bin/ldd
cat > /etc/nsswitch.conf <<- "END_OF_FILE"
passwd: files
group: files
shadow: files
hosts: files dns
networks: files
protocols: files
services: files
ethers: files
rpc: files
END_OF_FILE
tar xf $SOURCES/tzdata$TZDATA_VERSION.tar.gz
ZONEINFO=/usr/share/zoneinfo
mkdir -p $ZONEINFO/{posix,right}
for tz in etcetera southamerica northamerica europe africa antarctica asia australasia backward; do
zic -L /dev/null -d $ZONEINFO ${tz}
zic -L /dev/null -d $ZONEINFO/posix ${tz}
zic -L leapseconds -d $ZONEINFO/right ${tz}
done
cp zone.tab zone1970.tab iso3166.tab $ZONEINFO
zic -d $ZONEINFO -p Africa/Johannesburg
unset ZONEINFO tz
ln -sf /usr/share/zoneinfo/Africa/Johannesburg /etc/localtime
cat > /etc/ld.so.conf <<- "END_OF_FILE"
/usr/local/lib
/opt/lib
include /etc/ld.so.conf.d/*.conf
END_OF_FILE
mkdir -p /etc/ld.so.conf.d
cd "$SOURCES" && rm -rf glibc-$GLIBC_VERSION
EOF
}
chroot_zlib() {
fetch $ZLIB_URL
sudo chroot "$SYSROOT" /usr/bin/env -i MAKEFLAGS="$MAKEFLAGS" PATH=/usr/bin:/usr/sbin SOURCES=/sources ZLIB_VERSION=$ZLIB_VERSION /usr/bin/bash <<- "EOF"
set -euo pipefail
cd "$SOURCES" && tar xf zlib-$ZLIB_VERSION.tar.gz && cd zlib-$ZLIB_VERSION
./configure \
--prefix=/usr
make && make install
rm -f /usr/lib/libz.a
cd "$SOURCES" && rm -rf zlib-$ZLIB_VERSION
EOF
}
chroot_bzip2() {
fetch $BZIP2_URL
sudo chroot "$SYSROOT" /usr/bin/env -i MAKEFLAGS="$MAKEFLAGS" PATH=/usr/bin:/usr/sbin SOURCES=/sources BZIP2_VERSION=$BZIP2_VERSION /usr/bin/bash <<- "EOF"
set -euo pipefail
cd "$SOURCES" && tar xf bzip2-$BZIP2_VERSION.tar.gz && cd bzip2-$BZIP2_VERSION
sed -i 's@\(ln -s -f \)$(PREFIX)/bin/@\1@' Makefile
make -f Makefile-libbz2_so
make clean
make && make PREFIX=/usr install
cp -a libbz2.so.* /usr/lib
ln -sf libbz2.so.1.0.8 /usr/lib/libbz2.so
ln -sf libbz2.so.1.0.8 /usr/lib/libbz2.so.1
cp bzip2-shared /usr/bin/bzip2
for i in /usr/bin/{bzcat,bunzip2}; do
ln -sf bzip2 $i
done
rm -f /usr/lib/libbz2.a
cd "$SOURCES" && rm -rf bzip2-$BZIP2_VERSION
EOF
}
chroot_xz() {
sudo chroot "$SYSROOT" /usr/bin/env -i MAKEFLAGS="$MAKEFLAGS" PATH=/usr/bin:/usr/sbin SOURCES=/sources XZ_VERSION=$XZ_VERSION /usr/bin/bash <<- "EOF"
set -euo pipefail
cd "$SOURCES" && tar xf xz-$XZ_VERSION.tar.xz && cd xz-$XZ_VERSION
./configure \
--prefix=/usr \
--disable-static
make && make install
cd "$SOURCES" && rm -rf xz-$XZ_VERSION
EOF
}
chroot_zstd() {
fetch $ZSTD_URL
sudo chroot "$SYSROOT" /usr/bin/env -i MAKEFLAGS="$MAKEFLAGS" PATH=/usr/bin:/usr/sbin SOURCES=/sources ZSTD_VERSION=$ZSTD_VERSION /usr/bin/bash <<- "EOF"
set -euo pipefail
cd "$SOURCES" && tar xf zstd-$ZSTD_VERSION.tar.gz && cd zstd-$ZSTD_VERSION
make prefix=/usr
make prefix=/usr install
rm /usr/lib/libzstd.a
cd "$SOURCES" && rm -rf zstd-$ZSTD_VERSION
EOF
}
chroot_file() {
fetch $FILE_URL
sudo chroot "$SYSROOT" /usr/bin/env -i MAKEFLAGS="$MAKEFLAGS" PATH=/usr/bin:/usr/sbin SOURCES=/sources FILE_VERSION=$FILE_VERSION /usr/bin/bash <<- "EOF"
set -euo pipefail
cd "$SOURCES" && tar xf file-$FILE_VERSION.tar.gz && cd file-$FILE_VERSION
./configure \
--prefix=/usr
make && make install
cd "$SOURCES" && rm -rf file-$FILE_VERSION
EOF
}
chroot_readline() {
fetch $READLINE_URL
sudo chroot "$SYSROOT" /usr/bin/env -i MAKEFLAGS="$MAKEFLAGS" PATH=/usr/bin:/usr/sbin SOURCES=/sources READLINE_VERSION=$READLINE_VERSION /usr/bin/bash <<- "EOF"
set -euo pipefail
cd "$SOURCES" && tar xf readline-$READLINE_VERSION.tar.gz && cd readline-$READLINE_VERSION
sed -i '/MV.*old/d' Makefile.in
sed -i '/{OLDSUFF}/c:' support/shlib-install
sed -i 's/-Wl,-rpath,[^ ]*//' support/shobj-conf
sed -e '270a\
else\
chars_avail = 1;' \
-e '288i\ result = -1;' \
-i.orig input.c
./configure \
--prefix=/usr \
--disable-static \
--with-curses
make SHLIB_LIBS="-lncursesw" && make install
cd "$SOURCES" && rm -rf readline-$READLINE_VERSION
EOF
}
chroot_pcre2() {
fetch $PCRE2_URL
sudo chroot "$SYSROOT" /usr/bin/env -i MAKEFLAGS="$MAKEFLAGS" PATH=/usr/bin:/usr/sbin SOURCES=/sources PCRE2_VERSION=$PCRE2_VERSION /usr/bin/bash <<- "EOF"
set -euo pipefail
cd "$SOURCES" && tar xf pcre2-$PCRE2_VERSION.tar.gz && cd pcre2-$PCRE2_VERSION
./configure \
--prefix=/usr \
--enable-unicode \
--enable-jit \
--enable-pcre2-16 \
--enable-pcre2-32 \
--enable-pcre2grep-libz \
--enable-pcre2grep-libbz2 \
--enable-pcre2test-libreadline \
--disable-static
make && make install
cd "$SOURCES" && rm -rf pcre2-$PCRE2_VERSION
EOF
}
#create_sysroot
#bootstrap_binutils
#bootstap_gcc
#bootstap_linux
#bootstap_glibc
#bootstap_libstdcpp
#toolchain_m4
#toolchain_ncurses
#toolchain_bash
#toolchain_coreutils
#toolchain_diffutils
#toolchain_file
#toolchain_findutils
#toolchain_gawk
#toolchain_grep
#toolchain_gzip
#toolchain_make
#toolchain_patch
#toolchain_sed
#toolchain_tar
#toolchain_xz
#toolchain_binutils
#toolchain_gcc
#change_owner
#do_mount
#prechroot_gettext
#prechroot_bison
#prechroot_perl
#prechroot_python
#prechroot_util_linux
#prechroot_cleanup
#do_unmount
#chroot_iana_etc
#chroot_glibc
#chroot_zlib
#chroot_bzip2
#chroot_xz
#chroot_zstd
#chroot_file
#chroot_readline
#chroot_pcre2