libvirt/ci/build.sh
Erik Skultety 5ee2851481 ci: build.sh: Add a wrapper function over meson's setup
The reason for this wrapper is that all job functions introduced in
future patches will refer to this one instead of open-coding the same
'meson setup' invocation N times. It also prevents 'setup' to be called
multiple times as some future job functions might actually do just that
in a transitive manner.

Signed-off-by: Erik Skultety <eskultet@redhat.com>
Reviewed-by: Daniel P. Berrangé <berrange@redhat.com>
2023-09-12 11:36:03 +02:00

40 lines
1.1 KiB
Bash

#!/bin/sh
cd "$CI_CONT_SRCDIR"
export CCACHE_BASEDIR="$(pwd)"
export CCACHE_DIR="$CCACHE_BASEDIR/ccache"
export CCACHE_MAXSIZE="500M"
export PATH="$CCACHE_WRAPPERSDIR:$PATH"
# Enable these conditionally since their best use case is during
# non-interactive workloads without having a Shell
if ! [ -t 1 ]; then
export VIR_TEST_VERBOSE="1"
export VIR_TEST_DEBUG="1"
fi
GIT_ROOT="$(git rev-parse --show-toplevel)"
# $MESON_OPTS is an env that can optionally be set in the container,
# populated at build time from the Dockerfile. A typical use case would
# be to pass options to trigger cross-compilation
#
# $MESON_ARGS correspond to meson's setup args, i.e. configure args. It's
# populated from a GitLab's job configuration
meson setup build --werror -Dsystem=true $MESON_OPTS $MESON_ARGS || \
(cat build/meson-logs/meson-log.txt && exit 1)
ninja -C build $NINJA_ARGS
run_cmd() {
printf "\e[32m[RUN COMMAND]: '%s'\e[0m\n" "$*"
"$@"
}
run_meson_setup() {
run_cmd meson setup build --error -Dsystem=true $MESON_OPTS $MESON_ARGS || \
(cat "${GIT_ROOT}/build/meson-logs/meson-log.txt" && exit 1)
}