1
0
mirror of https://github.com/systemd/systemd.git synced 2025-03-08 08:58:27 +03:00

Merge pull request #24175 from medhefgo/meson-feature

meson: Use feature options
This commit is contained in:
Zbigniew Jędrzejewski-Szmek 2023-08-24 11:19:55 +02:00 committed by GitHub
commit c9c4e599fc
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
10 changed files with 437 additions and 741 deletions

View File

@ -11,7 +11,7 @@ ARGS=(
"--optimization=0"
"--optimization=s"
"--optimization=3 -Db_lto=true -Ddns-over-tls=false"
"--optimization=3 -Db_lto=false -Dtpm2=false -Dlibfido2=false -Dp11kit=false"
"--optimization=3 -Db_lto=false -Dtpm2=disabled -Dlibfido2=disabled -Dp11kit=disabled"
"--optimization=3 -Ddns-over-tls=openssl"
"--optimization=3 -Dfexecve=true -Dstandalone-binaries=true -Dstatic-libsystemd=true -Dstatic-libudev=true"
"-Db_ndebug=true"

View File

@ -60,7 +60,7 @@ for phase in "${PHASES[@]}"; do
export CXX=clang++
if [[ "$phase" == RUN_CLANG ]]; then
# The docs build is slow and is not affected by compiler/flags, so do it just once
MESON_ARGS+=(-Dman=true)
MESON_ARGS+=(-Dman=enabled)
else
MESON_ARGS+=(-Dmode=release --optimization=2)
fi
@ -87,7 +87,7 @@ for phase in "${PHASES[@]}"; do
MESON_ARGS+=(-Db_lundef=false -Dfuzz-tests=true)
if [[ "$phase" == "RUN_CLANG_ASAN_UBSAN_NO_DEPS" ]]; then
MESON_ARGS+=(-Dskip-deps=true)
MESON_ARGS+=(--auto-features=disabled)
fi
fi
MESON_ARGS+=(--fatal-meson-warnings)

View File

@ -6,9 +6,9 @@ subdir('rules')
want_man = get_option('man')
want_html = get_option('html')
xsltproc = find_program('xsltproc',
required : want_man == 'true' or want_html == 'true')
want_man = want_man != 'false' and xsltproc.found()
want_html = want_html != 'false' and xsltproc.found()
required : want_man.enabled() or want_html.enabled())
want_man = want_man.allowed() and xsltproc.found()
want_html = want_html.allowed() and xsltproc.found()
xsltproc_flags = [
'--nonet',

File diff suppressed because it is too large Load Diff

View File

@ -102,9 +102,9 @@ option('environment-d', type : 'boolean',
description : 'support for environment.d')
option('binfmt', type : 'boolean',
description : 'support for custom binary formats')
option('repart', type : 'combo', choices : ['auto', 'true', 'false'],
option('repart', type : 'feature', deprecated : { 'true' : 'enabled', 'false' : 'disabled' },
description : 'install the systemd-repart tool')
option('sysupdate', type : 'combo', choices : ['auto', 'true', 'false'],
option('sysupdate', type : 'feature', deprecated : { 'true' : 'enabled', 'false' : 'disabled' },
description : 'install the systemd-sysupdate tool')
option('coredump', type : 'boolean',
description : 'install the coredump handler')
@ -126,7 +126,7 @@ option('sysext', type : 'boolean',
description : 'install the systemd-sysext stack')
option('userdb', type : 'boolean',
description : 'install the systemd-userdbd stack')
option('homed', type : 'combo', choices : ['auto', 'true', 'false'],
option('homed', type : 'feature', deprecated : { 'true' : 'enabled', 'false' : 'disabled' },
description : 'install the systemd-homed stack')
option('networkd', type : 'boolean',
description : 'install the systemd-networkd stack')
@ -134,15 +134,15 @@ option('timedated', type : 'boolean',
description : 'install the systemd-timedated daemon')
option('timesyncd', type : 'boolean',
description : 'install the systemd-timesyncd daemon')
option('remote', type : 'combo', choices : ['auto', 'true', 'false'],
option('remote', type : 'feature', deprecated : { 'true' : 'enabled', 'false' : 'disabled' },
description : 'support for "journal over the network"')
option('create-log-dirs', type : 'boolean',
description : 'create /var/log/journal{,/remote}')
option('nss-myhostname', type : 'boolean',
description : 'install nss-myhostname module')
option('nss-mymachines', type : 'combo', choices : ['auto', 'true', 'false'],
option('nss-mymachines', type : 'feature', deprecated : { 'true' : 'enabled', 'false' : 'disabled' },
description : 'install nss-mymachines module')
option('nss-resolve', type : 'combo', choices : ['auto', 'true', 'false'],
option('nss-resolve', type : 'feature', deprecated : { 'true' : 'enabled', 'false' : 'disabled' },
description : 'install nss-resolve module')
option('nss-systemd', type : 'boolean',
description : 'install nss-systemd module')
@ -160,7 +160,7 @@ option('sysusers', type : 'boolean',
description : 'support for the sysusers configuration')
option('tmpfiles', type : 'boolean',
description : 'support for tmpfiles.d')
option('importd', type : 'combo', choices : ['auto', 'true', 'false'],
option('importd', type : 'feature', deprecated : { 'true' : 'enabled', 'false' : 'disabled' },
description : 'install the systemd-importd daemon')
option('hwdb', type : 'boolean',
description : 'support for the hardware database')
@ -168,11 +168,11 @@ option('rfkill', type : 'boolean',
description : 'support for the rfkill tools')
option('xdg-autostart', type : 'boolean',
description : 'install the xdg-autostart-generator and unit')
option('man', type : 'combo', choices : ['auto', 'true', 'false'],
value : 'false',
option('man', type : 'feature', deprecated : { 'true' : 'enabled', 'false' : 'disabled' },
value : 'disabled',
description : 'build and install man pages')
option('html', type : 'combo', choices : ['auto', 'true', 'false'],
value : 'false',
option('html', type : 'feature', deprecated : { 'true' : 'enabled', 'false' : 'disabled' },
value : 'disabled',
description : 'build and install html pages')
option('translations', type : 'boolean', value : true,
description : 'build and install translations')
@ -350,11 +350,11 @@ option('www-target', type : 'string',
description : 'the address and dir to upload docs too',
value : 'www.freedesktop.org:/srv/www.freedesktop.org/www/software/systemd')
option('seccomp', type : 'combo', choices : ['auto', 'true', 'false'],
option('seccomp', type : 'feature', deprecated : { 'true' : 'enabled', 'false' : 'disabled' },
description : 'SECCOMP support')
option('selinux', type : 'combo', choices : ['auto', 'true', 'false'],
option('selinux', type : 'feature', deprecated : { 'true' : 'enabled', 'false' : 'disabled' },
description : 'SELinux support')
option('apparmor', type : 'combo', choices : ['auto', 'true', 'false'],
option('apparmor', type : 'feature', deprecated : { 'true' : 'enabled', 'false' : 'disabled' },
description : 'AppArmor support')
option('smack', type : 'boolean',
description : 'SMACK support')
@ -362,85 +362,85 @@ option('smack-run-label', type : 'string',
description : 'run systemd --system itself with a specific SMACK label')
option('smack-default-process-label', type : 'string',
description : 'default SMACK label for executed processes')
option('polkit', type : 'combo', choices : ['auto', 'true', 'false'],
option('polkit', type : 'feature', deprecated : { 'true' : 'enabled', 'false' : 'disabled' },
description : 'polkit support')
option('ima', type : 'boolean',
description : 'IMA support')
option('acl', type : 'combo', choices : ['auto', 'true', 'false'],
option('acl', type : 'feature', deprecated : { 'true' : 'enabled', 'false' : 'disabled' },
description : 'libacl support')
option('audit', type : 'combo', choices : ['auto', 'true', 'false'],
option('audit', type : 'feature', deprecated : { 'true' : 'enabled', 'false' : 'disabled' },
description : 'libaudit support')
option('blkid', type : 'combo', choices : ['auto', 'true', 'false'],
option('blkid', type : 'feature', deprecated : { 'true' : 'enabled', 'false' : 'disabled' },
description : 'libblkid support')
option('fdisk', type : 'combo', choices : ['auto', 'true', 'false'],
option('fdisk', type : 'feature', deprecated : { 'true' : 'enabled', 'false' : 'disabled' },
description : 'libfdisk support')
option('kmod', type : 'combo', choices : ['auto', 'true', 'false'],
option('kmod', type : 'feature', deprecated : { 'true' : 'enabled', 'false' : 'disabled' },
description : 'support for loadable modules')
option('xenctrl', type : 'combo', choices : ['auto', 'true', 'false'],
option('xenctrl', type : 'feature', deprecated : { 'true' : 'enabled', 'false' : 'disabled' },
description : 'support for Xen kexec')
option('pam', type : 'combo', choices : ['auto', 'true', 'false'],
option('pam', type : 'feature', deprecated : { 'true' : 'enabled', 'false' : 'disabled' },
description : 'PAM support')
option('passwdqc', type : 'combo', choices : ['auto', 'true', 'false'],
option('passwdqc', type : 'feature', deprecated : { 'true' : 'enabled', 'false' : 'disabled' },
description : 'libpasswdqc support')
option('pwquality', type : 'combo', choices : ['auto', 'true', 'false'],
option('pwquality', type : 'feature', deprecated : { 'true' : 'enabled', 'false' : 'disabled' },
description : 'libpwquality support')
option('microhttpd', type : 'combo', choices : ['auto', 'true', 'false'],
option('microhttpd', type : 'feature', deprecated : { 'true' : 'enabled', 'false' : 'disabled' },
description : 'libµhttpd support')
option('libcryptsetup', type : 'combo', choices : ['auto', 'true', 'false'],
option('libcryptsetup', type : 'feature', deprecated : { 'true' : 'enabled', 'false' : 'disabled' },
description : 'libcryptsetup support')
option('libcryptsetup-plugins', type : 'combo', choices : ['auto', 'true', 'false'],
option('libcryptsetup-plugins', type : 'feature', deprecated : { 'true' : 'enabled', 'false' : 'disabled' },
description : 'libcryptsetup LUKS2 external token handlers support (plugins)')
option('libcurl', type : 'combo', choices : ['auto', 'true', 'false'],
option('libcurl', type : 'feature', deprecated : { 'true' : 'enabled', 'false' : 'disabled' },
description : 'libcurl support')
option('idn', type : 'boolean',
description : 'use IDN when printing hostnames')
option('libidn2', type : 'combo', choices : ['auto', 'true', 'false'],
option('libidn2', type : 'feature', deprecated : { 'true' : 'enabled', 'false' : 'disabled' },
description : 'libidn2 support')
option('libidn', type : 'combo', choices : ['auto', 'true', 'false'],
option('libidn', type : 'feature', deprecated : { 'true' : 'enabled', 'false' : 'disabled' },
description : 'libidn support')
option('libiptc', type : 'combo', choices : ['auto', 'true', 'false'],
option('libiptc', type : 'feature', deprecated : { 'true' : 'enabled', 'false' : 'disabled' },
description : 'libiptc support')
option('qrencode', type : 'combo', choices : ['auto', 'true', 'false'],
option('qrencode', type : 'feature', deprecated : { 'true' : 'enabled', 'false' : 'disabled' },
description : 'libqrencode support')
option('gcrypt', type : 'combo', choices : ['auto', 'true', 'false'],
option('gcrypt', type : 'feature', deprecated : { 'true' : 'enabled', 'false' : 'disabled' },
description : 'gcrypt support')
option('gnutls', type : 'combo', choices : ['auto', 'true', 'false'],
option('gnutls', type : 'feature', deprecated : { 'true' : 'enabled', 'false' : 'disabled' },
description : 'gnutls support')
option('openssl', type : 'combo', choices : ['auto', 'true', 'false'],
option('openssl', type : 'feature', deprecated : { 'true' : 'enabled', 'false' : 'disabled' },
description : 'openssl support')
option('cryptolib', type : 'combo', choices : ['auto', 'openssl', 'gcrypt'],
description : 'whether to use openssl or gcrypt where both are supported')
option('p11kit', type : 'combo', choices : ['auto', 'true', 'false'],
option('p11kit', type : 'feature', deprecated : { 'true' : 'enabled', 'false' : 'disabled' },
description : 'p11kit support')
option('libfido2', type : 'combo', choices : ['auto', 'true', 'false'],
option('libfido2', type : 'feature', deprecated : { 'true' : 'enabled', 'false' : 'disabled' },
description : 'FIDO2 support')
option('tpm2', type : 'combo', choices : ['auto', 'true', 'false'],
option('tpm2', type : 'feature', deprecated : { 'true' : 'enabled', 'false' : 'disabled' },
description : 'TPM2 support')
option('elfutils', type : 'combo', choices : ['auto', 'true', 'false'],
option('elfutils', type : 'feature', deprecated : { 'true' : 'enabled', 'false' : 'disabled' },
description : 'elfutils support')
option('zlib', type : 'combo', choices : ['auto', 'true', 'false'],
option('zlib', type : 'feature', deprecated : { 'true' : 'enabled', 'false' : 'disabled' },
description : 'zlib compression support')
option('bzip2', type : 'combo', choices : ['auto', 'true', 'false'],
option('bzip2', type : 'feature', deprecated : { 'true' : 'enabled', 'false' : 'disabled' },
description : 'bzip2 compression support')
option('xz', type : 'combo', choices : ['auto', 'true', 'false'],
option('xz', type : 'feature', deprecated : { 'true' : 'enabled', 'false' : 'disabled' },
description : 'xz compression support')
option('lz4', type : 'combo', choices : ['auto', 'true', 'false'],
option('lz4', type : 'feature', deprecated : { 'true' : 'enabled', 'false' : 'disabled' },
description : 'lz4 compression support')
option('zstd', type : 'combo', choices : ['auto', 'true', 'false'],
option('zstd', type : 'feature', deprecated : { 'true' : 'enabled', 'false' : 'disabled' },
description : 'zstd compression support')
option('default-compression', type : 'combo', choices : ['auto', 'zstd', 'lz4', 'xz'], value: 'auto',
description : 'default compression algorithm')
option('xkbcommon', type : 'combo', choices : ['auto', 'true', 'false'],
option('xkbcommon', type : 'feature', deprecated : { 'true' : 'enabled', 'false' : 'disabled' },
description : 'xkbcommon keymap support')
option('pcre2', type : 'combo', choices : ['auto', 'true', 'false'],
option('pcre2', type : 'feature', deprecated : { 'true' : 'enabled', 'false' : 'disabled' },
description : 'regexp matching support using pcre2')
option('glib', type : 'combo', choices : ['auto', 'true', 'false'],
option('glib', type : 'feature', deprecated : { 'true' : 'enabled', 'false' : 'disabled' },
description : 'libglib support (for tests only)')
option('dbus', type : 'combo', choices : ['auto', 'true', 'false'],
option('dbus', type : 'feature', deprecated : { 'true' : 'enabled', 'false' : 'disabled' },
description : 'libdbus support (for tests only)')
option('bootloader', type : 'combo', choices : ['auto', 'true', 'false'],
option('bootloader', type : 'feature', deprecated : { 'true' : 'enabled', 'false' : 'disabled' },
description : 'sd-boot/stub and userspace tools')
option('sbat-distro', type : 'string', value : 'auto',
description : 'SBAT distribution ID, e.g. fedora, or auto for autodetection')
@ -476,7 +476,7 @@ option('fuzz-tests', type : 'boolean', value : false,
description : 'run the fuzzer regression tests by default (with sanitizers)')
option('install-tests', type : 'boolean', value : false,
description : 'install test executables')
option('log-message-verification', type : 'combo', choices : ['auto', 'true', 'false'],
option('log-message-verification', type : 'feature', deprecated : { 'true' : 'enabled', 'false' : 'disabled' },
description : 'do fake printf() calls to verify format strings')
option('ok-color', type : 'combo',
@ -497,15 +497,12 @@ option('llvm-fuzz', type : 'boolean', value : false,
description : 'build against LLVM libFuzzer')
option('kernel-install', type: 'boolean', value: true,
description : 'install kernel-install and associated files')
option('ukify', type : 'combo', choices : ['auto', 'true', 'false'],
option('ukify', type : 'feature', deprecated : { 'true' : 'enabled', 'false' : 'disabled' },
description : 'install ukify')
option('analyze', type: 'boolean', value: true,
description : 'install systemd-analyze')
option('bpf-compiler', type : 'combo', choices : ['clang', 'gcc'],
description: 'compiler used to build BPF programs')
option('bpf-framework', type : 'combo', choices : ['auto', 'true', 'false'],
option('bpf-framework', type : 'feature', deprecated : { 'true' : 'enabled', 'false' : 'disabled' },
description: 'build BPF programs from source code in restricted C')
option('skip-deps', type : 'boolean', value : false,
description : 'skip optional dependencies')

View File

@ -51,9 +51,9 @@ if [ ! -f "$BUILDDIR"/build.ninja ]; then
sysvinit_path=$(realpath /etc/init.d)
if [ "$ID" = "centos" ] && [ "$VERSION" = "8" ]; then
UKIFY=false
UKIFY="disabled"
else
UKIFY=true
UKIFY="enabled"
fi
# On Debian 'loadkeys us' fails
@ -65,7 +65,7 @@ if [ ! -f "$BUILDDIR"/build.ninja ]; then
CONFIGURE_OPTS=(
-D sysvinit-path="$sysvinit_path"
-D man=false
-D man=disabled
-D translations=false
-D version-tag="${VERSION_TAG}"
-D mode=developer
@ -83,8 +83,8 @@ if [ ! -f "$BUILDDIR"/build.ninja ]; then
-D tpm=true
-D environment-d=true
-D binfmt=true
-D repart=true
-D sysupdate=true
-D repart=enabled
-D sysupdate=enabled
-D coredump=true
-D pstore=true
-D oomd=true
@ -95,14 +95,14 @@ if [ ! -f "$BUILDDIR"/build.ninja ]; then
-D portabled=true
-D sysext=true
-D userdb=true
-D homed=true
-D homed=enabled
-D networkd=true
-D timedated=true
-D timesyncd=true
-D remote=true
-D remote=enabled
-D nss-myhostname=true
-D nss-mymachines=true
-D nss-resolve=true
-D nss-mymachines=enabled
-D nss-resolve=enabled
-D nss-systemd=true
-D firstboot=true
-D randomseed=true
@ -111,44 +111,44 @@ if [ ! -f "$BUILDDIR"/build.ninja ]; then
-D quotacheck=true
-D sysusers=true
-D tmpfiles=true
-D importd=true
-D importd=enabled
-D hwdb=true
-D rfkill=true
-D xdg-autostart=true
-D translations=true
-D polkit=true
-D acl=true
-D audit=true
-D blkid=true
-D fdisk=true
-D kmod=true
-D pam=true
-D pwquality=true
-D microhttpd=true
-D libcryptsetup=true
-D libcurl=true
-D polkit=enabled
-D acl=enabled
-D audit=enabled
-D blkid=enabled
-D fdisk=enabled
-D kmod=enabled
-D pam=enabled
-D pwquality=enabled
-D microhttpd=enabled
-D libcryptsetup=enabled
-D libcurl=enabled
-D idn=true
-D libidn2=true
-D qrencode=true
-D gcrypt=true
-D gnutls=true
-D openssl=true
-D libidn2=enabled
-D qrencode=enabled
-D gcrypt=enabled
-D gnutls=enabled
-D openssl=enabled
-D cryptolib=openssl
-D p11kit=true
-D libfido2=true
-D tpm2=true
-D elfutils=true
-D zstd=true
-D xkbcommon=true
-D pcre2=true
-D glib=true
-D dbus=true
-D bootloader=true
-D p11kit=enabled
-D libfido2=enabled
-D tpm2=enabled
-D elfutils=enabled
-D zstd=enabled
-D xkbcommon=enabled
-D pcre2=enabled
-D glib=enabled
-D dbus=enabled
-D bootloader=enabled
-D kernel-install=true
-D analyze=true
-D bpf-framework=true
-D bpf-framework=enabled
-D ukify="$UKIFY"
-D seccomp=true
-D seccomp=enabled
-D selinux=auto
-D apparmor=auto
-D smack=true

View File

@ -3,49 +3,48 @@
efi_config_h_dir = meson.current_build_dir()
efi_addon = ''
if efi_arch != ''
libefitest = static_library(
'efitest',
files(
'bcd.c',
'efi-string.c',
),
build_by_default : false,
include_directories : [
basic_includes,
include_directories('.'),
],
dependencies : userspace)
libefitest = static_library(
'efitest',
files(
'bcd.c',
'efi-string.c',
),
build_by_default : false,
include_directories : [
basic_includes,
include_directories('.'),
],
dependencies : userspace)
efitest_base = {
'link_with' : [
libefitest,
libshared,
],
}
efi_test_template = test_template + efitest_base
efi_fuzz_template = fuzz_template + efitest_base
efitest_base = {
'link_with' : [
libefitest,
libshared,
],
}
efi_test_template = test_template + efitest_base
efi_fuzz_template = fuzz_template + efitest_base
executables += [
efi_test_template + {
'sources' : files('test-bcd.c'),
'dependencies' : libzstd,
'conditions' : ['HAVE_ZSTD'],
},
efi_test_template + {
'sources' : files('test-efi-string.c'),
},
efi_fuzz_template + {
'sources' : files('fuzz-bcd.c'),
},
efi_fuzz_template + {
'sources' : files('fuzz-efi-string.c'),
},
efi_fuzz_template + {
'sources' : files('fuzz-efi-printf.c'),
},
]
endif
executables += [
efi_test_template + {
'sources' : files('test-bcd.c'),
'dependencies' : libzstd,
'conditions' : ['ENABLE_BOOTLOADER', 'HAVE_ZSTD'],
},
efi_test_template + {
'sources' : files('test-efi-string.c'),
'conditions' : ['ENABLE_BOOTLOADER'],
},
efi_fuzz_template + {
'sources' : files('fuzz-bcd.c'),
},
efi_fuzz_template + {
'sources' : files('fuzz-efi-string.c'),
},
efi_fuzz_template + {
'sources' : files('fuzz-efi-printf.c'),
},
]
if conf.get('ENABLE_BOOTLOADER') != 1
subdir_done()

View File

@ -344,13 +344,11 @@ shared_fdisk_sources = files(
'fdisk-util.c',
)
if get_option('fdisk') != 'false'
libshared_fdisk = static_library(
'shared-fdisk',
shared_fdisk_sources,
include_directories : includes,
dependencies : [libfdisk,
userspace],
c_args : ['-fvisibility=default'],
build_by_default : false)
endif
libshared_fdisk = static_library(
'shared-fdisk',
shared_fdisk_sources,
include_directories : includes,
dependencies : [libfdisk,
userspace],
c_args : ['-fvisibility=default'],
build_by_default : false)

View File

@ -36,6 +36,15 @@ fuzz_regression_tests += { 'fuzz-unit-file' : dict }
############################################################
# TODO: Use native string formatting with meson >= 1.3.0
if get_option('auto_features').enabled()
sanitize_auto_features = 'enabled'
elif get_option('auto_features').disabled()
sanitize_auto_features = 'disabled'
else
sanitize_auto_features = 'auto'
endif
sanitize_address_undefined = custom_target(
'sanitize-address-undefined-fuzzers',
output : 'sanitize-address-undefined-fuzzers',
@ -43,11 +52,11 @@ sanitize_address_undefined = custom_target(
project_source_root,
'@OUTPUT@',
'fuzzers',
'-Dfuzz-tests=true -Db_lundef=false -Db_sanitize=address,undefined --optimization=@0@ @1@ -Dc_args=@2@ -Dcpp_args=@2@ -Dskip-deps=@3@'.format(
'-Dfuzz-tests=true -Db_lundef=false -Db_sanitize=address,undefined --optimization=@0@ @1@ -Dc_args=@2@ -Dcpp_args=@2@ --auto-features=@3@'.format(
get_option('optimization'),
get_option('werror') ? '--werror' : '',
'-DFUZZING_BUILD_MODE_UNSAFE_FOR_PRODUCTION',
get_option('skip-deps')
sanitize_auto_features
),
' '.join(cc.cmd_array()),
cxx_cmd])

View File

@ -27,10 +27,12 @@ build="$WORK/build"
rm -rf "$build"
mkdir -p "$build"
meson_args=("-Db_lundef=false")
if [ -z "$FUZZING_ENGINE" ]; then
fuzzflag="llvm-fuzz=true"
meson_args+=("-Dllvm-fuzz=true")
else
fuzzflag="oss-fuzz=true"
meson_args+=("-Doss-fuzz=true" "--auto-features=disabled")
apt-get update
apt-get install -y gperf m4 gettext python3-pip \
@ -67,7 +69,7 @@ else
fi
fi
if ! meson setup "$build" "-D$fuzzflag" -Db_lundef=false; then
if ! meson setup "$build" "${meson_args[@]}"; then
cat "$build/meson-logs/meson-log.txt"
exit 1
fi