mirror of
https://gitlab.freedesktop.org/xorg/xserver.git
synced 2025-12-20 05:50:04 +01:00
We have too many options to run an exhaustive matrix of the combinations, but this should at least help us catch code that won't compile in many of the ifdef paths we don't go down in the default configs. Signed-off-by: Alan Coopersmith <alan.coopersmith@oracle.com> Part-of: <https://gitlab.freedesktop.org/xorg/xserver/-/merge_requests/2056>
364 lines
11 KiB
YAML
364 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-enable-options:
|
|
extends: meson
|
|
variables:
|
|
MESON_EXTRA_ARGS: --auto-features=enabled -Dlisten_tcp=true -Dsuid_wrapper=true -Dxf86bigfont=true -Dxcsecurity=true -Dxpbproxy=true -Ddri1=true -Ddri2=true -Ddri3=true -Dlibunwind=true ${MESON_DDX_BUILD_ARGS}
|
|
|
|
meson-disable-options:
|
|
extends: meson
|
|
variables:
|
|
MESON_EXTRA_ARGS: --auto-features=disabled -Dglamor=false -Dglx=false -Dxdmcp=false -Dxdm-auth-1=false -Dint10=false -Dpciaccess=false -Dudev=false -Dudev_kms=false -Dvgahw=false -Dxace=false -Dxcsecurity=false -Dxinerama=false -Dxv=false -Dxvmc=false -Ddrm=false -Ddri1=false -Ddri2=false -Ddri3=false ${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'
|