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>
This commit is contained in:
parent
0ab32a7587
commit
ce2f24c510
|
@ -64,6 +64,7 @@ debian-bullseye:
|
||||||
- $MESON_BUILDDIR/meson-logs/
|
- $MESON_BUILDDIR/meson-logs/
|
||||||
- $MESON_BUILDDIR/test/piglit-results/
|
- $MESON_BUILDDIR/test/piglit-results/
|
||||||
variables:
|
variables:
|
||||||
|
MESON_ARGS: -Dc_args="-fno-common" -Dprefix=/usr -Dxephyr=true -Dwerror=true
|
||||||
CCACHE_COMPILERCHECK: content
|
CCACHE_COMPILERCHECK: content
|
||||||
CCACHE_DIR: /cache/xserver/cache
|
CCACHE_DIR: /cache/xserver/cache
|
||||||
LC_ALL: C.UTF-8
|
LC_ALL: C.UTF-8
|
||||||
|
@ -77,19 +78,24 @@ debian-bullseye:
|
||||||
meson:
|
meson:
|
||||||
extends: .common-build-and-test
|
extends: .common-build-and-test
|
||||||
script:
|
script:
|
||||||
- .gitlab-ci/build-and-test.sh
|
- .gitlab-ci/meson-build.sh --run-test
|
||||||
|
- .gitlab-ci/check-piglit-results.sh
|
||||||
- .gitlab-ci/manpages-check
|
- .gitlab-ci/manpages-check
|
||||||
|
variables:
|
||||||
|
XTEST_DIR: /root/xts
|
||||||
|
PIGLIT_DIR: /root/piglit
|
||||||
|
LP_NUM_THREADS: 0
|
||||||
|
|
||||||
meson-noglamor:
|
meson-noglamor:
|
||||||
extends: meson
|
extends: meson
|
||||||
variables:
|
variables:
|
||||||
MESON_EXTRA_OPTIONS: >
|
MESON_EXTRA_ARGS: >
|
||||||
-Dglamor=false
|
-Dglamor=false
|
||||||
|
|
||||||
meson-nolibdecor:
|
meson-nolibdecor:
|
||||||
extends: meson
|
extends: meson
|
||||||
variables:
|
variables:
|
||||||
MESON_EXTRA_OPTIONS: >
|
MESON_EXTRA_ARGS: >
|
||||||
-Dlibdecor=false
|
-Dlibdecor=false
|
||||||
|
|
||||||
mingw-cross-build:
|
mingw-cross-build:
|
||||||
|
|
|
@ -4,7 +4,8 @@ set -e
|
||||||
set -o xtrace
|
set -o xtrace
|
||||||
|
|
||||||
if [[ -z "$MESON_BUILDDIR" ]]; then
|
if [[ -z "$MESON_BUILDDIR" ]]; then
|
||||||
MESON_BUILDDIR=build
|
echo "\$MESON_BUILDDIR not set"
|
||||||
|
exit 1
|
||||||
fi
|
fi
|
||||||
|
|
||||||
check_piglit_results ()
|
check_piglit_results ()
|
||||||
|
@ -24,12 +25,6 @@ check_piglit_results ()
|
||||||
exit 1
|
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 xephyr-glamor hw/kdrive/ephyr/Xephyr.p/ephyr_glamor.c.o
|
||||||
check_piglit_results xvfb hw/vfb/Xvfb
|
check_piglit_results xvfb hw/vfb/Xvfb
|
||||||
check_piglit_results xwayland hw/xwayland/Xwayland
|
check_piglit_results xwayland hw/xwayland/Xwayland
|
|
@ -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
|
Loading…
Reference in New Issue