Builds correctly

This commit is contained in:
Denis Benato 2024-12-08 23:22:20 +01:00
parent 126f61496a
commit 5885d115b1

341
build.sh
View file

@ -124,10 +124,14 @@ host_toolchain() {
# Create a directory layout
if [ ! -d "$LFS/etc" ]; then
mkdir -pv $LFS/{etc,var} $LFS/usr/{bin,lib,sbin,libexec,share}
mkdir -pv $LFS/{etc,var} $LFS/usr/{bin,lib,share}
mkdir -pv $LFS/{dev,proc,sys,run,tmp}
for i in bin lib sbin libexec; do
# like archlinux sbin->/usr/bin
ln -sv usr/bin $LFS/sbin
ln -sv bin $LFS/usr/sbin
for i in bin lib; do
ln -sv usr/$i $LFS/$i
done
fi
@ -512,15 +516,16 @@ if [ ! -f "$STEPS_DIR/attr" ]; then
mkdir -vp build-$LFS_TGT
cd build-$LFS_TGT
echo "rootsbindir=/usr/sbin" > configparms
echo "rootsbindir=/usr/bin" > configparms
"../configure" \
--prefix=/ \
--prefix=/usr \
--with-sysroot=${LFS} \
--disable-static \
--host=$LFS_TGT
make -j 32
make DESTDIR=$LFS install
make -j 32 DESTDIR="$LFS" install
cd "$BASE_DIR"
rm -rf "$LFS_BUILD/attr"
@ -538,11 +543,17 @@ if [ ! -f "$STEPS_DIR/zlib" ]; then
mkdir -vp build-$LFS_TGT
cd build-$LFS_TGT
export CFLAGS_old="$CFLAGS"
export CFLAGS+=" -ffat-lto-objects"
"../configure" \
--prefix=$LFS
--prefix=/usr \
--enable-shared
make -j 32
make install
make -j 32 DESTDIR="$LFS" install
export CFLAGS="$CFLAGS_old"
cd "$BASE_DIR"
rm -rf "$LFS_BUILD/zlib"
@ -582,6 +593,34 @@ if [ ! -f "$STEPS_DIR/ncurses" ]; then
touch "$STEPS_DIR/ncurses"
fi
# build readline (depends on libncurses)
if [ ! -f "$STEPS_DIR/readline" ]; then
if [ ! -d "$LFS_BUILD/readline" ]; then
tar -xf "$BASE_DIR/sources/readline-8.2.13.tar.gz"
mv "readline-8.2.13" "$LFS_BUILD/readline"
fi
cd "$LFS_BUILD/readline"
mkdir -vp build-$LFS_TGT
cd build-$LFS_TGT
"../configure" \
--with-sysroot=${LFS} \
--host=${LFS_TGT} \
--build=${BUILD_MACHINE_TRIPLET} \
--prefix=/usr \
--with-curses \
--enable-static=no \
--cache-file=config.cache
make -j 32 SHLIB_LIBS=-lncurses
make -j 32 DESTDIR=$LFS install
cd "$BASE_DIR"
rm -rf "$LFS_BUILD/readline"
touch "$STEPS_DIR/readline"
fi
# build bash
if [ ! -f "$STEPS_DIR/bash" ]; then
if [ ! -d "$LFS_BUILD/bash" ]; then
@ -593,17 +632,27 @@ if [ ! -f "$STEPS_DIR/bash" ]; then
mkdir -vp build-$LFS_TGT
cd build-$LFS_TGT
# --build=${CLFS_HOST} \
_bashconfig=(-DDEFAULT_PATH_VALUE=\'\"/usr/local/sbin:/usr/local/bin:/usr/bin\"\'
-DSTANDARD_UTILS_PATH=\'\"/usr/bin\"\'
-DSYS_BASHRC=\'\"/etc/bash.bashrc\"\'
-DSYS_BASH_LOGOUT=\'\"/etc/bash.bash_logout\"\'
-DNON_INTERACTIVE_LOGIN_SHELLS)
export CFLAGS_old="$CFLAGS"
export CFLAGS="${CFLAGS} ${_bashconfig[@]}"
"../configure" \
--prefix=$LFS \
--prefix=/usr \
--host=${LFS_TGT} \
--build=${BUILD_MACHINE_TRIPLET} \
--without-bash-malloc \
--enable-threads \
--enable-readline \
--with-curses
make -j 32
make install
make -j 32 DESTDIR="$LFS" install
export CFLAGS="$CFLAGS_old"
cd "$BASE_DIR"
rm -rf "$LFS_BUILD/bash"
@ -619,7 +668,7 @@ if [ ! -f "$STEPS_DIR/bzip2" ]; then
cd "$LFS_BUILD/bzip2"
#make
make CC="${CC} ${CFLAGS}" AR="${AR}" RANLIB="${RANLIB}" LD="${LD} ${LDFLAGS}" -j 32 PREFIX=$LFS install
make CC="${CC} ${CFLAGS}" AR="${AR}" RANLIB="${RANLIB}" LD="${LD} ${LDFLAGS}" -j 32 PREFIX="$LFS/usr" install
if [ -f "$LFS/bin/bzip2" ]; then
"$LFS_TGT-strip" --strip-unneeded "$LFS/bin/bzip2"
@ -673,14 +722,15 @@ if [ ! -f "$STEPS_DIR/coreutils" ]; then
cd build-$LFS_TGT
"../configure" \
--prefix=$LFS \
--prefix=/usr \
--libexecdir=/usr/lib \
--host=${LFS_TGT} \
--build=${BUILD_MACHINE_TRIPLET} \
--enable-install-program=hostname \
--cache-file=config.cache
make -j 32
make -j 32 install
make -j 32 DESTDIR="$LFS" install
cd "$BASE_DIR"
rm -rf "$LFS_BUILD/coreutils"
@ -713,6 +763,31 @@ if [ ! -f "$STEPS_DIR/diffutils" ]; then
touch "$STEPS_DIR/diffutils"
fi
# build libseccomp
if [ ! -f "$STEPS_DIR/libseccomp" ]; then
if [ ! -d "$LFS_BUILD/libseccomp" ]; then
tar -xf "$BASE_DIR/sources/libseccomp-2.5.5.tar.gz"
mv "libseccomp-2.5.5" "$LFS_BUILD/libseccomp"
fi
cd "$LFS_BUILD/libseccomp"
mkdir -vp build-$LFS_TGT
cd build-$LFS_TGT
"../configure" \
--prefix=/usr \
--host=${LFS_TGT} \
--build=${BUILD_MACHINE_TRIPLET} \
--cache-file=config.cache
make -j 32
make -j 32 DESTDIR="$LFS" install
cd "$BASE_DIR"
rm -rf "$LFS_BUILD/libseccomp"
touch "$STEPS_DIR/libseccomp"
fi
# build file
if [ ! -f "$STEPS_DIR/file" ]; then
if [ ! -d "$LFS_BUILD/file" ]; then
@ -725,13 +800,17 @@ if [ ! -f "$STEPS_DIR/file" ]; then
cd build-$LFS_TGT
"../configure" \
--prefix=$LFS \
--prefix=/usr \
--libdir=/usr/lib \
--datadir=/usr/share/file \
--with-sysroot=$LFS \
--host=${LFS_TGT} \
--build=${BUILD_MACHINE_TRIPLET} \
--libdir=$LFS/lib
--enable-libseccomp \
--cache-file=config.cache
make -j 32
make -j 32 install
make -j 32 DESTDIR="$LFS" install
cd "$BASE_DIR"
rm -rf "$LFS_BUILD/file"
@ -753,13 +832,13 @@ if [ ! -f "$STEPS_DIR/findutils" ]; then
echo "ac_cv_func_fnmatch_gnu=yes" >> config.cache
"../configure" \
--prefix=$LFS \
--prefix=/usr \
--host=${LFS_TGT} \
--build=${BUILD_MACHINE_TRIPLET} \
--cache-file=config.cache
make -j 32
make -j 32 install
make -j 32 DESTDIR="$LFS" install
cd "$BASE_DIR"
rm -rf "$LFS_BUILD/findutils"
@ -778,16 +857,16 @@ if [ ! -f "$STEPS_DIR/gawk" ]; then
cd build-$LFS_TGT
"../configure" \
--prefix=$LFS/usr \
--libexecdir=$LFS/usr/lib \
--sysconfdir=$LFS/etc \
--prefix=/usr \
--libexecdir=/usr/lib \
--sysconfdir=/etc \
--host=${LFS_TGT} \
--build=${BUILD_MACHINE_TRIPLET} \
--without-libsigsegv \
--cache-file=config.cache
make -j 32
make -j 32 install
make -j 32 DESTDIR="$LFS" install
"$STRIP" --strip-unneeded "$LFS/bin/gawk"
@ -808,14 +887,14 @@ if [ ! -f "$STEPS_DIR/grep" ]; then
cd build-$LFS_TGT
"../configure" \
--prefix=$LFS \
--prefix=/usr \
--host=${LFS_TGT} \
--build=${BUILD_MACHINE_TRIPLET} \
--without-included-regex \
--cache-file=config.cache
make -j 32
make -j 32 install
make -j 32 DESTDIR="$LFS" install
"$STRIP" --strip-unneeded "$LFS/bin/grep"
@ -863,13 +942,13 @@ if [ ! -f "$STEPS_DIR/make" ]; then
cd build-$LFS_TGT
"../configure" \
--prefix=$LFS \
--prefix=/usr \
--host=${LFS_TGT} \
--build=${BUILD_MACHINE_TRIPLET} \
--cache-file=config.cache
make -j 32
make -j 32 install
make -j 32 DESTDIR="$LFS" install
cd "$BASE_DIR"
rm -rf "$LFS_BUILD/make"
@ -943,13 +1022,15 @@ if [ ! -f "$STEPS_DIR/sed" ]; then
cd build-$LFS_TGT
"../configure" \
--prefix=$LFS \
--prefix=/usr \
--host=${LFS_TGT} \
--build=${BUILD_MACHINE_TRIPLET} \
--cache-file=config.cache
make -j 32 install
make -j 32
make -j 32 DESTDIR="$LFS" install
"$LFS_TGT-strip" --strip-unneeded "$LFS/bin/sed"
cd "$BASE_DIR"
rm -rf "$LFS_BUILD/sed"
@ -983,15 +1064,18 @@ if [ ! -f "$STEPS_DIR/tar" ]; then
#EOF
"../configure" \
--prefix=$LFS \
--prefix=/usr \
--sbindir=/usr/bin \
--libexecdir=/usr/lib/tar \
--host=${LFS_TGT} \
--build=${BUILD_MACHINE_TRIPLET} \
--enable-backup-scripts \
--cache-file=config.cache
make -j 32
make -j 32 install
make -j 32 DESTDIR="$LFS" install
"$LFS_TGT-strip" --strip-unneeded $LFS/bin/tar
"$LFS_TGT-strip" --strip-unneeded "$LFS/bin/tar"
export LDFLAGS="$LDFLAGS_old"
@ -1037,39 +1121,6 @@ fi
#fi
#exit 0
# build gettext
if [ ! -f "$STEPS_DIR/gettext" ]; then
if [ ! -d "$LFS_BUILD/gettext" ]; then
tar -xf "$BASE_DIR/sources/gettext-0.23.tar.gz"
mv "gettext-0.23" "$LFS_BUILD/gettext"
fi
cd "$LFS_BUILD/gettext"
#EMACS="no" autoreconf -fi
mkdir -vp build-$LFS_TGT
cd build-$LFS_TGT
EMACS="no" "../configure" \
--prefix=$LFS \
--host=${LFS_TGT} \
--build=${BUILD_MACHINE_TRIPLET} \
--disable-shared \
--libdir=$LFS/usr/lib \
--with-sysroot=$SYSROOT \
--enable-curses \
--cache-file=config.cache
make -j 32
make -j 32 install
cd "$BASE_DIR"
rm -rf "$LFS_BUILD/gettext"
touch "$STEPS_DIR/gettext"
fi
# build xz-utils
if [ ! -f "$STEPS_DIR/xz" ]; then
if [ ! -d "$LFS_BUILD/xz" ]; then
@ -1094,11 +1145,48 @@ if [ ! -f "$STEPS_DIR/xz" ]; then
# Remove the libtool archive file because it is harmful for cross compilation
#rm -v $LFS/usr/lib/liblzma.la
"$LFS_TGT-strip" --strip-unneeded "$LFS/bin/xz"
"$LFS_TGT-strip" --strip-unneeded "$LFS/bin/xzdec"
"$LFS_TGT-strip" --strip-unneeded "$LFS/bin/xzcat"
cd "$BASE_DIR"
rm -rf "$LFS_BUILD/xz"
touch "$STEPS_DIR/xz"
fi
# build gettext
if [ ! -f "$STEPS_DIR/gettext" ]; then
if [ ! -d "$LFS_BUILD/gettext" ]; then
tar -xf "$BASE_DIR/sources/gettext-0.23.tar.gz"
mv "gettext-0.23" "$LFS_BUILD/gettext"
fi
cd "$LFS_BUILD/gettext"
#EMACS="no" autoreconf -fi
mkdir -vp build-$LFS_TGT
cd build-$LFS_TGT
EMACS="no" "../configure" \
--prefix=/usr \
--host=${LFS_TGT} \
--build=${BUILD_MACHINE_TRIPLET} \
--disable-shared \
--libdir=/usr/lib \
--with-sysroot=$SYSROOT \
--enable-curses \
--with-xz \
--cache-file=config.cache
make -j 32
make -j 32 DESTDIR="$LFS" install
cd "$BASE_DIR"
rm -rf "$LFS_BUILD/gettext"
touch "$STEPS_DIR/gettext"
fi
# build acl
if [ ! -f "$STEPS_DIR/acl" ]; then
if [ ! -d "$LFS_BUILD/acl" ]; then
@ -1112,25 +1200,136 @@ if [ ! -f "$STEPS_DIR/acl" ]; then
"../configure" \
--prefix=/usr \
--libexecdir=/usr/libexec \
--libexecdir=/usr/lib \
--libdir=/usr/lib \
--with-sysroot=${LFS} \
--host=${LFS_TGT} \
--build=${BUILD_MACHINE_TRIPLET} \
--with-sysroot=$LFS \
--disable-static \
--cache-file=config.cache
make -j 32
make -j 32 DESTDIR=$LFS install
# Remove the libtool archive file because it is harmful for cross compilation
#rm -v $LFS/usr/lib/liblzma.la
cd "$BASE_DIR"
rm -rf "$LFS_BUILD/acl"
touch "$STEPS_DIR/acl"
fi
exit 0
# build pcre2
if [ ! -f "$STEPS_DIR/pcre2" ]; then
if [ ! -d "$LFS_BUILD/pcre2" ]; then
tar -xf "$BASE_DIR/sources/pcre2-10.44.tar.bz2"
mv "pcre2-10.44" "$LFS_BUILD/pcre2"
fi
cd "$LFS_BUILD/pcre2"
mkdir -vp build-$LFS_TGT
cd build-$LFS_TGT
export CFLAGS_old="$CFLAGS"
export CXXFLAGS_old="$CXXFLAGS"
# use fat LTO objects for static libraries
CFLAGS+=" -ffat-lto-objects"
CXXFLAGS+=" -ffat-lto-objects"
"../configure" \
--with-sysroot=${LFS} \
--host=${LFS_TGT} \
--build=${BUILD_MACHINE_TRIPLET} \
--prefix=/usr \
--enable-jit \
--enable-pcre2-16 \
--enable-pcre2-32 \
--enable-pcre2grep-libbz2 \
--enable-pcre2grep-libz \
--enable-pcre2test-libreadline \
--prefix=/usr \
--cache-file=config.cache
make -j 32
make -j 32 DESTDIR=$LFS install
cd "$BASE_DIR"
rm -rf "$LFS_BUILD/pcre2"
touch "$STEPS_DIR/pcre2"
fi
# build libcap-ng (needs swig)
if [ ! -f "$STEPS_DIR/libcap-ng" ]; then
if [ ! -d "$LFS_BUILD/libcap-ng" ]; then
tar -xf "$BASE_DIR/sources/libcap-ng-0.8.5.tar.gz"
mv "libcap-ng-0.8.5" "$LFS_BUILD/libcap-ng"
fi
cd "$LFS_BUILD/libcap-ng"
autoreconf -fiv
mkdir -vp build-$LFS_TGT
cd build-$LFS_TGT
# --enable-zos-remote requires libldap
"../configure" \
--with-sysroot=${LFS} \
--host=${LFS_TGT} \
--build=${BUILD_MACHINE_TRIPLET} \
--prefix="/usr" \
--without-python \
--without-python3 \
--enable-static=no \
--cache-file=config.cache
make -j 32
make -j 32 DESTDIR=$LFS install
cd "$BASE_DIR"
rm -rf "$LFS_BUILD/libcap-ng"
touch "$STEPS_DIR/libcap-ng"
fi
exit 0
# build audit
if [ ! -f "$STEPS_DIR/audit-userspace" ]; then
if [ ! -d "$LFS_BUILD/audit-userspace" ]; then
tar -xf "$BASE_DIR/sources/audit-userspace-4.0.2.tar.gz"
mv "audit-userspace-4.0.2" "$LFS_BUILD/audit-userspace"
fi
cd "$LFS_BUILD/audit-userspace"
autoreconf -fiv
mkdir -vp build-$LFS_TGT
cd build-$LFS_TGT
# --enable-zos-remote requires libldap
"../configure" \
--with-sysroot=${LFS} \
--host=${LFS_TGT} \
--build=${BUILD_MACHINE_TRIPLET} \
--enable-gssapi-krb5=no \
--enable-systemd=no \
--disable-zos-remote \
--libexecdir=/usr/lib/audit \
--prefix=/usr \
--runstatedir=/run \
--sbindir=/usr/bin \
--sysconfdir=/etc \
--with-apparmor=yes \
--with-io_uring=yes \
--with-libcap-ng=yes \
--with-python3=no \
--disable-static \
--cache-file=config.cache
make -j 32
make -j 32 DESTDIR=$LFS install
cd "$BASE_DIR"
rm -rf "$LFS_BUILD/audit-userspace"
touch "$STEPS_DIR/audit-userspace"
fi
# Postpone texinfo
exit 0