# 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 c5626190ec14b475271288dda7a7dae8dbe0cd76 # 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: '2024-09-13-xvmc' XORG_FREEBSD_VERSION: '14.0' XORG_FREEBSD_EXEC: '' XORG_FREEBSD_TAG: '2024-09-10-xvmc' 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: 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 libxvmc' 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 -Dxv=true -Dxvmc=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 variables: XTEST_DIR: /root/xts PIGLIT_DIR: /root/piglit LP_NUM_THREADS: 0 meson-noglamor: extends: meson variables: MESON_EXTRA_ARGS: > -Dglamor=false xwayland-nolibdecor: extends: meson variables: MESON_EXTRA_ARGS: > -Dlibdecor=false -Dxorg=false -Dxephyr=false -Dxvfb=false -Dxnest=false 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 -Dxvmc=true -Dxv=true freebsd: stage: build-and-test extends: - .xorg-image@freebsd variables: MESON_ARGS: -Dglx=false -Dglamor=false -Dudev=false -Dudev_kms=false -Dxvmc=true -Dxv=true 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/ 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 DESTDIR: 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-elographics SHA: master - 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-joystick SHA: master - 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-input-vmmouse SHA: master - REPO: https://gitlab.freedesktop.org/xorg/driver/xf86-input-void SHA: master - 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-apm SHA: master - REPO: https://gitlab.freedesktop.org/xorg/driver/xf86-video-ark SHA: master - REPO: https://gitlab.freedesktop.org/xorg/driver/xf86-video-armsoc SHA: master - REPO: https://gitlab.freedesktop.org/xorg/driver/xf86-video-ast SHA: master - 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-chips SHA: master - REPO: https://gitlab.freedesktop.org/xorg/driver/xf86-video-cirrus SHA: master - REPO: https://gitlab.freedesktop.org/xorg/driver/xf86-video-dummy SHA: master - REPO: https://gitlab.freedesktop.org/xorg/driver/xf86-video-fbdev SHA: master - REPO: https://gitlab.freedesktop.org/xorg/driver/xf86-video-i128 SHA: master - REPO: https://gitlab.freedesktop.org/xorg/driver/xf86-video-i740 SHA: master - REPO: https://gitlab.freedesktop.org/xorg/driver/xf86-video-mach64 SHA: master - REPO: https://gitlab.freedesktop.org/xorg/driver/xf86-video-mga SHA: master - REPO: https://gitlab.freedesktop.org/xorg/driver/xf86-video-neomagic SHA: master - REPO: https://gitlab.freedesktop.org/xorg/driver/xf86-video-nested SHA: master - REPO: https://gitlab.freedesktop.org/xorg/driver/xf86-video-nouveau SHA: master - REPO: https://gitlab.freedesktop.org/xorg/driver/xf86-video-nv SHA: master - REPO: https://gitlab.freedesktop.org/xorg/driver/xf86-video-qxl SHA: master - REPO: https://gitlab.freedesktop.org/xorg/driver/xf86-video-r128 SHA: master - REPO: https://gitlab.freedesktop.org/xorg/driver/xf86-video-rendition SHA: master - REPO: https://gitlab.freedesktop.org/xorg/driver/xf86-video-s3virge SHA: master - REPO: https://gitlab.freedesktop.org/xorg/driver/xf86-video-savage SHA: master - REPO: https://gitlab.freedesktop.org/xorg/driver/xf86-video-siliconmotion SHA: master - REPO: https://gitlab.freedesktop.org/xorg/driver/xf86-video-sis SHA: master - REPO: https://gitlab.freedesktop.org/xorg/driver/xf86-video-sisusb SHA: master - REPO: https://gitlab.freedesktop.org/xorg/driver/xf86-video-suncg14 SHA: master - REPO: https://gitlab.freedesktop.org/xorg/driver/xf86-video-suncg3 SHA: master - REPO: https://gitlab.freedesktop.org/xorg/driver/xf86-video-suncg6 SHA: master - REPO: https://gitlab.freedesktop.org/xorg/driver/xf86-video-sunffb SHA: master - REPO: https://gitlab.freedesktop.org/xorg/driver/xf86-video-sunleo SHA: master - REPO: https://gitlab.freedesktop.org/xorg/driver/xf86-video-suntcx SHA: master - REPO: https://gitlab.freedesktop.org/xorg/driver/xf86-video-tdfx SHA: master - REPO: https://gitlab.freedesktop.org/xorg/driver/xf86-video-trident SHA: master - REPO: https://gitlab.freedesktop.org/xorg/driver/xf86-video-v4l SHA: master - REPO: https://gitlab.freedesktop.org/xorg/driver/xf86-video-vbox SHA: master - 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 - REPO: https://gitlab.freedesktop.org/xorg/driver/xf86-video-voodoo SHA: master - REPO: https://gitlab.freedesktop.org/xorg/driver/xf86-video-xgi SHA: master script: # Install the server first - .gitlab-ci/meson-build.sh --skip-test --run-install - unset MESON_EXTRA_ARGS - DRIVER=$(basename $REPO) - git clone "$REPO" "$DRIVER" - git -C "$DRIVER" checkout "$SHA" - | if [[ -e "$DRIVER/meson.build" ]]; then .gitlab-ci/meson-build.sh -C "$DRIVER" --skip-test else pushd "$DRIVER" || exit 1 ./autogen.sh && make fi needs: - "meson" 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'