Uprev mesa to adapt to the latest changes in mesa ci
which includes new container jobs and stages. Also update
lava-submit script to adapt to the recent changes in mesa
to use LAVA rootfs overlays.
Signed-off-by: Vignesh Raman <vignesh.raman@collabora.com>
---
drivers/gpu/drm/ci/build.sh | 2 +-
drivers/gpu/drm/ci/build.yml | 103 +++++++++++++++++++++++++++++-
drivers/gpu/drm/ci/container.yml | 22 +++----
drivers/gpu/drm/ci/gitlab-ci.yml | 71 ++++++++++++++------
drivers/gpu/drm/ci/image-tags.yml | 11 +++-
drivers/gpu/drm/ci/lava-submit.sh | 99 ++++++++++++++++++++--------
drivers/gpu/drm/ci/test.yml | 13 ++--
7 files changed, 255 insertions(+), 66 deletions(-)
diff --git a/drivers/gpu/drm/ci/build.sh b/drivers/gpu/drm/ci/build.sh
index 139b81db6312..19fe01257ab9 100644
--- a/drivers/gpu/drm/ci/build.sh
+++ b/drivers/gpu/drm/ci/build.sh
@@ -132,7 +132,7 @@ fi
# Pass needed files to the test stage
mkdir -p install
cp -rfv .gitlab-ci/* install/.
-cp -rfv ci/* install/.
+cp -rfv bin/ci/* install/.
cp -rfv install/common install/ci-common
cp -rfv drivers/gpu/drm/ci/* install/.
diff --git a/drivers/gpu/drm/ci/build.yml b/drivers/gpu/drm/ci/build.yml
index 9c198239033d..771ecfc5008d 100644
--- a/drivers/gpu/drm/ci/build.yml
+++ b/drivers/gpu/drm/ci/build.yml
@@ -2,7 +2,7 @@
extends:
- .build-rules
- .container+build-rules
- stage: build
+ stage: build-only
artifacts:
paths:
- artifacts
@@ -110,3 +110,104 @@ build-nodebugfs:arm64:
build:x86_64:
extends: .build:x86_64
+
+# Disable build jobs that we won't use
+alpine-build-testing:
+ rules:
+ - when: never
+
+debian-android:
+ rules:
+ - when: never
+
+debian-arm32:
+ rules:
+ - when: never
+
+debian-arm32-asan:
+ rules:
+ - when: never
+
+debian-arm64:
+ rules:
+ - when: never
+
+debian-arm64-asan:
+ rules:
+ - when: never
+
+debian-arm64-build-test:
+ rules:
+ - when: never
+
+debian-arm64-release:
+ rules:
+ - when: never
+
+debian-build-testing:
+ rules:
+ - when: never
+
+debian-clang:
+ rules:
+ - when: never
+
+debian-clang-release:
+ rules:
+ - when: never
+
+debian-no-libdrm:
+ rules:
+ - when: never
+
+debian-ppc64el:
+ rules:
+ - when: never
+
+debian-release:
+ rules:
+ - when: never
+
+debian-s390x:
+ rules:
+ - when: never
+
+debian-testing:
+ rules:
+ - when: never
+
+debian-testing-asan:
+ rules:
+ - when: never
+
+debian-testing-msan:
+ rules:
+ - when: never
+
+debian-vulkan:
+ rules:
+ - when: never
+
+debian-x86_32:
+ rules:
+ - when: never
+
+fedora-release:
+ rules:
+ - when: never
+
+rustfmt:
+ rules:
+ - when: never
+
+shader-db:
+ rules:
+ - when: never
+
+windows-msvc:
+ rules:
+ - when: never
+
+yaml-toml-shell-test:
+ rules:
+ - when: never
diff --git a/drivers/gpu/drm/ci/container.yml b/drivers/gpu/drm/ci/container.yml
index 2a94f54ce4cf..07dc13ff865d 100644
--- a/drivers/gpu/drm/ci/container.yml
+++ b/drivers/gpu/drm/ci/container.yml
@@ -24,7 +24,7 @@ alpine/x86_64_build:
rules:
- when: never
-debian/x86_64_test-vk:
+debian/arm64_test-gl:
rules:
- when: never
@@ -32,7 +32,15 @@ debian/arm64_test-vk:
rules:
- when: never
-debian/arm64_test-gl:
+debian/ppc64el_build:
+ rules:
+ - when: never
+
+debian/s390x_build:
+ rules:
+ - when: never
+
+debian/x86_64_test-vk:
rules:
- when: never
@@ -56,14 +64,6 @@ windows_test_msvc:
rules:
- when: never
-.debian/x86_64_build-mingw:
- rules:
- - when: never
-
-rustfmt:
- rules:
- - when: never
-
windows_msvc:
rules:
- - when: never
\ No newline at end of file
+ - when: never
diff --git a/drivers/gpu/drm/ci/gitlab-ci.yml b/drivers/gpu/drm/ci/gitlab-ci.yml
index 90bde9f00cc3..86d8c5d8ce3b 100644
--- a/drivers/gpu/drm/ci/gitlab-ci.yml
+++ b/drivers/gpu/drm/ci/gitlab-ci.yml
@@ -1,6 +1,6 @@
variables:
DRM_CI_PROJECT_PATH: &drm-ci-project-path mesa/mesa
- DRM_CI_COMMIT_SHA: &drm-ci-commit-sha c6a9a9c3bce90923f7700219354e0b6e5a3c9ba6
+ DRM_CI_COMMIT_SHA: &drm-ci-commit-sha e1a8fd80d411a5ff8fa19ffcf09516ac5099a25c
UPSTREAM_REPO: https://gitlab.freedesktop.org/drm/kernel.git
TARGET_BRANCH: drm-next
@@ -31,11 +31,7 @@ variables:
PIPELINE_ARTIFACTS_BASE: ${S3_HOST}/${S3_ARTIFACTS_BUCKET}/${CI_PROJECT_PATH}/${CI_PIPELINE_ID}
# per-job artifact storage on MinIO
JOB_ARTIFACTS_BASE: ${PIPELINE_ARTIFACTS_BASE}/${CI_JOB_ID}
- # default kernel for rootfs before injecting the current kernel tree
- KERNEL_REPO: "gfx-ci/linux"
- KERNEL_TAG: "v6.6.21-mesa-f8ea"
KERNEL_IMAGE_BASE: https://${S3_HOST}/${S3_KERNEL_BUCKET}/${KERNEL_REPO}/${KERNEL_TAG}
- PKG_REPO_REV: "3cc12a2a"
LAVA_TAGS: subset-1-gfx
LAVA_JOB_PRIORITY: 30
ARTIFACTS_BASE_URL: https://${CI_PROJECT_ROOT_NAMESPACE}.${CI_PAGES_DOMAIN}/-/${CI_PROJECT_NAME}/-/jobs/${CI_JOB_ID}/artifacts
@@ -59,7 +55,7 @@ default:
- cd $CI_PROJECT_DIR
- curl --output - $DRM_CI_PROJECT_URL/-/archive/$DRM_CI_COMMIT_SHA/mesa-$DRM_CI_COMMIT_SHA.tar.gz | tar -xz
- mv mesa-$DRM_CI_COMMIT_SHA/.gitlab-ci* .
- - mv mesa-$DRM_CI_COMMIT_SHA/bin/ci .
+ - mv mesa-$DRM_CI_COMMIT_SHA/bin .
- rm -rf mesa-$DRM_CI_COMMIT_SHA/
- echo -e "\e[0Ksection_end:$(date +%s):drm_ci_download_section\r\e[0K"
@@ -85,6 +81,7 @@ include:
- project: *drm-ci-project-path
ref: *drm-ci-commit-sha
file:
+ - '/.gitlab-ci/build/gitlab-ci.yml'
- '/.gitlab-ci/container/gitlab-ci.yml'
- '/.gitlab-ci/farm-rules.yml'
- '/.gitlab-ci/lava/lava-gitlab-ci.yml'
@@ -115,9 +112,10 @@ include:
stages:
- sanity
- container
- - code-validation
- git-archive
- - build
+ - build-for-tests
+ - build-only
+ - code-validation
- amdgpu
- i915
- mediatek
@@ -264,30 +262,63 @@ sanity:
rules:
- if: *is-pre-merge
when: on_success
- # Other cases default to never
+ - when: never
variables:
GIT_STRATEGY: none
script:
# ci-fairy check-commits --junit-xml=check-commits.xml
- ci-fairy check-merge-request --require-allow-collaboration --junit-xml=check-merge-request.xml
+ - |
+ set -eu
+ image_tags=(
+ ALPINE_X86_64_LAVA_SSH_TAG
+ CONTAINER_TAG
+ DEBIAN_BASE_TAG
+ DEBIAN_BUILD_TAG
+ DEBIAN_PYUTILS_TAG
+ DEBIAN_TEST_GL_TAG
+ KERNEL_ROOTFS_TAG
+ KERNEL_TAG
+ PKG_REPO_REV
+ )
+ for var in "${image_tags[@]}"
+ do
+ if [ "$(echo -n "${!var}" | wc -c)" -gt 20 ]
+ then
+ echo "$var is too long; please make sure it is at most 20 chars."
+ exit 1
+ fi
+ done
artifacts:
when: on_failure
reports:
junit: check-*.xml
+ tags:
+ - placeholder-job
-# Rules for tests that should not block merging, but should be available to
-# optionally run with the "play" button in the UI in pre-merge non-marge
-# pipelines. This should appear in "extends:" after any includes of
-# test-source-dep.yml rules, so that these rules replace those.
-.test-manual-mr:
+
+mr-label-maker-test:
+ extends:
+ - .fdo.ci-fairy
+ stage: sanity
rules:
- - !reference [.no_scheduled_pipelines-rules, rules]
- - if: *is-forked-branch-or-pre-merge-not-for-marge
- when: manual
+ - !reference [.mr-label-maker-rules, rules]
variables:
- JOB_TIMEOUT: 80
-
+ GIT_STRATEGY: fetch
+ timeout: 10m
+ script:
+ - set -eu
+ - python3 -m venv .venv
+ - source .venv/bin/activate
+ - pip install git+https://gitlab.freedesktop.org/freedesktop/mr-label-maker
+ - mr-label-maker --dry-run --mr $CI_MERGE_REQUEST_IID
# Jobs that need to pass before spending hardware resources on further testing
.required-for-hardware-jobs:
- needs: []
+ needs:
+ - job: clang-format
+ optional: true
+ - job: rustfmt
+ optional: true
+ - job: toml-lint
+ optional: true
diff --git a/drivers/gpu/drm/ci/image-tags.yml b/drivers/gpu/drm/ci/image-tags.yml
index 8d8b9e71852e..528ef44285bb 100644
--- a/drivers/gpu/drm/ci/image-tags.yml
+++ b/drivers/gpu/drm/ci/image-tags.yml
@@ -1,5 +1,5 @@
variables:
- CONTAINER_TAG: "2024-09-09-uprevs"
+ CONTAINER_TAG: "20241127-mesa-uprev"
DEBIAN_X86_64_BUILD_BASE_IMAGE: "debian/x86_64_build-base"
DEBIAN_BASE_TAG: "${CONTAINER_TAG}"
@@ -7,9 +7,16 @@ variables:
DEBIAN_BUILD_TAG: "${CONTAINER_TAG}"
KERNEL_ROOTFS_TAG: "${CONTAINER_TAG}"
+ # default kernel for rootfs before injecting the current kernel tree
+ KERNEL_TAG: "v6.6.21-mesa-f8ea"
+ KERNEL_REPO: "gfx-ci/linux"
+ PKG_REPO_REV: "bca9635d"
DEBIAN_X86_64_TEST_BASE_IMAGE: "debian/x86_64_test-base"
DEBIAN_X86_64_TEST_IMAGE_GL_PATH: "debian/x86_64_test-gl"
DEBIAN_TEST_GL_TAG: "${CONTAINER_TAG}"
- ALPINE_X86_64_LAVA_SSH_TAG: "${CONTAINER_TAG}"
\ No newline at end of file
+ DEBIAN_PYUTILS_IMAGE: "debian/x86_64_pyutils"
+ DEBIAN_PYUTILS_TAG: "${CONTAINER_TAG}"
+
+ ALPINE_X86_64_LAVA_SSH_TAG: "${CONTAINER_TAG}"
diff --git a/drivers/gpu/drm/ci/lava-submit.sh b/drivers/gpu/drm/ci/lava-submit.sh
index 6add15083c78..a1404a2d8cee 100755
--- a/drivers/gpu/drm/ci/lava-submit.sh
+++ b/drivers/gpu/drm/ci/lava-submit.sh
@@ -1,58 +1,105 @@
-#!/bin/bash
+#!/usr/bin/env bash
# SPDX-License-Identifier: MIT
+# shellcheck disable=SC2086 # we want word splitting
+# shellcheck disable=SC1091 # paths only become valid at runtime
-set -e
-set -x
+# If we run in the fork (not from mesa or Marge-bot), reuse mainline kernel and rootfs, if exist.
+_check_artifact_path() {
+ _url="https://${1}/${2}"
+ if curl -s -o /dev/null -I -L -f --retry 4 --retry-delay 15 "${_url}"; then
+ echo -n "${_url}"
+ fi
+}
-# Try to use the kernel and rootfs built in mainline first, so we're more
-# likely to hit cache
-if curl -L --retry 4 -f --retry-all-errors --retry-delay 60 -s "https://${BASE_SYSTEM_MAINLINE_HOST_PATH}/done"; then
- BASE_SYSTEM_HOST_PATH="${BASE_SYSTEM_MAINLINE_HOST_PATH}"
-else
- BASE_SYSTEM_HOST_PATH="${BASE_SYSTEM_FORK_HOST_PATH}"
-fi
+get_path_to_artifact() {
+ _mainline_artifact="$(_check_artifact_path ${BASE_SYSTEM_MAINLINE_HOST_PATH} ${1})"
+ if [ -n "${_mainline_artifact}" ]; then
+ echo -n "${_mainline_artifact}"
+ return
+ fi
+ _fork_artifact="$(_check_artifact_path ${BASE_SYSTEM_FORK_HOST_PATH} ${1})"
+ if [ -n "${_fork_artifact}" ]; then
+ echo -n "${_fork_artifact}"
+ return
+ fi
+ set +x
+ error "Sorry, I couldn't find a viable built path for ${1} in either mainline or a fork." >&2
+ echo "" >&2
+ echo "If you're working on CI, this probably means that you're missing a dependency:" >&2
+ echo "this job ran ahead of the job which was supposed to upload that artifact." >&2
+ echo "" >&2
+ echo "If you aren't working on CI, please ping @mesa/ci-helpers to see if we can help." >&2
+ echo "" >&2
+ echo "This job is going to fail, because I can't find the resources I need. Sorry." >&2
+ set -x
+ exit 1
+}
+
+. "${SCRIPTS_DIR}/setup-test-env.sh"
+
+section_start prepare_rootfs "Preparing root filesystem"
+
+set -ex
+
+section_switch rootfs "Assembling root filesystem"
+ROOTFS_URL="$(get_path_to_artifact lava-rootfs.tar.zst)"
+[ $? != 1 ] || exit 1
rm -rf results
mkdir -p results/job-rootfs-overlay/
+artifacts/ci-common/generate-env.sh > results/job-rootfs-overlay/set-job-env-vars.sh
cp artifacts/ci-common/capture-devcoredump.sh results/job-rootfs-overlay/
cp artifacts/ci-common/init-*.sh results/job-rootfs-overlay/
cp artifacts/ci-common/intel-gpu-freq.sh results/job-rootfs-overlay/
+cp artifacts/ci-common/kdl.sh results/job-rootfs-overlay/
cp "$SCRIPTS_DIR"/setup-test-env.sh results/job-rootfs-overlay/
-# Prepare env vars for upload.
-section_start variables "Variables passed through:"
-KERNEL_IMAGE_BASE="https://${BASE_SYSTEM_HOST_PATH}" \
- artifacts/ci-common/generate-env.sh | tee results/job-rootfs-overlay/set-job-env-vars.sh
-section_end variables
-
tar zcf job-rootfs-overlay.tar.gz -C results/job-rootfs-overlay/ .
ci-fairy s3cp --token-file "${S3_JWT_FILE}" job-rootfs-overlay.tar.gz "https://${JOB_ROOTFS_OVERLAY_PATH}"
+# Prepare env vars for upload.
+section_switch variables "Environment variables passed through to device:"
+cat results/job-rootfs-overlay/set-job-env-vars.sh
+
+section_switch lava_submit "Submitting job for scheduling"
+
touch results/lava.log
tail -f results/lava.log &
-
PYTHONPATH=artifacts/ artifacts/lava/lava_job_submitter.py \
- submit \
+ --farm "${FARM}" \
+ --device-type "${DEVICE_TYPE}" \
+ --boot-method "${BOOT_METHOD}" \
+ --job-timeout-min ${JOB_TIMEOUT:-30} \
--dump-yaml \
--pipeline-info "$CI_JOB_NAME: $CI_PIPELINE_URL on $CI_COMMIT_REF_NAME ${CI_NODE_INDEX}/${CI_NODE_TOTAL}" \
- --rootfs-url-prefix "https://${BASE_SYSTEM_HOST_PATH}" \
+ --rootfs-url "${ROOTFS_URL}" \
--kernel-url-prefix "https://${PIPELINE_ARTIFACTS_BASE}/${DEBIAN_ARCH}" \
- --build-url "${FDO_HTTP_CACHE_URI:-}https://${PIPELINE_ARTIFACTS_BASE}/${DEBIAN_ARCH}/kernel-files.tar.zst" \
- --job-rootfs-overlay-url "${FDO_HTTP_CACHE_URI:-}https://${JOB_ROOTFS_OVERLAY_PATH}" \
- --job-timeout-min ${JOB_TIMEOUT:-80} \
+ --kernel-external "${EXTERNAL_KERNEL_TAG}" \
--first-stage-init artifacts/ci-common/init-stage1.sh \
- --ci-project-dir "${CI_PROJECT_DIR}" \
- --device-type "${DEVICE_TYPE}" \
- --farm "${FARM}" \
--dtb-filename "${DTB}" \
--jwt-file "${S3_JWT_FILE}" \
--kernel-image-name "${KERNEL_IMAGE_NAME}" \
--kernel-image-type "${KERNEL_IMAGE_TYPE}" \
- --boot-method "${BOOT_METHOD}" \
--visibility-group "${VISIBILITY_GROUP}" \
--lava-tags "${LAVA_TAGS}" \
--mesa-job-name "$CI_JOB_NAME" \
--structured-log-file "results/lava_job_detail.json" \
--ssh-client-image "${LAVA_SSH_CLIENT_IMAGE}" \
+ --project-name "${CI_PROJECT_NAME}" \
+ --starting-section "${CURRENT_SECTION}" \
+ --job-submitted-at "${CI_JOB_STARTED_AT}" \
+ - append-overlay \
+ --name=kernel-build \
+ --url="${FDO_HTTP_CACHE_URI:-}https://${PIPELINE_ARTIFACTS_BASE}/${DEBIAN_ARCH}/kernel-files.tar.zst" \
+ --compression=zstd \
+ --path="${CI_PROJECT_DIR}" \
+ --format=tar \
+ - append-overlay \
+ --name=job-overlay \
+ --url="https://${JOB_ROOTFS_OVERLAY_PATH}" \
+ --compression=gz \
+ --path="/" \
+ --format=tar \
+ - submit \
>> results/lava.log
diff --git a/drivers/gpu/drm/ci/test.yml b/drivers/gpu/drm/ci/test.yml
index f0ef60c8f56d..42a8e7f93714 100644
--- a/drivers/gpu/drm/ci/test.yml
+++ b/drivers/gpu/drm/ci/test.yml
@@ -1,21 +1,21 @@
.test-rules:
rules:
- - if: '$FD_FARM == "offline" && $RUNNER_TAG =~ /^google-freedreno-/'
- when: never
- - if: '$COLLABORA_FARM == "offline" && $RUNNER_TAG =~ /^mesa-ci-x86-64-lava-/'
- when: never
- !reference [.no_scheduled_pipelines-rules, rules]
+ - !reference [.collabora-farm-rules, rules]
+ - !reference [.google-freedreno-farm-rules, rules]
- when: on_success
.lava-test:
extends:
- .test-rules
+ - .build-rules
+ - .container+build-rules
timeout: "1h30m"
script:
# Note: Build dir (and thus install) may be dirty due to GIT_STRATEGY
- rm -rf install
- tar -xf artifacts/install.tar
- - mv install/* artifacts/.
+ - mv -n install/* artifacts/.
# Override it with our lava-submit.sh script
- ./artifacts/lava-submit.sh
@@ -32,6 +32,7 @@
- alpine/x86_64_lava_ssh_client
- kernel+rootfs_arm32
- debian/x86_64_build
+ - python-test
- testing:arm32
- igt:arm32
@@ -48,6 +49,7 @@
- alpine/x86_64_lava_ssh_client
- kernel+rootfs_arm64
- debian/x86_64_build
+ - python-test
- testing:arm64
- igt:arm64
@@ -64,6 +66,7 @@
- alpine/x86_64_lava_ssh_client
- kernel+rootfs_x86_64
- debian/x86_64_build
+ - python-test
- testing:x86_64
- igt:x86_64
--
2.43.0
---- On Thu, 28 Nov 2024 01:20:20 -0300 Vignesh Raman wrote ---
> Uprev mesa to adapt to the latest changes in mesa ci
> which includes new container jobs and stages. Also update
> lava-submit script to adapt to the recent changes in mesa
> to use LAVA rootfs overlays.
>
> Signed-off-by: Vignesh Raman vignesh.raman@collabora.com>
> ---
> drivers/gpu/drm/ci/build.sh | 2 +-
> drivers/gpu/drm/ci/build.yml | 103 +++++++++++++++++++++++++++++-
> drivers/gpu/drm/ci/container.yml | 22 +++----
> drivers/gpu/drm/ci/gitlab-ci.yml | 71 ++++++++++++++------
> drivers/gpu/drm/ci/image-tags.yml | 11 +++-
> drivers/gpu/drm/ci/lava-submit.sh | 99 ++++++++++++++++++++--------
> drivers/gpu/drm/ci/test.yml | 13 ++--
> 7 files changed, 255 insertions(+), 66 deletions(-)
>
> diff --git a/drivers/gpu/drm/ci/build.sh b/drivers/gpu/drm/ci/build.sh
> index 139b81db6312..19fe01257ab9 100644
> --- a/drivers/gpu/drm/ci/build.sh
> +++ b/drivers/gpu/drm/ci/build.sh
> @@ -132,7 +132,7 @@ fi
> # Pass needed files to the test stage
> mkdir -p install
> cp -rfv .gitlab-ci/* install/.
> -cp -rfv ci/* install/.
> +cp -rfv bin/ci/* install/.
> cp -rfv install/common install/ci-common
> cp -rfv drivers/gpu/drm/ci/* install/.
>
> diff --git a/drivers/gpu/drm/ci/build.yml b/drivers/gpu/drm/ci/build.yml
> index 9c198239033d..771ecfc5008d 100644
> --- a/drivers/gpu/drm/ci/build.yml
> +++ b/drivers/gpu/drm/ci/build.yml
> @@ -2,7 +2,7 @@
> extends:
> - .build-rules
> - .container+build-rules
> - stage: build
> + stage: build-only
> artifacts:
> paths:
> - artifacts
> @@ -110,3 +110,104 @@ build-nodebugfs:arm64:
>
> build:x86_64:
> extends: .build:x86_64
> +
> +# Disable build jobs that we won't use
> +alpine-build-testing:
> + rules:
> + - when: never
> +
> +debian-android:
> + rules:
> + - when: never
> +
> +debian-arm32:
> + rules:
> + - when: never
> +
> +debian-arm32-asan:
> + rules:
> + - when: never
> +
> +debian-arm64:
> + rules:
> + - when: never
> +
> +debian-arm64-asan:
> + rules:
> + - when: never
> +
> +debian-arm64-build-test:
> + rules:
> + - when: never
> +
> +debian-arm64-release:
> + rules:
> + - when: never
> +
> +debian-build-testing:
> + rules:
> + - when: never
> +
> +debian-clang:
> + rules:
> + - when: never
> +
> +debian-clang-release:
> + rules:
> + - when: never
> +
> +debian-no-libdrm:
> + rules:
> + - when: never
> +
> +debian-ppc64el:
> + rules:
> + - when: never
> +
> +debian-release:
> + rules:
> + - when: never
> +
> +debian-s390x:
> + rules:
> + - when: never
> +
> +debian-testing:
> + rules:
> + - when: never
> +
> +debian-testing-asan:
> + rules:
> + - when: never
> +
> +debian-testing-msan:
> + rules:
> + - when: never
> +
> +debian-vulkan:
> + rules:
> + - when: never
> +
> +debian-x86_32:
> + rules:
> + - when: never
> +
> +fedora-release:
> + rules:
> + - when: never
> +
> +rustfmt:
> + rules:
> + - when: never
> +
> +shader-db:
> + rules:
> + - when: never
> +
> +windows-msvc:
> + rules:
> + - when: never
> +
> +yaml-toml-shell-test:
> + rules:
> + - when: never
Well, I don't really like this list, but I guess we don't have a choice for now...
> diff --git a/drivers/gpu/drm/ci/container.yml b/drivers/gpu/drm/ci/container.yml
> index 2a94f54ce4cf..07dc13ff865d 100644
> --- a/drivers/gpu/drm/ci/container.yml
> +++ b/drivers/gpu/drm/ci/container.yml
> @@ -24,7 +24,7 @@ alpine/x86_64_build:
> rules:
> - when: never
>
> -debian/x86_64_test-vk:
> +debian/arm64_test-gl:
> rules:
> - when: never
>
> @@ -32,7 +32,15 @@ debian/arm64_test-vk:
> rules:
> - when: never
>
> -debian/arm64_test-gl:
> +debian/ppc64el_build:
> + rules:
> + - when: never
> +
> +debian/s390x_build:
> + rules:
> + - when: never
> +
> +debian/x86_64_test-vk:
> rules:
> - when: never
>
> @@ -56,14 +64,6 @@ windows_test_msvc:
> rules:
> - when: never
>
> -.debian/x86_64_build-mingw:
> - rules:
> - - when: never
> -
> -rustfmt:
> - rules:
> - - when: never
> -
> windows_msvc:
> rules:
> - - when: never
> \ No newline at end of file
> + - when: never
> diff --git a/drivers/gpu/drm/ci/gitlab-ci.yml b/drivers/gpu/drm/ci/gitlab-ci.yml
> index 90bde9f00cc3..86d8c5d8ce3b 100644
> --- a/drivers/gpu/drm/ci/gitlab-ci.yml
> +++ b/drivers/gpu/drm/ci/gitlab-ci.yml
> @@ -1,6 +1,6 @@
> variables:
> DRM_CI_PROJECT_PATH: &drm-ci-project-path mesa/mesa
> - DRM_CI_COMMIT_SHA: &drm-ci-commit-sha c6a9a9c3bce90923f7700219354e0b6e5a3c9ba6
> + DRM_CI_COMMIT_SHA: &drm-ci-commit-sha e1a8fd80d411a5ff8fa19ffcf09516ac5099a25c
>
> UPSTREAM_REPO: https://gitlab.freedesktop.org/drm/kernel.git
> TARGET_BRANCH: drm-next
> @@ -31,11 +31,7 @@ variables:
> PIPELINE_ARTIFACTS_BASE: ${S3_HOST}/${S3_ARTIFACTS_BUCKET}/${CI_PROJECT_PATH}/${CI_PIPELINE_ID}
> # per-job artifact storage on MinIO
> JOB_ARTIFACTS_BASE: ${PIPELINE_ARTIFACTS_BASE}/${CI_JOB_ID}
> - # default kernel for rootfs before injecting the current kernel tree
> - KERNEL_REPO: "gfx-ci/linux"
> - KERNEL_TAG: "v6.6.21-mesa-f8ea"
> KERNEL_IMAGE_BASE: https://${S3_HOST}/${S3_KERNEL_BUCKET}/${KERNEL_REPO}/${KERNEL_TAG}
> - PKG_REPO_REV: "3cc12a2a"
> LAVA_TAGS: subset-1-gfx
> LAVA_JOB_PRIORITY: 30
> ARTIFACTS_BASE_URL: https://${CI_PROJECT_ROOT_NAMESPACE}.${CI_PAGES_DOMAIN}/-/${CI_PROJECT_NAME}/-/jobs/${CI_JOB_ID}/artifacts
> @@ -59,7 +55,7 @@ default:
> - cd $CI_PROJECT_DIR
> - curl --output - $DRM_CI_PROJECT_URL/-/archive/$DRM_CI_COMMIT_SHA/mesa-$DRM_CI_COMMIT_SHA.tar.gz | tar -xz
> - mv mesa-$DRM_CI_COMMIT_SHA/.gitlab-ci* .
> - - mv mesa-$DRM_CI_COMMIT_SHA/bin/ci .
> + - mv mesa-$DRM_CI_COMMIT_SHA/bin .
> - rm -rf mesa-$DRM_CI_COMMIT_SHA/
> - echo -e "\e[0Ksection_end:$(date +%s):drm_ci_download_section\r\e[0K"
>
> @@ -85,6 +81,7 @@ include:
> - project: *drm-ci-project-path
> ref: *drm-ci-commit-sha
> file:
> + - '/.gitlab-ci/build/gitlab-ci.yml'
> - '/.gitlab-ci/container/gitlab-ci.yml'
> - '/.gitlab-ci/farm-rules.yml'
> - '/.gitlab-ci/lava/lava-gitlab-ci.yml'
> @@ -115,9 +112,10 @@ include:
> stages:
> - sanity
> - container
> - - code-validation
> - git-archive
> - - build
> + - build-for-tests
> + - build-only
> + - code-validation
> - amdgpu
> - i915
> - mediatek
> @@ -264,30 +262,63 @@ sanity:
> rules:
> - if: *is-pre-merge
> when: on_success
> - # Other cases default to never
> + - when: never
> variables:
> GIT_STRATEGY: none
> script:
> # ci-fairy check-commits --junit-xml=check-commits.xml
> - ci-fairy check-merge-request --require-allow-collaboration --junit-xml=check-merge-request.xml
> + - |
> + set -eu
> + image_tags=(
> + ALPINE_X86_64_LAVA_SSH_TAG
> + CONTAINER_TAG
> + DEBIAN_BASE_TAG
> + DEBIAN_BUILD_TAG
> + DEBIAN_PYUTILS_TAG
> + DEBIAN_TEST_GL_TAG
> + KERNEL_ROOTFS_TAG
> + KERNEL_TAG
> + PKG_REPO_REV
> + )
> + for var in "${image_tags[@]}"
> + do
> + if [ "$(echo -n "${!var}" | wc -c)" -gt 20 ]
> + then
> + echo "$var is too long; please make sure it is at most 20 chars."
> + exit 1
> + fi
> + done
> artifacts:
> when: on_failure
> reports:
> junit: check-*.xml
> + tags:
> + - placeholder-job
>
> -# Rules for tests that should not block merging, but should be available to
> -# optionally run with the "play" button in the UI in pre-merge non-marge
> -# pipelines. This should appear in "extends:" after any includes of
> -# test-source-dep.yml rules, so that these rules replace those.
> -.test-manual-mr:
> +
> +mr-label-maker-test:
> + extends:
> + - .fdo.ci-fairy
> + stage: sanity
> rules:
> - - !reference [.no_scheduled_pipelines-rules, rules]
> - - if: *is-forked-branch-or-pre-merge-not-for-marge
> - when: manual
> + - !reference [.mr-label-maker-rules, rules]
> variables:
> - JOB_TIMEOUT: 80
> -
> + GIT_STRATEGY: fetch
> + timeout: 10m
> + script:
> + - set -eu
> + - python3 -m venv .venv
> + - source .venv/bin/activate
> + - pip install git+https://gitlab.freedesktop.org/freedesktop/mr-label-maker
> + - mr-label-maker --dry-run --mr $CI_MERGE_REQUEST_IID
>
> # Jobs that need to pass before spending hardware resources on further testing
> .required-for-hardware-jobs:
> - needs: []
> + needs:
> + - job: clang-format
> + optional: true
> + - job: rustfmt
> + optional: true
> + - job: toml-lint
> + optional: true
> diff --git a/drivers/gpu/drm/ci/image-tags.yml b/drivers/gpu/drm/ci/image-tags.yml
> index 8d8b9e71852e..528ef44285bb 100644
> --- a/drivers/gpu/drm/ci/image-tags.yml
> +++ b/drivers/gpu/drm/ci/image-tags.yml
> @@ -1,5 +1,5 @@
> variables:
> - CONTAINER_TAG: "2024-09-09-uprevs"
> + CONTAINER_TAG: "20241127-mesa-uprev"
> DEBIAN_X86_64_BUILD_BASE_IMAGE: "debian/x86_64_build-base"
> DEBIAN_BASE_TAG: "${CONTAINER_TAG}"
>
> @@ -7,9 +7,16 @@ variables:
> DEBIAN_BUILD_TAG: "${CONTAINER_TAG}"
>
> KERNEL_ROOTFS_TAG: "${CONTAINER_TAG}"
> + # default kernel for rootfs before injecting the current kernel tree
> + KERNEL_TAG: "v6.6.21-mesa-f8ea"
> + KERNEL_REPO: "gfx-ci/linux"
> + PKG_REPO_REV: "bca9635d"
>
> DEBIAN_X86_64_TEST_BASE_IMAGE: "debian/x86_64_test-base"
> DEBIAN_X86_64_TEST_IMAGE_GL_PATH: "debian/x86_64_test-gl"
> DEBIAN_TEST_GL_TAG: "${CONTAINER_TAG}"
>
> - ALPINE_X86_64_LAVA_SSH_TAG: "${CONTAINER_TAG}"
> \ No newline at end of file
> + DEBIAN_PYUTILS_IMAGE: "debian/x86_64_pyutils"
> + DEBIAN_PYUTILS_TAG: "${CONTAINER_TAG}"
> +
> + ALPINE_X86_64_LAVA_SSH_TAG: "${CONTAINER_TAG}"
> diff --git a/drivers/gpu/drm/ci/lava-submit.sh b/drivers/gpu/drm/ci/lava-submit.sh
> index 6add15083c78..a1404a2d8cee 100755
> --- a/drivers/gpu/drm/ci/lava-submit.sh
> +++ b/drivers/gpu/drm/ci/lava-submit.sh
> @@ -1,58 +1,105 @@
> -#!/bin/bash
> +#!/usr/bin/env bash
> # SPDX-License-Identifier: MIT
> +# shellcheck disable=SC2086 # we want word splitting
> +# shellcheck disable=SC1091 # paths only become valid at runtime
>
> -set -e
> -set -x
> +# If we run in the fork (not from mesa or Marge-bot), reuse mainline kernel and rootfs, if exist.
> +_check_artifact_path() {
> + _url="https://${1}/${2}"
> + if curl -s -o /dev/null -I -L -f --retry 4 --retry-delay 15 "${_url}"; then
> + echo -n "${_url}"
> + fi
> +}
>
> -# Try to use the kernel and rootfs built in mainline first, so we're more
> -# likely to hit cache
> -if curl -L --retry 4 -f --retry-all-errors --retry-delay 60 -s "https://${BASE_SYSTEM_MAINLINE_HOST_PATH}/done"; then
> - BASE_SYSTEM_HOST_PATH="${BASE_SYSTEM_MAINLINE_HOST_PATH}"
> -else
> - BASE_SYSTEM_HOST_PATH="${BASE_SYSTEM_FORK_HOST_PATH}"
> -fi
> +get_path_to_artifact() {
> + _mainline_artifact="$(_check_artifact_path ${BASE_SYSTEM_MAINLINE_HOST_PATH} ${1})"
> + if [ -n "${_mainline_artifact}" ]; then
> + echo -n "${_mainline_artifact}"
> + return
> + fi
> + _fork_artifact="$(_check_artifact_path ${BASE_SYSTEM_FORK_HOST_PATH} ${1})"
> + if [ -n "${_fork_artifact}" ]; then
> + echo -n "${_fork_artifact}"
> + return
> + fi
> + set +x
> + error "Sorry, I couldn't find a viable built path for ${1} in either mainline or a fork." >&2
> + echo "" >&2
> + echo "If you're working on CI, this probably means that you're missing a dependency:" >&2
> + echo "this job ran ahead of the job which was supposed to upload that artifact." >&2
> + echo "" >&2
> + echo "If you aren't working on CI, please ping @mesa/ci-helpers to see if we can help." >&2
> + echo "" >&2
> + echo "This job is going to fail, because I can't find the resources I need. Sorry." >&2
> + set -x
> + exit 1
> +}
> +
> +. "${SCRIPTS_DIR}/setup-test-env.sh"
> +
> +section_start prepare_rootfs "Preparing root filesystem"
> +
> +set -ex
> +
> +section_switch rootfs "Assembling root filesystem"
> +ROOTFS_URL="$(get_path_to_artifact lava-rootfs.tar.zst)"
> +[ $? != 1 ] || exit 1
>
> rm -rf results
> mkdir -p results/job-rootfs-overlay/
>
> +artifacts/ci-common/generate-env.sh > results/job-rootfs-overlay/set-job-env-vars.sh
> cp artifacts/ci-common/capture-devcoredump.sh results/job-rootfs-overlay/
> cp artifacts/ci-common/init-*.sh results/job-rootfs-overlay/
> cp artifacts/ci-common/intel-gpu-freq.sh results/job-rootfs-overlay/
> +cp artifacts/ci-common/kdl.sh results/job-rootfs-overlay/
> cp "$SCRIPTS_DIR"/setup-test-env.sh results/job-rootfs-overlay/
>
> -# Prepare env vars for upload.
> -section_start variables "Variables passed through:"
> -KERNEL_IMAGE_BASE="https://${BASE_SYSTEM_HOST_PATH}" \
> - artifacts/ci-common/generate-env.sh | tee results/job-rootfs-overlay/set-job-env-vars.sh
> -section_end variables
> -
> tar zcf job-rootfs-overlay.tar.gz -C results/job-rootfs-overlay/ .
> ci-fairy s3cp --token-file "${S3_JWT_FILE}" job-rootfs-overlay.tar.gz "https://${JOB_ROOTFS_OVERLAY_PATH}"
>
> +# Prepare env vars for upload.
> +section_switch variables "Environment variables passed through to device:"
> +cat results/job-rootfs-overlay/set-job-env-vars.sh
> +
> +section_switch lava_submit "Submitting job for scheduling"
> +
> touch results/lava.log
> tail -f results/lava.log &
> -
> PYTHONPATH=artifacts/ artifacts/lava/lava_job_submitter.py \
> - submit \
> + --farm "${FARM}" \
> + --device-type "${DEVICE_TYPE}" \
> + --boot-method "${BOOT_METHOD}" \
> + --job-timeout-min ${JOB_TIMEOUT:-30} \
> --dump-yaml \
> --pipeline-info "$CI_JOB_NAME: $CI_PIPELINE_URL on $CI_COMMIT_REF_NAME ${CI_NODE_INDEX}/${CI_NODE_TOTAL}" \
> - --rootfs-url-prefix "https://${BASE_SYSTEM_HOST_PATH}" \
> + --rootfs-url "${ROOTFS_URL}" \
> --kernel-url-prefix "https://${PIPELINE_ARTIFACTS_BASE}/${DEBIAN_ARCH}" \
> - --build-url "${FDO_HTTP_CACHE_URI:-}https://${PIPELINE_ARTIFACTS_BASE}/${DEBIAN_ARCH}/kernel-files.tar.zst" \
> - --job-rootfs-overlay-url "${FDO_HTTP_CACHE_URI:-}https://${JOB_ROOTFS_OVERLAY_PATH}" \
> - --job-timeout-min ${JOB_TIMEOUT:-80} \
> + --kernel-external "${EXTERNAL_KERNEL_TAG}" \
> --first-stage-init artifacts/ci-common/init-stage1.sh \
> - --ci-project-dir "${CI_PROJECT_DIR}" \
> - --device-type "${DEVICE_TYPE}" \
> - --farm "${FARM}" \
> --dtb-filename "${DTB}" \
> --jwt-file "${S3_JWT_FILE}" \
> --kernel-image-name "${KERNEL_IMAGE_NAME}" \
> --kernel-image-type "${KERNEL_IMAGE_TYPE}" \
> - --boot-method "${BOOT_METHOD}" \
> --visibility-group "${VISIBILITY_GROUP}" \
> --lava-tags "${LAVA_TAGS}" \
> --mesa-job-name "$CI_JOB_NAME" \
> --structured-log-file "results/lava_job_detail.json" \
> --ssh-client-image "${LAVA_SSH_CLIENT_IMAGE}" \
> + --project-name "${CI_PROJECT_NAME}" \
> + --starting-section "${CURRENT_SECTION}" \
> + --job-submitted-at "${CI_JOB_STARTED_AT}" \
> + - append-overlay \
> + --name=kernel-build \
> + --url="${FDO_HTTP_CACHE_URI:-}https://${PIPELINE_ARTIFACTS_BASE}/${DEBIAN_ARCH}/kernel-files.tar.zst" \
> + --compression=zstd \
> + --path="${CI_PROJECT_DIR}" \
> + --format=tar \
> + - append-overlay \
> + --name=job-overlay \
> + --url="https://${JOB_ROOTFS_OVERLAY_PATH}" \
> + --compression=gz \
> + --path="/" \
> + --format=tar \
> + - submit \
> >> results/lava.log
> diff --git a/drivers/gpu/drm/ci/test.yml b/drivers/gpu/drm/ci/test.yml
> index f0ef60c8f56d..42a8e7f93714 100644
> --- a/drivers/gpu/drm/ci/test.yml
> +++ b/drivers/gpu/drm/ci/test.yml
> @@ -1,21 +1,21 @@
> .test-rules:
> rules:
> - - if: '$FD_FARM == "offline" && $RUNNER_TAG =~ /^google-freedreno-/'
> - when: never
> - - if: '$COLLABORA_FARM == "offline" && $RUNNER_TAG =~ /^mesa-ci-x86-64-lava-/'
> - when: never
> - !reference [.no_scheduled_pipelines-rules, rules]
> + - !reference [.collabora-farm-rules, rules]
> + - !reference [.google-freedreno-farm-rules, rules]
> - when: on_success
>
> .lava-test:
> extends:
> - .test-rules
> + - .build-rules
> + - .container+build-rules
> timeout: "1h30m"
> script:
> # Note: Build dir (and thus install) may be dirty due to GIT_STRATEGY
> - rm -rf install
> - tar -xf artifacts/install.tar
> - - mv install/* artifacts/.
> + - mv -n install/* artifacts/.
> # Override it with our lava-submit.sh script
> - ./artifacts/lava-submit.sh
>
> @@ -32,6 +32,7 @@
> - alpine/x86_64_lava_ssh_client
> - kernel+rootfs_arm32
> - debian/x86_64_build
> + - python-test
> - testing:arm32
> - igt:arm32
>
> @@ -48,6 +49,7 @@
> - alpine/x86_64_lava_ssh_client
> - kernel+rootfs_arm64
> - debian/x86_64_build
> + - python-test
> - testing:arm64
> - igt:arm64
>
> @@ -64,6 +66,7 @@
> - alpine/x86_64_lava_ssh_client
> - kernel+rootfs_x86_64
> - debian/x86_64_build
> + - python-test
> - testing:x86_64
> - igt:x86_64
>
> --
> 2.43.0
>
>
lgtm
Acked-by: Helen Koike <helen.koike@collabora.com>
Thanks
Helen
© 2016 - 2026 Red Hat, Inc.