diff options
author | Peter Hutterer <peter.hutterer@who-t.net> | 2024-02-20 09:36:23 +1000 |
---|---|---|
committer | Marge Bot <emma+marge@anholt.net> | 2024-02-29 01:27:02 +0000 |
commit | ce2f24c510aa6f4856d81d796ef34ac97d78f500 (patch) | |
tree | 5f2c7610556f61f021be5a6e4c6c79adcdc9ce18 /.gitlab-ci | |
parent | 0ab32a7587686f28e20c0a8e1a212a5a85052ee7 (diff) |
CI: switch to the meson-build.sh helper script
This script does the same thing but has a few more toggles than our
custom script which means we can set everything we need in the
gitlab-ci.yml file and have it DTRT.
Part-of: <https://gitlab.freedesktop.org/xorg/xserver/-/merge_requests/1317>
Diffstat (limited to '.gitlab-ci')
-rwxr-xr-x | .gitlab-ci/check-piglit-results.sh (renamed from .gitlab-ci/build-and-test.sh) | 9 | ||||
-rwxr-xr-x | .gitlab-ci/meson-build.sh | 145 |
2 files changed, 147 insertions, 7 deletions
diff --git a/.gitlab-ci/build-and-test.sh b/.gitlab-ci/check-piglit-results.sh index 346c9d739..182579ed2 100755 --- a/.gitlab-ci/build-and-test.sh +++ b/.gitlab-ci/check-piglit-results.sh @@ -4,7 +4,8 @@ set -e set -o xtrace if [[ -z "$MESON_BUILDDIR" ]]; then - MESON_BUILDDIR=build + echo "\$MESON_BUILDDIR not set" + exit 1 fi check_piglit_results () @@ -24,12 +25,6 @@ check_piglit_results () exit 1 } -meson -Dc_args="-fno-common" -Dprefix=/usr -Dxephyr=true -Dwerror=true $MESON_EXTRA_OPTIONS "$MESON_BUILDDIR/" - -export PIGLIT_DIR=/root/piglit XTEST_DIR=/root/xts LP_NUM_THREADS=0 -ninja -j${FDO_CI_CONCURRENT:-4} -C "$MESON_BUILDDIR/" -meson test --num-processes ${FDO_CI_CONCURRENT:-4} --print-errorlogs -C "$MESON_BUILDDIR/" - check_piglit_results xephyr-glamor hw/kdrive/ephyr/Xephyr.p/ephyr_glamor.c.o check_piglit_results xvfb hw/vfb/Xvfb check_piglit_results xwayland hw/xwayland/Xwayland diff --git a/.gitlab-ci/meson-build.sh b/.gitlab-ci/meson-build.sh new file mode 100755 index 000000000..abc50b1c2 --- /dev/null +++ b/.gitlab-ci/meson-build.sh @@ -0,0 +1,145 @@ +#!/usr/bin/env bash +# +# This script is sourced from here: +# https://gitlab.freedesktop.org/whot/meson-helper +# +# SPDX-License-Identifier: MIT +# +# Usage: +# meson-build.sh +# [-C directory] ... change to directory before doing anything +# [--skip-build] ... skip the compilation +# [--skip-test|--run-test] ... skip or explicitly run meson test +# [--skip-dist|--run-dist] ... skip or explicitly run meson dist +# [--skip-install|--run-install] ... skip or explicitly run meson install +# +# +# Environment variables: +# If the .meson_environment file exists in $PWD, it is sourced at the start of the script. +# This file is sourced before the -C directory option takes effect. +# +# MESON_BUILDDIR +# MESON_ARGS, MESON_EXTRA_ARGS: +# Args passed to meson setup. The MESON_EXTRA_ARGS exist to make it easier for +# callers to have a default set of arguments and a variable set of arguments. +# MESON_TEST_ARGS, MESON_DIST_ARGS, MESON_INSTALL_ARGS: +# Args passed directly to the respective meson command. If these args are set it implies +# --run-$cmd. Use --skip-$cmd to skip. +# NINJA_ARGS - args passed to ninja via meson compile + +set -x +if [[ -f .meson_environment ]]; then + . .meson_environment +fi + +# If test args are set, we assume we want to run the tests +MESON_RUN_TEST="$MESON_TEST_ARGS" +MESON_RUN_INSTALL="$MESON_INSTALL_ARGS" +MESON_RUN_DIST="$MESON_DIST_ARGS" + +while [[ $# -gt 0 ]]; do + case $1 in + -C) + directory=$2 + shift 2 + pushd "$directory" || exit 1 + ;; + --skip-setup) + shift + MESON_SKIP_SETUP="1" + ;; + --skip-build) + shift + MESON_SKIP_BUILD="1" + ;; + --skip-test) + shift + MESON_RUN_TEST="" + ;; + --run-test) + shift + MESON_RUN_TEST="1" + ;; + --skip-dist) + shift + MESON_RUN_DIST="" + ;; + --run-dist) + shift + MESON_RUN_DIST="1" + ;; + --skip-install) + shift + MESON_RUN_INSTALL="" + ;; + --run-install) + shift + MESON_RUN_INSTALL="1" + ;; + *) + echo "Unknow commandline argument $1" + exit 1 + ;; + esac +done + +if [[ -z "$MESON_BUILDDIR" ]]; then + echo "\$MESON_BUILDDIR undefined." + exit 1 +fi + +# emulate a few gitlab variables to make it easier to +# run and debug locally. +if [[ -z "$CI_JOB_ID" ]] || [[ -z "$CI_JOB_NAME" ]]; then + echo "Missing \$CI_JOB_ID or \$CI_JOB_NAME". + CI_PROJECT_NAME=$(basename "$PWD") + CI_JOB_ID=$(date +%s) + CI_JOB_NAME="$CI_PROJECT_NAME-job-local" + echo "Simulating gitlab environment: " + echo " CI_JOB_ID=$CI_JOB_ID" + echo " CI_JOB_NAME=$CI_JOB_NAME" +fi + +if [[ -n "$FDO_CI_CONCURRENT" ]]; then + jobcount="-j$FDO_CI_CONCURRENT" + export MESON_TESTTHREADS="$FDO_CI_CONCURRENT" +fi + +if [[ -n "$MESON_EXTRA_ARGS" ]]; then + MESON_ARGS="$MESON_ARGS $MESON_EXTRA_ARGS" +fi + +echo "*************************************************" +echo "builddir: $MESON_BUILDDIR" +echo "meson args: $MESON_ARGS" +echo "ninja args: $NINJA_ARGS" +echo "meson test args: $MESON_TEST_ARGS" +echo "job count: ${jobcount-0}" +echo "*************************************************" + +set -e + +if [[ -z "$MESON_SKIP_SETUP" ]]; then + rm -rf "$MESON_BUILDDIR" + meson setup "$MESON_BUILDDIR" $MESON_ARGS +fi +meson configure "$MESON_BUILDDIR" + +if [[ -z "$MESON_SKIP_BUILD" ]]; then + if [[ -n "$NINJA_ARGS" ]]; then + ninja_args="--ninja-args $NINJA_ARGS" + fi + meson compile -v -C "$MESON_BUILDDIR" $jobcount $ninja_args +fi + +if [[ -n "$MESON_RUN_TEST" ]]; then + meson test -C "$MESON_BUILDDIR" --print-errorlogs $MESON_TEST_ARGS +fi + +if [[ -n "$MESON_RUN_INSTALL" ]]; then + meson install --no-rebuild -C "$MESON_BUILDDIR" $MESON_INSTALL_ARGS +fi + +if [[ -n "$MESON_RUN_DIST" ]]; then + meson dist -C "$MESON_BUILDDIR" $MESON_DIST_ARGS +fi |