]> git.ipfire.org Git - thirdparty/libvirt.git/commitdiff
ci: Switch to meson build system
authorErik Skultety <eskultet@redhat.com>
Mon, 9 Nov 2020 11:20:52 +0000 (12:20 +0100)
committerErik Skultety <eskultet@redhat.com>
Fri, 27 Nov 2020 14:14:35 +0000 (15:14 +0100)
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 several environment variables we don't need with
meson anymore.

Signed-off-by: Erik Skultety <eskultet@redhat.com>
Reviewed-by: Andrea Bolognani <abologna@redhat.com>
ci/Makefile
ci/build.sh

index c7c8eb9a45d94ece548cd2711932ed421a0ff2c6..7938e14c15010e265846cbcd23a72179bb774c9c 100644 (file)
@@ -20,27 +20,6 @@ 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 =
-
 # Script containing environment preparation steps
 CI_PREPARE_SCRIPT = $(CI_ROOTDIR)/prepare.sh
 
@@ -220,13 +199,10 @@ ci-run-command@%: ci-prepare-tree
                  --login \
                  --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_MESON_ARGS="$(CI_MESON_ARGS)" \
+                 CI_NINJA_ARGS="$(CI_NINJA_ARGS)" \
                  $(CI_COMMAND) || exit 1'
        @test "$(CI_CLEAN)" = "1" && rm -rf $(CI_SCRATCHDIR) || :
 
@@ -236,8 +212,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 +242,6 @@ 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_MESON_ARGS=      - extra arguments passed to meson"
+       @echo "    CI_NINJA_ARGS=      - extra arguments passed to ninja"
        @echo
index 2da84c080ab3ce39d46add63f7c72012d79d56a6..740b46a935e2b4269ad35a4256e3381f76aa6c75 100644 (file)
@@ -7,32 +7,15 @@
 #
 # 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,
+# $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 --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
+# be to pass options to trigger cross-compilation
 
-make -j"$CI_SMP" $CI_MAKE_ARGS
+meson build --werror $MESON_OPTS $CI_MESON_ARGS || \
+(cat build/meson-logs/meson-log.txt && exit 1)
 
-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
+ninja -C build $CI_NINJA_ARGS