mirror of
https://gitlab.com/libvirt/libvirt.git
synced 2024-12-21 21:25:25 +00:00
fa14b4a1a6
All BuildRequires should now be part of the build environment, so it's no longer needed. This ensures that, if we forget to add some BuildRequires to the build environment in the future, the mistake will be quickly detected. Signed-off-by: Andrea Bolognani <abologna@redhat.com> Reviewed-by: Pavel Hrdina <phrdina@redhat.com>
157 lines
5.0 KiB
Bash
157 lines
5.0 KiB
Bash
#!/bin/sh
|
|
|
|
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)"
|
|
run_cmd() {
|
|
printf "\e[32m[RUN COMMAND]: '%s'\e[0m\n" "$*"
|
|
"$@"
|
|
}
|
|
|
|
run_cmd_quiet() {
|
|
printf "\e[32m[RUN COMMAND]: '%s'\e[0m\n" "$*"
|
|
"$@" 1>/dev/null 2>&1
|
|
}
|
|
|
|
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)
|
|
}
|
|
|
|
run_build() {
|
|
test -f $GIT_ROOT/build/build.ninja || run_meson_setup
|
|
run_cmd meson compile -C build $BUILD_ARGS
|
|
}
|
|
|
|
run_dist() {
|
|
test -f $GIT_ROOT/build/build.ninja || run_meson_setup
|
|
|
|
# dist is unhappy in local container environment complaining about
|
|
# uncommitted changes in the repo which is often not the case - refreshing
|
|
# git's index solves the problem
|
|
git update-index --refresh
|
|
run_cmd meson dist -C build --no-tests
|
|
}
|
|
|
|
run_test() {
|
|
TEST_ARGS="${TEST_ARGS:=--no-suite syntax-check --print-errorlogs}"
|
|
|
|
test -f $GIT_ROOT/build/build.ninja || run_meson_setup
|
|
|
|
run_cmd meson test -C build $TEST_ARGS
|
|
}
|
|
|
|
run_codestyle() {
|
|
BUILD_ARGS="libvirt-pot-dep"
|
|
TEST_ARGS="--suite syntax-check --no-rebuild --print-errorlogs"
|
|
|
|
run_build
|
|
run_test
|
|
}
|
|
|
|
run_potfile() {
|
|
# since meson would run jobs for each of the following target in parallel,
|
|
# we'd have dependency issues such that one target might depend on a
|
|
# generated file which hasn't been generated yet by the other target, hence
|
|
# we limit potfile job to a single build job (luckily potfile build has
|
|
# negligible performance impact)
|
|
BUILD_ARGS="-j1 libvirt-pot-dep libvirt-pot"
|
|
|
|
run_build
|
|
}
|
|
|
|
run_rpmbuild() {
|
|
run_dist
|
|
|
|
# The spec file supports three types of builds: native, mingw32
|
|
# and mingw64. By default they're all enabled, but each of the
|
|
# containers in which our CI jobs are executed is only set up for
|
|
# one of them, so we have to explicitly disable the other two.
|
|
case "$CROSS" in
|
|
mingw32)
|
|
build1="native"
|
|
build2="mingw64"
|
|
;;
|
|
mingw64)
|
|
build1="native"
|
|
build2="mingw32"
|
|
;;
|
|
*)
|
|
build1="mingw32"
|
|
build2="mingw64"
|
|
;;
|
|
esac
|
|
|
|
run_cmd rpmbuild \
|
|
--clean \
|
|
--define "_without_$build1 1" \
|
|
--define "_without_$build2 1" \
|
|
-ta build/meson-dist/libvirt-*.tar.xz
|
|
}
|
|
|
|
run_website_build() {
|
|
export DESTDIR="${GIT_ROOT}/install"
|
|
BUILD_ARGS="install-web"
|
|
|
|
run_build
|
|
}
|
|
|
|
run_integration() {
|
|
run_cmd sudo pip3 install --prefix=/usr avocado-framework
|
|
|
|
# Explicitly allow storing cores globally
|
|
run_cmd sudo sh -c "echo DefaultLimitCORE=infinity >> /etc/systemd/system.conf"
|
|
|
|
# Need to reexec systemd after changing config
|
|
run_cmd sudo systemctl daemon-reexec
|
|
|
|
# Source the os-release file to query the vendor-provided variables
|
|
run_cmd . /etc/os-release
|
|
if test "$ID" = "centos" && test "$VERSION_ID" -eq 8
|
|
then
|
|
DAEMONS="libvirtd virtlockd virtlogd"
|
|
else
|
|
DAEMONS="virtinterfaced virtlockd virtlogd virtnetworkd virtnodedevd virtnwfilterd virtproxyd virtqemud virtsecretd virtstoraged"
|
|
fi
|
|
|
|
echo "DAEMONS=$DAEMONS"
|
|
for daemon in $DAEMONS
|
|
do
|
|
LOG_OUTPUTS="1:file:/var/log/libvirt/${daemon}.log"
|
|
LOG_FILTERS="3:remote 4:event 3:util.json 3:util.object 3:util.dbus 3:util.netlink 3:node_device 3:rpc 3:access 1:*"
|
|
run_cmd_quiet sudo augtool set /files/etc/libvirt/${daemon}.conf/log_filters "'$LOG_FILTERS'"
|
|
run_cmd_quiet sudo augtool set /files/etc/libvirt/${daemon}.conf/log_outputs "'$LOG_OUTPUTS'"
|
|
run_cmd_quiet sudo systemctl --quiet stop ${daemon}.service
|
|
run_cmd_quiet sudo systemctl restart ${daemon}.socket
|
|
done
|
|
|
|
# Make sure the default network is started on all platforms
|
|
# The reason for the '|| true' here is solely that GitLab executes all
|
|
# Shell scripts with -e by default and virsh returns an error if one tries
|
|
# to start a machine/network that is already active which is both fine and
|
|
# should also be a non-fatal error
|
|
run_cmd_quiet sudo virsh --quiet net-start default || true
|
|
|
|
# SCRATCH_DIR is normally set inside the GitLab CI job to /tmp/scratch.
|
|
# However, for local executions inside a VM we need to make sure some
|
|
# scratch directory exists and also that it is created outside of /tmp for
|
|
# storage space reasons (if multiple project repos are to be cloned).
|
|
SCRATCH_DIR="${SCRATCH_DIR:=$GIT_ROOT/ci/scratch)}"
|
|
|
|
test ! -d "$SCRATCH_DIR" && run_cmd mkdir "$SCRATCH_DIR"
|
|
run_cmd cd "$SCRATCH_DIR"
|
|
run_cmd git clone --depth 1 https://gitlab.com/libvirt/libvirt-tck.git
|
|
run_cmd cd libvirt-tck
|
|
run_cmd sudo avocado --config avocado.config run --job-results-dir "$SCRATCH_DIR"/avocado
|
|
}
|