BuildSystem: Install meson as part of the toolchain

Debian based distros have meson 0.6x in their repositories. These cause
some obscure error messages when building meson based ports.
This commit is contained in:
Bananymous 2026-01-10 19:12:13 +02:00
parent 78cd054d59
commit 7a49a0d986
1 changed files with 60 additions and 16 deletions

View File

@ -17,6 +17,10 @@ CMAKE_VERSION="cmake-3.26.6-linux-x86_64"
CMAKE_TAR="$CMAKE_VERSION.tar.gz" CMAKE_TAR="$CMAKE_VERSION.tar.gz"
CMAKE_URL="https://cmake.org/files/v3.26/$CMAKE_TAR" CMAKE_URL="https://cmake.org/files/v3.26/$CMAKE_TAR"
MESON_VERSION="meson-1.10.0"
MESON_TAR="$MESON_VERSION.tar.gz"
MESON_URL="https://github.com/mesonbuild/meson/releases/download/1.10.0/$MESON_TAR"
if [[ -z $BANAN_SYSROOT ]]; then if [[ -z $BANAN_SYSROOT ]]; then
echo "You must set the BANAN_SYSROOT environment variable" >&2 echo "You must set the BANAN_SYSROOT environment variable" >&2
exit 1 exit 1
@ -68,14 +72,14 @@ enter_clean_build () {
} }
build_binutils () { build_binutils () {
echo "Building ${BINUTILS_VERSION}"
cd $BANAN_BUILD_DIR/toolchain cd $BANAN_BUILD_DIR/toolchain
if [ ! -d $BINUTILS_VERSION ]; then if [ ! -d $BINUTILS_VERSION ]; then
if [ ! -f $BINUTILS_TAR ]; then if [ ! -f $BINUTILS_TAR ]; then
echo "Downloading ${BINUTILS_TAR}"
wget $BINUTILS_URL wget $BINUTILS_URL
fi fi
echo "Unpacking ${BINUTILS_TAR}"
tar xf $BINUTILS_TAR tar xf $BINUTILS_TAR
patch -ruN -p1 -d "$BINUTILS_VERSION" < "$BANAN_TOOLCHAIN_DIR/$BINUTILS_VERSION.patch" patch -ruN -p1 -d "$BINUTILS_VERSION" < "$BANAN_TOOLCHAIN_DIR/$BINUTILS_VERSION.patch"
fi fi
@ -83,6 +87,8 @@ build_binutils () {
cd $BANAN_BUILD_DIR/toolchain/$BINUTILS_VERSION cd $BANAN_BUILD_DIR/toolchain/$BINUTILS_VERSION
enter_clean_build enter_clean_build
echo "Building ${BINUTILS_VERSION}"
../configure \ ../configure \
--target="$BANAN_TOOLCHAIN_TRIPLE" \ --target="$BANAN_TOOLCHAIN_TRIPLE" \
--prefix="$BANAN_TOOLCHAIN_PREFIX" \ --prefix="$BANAN_TOOLCHAIN_PREFIX" \
@ -98,14 +104,14 @@ build_binutils () {
} }
build_gcc () { build_gcc () {
echo "Building ${GCC_VERSION}"
cd $BANAN_BUILD_DIR/toolchain cd $BANAN_BUILD_DIR/toolchain
if [ ! -d $GCC_VERSION ]; then if [ ! -d $GCC_VERSION ]; then
if [ ! -f $GCC_TAR ]; then if [ ! -f $GCC_TAR ]; then
echo "Downloading ${GCC_TAR}"
wget $GCC_URL wget $GCC_URL
fi fi
echo "Unpacking ${GCC_TAR}"
tar xf $GCC_TAR tar xf $GCC_TAR
patch -ruN -p1 -d "$GCC_VERSION" < "$BANAN_TOOLCHAIN_DIR/$GCC_VERSION.patch" patch -ruN -p1 -d "$GCC_VERSION" < "$BANAN_TOOLCHAIN_DIR/$GCC_VERSION.patch"
fi fi
@ -113,6 +119,8 @@ build_gcc () {
cd $BANAN_BUILD_DIR/toolchain/$GCC_VERSION cd $BANAN_BUILD_DIR/toolchain/$GCC_VERSION
enter_clean_build enter_clean_build
echo "Building ${GCC_VERSION}"
../configure \ ../configure \
--target="$BANAN_TOOLCHAIN_TRIPLE" \ --target="$BANAN_TOOLCHAIN_TRIPLE" \
--prefix="$BANAN_TOOLCHAIN_PREFIX" \ --prefix="$BANAN_TOOLCHAIN_PREFIX" \
@ -147,21 +155,22 @@ build_libstdcpp () {
} }
build_grub () { build_grub () {
echo "Building ${GRUB_VERSION}"
cd $BANAN_BUILD_DIR/toolchain cd $BANAN_BUILD_DIR/toolchain
if [ ! -d $GRUB_VERSION ]; then
if [ ! -f $GRUB_TAR ]; then if [ ! -f $GRUB_TAR ]; then
echo "Downloading ${GRUB_TAR}"
wget $GRUB_URL wget $GRUB_URL
fi fi
echo "Unpacking ${GRUB_TAR}"
if [ ! -d $GRUB_VERSION ]; then
tar xvf $GRUB_TAR tar xvf $GRUB_TAR
fi fi
cd $GRUB_VERSION cd $GRUB_VERSION
enter_clean_build enter_clean_build
echo "Building ${GRUB_VERSION}"
../configure \ ../configure \
--target="$BANAN_ARCH" \ --target="$BANAN_ARCH" \
--prefix="$BANAN_TOOLCHAIN_PREFIX" \ --prefix="$BANAN_TOOLCHAIN_PREFIX" \
@ -174,20 +183,21 @@ build_grub () {
} }
build_cmake() { build_cmake() {
echo "Downloading ${CMAKE_VERSION}"
cd $BANAN_BUILD_DIR/toolchain cd $BANAN_BUILD_DIR/toolchain
if [ ! -d $CMAKE_VERSION ]; then
if [ ! -f $CMAKE_TAR ]; then if [ ! -f $CMAKE_TAR ]; then
echo "Downloading ${CMAKE_TAR}"
wget $CMAKE_URL wget $CMAKE_URL
fi fi
echo "Unpacking ${CMAKE_TAR}"
if [ ! -d $CMAKE_VERSION ]; then
tar xvf $CMAKE_TAR tar xvf $CMAKE_TAR
fi fi
cd $CMAKE_VERSION cd $CMAKE_VERSION
echo "Building ${CMAKE_VERSION}"
mkdir -p $BANAN_TOOLCHAIN_PREFIX/bin mkdir -p $BANAN_TOOLCHAIN_PREFIX/bin
mkdir -p $BANAN_TOOLCHAIN_PREFIX/share mkdir -p $BANAN_TOOLCHAIN_PREFIX/share
@ -197,6 +207,27 @@ build_cmake() {
cp $BANAN_TOOLCHAIN_DIR/cmake-platform/* $BANAN_TOOLCHAIN_PREFIX/share/cmake-3.26/Modules/Platform/ cp $BANAN_TOOLCHAIN_DIR/cmake-platform/* $BANAN_TOOLCHAIN_PREFIX/share/cmake-3.26/Modules/Platform/
} }
build_meson() {
cd "$BANAN_BUILD_DIR/toolchain"
if [ ! -d $MESON_VERSION ]; then
if [ ! -f $MESON_TAR ]; then
echo "Downloading ${MESON_TAR}"
wget $MESON_URL
fi
echo "Unpacking ${MESON_TAR}"
tar xvf $MESON_TAR
fi
cd $MESON_VERSION
echo "Building ${MESON_VERSION}"
mkdir -p "$BANAN_TOOLCHAIN_PREFIX/bin"
./packaging/create_zipapp.py --outfile "$BANAN_TOOLCHAIN_PREFIX/bin/meson" --interpreter '/usr/bin/env python3'
}
BUILD_BINUTILS=1 BUILD_BINUTILS=1
if [[ -f $BANAN_TOOLCHAIN_PREFIX/bin/$BANAN_TOOLCHAIN_TRIPLE-ld ]]; then if [[ -f $BANAN_TOOLCHAIN_PREFIX/bin/$BANAN_TOOLCHAIN_TRIPLE-ld ]]; then
echo "You already seem to have a binutils installed." echo "You already seem to have a binutils installed."
@ -241,6 +272,15 @@ if [[ -f $BANAN_TOOLCHAIN_PREFIX/bin/cmake ]]; then
fi fi
fi fi
BUILD_MESON=1
if [[ -f $BANAN_TOOLCHAIN_PREFIX/bin/meson ]]; then
echo "You already seem to have a meson installed."
read -e -p "Do you want to rebuild it [y/N]? " choice
if ! [[ "$choice" == [Yy]* ]]; then
BUILD_MESON=0
fi
fi
# delete everything but toolchain # delete everything but toolchain
mkdir -p $BANAN_BUILD_DIR mkdir -p $BANAN_BUILD_DIR
find $BANAN_BUILD_DIR -mindepth 1 -maxdepth 1 ! -name toolchain -exec rm -r {} + find $BANAN_BUILD_DIR -mindepth 1 -maxdepth 1 ! -name toolchain -exec rm -r {} +
@ -268,6 +308,10 @@ if (($BUILD_CMAKE)); then
build_cmake build_cmake
fi fi
if (($BUILD_MESON)); then
build_meson
fi
if (($BUILD_LIBSTDCPP)); then if (($BUILD_LIBSTDCPP)); then
# delete sysroot and install libc # delete sysroot and install libc
rm -r $BANAN_SYSROOT rm -r $BANAN_SYSROOT