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