diff --git a/.gitlab-ci/check-ddx-build.sh b/.github/scripts/check-ddx-build.sh similarity index 100% rename from .gitlab-ci/check-ddx-build.sh rename to .github/scripts/check-ddx-build.sh diff --git a/.gitlab-ci/check-piglit-results.sh b/.github/scripts/check-piglit-results.sh similarity index 100% rename from .gitlab-ci/check-piglit-results.sh rename to .github/scripts/check-piglit-results.sh diff --git a/.gitlab-ci/manpages-check b/.github/scripts/manpages-check similarity index 100% rename from .gitlab-ci/manpages-check rename to .github/scripts/manpages-check diff --git a/.github/scripts/meson-build.sh b/.github/scripts/meson-build.sh new file mode 100755 index 000000000..abc50b1c2 --- /dev/null +++ b/.github/scripts/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 diff --git a/.github/workflows/build-xserver.yml b/.github/workflows/build-xserver.yml index 0a1ef5be5..41b15f9a6 100644 --- a/.github/workflows/build-xserver.yml +++ b/.github/workflows/build-xserver.yml @@ -55,7 +55,7 @@ jobs: run: .github/scripts/install-prereq.sh - name: build - run: .gitlab-ci/meson-build.sh + run: .github/scripts/meson-build.sh - name: tests run: meson test -C "${{ env.MESON_BUILDDIR }}" --print-errorlogs @@ -72,9 +72,9 @@ jobs: build/test/piglit-results/* - name: ddx build check - run: .gitlab-ci/check-ddx-build.sh + run: .github/scripts/check-ddx-build.sh - name: manpage check - run: .gitlab-ci/manpages-check + run: .github/scripts/manpages-check drivers-build-ubuntu: env: @@ -119,7 +119,7 @@ jobs: echo -n > .meson_environment echo "export MESON_BUILDDIR=$MESON_BUILDDIR" >> .meson_environment echo "export PKG_CONFIG_PATH=$PKG_CONFIG_PATH" >> .meson_environment - .gitlab-ci/meson-build.sh --skip-test + .github/scripts/meson-build.sh --skip-test sudo meson install --no-rebuild -C "$MESON_BUILDDIR" sudo mkdir -p /usr/local/lib/$MACHINE/xorg/modules # /home/runner/x11/lib/xorg/modules sudo chown -R runner /usr/local/lib/$MACHINE/xorg/modules # /home/runner/x11/lib/xorg/modules @@ -169,7 +169,7 @@ jobs: run: sudo .github/scripts/mingw32/cross-prereqs-build.sh i686-w64-mingw32 - name: build - run: .gitlab-ci/meson-build.sh --run-install + run: .github/scripts/meson-build.sh --run-install xserver-build-macos: env: @@ -207,7 +207,7 @@ jobs: run: .github/scripts/macos/install-prereq.sh - name: build - run: .gitlab-ci/meson-build.sh + run: .github/scripts/meson-build.sh - name: tests (may fail) continue-on-error: true @@ -225,9 +225,9 @@ jobs: build/test/piglit-results/* - name: ddx build check - run: .gitlab-ci/check-ddx-build.sh + run: .github/scripts/check-ddx-build.sh - name: manpage check - run: .gitlab-ci/manpages-check + run: .github/scripts/manpages-check xserver-build-freebsd: runs-on: ubuntu-latest diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index c6420f9c1..bab5dd3b7 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -166,10 +166,10 @@ freebsd-image: meson: extends: .common-build-and-test script: - - .gitlab-ci/meson-build.sh --run-test - - .gitlab-ci/check-piglit-results.sh - - .gitlab-ci/manpages-check - - .gitlab-ci/check-ddx-build.sh + - .github/scripts/meson-build.sh --run-test + - .github/scripts/check-piglit-results.sh + - .github/scripts/manpages-check + - .github/scripts/check-ddx-build.sh variables: XTEST_DIR: /root/xts PIGLIT_DIR: /root/piglit @@ -190,7 +190,7 @@ meson-noglamor: mingw-cross-build: extends: .common-build-and-test script: - - .gitlab-ci/meson-build.sh --run-install + - .github/scripts/meson-build.sh --run-install variables: MESON_ARGS: --cross-file=.gitlab-ci/cross-i686-w64-mingw32.txt -Dglx=false -Dlisten_tcp=true -Dxvmc=true -Dxv=true @@ -212,7 +212,7 @@ freebsd: - /app/vmctl exec "pkg update && pkg add libxvmc xcb-util xcb-util-wm" # need to install newer xorgproto - /app/vmctl exec "cd $CI_PROJECT_NAME/dep.xorgproto && ./autogen.sh --prefix=/usr && make && make install" - - /app/vmctl exec "cd $CI_PROJECT_NAME && PKG_CONFIG_PATH=\"$PKG_CONFIG_PATH\" MESON_ARGS=\"$MESON_ARGS\" MESON_BUILDDIR=\"$MESON_BUILDDIR\" .gitlab-ci/meson-build.sh --skip-test" && touch .success + - /app/vmctl exec "cd $CI_PROJECT_NAME && PKG_CONFIG_PATH=\"$PKG_CONFIG_PATH\" MESON_ARGS=\"$MESON_ARGS\" MESON_BUILDDIR=\"$MESON_BUILDDIR\" .github/scripts/meson-build.sh --skip-test" && touch .success # test not working yet, so skipped # - scp -r vm:$CI_PROJECT_NAME/test-results.xml . - /app/vmctl stop @@ -228,10 +228,10 @@ meson-dist: - $MESON_BUILDDIR/xserver-*/$MESON_BUILDDIR/meson-logs/ - xserver-tarball/install/ script: - - .gitlab-ci/meson-build.sh --run-dist + - .github/scripts/meson-build.sh --run-dist - mkdir xserver-tarball - tar xf $MESON_BUILDDIR/meson-dist/xserver-*.tar.xz -C xserver-tarball --strip-components=1 - - .gitlab-ci/meson-build.sh -C xserver-tarball --skip-test --skip-dist --run-install + - .github/scripts/meson-build.sh -C xserver-tarball --skip-test --skip-dist --run-install variables: MESON_DIST_ARGS: --no-tests MESON_EXTRA_ARGS: -Dprefix=$CI_PROJECT_DIR/xserver-tarball/install/ @@ -349,7 +349,7 @@ xf86-driver-build-test: - git -C "$DRIVER" checkout "$SHA" - | if [[ -e "$DRIVER/meson.build" ]] && [[ "$DRIVER" != "xf86-video-intel" ]]; then - .gitlab-ci/meson-build.sh -C "$DRIVER" --skip-test + .github/scripts/meson-build.sh -C "$DRIVER" --skip-test else pushd "$DRIVER" || exit 1 ./autogen.sh && make diff --git a/.gitlab-ci/meson-build.sh b/.gitlab-ci/meson-build.sh deleted file mode 100755 index abc50b1c2..000000000 --- a/.gitlab-ci/meson-build.sh +++ /dev/null @@ -1,145 +0,0 @@ -#!/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 diff --git a/.gitlab-ci/meson-build.sh b/.gitlab-ci/meson-build.sh new file mode 120000 index 000000000..aebbec634 --- /dev/null +++ b/.gitlab-ci/meson-build.sh @@ -0,0 +1 @@ +../.github/scripts/meson-build.sh \ No newline at end of file