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