Add meson required bits to the ci logic in the repo to be able to run
a meson build in a container.
This patch also drops a few environment variables we don't need with
meson anymore.
Signed-off-by: Erik Skultety <eskultet(a)redhat.com>
---
v2:
https://www.redhat.com/archives/libvir-list/2020-November/msg00380.html
Since v2:
- squashed both original patches into 1
- dropped some unnecessary code which meson handles implicitly
ci/Makefile | 32 ++++++++------------------------
ci/build.sh | 29 +++--------------------------
2 files changed, 11 insertions(+), 50 deletions(-)
diff --git a/ci/Makefile b/ci/Makefile
index c7c8eb9a45..6c253f0b1e 100644
--- a/ci/Makefile
+++ b/ci/Makefile
@@ -20,26 +20,8 @@ CI_HOST_SRCDIR = $(CI_SCRATCHDIR)/src
# the $(CI_HOST_SRCDIR) directory from the host
CI_CONT_SRCDIR = $(CI_USER_HOME)/libvirt
-# Relative directory to perform the build in. This
-# defaults to using a separate build dir, but can be
-# set to empty string for an in-source tree build.
-CI_VPATH = build
-
-# The directory holding the build output inside the
-# container.
-CI_CONT_BUILDDIR = $(CI_CONT_SRCDIR)/$(CI_VPATH)
-
-# Can be overridden with mingw{32,64}-configure if desired
-CI_CONFIGURE = $(CI_CONT_SRCDIR)/configure
-
-# Default to using all possible CPUs
-CI_SMP = $(shell getconf _NPROCESSORS_ONLN)
-
-# Any extra arguments to pass to make
-CI_MAKE_ARGS =
-
-# Any extra arguments to pass to configure
-CI_CONFIGURE_ARGS =
+# Any extra arguments to pass to ninja
+CI_NINJA_ARGS =
# Script containing environment preparation steps
CI_PREPARE_SCRIPT = $(CI_ROOTDIR)/prepare.sh
@@ -221,12 +203,15 @@ ci-run-command@%: ci-prepare-tree
--user="#$(CI_UID)" \
--group="#$(CI_GID)" \
CONFIGURE_OPTS="$$CONFIGURE_OPTS" \
+ MESON_OPTS="$$MESON_OPTS" \
CI_CONT_SRCDIR="$(CI_CONT_SRCDIR)" \
CI_CONT_BUILDDIR="$(CI_CONT_BUILDDIR)" \
CI_SMP="$(CI_SMP)" \
CI_CONFIGURE="$(CI_CONFIGURE)" \
CI_CONFIGURE_ARGS="$(CI_CONFIGURE_ARGS)" \
CI_MAKE_ARGS="$(CI_MAKE_ARGS)" \
+ CI_CONT_SRCDIR="$(CI_CONT_SRCDIR)" \
+ CI_NINJA_ARGS="$(CI_NINJA_ARGS)" \
$(CI_COMMAND) || exit 1'
@test "$(CI_CLEAN)" = "1" && rm -rf $(CI_SCRATCHDIR) || :
@@ -236,8 +221,8 @@ ci-shell@%:
ci-build@%:
$(MAKE) -C $(CI_ROOTDIR) ci-run-command@$* CI_COMMAND="$(CI_USER_HOME)/build"
-ci-check@%:
- $(MAKE) -C $(CI_ROOTDIR) ci-build@$* CI_MAKE_ARGS="check"
+ci-test@%:
+ $(MAKE) -C $(CI_ROOTDIR) ci-build@$* CI_NINJA_ARGS=test
ci-list-images:
@echo
@@ -266,6 +251,5 @@ ci-help:
@echo " CI_CLEAN=0 - do not delete '$(CI_SCRATCHDIR)' after
completion"
@echo " CI_REUSE=1 - re-use existing '$(CI_SCRATCHDIR)'
content"
@echo " CI_ENGINE=auto - container engine to use (podman, docker)"
- @echo " CI_CONFIGURE_ARGS= - extra arguments passed to configure"
- @echo " CI_MAKE_ARGS= - extra arguments passed to make, e.g. space
delimited list of targets"
+ @echo " CI_NINJA_ARGS= - extra arguments passed to ninja"
@echo
diff --git a/ci/build.sh b/ci/build.sh
index 2da84c080a..4530283cd8 100644
--- a/ci/build.sh
+++ b/ci/build.sh
@@ -7,32 +7,9 @@
#
# to make.
-mkdir -p "$CI_CONT_BUILDDIR" || exit 1
-cd "$CI_CONT_BUILDDIR"
+cd "$CI_CONT_SRCDIR"
export VIR_TEST_DEBUG=1
-NOCONFIGURE=1 "$CI_CONT_SRCDIR/autogen.sh" || exit 1
-# $CONFIGURE_OPTS is a env that can optionally be set in the container,
-# populated at build time from the Dockerfile. A typical use case would
-# be to pass --host/--target args to trigger cross-compilation
-#
-# This can be augmented by make local args in $CI_CONFIGURE_ARGS
-"$CI_CONFIGURE" $CONFIGURE_OPTS $CI_CONFIGURE_ARGS
-if test $? != 0; then
- test -f config.log && cat config.log
- exit 1
-fi
-find -name test-suite.log -delete
-
-make -j"$CI_SMP" $CI_MAKE_ARGS
-
-if test $? != 0; then \
- LOGS=$(find -name test-suite.log)
- if test "$LOGS"; then
- echo "=== LOG FILE(S) START ==="
- cat $LOGS
- echo "=== LOG FILE(S) END ==="
- fi
- exit 1
-fi
+meson build --werror $MESON_OPTS || (cat build/meson-logs/meson-log.txt && exit
1)
+ninja -C build $CI_NINJA_ARGS
--
2.26.2