Edit

IABSD.fr/xenocara/lib/mesa/.gitlab-ci/build

Branch :

  • Show log

    Commit

  • Author : jsg
    Date : 2025-06-05 13:24:05
    Hash : 483f1485
    Message : Merge Mesa 25.0.7

  • gitlab-ci.yml
  • # Shared between windows and Linux
    .build-common:
      extends: .container+build-rules
      # Cancel job if a newer commit is pushed to the same branch
      interruptible: true
      variables:
        # Build jobs don't take more than 1-3 minutes. 5-8 min max on a fresh runner
        # without a populated ccache.
        # These jobs are never slow, either they finish within reasonable time or
        # something has gone wrong and the job will never terminate, so we should
        # instead timeout so that the retry mechanism can kick in.
        # A few exception are made, see overrides in the rest of this file.
        BUILD_JOB_TIMEOUT: 15m
        RUN_MESON_TESTS: "true"
      timeout: 1h
      # We don't want to download any previous job's artifacts
      dependencies: []
      artifacts:
        name: "${CI_PROJECT_NAME}_${CI_JOB_NAME}"
        when: always
        paths:
          - _build/meson-logs/*.txt
          - _build/meson-logs/strace
          - _build/.ninja_log
          - artifacts
    
    # Just Linux
    .build-linux:
      extends: .build-common
      variables:
        CCACHE_COMPILERCHECK: "content"
        CCACHE_COMPRESS: "true"
        CCACHE_DIR: /cache/mesa/ccache
      # Use ccache transparently, and print stats before/after
      before_script:
        - !reference [default, before_script]
        - |
          export PATH="/usr/lib/ccache:$PATH"
          export CCACHE_BASEDIR="$PWD"
          if test -x /usr/bin/ccache; then
            section_start ccache_before "ccache stats before build"
            ccache --show-stats
            section_end ccache_before
          fi
      after_script:
        - if test -x /usr/bin/ccache; then ccache --show-stats | grep "Hits:"; fi
        - !reference [default, after_script]
    
    .build-windows:
      extends:
        - .build-common
        - .windows-docker-tags
      cache:
        key: ${CI_JOB_NAME}
        paths:
          - subprojects/packagecache
    
    .meson-build:
      extends:
        - .build-linux
        - .use-debian/x86_64_build
      stage: build-only
      script:
        - &meson-build timeout --verbose ${BUILD_JOB_TIMEOUT_OVERRIDE:-$BUILD_JOB_TIMEOUT} .gitlab-ci/meson/build.sh
    
    
    # Make sure this list stays the same as all the jobs with
    # `stage: build-for-tests`, except for the windows job as
    # explained below.
    .build-for-tests-jobs:
      - job: debian-testing
        optional: true
      - job: debian-testing-asan
        optional: true
      - job: debian-testing-ubsan
        optional: true
      - job: debian-build-testing
        optional: true
      - job: debian-arm32
        optional: true
      - job: debian-arm32-asan
        optional: true
      - job: debian-arm64
        optional: true
      - job: debian-arm64-asan
        optional: true
      # Windows runners don't have more than one build right now, so there is
      # no need to wait on the "first one" to be done.
      # - job: windows-msvc
      #   optional: true
      - job: python-artifacts
        optional: true
    
    
    debian-testing:
      extends:
        - .meson-build
        - .ci-deqp-artifacts
      stage: build-for-tests
      variables:
        BUILD_JOB_TIMEOUT: 30m
        UNWIND: "enabled"
        DRI_LOADERS: >
          -D egl=enabled
          -D gbm=enabled
          -D glvnd=disabled
          -D glx=dri
          -D platforms=x11,wayland
        GALLIUM_ST: >
          -D gallium-nine=false
          -D gallium-rusticl=true
          -D gallium-va=enabled
        GALLIUM_DRIVERS: "llvmpipe,softpipe,virgl,radeonsi,zink,iris,svga"
        VULKAN_DRIVERS: "swrast,amd,intel,virtio"
        BUILDTYPE: "debugoptimized"
        EXTRA_OPTION: >
          -D intel-elk=false
          -D spirv-to-dxil=true
          -D tools=drm-shim
          -D valgrind=disabled
        S3_ARTIFACT_NAME: mesa-x86_64-default-${BUILDTYPE}
        RUN_MESON_TESTS: "false" # debian-build-testing already runs these
      script:
        - *meson-build
        - .gitlab-ci/prepare-artifacts.sh
      artifacts:
        reports:
          junit: artifacts/ci_scripts_report.xml
    
    debian-testing-asan:
      extends:
        - debian-testing
      stage: build-for-tests
      variables:
        BUILD_JOB_TIMEOUT: 30m
        VULKAN_DRIVERS: "swrast"
        GALLIUM_DRIVERS: "llvmpipe,softpipe"
        C_ARGS: >
          -Wno-error=stringop-truncation
        EXTRA_OPTION: >
          -D b_sanitize=address
          -D gallium-va=false
          -D gallium-nine=false
          -D gallium-rusticl=false
          -D mesa-clc=system
          -D tools=dlclose-skip
          -D valgrind=disabled
        S3_ARTIFACT_NAME: ""
        ARTIFACTS_DEBUG_SYMBOLS: 1
        RUN_MESON_TESTS: "false" # just too slow
        # Do a host build for mesa-clc (asan complains not being loaded as
        # the first library)
        HOST_BUILD_OPTIONS: >
          -D build-tests=false
          -D enable-glcpp-tests=false
          -D gallium-opencl=disabled
          -D gallium-rusticl=false
          -D gallium-nine=false
          -D gallium-drivers=
          -D glx=disabled
          -D install-mesa-clc=true
          -D mesa-clc=enabled
          -D platforms=
          -D video-codecs=
          -D vulkan-drivers=
    
    debian-testing-msan:
      # https://github.com/google/sanitizers/wiki/MemorySanitizerLibcxxHowTo
      # msan cannot fully work until it's used together with msan libc
      extends:
        - debian-clang
      # `needs:` inherited from debian-clang
      variables:
        BUILD_JOB_TIMEOUT: 30m
        # l_undef is incompatible with msan
        EXTRA_OPTION:
          -D b_sanitize=memory
          -D b_lundef=false
          -D mesa-clc=system
        S3_ARTIFACT_NAME: ""
        ARTIFACTS_DEBUG_SYMBOLS: 1
        # Don't run all the tests yet:
        # GLSL has some issues in sexpression reading.
        # gtest has issues in its test initialization.
        MESON_TEST_ARGS: "--suite glcpp --suite format"
        GALLIUM_DRIVERS: "freedreno,iris,nouveau,r300,r600,llvmpipe,softpipe,svga,v3d,vc4,virgl,etnaviv,panfrost,lima,zink,radeonsi,tegra,d3d12,crocus"
        VULKAN_DRIVERS: intel,amd,broadcom,virtio
        RUN_MESON_TESTS: "false" # just too slow
        # Do a host build for mesa-clc (msan complains about uninitialized
        # values in the LLVM libs)
        HOST_BUILD_OPTIONS: >
          -D build-tests=false
          -D enable-glcpp-tests=false
          -D gallium-opencl=disabled
          -D gallium-drivers=
          -D vulkan-drivers=
          -D video-codecs=
          -D glx=disabled
          -D platforms=
          -D mesa-clc=enabled
          -D install-mesa-clc=true
    
    debian-testing-ubsan:
      extends:
        - debian-testing
      stage: build-for-tests
      timeout: 40m
      variables:
        BUILD_JOB_TIMEOUT: 30m
        C_ARGS: >
          -Wno-error=stringop-overflow
          -Wno-error=stringop-truncation
        CPP_ARGS: >
          -Wno-error=array-bounds
        GALLIUM_DRIVERS: "swrast"
        VULKAN_DRIVERS: "swrast"
        EXTRA_OPTION: >
          -D b_sanitize=undefined
          -D mesa-clc=system
          -D gallium-rusticl=false
          -D gallium-va=false
          -D gallium-nine=false
        S3_ARTIFACT_NAME: ""
        ARTIFACTS_DEBUG_SYMBOLS: 1
        RUN_MESON_TESTS: "false" # just too slow
        HOST_BUILD_OPTIONS: >
          -D build-tests=false
          -D enable-glcpp-tests=false
          -D gallium-opencl=disabled
          -D gallium-rusticl=false
          -D gallium-drivers=
          -D vulkan-drivers=
          -D video-codecs=
          -D glx=disabled
          -D platforms=
          -D mesa-clc=enabled
          -D install-mesa-clc=true
    
    debian-build-testing:
      extends: .meson-build
      stage: build-for-tests
      variables:
        UNWIND: "enabled"
        DRI_LOADERS: >
          -D glx=dri
          -D gbm=enabled
          -D egl=enabled
          -D glvnd=disabled
          -D platforms=x11,wayland
        GALLIUM_ST: >
          -D gallium-extra-hud=true
          -D gallium-vdpau=enabled
          -D gallium-va=enabled
          -D gallium-xa=enabled
          -D gallium-nine=true
          -D gallium-rusticl=false
        GALLIUM_DRIVERS: "i915,iris,nouveau,r300,r600,freedreno,llvmpipe,softpipe,svga,v3d,vc4,virgl,etnaviv,panfrost,lima,zink,d3d12,asahi,crocus"
        VULKAN_DRIVERS: "intel_hasvk,imagination-experimental,microsoft-experimental,nouveau,swrast"
        BUILDTYPE: "debugoptimized"
        EXTRA_OPTION: >
          -D spirv-to-dxil=true
          -D osmesa=true
          -D tools=drm-shim,etnaviv,freedreno,glsl,intel,intel-ui,nir,nouveau,lima,panfrost,asahi
          -D perfetto=true
        S3_ARTIFACT_NAME: debian-build-testing
      script:
        - *meson-build
        - .gitlab-ci/prepare-artifacts.sh
    
    shader-db:
      stage: code-validation
      extends:
        - .use-debian/x86_64_build
      rules:
        - !reference [.never-post-merge-rules, rules]
        - !reference [.core-rules, rules]
        # Keep this list in sync with the drivers tested in run-shader-db.sh
        - !reference [.freedreno-common-rules, rules]
        - !reference [.intel-common-rules, rules]
        - !reference [.lima-rules, rules]
        - !reference [.v3d-rules, rules]
        - !reference [.vc4-rules, rules]
        - !reference [.nouveau-rules, rules]
        - !reference [.r300-rules, rules]
        # Also run if this job's own config or script changes
        - changes:
            - .gitlab-ci/build/gitlab-ci.yml
            - .gitlab-ci/run-shader-db.sh
      needs:
        - debian-build-testing
      variables:
        S3_ARTIFACT_NAME: debian-build-testing
      before_script:
        - !reference [.download_s3, before_script]
      script: |
        .gitlab-ci/run-shader-db.sh
      artifacts:
        paths:
          - shader-db
      timeout: 15m
      tags:
        - kvm  # FIXME: this is a hack, should not be needed
    
    # Test a release build with -Werror so new warnings don't sneak in.
    debian-release:
      extends: .meson-build
      needs:
        - !reference [.meson-build, needs]
        - !reference [.build-for-tests-jobs]
      variables:
        UNWIND: "enabled"
        C_ARGS: >
          -Wno-error=stringop-overread
        DRI_LOADERS: >
          -D glx=dri
          -D gbm=enabled
          -D egl=enabled
          -D glvnd=disabled
          -D platforms=x11,wayland
        GALLIUM_ST: >
          -D gallium-extra-hud=true
          -D gallium-vdpau=enabled
          -D gallium-va=enabled
          -D gallium-xa=enabled
          -D gallium-nine=false
          -D gallium-rusticl=false
          -D llvm=enabled
        GALLIUM_DRIVERS: "i915,iris,nouveau,r300,freedreno,llvmpipe,softpipe,svga,v3d,vc4,virgl,etnaviv,panfrost,lima,zink,d3d12,asahi,crocus"
        VULKAN_DRIVERS: "swrast,intel_hasvk,imagination-experimental,microsoft-experimental"
        EXTRA_OPTION: >
          -D spirv-to-dxil=true
          -D osmesa=true
          -D tools=all
          -D mesa-clc=enabled
          -D intel-rt=enabled
          -D imagination-srv=true
        BUILDTYPE: "release"
        S3_ARTIFACT_NAME: "mesa-x86_64-default-${BUILDTYPE}"
      script:
        - *meson-build
        - 'if [ -n "$MESA_CI_PERFORMANCE_ENABLED" ]; then .gitlab-ci/prepare-artifacts.sh; fi'
    
    alpine-build-testing:
      extends:
        - .meson-build
        - .use-alpine/x86_64_build
      needs:
        - !reference [.use-alpine/x86_64_build, needs]
        - !reference [.build-for-tests-jobs]
      variables:
        BUILD_JOB_TIMEOUT: 30m
        BUILDTYPE: "release"
        C_ARGS: >
          -Wno-error=cpp
          -Wno-error=array-bounds
          -Wno-error=stringop-overflow
          -Wno-error=stringop-overread
        DRI_LOADERS: >
          -D glx=disabled
          -D gbm=enabled
          -D egl=enabled
          -D glvnd=disabled
          -D platforms=wayland
        GALLIUM_DRIVERS: "crocus,etnaviv,freedreno,iris,lima,nouveau,panfrost,r300,r600,radeonsi,svga,llvmpipe,softpipe,tegra,v3d,vc4,virgl,zink"
        GALLIUM_ST: >
          -D gallium-extra-hud=true
          -D gallium-vdpau=disabled
          -D gallium-va=enabled
          -D gallium-xa=disabled
          -D gallium-nine=true
          -D gallium-rusticl=false
          -D gles1=disabled
          -D gles2=enabled
          -D llvm=enabled
          -D llvm-orcjit=true
          -D microsoft-clc=disabled
          -D shared-llvm=enabled
        UNWIND: "disabled"
        VULKAN_DRIVERS: "amd,asahi,broadcom,freedreno,intel,imagination-experimental"
    
    fedora-release:
      extends:
        - .meson-build
        - .use-fedora/x86_64_build
      needs:
        - !reference [.use-fedora/x86_64_build, needs]
        - !reference [.build-for-tests-jobs]
      variables:
        BUILDTYPE: "release"
        # array-bounds are pure non-LTO gcc buggy warning
        # maybe-uninitialized is misfiring in nir_lower_gs_intrinsics.c, and
        # a "maybe" warning should never be an error anyway.
        C_ARGS: >
          -Wno-error=stringop-overflow
          -Wno-error=stringop-overread
          -Wno-error=array-bounds
          -Wno-error=maybe-uninitialized
        CPP_ARGS: >
          -Wno-error=dangling-reference
          -Wno-error=overloaded-virtual
        DRI_LOADERS: >
          -D glx=dri
          -D gbm=enabled
          -D egl=enabled
          -D glvnd=enabled
          -D platforms=x11,wayland
        EXTRA_OPTION: >
          -D osmesa=true
          -D tools=drm-shim,etnaviv,freedreno,glsl,intel,nir,nouveau,lima,panfrost,imagination
          -D vulkan-layers=device-select,overlay
          -D intel-rt=enabled
          -D imagination-srv=true
          -D teflon=true
        GALLIUM_DRIVERS: "crocus,etnaviv,freedreno,i915,iris,lima,nouveau,panfrost,r300,r600,radeonsi,svga,llvmpipe,softpipe,tegra,v3d,vc4,virgl,zink"
        GALLIUM_ST: >
          -D gallium-extra-hud=true
          -D gallium-vdpau=enabled
          -D gallium-va=enabled
          -D gallium-xa=enabled
          -D gallium-nine=false
          -D gallium-rusticl=true
          -D gles1=disabled
          -D gles2=enabled
          -D llvm=enabled
          -D microsoft-clc=disabled
          -D shared-llvm=enabled
        UNWIND: "disabled"
        VULKAN_DRIVERS: "amd,asahi,broadcom,freedreno,imagination-experimental,intel,intel_hasvk"
    
    debian-android:
      extends:
        - .android-variables
        - .meson-cross
        - .use-debian/android_build
        - .ci-deqp-artifacts
      needs:
        - !reference [.use-debian/android_build, needs]
        - !reference [.build-for-tests-jobs]
      variables:
        BUILDTYPE: debug
        UNWIND: "disabled"
        C_ARGS: >
          -Wno-error=asm-operand-widths
          -Wno-error=constant-conversion
          -Wno-error=enum-conversion
          -Wno-error=initializer-overrides
          -Wno-error=sometimes-uninitialized
        CPP_ARGS: >
          -Wno-error=c99-designator
          -Wno-error=unused-variable
          -Wno-error=unused-but-set-variable
          -Wno-error=self-assign
        DRI_LOADERS: >
          -D glx=disabled
          -D gbm=disabled
          -D egl=enabled
          -D glvnd=disabled
          -D platforms=android
        FORCE_FALLBACK_FOR: llvm
        EXTRA_OPTION: >
          -D android-stub=true
          -D platform-sdk-version=${ANDROID_SDK_VERSION}
          -D cpp_rtti=false
          -D valgrind=disabled
          -D android-libbacktrace=disabled
          -D mesa-clc=system
        GALLIUM_ST: >
          -D gallium-vdpau=disabled
          -D gallium-va=disabled
          -D gallium-xa=disabled
          -D gallium-nine=false
          -D gallium-rusticl=false
        PKG_CONFIG_LIBDIR: "/disable/non/android/system/pc/files"
        HOST_BUILD_OPTIONS: >
          -D build-tests=false
          -D enable-glcpp-tests=false
          -D gallium-opencl=disabled
          -D gallium-drivers=
          -D vulkan-drivers=
          -D video-codecs=
          -D glx=disabled
          -D platforms=
          -D mesa-clc=enabled
          -D install-mesa-clc=true
        ARTIFACTS_DEBUG_SYMBOLS: 1
        S3_ARTIFACT_NAME: mesa-x86_64-android-${BUILDTYPE}
      script:
        - export CROSS=aarch64-linux-android
        - export GALLIUM_DRIVERS=etnaviv,freedreno,lima,panfrost,vc4,v3d
        - export VULKAN_DRIVERS=freedreno,broadcom,virtio
        - *meson-build
        # x86_64 build:
        # Can't do AMD drivers because they require LLVM, which is currently
        # problematic in our Android builds.
        - export CROSS=x86_64-linux-android
        - export GALLIUM_DRIVERS=iris,virgl,zink,softpipe,llvmpipe,swrast
        - export VULKAN_DRIVERS=intel,virtio,swrast
        - .gitlab-ci/create-llvm-meson-wrap-file.sh
        - *meson-build
        - .gitlab-ci/prepare-artifacts.sh
    
    .meson-cross:
      extends:
        - .meson-build
      variables:
        UNWIND: "disabled"
        DRI_LOADERS: >
          -D glx=dri
          -D gbm=enabled
          -D egl=enabled
          -D platforms=x11,wayland
          -D osmesa=false
        GALLIUM_ST: >
          -D gallium-vdpau=disabled
          -D gallium-va=disabled
          -D gallium-xa=disabled
          -D gallium-nine=false
    
    .meson-arm:
      extends:
        - .meson-cross
        - .use-debian/arm64_build
      needs:
        - debian/arm64_build
      variables:
        VULKAN_DRIVERS: "asahi,broadcom,freedreno"
        GALLIUM_DRIVERS: "etnaviv,freedreno,lima,nouveau,panfrost,llvmpipe,softpipe,tegra,v3d,vc4,zink"
        BUILDTYPE: "debugoptimized"
      tags:
        - aarch64
    
    debian-arm32:
      extends:
        - .meson-arm
        - .ci-deqp-artifacts
      stage: build-for-tests
      variables:
        CROSS: armhf
        DRI_LOADERS:
          -D glvnd=disabled
        # remove asahi & llvmpipe from the .meson-arm list because here we have llvm=disabled
        VULKAN_DRIVERS: "broadcom,freedreno"
        GALLIUM_DRIVERS: "etnaviv,freedreno,lima,nouveau,panfrost,softpipe,tegra,v3d,vc4,zink"
        EXTRA_OPTION: >
          -D llvm=disabled
          -D valgrind=disabled
          -D gallium-rusticl=false
        S3_ARTIFACT_NAME: mesa-arm32-default-${BUILDTYPE}
        # The strip command segfaults, failing to strip the binary and leaving
        # tempfiles in our artifacts.
        ARTIFACTS_DEBUG_SYMBOLS: 1
      script:
        - *meson-build
        - .gitlab-ci/prepare-artifacts.sh
    
    debian-arm32-asan:
      extends:
        - debian-arm32
      stage: build-for-tests
      variables:
        BUILD_JOB_TIMEOUT: 30m
        GALLIUM_DRIVERS: "etnaviv"
        VULKAN_DRIVERS: ""
        DRI_LOADERS:
          -D glvnd=disabled
        EXTRA_OPTION: >
          -D llvm=disabled
          -D b_sanitize=address
          -D valgrind=disabled
          -D tools=dlclose-skip
          -D gallium-rusticl=false
        ARTIFACTS_DEBUG_SYMBOLS: 1
        RUN_MESON_TESTS: "false" # just too slow
        S3_ARTIFACT_NAME: mesa-arm32-asan-${BUILDTYPE}
    
    debian-arm64:
      extends:
        - .meson-arm
        - .ci-deqp-artifacts
      stage: build-for-tests
      variables:
        C_ARGS: >
          -Wno-error=array-bounds
          -Wno-error=stringop-truncation
        GALLIUM_DRIVERS: "etnaviv,freedreno,lima,panfrost,v3d,vc4,zink"
        VULKAN_DRIVERS: "broadcom,freedreno,panfrost"
        DRI_LOADERS:
          -D glvnd=disabled
        EXTRA_OPTION: >
          -D valgrind=disabled
          -D imagination-srv=true
          -D freedreno-kmds=msm,virtio
          -D teflon=true
        GALLIUM_ST:
          -D gallium-rusticl=true
        RUN_MESON_TESTS: "false" # run by debian-arm64-build-testing
        S3_ARTIFACT_NAME: mesa-arm64-default-${BUILDTYPE}
      script:
        - *meson-build
        - .gitlab-ci/prepare-artifacts.sh
    
    debian-arm64-asan:
      extends:
        - debian-arm64
      stage: build-for-tests
      variables:
        BUILD_JOB_TIMEOUT: 30m
        VULKAN_DRIVERS: "broadcom,freedreno"
        GALLIUM_DRIVERS: "freedreno,vc4,v3d"
        DRI_LOADERS:
          -D glvnd=disabled
        EXTRA_OPTION: >
          -D b_sanitize=address
          -D valgrind=disabled
          -D tools=dlclose-skip
          -D gallium-rusticl=false
        ARTIFACTS_DEBUG_SYMBOLS: 1
        RUN_MESON_TESTS: "false" # just too slow
        S3_ARTIFACT_NAME: mesa-arm64-asan-${BUILDTYPE}
    
    debian-arm64-ubsan:
      extends:
        - debian-arm64
      stage: build-for-tests
      variables:
        BUILD_JOB_TIMEOUT: 30m
        VULKAN_DRIVERS: "broadcom"
        GALLIUM_DRIVERS: "v3d,vc4"
        C_ARGS: >
          -Wno-error=array-bounds
          -Wno-error=stringop-overflow
          -Wno-error=stringop-truncation
        CPP_ARGS: >
          -Wno-error=array-bounds
          -fno-var-tracking-assignments
        DRI_LOADERS:
          -D glvnd=disabled
        EXTRA_OPTION: >
          -D b_sanitize=undefined
          -D gallium-rusticl=false
        ARTIFACTS_DEBUG_SYMBOLS: 1
        RUN_MESON_TESTS: "false" # just too slow
        S3_ARTIFACT_NAME: mesa-arm64-ubsan-${BUILDTYPE}
    
    debian-arm64-build-test:
      extends:
        - .meson-arm
        - .ci-deqp-artifacts
      needs:
        - !reference [.meson-arm, needs]
        - !reference [.build-for-tests-jobs]
      variables:
        VULKAN_DRIVERS: "amd,asahi,imagination-experimental,nouveau"
        DRI_LOADERS:
          -D glvnd=disabled
        EXTRA_OPTION: >
          -D tools=panfrost,imagination
          -D perfetto=true
    
    debian-arm64-release:
      extends:
        - debian-arm64
      stage: build-only
      needs:
        - !reference [debian-arm64, needs]
        - !reference [.build-for-tests-jobs]
      variables:
        BUILDTYPE: release
        S3_ARTIFACT_NAME: mesa-arm64-default-${BUILDTYPE}
        C_ARGS: >
          -Wno-error=array-bounds
          -Wno-error=stringop-truncation
          -Wno-error=stringop-overread
      script:
        - *meson-build
        - 'if [ -n "$MESA_CI_PERFORMANCE_ENABLED" ]; then .gitlab-ci/prepare-artifacts.sh; fi'
    
    debian-no-libdrm:
      extends:
        - .meson-arm
      stage: build-only
      needs:
        - !reference [.meson-arm, needs]
        - !reference [.build-for-tests-jobs]
      variables:
        VULKAN_DRIVERS: freedreno
        GALLIUM_DRIVERS: "zink,llvmpipe"
        BUILDTYPE: release
        C_ARGS: >
          -Wno-error=array-bounds
          -Wno-error=stringop-truncation
          -Wno-error=stringop-overread
        EXTRA_OPTION: >
          -D freedreno-kmds=kgsl
          -D glx=disabled
          -D gbm=disabled
          -D egl=disabled
    
    debian-clang:
      extends: .meson-build
      needs:
        - !reference [.meson-build, needs]
        - !reference [.build-for-tests-jobs]
      variables:
        BUILDTYPE: debug
        UNWIND: "enabled"
        C_ARGS: >
          -Wno-error=constant-conversion
          -Wno-error=enum-conversion
          -Wno-error=initializer-overrides
          -Wno-error=sometimes-uninitialized
          -Werror=misleading-indentation
        CPP_ARGS: >
          -Wno-error=c99-designator
          -Wno-error=overloaded-virtual
          -Wno-error=tautological-constant-out-of-range-compare
          -Wno-error=unused-private-field
          -Wno-error=vla-cxx-extension
        DRI_LOADERS: >
          -D glx=dri
          -D gbm=enabled
          -D egl=enabled
          -D glvnd=enabled
          -D platforms=x11,wayland
        GALLIUM_ST: >
          -D gallium-extra-hud=true
          -D gallium-vdpau=enabled
          -D gallium-va=enabled
          -D gallium-xa=enabled
          -D gallium-nine=true
          -D gles1=enabled
          -D gles2=enabled
          -D llvm=enabled
          -D microsoft-clc=disabled
          -D shared-llvm=enabled
          -D shared-glapi=enabled
        GALLIUM_DRIVERS: "iris,nouveau,r300,r600,freedreno,llvmpipe,softpipe,svga,v3d,vc4,virgl,etnaviv,panfrost,lima,zink,radeonsi,tegra,d3d12,crocus,i915,asahi"
        VULKAN_DRIVERS: intel,amd,freedreno,broadcom,virtio,swrast,panfrost,imagination-experimental,microsoft-experimental,nouveau
        EXTRA_OPTION:
          -D spirv-to-dxil=true
          -D osmesa=true
          -D imagination-srv=true
          -D tools=drm-shim,etnaviv,freedreno,glsl,intel,intel-ui,nir,nouveau,lima,panfrost,asahi,imagination
          -D vulkan-layers=device-select,overlay
          -D build-aco-tests=true
          -D mesa-clc=enabled
          -D intel-rt=enabled
          -D imagination-srv=true
          -D teflon=true
        CC: clang-${LLVM_VERSION}
        CXX: clang++-${LLVM_VERSION}
    
    debian-clang-release:
      extends: debian-clang
      # `needs:` inherited from debian-clang
      variables:
        BUILD_JOB_TIMEOUT: 30m
        BUILDTYPE: "release"
        DRI_LOADERS: >
          -D glx=xlib
          -D platforms=x11,wayland
        GALLIUM_ST: >
          -D gallium-extra-hud=true
          -D gallium-vdpau=enabled
          -D gallium-va=enabled
          -D gallium-xa=enabled
          -D gallium-nine=true
          -D gles1=disabled
          -D gles2=disabled
          -D llvm=enabled
          -D microsoft-clc=disabled
          -D shared-llvm=enabled
          -D shared-glapi=disabled
    
    windows-msvc:
      extends:
        - .build-windows
        - .use-windows_build_msvc
        - .windows-build-rules
      stage: build-for-tests
      script:
        - pwsh -ExecutionPolicy RemoteSigned .\.gitlab-ci\windows\mesa_build.ps1
      artifacts:
        paths:
          - _build/meson-logs/*.txt
          - _install/
    
    debian-vulkan:
      extends: .meson-build
      needs:
        - !reference [.meson-build, needs]
        - !reference [.build-for-tests-jobs]
      variables:
        BUILD_JOB_TIMEOUT: 30m
        BUILDTYPE: debug
        UNWIND: "disabled"
        DRI_LOADERS: >
          -D glx=disabled
          -D gbm=disabled
          -D egl=disabled
          -D opengl=false
          -D gles1=disabled
          -D gles2=disabled
          -D glvnd=disabled
          -D platforms=x11,wayland
          -D osmesa=false
        GALLIUM_ST: >
          -D gallium-vdpau=disabled
          -D gallium-va=disabled
          -D gallium-xa=disabled
          -D gallium-nine=false
          -D gallium-rusticl=false
          -D b_sanitize=undefined
          -D c_args=-fno-sanitize-recover=all
          -D cpp_args=-fno-sanitize-recover=all
        UBSAN_OPTIONS: "print_stacktrace=1"
        VULKAN_DRIVERS: amd,asahi,broadcom,freedreno,intel,intel_hasvk,panfrost,virtio,imagination-experimental,microsoft-experimental,nouveau
        EXTRA_OPTION: >
          -D vulkan-layers=device-select,overlay
          -D build-aco-tests=true
          -D intel-rt=disabled
          -D imagination-srv=true
    
    debian-x86_32:
      extends:
        - .meson-cross
        - .use-debian/x86_32_build
      needs:
        - !reference [.use-debian/x86_32_build, needs]
        - !reference [.build-for-tests-jobs]
      variables:
        BUILDTYPE: debug
        CROSS: i386
        VULKAN_DRIVERS: intel,amd,swrast,virtio,panfrost
        GALLIUM_DRIVERS: "iris,nouveau,r300,r600,radeonsi,llvmpipe,softpipe,virgl,zink,crocus,d3d12,panfrost"
        DRI_LOADERS:
          -D glvnd=disabled
        EXTRA_OPTION: >
          -D vulkan-layers=device-select,overlay
          -D mesa-clc=system
        C_LINK_ARGS: >
          -Wl,--no-warn-rwx-segments
        CPP_LINK_ARGS: >
          -Wl,--no-warn-rwx-segments
        HOST_BUILD_OPTIONS: >
          -D build-tests=false
          -D enable-glcpp-tests=false
          -D gallium-opencl=disabled
          -D gallium-drivers=
          -D vulkan-drivers=
          -D video-codecs=
          -D glx=disabled
          -D platforms=
          -D mesa-clc=enabled
          -D install-mesa-clc=true
    
    # While s390 is dead, s390x is very much alive, and one of the last major
    # big-endian platforms, so it provides useful coverage.
    # In case of issues with this job, contact @ajax
    debian-s390x:
      extends:
        - .meson-cross
        - .use-debian/s390x_build
      needs:
        - !reference [.use-debian/s390x_build, needs]
        - !reference [.build-for-tests-jobs]
      tags:
        - kvm
      variables:
        BUILDTYPE: debug
        CROSS: s390x
        GALLIUM_DRIVERS: "llvmpipe,virgl,zink"
        VULKAN_DRIVERS: "swrast,virtio"
        DRI_LOADERS:
          -D glvnd=disabled
    
    debian-ppc64el:
      extends:
        - .meson-cross
        - .use-debian/ppc64el_build
      needs:
        - !reference [.use-debian/ppc64el_build, needs]
        - !reference [.build-for-tests-jobs]
      variables:
        BUILDTYPE: debug
        CROSS: ppc64el
        GALLIUM_DRIVERS: "nouveau,radeonsi,llvmpipe,softpipe,virgl,zink"
        VULKAN_DRIVERS: "amd,swrast"
        DRI_LOADERS:
          -D glvnd=disabled
    
    # This job emits our scripts into artifacts so they can be reused for
    # job submission to hardware devices.
    python-artifacts:
      stage: build-for-tests
      extends:
        - .use-debian/x86_64_pyutils
        - .build-common
      variables:
        GIT_STRATEGY: fetch
        S3_ARTIFACT_NAME: mesa-python-ci-artifacts
      timeout: 10m
      script:
        - .gitlab-ci/prepare-artifacts-python.sh
      tags:
        - placeholder-job