diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 3fa3ba16d1..35936c37d8 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -117,10 +117,11 @@ release-build: EXTRA_MESON_FLAGS: "--buildtype=release" script: - .gitlab-ci/show-info-linux.sh - - export PATH="$HOME/.local/bin:$PATH" + - mkdir _install + - export PATH="$HOME/.local/bin:${CI_PROJECT_DIR}/_install/bin:$PATH" + - .gitlab-ci/install-meson-project.sh --prefix ${CI_PROJECT_DIR}/_install https://gitlab.gnome.org/jadahl/catch.git main - meson subprojects download - meson subprojects update --reset - - mkdir _install - meson setup --prefix=${CI_PROJECT_DIR}/_install ${COMMON_MESON_FLAGS} diff --git a/.gitlab-ci/install-meson-project.sh b/.gitlab-ci/install-meson-project.sh new file mode 100755 index 0000000000..67e55b75c2 --- /dev/null +++ b/.gitlab-ci/install-meson-project.sh @@ -0,0 +1,91 @@ +#!/bin/bash + +set -e + +usage() { + cat <<-EOF + Usage: $(basename $0) [OPTION…] REPO_URL COMMIT + + Check out and install a meson project + + Options: + -Dkey=val Option to pass on to meson + --prefix Prefix to install to + --subdir Build subdirectory instead of whole project + --prepare Script to run before build + + -h, --help Display this help + + EOF +} + +TEMP=$(getopt \ + --name=$(basename $0) \ + --options='D:h' \ + --longoptions='prefix:' \ + --longoptions='subdir:' \ + --longoptions='prepare:' \ + --longoptions='help' \ + -- "$@") + +eval set -- "$TEMP" +unset TEMP + +MESON_OPTIONS=() +PREFIX=/usr +SUBDIR=. +PREPARE=: + +while true; do + case "$1" in + -D) + MESON_OPTIONS+=( -D$2 ) + shift 2 + ;; + + --prefix) + PREFIX=$2 + shift 2 + ;; + + --subdir) + SUBDIR=$2 + shift 2 + ;; + + --prepare) + PREPARE=$2 + shift 2 + ;; + + -h|--help) + usage + exit 0 + ;; + + --) + shift + break + ;; + esac +done + +if [[ $# -lt 2 ]]; then + usage + exit 1 +fi + +REPO_URL="$1" +COMMIT="$2" + +CHECKOUT_DIR=$(mktemp --directory) +trap "rm -rf $CHECKOUT_DIR" EXIT + +git clone --depth 1 "$REPO_URL" -b "$COMMIT" "$CHECKOUT_DIR" + +pushd "$CHECKOUT_DIR/$SUBDIR" +sh -c "$PREPARE" +meson setup --prefix "$PREFIX" _build "${MESON_OPTIONS[@]}" +meson compile -C _build +meson install -C _build +popd diff --git a/testsuite/meson.build b/testsuite/meson.build index 7c671c4c08..490a04eb4f 100644 --- a/testsuite/meson.build +++ b/testsuite/meson.build @@ -2,6 +2,12 @@ gtk_libexecdir = join_paths(gtk_prefix, get_option('libexecdir')) installed_test_bindir = join_paths(gtk_libexecdir, 'installed-tests', 'gtk-4.0') installed_test_datadir = join_paths(gtk_datadir, 'installed-tests', 'gtk-4.0') +test_wrappers = [] +catch = find_program('catch', required: false) +if catch.found() + test_wrappers += [ catch ] +endif + common_env = [ 'GIO_USE_VOLUME_MONITOR=unix', 'GIO_USE_VFS=local', @@ -56,12 +62,14 @@ foreach setup : setups env: env + ['TEST_OUTPUT_SUBDIR=@0@'.format(name)], exclude_suites: exclude_unstable + exclude, is_default: setup.get('is_default', false), + exe_wrapper: test_wrappers, ) add_test_setup( '@0@_unstable'.format(name), env: env + ['TEST_OUTPUT_SUBDIR=@0@_unstable'.format(name)], exclude_suites: exclude, + exe_wrapper: test_wrappers, ) endif endforeach