An unintended consequence of !35203 is that when container jobs are not
there, nothing depends on the `sanity` job anymore.
Fix this by making all the jobs using a container image we generate also
depend on `sanity` through the `.use-$distro/$variant` templates.
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/35857>
Extend the deqp-runner suite to run a fractional set of VKCTS tests
on Cuttlefish with Venus on ANV. This involved:
- Introducing a skip list for tests incompatible with this setup
- Increasing the parallelism of the pre-merge job on CML
Signed-off-by: Valentine Burley <valentine.burley@collabora.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/35786>
The job definitions for lava-related jobs are encapsulated in a directory,
while the other two farm managers were in the generic test directory. Having a
directory for ci-tron places it side by side with other farm managers. For
bare-metal, it has another advantage, as this encapsulates elements related to
this farm manager in a single place.
To maintain simplicity and consistency in file naming, the gitlab-ci file in
the lava directory is renamed as it has a prefix that corresponds with the
directory hosting it. The other farm equivalent files don't include this
duplication as a prefix, and there isn't such a prefix in any other case of
the CI.
Signed-off-by: Sergi Blanch-Torne <sergi.blanch.torne@collabora.com>
Acked-by: Martin Roukala (né Peres) <martin.roukala@mupuf.org>
Reviewed-by: Eric Engestrom <eric@igalia.com>
Reviewed-by: Valentine Burley <valentine.burley@collabora.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/35427>
Downloading the android artifacts separately is really a peculiarity of
cuttlefish jobs, where we need mesa artifacts for both the host and the
guest.
So move the separate download of android artifacts to
cuttlefish-runner.sh
This aligns with the .test-android definition being cuttlefish specific,
and it also matches the original comment in that definition regarding
S3_ANDROID_ARTIFACT_NAME.
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/35380>
Some Android build may require some specific setup before running
Android CTS, for example switching to a user different than 0, or
setting some properties.
Add a mechanism to issue such commands in a generic way.
The job definition will have to set the `ANDROID_CTS_PREPARE_COMMAND`
variable with the desired command to execute right before running
Android CTS.
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/35380>
In commit c99c67c490 (ci/android: Only replace ANGLE if needed,
2025-06-05) ANGLE is replaced in the Android device only when ANGLE_TAG
is specified.
However it can still happen that the device was using ANGLE all along,
and not replacing it means that the original version would not match the
one built by mesa-ci, making the GLES version check fail unnecessarily.
In case ANGLE_TAG is not specified the GLES version check can be skipped
altogether, the rationale for this approach is that ANGLE can be
considered the default GLES implementation for Android going forward,
so if android-runner.sh has not replaced it we can just trust that the
original one is in place.
There might still be some fancy setups in the wild where the GLES
implementation is mesa and not ANGLE, but we are not testing those in
mesa-ci for now, so skipping the test for non-ANGLE GLES too is
acceptable.
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/35380>
The aapt package form Debian might not be recent enough to install the
packages from Android CTS.
Resulting in an error like:
```
03:12:09.302: Module(s) with run failure(s):
03:12:09.302: x86_64 CtsGraphicsTestCases: com.android.tradefed.targetprep.TargetSetupError[AAPT_PARSER_FAILED|520050|DEPENDENCY_ISSUE]: AaptParser failed for file CtsGraphicsTestCases.apk. The APK won't be installed
```
So get aapt from the build-tools matching the ANDROID_SDK_VERSION
corresponding to the Android version and CTS version used in the tests,
to ensure compatibility.
This effectively reverts the changes from commit b3c07fe722
(ci/android: Use aapt from Debian packages, 2025-04-21), but moving the
code around a bit.
The build-tools are not taken as LAVA overlay because LAVA is not able
to handle zip files, and the file in not big enough to be worth any
repacking effort.
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/35688>
If an Android CTS module does not even start the amount of `FAILED`
tests in the invocation summary could still show up as 0, passing the
sanity check on the completion status, and `cts-tradefed` would not
reflect the module-level failure in the return value either.
So explicitly check that all included modules completed and, in case
they didn't, propagate this kind of failure to `EXIT_CODE`.
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/35688>
Structured tagging ensures that we are building and testing the current
component version specified in the commit by matching the checksum of
the related build script file.
In this case, it is worthy to isolate the Android CTS version part,
because we don't need to rebuild the entire test-android container when
we change the CTS version or the CTS modules filtering.
PS: actually the new file `build-android-cts.sh` is not building
anything, it is just downloads, filters, compress and reupload the
stripped version to S3. The `build-` prefix is to make it work
transparently with `bin/ci/update_tag.py` script.
Signed-off-by: Guilherme Gallo <guilherme.gallo@collabora.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/35596>
The CTS has almost 9GB atm, which takes almost 20 minutes to download
it. Moreover, it is stripped down after that, so we don't need the entire
file anyway.
So let's move this artifact to S3 in a similar way that we do with
fluster vectors.
Signed-off-by: Guilherme Gallo <guilherme.gallo@collabora.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/35596>
Meson 1.7.0 is required to ensure that generated bindings
are suitable for use with the selected Rust compiler.
Bindgen is bumped to 0.71.1 which has more permissive handling of
`--rust-target`, enabling (almost) any valid Rust version to be
passed as a target; `-nightly` and `-beta*` suffixes are an exception
to this.
This behaviour is expected to improve further with later versions of
Meson; upstream fixes have landed that:
- pass a stripped version string to bindgen
- additionally pass an appropriate `--rust-edition` if `rust_std` is
set (or "nightly" if the compiler is `nightly`).
Closes: https://gitlab.freedesktop.org/mesa/mesa/-/issues/12680
Bug: https://bugs.gentoo.org/946913
Signed-off-by: Matt Jolly <kangie@gentoo.org>
Reviewed-by: Karol Herbst <kherbst@redhat.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/33725>
We need to use a later version of Meson than is currently available
in the Alpine repository. Use the existing `install-meson.sh` to fetch
the appropriate version from PyPI.
This requires that we explicitly install a Ninja impl on Alpine -
Samurai is the preferred impl and by using this we do not need
to prefix `PATH` to access Ninja.
`apk` installed Installed packages are additionally sorted.
Signed-off-by: Matt Jolly <kangie@gentoo.org>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/33725>
This `mv` copies the folder from the read-only docker image to the
run time overlayfs, which is expensive and unnecessary, and slow on
devices using network disks.
`rm` by comparison is instant, and there is no reason to keep the folder
around if we're taking it away from the expected path anyway.
Fixes: 8d08cde667 ("ci/piglit: Use structured tagging for Piglit")
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/35500>
Remove use of `eval` when writing `dut-job-env-vars.sh`, as it's
unnecessary. The script only needs to declare variables, not evaluate
them.
Using `eval` introduces parsing issues when variables contain both
single and double quotes, such as in commit titles. Example:
https://gitlab.freedesktop.org/mesa/mesa/-/jobs/77995175#L3188
This job failed to parse `CI_COMMIT_TITLE` and `CI_MERGE_REQUEST_TITLE`
correctly due to mixed quoting in:
Revert "ci: disable Collabora's farm due to maintenance"
Signed-off-by: Guilherme Gallo <guilherme.gallo@collabora.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/35421>
For pre-merge pipelines, we know that we don't need to run the
container-check jobs unless image-tags.yml has been modified. In this
case, we can just skip the container jobs, because we 'know' that the
containers are present in the upstream repo.
For downstream or off-main pipelines, we still need to run the check
job, because the changed-file tracking is not reliable on other
branches, and because we may need to copy the container image from the
upstream container storage into the user's namespace.
Signed-off-by: Daniel Stone <daniels@collabora.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/35203>
The rules we want here are pretty simple:
- only run rustfmt when Rust code changes, to the extent that we can
tell what has or hasn't changed (only really reliable for pre-merge)
- make rustfmt success mandatory for pre-merge, advisory for other
branches
Encode that, and make sure we don't run rustfmt when we don't need to.
Signed-off-by: Daniel Stone <daniels@collabora.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/35203>