355 lines
11 KiB
YAML
355 lines
11 KiB
YAML
# vim: set expandtab shiftwidth=2 tabstop=8 textwidth=0 filetype=yaml:
|
|
#
|
|
# This CI uses the freedesktop.org ci-templates.
|
|
# Please see the ci-templates documentation for details:
|
|
# https://freedesktop.pages.freedesktop.org/ci-templates/
|
|
|
|
.templates_sha: &template_sha ef5e4669b7500834a17ffe9277e15fbb6d977fff # see https://docs.gitlab.com/ee/ci/yaml/#includefile
|
|
|
|
# FDO_DISTRIBUTION_TAG is the tag of the docker image used for the build jobs.
|
|
# If the image doesn't exist yet, the docker-image stage generates it.
|
|
#
|
|
# In order to generate a new image, one should generally change the tag.
|
|
# While removing the image from the registry would also work, that's not
|
|
# recommended except for ephemeral images during development: Replacing an
|
|
# image after a significant amount of time might pull in newer versions of
|
|
# gcc/clang or other packages, which might break the build with older commits
|
|
# using the same tag.
|
|
variables:
|
|
FDO_UPSTREAM_REPO: 'xorg/xserver'
|
|
MESON_BUILDDIR: 'build'
|
|
REPO_URL_XORGPROTO: 'https://gitlab.freedesktop.org/xorg/proto/xorgproto.git'
|
|
XORG_DEBIAN_VERSION: 'bullseye-slim'
|
|
XORG_DEBIAN_EXEC: 'env FDO_CI_CONCURRENT=${FDO_CI_CONCURRENT} bash .gitlab-ci/debian-install.sh'
|
|
XORG_DEBIAN_TAG: '2025-02-26-xcb-deps'
|
|
XORG_FREEBSD_VERSION: '14.2'
|
|
XORG_FREEBSD_EXEC: ''
|
|
XORG_FREEBSD_TAG: '2025-02-18-vm-image'
|
|
|
|
include:
|
|
- project: 'freedesktop/ci-templates'
|
|
ref: *template_sha
|
|
file:
|
|
- '/templates/debian.yml'
|
|
- '/templates/freebsd.yml'
|
|
- '/templates/ci-fairy.yml'
|
|
- template: Security/SAST.gitlab-ci.yml
|
|
|
|
stages:
|
|
- docker-image
|
|
- build-and-test
|
|
- drivers
|
|
- test
|
|
|
|
.ci-run-policy:
|
|
# Retry jobs after runner system failures
|
|
retry:
|
|
max: 2
|
|
when:
|
|
- runner_system_failure
|
|
# Cancel CI run if a newer commit is pushed to the same branch
|
|
interruptible: true
|
|
|
|
# This is everything but the DDXen
|
|
.dix_paths: &dix_paths
|
|
# Directories
|
|
- .gitlab-ci/**/*
|
|
- composite/**/*
|
|
- config/**/*
|
|
- damageext/**/*
|
|
- dbe/**/*
|
|
- dix/**/*
|
|
- doc/**/*
|
|
- dri3/**/*
|
|
- exa/**/*
|
|
- fb/**/*
|
|
- glamor/**/*
|
|
- glx/**/*
|
|
- include/**/*
|
|
- m4/**/*
|
|
- man/**/*
|
|
- mi/**/*
|
|
- miext/**/*
|
|
- os/**/*
|
|
- present/**/*
|
|
- pseudoramiX/**/*
|
|
- randr/**/*
|
|
- record/**/*
|
|
- render/**/*
|
|
- test/**/*
|
|
- Xext/**/*
|
|
- xfixes/**/*
|
|
- Xi/**/*
|
|
- xkb/**/*
|
|
# Files
|
|
- hw/meson.build
|
|
- .gitlab-ci.yml
|
|
- meson*
|
|
- xorg-server.m4
|
|
- xorg-server.pc.in
|
|
- xserver.ent.in
|
|
|
|
.xorg_paths: &xorg_paths
|
|
- hw/xfree86/**/*
|
|
|
|
.xwayland_paths: &xwayland_paths
|
|
- hw/xwayland/**/*
|
|
|
|
.all_ddx_paths:
|
|
- hw/**/*
|
|
|
|
.debian:
|
|
variables:
|
|
FDO_DISTRIBUTION_VERSION: '$XORG_DEBIAN_VERSION'
|
|
FDO_DISTRIBUTION_EXEC: '$XORG_DEBIAN_EXEC'
|
|
FDO_DISTRIBUTION_TAG: '$XORG_DEBIAN_TAG'
|
|
|
|
.freebsd:
|
|
tags:
|
|
- kvm
|
|
variables:
|
|
FDO_DISTRIBUTION_TAG: '$XORG_FREEBSD_TAG'
|
|
FDO_DISTRIBUTION_VERSION: '$XORG_FREEBSD_VERSION'
|
|
FDO_DISTRIBUTION_EXEC: ''
|
|
FDO_DISTRIBUTION_PACKAGES: 'git gcc pkgconf autoconf automake libtool xorg-macros xorgproto bash meson ninja pixman xtrans libXau libXdmcp libXfont2 libxkbfile libxcvt libpciaccess font-util libepoll-shim'
|
|
FDO_IMAGE_SIZE: '30G'
|
|
|
|
debian-bullseye:
|
|
extends:
|
|
- .fdo.container-build@debian
|
|
- .ci-run-policy
|
|
- .debian
|
|
stage: docker-image
|
|
variables:
|
|
GIT_STRATEGY: none
|
|
|
|
freebsd-image:
|
|
extends:
|
|
- .fdo.qemu-build@freebsd@x86_64
|
|
- .freebsd
|
|
stage: docker-image
|
|
variables:
|
|
GIT_STRATEGY: none
|
|
|
|
.xorg-image@debian:
|
|
extends:
|
|
- .fdo.distribution-image@debian
|
|
- .debian
|
|
|
|
.xorg-image@freebsd:
|
|
extends:
|
|
- .fdo.distribution-image@freebsd
|
|
- .freebsd
|
|
variables:
|
|
GIT_DEPTH: 1
|
|
PKG_CONFIG_PATH: /usr/share/pkgconfig:/usr/lib/pkgconfig:/usr/pkg/share/pkgconfig:/usr/pkg/lib/pkgconfig:/usr/local/libdata/pkgconfig
|
|
|
|
.common-build-and-test:
|
|
extends:
|
|
- .xorg-image@debian
|
|
- .ci-run-policy
|
|
stage: build-and-test
|
|
artifacts:
|
|
when: always
|
|
paths:
|
|
- $MESON_BUILDDIR/meson-logs/
|
|
- $MESON_BUILDDIR/test/piglit-results/
|
|
variables:
|
|
MESON_ARGS: -Dc_args="-fno-common" -Dprefix=/usr -Dxephyr=true -Dwerror=true -Dxcsecurity=true
|
|
CCACHE_COMPILERCHECK: content
|
|
CCACHE_DIR: /cache/xserver/cache
|
|
LC_ALL: C.UTF-8
|
|
before_script:
|
|
- export CCACHE_BASEDIR="$PWD"
|
|
- export PATH="/usr/lib/ccache:$PATH"
|
|
- ccache --show-stats
|
|
after_script:
|
|
- ccache --show-stats
|
|
|
|
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
|
|
variables:
|
|
XTEST_DIR: /root/xts
|
|
PIGLIT_DIR: /root/piglit
|
|
LP_NUM_THREADS: 0
|
|
MESON_DDX_BUILD_ARGS: >
|
|
-Dxwayland=${BUILD_XWAYLAND} -Dxorg=${BUILD_XORG} -Dxephyr=${BUILD_XEPHYR} -Dxvfb=${BUILD_XVFB} -Dxnest=${BUILD_XNEST}
|
|
BUILD_XEPHYR: true
|
|
BUILD_XNEST: true
|
|
BUILD_XORG: true
|
|
BUILD_XVFB: true
|
|
BUILD_XWAYLAND: true
|
|
MESON_EXTRA_ARGS: ${MESON_DDX_BUILD_ARGS}
|
|
|
|
meson-noglamor:
|
|
extends: meson
|
|
variables:
|
|
MESON_EXTRA_ARGS: -Dglamor=false ${MESON_DDX_BUILD_ARGS}
|
|
|
|
xwayland-nolibdecor:
|
|
extends: meson
|
|
variables:
|
|
BUILD_XEPHYR: false
|
|
BUILD_XNEST: false
|
|
BUILD_XORG: false
|
|
BUILD_XVFB: false
|
|
MESON_EXTRA_ARGS: -Dlibdecor=false ${MESON_DDX_BUILD_ARGS}
|
|
|
|
mingw-cross-build:
|
|
extends: .common-build-and-test
|
|
script:
|
|
- .gitlab-ci/meson-build.sh --run-install
|
|
variables:
|
|
MESON_ARGS: --cross-file=.gitlab-ci/cross-i686-w64-mingw32.txt -Dglx=false -Dlisten_tcp=true
|
|
|
|
freebsd:
|
|
stage: build-and-test
|
|
extends:
|
|
- .xorg-image@freebsd
|
|
variables:
|
|
MESON_ARGS: -Dglx=false -Dglamor=false -Dudev=false -Dudev_kms=false
|
|
script:
|
|
# running of of disk space without this
|
|
# needed until https://gitlab.freedesktop.org/freedesktop/ci-templates/-/issues/67 is fixed
|
|
- git gc
|
|
- git clone --depth=1 $REPO_URL_XORGPROTO dep.xorgproto
|
|
- /app/vmctl start
|
|
- set +e
|
|
- scp -r $PWD "vm:"
|
|
# 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
|
|
# test not working yet, so skipped
|
|
# - scp -r vm:$CI_PROJECT_NAME/test-results.xml .
|
|
- /app/vmctl stop
|
|
- set -e
|
|
- test -e .success || exit 1
|
|
|
|
meson-dist:
|
|
extends: .common-build-and-test
|
|
artifacts:
|
|
when: always
|
|
paths:
|
|
- $MESON_BUILDDIR/meson-logs/
|
|
- $MESON_BUILDDIR/xserver-*/$MESON_BUILDDIR/meson-logs/
|
|
- xserver-tarball/install/
|
|
script:
|
|
- .gitlab-ci/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
|
|
variables:
|
|
MESON_DIST_ARGS: --no-tests
|
|
MESON_EXTRA_ARGS: -Dprefix=$CI_PROJECT_DIR/xserver-tarball/install/
|
|
|
|
xf86-driver-build-test:
|
|
extends:
|
|
- .xorg-image@debian
|
|
- .ci-run-policy
|
|
stage: drivers
|
|
parallel:
|
|
matrix:
|
|
- REPO: https://gitlab.freedesktop.org/xorg/driver/xf86-input-evdev
|
|
SHA: xf86-input-evdev-2.10.6
|
|
- REPO: https://gitlab.freedesktop.org/xorg/driver/xf86-input-libinput
|
|
SHA: xf86-input-libinput-1.4.0
|
|
- REPO: https://gitlab.freedesktop.org/xorg/driver/xf86-input-mouse
|
|
SHA: xf86-input-mouse-1.9.5
|
|
- REPO: https://gitlab.freedesktop.org/xorg/driver/xf86-input-synaptics
|
|
SHA: xf86-input-synaptics-1.9.2
|
|
- REPO: https://gitlab.freedesktop.org/xorg/driver/xf86-video-amdgpu
|
|
SHA: xf86-video-amdgpu-23.0.0
|
|
- REPO: https://gitlab.freedesktop.org/xorg/driver/xf86-video-ati
|
|
SHA: xf86-video-ati-22.0.0
|
|
- REPO: https://gitlab.freedesktop.org/xorg/driver/xf86-video-intel
|
|
SHA: e6a4c4740c15ace9dd79dc7c18955f2eb413a6a5 # no release yet
|
|
- REPO: https://gitlab.freedesktop.org/xorg/driver/xf86-video-qxl
|
|
SHA: 989ff620220e8d0555cec38c1508b57dfbcfb0c6 # no release yet
|
|
- REPO: https://gitlab.freedesktop.org/xorg/driver/xf86-video-vesa
|
|
SHA: xf86-video-vesa-2.6.0
|
|
- REPO: https://gitlab.freedesktop.org/xorg/driver/xf86-video-vmware
|
|
SHA: xf86-video-vmware-13.4.0
|
|
script:
|
|
# built xserver is taken from meson-dist job
|
|
- export PKG_CONFIG_PATH=$(pwd)/xserver-tarball/install/lib/x86_64-linux-gnu/pkgconfig
|
|
- export ACLOCAL_PATH=$(pwd)/xserver-tarball/install/share/aclocal/
|
|
- unset MESON_EXTRA_ARGS
|
|
- DRIVER=$(basename $REPO)
|
|
- git clone "$REPO" "$DRIVER"
|
|
- git -C "$DRIVER" checkout "$SHA"
|
|
- |
|
|
if [[ -e "$DRIVER/meson.build" ]] && [[ "$DRIVER" != "xf86-video-intel" ]]; then
|
|
.gitlab-ci/meson-build.sh -C "$DRIVER" --skip-test
|
|
else
|
|
pushd "$DRIVER" || exit 1
|
|
./autogen.sh && make
|
|
fi
|
|
needs:
|
|
- meson-dist
|
|
dependencies:
|
|
- meson-dist
|
|
variables:
|
|
GIT_DEPTH: 1
|
|
MESON_ARGS: -Dprefix=/usr/
|
|
MESON_EXTRA_ARGS: -Dxwayland=false -Dxnest=false -Dxvfb=false -Dxquartz=false -Ddocs=false
|
|
rules:
|
|
- if: $CI_PIPELINE_SOURCE == 'merge_request_event'
|
|
changes:
|
|
*dix_paths
|
|
- if: $CI_PIPELINE_SOURCE == 'merge_request_event'
|
|
changes:
|
|
*xorg_paths
|
|
|
|
#
|
|
# Verify that commit messages are as expected
|
|
#
|
|
check-commits:
|
|
extends:
|
|
- .fdo.ci-fairy
|
|
needs: []
|
|
stage: test
|
|
script:
|
|
- ci-fairy check-commits --junit-xml=results.xml
|
|
except:
|
|
- master@xorg/xserver
|
|
variables:
|
|
GIT_DEPTH: 100
|
|
artifacts:
|
|
reports:
|
|
junit: results.xml
|
|
allow_failure: true
|
|
|
|
#
|
|
# Verify that the merge request has the allow-collaboration checkbox ticked
|
|
#
|
|
check-merge-request:
|
|
extends:
|
|
- .fdo.ci-fairy
|
|
needs: []
|
|
stage: test
|
|
rules:
|
|
- if: $CI_PIPELINE_SOURCE == 'merge_request_event'
|
|
script:
|
|
- ci-fairy check-merge-request --require-allow-collaboration --junit-xml=results.xml
|
|
artifacts:
|
|
when: on_failure
|
|
reports:
|
|
junit: results.xml
|
|
allow_failure: true
|
|
|
|
#
|
|
# Workflow rules needed due to:
|
|
# https://gitlab.freedesktop.org/freedesktop/freedesktop/-/issues/438
|
|
#
|
|
workflow:
|
|
rules:
|
|
- if: $CI_PIPELINE_SOURCE == 'merge_request_event'
|
|
- if: $CI_OPEN_MERGE_REQUESTS
|
|
when: never
|
|
- if: $CI_PIPELINE_SOURCE == 'push'
|