Compare commits
255 Commits
mesa-25.1.
...
mesa-25.0.
Author | SHA1 | Date | |
---|---|---|---|
|
c185b4a7b0 | ||
|
0634473336 | ||
|
7e12252613 | ||
|
989f2d8b34 | ||
|
9347962591 | ||
|
a591864851 | ||
|
4e0f86e99f | ||
|
0feebb60ad | ||
|
3a2e0fb0f7 | ||
|
30455e071c | ||
|
33a7918337 | ||
|
0d325602f1 | ||
|
c9a177aca2 | ||
|
4bc19462b9 | ||
|
63f2fa10cc | ||
|
4ec5c2fb59 | ||
|
28d34f30e6 | ||
|
af767e1e3e | ||
|
915075bf66 | ||
|
56d066e062 | ||
|
3f7abae2fc | ||
|
d8b47159b7 | ||
|
390317a99e | ||
|
5200d13a0f | ||
|
9842f90fcc | ||
|
41f982ddac | ||
|
43b9f114cb | ||
|
08ae198bda | ||
|
ebca2fafa8 | ||
|
4607eb7eae | ||
|
0ea91330c3 | ||
|
eff71795d0 | ||
|
6090162961 | ||
|
f912436dc9 | ||
|
614dd4999c | ||
|
7b51aa8e3f | ||
|
6248bc98c2 | ||
|
f3ee6ed43c | ||
|
91c473e49a | ||
|
919e3443e8 | ||
|
553ab18656 | ||
|
4a08708ca2 | ||
|
c795725649 | ||
|
eff601577a | ||
|
29ae40e1aa | ||
|
95d0ecd6e5 | ||
|
bac3b56d51 | ||
|
62747d6bdd | ||
|
3370a327d7 | ||
|
ce3806b8ee | ||
|
13b2f1e72d | ||
|
f8e7fecd7e | ||
|
3630721dc8 | ||
|
16dfadd3e0 | ||
|
db51d8f8ac | ||
|
11faa02ec4 | ||
|
1b6da4ed52 | ||
|
20bb982788 | ||
|
539f0d88be | ||
|
1f2143eea6 | ||
|
7013ebec5d | ||
|
ea47f98811 | ||
|
cb09b3f624 | ||
|
36e1923284 | ||
|
f9c3499918 | ||
|
4118fef567 | ||
|
1bb39be75e | ||
|
33a7ae1f0a | ||
|
1ce4feb1c0 | ||
|
a2fd6237cb | ||
|
7b2a0da25f | ||
|
c4d64f9f83 | ||
|
33f1bbed67 | ||
|
275a14e3c8 | ||
|
3055ca6ff6 | ||
|
ce12f4c6f8 | ||
|
ff0f49e0ba | ||
|
43851b6850 | ||
|
651b27cffa | ||
|
85fb4b4d9b | ||
|
ace414493d | ||
|
d2c5c71775 | ||
|
5b8b81618e | ||
|
5e76850ce3 | ||
|
7b38cf8b5e | ||
|
b34120348d | ||
|
d24eac8915 | ||
|
280d2fee72 | ||
|
b0a3bb0d6d | ||
|
97eb3f5cc2 | ||
|
5c84fff059 | ||
|
64552db2f8 | ||
|
4fa244fddf | ||
|
45be2424ec | ||
|
e4831adc20 | ||
|
ef610a0d25 | ||
|
52e3f30992 | ||
|
f18483d265 | ||
|
b90c99c3dc | ||
|
1a911f3d75 | ||
|
1d6206a82c | ||
|
6482efdaba | ||
|
b948e3f3a6 | ||
|
3445cf4f96 | ||
|
8154790767 | ||
|
a026515817 | ||
|
ceaf6b2231 | ||
|
9b60c38646 | ||
|
f5bace5bf6 | ||
|
5c65587861 | ||
|
d8ffce96d2 | ||
|
3194cae6d0 | ||
|
19e2eed688 | ||
|
70bb670e9f | ||
|
27b7056835 | ||
|
961a3fc760 | ||
|
0cef98b71a | ||
|
b6ffd0cd80 | ||
|
dc633a3560 | ||
|
05f1528235 | ||
|
eae4213ccb | ||
|
a21604ce78 | ||
|
8ef1017e36 | ||
|
af2b8d745f | ||
|
81fe589ccb | ||
|
e1f713bf63 | ||
|
3106363a95 | ||
|
85f4342382 | ||
|
7e54da043a | ||
|
b0a094edfa | ||
|
e074dcbbbb | ||
|
3a9d9099d4 | ||
|
5f2343889d | ||
|
e2232c0be4 | ||
|
399de9dd00 | ||
|
b0891768d5 | ||
|
df3ad61978 | ||
|
90e72c54d8 | ||
|
b01077c27a | ||
|
58540dd004 | ||
|
7445240551 | ||
|
3a8abfa39b | ||
|
7b1e97928c | ||
|
017ea57804 | ||
|
7e549546d4 | ||
|
a917c1f0bf | ||
|
7bd126c0e6 | ||
|
0c862e61e2 | ||
|
7ee94ef063 | ||
|
326ea58650 | ||
|
cef16493a8 | ||
|
35063c7764 | ||
|
015835fc59 | ||
|
6d3863b41b | ||
|
6285eefd88 | ||
|
9fd4deead3 | ||
|
b86196935f | ||
|
2ea6b340ac | ||
|
415338d3e1 | ||
|
f66772f1b1 | ||
|
93d004ab64 | ||
|
33065515bc | ||
|
88cd974aae | ||
|
a9f218a966 | ||
|
92e02eebea | ||
|
ea52e480cb | ||
|
2583fde8bc | ||
|
6378d22e68 | ||
|
c3afddf561 | ||
|
90c4d44969 | ||
|
ef741dad68 | ||
|
d7e6adfa2c | ||
|
a112f94c76 | ||
|
8eb769a540 | ||
|
20f09fc0d4 | ||
|
1c8f1e820f | ||
|
eabe6ec941 | ||
|
4736448bde | ||
|
19f1546fb3 | ||
|
741763f32c | ||
|
1cf778e011 | ||
|
cd1ec4d20e | ||
|
01b75c49a3 | ||
|
fc5cbf4bce | ||
|
be81537a63 | ||
|
3d18ce09de | ||
|
c081723541 | ||
|
495b369693 | ||
|
78411d5666 | ||
|
93dcef8408 | ||
|
79e67633c9 | ||
|
d3e9c337fd | ||
|
765cdedcd0 | ||
|
440f3359a7 | ||
|
78577b19bc | ||
|
62dbbe79ec | ||
|
7368b3f409 | ||
|
36b67f71d5 | ||
|
05d2f1c24a | ||
|
c00d4230ba | ||
|
f0a4a71b3a | ||
|
30e0d3da66 | ||
|
03c3250e04 | ||
|
5443c23983 | ||
|
662bcc8717 | ||
|
1d051e5cb1 | ||
|
b38918d1b4 | ||
|
32f0add871 | ||
|
687790670f | ||
|
56233d338b | ||
|
45f57e0047 | ||
|
ee5713a418 | ||
|
f5e6b891fa | ||
|
fa03018d28 | ||
|
442c29633d | ||
|
fa31c1f713 | ||
|
00472fd105 | ||
|
cb0d551424 | ||
|
ebe6878a6a | ||
|
59865a1b1e | ||
|
1579ff453e | ||
|
6c580e547d | ||
|
729f1b1112 | ||
|
52439657be | ||
|
84f297e9d1 | ||
|
82b697ed69 | ||
|
5b1fc670a7 | ||
|
a1d5a8ea97 | ||
|
8d50d42514 | ||
|
def5f68269 | ||
|
fdb7f38da0 | ||
|
7d0081b108 | ||
|
e0039516fc | ||
|
76fdc6dada | ||
|
d91b19ac13 | ||
|
1ea9e1e364 | ||
|
26ad2f9149 | ||
|
de28085f27 | ||
|
0b7bee3e09 | ||
|
3aa3ec625d | ||
|
f2f488ced5 | ||
|
6911634820 | ||
|
85bd87de30 | ||
|
ab687c3983 | ||
|
c96c123114 | ||
|
056775eb40 | ||
|
fbf86a1c11 | ||
|
8379aef572 | ||
|
cd4ffc319f | ||
|
efdd9452fe | ||
|
3be9a52a1a | ||
|
845a60dc35 | ||
|
66b260fb4f | ||
|
f43f541c71 | ||
|
001a665ca3 |
@@ -31,7 +31,7 @@ indent_size = 3
|
||||
[*.patch]
|
||||
trim_trailing_whitespace = false
|
||||
|
||||
[{meson.build,meson.options}]
|
||||
[{meson.build,meson_options.txt}]
|
||||
indent_style = space
|
||||
indent_size = 2
|
||||
|
||||
|
@@ -68,9 +68,3 @@ c7bf3b69ebc8f2252dbf724a4de638e6bb2ac402
|
||||
|
||||
# ir3: reformat after refactoring in previous commit
|
||||
8ae5b27ee0331a739d14b42e67586784d6840388
|
||||
|
||||
# ir3: don't use deprecated NIR_PASS_V anymore
|
||||
2fedc82c0cc9d3fb2e54707b57941b79553b640c
|
||||
|
||||
# ir3: reformat after previous commit
|
||||
7210054db8cfb445a8ccdeacfdcfecccf44fa266
|
||||
|
@@ -38,10 +38,7 @@ workflow:
|
||||
- if: &is-merge-attempt $GITLAB_USER_LOGIN == "marge-bot" && $CI_PIPELINE_SOURCE == "merge_request_event"
|
||||
variables:
|
||||
MESA_CI_PERFORMANCE_ENABLED: 1
|
||||
FDO_RUNNER_JOB_PRIORITY_TAG_X86_64: priority:high
|
||||
FDO_RUNNER_JOB_PRIORITY_TAG_X86_64_KVM: priority:high-kvm
|
||||
FDO_RUNNER_JOB_PRIORITY_TAG_AARCH64: priority:high-aarch64
|
||||
CI_TRON_JOB_PRIORITY_TAG: "" # Empty tags are ignored by gitlab
|
||||
VALVE_INFRA_VANGOGH_JOB_PRIORITY: "" # Empty tags are ignored by gitlab
|
||||
JOB_PRIORITY: 75
|
||||
# fast-fail in merge pipelines: stop early if we get this many unexpected fails/crashes
|
||||
DEQP_RUNNER_MAX_FAILS: 40
|
||||
@@ -54,9 +51,6 @@ workflow:
|
||||
# nightly pipeline
|
||||
- if: &is-scheduled-pipeline $CI_PIPELINE_SOURCE == "schedule"
|
||||
variables:
|
||||
FDO_RUNNER_JOB_PRIORITY_TAG_X86_64: priority:low
|
||||
FDO_RUNNER_JOB_PRIORITY_TAG_X86_64_KVM: priority:low-kvm
|
||||
FDO_RUNNER_JOB_PRIORITY_TAG_AARCH64: priority:low-aarch64
|
||||
JOB_PRIORITY: 45
|
||||
# (some) nightly builds perform LTO, so they take much longer than the
|
||||
# short timeout allowed in other pipelines.
|
||||
@@ -74,7 +68,7 @@ workflow:
|
||||
|
||||
variables:
|
||||
FDO_UPSTREAM_REPO: mesa/mesa
|
||||
MESA_TEMPLATES_COMMIT: &ci-templates-commit 48e4b6c9a2015f969fbe648999d16d5fb3eef6c4
|
||||
MESA_TEMPLATES_COMMIT: &ci-templates-commit e195d80f35b45cc73668be3767b923fd76c70ed5
|
||||
CI_PRE_CLONE_SCRIPT: |-
|
||||
set -o xtrace
|
||||
wget -q -O download-git-cache.sh ${CI_PROJECT_URL}/-/raw/${CI_COMMIT_SHA}/.gitlab-ci/download-git-cache.sh
|
||||
@@ -116,15 +110,11 @@ variables:
|
||||
# Avoid the wall of "Unsupported SPIR-V capability" warnings in CI job log, hiding away useful output
|
||||
MESA_SPIRV_LOG_LEVEL: error
|
||||
# Default priority for non-merge pipelines
|
||||
FDO_RUNNER_JOB_PRIORITY_TAG_X86_64: "" # Empty tags are ignored by gitlab
|
||||
FDO_RUNNER_JOB_PRIORITY_TAG_X86_64_KVM: kvm
|
||||
FDO_RUNNER_JOB_PRIORITY_TAG_AARCH64: aarch64
|
||||
CI_TRON_JOB_PRIORITY_TAG: ci-tron:priority:low
|
||||
VALVE_INFRA_VANGOGH_JOB_PRIORITY: priority:low
|
||||
JOB_PRIORITY: 50
|
||||
DATA_STORAGE_PATH: data_storage
|
||||
|
||||
default:
|
||||
timeout: 1m # catch any jobs which don't specify a timeout
|
||||
id_tokens:
|
||||
S3_JWT:
|
||||
aud: https://s3.freedesktop.org
|
||||
@@ -220,8 +210,6 @@ include:
|
||||
when: never
|
||||
|
||||
|
||||
# Note: make sure the branches in this list are the same as in
|
||||
# `.build-only-delayed-rules` below.
|
||||
.container+build-rules:
|
||||
rules:
|
||||
- !reference [.common-rules, rules]
|
||||
@@ -278,49 +266,6 @@ include:
|
||||
# manually triggered
|
||||
- when: manual
|
||||
|
||||
# Repeat of the above but with `when: on_success` replaced with
|
||||
# `when: delayed` + `start_in:`, for build-only jobs.
|
||||
# Note: make sure the branches in this list are the same as in
|
||||
# `.container+build-rules` above.
|
||||
.build-only-delayed-rules:
|
||||
rules:
|
||||
- !reference [.common-rules, rules]
|
||||
# Run when re-enabling a disabled farm, but not when disabling it
|
||||
- !reference [.disable-farm-mr-rules, rules]
|
||||
# Never run immediately after merging, as we just ran everything
|
||||
- !reference [.never-post-merge-rules, rules]
|
||||
# Build everything in merge pipelines, if any files affecting the pipeline
|
||||
# were changed
|
||||
- if: *is-merge-attempt
|
||||
changes: *all_paths
|
||||
when: delayed
|
||||
start_in: &build-delay 5 minutes
|
||||
# Same as above, but for pre-merge pipelines
|
||||
- if: *is-pre-merge
|
||||
changes: *all_paths
|
||||
when: manual
|
||||
# Skip everything for pre-merge and merge pipelines which don't change
|
||||
# anything in the build
|
||||
- if: *is-merge-attempt
|
||||
when: never
|
||||
- if: *is-pre-merge
|
||||
when: never
|
||||
# Build everything after someone bypassed the CI
|
||||
- if: *is-direct-push
|
||||
when: delayed
|
||||
start_in: *build-delay
|
||||
# Build everything when pushing to staging branches
|
||||
- if: *is-staging-push
|
||||
when: delayed
|
||||
start_in: *build-delay
|
||||
# Build everything in scheduled pipelines
|
||||
- if: *is-scheduled-pipeline
|
||||
when: delayed
|
||||
start_in: *build-delay
|
||||
# Allow building everything in fork pipelines, but build nothing unless
|
||||
# manually triggered
|
||||
- when: manual
|
||||
|
||||
|
||||
.ci-deqp-artifacts:
|
||||
artifacts:
|
||||
@@ -343,23 +288,24 @@ make git archive:
|
||||
stage: git-archive
|
||||
rules:
|
||||
- !reference [.scheduled_pipeline-rules, rules]
|
||||
# ensure we are running on packet
|
||||
tags:
|
||||
- packet.net
|
||||
script:
|
||||
# Compactify the .git directory
|
||||
- git gc --aggressive
|
||||
# Download & cache the perfetto subproject as well.
|
||||
- rm -rf subprojects/perfetto ; mkdir -p subprojects/perfetto && curl --fail https://android.googlesource.com/platform/external/perfetto/+archive/$(grep 'revision =' subprojects/perfetto.wrap | cut -d ' ' -f3).tar.gz | tar zxf - -C subprojects/perfetto
|
||||
- rm -rf subprojects/perfetto ; mkdir -p subprojects/perfetto && curl https://android.googlesource.com/platform/external/perfetto/+archive/$(grep 'revision =' subprojects/perfetto.wrap | cut -d ' ' -f3).tar.gz | tar zxf - -C subprojects/perfetto
|
||||
# compress the current folder
|
||||
- tar -cvzf ../$CI_PROJECT_NAME.tar.gz .
|
||||
|
||||
- s3_upload ../$CI_PROJECT_NAME.tar.gz "https://$S3_HOST/git-cache/$CI_PROJECT_NAMESPACE/$CI_PROJECT_NAME/"
|
||||
- ci-fairy s3cp --token-file "${S3_JWT_FILE}" ../$CI_PROJECT_NAME.tar.gz https://$S3_HOST/git-cache/$CI_PROJECT_NAMESPACE/$CI_PROJECT_NAME/$CI_PROJECT_NAME.tar.gz
|
||||
|
||||
# Sanity checks of MR settings and commit logs
|
||||
sanity:
|
||||
extends:
|
||||
- .fdo.ci-fairy
|
||||
stage: sanity
|
||||
tags:
|
||||
- $FDO_RUNNER_JOB_PRIORITY_TAG_X86_64
|
||||
rules:
|
||||
- if: *is-pre-merge
|
||||
when: on_success
|
||||
@@ -400,14 +346,14 @@ sanity:
|
||||
when: on_failure
|
||||
reports:
|
||||
junit: check-*.xml
|
||||
tags:
|
||||
- placeholder-job
|
||||
|
||||
|
||||
mr-label-maker-test:
|
||||
extends:
|
||||
- .fdo.ci-fairy
|
||||
stage: sanity
|
||||
tags:
|
||||
- $FDO_RUNNER_JOB_PRIORITY_TAG_X86_64
|
||||
rules:
|
||||
- !reference [.mr-label-maker-rules, rules]
|
||||
variables:
|
||||
@@ -425,7 +371,5 @@ mr-label-maker-test:
|
||||
needs:
|
||||
- job: rustfmt
|
||||
optional: true
|
||||
artifacts: false
|
||||
- job: yaml-toml-shell-py-test
|
||||
optional: true
|
||||
artifacts: false
|
||||
|
@@ -85,31 +85,3 @@ wayland-dEQP-EGL.functional.render.multi_thread.gles2_gles3.other
|
||||
# Vulkan loader in Debian is too old
|
||||
dEQP-VK.api.get_device_proc_addr.non_enabled
|
||||
dEQP-VK.api.version_check.unavailable_entry_points
|
||||
|
||||
# These tests are flaking too much recently on almost all drivers, so better skip them until the cause is identified
|
||||
spec@arb_program_interface_query@arb_program_interface_query-getprogramresourceindex
|
||||
spec@arb_program_interface_query@arb_program_interface_query-getprogramresourceindex@'vs_input2[1][0]' on GL_PROGRAM_INPUT
|
||||
|
||||
# These tests attempt to read from the front buffer after a swap. They are skipped
|
||||
# on both X11 and gbm, but for different reasons:
|
||||
#
|
||||
# On X11: Given that we run piglit tests in parallel in Mesa CI, and don't have a
|
||||
# compositor running, the frontbuffer reads may end up with undefined results from
|
||||
# windows overlapping us.
|
||||
# Piglit does mark these tests as not to be run in parallel, but deqp-runner
|
||||
# doesn't respect that. We need to extend deqp-runner to allow some tests to be
|
||||
# marked as single-threaded and run after the rayon loop if we want to support
|
||||
# them.
|
||||
# Other front-buffer access tests like fbo-sys-blit, fbo-sys-sub-blit, or
|
||||
# fcc-front-buffer-distraction don't appear here, because the DRI3 fake-front
|
||||
# handling should be holding the pixels drawn by the test even if we happen to fail
|
||||
# GL's window system pixel occlusion test.
|
||||
# Note that glx skips don't appear here, they're in all-skips.txt (in case someone
|
||||
# sets PIGLIT_PLATFORM=gbm to mostly use gbm, but still has an X server running).
|
||||
#
|
||||
# On gbm: gbm does not support reading the front buffer after a swapbuffers, and
|
||||
# that's intentional. Don't bother running these tests when PIGLIT_PLATFORM=gbm.
|
||||
# Note that this doesn't include tests like fbo-sys-blit, which draw/read front
|
||||
# but don't swap.
|
||||
spec@!opengl 1.0@gl-1.0-swapbuffers-behavior
|
||||
spec@!opengl 1.1@read-front
|
||||
|
@@ -1,44 +0,0 @@
|
||||
#!/usr/bin/env bash
|
||||
# shellcheck disable=SC2086 # we want word splitting
|
||||
# shellcheck disable=SC1091 # paths only become valid at runtime
|
||||
|
||||
. "${SCRIPTS_DIR}/setup-test-env.sh"
|
||||
|
||||
export PATH=/android-tools/android-cts/jdk/bin/:/android-tools/build-tools:$PATH
|
||||
export JAVA_HOME=/android-tools/android-cts/jdk
|
||||
|
||||
# Wait for the appops service to show up
|
||||
while [ "$($ADB shell dumpsys -l | grep appops)" = "" ] ; do sleep 1; done
|
||||
|
||||
SKIP_FILE="$INSTALL/${GPU_VERSION}-android-cts-skips.txt"
|
||||
|
||||
EXCLUDE_FILTERS=""
|
||||
if [ -e "$SKIP_FILE" ]; then
|
||||
EXCLUDE_FILTERS="$(grep -v -E "(^#|^[[:space:]]*$)" "$SKIP_FILE" | sed -s 's/.*/--exclude-filter "\0" /g')"
|
||||
fi
|
||||
|
||||
INCLUDE_FILE="$INSTALL/${GPU_VERSION}-android-cts-include.txt"
|
||||
|
||||
if [ -e "$INCLUDE_FILE" ]; then
|
||||
INCLUDE_FILTERS="$(grep -v -E "(^#|^[[:space:]]*$)" "$INCLUDE_FILE" | sed -s 's/.*/--include-filter "\0" /g')"
|
||||
else
|
||||
INCLUDE_FILTERS=$(printf -- "--include-filter %s " $ANDROID_CTS_MODULES | sed -e 's/ $//g')
|
||||
fi
|
||||
|
||||
set +e
|
||||
eval "/android-tools/android-cts/tools/cts-tradefed" run commandAndExit cts-dev \
|
||||
$EXCLUDE_FILTERS \
|
||||
$INCLUDE_FILTERS
|
||||
|
||||
[ "$(grep "^FAILED" /android-tools/android-cts/results/latest/invocation_summary.txt | tr -d ' ' | cut -d ':' -f 2)" = "0" ]
|
||||
|
||||
# shellcheck disable=SC2034 # EXIT_CODE is used by the script that sources this one
|
||||
EXIT_CODE=$?
|
||||
set -e
|
||||
|
||||
section_switch cuttlefish_results "cuttlefish: gathering the results"
|
||||
|
||||
cp -r "/android-tools/android-cts/results/latest"/* $RESULTS_DIR
|
||||
cp -r "/android-tools/android-cts/logs/latest"/* $RESULTS_DIR
|
||||
|
||||
section_end cuttlefish_results
|
@@ -1,96 +0,0 @@
|
||||
#!/usr/bin/env bash
|
||||
# shellcheck disable=SC2086 # we want word splitting
|
||||
# shellcheck disable=SC1091 # paths only become valid at runtime
|
||||
|
||||
. "${SCRIPTS_DIR}/setup-test-env.sh"
|
||||
|
||||
# deqp
|
||||
|
||||
$ADB shell mkdir -p /data/deqp
|
||||
$ADB push /deqp-gles/modules/egl/deqp-egl-android /data/deqp
|
||||
$ADB push /deqp-gles/mustpass/egl-main.txt.zst /data/deqp
|
||||
$ADB push /deqp-vk/external/vulkancts/modules/vulkan/* /data/deqp
|
||||
$ADB push /deqp-vk/mustpass/vk-main.txt.zst /data/deqp
|
||||
$ADB push /deqp-tools/* /data/deqp
|
||||
$ADB push /deqp-runner/deqp-runner /data/deqp
|
||||
|
||||
$ADB push "$INSTALL/all-skips.txt" /data/deqp
|
||||
$ADB push "$INSTALL/angle-skips.txt" /data/deqp
|
||||
if [ -e "$INSTALL/$GPU_VERSION-flakes.txt" ]; then
|
||||
$ADB push "$INSTALL/$GPU_VERSION-flakes.txt" /data/deqp
|
||||
fi
|
||||
if [ -e "$INSTALL/$GPU_VERSION-fails.txt" ]; then
|
||||
$ADB push "$INSTALL/$GPU_VERSION-fails.txt" /data/deqp
|
||||
fi
|
||||
if [ -e "$INSTALL/$GPU_VERSION-skips.txt" ]; then
|
||||
$ADB push "$INSTALL/$GPU_VERSION-skips.txt" /data/deqp
|
||||
fi
|
||||
$ADB push "$INSTALL/deqp-$DEQP_SUITE.toml" /data/deqp
|
||||
|
||||
BASELINE=""
|
||||
if [ -e "$INSTALL/$GPU_VERSION-fails.txt" ]; then
|
||||
BASELINE="--baseline /data/deqp/$GPU_VERSION-fails.txt"
|
||||
fi
|
||||
|
||||
# Default to an empty known flakes file if it doesn't exist.
|
||||
$ADB shell "touch /data/deqp/$GPU_VERSION-flakes.txt"
|
||||
|
||||
if [ -e "$INSTALL/$GPU_VERSION-skips.txt" ]; then
|
||||
DEQP_SKIPS="$DEQP_SKIPS /data/deqp/$GPU_VERSION-skips.txt"
|
||||
fi
|
||||
|
||||
if [ -n "$ANGLE_TAG" ]; then
|
||||
DEQP_SKIPS="$DEQP_SKIPS /data/deqp/angle-skips.txt"
|
||||
fi
|
||||
|
||||
AOSP_RESULTS=/data/deqp/results
|
||||
uncollapsed_section_switch cuttlefish_test "cuttlefish: testing"
|
||||
|
||||
set +e
|
||||
$ADB shell "mkdir ${AOSP_RESULTS}; cd ${AOSP_RESULTS}/..; \
|
||||
XDG_CACHE_HOME=/data/local/tmp \
|
||||
./deqp-runner \
|
||||
suite \
|
||||
--suite /data/deqp/deqp-$DEQP_SUITE.toml \
|
||||
--output $AOSP_RESULTS \
|
||||
--skips /data/deqp/all-skips.txt $DEQP_SKIPS \
|
||||
--flakes /data/deqp/$GPU_VERSION-flakes.txt \
|
||||
--testlog-to-xml /data/deqp/testlog-to-xml \
|
||||
--shader-cache-dir /data/local/tmp \
|
||||
--fraction-start ${CI_NODE_INDEX:-1} \
|
||||
--fraction $(( CI_NODE_TOTAL * ${DEQP_FRACTION:-1})) \
|
||||
--jobs ${FDO_CI_CONCURRENT:-4} \
|
||||
$BASELINE \
|
||||
${DEQP_RUNNER_MAX_FAILS:+--max-fails \"$DEQP_RUNNER_MAX_FAILS\"} \
|
||||
"
|
||||
|
||||
# shellcheck disable=SC2034 # EXIT_CODE is used by the script that sources this one
|
||||
EXIT_CODE=$?
|
||||
set -e
|
||||
section_switch cuttlefish_results "cuttlefish: gathering the results"
|
||||
|
||||
$ADB pull "$AOSP_RESULTS/." "$RESULTS_DIR"
|
||||
|
||||
# Remove all but the first 50 individual XML files uploaded as artifacts, to
|
||||
# save fd.o space when you break everything.
|
||||
find $RESULTS_DIR -name \*.xml | \
|
||||
sort -n |
|
||||
sed -n '1,+49!p' | \
|
||||
xargs rm -f
|
||||
|
||||
# If any QPA XMLs are there, then include the XSL/CSS in our artifacts.
|
||||
find $RESULTS_DIR -name \*.xml \
|
||||
-exec cp /deqp-tools/testlog.css /deqp-tools/testlog.xsl "$RESULTS_DIR/" ";" \
|
||||
-quit
|
||||
|
||||
$ADB shell "cd ${AOSP_RESULTS}/..; \
|
||||
./deqp-runner junit \
|
||||
--testsuite dEQP \
|
||||
--results $AOSP_RESULTS/failures.csv \
|
||||
--output $AOSP_RESULTS/junit.xml \
|
||||
--limit 50 \
|
||||
--template \"See $ARTIFACTS_BASE_URL/results/{{testcase}}.xml\""
|
||||
|
||||
$ADB pull "$AOSP_RESULTS/junit.xml" "$RESULTS_DIR"
|
||||
|
||||
section_end cuttlefish_results
|
@@ -1,118 +0,0 @@
|
||||
#!/usr/bin/env bash
|
||||
# shellcheck disable=SC2086 # we want word splitting
|
||||
# shellcheck disable=SC1091 # paths only become valid at runtime
|
||||
|
||||
# Set default ADB command if not set already
|
||||
|
||||
: "${ADB:=adb}"
|
||||
|
||||
$ADB wait-for-device root
|
||||
sleep 1
|
||||
|
||||
# overlay
|
||||
|
||||
REMOUNT_PATHS="/vendor"
|
||||
if [ "$ANDROID_VERSION" -ge 15 ]; then
|
||||
REMOUNT_PATHS="$REMOUNT_PATHS /system"
|
||||
fi
|
||||
|
||||
OV_TMPFS="/data/overlay-remount"
|
||||
$ADB shell mkdir -p "$OV_TMPFS"
|
||||
$ADB shell mount -t tmpfs none "$OV_TMPFS"
|
||||
|
||||
for path in $REMOUNT_PATHS; do
|
||||
$ADB shell mkdir -p "${OV_TMPFS}${path}-upper"
|
||||
$ADB shell mkdir -p "${OV_TMPFS}${path}-work"
|
||||
|
||||
opts="lowerdir=${path},upperdir=${OV_TMPFS}${path}-upper,workdir=${OV_TMPFS}${path}-work"
|
||||
$ADB shell mount -t overlay -o "$opts" none ${path}
|
||||
done
|
||||
|
||||
$ADB shell setenforce 0
|
||||
|
||||
# download Android Mesa from S3
|
||||
MESA_ANDROID_ARTIFACT_URL=https://${PIPELINE_ARTIFACTS_BASE}/${S3_ANDROID_ARTIFACT_NAME}.tar.zst
|
||||
curl -L --retry 4 -f --retry-all-errors --retry-delay 60 -o ${S3_ANDROID_ARTIFACT_NAME}.tar.zst ${MESA_ANDROID_ARTIFACT_URL}
|
||||
mkdir /mesa-android
|
||||
tar -C /mesa-android -xvf ${S3_ANDROID_ARTIFACT_NAME}.tar.zst
|
||||
rm "${S3_ANDROID_ARTIFACT_NAME}.tar.zst" &
|
||||
|
||||
INSTALL="/mesa-android/install"
|
||||
|
||||
# replace libraries
|
||||
|
||||
$ADB shell rm -f /vendor/lib64/libgallium_dri.so*
|
||||
$ADB shell rm -f /vendor/lib64/egl/libEGL_mesa.so*
|
||||
$ADB shell rm -f /vendor/lib64/egl/libGLESv1_CM_mesa.so*
|
||||
$ADB shell rm -f /vendor/lib64/egl/libGLESv2_mesa.so*
|
||||
|
||||
$ADB push "$INSTALL/lib/libgallium_dri.so" /vendor/lib64/libgallium_dri.so
|
||||
$ADB push "$INSTALL/lib/libEGL.so" /vendor/lib64/egl/libEGL_mesa.so
|
||||
$ADB push "$INSTALL/lib/libGLESv1_CM.so" /vendor/lib64/egl/libGLESv1_CM_mesa.so
|
||||
$ADB push "$INSTALL/lib/libGLESv2.so" /vendor/lib64/egl/libGLESv2_mesa.so
|
||||
|
||||
$ADB shell rm -f /vendor/lib64/hw/vulkan.lvp.so*
|
||||
$ADB shell rm -f /vendor/lib64/hw/vulkan.virtio.so*
|
||||
$ADB shell rm -f /vendor/lib64/hw/vulkan.intel.so*
|
||||
|
||||
$ADB push "$INSTALL/lib/libvulkan_lvp.so" /vendor/lib64/hw/vulkan.lvp.so
|
||||
$ADB push "$INSTALL/lib/libvulkan_virtio.so" /vendor/lib64/hw/vulkan.virtio.so
|
||||
$ADB push "$INSTALL/lib/libvulkan_intel.so" /vendor/lib64/hw/vulkan.intel.so
|
||||
|
||||
$ADB shell rm -f /vendor/lib64/egl/libEGL_emulation.so*
|
||||
$ADB shell rm -f /vendor/lib64/egl/libGLESv1_CM_emulation.so*
|
||||
$ADB shell rm -f /vendor/lib64/egl/libGLESv2_emulation.so*
|
||||
|
||||
ANGLE_DEST_PATH=/vendor/lib64/egl
|
||||
if [ "$ANDROID_VERSION" -ge 15 ]; then
|
||||
ANGLE_DEST_PATH=/system/lib64
|
||||
fi
|
||||
|
||||
$ADB shell rm -f "$ANGLE_DEST_PATH/libEGL_angle.so"*
|
||||
$ADB shell rm -f "$ANGLE_DEST_PATH/libGLESv1_CM_angle.so"*
|
||||
$ADB shell rm -f "$ANGLE_DEST_PATH/libGLESv2_angle.so"*
|
||||
|
||||
$ADB push /angle/libEGL_angle.so "$ANGLE_DEST_PATH/libEGL_angle.so"
|
||||
$ADB push /angle/libGLESv1_CM_angle.so "$ANGLE_DEST_PATH/libGLESv1_CM_angle.so"
|
||||
$ADB push /angle/libGLESv2_angle.so "$ANGLE_DEST_PATH/libGLESv2_angle.so"
|
||||
|
||||
get_gles_runtime_version() {
|
||||
while [ "$($ADB shell dumpsys SurfaceFlinger | grep GLES:)" = "" ] ; do sleep 1; done
|
||||
$ADB shell dumpsys SurfaceFlinger | grep GLES
|
||||
}
|
||||
|
||||
# Check what GLES implementation is used before loading the new libraries
|
||||
get_gles_runtime_version
|
||||
|
||||
# restart Android shell, so that services use the new libraries
|
||||
$ADB shell stop
|
||||
$ADB shell start
|
||||
|
||||
# Check what GLES implementation is used after loading the new libraries
|
||||
GLES_RUNTIME_VERSION="$(get_gles_runtime_version)"
|
||||
|
||||
if [ -n "$ANGLE_TAG" ]; then
|
||||
# Note: we are injecting the ANGLE libs too, so we need to check if the
|
||||
# ANGLE libs are being used after the shell restart.
|
||||
ANGLE_HASH=$(head -c 12 /angle/version)
|
||||
if ! printf "%s" "$GLES_RUNTIME_VERSION" | grep --quiet "${ANGLE_HASH}"; then
|
||||
echo "Fatal: Android is loading a wrong version of the ANGLE libs: ${ANGLE_HASH}" 1>&2
|
||||
exit 1
|
||||
fi
|
||||
else
|
||||
MESA_BUILD_VERSION=$(cat "$INSTALL/VERSION")
|
||||
if ! printf "%s" "$GLES_RUNTIME_VERSION" | grep --quiet "${MESA_BUILD_VERSION}$"; then
|
||||
echo "Fatal: Android is loading a wrong version of the Mesa3D GLES libs: ${GLES_RUNTIME_VERSION}" 1>&2
|
||||
exit 1
|
||||
fi
|
||||
fi
|
||||
|
||||
if [ -n "$USE_ANDROID_CTS" ]; then
|
||||
# The script sets EXIT_CODE
|
||||
. "$(dirname "$0")/android-cts-runner.sh"
|
||||
else
|
||||
# The script sets EXIT_CODE
|
||||
. "$(dirname "$0")/android-deqp-runner.sh"
|
||||
fi
|
||||
|
||||
exit $EXIT_CODE
|
@@ -2,67 +2,67 @@ version: 1
|
||||
|
||||
# Rules to match for a machine to qualify
|
||||
target:
|
||||
id: '{{ CI_RUNNER_DESCRIPTION }}'
|
||||
id: '{{ ci_runner_description }}'
|
||||
|
||||
timeouts:
|
||||
|
||||
first_console_activity: # This limits the time it can take to receive the first console log
|
||||
minutes: {{ B2C_TIMEOUT_FIRST_CONSOLE_ACTIVITY_MINUTES | default(0, true) }}
|
||||
seconds: {{ B2C_TIMEOUT_FIRST_CONSOLE_ACTIVITY_SECONDS | default(0, true) }}
|
||||
retries: {{ B2C_TIMEOUT_FIRST_CONSOLE_ACTIVITY_RETRIES }}
|
||||
minutes: {{ timeout_first_console_activity_minutes | default(0, true) }}
|
||||
seconds: {{ timeout_first_console_activity_seconds | default(0, true) }}
|
||||
retries: {{ timeout_first_console_activity_retries }}
|
||||
|
||||
console_activity: # Reset every time we receive a message from the logs
|
||||
minutes: {{ B2C_TIMEOUT_CONSOLE_ACTIVITY_MINUTES | default(0, true) }}
|
||||
seconds: {{ B2C_TIMEOUT_CONSOLE_ACTIVITY_SECONDS | default(0, true) }}
|
||||
retries: {{ B2C_TIMEOUT_CONSOLE_ACTIVITY_RETRIES }}
|
||||
minutes: {{ timeout_console_activity_minutes | default(0, true) }}
|
||||
seconds: {{ timeout_console_activity_seconds | default(0, true) }}
|
||||
retries: {{ timeout_console_activity_retries }}
|
||||
|
||||
boot_cycle:
|
||||
minutes: {{ B2C_TIMEOUT_BOOT_MINUTES | default(0, true) }}
|
||||
seconds: {{ B2C_TIMEOUT_BOOT_SECONDS | default(0, true) }}
|
||||
retries: {{ B2C_TIMEOUT_BOOT_RETRIES }}
|
||||
minutes: {{ timeout_boot_minutes | default(0, true) }}
|
||||
seconds: {{ timeout_boot_seconds | default(0, true) }}
|
||||
retries: {{ timeout_boot_retries }}
|
||||
|
||||
overall: # Maximum time the job can take, not overrideable by the "continue" deployment
|
||||
minutes: {{ B2C_TIMEOUT_OVERALL_MINUTES | default(0, true) }}
|
||||
seconds: {{ B2C_TIMEOUT_OVERALL_SECONDS | default(0, true) }}
|
||||
minutes: {{ timeout_overall_minutes | default(0, true) }}
|
||||
seconds: {{ timeout_overall_seconds | default(0, true) }}
|
||||
retries: 0
|
||||
# no retries possible here
|
||||
|
||||
watchdogs:
|
||||
boot:
|
||||
minutes: {{ B2C_TIMEOUT_BOOT_WD_MINUTES | default(0, true) }}
|
||||
seconds: {{ B2C_TIMEOUT_BOOT_WD_SECONDS | default(0, true) }}
|
||||
retries: {{ B2C_TIMEOUT_BOOT_WD_RETRIES | default(0, true) }}
|
||||
minutes: {{ timeout_boot_wd_minutes | default(0, true) }}
|
||||
seconds: {{ timeout_boot_wd_seconds | default(0, true) }}
|
||||
retries: {{ timeout_boot_wd_retries | default(0, true) }}
|
||||
|
||||
console_patterns:
|
||||
session_end:
|
||||
regex: >-
|
||||
{{ B2C_SESSION_END_REGEX }}
|
||||
{% if B2C_SESSION_REBOOT_REGEX %}
|
||||
{{ session_end_regex }}
|
||||
{% if session_reboot_regex %}
|
||||
session_reboot:
|
||||
regex: >-
|
||||
{{ B2C_SESSION_REBOOT_REGEX }}
|
||||
{{ session_reboot_regex }}
|
||||
{% endif %}
|
||||
job_success:
|
||||
regex: >-
|
||||
{{ B2C_JOB_SUCCESS_REGEX }}
|
||||
{% if B2C_JOB_WARN_REGEX %}
|
||||
{{ job_success_regex }}
|
||||
{% if job_warn_regex %}
|
||||
job_warn:
|
||||
regex: >-
|
||||
{{ B2C_JOB_WARN_REGEX }}
|
||||
{{ job_warn_regex }}
|
||||
{% endif %}
|
||||
|
||||
{% if B2C_BOOT_WD_START_REGEX and B2C_BOOT_WD_STOP_REGEX %}
|
||||
{% if boot_wd_start_regex and boot_wd_stop_regex %}
|
||||
watchdogs:
|
||||
boot:
|
||||
start:
|
||||
regex: >-
|
||||
{{ B2C_BOOT_WD_START_REGEX }}
|
||||
{{ boot_wd_start_regex }}
|
||||
reset:
|
||||
regex: >-
|
||||
{{ B2C_BOOT_WD_RESET_REGEX | default(B2C_BOOT_WD_START_REGEX, true) }}
|
||||
{{ boot_wd_reset_regex | default(boot_wd_start_regex, true) }}
|
||||
stop:
|
||||
regex: >-
|
||||
{{ B2C_BOOT_WD_STOP_REGEX }}
|
||||
{{ boot_wd_stop_regex }}
|
||||
{% endif %}
|
||||
|
||||
# Environment to deploy
|
||||
@@ -70,49 +70,21 @@ deployment:
|
||||
# Initial boot
|
||||
start:
|
||||
storage:
|
||||
{% if B2C_IMAGESTORE_PLATFORM %}
|
||||
imagestore:
|
||||
public:
|
||||
# List of images that should be pulled into the image store ahead of execution
|
||||
images:
|
||||
mars:
|
||||
name: "{{ B2C_MACHINE_REGISTRATION_IMAGE }}"
|
||||
platform: "{{ B2C_IMAGESTORE_PLATFORM }}"
|
||||
tls_verify: false
|
||||
{% set machine_registration_image="{% raw %}{{ job.imagestore.public.mars.image_id }}{% endraw %}" %}
|
||||
telegraf:
|
||||
name: "{{ B2C_TELEGRAF_IMAGE }}"
|
||||
platform: "{{ B2C_IMAGESTORE_PLATFORM }}"
|
||||
tls_verify: false
|
||||
{% set telegraf_image="{% raw %}{{ job.imagestore.public.telegraf.image_id }}{% endraw %}" %}
|
||||
image_under_test:
|
||||
name: "{{ B2C_IMAGE_UNDER_TEST }}"
|
||||
platform: "{{ B2C_IMAGESTORE_PLATFORM }}"
|
||||
tls_verify: false
|
||||
{% set image_under_test="{% raw %}{{ job.imagestore.public.image_under_test.image_id }}{% endraw %}" %}
|
||||
nbd:
|
||||
storage:
|
||||
max_connections: 5
|
||||
size: 10G
|
||||
{% endif %}
|
||||
|
||||
http:
|
||||
- path: "/install.tar.zst"
|
||||
url: "{{ B2C_INSTALL_TARBALL_URL }}"
|
||||
- path: "/b2c-extra-args"
|
||||
data: >
|
||||
b2c.pipefail b2c.poweroff_delay={{ B2C_POWEROFF_DELAY }}
|
||||
b2c.pipefail b2c.poweroff_delay={{ poweroff_delay }}
|
||||
b2c.minio="gateway,{{ '{{' }} minio_url }},{{ '{{' }} job_bucket_access_key }},{{ '{{' }} job_bucket_secret_key }}"
|
||||
b2c.volume="{{ '{{' }} job_bucket }}-results,mirror=gateway/{{ '{{' }} job_bucket }},pull_on=pipeline_start,push_on=changes,overwrite{% for excl in B2C_JOB_VOLUME_EXCLUSIONS.split(',') %},exclude={{ excl }}{% endfor %},remove,expiration=pipeline_end,preserve"
|
||||
{% for volume in B2C_VOLUMES %}
|
||||
b2c.volume="{{ '{{' }} job_bucket }}-results,mirror=gateway/{{ '{{' }} job_bucket }},pull_on=pipeline_start,push_on=changes,overwrite{% for excl in job_volume_exclusions %},exclude={{ excl }}{% endfor %},remove,expiration=pipeline_end,preserve"
|
||||
{% for volume in volumes %}
|
||||
b2c.volume={{ volume }}
|
||||
{% endfor %}
|
||||
b2c.run_service="--privileged --tls-verify=false --pid=host {{ B2C_TELEGRAF_IMAGE }}" b2c.hostname=dut-{{ '{{' }} machine.full_name }}
|
||||
b2c.run="-ti --tls-verify=false {{ B2C_MACHINE_REGISTRATION_IMAGE }} {% if B2C_MARS_SETUP_TAGS %}setup --tags {{ B2C_MARS_SETUP_TAGS }}{% else %}check{% endif %}"
|
||||
b2c.run="-v {{ '{{' }} job_bucket }}-results:{{ CI_PROJECT_DIR }} -w {{ CI_PROJECT_DIR }} {% for mount_volume in B2C_MOUNT_VOLUMES %} -v {{ mount_volume }}{% endfor %} --tls-verify=false --entrypoint bash {{ B2C_IMAGE_UNDER_TEST }} -euc 'curl --fail -q {{ '{{' }} job.http.url }}/install.tar.zst | tar --zstd -x; {{ B2C_CONTAINER_CMD }}'"
|
||||
b2c.run_service="--privileged --tls-verify=false --pid=host docker://{{ '{{' }} fdo_proxy_registry }}/gfx-ci/ci-tron/telegraf:latest" b2c.hostname=dut-{{ '{{' }} machine.full_name }}
|
||||
b2c.run="-ti --tls-verify=false docker://{{ '{{' }} fdo_proxy_registry }}/gfx-ci/ci-tron/machine-registration:latest check"
|
||||
b2c.run="-v {{ '{{' }} job_bucket }}-results:{{ working_dir }} -w {{ working_dir }} {% for mount_volume in mount_volumes %} -v {{ mount_volume }}{% endfor %} --tls-verify=false docker://{{ local_container }} {{ container_cmd | replace('"', '\\\"') }}"
|
||||
kernel:
|
||||
{% if B2C_KERNEL_URL %}
|
||||
url: '{{ B2C_KERNEL_URL }}'
|
||||
{% if kernel_url %}
|
||||
url: '{{ kernel_url }}'
|
||||
{% endif %}
|
||||
|
||||
# NOTE: b2c.cache_device should not be here, but this works around
|
||||
@@ -120,36 +92,28 @@ deployment:
|
||||
cmdline: >
|
||||
SALAD.machine_id={{ '{{' }} machine_id }}
|
||||
console={{ '{{' }} local_tty_device }},115200
|
||||
b2c.ntp_peer=10.42.0.1
|
||||
b2c.cache_device=auto b2c.ntp_peer=10.42.0.1
|
||||
b2c.extra_args_url={{ '{{' }} job.http.url }}/b2c-extra-args
|
||||
{% if B2C_IMAGESTORE_PLATFORM is defined %}
|
||||
{{ '{{' }} imagestore.mount("public").nfs.to_b2c_filesystem("publicimgstore") }}
|
||||
b2c.storage="additionalimagestores=publicimgstore"
|
||||
b2c.nbd=/dev/nbd0,host=ci-gateway,port={% raw %}{{ '{{' }} job.nbd.storage.tcp_port }}{% endraw %},connections=5
|
||||
b2c.cache_device=/dev/nbd0
|
||||
{% else %}
|
||||
b2c.cache_device=auto
|
||||
{% endif %}
|
||||
{% if B2C_KERNEL_CMDLINE_EXTRAS is defined %}
|
||||
{{ B2C_KERNEL_CMDLINE_EXTRAS }}
|
||||
{% if kernel_cmdline_extras is defined %}
|
||||
{{ kernel_cmdline_extras }}
|
||||
{% endif %}
|
||||
|
||||
{% if B2C_INITRAMFS_URL or B2C_FIRMWARE_URL %}
|
||||
{% if initramfs_url or firmware_url %}
|
||||
initramfs:
|
||||
{% if B2C_FIRMWARE_URL %}
|
||||
- url: '{{ B2C_FIRMWARE_URL }}'
|
||||
{% if firmware_url %}
|
||||
- url: '{{ firmware_url }}'
|
||||
{% endif %}
|
||||
{% if B2C_INITRAMFS_URL %}
|
||||
- url: '{{ B2C_INITRAMFS_URL }}'
|
||||
{% if initramfs_url %}
|
||||
- url: '{{ initramfs_url }}'
|
||||
{% endif %}
|
||||
{% endif %}
|
||||
|
||||
{% if B2C_DTB_URL %}
|
||||
{% if dtb_url %}
|
||||
dtb:
|
||||
url: '{{ B2C_DTB_URL }}'
|
||||
{% if B2C_DTB_MATCH %}
|
||||
url: '{{ dtb_url }}'
|
||||
{% if dtb_match %}
|
||||
format:
|
||||
archive:
|
||||
match: "{{ B2C_DTB_MATCH }}"
|
||||
match: "{{ dtb_match }}"
|
||||
{% endif %}
|
||||
{% endif %}
|
||||
|
@@ -25,16 +25,31 @@ from jinja2 import Environment, FileSystemLoader
|
||||
from os import environ, path
|
||||
|
||||
|
||||
# Pass through all the CI and B2C environment variables
|
||||
# Pass all the environment variables prefixed by B2C_
|
||||
values = {
|
||||
key: environ[key]
|
||||
for key in environ if key.startswith("B2C_") or key.startswith("CI_")
|
||||
key.removeprefix("B2C_").lower(): environ[key]
|
||||
for key in environ if key.startswith("B2C_")
|
||||
}
|
||||
|
||||
env = Environment(loader=FileSystemLoader(path.dirname(environ['B2C_JOB_TEMPLATE'])),
|
||||
env = Environment(loader=FileSystemLoader(path.dirname(values['job_template'])),
|
||||
trim_blocks=True, lstrip_blocks=True)
|
||||
|
||||
template = env.get_template(path.basename(environ['B2C_JOB_TEMPLATE']))
|
||||
template = env.get_template(path.basename(values['job_template']))
|
||||
|
||||
with open(path.splitext(path.basename(environ['B2C_JOB_TEMPLATE']))[0], "w") as f:
|
||||
values['ci_job_id'] = environ['CI_JOB_ID']
|
||||
values['ci_runner_description'] = environ['CI_RUNNER_DESCRIPTION']
|
||||
values['job_volume_exclusions'] = [excl for excl in values['job_volume_exclusions'].split(",") if excl]
|
||||
values['working_dir'] = environ['CI_PROJECT_DIR']
|
||||
|
||||
# Use the gateway's pull-through registry caches to reduce load on fd.o.
|
||||
values['local_container'] = environ['IMAGE_UNDER_TEST']
|
||||
values['local_container'] = values['local_container'].replace(
|
||||
'registry.freedesktop.org',
|
||||
'{{ fdo_proxy_registry }}'
|
||||
)
|
||||
|
||||
if 'kernel_cmdline_extras' not in values:
|
||||
values['kernel_cmdline_extras'] = ''
|
||||
|
||||
with open(path.splitext(path.basename(values['job_template']))[0], "w") as f:
|
||||
f.write(template.render(values))
|
||||
|
@@ -82,7 +82,11 @@ else
|
||||
# Finally, pack it up into a cpio rootfs. Skip the vulkan CTS since none of
|
||||
# these devices use it and it would take up space in the initrd.
|
||||
|
||||
EXCLUDE_FILTER="deqp|arb_gpu_shader5|arb_gpu_shader_fp64|arb_gpu_shader_int64|glsl-4.[0123456]0|arb_tessellation_shader"
|
||||
if [ -n "$PIGLIT_PROFILES" ]; then
|
||||
EXCLUDE_FILTER="deqp|arb_gpu_shader5|arb_gpu_shader_fp64|arb_gpu_shader_int64|glsl-4.[0123456]0|arb_tessellation_shader"
|
||||
else
|
||||
EXCLUDE_FILTER="piglit|python"
|
||||
fi
|
||||
|
||||
pushd rootfs
|
||||
find -H . | \
|
||||
|
@@ -23,7 +23,7 @@ set +x
|
||||
|
||||
# Pass through relevant env vars from the gitlab job to the baremetal init script
|
||||
echo "Variables passed through:"
|
||||
"$CI_COMMON"/export-gitlab-job-env-for-dut.sh | tee $rootfs_dst/set-job-env-vars.sh
|
||||
"$CI_COMMON"/generate-env.sh | tee $rootfs_dst/set-job-env-vars.sh
|
||||
|
||||
set -x
|
||||
|
||||
|
@@ -4,17 +4,15 @@
|
||||
# Cancel job if a newer commit is pushed to the same branch
|
||||
interruptible: true
|
||||
variables:
|
||||
# Build jobs are typically taking between 5-12 minutes, depending on how
|
||||
# much they build and how many new Rust compilers we have to build twice.
|
||||
# Allow 25 minutes as a reasonable margin: beyond this point, something
|
||||
# has gone badly wrong, and we should try again to see if we can get
|
||||
# something from it.
|
||||
#
|
||||
# Some jobs not in the critical path use a higher timeout, particularly
|
||||
# when building with ASan or UBSan.
|
||||
BUILD_JOB_TIMEOUT: 12m
|
||||
# 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: 16m
|
||||
timeout: 1h
|
||||
# We don't want to download any previous job's artifacts
|
||||
dependencies: []
|
||||
artifacts:
|
||||
@@ -26,12 +24,6 @@
|
||||
- _build/.ninja_log
|
||||
- artifacts
|
||||
|
||||
.build-run-long:
|
||||
variables:
|
||||
BUILD_JOB_TIMEOUT: 18m
|
||||
timeout: 25m
|
||||
|
||||
|
||||
# Just Linux
|
||||
.build-linux:
|
||||
extends: .build-common
|
||||
@@ -63,30 +55,50 @@
|
||||
paths:
|
||||
- subprojects/packagecache
|
||||
|
||||
.meson-build-for-tests:
|
||||
.meson-build:
|
||||
extends:
|
||||
- .build-linux
|
||||
stage: build-for-tests
|
||||
script:
|
||||
- &meson-build timeout --verbose ${BUILD_JOB_TIMEOUT_OVERRIDE:-$BUILD_JOB_TIMEOUT} bash --login .gitlab-ci/meson/build.sh
|
||||
- .gitlab-ci/prepare-artifacts.sh
|
||||
|
||||
.meson-build-only:
|
||||
extends:
|
||||
- .meson-build-for-tests
|
||||
- .build-only-delayed-rules
|
||||
- .use-debian/x86_64_build
|
||||
stage: build-only
|
||||
script:
|
||||
- *meson-build
|
||||
- &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-for-tests
|
||||
- .use-debian/x86_64_build
|
||||
- .build-run-long # but it really shouldn't! tracked in mesa#12544
|
||||
- .meson-build
|
||||
- .ci-deqp-artifacts
|
||||
stage: build-for-tests
|
||||
variables:
|
||||
BUILD_JOB_TIMEOUT: 30m
|
||||
UNWIND: "enabled"
|
||||
DRI_LOADERS: >
|
||||
-D egl=enabled
|
||||
@@ -108,6 +120,9 @@ debian-testing:
|
||||
-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
|
||||
@@ -115,9 +130,9 @@ debian-testing:
|
||||
debian-testing-asan:
|
||||
extends:
|
||||
- debian-testing
|
||||
- .meson-build-for-tests
|
||||
- .build-run-long
|
||||
stage: build-for-tests
|
||||
variables:
|
||||
BUILD_JOB_TIMEOUT: 30m
|
||||
VULKAN_DRIVERS: "swrast"
|
||||
GALLIUM_DRIVERS: "llvmpipe,softpipe"
|
||||
C_ARGS: >
|
||||
@@ -154,15 +169,14 @@ debian-testing-msan:
|
||||
# msan cannot fully work until it's used together with msan libc
|
||||
extends:
|
||||
- debian-clang
|
||||
- .meson-build-only
|
||||
- .build-run-long
|
||||
# `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
|
||||
-D precomp-compiler=system
|
||||
S3_ARTIFACT_NAME: ""
|
||||
ARTIFACTS_DEBUG_SYMBOLS: 1
|
||||
# Don't run all the tests yet:
|
||||
@@ -172,34 +186,33 @@ debian-testing-msan:
|
||||
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 and precomp-compiler (msan complains about uninitialized
|
||||
# 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=panfrost
|
||||
-D gallium-drivers=
|
||||
-D vulkan-drivers=
|
||||
-D video-codecs=
|
||||
-D glx=disabled
|
||||
-D platforms=
|
||||
-D mesa-clc=enabled
|
||||
-D install-mesa-clc=true
|
||||
-D precomp-compiler=enabled
|
||||
-D install-precomp-compiler=true
|
||||
|
||||
debian-testing-ubsan:
|
||||
extends:
|
||||
- debian-testing
|
||||
- .meson-build-for-tests
|
||||
- .build-run-long
|
||||
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: "llvmpipe,softpipe"
|
||||
GALLIUM_DRIVERS: "swrast"
|
||||
VULKAN_DRIVERS: "swrast"
|
||||
EXTRA_OPTION: >
|
||||
-D b_sanitize=undefined
|
||||
@@ -224,9 +237,8 @@ debian-testing-ubsan:
|
||||
-D install-mesa-clc=true
|
||||
|
||||
debian-build-testing:
|
||||
extends:
|
||||
- .meson-build-for-tests
|
||||
- .use-debian/x86_64_build
|
||||
extends: .meson-build
|
||||
stage: build-for-tests
|
||||
variables:
|
||||
UNWIND: "enabled"
|
||||
DRI_LOADERS: >
|
||||
@@ -235,7 +247,6 @@ debian-build-testing:
|
||||
-D egl=enabled
|
||||
-D glvnd=disabled
|
||||
-D platforms=x11,wayland
|
||||
-D legacy-x11=dri2
|
||||
GALLIUM_ST: >
|
||||
-D gallium-extra-hud=true
|
||||
-D gallium-vdpau=enabled
|
||||
@@ -248,15 +259,52 @@ debian-build-testing:
|
||||
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
|
||||
|
||||
# Test a release build with -Werror so new warnings don't sneak in.
|
||||
debian-release:
|
||||
extends:
|
||||
- .meson-build-only
|
||||
- .use-debian/x86_64_build
|
||||
extends: .meson-build
|
||||
needs:
|
||||
- !reference [.meson-build, needs]
|
||||
- !reference [.build-for-tests-jobs]
|
||||
variables:
|
||||
UNWIND: "enabled"
|
||||
C_ARGS: >
|
||||
@@ -279,9 +327,9 @@ debian-release:
|
||||
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 precomp-compiler=enabled
|
||||
-D intel-rt=enabled
|
||||
-D imagination-srv=true
|
||||
BUILDTYPE: "release"
|
||||
@@ -292,9 +340,13 @@ debian-release:
|
||||
|
||||
alpine-build-testing:
|
||||
extends:
|
||||
- .meson-build-only
|
||||
- .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
|
||||
@@ -322,16 +374,15 @@ alpine-build-testing:
|
||||
-D microsoft-clc=disabled
|
||||
-D shared-llvm=enabled
|
||||
UNWIND: "disabled"
|
||||
VULKAN_DRIVERS: "amd,broadcom,freedreno,intel,imagination-experimental"
|
||||
VULKAN_DRIVERS: "amd,asahi,broadcom,freedreno,intel,imagination-experimental"
|
||||
|
||||
fedora-release:
|
||||
extends:
|
||||
- .meson-build-only
|
||||
- .meson-build
|
||||
- .use-fedora/x86_64_build
|
||||
- .build-run-long
|
||||
# LTO builds can be really very slow, and we have no way to specify different
|
||||
# timeouts for pre-merge and nightly jobs
|
||||
timeout: 1h
|
||||
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
|
||||
@@ -352,6 +403,7 @@ fedora-release:
|
||||
-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
|
||||
@@ -379,7 +431,9 @@ debian-android:
|
||||
- .meson-cross
|
||||
- .use-debian/android_build
|
||||
- .ci-deqp-artifacts
|
||||
- .meson-build-for-tests
|
||||
needs:
|
||||
- !reference [.use-debian/android_build, needs]
|
||||
- !reference [.build-for-tests-jobs]
|
||||
variables:
|
||||
BUILDTYPE: debug
|
||||
UNWIND: "disabled"
|
||||
@@ -408,7 +462,6 @@ debian-android:
|
||||
-D valgrind=disabled
|
||||
-D android-libbacktrace=disabled
|
||||
-D mesa-clc=system
|
||||
-D precomp-compiler=system
|
||||
GALLIUM_ST: >
|
||||
-D gallium-vdpau=disabled
|
||||
-D gallium-va=disabled
|
||||
@@ -420,41 +473,33 @@ debian-android:
|
||||
-D build-tests=false
|
||||
-D enable-glcpp-tests=false
|
||||
-D gallium-opencl=disabled
|
||||
-D gallium-drivers=panfrost
|
||||
-D gallium-drivers=
|
||||
-D vulkan-drivers=
|
||||
-D video-codecs=
|
||||
-D glx=disabled
|
||||
-D platforms=
|
||||
-D mesa-clc=enabled
|
||||
-D install-mesa-clc=true
|
||||
-D precomp-compiler=enabled
|
||||
-D install-precomp-compiler=true
|
||||
ARTIFACTS_DEBUG_SYMBOLS: 1
|
||||
S3_ARTIFACT_NAME: mesa-x86_64-android-${BUILDTYPE}
|
||||
script:
|
||||
# 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
|
||||
- export VULKAN_DRIVERS=intel,virtio,swrast
|
||||
- .gitlab-ci/create-llvm-meson-wrap-file.sh
|
||||
- *meson-build
|
||||
- .gitlab-ci/prepare-artifacts.sh
|
||||
# remove all the files created by the previous build before the next build
|
||||
- git clean -dxf .
|
||||
# aarch64 build:
|
||||
# build-only, to catch compilation regressions
|
||||
# without calling .gitlab-ci/prepare-artifacts.sh so that the
|
||||
# artifacts are not shipped in mesa-x86_64-android-${BUILDTYPE}
|
||||
- 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-only
|
||||
- .use-debian/x86_64_build
|
||||
- .meson-build
|
||||
variables:
|
||||
UNWIND: "disabled"
|
||||
DRI_LOADERS: >
|
||||
@@ -462,6 +507,7 @@ debian-android:
|
||||
-D gbm=enabled
|
||||
-D egl=enabled
|
||||
-D platforms=x11,wayland
|
||||
-D osmesa=false
|
||||
GALLIUM_ST: >
|
||||
-D gallium-vdpau=disabled
|
||||
-D gallium-va=disabled
|
||||
@@ -472,16 +518,20 @@ debian-android:
|
||||
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
|
||||
- .meson-build-for-tests
|
||||
stage: build-for-tests
|
||||
variables:
|
||||
CROSS: armhf
|
||||
DRI_LOADERS:
|
||||
@@ -493,32 +543,20 @@ debian-arm32:
|
||||
-D llvm=disabled
|
||||
-D valgrind=disabled
|
||||
-D gallium-rusticl=false
|
||||
-D mesa-clc=system
|
||||
-D precomp-compiler=system
|
||||
HOST_BUILD_OPTIONS: >
|
||||
-D build-tests=false
|
||||
-D enable-glcpp-tests=false
|
||||
-D gallium-opencl=disabled
|
||||
-D gallium-drivers=panfrost
|
||||
-D vulkan-drivers=
|
||||
-D video-codecs=
|
||||
-D glx=disabled
|
||||
-D platforms=
|
||||
-D mesa-clc=enabled
|
||||
-D install-mesa-clc=true
|
||||
-D precomp-compiler=enabled
|
||||
-D install-precomp-compiler=true
|
||||
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
|
||||
- .meson-build-for-tests
|
||||
- .build-run-long
|
||||
stage: build-for-tests
|
||||
variables:
|
||||
BUILD_JOB_TIMEOUT: 30m
|
||||
GALLIUM_DRIVERS: "etnaviv"
|
||||
VULKAN_DRIVERS: ""
|
||||
DRI_LOADERS:
|
||||
@@ -537,7 +575,7 @@ debian-arm64:
|
||||
extends:
|
||||
- .meson-arm
|
||||
- .ci-deqp-artifacts
|
||||
- .meson-build-for-tests
|
||||
stage: build-for-tests
|
||||
variables:
|
||||
C_ARGS: >
|
||||
-Wno-error=array-bounds
|
||||
@@ -555,13 +593,16 @@ debian-arm64:
|
||||
-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
|
||||
- .meson-build-for-tests
|
||||
- .build-run-long
|
||||
stage: build-for-tests
|
||||
variables:
|
||||
BUILD_JOB_TIMEOUT: 30m
|
||||
VULKAN_DRIVERS: "broadcom,freedreno"
|
||||
GALLIUM_DRIVERS: "freedreno,vc4,v3d"
|
||||
DRI_LOADERS:
|
||||
@@ -578,9 +619,9 @@ debian-arm64-asan:
|
||||
debian-arm64-ubsan:
|
||||
extends:
|
||||
- debian-arm64
|
||||
- .meson-build-for-tests
|
||||
- .build-run-long
|
||||
stage: build-for-tests
|
||||
variables:
|
||||
BUILD_JOB_TIMEOUT: 30m
|
||||
VULKAN_DRIVERS: "broadcom"
|
||||
GALLIUM_DRIVERS: "v3d,vc4"
|
||||
C_ARGS: >
|
||||
@@ -603,7 +644,9 @@ debian-arm64-build-test:
|
||||
extends:
|
||||
- .meson-arm
|
||||
- .ci-deqp-artifacts
|
||||
- .meson-build-only
|
||||
needs:
|
||||
- !reference [.meson-arm, needs]
|
||||
- !reference [.build-for-tests-jobs]
|
||||
variables:
|
||||
VULKAN_DRIVERS: "amd,asahi,imagination-experimental,nouveau"
|
||||
DRI_LOADERS:
|
||||
@@ -615,7 +658,10 @@ debian-arm64-build-test:
|
||||
debian-arm64-release:
|
||||
extends:
|
||||
- debian-arm64
|
||||
- .meson-build-only
|
||||
stage: build-only
|
||||
needs:
|
||||
- !reference [debian-arm64, needs]
|
||||
- !reference [.build-for-tests-jobs]
|
||||
variables:
|
||||
BUILDTYPE: release
|
||||
S3_ARTIFACT_NAME: mesa-arm64-default-${BUILDTYPE}
|
||||
@@ -630,7 +676,10 @@ debian-arm64-release:
|
||||
debian-no-libdrm:
|
||||
extends:
|
||||
- .meson-arm
|
||||
- .meson-build-only
|
||||
stage: build-only
|
||||
needs:
|
||||
- !reference [.meson-arm, needs]
|
||||
- !reference [.build-for-tests-jobs]
|
||||
variables:
|
||||
VULKAN_DRIVERS: freedreno
|
||||
GALLIUM_DRIVERS: "zink,llvmpipe"
|
||||
@@ -644,12 +693,12 @@ debian-no-libdrm:
|
||||
-D glx=disabled
|
||||
-D gbm=disabled
|
||||
-D egl=disabled
|
||||
-D perfetto=true
|
||||
|
||||
debian-clang:
|
||||
extends:
|
||||
- .meson-build-only
|
||||
- .use-debian/x86_64_build
|
||||
extends: .meson-build
|
||||
needs:
|
||||
- !reference [.meson-build, needs]
|
||||
- !reference [.build-for-tests-jobs]
|
||||
variables:
|
||||
BUILDTYPE: debug
|
||||
UNWIND: "enabled"
|
||||
@@ -682,17 +731,17 @@ debian-clang:
|
||||
-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-radv-tests=true
|
||||
-D build-aco-tests=true
|
||||
-D mesa-clc=enabled
|
||||
-D precomp-compiler=enabled
|
||||
-D intel-rt=enabled
|
||||
-D imagination-srv=true
|
||||
-D teflon=true
|
||||
@@ -700,11 +749,10 @@ debian-clang:
|
||||
CXX: clang++-${LLVM_VERSION}
|
||||
|
||||
debian-clang-release:
|
||||
extends:
|
||||
- debian-clang
|
||||
- .meson-build-only
|
||||
- .build-run-long
|
||||
extends: debian-clang
|
||||
# `needs:` inherited from debian-clang
|
||||
variables:
|
||||
BUILD_JOB_TIMEOUT: 30m
|
||||
BUILDTYPE: "release"
|
||||
DRI_LOADERS: >
|
||||
-D glx=xlib
|
||||
@@ -720,6 +768,7 @@ debian-clang-release:
|
||||
-D llvm=enabled
|
||||
-D microsoft-clc=disabled
|
||||
-D shared-llvm=enabled
|
||||
-D shared-glapi=disabled
|
||||
|
||||
windows-msvc:
|
||||
extends:
|
||||
@@ -735,10 +784,12 @@ windows-msvc:
|
||||
- _install/
|
||||
|
||||
debian-vulkan:
|
||||
extends:
|
||||
- .meson-build-only
|
||||
- .use-debian/x86_64_build
|
||||
extends: .meson-build
|
||||
needs:
|
||||
- !reference [.meson-build, needs]
|
||||
- !reference [.build-for-tests-jobs]
|
||||
variables:
|
||||
BUILD_JOB_TIMEOUT: 30m
|
||||
BUILDTYPE: debug
|
||||
UNWIND: "disabled"
|
||||
DRI_LOADERS: >
|
||||
@@ -750,6 +801,7 @@ debian-vulkan:
|
||||
-D gles2=disabled
|
||||
-D glvnd=disabled
|
||||
-D platforms=x11,wayland
|
||||
-D osmesa=false
|
||||
GALLIUM_ST: >
|
||||
-D gallium-vdpau=disabled
|
||||
-D gallium-va=disabled
|
||||
@@ -763,7 +815,6 @@ debian-vulkan:
|
||||
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-radv-tests=true
|
||||
-D build-aco-tests=true
|
||||
-D intel-rt=disabled
|
||||
-D imagination-srv=true
|
||||
@@ -772,8 +823,9 @@ debian-x86_32:
|
||||
extends:
|
||||
- .meson-cross
|
||||
- .use-debian/x86_32_build
|
||||
- .meson-build-only
|
||||
- .build-run-long # it's not clear why this runs long, but it also doesn't matter much
|
||||
needs:
|
||||
- !reference [.use-debian/x86_32_build, needs]
|
||||
- !reference [.build-for-tests-jobs]
|
||||
variables:
|
||||
BUILDTYPE: debug
|
||||
CROSS: i386
|
||||
@@ -807,9 +859,11 @@ debian-s390x:
|
||||
extends:
|
||||
- .meson-cross
|
||||
- .use-debian/s390x_build
|
||||
- .meson-build-only
|
||||
needs:
|
||||
- !reference [.use-debian/s390x_build, needs]
|
||||
- !reference [.build-for-tests-jobs]
|
||||
tags:
|
||||
- $FDO_RUNNER_JOB_PRIORITY_TAG_X86_64_KVM
|
||||
- kvm
|
||||
variables:
|
||||
BUILDTYPE: debug
|
||||
CROSS: s390x
|
||||
@@ -822,12 +876,14 @@ debian-ppc64el:
|
||||
extends:
|
||||
- .meson-cross
|
||||
- .use-debian/ppc64el_build
|
||||
- .meson-build-only
|
||||
needs:
|
||||
- !reference [.use-debian/ppc64el_build, needs]
|
||||
- !reference [.build-for-tests-jobs]
|
||||
variables:
|
||||
BUILDTYPE: debug
|
||||
CROSS: ppc64el
|
||||
GALLIUM_DRIVERS: "nouveau,llvmpipe,softpipe,virgl,zink"
|
||||
VULKAN_DRIVERS: "swrast"
|
||||
GALLIUM_DRIVERS: "nouveau,radeonsi,llvmpipe,softpipe,virgl,zink"
|
||||
VULKAN_DRIVERS: "amd,swrast"
|
||||
DRI_LOADERS:
|
||||
-D glvnd=disabled
|
||||
|
||||
@@ -838,10 +894,11 @@ python-artifacts:
|
||||
extends:
|
||||
- .use-debian/x86_64_pyutils
|
||||
- .build-common
|
||||
- .meson-build-for-tests
|
||||
variables:
|
||||
GIT_STRATEGY: fetch
|
||||
S3_ARTIFACT_NAME: mesa-python-ci-artifacts
|
||||
timeout: 10m
|
||||
script:
|
||||
- .gitlab-ci/prepare-artifacts-python.sh
|
||||
tags:
|
||||
- placeholder-job
|
||||
|
@@ -2,9 +2,6 @@
|
||||
|
||||
VARS=(
|
||||
ACO_DEBUG
|
||||
ANGLE_TAG
|
||||
ANGLE_TRACE_FILES_TAG
|
||||
ANV_DEBUG
|
||||
ARTIFACTS_BASE_URL
|
||||
ASAN_OPTIONS
|
||||
BASE_SYSTEM_FORK_HOST_PREFIX
|
||||
@@ -13,8 +10,9 @@ VARS=(
|
||||
CI_COMMIT_REF_NAME
|
||||
CI_COMMIT_TITLE
|
||||
CI_JOB_ID
|
||||
CI_JOB_NAME
|
||||
S3_JWT_FILE
|
||||
CI_JOB_STARTED_AT
|
||||
CI_JOB_NAME
|
||||
CI_JOB_URL
|
||||
CI_MERGE_REQUEST_SOURCE_BRANCH_NAME
|
||||
CI_MERGE_REQUEST_TITLE
|
||||
@@ -66,7 +64,6 @@ VARS=(
|
||||
HWCI_START_XORG
|
||||
HWCI_TEST_ARGS
|
||||
HWCI_TEST_SCRIPT
|
||||
INTEL_XE_IGNORE_EXPERIMENTAL_WARNING
|
||||
IR3_SHADER_DEBUG
|
||||
JOB_ARTIFACTS_BASE
|
||||
JOB_RESULTS_PATH
|
||||
@@ -76,7 +73,6 @@ VARS=(
|
||||
LD_LIBRARY_PATH
|
||||
LIBGL_ALWAYS_SOFTWARE
|
||||
LP_NUM_THREADS
|
||||
LVP_POISON_MEMORY
|
||||
MESA_BASE_TAG
|
||||
MESA_BUILD_PATH
|
||||
MESA_DEBUG
|
||||
@@ -91,15 +87,18 @@ VARS=(
|
||||
MESA_TEMPLATES_COMMIT
|
||||
MESA_VK_ABORT_ON_DEVICE_LOSS
|
||||
MESA_VK_IGNORE_CONFORMANCE_WARNING
|
||||
S3_HOST
|
||||
S3_RESULTS_UPLOAD
|
||||
NIR_DEBUG
|
||||
PANVK_DEBUG
|
||||
PAN_I_WANT_A_BROKEN_VULKAN_DRIVER
|
||||
PAN_MESA_DEBUG
|
||||
PANVK_DEBUG
|
||||
PIGLIT_FRACTION
|
||||
PIGLIT_NO_WINDOW
|
||||
PIGLIT_OPTIONS
|
||||
PIGLIT_PLATFORM
|
||||
PIGLIT_REPLAY_ANGLE_ARCH
|
||||
PIGLIT_PROFILES
|
||||
PIGLIT_REPLAY_ANGLE_TAG
|
||||
PIGLIT_REPLAY_ARTIFACTS_BASE_URL
|
||||
PIGLIT_REPLAY_DEVICE_NAME
|
||||
PIGLIT_REPLAY_EXTRA_ARGS
|
||||
@@ -113,22 +112,20 @@ VARS=(
|
||||
PIPELINE_ARTIFACTS_BASE
|
||||
RADEON_DEBUG
|
||||
RADV_DEBUG
|
||||
radv_enable_float16_gfx8
|
||||
RADV_PERFTEST
|
||||
S3_HOST
|
||||
S3_JWT_FILE
|
||||
S3_RESULTS_UPLOAD
|
||||
SKQP_ASSETS_DIR
|
||||
SKQP_BACKENDS
|
||||
STORAGE_FORK_HOST_PATH
|
||||
STORAGE_MAINLINE_HOST_PATH
|
||||
TU_DEBUG
|
||||
USE_ANGLE
|
||||
VIRGL_HOST_API
|
||||
VIRGL_RENDER_SERVER
|
||||
VK_DRIVER
|
||||
WAFFLE_PLATFORM
|
||||
ZINK_DEBUG
|
||||
VK_DRIVER
|
||||
ZINK_DESCRIPTORS
|
||||
ZINK_DEBUG
|
||||
LVP_POISON_MEMORY
|
||||
|
||||
# Dead code within Mesa CI, but required by virglrender CI
|
||||
# (because they include our files in their CI)
|
@@ -92,9 +92,9 @@ if [ "$HWCI_KVM" = "true" ]; then
|
||||
} || \
|
||||
modprobe ${KVM_KERNEL_MODULE}
|
||||
|
||||
mkdir -p /kernel
|
||||
mkdir -p /lava-files
|
||||
curl -L --retry 4 -f --retry-all-errors --retry-delay 60 \
|
||||
-o "/kernel/${KERNEL_IMAGE_NAME}" \
|
||||
-o "/lava-files/${KERNEL_IMAGE_NAME}" \
|
||||
"${KERNEL_IMAGE_BASE}/amd64/${KERNEL_IMAGE_NAME}"
|
||||
fi
|
||||
|
||||
@@ -227,10 +227,10 @@ set -x
|
||||
# kill the job.
|
||||
cleanup
|
||||
|
||||
# upload artifacts (lava jobs)
|
||||
# upload artifacts
|
||||
if [ -n "$S3_RESULTS_UPLOAD" ]; then
|
||||
tar --zstd -cf results.tar.zst results/;
|
||||
s3_upload results.tar.zst "https://${S3_RESULTS_UPLOAD}/"
|
||||
ci-fairy s3cp --token-file "${S3_JWT_FILE}" results.tar.zst https://"$S3_RESULTS_UPLOAD"/results.tar.zst;
|
||||
fi
|
||||
|
||||
# We still need to echo the hwci: mesa message, as some scripts rely on it, such
|
||||
|
@@ -35,27 +35,6 @@
|
||||
# - gt_act_freq_mhz (the actual GPU freq)
|
||||
# - gt_cur_freq_mhz (the last requested freq)
|
||||
#
|
||||
# Intel later switched to per-tile sysfs interfaces, which is what the Xe DRM
|
||||
# driver exlusively uses, and the capabilites are now located under the
|
||||
# following directory for the first tile:
|
||||
#
|
||||
# /sys/class/drm/card<n>/device/tile0/gt0/freq0/<freq_info>
|
||||
#
|
||||
# Where <n> is the DRM card index and <freq_info> one of the following:
|
||||
#
|
||||
# - max_freq (enforced maximum freq)
|
||||
# - min_freq (enforced minimum freq)
|
||||
#
|
||||
# The hardware capabilities can be accessed via:
|
||||
#
|
||||
# - rp0_freq (supported maximum freq)
|
||||
# - rpn_freq (supported minimum freq)
|
||||
# - rpe_freq (most efficient freq)
|
||||
#
|
||||
# The current frequency can be read from:
|
||||
# - act_freq (the actual GPU freq)
|
||||
# - cur_freq (the last requested freq)
|
||||
#
|
||||
# Also note that in addition to GPU management, the script offers the
|
||||
# possibility to adjust CPU operating frequencies. However, this is currently
|
||||
# limited to just setting the maximum scaling frequency as percentage of the
|
||||
@@ -71,25 +50,10 @@
|
||||
# Constants
|
||||
#
|
||||
|
||||
# Check if any /sys/class/drm/cardX/device/tile0 directory exists to detect Xe
|
||||
USE_XE=0
|
||||
for i in $(seq 0 15); do
|
||||
if [ -d "/sys/class/drm/card$i/device/tile0" ]; then
|
||||
USE_XE=1
|
||||
break
|
||||
fi
|
||||
done
|
||||
|
||||
# GPU
|
||||
if [ "$USE_XE" -eq 1 ]; then
|
||||
DRM_FREQ_SYSFS_PATTERN="/sys/class/drm/card%d/device/tile0/gt0/freq0/%s_freq"
|
||||
ENF_FREQ_INFO="max min"
|
||||
CAP_FREQ_INFO="rp0 rpn rpe"
|
||||
else
|
||||
DRM_FREQ_SYSFS_PATTERN="/sys/class/drm/card%d/gt_%s_freq_mhz"
|
||||
ENF_FREQ_INFO="max min boost"
|
||||
CAP_FREQ_INFO="RP0 RPn RP1"
|
||||
fi
|
||||
DRM_FREQ_SYSFS_PATTERN="/sys/class/drm/card%d/gt_%s_freq_mhz"
|
||||
ENF_FREQ_INFO="max min boost"
|
||||
CAP_FREQ_INFO="RP0 RPn RP1"
|
||||
ACT_FREQ_INFO="act cur"
|
||||
THROTT_DETECT_SLEEP_SEC=2
|
||||
THROTT_DETECT_PID_FILE_PATH=/tmp/thrott-detect.pid
|
||||
@@ -148,11 +112,7 @@ identify_intel_gpu() {
|
||||
}
|
||||
|
||||
path=$(print_freq_sysfs_path "" ${i})
|
||||
if [ "$USE_XE" -eq 1 ]; then
|
||||
path=${path%/*/*/*/*/*}/device/vendor
|
||||
else
|
||||
path=${path%/*}/device/vendor
|
||||
fi
|
||||
path=${path%/*}/device/vendor
|
||||
|
||||
[ -r "${path}" ] && read vendor < "${path}" && \
|
||||
[ "${vendor}" = "0x8086" ] && INTEL_DRM_CARD_INDEX=$i && return 0
|
||||
@@ -237,13 +197,13 @@ compute_freq_set() {
|
||||
|
||||
case "$1" in
|
||||
+)
|
||||
val=$(eval "echo \${FREQ_$(echo $CAP_FREQ_INFO | cut -d' ' -f1)}") # FREQ_rp0 or FREQ_RP0
|
||||
val=${FREQ_RP0}
|
||||
;;
|
||||
-)
|
||||
val=$(eval "echo \${FREQ_$(echo $CAP_FREQ_INFO | cut -d' ' -f2)}") # FREQ_rpn or FREQ_RPn
|
||||
val=${FREQ_RPn}
|
||||
;;
|
||||
*%)
|
||||
val=$((${1%?} * $(eval "echo \${FREQ_$(echo $CAP_FREQ_INFO | cut -d' ' -f1)}") / 100))
|
||||
val=$((${1%?} * FREQ_RP0 / 100))
|
||||
# Adjust freq to comply with 50 MHz increments
|
||||
val=$((val / 50 * 50))
|
||||
;;
|
||||
@@ -272,17 +232,15 @@ set_freq_max() {
|
||||
|
||||
read_freq_info n min || return $?
|
||||
|
||||
# FREQ_rp0 or FREQ_RP0
|
||||
[ ${SET_MAX_FREQ} -gt $(eval "echo \${FREQ_$(echo $CAP_FREQ_INFO | cut -d' ' -f1)}") ] && {
|
||||
[ ${SET_MAX_FREQ} -gt ${FREQ_RP0} ] && {
|
||||
log ERROR "Cannot set GPU max freq (%s) to be greater than hw max freq (%s)" \
|
||||
"${SET_MAX_FREQ}" "$(eval "echo \${FREQ_$(echo $CAP_FREQ_INFO | cut -d' ' -f1)}")"
|
||||
"${SET_MAX_FREQ}" "${FREQ_RP0}"
|
||||
return 1
|
||||
}
|
||||
|
||||
# FREQ_rpn or FREQ_RPn
|
||||
[ ${SET_MAX_FREQ} -lt $(eval "echo \${FREQ_$(echo $CAP_FREQ_INFO | cut -d' ' -f2)}") ] && {
|
||||
[ ${SET_MAX_FREQ} -lt ${FREQ_RPn} ] && {
|
||||
log ERROR "Cannot set GPU max freq (%s) to be less than hw min freq (%s)" \
|
||||
"${SET_MIN_FREQ}" "$(eval "echo \${FREQ_$(echo $CAP_FREQ_INFO | cut -d' ' -f2)}")"
|
||||
"${SET_MIN_FREQ}" "${FREQ_RPn}"
|
||||
return 1
|
||||
}
|
||||
|
||||
@@ -294,21 +252,12 @@ set_freq_max() {
|
||||
|
||||
[ -z "${DRY_RUN}" ] || return 0
|
||||
|
||||
# Write to max freq path
|
||||
if ! printf "%s" ${SET_MAX_FREQ} | tee $(print_freq_sysfs_path max) > /dev/null;
|
||||
if ! printf "%s" ${SET_MAX_FREQ} | tee $(print_freq_sysfs_path max) \
|
||||
$(print_freq_sysfs_path boost) > /dev/null;
|
||||
then
|
||||
log ERROR "Failed to set GPU max frequency"
|
||||
return 1
|
||||
fi
|
||||
|
||||
# Only write to boost if the sysfs file exists, as it's removed in Xe
|
||||
if [ -e "$(print_freq_sysfs_path boost)" ]; then
|
||||
if ! printf "%s" ${SET_MAX_FREQ} | tee $(print_freq_sysfs_path boost) > /dev/null;
|
||||
then
|
||||
log ERROR "Failed to set GPU boost frequency"
|
||||
return 1
|
||||
fi
|
||||
fi
|
||||
}
|
||||
|
||||
#
|
||||
@@ -325,9 +274,9 @@ set_freq_min() {
|
||||
return 1
|
||||
}
|
||||
|
||||
[ ${SET_MIN_FREQ} -lt $(eval "echo \${FREQ_$(echo $CAP_FREQ_INFO | cut -d' ' -f2)}") ] && {
|
||||
[ ${SET_MIN_FREQ} -lt ${FREQ_RPn} ] && {
|
||||
log ERROR "Cannot set GPU min freq (%s) to be less than hw min freq (%s)" \
|
||||
"${SET_MIN_FREQ}" "$(eval "echo \${FREQ_$(echo $CAP_FREQ_INFO | cut -d' ' -f2)}")"
|
||||
"${SET_MIN_FREQ}" "${FREQ_RPn}"
|
||||
return 1
|
||||
}
|
||||
|
||||
@@ -345,7 +294,7 @@ set_freq_min() {
|
||||
#
|
||||
set_freq() {
|
||||
# Get hw max & min frequencies
|
||||
read_freq_info n $(echo $CAP_FREQ_INFO | cut -d' ' -f1,2) || return $? # RP0 RPn
|
||||
read_freq_info n RP0 RPn || return $?
|
||||
|
||||
[ -z "${SET_MAX_FREQ}" ] || {
|
||||
SET_MAX_FREQ=$(compute_freq_set "${SET_MAX_FREQ}")
|
||||
@@ -448,7 +397,7 @@ detect_throttling() {
|
||||
}
|
||||
|
||||
(
|
||||
read_freq_info n $(echo $CAP_FREQ_INFO | cut -d' ' -f2) || return $? # RPn
|
||||
read_freq_info n RPn || exit $?
|
||||
|
||||
while true; do
|
||||
sleep ${THROTT_DETECT_SLEEP_SEC}
|
||||
@@ -457,13 +406,13 @@ detect_throttling() {
|
||||
#
|
||||
# The throttling seems to occur when act freq goes below min.
|
||||
# However, it's necessary to exclude the idle states, where
|
||||
# act freq normally reaches rpn and cur goes below min.
|
||||
# act freq normally reaches RPn and cur goes below min.
|
||||
#
|
||||
[ ${FREQ_act} -lt ${FREQ_min} ] && \
|
||||
[ ${FREQ_act} -gt $(eval "echo \${FREQ_$(echo $CAP_FREQ_INFO | cut -d' ' -f2)}") ] && \
|
||||
[ ${FREQ_act} -gt ${FREQ_RPn} ] && \
|
||||
[ ${FREQ_cur} -ge ${FREQ_min} ] && \
|
||||
printf "GPU throttling detected: act=%s min=%s cur=%s rpn=%s\n" \
|
||||
${FREQ_act} ${FREQ_min} ${FREQ_cur} $(eval "echo \${FREQ_$(echo $CAP_FREQ_INFO | cut -d' ' -f2)}")
|
||||
printf "GPU throttling detected: act=%s min=%s cur=%s RPn=%s\n" \
|
||||
${FREQ_act} ${FREQ_min} ${FREQ_cur} ${FREQ_RPn}
|
||||
done
|
||||
) &
|
||||
|
||||
|
@@ -1,2 +0,0 @@
|
||||
variables:
|
||||
CONDITIONAL_BUILD_ANGLE_TAG: ab19bccfd3858c539ba8cb8d9b52a003
|
@@ -56,16 +56,16 @@ DEPS=(
|
||||
spirv-tools-dev
|
||||
spirv-llvm-translator-dev
|
||||
util-macros
|
||||
wayland-dev
|
||||
wayland-protocols
|
||||
)
|
||||
|
||||
apk --no-cache add "${DEPS[@]}" "${EPHEMERAL[@]}"
|
||||
|
||||
pip3 install --break-system-packages sphinx===8.2.3 hawkmoth===0.19.0
|
||||
pip3 install --break-system-packages sphinx===5.1.1 hawkmoth===0.16.0
|
||||
|
||||
. .gitlab-ci/container/container_pre_build.sh
|
||||
|
||||
EXTRA_MESON_ARGS='--prefix=/usr' \
|
||||
. .gitlab-ci/container/build-wayland.sh
|
||||
|
||||
############### Uninstall the build software
|
||||
|
||||
|
@@ -7,7 +7,7 @@ set -o xtrace
|
||||
# network transfer, disk usage, and runtime on test jobs)
|
||||
|
||||
# shellcheck disable=SC2154 # arch is assigned in previous scripts
|
||||
if curl --fail -L -s "${ARTIFACTS_PREFIX}/${FDO_UPSTREAM_REPO}/${ARTIFACTS_SUFFIX}/${arch}/done"; then
|
||||
if curl -X HEAD -s "${ARTIFACTS_PREFIX}/${FDO_UPSTREAM_REPO}/${ARTIFACTS_SUFFIX}/${arch}/done"; then
|
||||
ARTIFACTS_URL="${ARTIFACTS_PREFIX}/${FDO_UPSTREAM_REPO}/${ARTIFACTS_SUFFIX}/${arch}"
|
||||
else
|
||||
ARTIFACTS_URL="${ARTIFACTS_PREFIX}/${CI_PROJECT_PATH}/${ARTIFACTS_SUFFIX}/${arch}"
|
||||
|
@@ -1,10 +1,5 @@
|
||||
#!/usr/bin/env bash
|
||||
|
||||
# When changing this file, you need to bump the following
|
||||
# .gitlab-ci/image-tags.yml and .gitlab-ci/container/gitlab-ci.yml tags:
|
||||
# DEBIAN_BUILD_TAG
|
||||
# ANDROID_LLVM_ARTIFACT_NAME
|
||||
|
||||
set -exu
|
||||
|
||||
# If CI vars are not set, assign an empty value, this prevents -u to fail
|
||||
@@ -39,8 +34,9 @@ if curl -s -o /dev/null -I -L -f --retry 4 --retry-delay 15 "https://${S3_HOST}/
|
||||
exit
|
||||
fi
|
||||
|
||||
# Ephemeral packages (installed for this script and removed again at the end)
|
||||
# Install some dependencies needed to build LLVM
|
||||
EPHEMERAL=(
|
||||
ninja-build
|
||||
unzip
|
||||
)
|
||||
|
||||
@@ -114,8 +110,10 @@ tar --zstd -cf "${ANDROID_LLVM_ARTIFACT_NAME}.tar.zst" "$LLVM_INSTALL_PREFIX"
|
||||
# version does not change, and delete it.
|
||||
# The file is not deleted for non-CI because it can be useful in local runs.
|
||||
if [ -n "$CI" ]; then
|
||||
s3_upload "${ANDROID_LLVM_ARTIFACT_NAME}.tar.zst" "https://${S3_HOST}/${S3_ANDROID_BUCKET}/${CI_PROJECT_PATH}/"
|
||||
ci-fairy s3cp --token-file "${S3_JWT_FILE}" "${ANDROID_LLVM_ARTIFACT_NAME}.tar.zst" "https://${S3_HOST}/${S3_ANDROID_BUCKET}/${CI_PROJECT_PATH}/${ANDROID_LLVM_ARTIFACT_NAME}.tar.zst"
|
||||
rm "${ANDROID_LLVM_ARTIFACT_NAME}.tar.zst"
|
||||
fi
|
||||
|
||||
rm -rf "$LLVM_INSTALL_PREFIX"
|
||||
|
||||
apt-get purge -y "${EPHEMERAL[@]}"
|
||||
|
135
.gitlab-ci/container/build-angle.sh
Executable file → Normal file
135
.gitlab-ci/container/build-angle.sh
Executable file → Normal file
@@ -2,26 +2,15 @@
|
||||
|
||||
# When changing this file, you need to bump the following
|
||||
# .gitlab-ci/image-tags.yml tags:
|
||||
# DEBIAN_TEST_ANDROID_TAG
|
||||
# KERNEL_ROOTFS_TAG
|
||||
|
||||
set -uex
|
||||
|
||||
uncollapsed_section_start angle "Building ANGLE"
|
||||
uncollapsed_section_start angle "Building angle"
|
||||
|
||||
# Do a very early check to make sure the tag is correct without the need of
|
||||
# setting up the environment variables locally
|
||||
ci_tag_build_time_check "ANGLE_TAG"
|
||||
|
||||
ANGLE_REV="a3f2545f6bb3e8d27827dceb2b4e901673995ad1"
|
||||
|
||||
# Set ANGLE_ARCH based on DEBIAN_ARCH if it hasn't been explicitly defined
|
||||
if [[ -z "${ANGLE_ARCH:-}" ]]; then
|
||||
case "$DEBIAN_ARCH" in
|
||||
amd64) ANGLE_ARCH=x64;;
|
||||
arm64) ANGLE_ARCH=arm64;;
|
||||
esac
|
||||
fi
|
||||
ANGLE_REV="76025caa1a059f464a2b0e8f879dbd4746f092b9"
|
||||
SCRIPTS_DIR="$(pwd)/.gitlab-ci"
|
||||
ANGLE_PATCH_DIR="${SCRIPTS_DIR}/container/patches"
|
||||
|
||||
# DEPOT tools
|
||||
git clone --depth 1 https://chromium.googlesource.com/chromium/tools/depot_tools.git /depot-tools
|
||||
@@ -36,39 +25,37 @@ git remote add origin https://chromium.googlesource.com/angle/angle.git
|
||||
git fetch --depth 1 origin "$ANGLE_REV"
|
||||
git checkout FETCH_HEAD
|
||||
|
||||
echo "$ANGLE_REV" > /angle/version
|
||||
angle_patch_files=(
|
||||
build-angle_deps_Make-more-sources-conditional.patch
|
||||
)
|
||||
for patch in "${angle_patch_files[@]}"; do
|
||||
echo "Apply patch to ANGLE from ${patch}"
|
||||
GIT_COMMITTER_DATE="$(LC_TIME=C date -d@0)" git am < "${ANGLE_PATCH_DIR}/${patch}"
|
||||
done
|
||||
|
||||
GCLIENT_CUSTOM_VARS=()
|
||||
GCLIENT_CUSTOM_VARS+=('--custom-var=angle_enable_cl=False')
|
||||
GCLIENT_CUSTOM_VARS+=('--custom-var=angle_enable_cl_testing=False')
|
||||
GCLIENT_CUSTOM_VARS+=('--custom-var=angle_enable_vulkan_validation_layers=False')
|
||||
GCLIENT_CUSTOM_VARS+=('--custom-var=angle_enable_wgpu=False')
|
||||
GCLIENT_CUSTOM_VARS+=('--custom-var=build_angle_deqp_tests=False')
|
||||
GCLIENT_CUSTOM_VARS+=('--custom-var=build_angle_perftests=False')
|
||||
if [[ "$ANGLE_TARGET" == "android" ]]; then
|
||||
GCLIENT_CUSTOM_VARS+=('--custom-var=checkout_android=True')
|
||||
fi
|
||||
{
|
||||
echo "ANGLE base version $ANGLE_REV"
|
||||
echo "The following local patches are applied on top:"
|
||||
git log --reverse --oneline $ANGLE_REV.. --format='- %s'
|
||||
} > /angle/version
|
||||
|
||||
# source preparation
|
||||
gclient config --name REPLACE-WITH-A-DOT --unmanaged \
|
||||
"${GCLIENT_CUSTOM_VARS[@]}" \
|
||||
--custom-var='angle_enable_cl=False' \
|
||||
--custom-var='angle_enable_cl_testing=False' \
|
||||
--custom-var='angle_enable_vulkan_validation_layers=False' \
|
||||
--custom-var='angle_enable_wgpu=False' \
|
||||
--custom-var='build_allow_regenerate=False' \
|
||||
--custom-var='build_angle_deqp_tests=False' \
|
||||
--custom-var='build_angle_perftests=False' \
|
||||
--custom-var='build_with_catapult=False' \
|
||||
--custom-var='build_with_swiftshader=False' \
|
||||
https://chromium.googlesource.com/angle/angle.git
|
||||
sed -e 's/REPLACE-WITH-A-DOT/./;' -i .gclient
|
||||
sed -e 's|"custom_deps" : {|"custom_deps" : {\
|
||||
"third_party/clspv/src": None,\
|
||||
"third_party/dawn": None,\
|
||||
"third_party/glmark2/src": None,\
|
||||
"third_party/libjpeg_turbo": None,\
|
||||
"third_party/llvm/src": None,\
|
||||
"third_party/OpenCL-CTS/src": None,\
|
||||
"third_party/SwiftShader": None,\
|
||||
"third_party/VK-GL-CTS/src": None,\
|
||||
"third_party/vulkan-validation-layers/src": None,|' -i .gclient
|
||||
gclient sync --no-history -j"${FDO_CI_CONCURRENT:-4}"
|
||||
gclient sync -j"${FDO_CI_CONCURRENT:-4}"
|
||||
|
||||
mkdir -p out/Release
|
||||
cat > out/Release/args.gn <<EOF
|
||||
angle_assert_always_on=false
|
||||
echo '
|
||||
angle_build_all=false
|
||||
angle_build_tests=false
|
||||
angle_enable_cl=false
|
||||
@@ -84,76 +71,28 @@ angle_enable_vulkan_api_dump_layer=false
|
||||
angle_enable_vulkan_validation_layers=false
|
||||
angle_has_frame_capture=false
|
||||
angle_has_histograms=false
|
||||
angle_has_rapidjson=false
|
||||
angle_use_custom_libvulkan=false
|
||||
angle_egl_extension="so.1"
|
||||
angle_glesv2_extension="so.2"
|
||||
build_angle_deqp_tests=false
|
||||
dcheck_always_on=true
|
||||
enable_expensive_dchecks=false
|
||||
is_component_build=false
|
||||
is_debug=false
|
||||
target_cpu="${ANGLE_ARCH}"
|
||||
target_os="${ANGLE_TARGET}"
|
||||
treat_warnings_as_errors=false
|
||||
EOF
|
||||
|
||||
case "$ANGLE_TARGET" in
|
||||
linux) cat >> out/Release/args.gn <<EOF
|
||||
angle_egl_extension="so.1"
|
||||
angle_glesv2_extension="so.2"
|
||||
use_custom_libcxx=false
|
||||
custom_toolchain="//build/toolchain/linux/unbundle:default"
|
||||
host_toolchain="//build/toolchain/linux/unbundle:default"
|
||||
EOF
|
||||
;;
|
||||
android) cat >> out/Release/args.gn <<EOF
|
||||
android_ndk_version="${ANDROID_NDK_VERSION}"
|
||||
android64_ndk_api_level=${ANDROID_SDK_VERSION}
|
||||
android32_ndk_api_level=${ANDROID_SDK_VERSION}
|
||||
use_custom_libcxx=true
|
||||
EOF
|
||||
;;
|
||||
*) echo "Unexpected ANGLE_TARGET value: $ANGLE_TARGET"; exit 1;;
|
||||
esac
|
||||
' > out/Release/args.gn
|
||||
|
||||
if [[ "$DEBIAN_ARCH" = "arm64" ]]; then
|
||||
# We need to get an AArch64 sysroot - because ANGLE isn't great friends with
|
||||
# system dependencies - but use the default system toolchain, because the
|
||||
# 'arm64' toolchain you get from Google infrastructure is a cross-compiler
|
||||
# from x86-64
|
||||
build/linux/sysroot_scripts/install-sysroot.py --arch=arm64
|
||||
fi
|
||||
|
||||
(
|
||||
# The 'unbundled' toolchain configuration requires clang, and it also needs to
|
||||
# be configured via environment variables.
|
||||
export CC="clang-${LLVM_VERSION}"
|
||||
export HOST_CC="$CC"
|
||||
export CFLAGS="-Wno-unknown-warning-option"
|
||||
export HOST_CFLAGS="$CFLAGS"
|
||||
export CXX="clang++-${LLVM_VERSION}"
|
||||
export HOST_CXX="$CXX"
|
||||
export CXXFLAGS="-Wno-unknown-warning-option"
|
||||
export HOST_CXXFLAGS="$CXXFLAGS"
|
||||
export AR="ar"
|
||||
export HOST_AR="$AR"
|
||||
export NM="nm"
|
||||
export HOST_NM="$NM"
|
||||
export LDFLAGS="-fuse-ld=lld-${LLVM_VERSION} -lpthread -ldl"
|
||||
export HOST_LDFLAGS="$LDFLAGS"
|
||||
gn gen out/Release
|
||||
# depot_tools overrides ninja with a version that doesn't work. We want
|
||||
# ninja with FDO_CI_CONCURRENT anyway.
|
||||
/usr/local/bin/ninja -C out/Release/ libEGL libGLESv2
|
||||
|
||||
gn gen out/Release
|
||||
# depot_tools overrides ninja with a version that doesn't work. We want
|
||||
# ninja with FDO_CI_CONCURRENT anyway.
|
||||
/usr/local/bin/ninja -C out/Release/ libEGL libGLESv1_CM libGLESv2
|
||||
)
|
||||
|
||||
rm -f out/Release/libvulkan.so* out/Release/*.so*.TOC
|
||||
rm -f out/Release/libvulkan.so* out/Release/*.so.TOC
|
||||
cp out/Release/lib*.so* /angle/
|
||||
|
||||
if [[ "$ANGLE_TARGET" == "linux" ]]; then
|
||||
ln -s libEGL.so.1 /angle/libEGL.so
|
||||
ln -s libGLESv2.so.2 /angle/libGLESv2.so
|
||||
fi
|
||||
ln -s libEGL.so.1 /angle/libEGL.so
|
||||
ln -s libGLESv2.so.2 /angle/libGLESv2.so
|
||||
|
||||
rm -rf out
|
||||
|
||||
|
@@ -11,7 +11,7 @@ set -uex
|
||||
|
||||
uncollapsed_section_start apitrace "Building apitrace"
|
||||
|
||||
APITRACE_VERSION="952bad1469ea747012bdc48c48993bd5f13eec04"
|
||||
APITRACE_VERSION="0a6506433e1f9f7b69757b4e5730326970c4321a"
|
||||
|
||||
git clone https://github.com/apitrace/apitrace.git --single-branch --no-checkout /apitrace
|
||||
pushd /apitrace
|
||||
|
@@ -15,13 +15,13 @@ uncollapsed_section_start crosvm "Building crosvm"
|
||||
git config --global user.email "mesa@example.com"
|
||||
git config --global user.name "Mesa CI"
|
||||
|
||||
CROSVM_VERSION=e27efaf8f4bdc4a47d1e99cc44d2b6908b6f36bd
|
||||
CROSVM_VERSION=2118fbb57ca26b495a9aa407845c7729d697a24b
|
||||
git clone --single-branch -b main --no-checkout https://chromium.googlesource.com/crosvm/crosvm /platform/crosvm
|
||||
pushd /platform/crosvm
|
||||
git checkout "$CROSVM_VERSION"
|
||||
git submodule update --init
|
||||
|
||||
VIRGLRENDERER_VERSION=7570167549358ce77b8d4774041b4a77c72a021c
|
||||
VIRGLRENDERER_VERSION=57a2b82e0958f08d02ade8400786e1ca0935c9b1
|
||||
rm -rf third_party/virglrenderer
|
||||
git clone --single-branch -b main --no-checkout https://gitlab.freedesktop.org/virgl/virglrenderer.git third_party/virglrenderer
|
||||
pushd third_party/virglrenderer
|
||||
@@ -30,14 +30,14 @@ meson setup build/ -D libdir=lib -D render-server-worker=process -D venus=true $
|
||||
meson install -C build
|
||||
popd
|
||||
|
||||
rm rust-toolchain
|
||||
cargo update -p pkg-config@0.3.26 --precise 0.3.27
|
||||
|
||||
RUSTFLAGS='-L native=/usr/local/lib' cargo install \
|
||||
bindgen-cli \
|
||||
--locked \
|
||||
-j ${FDO_CI_CONCURRENT:-4} \
|
||||
--root /usr/local \
|
||||
--version 0.71.1 \
|
||||
--version 0.65.1 \
|
||||
${EXTRA_CARGO_ARGS:-}
|
||||
|
||||
CROSVM_USE_SYSTEM_MINIGBM=1 CROSVM_USE_SYSTEM_VIRGLRENDERER=1 RUSTFLAGS='-L native=/usr/local/lib' cargo install \
|
||||
|
@@ -24,7 +24,7 @@ set -x
|
||||
# - the GL release produces `glcts`, and
|
||||
# - the GLES release produces `deqp-gles*` and `deqp-egl`
|
||||
|
||||
DEQP_MAIN_COMMIT=76c1572eaba42d7ddd9bb8eb5788e52dd932068e
|
||||
DEQP_MAIN_COMMIT=a9988483c0864d7190e5e6264ccead95423dfd00
|
||||
DEQP_VK_VERSION=1.4.1.1
|
||||
DEQP_GL_VERSION=4.6.5.0
|
||||
DEQP_GLES_VERSION=3.2.11.0
|
||||
@@ -47,8 +47,6 @@ main_cts_patch_files=(
|
||||
|
||||
# shellcheck disable=SC2034
|
||||
vk_cts_commits_to_backport=(
|
||||
# Stop querying device address from unbound buffers
|
||||
046343f46f7d39d53b47842d7fd8ed3279528046
|
||||
)
|
||||
|
||||
# shellcheck disable=SC2034
|
||||
@@ -69,6 +67,13 @@ gl_cts_patch_files=(
|
||||
build-deqp-gl_Build-Don-t-build-Vulkan-utilities-for-GL-builds.patch
|
||||
)
|
||||
|
||||
if [ "${DEQP_TARGET}" = 'android' ]; then
|
||||
gl_cts_patch_files+=(
|
||||
build-deqp-gl_Allow-running-on-Android-from-the-command-line.patch
|
||||
build-deqp-gl_Android-prints-to-stdout-instead-of-logcat.patch
|
||||
)
|
||||
fi
|
||||
|
||||
# shellcheck disable=SC2034
|
||||
# GLES builds also EGL
|
||||
gles_cts_commits_to_backport=(
|
||||
@@ -119,8 +124,8 @@ git checkout FETCH_HEAD
|
||||
DEQP_COMMIT=$(git rev-parse FETCH_HEAD)
|
||||
|
||||
if [ "$DEQP_VERSION" = "$DEQP_MAIN_COMMIT" ]; then
|
||||
merge_base="$(curl --fail -s https://api.github.com/repos/KhronosGroup/VK-GL-CTS/compare/main...$DEQP_MAIN_COMMIT | jq -r .merge_base_commit.sha)"
|
||||
if [[ "$merge_base" != "$DEQP_MAIN_COMMIT" ]]; then
|
||||
git fetch origin main
|
||||
if ! git merge-base --is-ancestor "$DEQP_MAIN_COMMIT" origin/main; then
|
||||
echo "VK-GL-CTS commit $DEQP_MAIN_COMMIT is not a commit from the main branch."
|
||||
exit 1
|
||||
fi
|
||||
@@ -168,14 +173,6 @@ done
|
||||
# always goes through ssh or https.
|
||||
python3 external/fetch_sources.py --insecure
|
||||
|
||||
case "${DEQP_API}" in
|
||||
VK-main)
|
||||
# Video tests rely on external files
|
||||
python3 external/fetch_video_decode_samples.py
|
||||
python3 external/fetch_video_encode_samples.py
|
||||
;;
|
||||
esac
|
||||
|
||||
if [[ "$DEQP_API" = tools ]]; then
|
||||
# Save the testlog stylesheets:
|
||||
cp doc/testlog-stylesheet/testlog.{css,xsl} /deqp-$deqp_api
|
||||
@@ -300,7 +297,6 @@ if [ "$DEQP_API" = tools ]; then
|
||||
fi
|
||||
|
||||
# Remove other mustpass files, since we saved off the ones we wanted to conventient locations above.
|
||||
rm -rf assets/**/mustpass/
|
||||
rm -rf external/**/mustpass/
|
||||
rm -rf external/vulkancts/modules/vulkan/vk-main*
|
||||
rm -rf external/vulkancts/modules/vulkan/vk-default
|
||||
|
@@ -25,10 +25,11 @@ if [ "${SKIP_UPDATE_FLUSTER_VECTORS}" != 1 ]; then
|
||||
|
||||
# Build fluster vectors archive and upload it
|
||||
tar --zstd -cf "vectors.tar.zst" fluster/resources/
|
||||
s3_upload vectors.tar.zst "https://${S3_PATH_FLUSTER}/"
|
||||
ci-fairy s3cp --token-file "${S3_JWT_FILE}" "vectors.tar.zst" \
|
||||
"https://${S3_PATH_FLUSTER}/vectors.tar.zst"
|
||||
|
||||
touch /lava-files/done
|
||||
s3_upload /lava-files/done "https://${S3_PATH_FLUSTER}/"
|
||||
ci-fairy s3cp --token-file "${S3_JWT_FILE}" /lava-files/done "https://${S3_PATH_FLUSTER}/done"
|
||||
|
||||
# Don't include the vectors in the rootfs
|
||||
rm -fr fluster/resources/*
|
||||
|
@@ -10,7 +10,7 @@ uncollapsed_section_start piglit "Building piglit"
|
||||
# DEBIAN_TEST_VK_TAG
|
||||
# KERNEL_ROOTFS_TAG
|
||||
|
||||
REV="0ecdebb0f5927728ddeeb851639a559b0f7d6590"
|
||||
REV="631b72944f56e688f56a08d26c8a9f3988801a08"
|
||||
|
||||
git clone https://gitlab.freedesktop.org/mesa/piglit.git --single-branch --no-checkout /piglit
|
||||
pushd /piglit
|
||||
|
@@ -7,6 +7,12 @@ set -ex
|
||||
|
||||
uncollapsed_section_start rust "Building Rust toolchain"
|
||||
|
||||
# cargo (and rustup) wants to store stuff in $HOME/.cargo, and binaries in
|
||||
# $HOME/.cargo/bin. Make bin a link to a public bin directory so the commands
|
||||
# are just available to all build jobs.
|
||||
mkdir -p "$HOME"/.cargo
|
||||
ln -s /usr/local/bin "$HOME"/.cargo/bin
|
||||
|
||||
# Pick a specific snapshot from rustup so the compiler doesn't drift on us.
|
||||
RUST_VERSION=1.78.0-2024-05-02
|
||||
|
||||
@@ -19,15 +25,11 @@ curl -L --retry 4 -f --retry-all-errors --retry-delay 60 \
|
||||
--profile minimal \
|
||||
-y
|
||||
|
||||
# Make rustup tools available in the PATH environment variable
|
||||
# shellcheck disable=SC1091
|
||||
. "$HOME/.cargo/env"
|
||||
|
||||
rustup component add clippy rustfmt
|
||||
|
||||
# Set up a config script for cross compiling -- cargo needs your system cc for
|
||||
# linking in cross builds, but doesn't know what you want to use for system cc.
|
||||
cat > "$HOME/.cargo/config" <<EOF
|
||||
cat > /root/.cargo/config <<EOF
|
||||
[target.armv7-unknown-linux-gnueabihf]
|
||||
linker = "arm-linux-gnueabihf-gcc"
|
||||
|
||||
|
@@ -19,7 +19,7 @@ git clone \
|
||||
|
||||
pushd /va-utils
|
||||
# Too old libva in Debian 11. TODO: when this PR gets in, refer to the patch.
|
||||
curl --fail -L https://github.com/intel/libva-utils/pull/329.patch | git am
|
||||
curl -L https://github.com/intel/libva-utils/pull/329.patch | git am
|
||||
|
||||
meson setup build -D tests=true -Dprefix=/va ${EXTRA_MESON_ARGS:-}
|
||||
meson install -C build
|
||||
|
@@ -3,11 +3,12 @@
|
||||
# When changing this file, you need to bump the following
|
||||
# .gitlab-ci/image-tags.yml tags:
|
||||
# DEBIAN_TEST_VK_TAG
|
||||
# KERNEL_ROOTFS_TAG
|
||||
set -ex
|
||||
|
||||
uncollapsed_section_start vkd3d-proton "Building vkd3d-proton"
|
||||
|
||||
VKD3D_PROTON_COMMIT="078f07f588c849c52fa21c8cfdd1c201465b1932"
|
||||
VKD3D_PROTON_COMMIT="b121e6d746341e0aaba7663e3d85f3194e8e20e1"
|
||||
|
||||
VKD3D_PROTON_DST_DIR="/vkd3d-proton-tests"
|
||||
VKD3D_PROTON_SRC_DIR="/vkd3d-proton-src"
|
||||
|
@@ -9,7 +9,7 @@ set -uex
|
||||
|
||||
uncollapsed_section_start vulkan-validation "Building Vulkan validation layers"
|
||||
|
||||
VALIDATION_TAG="snapshot-2025wk15"
|
||||
VALIDATION_TAG="snapshot-2024wk39"
|
||||
|
||||
git clone -b "$VALIDATION_TAG" --single-branch --depth 1 https://github.com/KhronosGroup/Vulkan-ValidationLayers.git
|
||||
pushd Vulkan-ValidationLayers
|
||||
@@ -17,7 +17,7 @@ pushd Vulkan-ValidationLayers
|
||||
sed -i scripts/known_good.json -e 's/SPIRV_SKIP_EXECUTABLES=OFF/SPIRV_SKIP_EXECUTABLES=ON/'
|
||||
python3 scripts/update_deps.py --dir external --config release --generator Ninja --optional tests
|
||||
cmake -G Ninja -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=/usr -DBUILD_TESTS=OFF -DBUILD_WERROR=OFF -C external/helper.cmake -S . -B build
|
||||
ninja -C build -j"${FDO_CI_CONCURRENT:-4}"
|
||||
ninja -C build
|
||||
cmake --install build --strip
|
||||
popd
|
||||
rm -rf Vulkan-ValidationLayers
|
||||
|
@@ -7,8 +7,6 @@ uncollapsed_section_start wayland "Building Wayland"
|
||||
|
||||
# When changing this file, you need to bump the following
|
||||
# .gitlab-ci/image-tags.yml tags:
|
||||
# ALPINE_X86_64_BUILD_TAG
|
||||
# DEBIAN_BASE_TAG
|
||||
# DEBIAN_BUILD_TAG
|
||||
# DEBIAN_TEST_ANDROID_TAG
|
||||
# DEBIAN_TEST_GL_TAG
|
||||
@@ -17,7 +15,7 @@ uncollapsed_section_start wayland "Building Wayland"
|
||||
# KERNEL_ROOTFS_TAG
|
||||
|
||||
export LIBWAYLAND_VERSION="1.21.0"
|
||||
export WAYLAND_PROTOCOLS_VERSION="1.41"
|
||||
export WAYLAND_PROTOCOLS_VERSION="1.38"
|
||||
|
||||
git clone https://gitlab.freedesktop.org/wayland/wayland
|
||||
cd wayland
|
||||
|
@@ -1,6 +1,6 @@
|
||||
#!/usr/bin/env bash
|
||||
|
||||
# When changing this file, all the linux tags in
|
||||
# When changing this file, check if the *_BUIL_TAG tags in
|
||||
# .gitlab-ci/image-tags.yml need updating.
|
||||
|
||||
set -eu
|
||||
|
@@ -6,6 +6,8 @@ fi
|
||||
|
||||
# Clean up any build cache
|
||||
rm -rf /root/.cache
|
||||
rm -rf /root/.cargo
|
||||
rm -rf /.cargo
|
||||
|
||||
if test -x /usr/bin/ccache; then
|
||||
ccache --show-stats
|
||||
|
@@ -1,7 +1,4 @@
|
||||
#!/bin/sh
|
||||
# When changing this file, you need to bump the following
|
||||
# .gitlab-ci/image-tags.yml tags:
|
||||
# DEBIAN_BUILD_TAG
|
||||
|
||||
if test -x /usr/bin/ccache; then
|
||||
if test -f /etc/debian_version; then
|
||||
@@ -45,30 +42,3 @@ echo -e "retry_connrefused = on\n" \
|
||||
"retry_on_host_error = on\n" \
|
||||
"retry_on_http_error = 429,500,502,503,504\n" \
|
||||
"wait_retry = 32" >> /etc/wgetrc
|
||||
|
||||
# Ensure that rust tools are in PATH if they exist
|
||||
CARGO_ENV_FILE="$HOME/.cargo/env"
|
||||
if [ -f "$CARGO_ENV_FILE" ]; then
|
||||
# shellcheck disable=SC1090
|
||||
source "$CARGO_ENV_FILE"
|
||||
fi
|
||||
|
||||
ci_tag_early_checks() {
|
||||
# Runs the first part of the build script to perform the tag check only
|
||||
uncollapsed_section_switch "ci_tag_early_checks" "Ensuring component versions match declared tags in CI builds"
|
||||
echo "[Structured Tagging] Checking components: ${CI_BUILD_COMPONENTS}"
|
||||
# shellcheck disable=SC2086
|
||||
for component in ${CI_BUILD_COMPONENTS}; do
|
||||
bin/ci/update_tag.py --check ${component} || exit 1
|
||||
done
|
||||
echo "[Structured Tagging] Components check done"
|
||||
section_end "ci_tag_early_checks"
|
||||
}
|
||||
|
||||
# Check if each declared tag component is up to date before building
|
||||
if [ -n "${CI_BUILD_COMPONENTS:-}" ]; then
|
||||
# Remove any duplicates by splitting on whitespace, sorting, then joining back
|
||||
CI_BUILD_COMPONENTS="$(echo "${CI_BUILD_COMPONENTS}" | xargs -n1 | sort -u | xargs)"
|
||||
|
||||
ci_tag_early_checks
|
||||
fi
|
||||
|
@@ -19,8 +19,6 @@ EPHEMERAL=(
|
||||
|
||||
apt-get install -y --no-remove "${EPHEMERAL[@]}"
|
||||
|
||||
. .gitlab-ci/container/container_pre_build.sh
|
||||
|
||||
# Fetch the NDK and extract just the toolchain we want.
|
||||
ndk="android-ndk-${ANDROID_NDK_VERSION}"
|
||||
curl -L --retry 4 -f --retry-all-errors --retry-delay 60 \
|
||||
@@ -40,12 +38,6 @@ sh .gitlab-ci/container/create-android-cross-file.sh /$ndk i686-linux-android x8
|
||||
sh .gitlab-ci/container/create-android-cross-file.sh /$ndk aarch64-linux-android aarch64 armv8 $ANDROID_SDK_VERSION
|
||||
sh .gitlab-ci/container/create-android-cross-file.sh /$ndk arm-linux-androideabi arm armv7hl $ANDROID_SDK_VERSION armv7a-linux-androideabi
|
||||
|
||||
# Build libdrm for the host (Debian) environment, so it's available for
|
||||
# binaries we'll run as part of the build process
|
||||
. .gitlab-ci/container/build-libdrm.sh
|
||||
|
||||
# Build libdrm for the NDK environment, so it's available when building for
|
||||
# the Android target
|
||||
for arch in \
|
||||
x86_64-linux-android \
|
||||
i686-linux-android \
|
||||
@@ -114,5 +106,3 @@ rm -rf $LIBELF_VERSION
|
||||
bash .gitlab-ci/container/build-android-x86_64-llvm.sh
|
||||
|
||||
apt-get purge -y "${EPHEMERAL[@]}"
|
||||
|
||||
. .gitlab-ci/container/container_post_build.sh
|
||||
|
@@ -1,4 +0,0 @@
|
||||
#!/usr/bin/env bash
|
||||
|
||||
DEBIAN_ARCH=armhf \
|
||||
. .gitlab-ci/container/debian/test-base.sh
|
@@ -1,4 +0,0 @@
|
||||
#!/usr/bin/env bash
|
||||
|
||||
DEBIAN_ARCH="armhf" \
|
||||
. .gitlab-ci/container/debian/test-gl.sh
|
@@ -1,4 +0,0 @@
|
||||
#!/usr/bin/env bash
|
||||
|
||||
DEBIAN_ARCH="armhf" \
|
||||
. .gitlab-ci/container/debian/test-vk.sh
|
@@ -1,4 +1,5 @@
|
||||
#!/usr/bin/env bash
|
||||
|
||||
DEBIAN_ARCH="arm64" \
|
||||
. .gitlab-ci/container/debian/test-gl.sh
|
||||
|
||||
. .gitlab-ci/container/strip-rootfs.sh
|
||||
|
@@ -1,4 +1,5 @@
|
||||
#!/usr/bin/env bash
|
||||
|
||||
DEBIAN_ARCH="arm64" \
|
||||
. .gitlab-ci/container/debian/test-vk.sh
|
||||
|
||||
. .gitlab-ci/container/strip-rootfs.sh
|
||||
|
@@ -12,7 +12,7 @@ case "${FDO_DISTRIBUTION_VERSION%-*},${LLVM_VERSION}" in
|
||||
esac
|
||||
|
||||
if [ "$NEED_LLVM_REPO" = "true" ]; then
|
||||
curl --fail -s https://apt.llvm.org/llvm-snapshot.gpg.key | apt-key add -
|
||||
curl -s https://apt.llvm.org/llvm-snapshot.gpg.key | apt-key add -
|
||||
export LLVM_APT_REPO="deb [trusted=yes] https://apt.llvm.org/${FDO_DISTRIBUTION_VERSION%-*}/ llvm-toolchain-${FDO_DISTRIBUTION_VERSION%-*}-${LLVM_VERSION} main"
|
||||
echo "$LLVM_APT_REPO" | tee /etc/apt/sources.list.d/llvm.list
|
||||
fi
|
||||
|
@@ -47,27 +47,13 @@ EPHEMERAL=(
|
||||
libegl-dev
|
||||
libelf-dev
|
||||
libepoxy-dev
|
||||
libexpat1-dev
|
||||
libgbm-dev
|
||||
libgles2-mesa-dev
|
||||
liblz4-dev
|
||||
libpciaccess-dev
|
||||
libssl-dev
|
||||
libvulkan-dev
|
||||
libudev-dev
|
||||
libwaffle-dev
|
||||
libwayland-dev
|
||||
libx11-xcb-dev
|
||||
libxcb-dri2-0-dev
|
||||
libxcb-dri3-dev
|
||||
libxcb-present-dev
|
||||
libxfixes-dev
|
||||
libxcb-ewmh-dev
|
||||
libxext-dev
|
||||
libxkbcommon-dev
|
||||
libxrandr-dev
|
||||
libxrender-dev
|
||||
libzstd-dev
|
||||
"llvm-${LLVM_VERSION}-dev"
|
||||
make
|
||||
meson
|
||||
@@ -79,29 +65,22 @@ EPHEMERAL=(
|
||||
python3-pip
|
||||
python3-setuptools
|
||||
python3-wheel
|
||||
spirv-tools
|
||||
wayland-protocols
|
||||
xz-utils
|
||||
)
|
||||
|
||||
DEPS=(
|
||||
apt-utils
|
||||
clinfo
|
||||
curl
|
||||
git
|
||||
git-lfs
|
||||
inetutils-syslogd
|
||||
iptables
|
||||
jq
|
||||
kmod
|
||||
libasan8
|
||||
libcap2
|
||||
libdrm2
|
||||
libegl1
|
||||
libepoxy0
|
||||
libexpat1
|
||||
libfdt1
|
||||
"libclang-common-${LLVM_VERSION}-dev"
|
||||
"libclang-cpp${LLVM_VERSION}"
|
||||
"libllvm${LLVM_VERSION}"
|
||||
liblz4-1
|
||||
libpng16-16
|
||||
@@ -112,33 +91,20 @@ DEPS=(
|
||||
libwayland-server0
|
||||
libxcb-ewmh2
|
||||
libxcb-randr0
|
||||
libxcb-shm0
|
||||
libxcb-xfixes0
|
||||
libxkbcommon0
|
||||
libxrandr2
|
||||
libxrender1
|
||||
ocl-icd-libopencl1
|
||||
pciutils
|
||||
python3-lxml
|
||||
python3-mako
|
||||
python3-numpy
|
||||
python3-packaging
|
||||
python3-pil
|
||||
python3-renderdoc
|
||||
python3-requests
|
||||
python3-simplejson
|
||||
python3-six
|
||||
python3-yaml
|
||||
socat
|
||||
spirv-tools
|
||||
sysvinit-core
|
||||
vulkan-tools
|
||||
waffle-utils
|
||||
weston
|
||||
xwayland
|
||||
xinit
|
||||
xserver-xorg-video-amdgpu
|
||||
xserver-xorg-video-ati
|
||||
xauth
|
||||
xvfb
|
||||
zlib1g
|
||||
@@ -169,12 +135,10 @@ section_end debian_setup
|
||||
############### Download prebuilt kernel
|
||||
|
||||
if [ "$DEBIAN_ARCH" = amd64 ]; then
|
||||
uncollapsed_section_start kernel "Downloading kernel for crosvm"
|
||||
uncollapsed_section_start kernel "Downloading kernel"
|
||||
export KERNEL_IMAGE_NAME=bzImage
|
||||
mkdir -p /kernel
|
||||
# shellcheck disable=SC2153 # KERNEL_IMAGE_BASE is set in the root .gitlab-ci.yml file
|
||||
curl -L --retry 4 -f --retry-all-errors --retry-delay 60 \
|
||||
-o "/kernel/${KERNEL_IMAGE_NAME}" "${KERNEL_IMAGE_BASE}/${DEBIAN_ARCH}/${KERNEL_IMAGE_NAME}"
|
||||
mkdir -p /lava-files/
|
||||
. .gitlab-ci/container/download-prebuilt-kernel.sh
|
||||
section_end kernel
|
||||
fi
|
||||
|
||||
@@ -200,27 +164,19 @@ fi
|
||||
|
||||
############### Build Crosvm
|
||||
|
||||
# crosvm build fails on ARMv7 due to Xlib type-size issues
|
||||
if [ "$DEBIAN_ARCH" != "armhf" ]; then
|
||||
. .gitlab-ci/container/build-crosvm.sh
|
||||
fi
|
||||
. .gitlab-ci/container/build-crosvm.sh
|
||||
|
||||
############### Build dEQP runner
|
||||
|
||||
. .gitlab-ci/container/build-deqp-runner.sh
|
||||
|
||||
############### Build apitrace
|
||||
|
||||
. .gitlab-ci/container/build-apitrace.sh
|
||||
|
||||
############### Uninstall the build software
|
||||
|
||||
uncollapsed_section_switch debian_cleanup "Cleaning up base Debian system"
|
||||
|
||||
apt-get purge -y "${EPHEMERAL[@]}"
|
||||
|
||||
# Properly uninstall rustup including cargo and init scripts on shells
|
||||
rustup self uninstall -y
|
||||
rm -rf /root/.rustup
|
||||
|
||||
. .gitlab-ci/container/container_post_build.sh
|
||||
|
||||
|
@@ -44,7 +44,6 @@ EPHEMERAL=(
|
||||
libxrandr-dev
|
||||
libxrender-dev
|
||||
"llvm-${LLVM_VERSION}-dev"
|
||||
"lld-${LLVM_VERSION}"
|
||||
make
|
||||
meson
|
||||
ocl-icd-opencl-dev
|
||||
@@ -55,6 +54,24 @@ EPHEMERAL=(
|
||||
)
|
||||
|
||||
DEPS=(
|
||||
clinfo
|
||||
iptables
|
||||
kmod
|
||||
"libclang-common-${LLVM_VERSION}-dev"
|
||||
"libclang-cpp${LLVM_VERSION}"
|
||||
libcap2
|
||||
libegl1
|
||||
libepoxy0
|
||||
libfdt1
|
||||
libxcb-shm0
|
||||
ocl-icd-libopencl1
|
||||
python3-lxml
|
||||
python3-renderdoc
|
||||
python3-simplejson
|
||||
spirv-tools
|
||||
sysvinit-core
|
||||
weston
|
||||
xwayland
|
||||
)
|
||||
|
||||
apt-get update
|
||||
@@ -67,13 +84,6 @@ apt-get install -y --no-remove "${DEPS[@]}" "${EPHEMERAL[@]}" \
|
||||
|
||||
section_end debian_setup
|
||||
|
||||
############### Build ANGLE
|
||||
|
||||
if [ "$DEBIAN_ARCH" == "arm64" ]; then
|
||||
ANGLE_TARGET=linux \
|
||||
. .gitlab-ci/container/build-angle.sh
|
||||
fi
|
||||
|
||||
############### Build piglit
|
||||
|
||||
PIGLIT_OPTS="-DPIGLIT_USE_WAFFLE=ON
|
||||
@@ -108,6 +118,10 @@ DEQP_TARGET=surfaceless \
|
||||
|
||||
rm -rf /VK-GL-CTS
|
||||
|
||||
############### Build apitrace
|
||||
|
||||
. .gitlab-ci/container/build-apitrace.sh
|
||||
|
||||
############### Build validation layer for zink
|
||||
|
||||
. .gitlab-ci/container/build-vulkan-validation.sh
|
||||
@@ -125,7 +139,3 @@ apt-get purge -y "${EPHEMERAL[@]}"
|
||||
. .gitlab-ci/container/container_post_build.sh
|
||||
|
||||
section_end debian_cleanup
|
||||
|
||||
############### Remove unused packages
|
||||
|
||||
. .gitlab-ci/container/strip-rootfs.sh
|
||||
|
@@ -13,6 +13,8 @@ uncollapsed_section_start debian_setup "Base Debian system setup"
|
||||
|
||||
export DEBIAN_FRONTEND=noninteractive
|
||||
|
||||
apt-get install -y libelogind0 # this interfere with systemd deps, install separately
|
||||
|
||||
# Ephemeral packages (installed for this script and removed again at the end)
|
||||
EPHEMERAL=(
|
||||
ccache
|
||||
@@ -47,29 +49,32 @@ EPHEMERAL=(
|
||||
python3-pip
|
||||
python3-setuptools
|
||||
python3-wheel
|
||||
software-properties-common
|
||||
wine64-tools
|
||||
xz-utils
|
||||
)
|
||||
|
||||
DEPS=(
|
||||
libfontconfig1
|
||||
libglu1-mesa
|
||||
)
|
||||
|
||||
if [ "$DEBIAN_ARCH" != "armhf" ]; then
|
||||
# Wine isn't available on 32-bit ARM
|
||||
EPHEMERAL+=(
|
||||
wine64-tools
|
||||
)
|
||||
DEPS+=(
|
||||
curl
|
||||
libepoxy0
|
||||
libxcb-shm0
|
||||
pciutils
|
||||
python3-lxml
|
||||
python3-simplejson
|
||||
sysvinit-core
|
||||
weston
|
||||
xwayland
|
||||
wine
|
||||
wine64
|
||||
)
|
||||
fi
|
||||
xinit
|
||||
xserver-xorg-video-amdgpu
|
||||
xserver-xorg-video-ati
|
||||
)
|
||||
|
||||
apt-get update
|
||||
|
||||
apt-get install -y --no-remove --no-install-recommends \
|
||||
"${DEPS[@]}" "${EPHEMERAL[@]}" "${EXTRA_LOCAL_PACKAGES:-}"
|
||||
"${DEPS[@]}" "${EPHEMERAL[@]}"
|
||||
|
||||
############### Building ...
|
||||
|
||||
@@ -79,25 +84,23 @@ section_end debian_setup
|
||||
|
||||
############### Build piglit replayer
|
||||
|
||||
if [ "$DEBIAN_ARCH" != "armhf" ]; then
|
||||
# We don't run any _piglit_ Vulkan tests in the containers.
|
||||
PIGLIT_OPTS="-DPIGLIT_USE_WAFFLE=ON
|
||||
-DPIGLIT_USE_GBM=OFF
|
||||
-DPIGLIT_USE_WAYLAND=OFF
|
||||
-DPIGLIT_USE_X11=OFF
|
||||
-DPIGLIT_BUILD_GLX_TESTS=OFF
|
||||
-DPIGLIT_BUILD_EGL_TESTS=OFF
|
||||
-DPIGLIT_BUILD_WGL_TESTS=OFF
|
||||
-DPIGLIT_BUILD_GL_TESTS=OFF
|
||||
-DPIGLIT_BUILD_GLES1_TESTS=OFF
|
||||
-DPIGLIT_BUILD_GLES2_TESTS=OFF
|
||||
-DPIGLIT_BUILD_GLES3_TESTS=OFF
|
||||
-DPIGLIT_BUILD_CL_TESTS=OFF
|
||||
-DPIGLIT_BUILD_VK_TESTS=OFF
|
||||
-DPIGLIT_BUILD_DMA_BUF_TESTS=OFF" \
|
||||
# We don't run any _piglit_ Vulkan tests in the containers.
|
||||
PIGLIT_OPTS="-DPIGLIT_USE_WAFFLE=ON
|
||||
-DPIGLIT_USE_GBM=OFF
|
||||
-DPIGLIT_USE_WAYLAND=OFF
|
||||
-DPIGLIT_USE_X11=OFF
|
||||
-DPIGLIT_BUILD_GLX_TESTS=OFF
|
||||
-DPIGLIT_BUILD_EGL_TESTS=OFF
|
||||
-DPIGLIT_BUILD_WGL_TESTS=OFF
|
||||
-DPIGLIT_BUILD_GL_TESTS=OFF
|
||||
-DPIGLIT_BUILD_GLES1_TESTS=OFF
|
||||
-DPIGLIT_BUILD_GLES2_TESTS=OFF
|
||||
-DPIGLIT_BUILD_GLES3_TESTS=OFF
|
||||
-DPIGLIT_BUILD_CL_TESTS=OFF
|
||||
-DPIGLIT_BUILD_VK_TESTS=OFF
|
||||
-DPIGLIT_BUILD_DMA_BUF_TESTS=OFF" \
|
||||
PIGLIT_BUILD_TARGETS="piglit_replayer" \
|
||||
. .gitlab-ci/container/build-piglit.sh
|
||||
fi
|
||||
|
||||
############### Build dEQP VK
|
||||
|
||||
@@ -105,11 +108,9 @@ DEQP_API=tools \
|
||||
DEQP_TARGET=default \
|
||||
. .gitlab-ci/container/build-deqp.sh
|
||||
|
||||
if [ "$DEBIAN_ARCH" == "amd64" ]; then
|
||||
DEQP_API=VK-main \
|
||||
DEQP_TARGET=default \
|
||||
. .gitlab-ci/container/build-deqp.sh
|
||||
fi
|
||||
DEQP_API=VK-main \
|
||||
DEQP_TARGET=default \
|
||||
. .gitlab-ci/container/build-deqp.sh
|
||||
|
||||
DEQP_API=VK \
|
||||
DEQP_TARGET=default \
|
||||
@@ -117,27 +118,23 @@ DEQP_TARGET=default \
|
||||
|
||||
rm -rf /VK-GL-CTS
|
||||
|
||||
############### Build apitrace
|
||||
|
||||
. .gitlab-ci/container/build-apitrace.sh
|
||||
|
||||
############### Build Fossilize
|
||||
|
||||
if [ "$DEBIAN_ARCH" != "armhf" ]; then
|
||||
. .gitlab-ci/container/build-fossilize.sh
|
||||
fi
|
||||
. .gitlab-ci/container/build-fossilize.sh
|
||||
|
||||
############### Build gfxreconstruct
|
||||
|
||||
# gfxreconstruct thinks that ARMv7-on-AArch64 is cross-compilation
|
||||
if [ "$DEBIAN_ARCH" != "armhf" ]; then
|
||||
. .gitlab-ci/container/build-gfxreconstruct.sh
|
||||
fi
|
||||
. .gitlab-ci/container/build-gfxreconstruct.sh
|
||||
|
||||
############### Build VKD3D-Proton
|
||||
|
||||
# Wine isn't available on 32-bit ARM
|
||||
if [ "$DEBIAN_ARCH" != "armhf" ]; then
|
||||
uncollapsed_section_switch proton "Installing Proton (Wine/D3DVK emulation)"
|
||||
. .gitlab-ci/container/setup-wine.sh "/vkd3d-proton-wine64"
|
||||
. .gitlab-ci/container/build-vkd3d-proton.sh
|
||||
fi
|
||||
. .gitlab-ci/container/setup-wine.sh "/vkd3d-proton-wine64"
|
||||
|
||||
. .gitlab-ci/container/build-vkd3d-proton.sh
|
||||
|
||||
############### Uninstall the build software
|
||||
|
||||
@@ -148,7 +145,3 @@ apt-get purge -y "${EPHEMERAL[@]}"
|
||||
. .gitlab-ci/container/container_post_build.sh
|
||||
|
||||
section_end debian_cleanup
|
||||
|
||||
############### Remove unused packages
|
||||
|
||||
. .gitlab-ci/container/strip-rootfs.sh
|
||||
|
@@ -46,12 +46,6 @@ curl -L --retry 4 -f --retry-all-errors --retry-delay 60 \
|
||||
unzip -d / "$ndk.zip"
|
||||
rm "$ndk.zip"
|
||||
|
||||
############### Build ANGLE
|
||||
|
||||
ANGLE_TARGET=android \
|
||||
DEBIAN_ARCH=amd64 \
|
||||
. .gitlab-ci/container/build-angle.sh
|
||||
|
||||
############### Build dEQP runner
|
||||
|
||||
export ANDROID_NDK_HOME=/$ndk
|
||||
@@ -59,16 +53,21 @@ export RUST_TARGET=x86_64-linux-android
|
||||
. .gitlab-ci/container/build-rust.sh
|
||||
. .gitlab-ci/container/build-deqp-runner.sh
|
||||
|
||||
# Properly uninstall rustup including cargo and init scripts on shells
|
||||
rustup self uninstall -y
|
||||
rm -rf /root/.cargo
|
||||
rm -rf /root/.rustup
|
||||
|
||||
############### Build dEQP
|
||||
############### Build dEQP GL
|
||||
|
||||
DEQP_API=tools \
|
||||
DEQP_TARGET="android" \
|
||||
EXTRA_CMAKE_ARGS="-DDEQP_ANDROID_EXE=ON -DDEQP_TARGET_TOOLCHAIN=ndk-modern -DANDROID_NDK_PATH=/$ndk -DANDROID_ABI=x86_64 -DDE_ANDROID_API=$ANDROID_SDK_VERSION" \
|
||||
. .gitlab-ci/container/build-deqp.sh
|
||||
|
||||
DEQP_API=GL \
|
||||
DEQP_TARGET="android" \
|
||||
EXTRA_CMAKE_ARGS="-DDEQP_TARGET_TOOLCHAIN=ndk-modern -DANDROID_NDK_PATH=/$ndk -DANDROID_ABI=x86_64 -DDE_ANDROID_API=$ANDROID_SDK_VERSION" \
|
||||
. .gitlab-ci/container/build-deqp.sh
|
||||
|
||||
DEQP_API=GLES \
|
||||
DEQP_TARGET="android" \
|
||||
EXTRA_CMAKE_ARGS="-DDEQP_TARGET_TOOLCHAIN=ndk-modern -DANDROID_NDK_PATH=/$ndk -DANDROID_ABI=x86_64 -DDE_ANDROID_API=$ANDROID_SDK_VERSION" \
|
||||
@@ -83,20 +82,18 @@ rm -rf /VK-GL-CTS
|
||||
|
||||
############### Downloading Cuttlefish resources ...
|
||||
|
||||
uncollapsed_section_start cuttlefish "Downloading, building and installing Cuttlefish"
|
||||
|
||||
CUTTLEFISH_PROJECT_PATH=ao2/aosp-manifest
|
||||
CUTTLEFISH_BUILD_VERSION_TAGS=mesa-venus
|
||||
CUTTLEFISH_BUILD_NUMBER=20250215.001
|
||||
CUTTLEFISH_BUILD_NUMBER=20250115.001
|
||||
|
||||
mkdir /cuttlefish
|
||||
pushd /cuttlefish
|
||||
|
||||
curl -L --retry 4 -f --retry-all-errors --retry-delay 60 \
|
||||
-o aosp_cf_x86_64_only_phone-img-$CUTTLEFISH_BUILD_NUMBER.zip "https://${S3_HOST}/${S3_ANDROID_BUCKET}/${CUTTLEFISH_PROJECT_PATH}/aosp-${CUTTLEFISH_BUILD_VERSION_TAGS}.${CUTTLEFISH_BUILD_NUMBER}/aosp_cf_x86_64_only_phone-img-$CUTTLEFISH_BUILD_NUMBER.zip"
|
||||
-o aosp_cf_x86_64_phone-img-$CUTTLEFISH_BUILD_NUMBER.zip "https://${S3_HOST}/${S3_ANDROID_BUCKET}/${CUTTLEFISH_PROJECT_PATH}/aosp-${CUTTLEFISH_BUILD_VERSION_TAGS}.${CUTTLEFISH_BUILD_NUMBER}/aosp_cf_x86_64_phone-img-$CUTTLEFISH_BUILD_NUMBER.zip"
|
||||
|
||||
unzip aosp_cf_x86_64_only_phone-img-$CUTTLEFISH_BUILD_NUMBER.zip
|
||||
rm aosp_cf_x86_64_only_phone-img-$CUTTLEFISH_BUILD_NUMBER.zip
|
||||
unzip aosp_cf_x86_64_phone-img-$CUTTLEFISH_BUILD_NUMBER.zip
|
||||
rm aosp_cf_x86_64_phone-img-$CUTTLEFISH_BUILD_NUMBER.zip
|
||||
ls -lhS ./*
|
||||
|
||||
curl -L --retry 4 -f --retry-all-errors --retry-delay 60 \
|
||||
@@ -136,43 +133,8 @@ rm -rf android-cuttlefish
|
||||
addgroup --system kvm
|
||||
usermod -a -G kvm,cvdnetwork root
|
||||
|
||||
section_end cuttlefish
|
||||
|
||||
############### Downloading Android CTS tools
|
||||
|
||||
uncollapsed_section_start android-cts "Downloading Android CTS tools"
|
||||
|
||||
ANDROID_CTS_VERSION="${ANDROID_VERSION}_r1"
|
||||
ANDROID_CTS_DEVICE_ARCH="x86"
|
||||
|
||||
mkdir /android-tools
|
||||
pushd /android-tools
|
||||
|
||||
curl -L --retry 4 -f --retry-all-errors --retry-delay 60 \
|
||||
-o "android-cts-${ANDROID_CTS_VERSION}-linux_x86-${ANDROID_CTS_DEVICE_ARCH}.zip" \
|
||||
"https://dl.google.com/dl/android/cts/android-cts-${ANDROID_CTS_VERSION}-linux_x86-${ANDROID_CTS_DEVICE_ARCH}.zip"
|
||||
unzip "android-cts-${ANDROID_CTS_VERSION}-linux_x86-${ANDROID_CTS_DEVICE_ARCH}.zip"
|
||||
rm "android-cts-${ANDROID_CTS_VERSION}-linux_x86-${ANDROID_CTS_DEVICE_ARCH}.zip"
|
||||
|
||||
# Keep only the interesting tests to save space
|
||||
# shellcheck disable=SC2086 # we want word splitting
|
||||
ANDROID_CTS_MODULES_KEEP_EXPRESSION=$(printf "%s|" $ANDROID_CTS_MODULES | sed -e 's/|$//g')
|
||||
find android-cts/testcases/ -mindepth 1 -type d | grep -v -E "$ANDROID_CTS_MODULES_KEEP_EXPRESSION" | xargs rm -rf
|
||||
|
||||
curl -L --retry 4 -f --retry-all-errors --retry-delay 60 \
|
||||
-o "build-tools_r${ANDROID_SDK_VERSION}-linux.zip" "https://dl.google.com/android/repository/build-tools_r${ANDROID_SDK_VERSION}-linux.zip"
|
||||
unzip "build-tools_r${ANDROID_SDK_VERSION}-linux.zip"
|
||||
rm "build-tools_r${ANDROID_SDK_VERSION}-linux.zip"
|
||||
mv "android-$ANDROID_VERSION" build-tools
|
||||
|
||||
popd
|
||||
|
||||
section_end android-cts
|
||||
|
||||
############### Uninstall the build software
|
||||
|
||||
uncollapsed_section_switch debian_cleanup "Cleaning up base Debian system"
|
||||
|
||||
rm -rf "/${ndk:?}"
|
||||
|
||||
export SUDO_FORCE_REMOVE=yes
|
||||
@@ -180,8 +142,4 @@ apt-get purge -y "${EPHEMERAL[@]}"
|
||||
|
||||
. .gitlab-ci/container/container_post_build.sh
|
||||
|
||||
section_end debian_cleanup
|
||||
|
||||
############### Remove unused packages
|
||||
|
||||
. .gitlab-ci/container/strip-rootfs.sh
|
||||
|
@@ -1,4 +1,5 @@
|
||||
#!/usr/bin/env bash
|
||||
|
||||
DEBIAN_ARCH="amd64" \
|
||||
. .gitlab-ci/container/debian/test-gl.sh
|
||||
|
||||
. .gitlab-ci/container/strip-rootfs.sh
|
||||
|
@@ -1,4 +1,5 @@
|
||||
#!/usr/bin/env bash
|
||||
|
||||
DEBIAN_ARCH="amd64" \
|
||||
. .gitlab-ci/container/debian/test-vk.sh
|
||||
|
||||
. .gitlab-ci/container/strip-rootfs.sh
|
||||
|
31
.gitlab-ci/container/download-prebuilt-kernel.sh
Normal file
31
.gitlab-ci/container/download-prebuilt-kernel.sh
Normal file
@@ -0,0 +1,31 @@
|
||||
#!/usr/bin/env bash
|
||||
# shellcheck disable=SC2086 # we want word splitting
|
||||
# shellcheck disable=SC2153
|
||||
|
||||
set -uex
|
||||
|
||||
mkdir -p kernel
|
||||
pushd kernel
|
||||
|
||||
if [[ ${DEBIAN_ARCH} = "arm64" ]]; then
|
||||
KERNEL_IMAGE_NAME+=" cheza-kernel"
|
||||
fi
|
||||
|
||||
for image in ${KERNEL_IMAGE_NAME:-}; do
|
||||
curl -L --retry 4 -f --retry-all-errors --retry-delay 60 \
|
||||
-o "/lava-files/${image}" "${KERNEL_IMAGE_BASE}/${DEBIAN_ARCH}/${image}"
|
||||
done
|
||||
|
||||
for dtb in ${DEVICE_TREES:-}; do
|
||||
curl -L --retry 4 -f --retry-all-errors --retry-delay 60 \
|
||||
-o "/lava-files/${dtb}" "${KERNEL_IMAGE_BASE}/${DEBIAN_ARCH}/${dtb}"
|
||||
done
|
||||
|
||||
mkdir -p "/lava-files/rootfs-${DEBIAN_ARCH}"
|
||||
curl -L --retry 4 -f --retry-all-errors --retry-delay 60 \
|
||||
-O "${KERNEL_IMAGE_BASE}/${DEBIAN_ARCH}/modules.tar.zst"
|
||||
tar --keep-directory-symlink --zstd -xf modules.tar.zst -C "/lava-files/rootfs-${DEBIAN_ARCH}/"
|
||||
|
||||
popd
|
||||
rm -rf kernel
|
||||
|
@@ -52,44 +52,15 @@
|
||||
|
||||
.container:
|
||||
stage: container
|
||||
timeout: 1h
|
||||
extends:
|
||||
- .container+build-rules
|
||||
- .incorporate-templates-commit
|
||||
tags:
|
||||
- $FDO_RUNNER_JOB_PRIORITY_TAG_X86_64
|
||||
variables:
|
||||
FDO_REPO_SUFFIX: $CI_JOB_NAME
|
||||
FDO_DISTRIBUTION_EXEC: 'bash .gitlab-ci/container/container_job_trampoline.sh "${CI_JOB_NAME}"'
|
||||
# no need to pull the whole repo to build the container image
|
||||
GIT_STRATEGY: none
|
||||
|
||||
.container-builds-angle:
|
||||
variables:
|
||||
ANGLE_TAG: "${CONDITIONAL_BUILD_ANGLE_TAG}"
|
||||
|
||||
.container-builds-android:
|
||||
extends:
|
||||
- .container-builds-angle
|
||||
variables:
|
||||
# CI_BUILD_COMPONENTS is a space-separated list of components used during early tag checks
|
||||
# If this job inherits from multiple .container-builds-*, it needs to combine them
|
||||
# e.g: inherits from .container-builds-angle and .container-builds-piglit
|
||||
# should make CI_BUILD_COMPONENTS="angle piglit"
|
||||
CI_BUILD_COMPONENTS: "angle"
|
||||
|
||||
.container-builds-x86_64:
|
||||
extends:
|
||||
- .container-builds-angle
|
||||
variables:
|
||||
CI_BUILD_COMPONENTS: "angle"
|
||||
|
||||
.container-builds-arm64:
|
||||
extends:
|
||||
- .container-builds-angle
|
||||
variables:
|
||||
CI_BUILD_COMPONENTS: "angle"
|
||||
|
||||
.use-base-image:
|
||||
extends:
|
||||
- .container
|
||||
@@ -104,14 +75,12 @@ debian/x86_64_build-base:
|
||||
LLVM_VERSION: &debian-x86_64-llvm 19
|
||||
|
||||
.use-debian/x86_64_build-base:
|
||||
tags:
|
||||
- $FDO_RUNNER_JOB_PRIORITY_TAG_X86_64
|
||||
extends:
|
||||
- .fdo.container-build@debian
|
||||
- .debian-container-version
|
||||
- .use-base-image
|
||||
variables:
|
||||
MESA_BASE_IMAGE: "debian/x86_64_build-base"
|
||||
MESA_BASE_IMAGE: ${DEBIAN_X86_64_BUILD_BASE_IMAGE}
|
||||
MESA_BASE_TAG: *debian-x86_64_build-base
|
||||
MESA_ARTIFACTS_BASE_TAG: *debian-x86_64_build-base
|
||||
LLVM_VERSION: *debian-x86_64-llvm
|
||||
@@ -127,13 +96,11 @@ debian/x86_64_build:
|
||||
LLVM_VERSION: *debian-x86_64-llvm
|
||||
|
||||
.use-debian/x86_64_build:
|
||||
tags:
|
||||
- $FDO_RUNNER_JOB_PRIORITY_TAG_X86_64
|
||||
extends:
|
||||
- .set-image-base-tag
|
||||
variables:
|
||||
MESA_BASE_TAG: *debian-x86_64_build-base
|
||||
MESA_IMAGE_PATH: "debian/x86_64_build"
|
||||
MESA_IMAGE_PATH: ${DEBIAN_X86_64_BUILD_IMAGE_PATH}
|
||||
MESA_IMAGE_TAG: *debian-x86_64_build
|
||||
LLVM_VERSION: *debian-x86_64-llvm
|
||||
needs:
|
||||
@@ -147,8 +114,6 @@ debian/x86_32_build:
|
||||
MESA_IMAGE_TAG: &debian-x86_32_build ${DEBIAN_BUILD_TAG}
|
||||
|
||||
.use-debian/x86_32_build:
|
||||
tags:
|
||||
- $FDO_RUNNER_JOB_PRIORITY_TAG_X86_64
|
||||
extends:
|
||||
- .set-image-base-tag
|
||||
variables:
|
||||
@@ -168,8 +133,6 @@ debian/ppc64el_build:
|
||||
LLVM_VERSION: &debian-ppc64el-llvm 15 # no LLVM packages for PPC
|
||||
|
||||
.use-debian/ppc64el_build:
|
||||
tags:
|
||||
- $FDO_RUNNER_JOB_PRIORITY_TAG_X86_64
|
||||
extends:
|
||||
- .set-image-base-tag
|
||||
variables:
|
||||
@@ -189,8 +152,6 @@ debian/s390x_build:
|
||||
LLVM_VERSION: &debian-s390x-llvm 19
|
||||
|
||||
.use-debian/s390x_build:
|
||||
tags:
|
||||
- $FDO_RUNNER_JOB_PRIORITY_TAG_X86_64
|
||||
extends:
|
||||
- .set-image-base-tag
|
||||
variables:
|
||||
@@ -203,16 +164,11 @@ debian/s390x_build:
|
||||
|
||||
# Android NDK cross-build image
|
||||
.android-variables:
|
||||
extends:
|
||||
- .container-builds-android
|
||||
variables:
|
||||
ANDROID_VERSION: 14
|
||||
ANDROID_NDK_VERSION: "r27c"
|
||||
ANDROID_SDK_VERSION: 34
|
||||
# Space-separated list of interesting CTS modules
|
||||
ANDROID_CTS_MODULES: CtsGraphicsTestCases
|
||||
ANDROID_LLVM_VERSION: llvmorg-19.1.7
|
||||
ANDROID_LLVM_ARTIFACT_NAME: android-x86_64-llvm-20250324
|
||||
ANDROID_LLVM_VERSION: llvmorg-18.1.8
|
||||
ANDROID_LLVM_ARTIFACT_NAME: android-x86_64-llvm-20250103
|
||||
# This can be confusing: LLVM_VERSION refers to the host LLVM toolchain
|
||||
# used (LLVM 19 in our Debian system), but ANDROID_LLVM_VERSION refers to
|
||||
# the cross-compiling LLVM toolchain used to build for the Android system.
|
||||
@@ -221,7 +177,6 @@ debian/s390x_build:
|
||||
debian/android_build:
|
||||
extends:
|
||||
- .android-variables
|
||||
- .container-builds-android
|
||||
- .use-debian/x86_64_build-base
|
||||
variables:
|
||||
MESA_IMAGE_TAG: &debian-android_build ${DEBIAN_BUILD_TAG}
|
||||
@@ -230,8 +185,6 @@ debian/android_build:
|
||||
extends:
|
||||
- .android-variables
|
||||
- .set-image-base-tag
|
||||
tags:
|
||||
- $FDO_RUNNER_JOB_PRIORITY_TAG_X86_64
|
||||
variables:
|
||||
MESA_BASE_TAG: *debian-x86_64_build-base
|
||||
MESA_IMAGE_PATH: "debian/android_build"
|
||||
@@ -246,7 +199,7 @@ debian/arm64_build:
|
||||
- .container
|
||||
- .debian-container-version
|
||||
tags:
|
||||
- $FDO_RUNNER_JOB_PRIORITY_TAG_AARCH64
|
||||
- aarch64
|
||||
variables:
|
||||
MESA_IMAGE_TAG: &debian-arm64_build "${DEBIAN_BASE_TAG}--${PKG_REPO_REV}"
|
||||
LLVM_VERSION: &debian-arm64-llvm 19
|
||||
@@ -254,8 +207,6 @@ debian/arm64_build:
|
||||
.use-debian/arm64_build:
|
||||
extends:
|
||||
- .set-image
|
||||
tags:
|
||||
- $FDO_RUNNER_JOB_PRIORITY_TAG_AARCH64
|
||||
variables:
|
||||
MESA_IMAGE_PATH: "debian/arm64_build"
|
||||
MESA_IMAGE_TAG: *debian-arm64_build
|
||||
@@ -270,7 +221,7 @@ debian/arm64_build:
|
||||
- .fdo.container-build@alpine
|
||||
- .container
|
||||
variables:
|
||||
FDO_DISTRIBUTION_VERSION: "3.21"
|
||||
FDO_DISTRIBUTION_VERSION: "edge" # switch to 3.20 when gets released
|
||||
FDO_BASE_IMAGE: alpine:$FDO_DISTRIBUTION_VERSION # since cbuild ignores it
|
||||
|
||||
# Alpine based x86_64 build image
|
||||
@@ -282,16 +233,14 @@ alpine/x86_64_build:
|
||||
LLVM_VERSION: &alpine-llvm_version 19
|
||||
rules:
|
||||
# Note: the next three lines must remain in that order, so that the rules
|
||||
# in `linkcheck-docs` catch nightly pipelines before the rules in `deploy-docs`
|
||||
# in `linkcheck-docs` catch nightly pipelines before the rules in `pages`
|
||||
# exclude them.
|
||||
- !reference [linkcheck-docs, rules]
|
||||
- !reference [deploy-docs, rules]
|
||||
- !reference [pages, rules]
|
||||
- !reference [test-docs, rules]
|
||||
- !reference [.container, rules]
|
||||
|
||||
.use-alpine/x86_64_build:
|
||||
tags:
|
||||
- $FDO_RUNNER_JOB_PRIORITY_TAG_X86_64
|
||||
extends:
|
||||
- .set-image
|
||||
variables:
|
||||
@@ -319,8 +268,6 @@ fedora/x86_64_build:
|
||||
LLVM_VERSION: &fedora-x86_64-llvm 19
|
||||
|
||||
.use-fedora/x86_64_build:
|
||||
tags:
|
||||
- $FDO_RUNNER_JOB_PRIORITY_TAG_X86_64
|
||||
extends:
|
||||
- .set-image
|
||||
variables:
|
||||
@@ -339,50 +286,21 @@ debian/x86_64_test-base:
|
||||
LLVM_VERSION: *debian-x86_64-llvm
|
||||
|
||||
.use-debian/x86_64_test-base:
|
||||
tags:
|
||||
- $FDO_RUNNER_JOB_PRIORITY_TAG_X86_64
|
||||
extends:
|
||||
- .fdo.container-build@debian
|
||||
- .debian-container-version
|
||||
- .use-base-image
|
||||
variables:
|
||||
MESA_BASE_IMAGE: "debian/x86_64_test-base"
|
||||
MESA_BASE_IMAGE: ${DEBIAN_X86_64_TEST_BASE_IMAGE}
|
||||
MESA_BASE_TAG: *debian-x86_64_test-base
|
||||
LLVM_VERSION: *debian-x86_64-llvm
|
||||
needs:
|
||||
- debian/x86_64_test-base
|
||||
|
||||
# Debian based ARMv7/armhf test image base
|
||||
debian/arm32_test-base:
|
||||
tags:
|
||||
- $FDO_RUNNER_JOB_PRIORITY_TAG_AARCH64
|
||||
extends:
|
||||
- .debian-container
|
||||
- .firmware_arm32
|
||||
variables:
|
||||
MESA_IMAGE_TAG: &debian-arm32_test-base "${DEBIAN_BASE_TAG}--${PKG_REPO_REV}"
|
||||
LLVM_VERSION: *debian-arm64-llvm
|
||||
FDO_DISTRIBUTION_PLATFORM: "linux/arm/v7"
|
||||
|
||||
.use-debian/arm32_test-base:
|
||||
tags:
|
||||
- $FDO_RUNNER_JOB_PRIORITY_TAG_AARCH64
|
||||
extends:
|
||||
- .fdo.container-build@debian
|
||||
- .debian-container-version
|
||||
- .use-base-image
|
||||
variables:
|
||||
MESA_BASE_IMAGE: "debian/arm32_test-base"
|
||||
MESA_BASE_TAG: *debian-arm32_test-base
|
||||
LLVM_VERSION: *debian-arm64-llvm
|
||||
FDO_DISTRIBUTION_PLATFORM: "linux/arm/v7"
|
||||
needs:
|
||||
- debian/arm32_test-base
|
||||
|
||||
# Debian based aarch64 test image base
|
||||
debian/arm64_test-base:
|
||||
tags:
|
||||
- $FDO_RUNNER_JOB_PRIORITY_TAG_AARCH64
|
||||
- aarch64
|
||||
extends:
|
||||
- .debian-container
|
||||
variables:
|
||||
@@ -391,13 +309,13 @@ debian/arm64_test-base:
|
||||
|
||||
.use-debian/arm64_test-base:
|
||||
tags:
|
||||
- $FDO_RUNNER_JOB_PRIORITY_TAG_AARCH64
|
||||
- aarch64
|
||||
extends:
|
||||
- .fdo.container-build@debian
|
||||
- .debian-container-version
|
||||
- .use-base-image
|
||||
variables:
|
||||
MESA_BASE_IMAGE: "debian/arm64_test-base"
|
||||
MESA_BASE_IMAGE: ${DEBIAN_ARM64_TEST_BASE_IMAGE}
|
||||
MESA_BASE_TAG: *debian-arm64_test-base
|
||||
LLVM_VERSION: *debian-arm64-llvm
|
||||
needs:
|
||||
@@ -410,13 +328,11 @@ debian/x86_64_test-gl:
|
||||
MESA_IMAGE_TAG: &debian-x86_64_test-gl ${DEBIAN_TEST_GL_TAG}
|
||||
|
||||
.use-debian/x86_64_test-gl:
|
||||
tags:
|
||||
- $FDO_RUNNER_JOB_PRIORITY_TAG_X86_64
|
||||
extends:
|
||||
- .set-image-base-tag
|
||||
variables:
|
||||
MESA_BASE_TAG: *debian-x86_64_test-base
|
||||
MESA_IMAGE_PATH: "debian/x86_64_test-gl"
|
||||
MESA_IMAGE_PATH: ${DEBIAN_X86_64_TEST_IMAGE_GL_PATH}
|
||||
MESA_IMAGE_TAG: *debian-x86_64_test-gl
|
||||
needs:
|
||||
- debian/x86_64_test-gl
|
||||
@@ -428,19 +344,17 @@ debian/x86_64_test-vk:
|
||||
MESA_IMAGE_TAG: &debian-x86_64_test-vk ${DEBIAN_TEST_VK_TAG}
|
||||
|
||||
.use-debian/x86_64_test-vk:
|
||||
tags:
|
||||
- $FDO_RUNNER_JOB_PRIORITY_TAG_X86_64
|
||||
extends:
|
||||
- .set-image-base-tag
|
||||
variables:
|
||||
MESA_BASE_TAG: *debian-x86_64_test-base
|
||||
MESA_IMAGE_PATH: "debian/x86_64_test-vk"
|
||||
MESA_IMAGE_PATH: ${DEBIAN_X86_64_TEST_IMAGE_VK_PATH}
|
||||
MESA_IMAGE_TAG: *debian-x86_64_test-vk
|
||||
needs:
|
||||
- debian/x86_64_test-vk
|
||||
|
||||
# Debian based x86_64 test image for Android
|
||||
debian/x86_64_test-android:
|
||||
.debian/x86_64_test-android:
|
||||
extends:
|
||||
- .android-variables
|
||||
- .use-debian/x86_64_test-base
|
||||
@@ -448,14 +362,11 @@ debian/x86_64_test-android:
|
||||
MESA_IMAGE_TAG: &debian-x86_64_test-android ${DEBIAN_TEST_ANDROID_TAG}
|
||||
|
||||
.use-debian/x86_64_test-android:
|
||||
tags:
|
||||
- $FDO_RUNNER_JOB_PRIORITY_TAG_X86_64_KVM
|
||||
extends:
|
||||
- .android-variables
|
||||
- .set-image-base-tag
|
||||
variables:
|
||||
MESA_BASE_TAG: *debian-x86_64_test-base
|
||||
MESA_IMAGE_PATH: "debian/x86_64_test-android"
|
||||
MESA_IMAGE_PATH: ${DEBIAN_X86_64_TEST_ANDROID_IMAGE_PATH}
|
||||
MESA_IMAGE_TAG: *debian-x86_64_test-android
|
||||
needs:
|
||||
- debian/x86_64_test-android
|
||||
@@ -468,78 +379,32 @@ debian/x86_64_pyutils:
|
||||
MESA_IMAGE_TAG: &debian-x86_64_pyutils "${DEBIAN_PYUTILS_TAG}"
|
||||
|
||||
.use-debian/x86_64_pyutils:
|
||||
tags:
|
||||
- $FDO_RUNNER_JOB_PRIORITY_TAG_X86_64
|
||||
extends:
|
||||
- .fdo.container-build@debian
|
||||
- .debian-container-version
|
||||
- .set-image
|
||||
variables:
|
||||
MESA_IMAGE_PATH: "debian/x86_64_pyutils"
|
||||
MESA_IMAGE_PATH: ${DEBIAN_PYUTILS_IMAGE}
|
||||
MESA_IMAGE_TAG: *debian-x86_64_pyutils
|
||||
needs:
|
||||
- debian/x86_64_pyutils
|
||||
|
||||
# Debian based ARMv7/armhf test image for GL
|
||||
debian/arm32_test-gl:
|
||||
tags:
|
||||
- $FDO_RUNNER_JOB_PRIORITY_TAG_AARCH64
|
||||
extends: .use-debian/arm32_test-base
|
||||
variables:
|
||||
MESA_IMAGE_TAG: &debian-arm32_test-gl ${DEBIAN_TEST_GL_TAG}
|
||||
|
||||
.use-debian/arm32_test-gl:
|
||||
tags:
|
||||
- $FDO_RUNNER_JOB_PRIORITY_TAG_AARCH64
|
||||
extends:
|
||||
- .set-image-base-tag
|
||||
variables:
|
||||
MESA_BASE_TAG: *debian-arm32_test-base
|
||||
MESA_IMAGE_PATH: "debian/arm32_test-gl"
|
||||
MESA_IMAGE_TAG: *debian-arm32_test-gl
|
||||
needs:
|
||||
- debian/arm32_test-gl
|
||||
|
||||
# Debian based ARMv7/armhf test image for VK
|
||||
debian/arm32_test-vk:
|
||||
rules:
|
||||
- when: never # There are currently no arm32 VK jobs
|
||||
tags:
|
||||
- $FDO_RUNNER_JOB_PRIORITY_TAG_AARCH64
|
||||
extends: .use-debian/arm32_test-base
|
||||
variables:
|
||||
MESA_IMAGE_TAG: &debian-arm32_test-vk ${DEBIAN_TEST_VK_TAG}
|
||||
|
||||
.use-debian/arm32_test-vk:
|
||||
tags:
|
||||
- $FDO_RUNNER_JOB_PRIORITY_TAG_AARCH64
|
||||
extends:
|
||||
- .set-image-base-tag
|
||||
variables:
|
||||
MESA_BASE_TAG: *debian-arm32_test-base
|
||||
MESA_IMAGE_PATH: "debian/arm32_test-vk"
|
||||
MESA_IMAGE_TAG: *debian-arm32_test-vk
|
||||
needs:
|
||||
- debian/arm32_test-vk
|
||||
|
||||
# Debian based aarch64 test image for GL
|
||||
debian/arm64_test-gl:
|
||||
tags:
|
||||
- $FDO_RUNNER_JOB_PRIORITY_TAG_AARCH64
|
||||
extends:
|
||||
- .use-debian/arm64_test-base
|
||||
- .container-builds-arm64
|
||||
- aarch64
|
||||
extends: .use-debian/arm64_test-base
|
||||
variables:
|
||||
MESA_IMAGE_TAG: &debian-arm64_test-gl ${DEBIAN_TEST_GL_TAG}
|
||||
|
||||
.use-debian/arm64_test-gl:
|
||||
tags:
|
||||
- $FDO_RUNNER_JOB_PRIORITY_TAG_AARCH64
|
||||
- aarch64
|
||||
extends:
|
||||
- .set-image-base-tag
|
||||
variables:
|
||||
MESA_BASE_TAG: *debian-arm64_test-base
|
||||
MESA_IMAGE_PATH: "debian/arm64_test-gl"
|
||||
MESA_IMAGE_PATH: ${DEBIAN_ARM64_TEST_IMAGE_GL_PATH}
|
||||
MESA_IMAGE_TAG: *debian-arm64_test-gl
|
||||
needs:
|
||||
- debian/arm64_test-gl
|
||||
@@ -547,19 +412,19 @@ debian/arm64_test-gl:
|
||||
# Debian based aarch64 test image for VK
|
||||
debian/arm64_test-vk:
|
||||
tags:
|
||||
- $FDO_RUNNER_JOB_PRIORITY_TAG_AARCH64
|
||||
- aarch64
|
||||
extends: .use-debian/arm64_test-base
|
||||
variables:
|
||||
MESA_IMAGE_TAG: &debian-arm64_test-vk ${DEBIAN_TEST_VK_TAG}
|
||||
|
||||
.use-debian/arm64_test-vk:
|
||||
tags:
|
||||
- $FDO_RUNNER_JOB_PRIORITY_TAG_AARCH64
|
||||
- aarch64
|
||||
extends:
|
||||
- .set-image-base-tag
|
||||
variables:
|
||||
MESA_BASE_TAG: *debian-arm64_test-base
|
||||
MESA_IMAGE_PATH: "debian/arm64_test-vk"
|
||||
MESA_IMAGE_PATH: ${DEBIAN_ARM64_TEST_IMAGE_VK_PATH}
|
||||
MESA_IMAGE_TAG: *debian-arm64_test-vk
|
||||
needs:
|
||||
- debian/arm64_test-vk
|
||||
@@ -570,7 +435,6 @@ debian/arm64_test-vk:
|
||||
.firmware_x86_64:
|
||||
variables:
|
||||
FIRMWARE_FILES: |
|
||||
.gitlab-ci/firmware/i915/adl-fw.json
|
||||
.gitlab-ci/firmware/i915/mtl-fw.json
|
||||
|
||||
.firmware_arm64:
|
||||
@@ -600,7 +464,6 @@ kernel+rootfs_x86_64:
|
||||
- .use-debian/x86_64_build-base
|
||||
- .kernel+rootfs
|
||||
- .firmware_x86_64
|
||||
- .container-builds-x86_64
|
||||
image: "$FDO_BASE_IMAGE"
|
||||
variables:
|
||||
DEBIAN_ARCH: "amd64"
|
||||
@@ -612,7 +475,8 @@ kernel+rootfs_arm64:
|
||||
- .use-debian/arm64_build
|
||||
- .kernel+rootfs
|
||||
- .firmware_arm64
|
||||
- .container-builds-arm64
|
||||
tags:
|
||||
- aarch64
|
||||
variables:
|
||||
DEBIAN_ARCH: "arm64"
|
||||
LLVM_VERSION: *debian-arm64-llvm
|
||||
@@ -733,7 +597,7 @@ windows_msvc:
|
||||
extends:
|
||||
- .windows_container_build
|
||||
variables:
|
||||
MESA_IMAGE_PATH: &windows_msvc_image_path "windows/x86_64_msvc"
|
||||
MESA_IMAGE_PATH: &windows_msvc_image_path ${WINDOWS_X64_MSVC_PATH}
|
||||
MESA_IMAGE_TAG: ${WINDOWS_X64_MSVC_TAG}
|
||||
DOCKERFILE: Dockerfile_msvc
|
||||
MESA_BASE_IMAGE: "mcr.microsoft.com/windows/server:ltsc2022"
|
||||
@@ -748,7 +612,7 @@ windows_build_msvc:
|
||||
- !reference [.microsoft-farm-rules, rules]
|
||||
- !reference [.container+build-rules, rules]
|
||||
variables:
|
||||
MESA_IMAGE_PATH: &windows_build_image_path "windows/x86_64_build"
|
||||
MESA_IMAGE_PATH: &windows_build_image_path ${WINDOWS_X64_BUILD_PATH}
|
||||
MESA_IMAGE_TAG: &windows_build_image_tag ${WINDOWS_X64_MSVC_TAG}--${WINDOWS_X64_BUILD_TAG}
|
||||
DOCKERFILE: Dockerfile_build
|
||||
MESA_BASE_IMAGE_PATH: *windows_msvc_image_path
|
||||
@@ -767,7 +631,7 @@ windows_test_msvc:
|
||||
- !reference [.microsoft-farm-rules, rules]
|
||||
- !reference [.container+build-rules, rules]
|
||||
variables:
|
||||
MESA_IMAGE_PATH: &windows_test_image_path "windows/x86_64_test"
|
||||
MESA_IMAGE_PATH: &windows_test_image_path ${WINDOWS_X64_TEST_PATH}
|
||||
MESA_IMAGE_TAG: &windows_test_image_tag ${WINDOWS_X64_MSVC_TAG}--${WINDOWS_X64_TEST_TAG}
|
||||
DOCKERFILE: Dockerfile_test
|
||||
MESA_BASE_IMAGE_PATH: *windows_msvc_image_path
|
||||
|
@@ -25,7 +25,7 @@ export SKIP_UPDATE_FLUSTER_VECTORS=0
|
||||
check_minio()
|
||||
{
|
||||
S3_PATH="${S3_HOST}/${S3_KERNEL_BUCKET}/$1/${DISTRIBUTION_TAG}/${DEBIAN_ARCH}"
|
||||
if curl -L --retry 4 -f --retry-delay 60 -s \
|
||||
if curl -L --retry 4 -f --retry-delay 60 -s -X HEAD \
|
||||
"https://${S3_PATH}/done"; then
|
||||
echo "Remote files are up-to-date, skip rebuilding them."
|
||||
exit
|
||||
@@ -35,7 +35,7 @@ check_minio()
|
||||
check_fluster()
|
||||
{
|
||||
S3_PATH_FLUSTER="${S3_HOST}/${S3_KERNEL_BUCKET}/$1/${DATA_STORAGE_PATH}/fluster/${FLUSTER_VECTORS_VERSION}"
|
||||
if curl -L --retry 4 -f --retry-delay 60 -s \
|
||||
if curl -L --retry 4 -f --retry-delay 60 -s -X HEAD \
|
||||
"https://${S3_PATH_FLUSTER}/done"; then
|
||||
echo "Fluster vectors are up-to-date, skip downloading them."
|
||||
export SKIP_UPDATE_FLUSTER_VECTORS=1
|
||||
@@ -58,12 +58,34 @@ if [[ "$DEBIAN_ARCH" = "arm64" ]]; then
|
||||
BUILD_VK="ON"
|
||||
GCC_ARCH="aarch64-linux-gnu"
|
||||
KERNEL_ARCH="arm64"
|
||||
DEFCONFIG="arch/arm64/configs/defconfig"
|
||||
DEVICE_TREES="rk3399-gru-kevin.dtb"
|
||||
DEVICE_TREES+=" meson-g12b-a311d-khadas-vim3.dtb"
|
||||
DEVICE_TREES+=" meson-gxl-s805x-libretech-ac.dtb"
|
||||
DEVICE_TREES+=" meson-gxm-khadas-vim2.dtb"
|
||||
DEVICE_TREES+=" sun50i-h6-pine-h64.dtb"
|
||||
DEVICE_TREES+=" imx8mq-nitrogen.dtb"
|
||||
DEVICE_TREES+=" mt8192-asurada-spherion-r0.dtb"
|
||||
DEVICE_TREES+=" mt8183-kukui-jacuzzi-juniper-sku16.dtb"
|
||||
DEVICE_TREES+=" tegra210-p3450-0000.dtb"
|
||||
DEVICE_TREES+=" apq8016-sbc-usb-host.dtb"
|
||||
DEVICE_TREES+=" apq8096-db820c.dtb"
|
||||
DEVICE_TREES+=" sc7180-trogdor-lazor-limozeen-nots-r5.dtb"
|
||||
DEVICE_TREES+=" sc7180-trogdor-kingoftown.dtb"
|
||||
DEVICE_TREES+=" sm8350-hdk.dtb"
|
||||
KERNEL_IMAGE_NAME="Image"
|
||||
|
||||
elif [[ "$DEBIAN_ARCH" = "armhf" ]]; then
|
||||
BUILD_CL="OFF"
|
||||
BUILD_VK="OFF"
|
||||
GCC_ARCH="arm-linux-gnueabihf"
|
||||
KERNEL_ARCH="arm"
|
||||
DEFCONFIG="arch/arm/configs/multi_v7_defconfig"
|
||||
DEVICE_TREES="rk3288-veyron-jaq.dtb"
|
||||
DEVICE_TREES+=" sun8i-h3-libretech-all-h3-cc.dtb"
|
||||
DEVICE_TREES+=" imx6q-cubox-i.dtb"
|
||||
DEVICE_TREES+=" tegra124-jetson-tk1.dtb"
|
||||
KERNEL_IMAGE_NAME="zImage"
|
||||
. .gitlab-ci/container/create-cross-file.sh armhf
|
||||
CONTAINER_ARCH_PACKAGES=(
|
||||
libegl1-mesa-dev:armhf
|
||||
@@ -83,6 +105,9 @@ else
|
||||
BUILD_VK="ON"
|
||||
GCC_ARCH="x86_64-linux-gnu"
|
||||
KERNEL_ARCH="x86_64"
|
||||
DEFCONFIG="arch/x86/configs/x86_64_defconfig"
|
||||
DEVICE_TREES=""
|
||||
KERNEL_IMAGE_NAME="bzImage"
|
||||
CONTAINER_ARCH_PACKAGES=(
|
||||
libasound2-dev libcap-dev libfdt-dev libva-dev p7zip wine
|
||||
)
|
||||
@@ -136,7 +161,6 @@ CONTAINER_EPHEMERAL=(
|
||||
libxcb-dri2-0-dev
|
||||
libxkbcommon-dev
|
||||
libwayland-dev
|
||||
"lld-${LLVM_VERSION}"
|
||||
ninja-build
|
||||
openssh-server
|
||||
patch
|
||||
@@ -280,8 +304,7 @@ mv /apitrace/build $ROOTFS/apitrace
|
||||
rm -rf /apitrace
|
||||
|
||||
############### Build ANGLE
|
||||
if [ "$DEBIAN_ARCH" != "armhf" ]; then
|
||||
ANGLE_TARGET=linux \
|
||||
if [[ "$DEBIAN_ARCH" = "amd64" ]]; then
|
||||
. .gitlab-ci/container/build-angle.sh
|
||||
mv /angle $ROOTFS/.
|
||||
rm -rf /angle
|
||||
@@ -312,11 +335,9 @@ if [ "$BUILD_VK" == "ON" ]; then
|
||||
DEQP_TARGET=default \
|
||||
. .gitlab-ci/container/build-deqp.sh
|
||||
|
||||
if [ "$DEBIAN_ARCH" == "amd64" ]; then
|
||||
DEQP_API=VK-main \
|
||||
DEQP_TARGET=default \
|
||||
. .gitlab-ci/container/build-deqp.sh
|
||||
fi
|
||||
DEQP_API=VK-main \
|
||||
DEQP_TARGET=default \
|
||||
. .gitlab-ci/container/build-deqp.sh
|
||||
fi
|
||||
|
||||
rm -rf /VK-GL-CTS
|
||||
@@ -382,6 +403,10 @@ if [[ -e ".gitlab-ci/local/build-rootfs.sh" ]]; then
|
||||
. .gitlab-ci/local/build-rootfs.sh
|
||||
fi
|
||||
|
||||
|
||||
############### Download prebuilt kernel
|
||||
. .gitlab-ci/container/download-prebuilt-kernel.sh
|
||||
|
||||
############### Delete rust, since the tests won't be compiling anything.
|
||||
rm -rf /root/.cargo
|
||||
rm -rf /root/.rustup
|
||||
@@ -404,14 +429,11 @@ rm "$ROOTFS/setup-rootfs.sh"
|
||||
rm "$ROOTFS/strip-rootfs.sh"
|
||||
cp /etc/wgetrc $ROOTFS/etc/.
|
||||
|
||||
# Copy all tags to the rootfs, so test jobs can check if they are using the intended version
|
||||
TAG_FILE_DIR="$(get_tag_file)"
|
||||
if [ -d "${TAG_FILE_DIR}" ]; then
|
||||
cp --parents -r "${TAG_FILE_DIR}" $ROOTFS/.
|
||||
fi
|
||||
|
||||
if [ "${DEBIAN_ARCH}" = "arm64" ]; then
|
||||
mkdir -p /lava-files/rootfs-arm64/lib/firmware/qcom/sm8350/ # for firmware imported later
|
||||
# Make a gzipped copy of the Image for db410c.
|
||||
gzip -k /lava-files/Image
|
||||
KERNEL_IMAGE_NAME+=" Image.gz"
|
||||
fi
|
||||
|
||||
ROOTFSTAR="lava-rootfs.tar.zst"
|
||||
@@ -422,7 +444,8 @@ popd
|
||||
|
||||
. .gitlab-ci/container/container_post_build.sh
|
||||
|
||||
s3_upload /lava-files/"${ROOTFSTAR}" "https://${S3_PATH}/"
|
||||
ci-fairy s3cp --token-file "${S3_JWT_FILE}" /lava-files/"${ROOTFSTAR}" \
|
||||
https://${S3_PATH}/"${ROOTFSTAR}"
|
||||
|
||||
touch /lava-files/done
|
||||
s3_upload /lava-files/done "https://${S3_PATH}/"
|
||||
ci-fairy s3cp --token-file "${S3_JWT_FILE}" /lava-files/done https://${S3_PATH}/done
|
||||
|
@@ -0,0 +1,144 @@
|
||||
From 2f4a38ecfde470abcd5d3c0ae7337bf780343469 Mon Sep 17 00:00:00 2001
|
||||
From: Daniel Stone <daniels@collabora.com>
|
||||
Date: Tue, 15 Oct 2024 16:02:26 +0100
|
||||
Subject: [PATCH] deps: Make more sources conditional
|
||||
|
||||
Fetching all the dependent sources - including at least one copy of LLVM
|
||||
- can take a surprising amount of time. Mesa needs to build ANGLE as
|
||||
part of CI, and the cost of downloading all the sources all of the time
|
||||
is not OK for the number of dependencies we don't need during the build.
|
||||
---
|
||||
DEPS | 33 +++++++++++++++++++++++----------
|
||||
1 file changed, 23 insertions(+), 10 deletions(-)
|
||||
|
||||
Submitted upstream at:
|
||||
https://chromium-review.googlesource.com/c/angle/angle/+/5937820
|
||||
|
||||
diff --git a/DEPS b/DEPS
|
||||
index 61263fb7af..0cff8c3126 100644
|
||||
--- a/DEPS
|
||||
+++ b/DEPS
|
||||
@@ -17,6 +17,17 @@ gclient_gn_args = [
|
||||
]
|
||||
|
||||
vars = {
|
||||
+ 'angle_enable_cl': True,
|
||||
+ 'angle_enable_cl_testing': False,
|
||||
+ 'angle_enable_vulkan': True,
|
||||
+ 'angle_enable_vulkan_validation_layers': True,
|
||||
+ 'angle_enable_wgpu': True,
|
||||
+ 'build_angle_deqp_tests': True,
|
||||
+ 'build_angle_perftests': True,
|
||||
+ 'build_with_swiftshader': True,
|
||||
+ 'use_custom_libcxx': True,
|
||||
+ 'export_libcxxapi_from_executables': True,
|
||||
+
|
||||
'android_git': 'https://android.googlesource.com',
|
||||
'chromium_git': 'https://chromium.googlesource.com',
|
||||
'chrome_internal_git': 'https://chrome-internal.googlesource.com',
|
||||
@@ -673,7 +684,7 @@ deps = {
|
||||
|
||||
'third_party/catapult': {
|
||||
'url': Var('chromium_git') + '/catapult.git' + '@' + Var('catapult_revision'),
|
||||
- 'condition': 'not build_with_chromium',
|
||||
+ 'condition': 'build_with_catapult and not build_with_chromium',
|
||||
},
|
||||
|
||||
# Cherry is a dEQP/VK-GL-CTS management GUI written in Go. We use it for viewing test results.
|
||||
@@ -689,7 +700,7 @@ deps = {
|
||||
|
||||
'third_party/clspv/src': {
|
||||
'url': Var('chromium_git') + '/external/github.com/google/clspv@a173c052455434a422bcfe5c12ffe44d574fd6e1',
|
||||
- 'condition': 'not build_with_chromium',
|
||||
+ 'condition': 'angle_enable_cl and angle_enable_vulkan and not build_with_chromium',
|
||||
},
|
||||
|
||||
'third_party/cpu_features/src': {
|
||||
@@ -700,7 +711,7 @@ deps = {
|
||||
|
||||
'third_party/dawn': {
|
||||
'url': Var('dawn_git') + '/dawn.git' + '@' + Var('dawn_revision'),
|
||||
- 'condition': 'not build_with_chromium'
|
||||
+ 'condition': 'angle_enable_wgpu and not build_with_chromium'
|
||||
},
|
||||
|
||||
'third_party/depot_tools': {
|
||||
@@ -745,6 +756,7 @@ deps = {
|
||||
# glmark2 is a GPL3-licensed OpenGL ES 2.0 benchmark. We use it for testing.
|
||||
'third_party/glmark2/src': {
|
||||
'url': Var('chromium_git') + '/external/github.com/glmark2/glmark2@ca8de51fedb70bace5351c6b002eb952c747e889',
|
||||
+ 'condition': 'build_angle_perftests',
|
||||
},
|
||||
|
||||
'third_party/googletest': {
|
||||
@@ -777,7 +789,7 @@ deps = {
|
||||
# libjpeg_turbo is used by glmark2.
|
||||
'third_party/libjpeg_turbo': {
|
||||
'url': Var('chromium_git') + '/chromium/deps/libjpeg_turbo.git@927aabfcd26897abb9776ecf2a6c38ea5bb52ab6',
|
||||
- 'condition': 'not build_with_chromium',
|
||||
+ 'condition': 'build_angle_perftests and not build_with_chromium',
|
||||
},
|
||||
|
||||
'third_party/libpng/src': {
|
||||
@@ -787,7 +799,7 @@ deps = {
|
||||
|
||||
'third_party/llvm/src': {
|
||||
'url': Var('chromium_git') + '/external/github.com/llvm/llvm-project@d222fa4521531cc4ac14b8e157d231c108c003be',
|
||||
- 'condition': 'not build_with_chromium',
|
||||
+ 'condition': '(build_with_swiftshader or (angle_enable_cl and angle_enable_vulkan)) and not build_with_chromium',
|
||||
},
|
||||
|
||||
'third_party/jdk': {
|
||||
@@ -824,12 +836,12 @@ deps = {
|
||||
|
||||
'third_party/libc++/src': {
|
||||
'url': Var('chromium_git') + '/external/github.com/llvm/llvm-project/libcxx.git@6a68fd412b9aecd515a20a7cf84d11b598bfaf96',
|
||||
- 'condition': 'not build_with_chromium',
|
||||
+ 'condition': 'use_custom_libcxx and not build_with_chromium',
|
||||
},
|
||||
|
||||
'third_party/libc++abi/src': {
|
||||
'url': Var('chromium_git') + '/external/github.com/llvm/llvm-project/libcxxabi.git@9a1d90c3b412d5ebeb97a6e33d98e1d0dd923221',
|
||||
- 'condition': 'not build_with_chromium',
|
||||
+ 'condition': 'export_libcxxapi_from_executables and not build_with_chromium',
|
||||
},
|
||||
|
||||
'third_party/libunwind/src': {
|
||||
@@ -872,7 +884,7 @@ deps = {
|
||||
|
||||
'third_party/OpenCL-CTS/src': {
|
||||
'url': Var('chromium_git') + '/external/github.com/KhronosGroup/OpenCL-CTS@e0a31a03fc8f816d59fd8b3051ac6a61d3fa50c6',
|
||||
- 'condition': 'not build_with_chromium',
|
||||
+ 'condition': 'angle_enable_cl_testing and not build_with_chromium',
|
||||
},
|
||||
|
||||
'third_party/OpenCL-Docs/src': {
|
||||
@@ -968,7 +980,7 @@ deps = {
|
||||
|
||||
'third_party/SwiftShader': {
|
||||
'url': Var('swiftshader_git') + '/SwiftShader@7a9a492a38b7c701f7c96a15a76046aed8f8c0c3',
|
||||
- 'condition': 'not build_with_chromium',
|
||||
+ 'condition': 'build_with_swiftshader and not build_with_chromium',
|
||||
},
|
||||
|
||||
'third_party/turbine/cipd': {
|
||||
@@ -984,6 +996,7 @@ deps = {
|
||||
|
||||
'third_party/VK-GL-CTS/src': {
|
||||
'url': Var('chromium_git') + '/external/github.com/KhronosGroup/VK-GL-CTS' + '@' + Var('vk_gl_cts_revision'),
|
||||
+ 'condition': 'build_angle_deqp_tests',
|
||||
},
|
||||
|
||||
'third_party/vulkan-deps': {
|
||||
@@ -1038,7 +1051,7 @@ deps = {
|
||||
|
||||
'third_party/vulkan-validation-layers/src': {
|
||||
'url': '{chromium_git}/external/github.com/KhronosGroup/Vulkan-ValidationLayers@b63e9bd51fbd7bf8fea161a4f7c06994abc24b75',
|
||||
- 'condition': 'not build_with_chromium',
|
||||
+ 'condition': 'angle_enable_vulkan_validation_layers and not build_with_chromium',
|
||||
},
|
||||
|
||||
'third_party/vulkan_memory_allocator': {
|
||||
--
|
||||
2.46.2
|
||||
|
@@ -0,0 +1,182 @@
|
||||
From 6250d347d15502e3b45769edba57ae244e20fb92 Mon Sep 17 00:00:00 2001
|
||||
From: Tomeu Vizoso <tomeu.vizoso@collabora.com>
|
||||
Date: Fri, 26 Aug 2022 18:24:27 +0200
|
||||
Subject: [PATCH 1/2] Allow running on Android from the command line
|
||||
|
||||
For testing the Android EGL platform without having to go via the
|
||||
Android activity manager, build deqp-egl.
|
||||
|
||||
Tests that render to native windows are unsupported, as command line
|
||||
programs cannot create windows on Android.
|
||||
|
||||
$ cmake -S . -B build/ -DDEQP_TARGET=android -DDEQP_TARGET_TOOLCHAIN=ndk-modern -DCMAKE_C_FLAGS=-Werror -DCMAKE_CXX_FLAGS=-Werror -DANDROID_NDK_PATH=./android-ndk-r21d -DANDROID_ABI=x86_64 -DDE_ANDROID_API=28 -DGLCTS_GTF_TARGET=gles32 -G Ninja
|
||||
$ ninja -C build modules/egl/deqp-egl
|
||||
|
||||
Signed-off-by: Tomeu Vizoso <tomeu.vizoso@collabora.com>
|
||||
---
|
||||
CMakeLists.txt | 38 ++-----------------
|
||||
.../android/tcuAndroidNativeActivity.cpp | 36 +++++++++---------
|
||||
.../platform/android/tcuAndroidPlatform.cpp | 12 +++++-
|
||||
3 files changed, 34 insertions(+), 52 deletions(-)
|
||||
|
||||
diff --git a/CMakeLists.txt b/CMakeLists.txt
|
||||
index 309bdda18..7c833751f 100644
|
||||
--- a/CMakeLists.txt
|
||||
+++ b/CMakeLists.txt
|
||||
@@ -275,7 +275,7 @@ include_directories(
|
||||
external/vulkancts/framework/vulkan
|
||||
)
|
||||
|
||||
-if (DE_OS_IS_ANDROID OR DE_OS_IS_IOS)
|
||||
+if (DE_OS_IS_IOS)
|
||||
# On Android deqp modules are compiled as libraries and linked into final .so
|
||||
set(DEQP_MODULE_LIBRARIES )
|
||||
set(DEQP_MODULE_ENTRY_POINTS )
|
||||
@@ -319,7 +319,7 @@ macro (add_deqp_module MODULE_NAME SRCS LIBS EXECLIBS ENTRY)
|
||||
set(DEQP_MODULE_LIBRARIES ${DEQP_MODULE_LIBRARIES} PARENT_SCOPE)
|
||||
set(DEQP_MODULE_ENTRY_POINTS ${DEQP_MODULE_ENTRY_POINTS} PARENT_SCOPE)
|
||||
|
||||
- if (NOT DE_OS_IS_ANDROID AND NOT DE_OS_IS_IOS)
|
||||
+ if (NOT DE_OS_IS_IOS)
|
||||
# Executable target
|
||||
add_executable(${MODULE_NAME} ${PROJECT_SOURCE_DIR}/framework/platform/tcuMain.cpp ${ENTRY})
|
||||
target_link_libraries(${MODULE_NAME} PUBLIC "${EXECLIBS}" "${MODULE_NAME}${MODULE_LIB_TARGET_POSTFIX}")
|
||||
@@ -341,7 +341,7 @@ macro (add_deqp_module_skip_android MODULE_NAME SRCS LIBS EXECLIBS ENTRY)
|
||||
add_library("${MODULE_NAME}${MODULE_LIB_TARGET_POSTFIX}" STATIC ${SRCS})
|
||||
target_link_libraries("${MODULE_NAME}${MODULE_LIB_TARGET_POSTFIX}" ${LIBS})
|
||||
|
||||
- if (NOT DE_OS_IS_ANDROID AND NOT DE_OS_IS_IOS)
|
||||
+ if (NOT DE_OS_IS_IOS)
|
||||
# Executable target
|
||||
add_executable(${MODULE_NAME} ${PROJECT_SOURCE_DIR}/framework/platform/tcuMain.cpp ${ENTRY})
|
||||
target_link_libraries(${MODULE_NAME} PUBLIC "${EXECLIBS}" "${MODULE_NAME}${MODULE_LIB_TARGET_POSTFIX}")
|
||||
@@ -393,37 +393,7 @@ add_subdirectory(external/vulkancts/vkscpc ${MAYBE_EXCLUDE_FROM_ALL})
|
||||
add_subdirectory(external/openglcts ${MAYBE_EXCLUDE_FROM_ALL})
|
||||
|
||||
# Single-binary targets
|
||||
-if (DE_OS_IS_ANDROID)
|
||||
- include_directories(executor)
|
||||
- include_directories(${PROJECT_BINARY_DIR}/external/vulkancts/framework/vulkan)
|
||||
-
|
||||
- set(DEQP_SRCS
|
||||
- framework/platform/android/tcuAndroidMain.cpp
|
||||
- framework/platform/android/tcuAndroidJNI.cpp
|
||||
- framework/platform/android/tcuAndroidPlatformCapabilityQueryJNI.cpp
|
||||
- framework/platform/android/tcuTestLogParserJNI.cpp
|
||||
- ${DEQP_MODULE_ENTRY_POINTS}
|
||||
- )
|
||||
-
|
||||
- set(DEQP_LIBS
|
||||
- tcutil-platform
|
||||
- xecore
|
||||
- ${DEQP_MODULE_LIBRARIES}
|
||||
- )
|
||||
-
|
||||
- add_library(deqp SHARED ${DEQP_SRCS})
|
||||
- target_link_libraries(deqp ${DEQP_LIBS})
|
||||
-
|
||||
- # Separate out the debug information because it's enormous
|
||||
- add_custom_command(TARGET deqp POST_BUILD
|
||||
- COMMAND ${CMAKE_STRIP} --only-keep-debug -o $<TARGET_FILE:deqp>.debug $<TARGET_FILE:deqp>
|
||||
- COMMAND ${CMAKE_STRIP} -g $<TARGET_FILE:deqp>)
|
||||
-
|
||||
- # Needed by OpenGL CTS that defines its own activity but depends on
|
||||
- # common Android support code.
|
||||
- target_include_directories(deqp PRIVATE framework/platform/android)
|
||||
-
|
||||
-elseif (DE_OS_IS_IOS)
|
||||
+if (DE_OS_IS_IOS)
|
||||
# Code sign identity
|
||||
set(DEQP_IOS_CODE_SIGN_IDENTITY "drawElements" CACHE STRING "Code sign identity for iOS build")
|
||||
|
||||
diff --git a/framework/platform/android/tcuAndroidNativeActivity.cpp b/framework/platform/android/tcuAndroidNativeActivity.cpp
|
||||
index 82a9ab699..4eab14a39 100644
|
||||
--- a/framework/platform/android/tcuAndroidNativeActivity.cpp
|
||||
+++ b/framework/platform/android/tcuAndroidNativeActivity.cpp
|
||||
@@ -115,23 +115,25 @@ namespace Android
|
||||
|
||||
NativeActivity::NativeActivity(ANativeActivity *activity) : m_activity(activity)
|
||||
{
|
||||
- activity->instance = (void *)this;
|
||||
- activity->callbacks->onStart = onStartCallback;
|
||||
- activity->callbacks->onResume = onResumeCallback;
|
||||
- activity->callbacks->onSaveInstanceState = onSaveInstanceStateCallback;
|
||||
- activity->callbacks->onPause = onPauseCallback;
|
||||
- activity->callbacks->onStop = onStopCallback;
|
||||
- activity->callbacks->onDestroy = onDestroyCallback;
|
||||
- activity->callbacks->onWindowFocusChanged = onWindowFocusChangedCallback;
|
||||
- activity->callbacks->onNativeWindowCreated = onNativeWindowCreatedCallback;
|
||||
- activity->callbacks->onNativeWindowResized = onNativeWindowResizedCallback;
|
||||
- activity->callbacks->onNativeWindowRedrawNeeded = onNativeWindowRedrawNeededCallback;
|
||||
- activity->callbacks->onNativeWindowDestroyed = onNativeWindowDestroyedCallback;
|
||||
- activity->callbacks->onInputQueueCreated = onInputQueueCreatedCallback;
|
||||
- activity->callbacks->onInputQueueDestroyed = onInputQueueDestroyedCallback;
|
||||
- activity->callbacks->onContentRectChanged = onContentRectChangedCallback;
|
||||
- activity->callbacks->onConfigurationChanged = onConfigurationChangedCallback;
|
||||
- activity->callbacks->onLowMemory = onLowMemoryCallback;
|
||||
+ if (activity) {
|
||||
+ activity->instance = (void *)this;
|
||||
+ activity->callbacks->onStart = onStartCallback;
|
||||
+ activity->callbacks->onResume = onResumeCallback;
|
||||
+ activity->callbacks->onSaveInstanceState = onSaveInstanceStateCallback;
|
||||
+ activity->callbacks->onPause = onPauseCallback;
|
||||
+ activity->callbacks->onStop = onStopCallback;
|
||||
+ activity->callbacks->onDestroy = onDestroyCallback;
|
||||
+ activity->callbacks->onWindowFocusChanged = onWindowFocusChangedCallback;
|
||||
+ activity->callbacks->onNativeWindowCreated = onNativeWindowCreatedCallback;
|
||||
+ activity->callbacks->onNativeWindowResized = onNativeWindowResizedCallback;
|
||||
+ activity->callbacks->onNativeWindowRedrawNeeded = onNativeWindowRedrawNeededCallback;
|
||||
+ activity->callbacks->onNativeWindowDestroyed = onNativeWindowDestroyedCallback;
|
||||
+ activity->callbacks->onInputQueueCreated = onInputQueueCreatedCallback;
|
||||
+ activity->callbacks->onInputQueueDestroyed = onInputQueueDestroyedCallback;
|
||||
+ activity->callbacks->onContentRectChanged = onContentRectChangedCallback;
|
||||
+ activity->callbacks->onConfigurationChanged = onConfigurationChangedCallback;
|
||||
+ activity->callbacks->onLowMemory = onLowMemoryCallback;
|
||||
+ }
|
||||
}
|
||||
|
||||
NativeActivity::~NativeActivity(void)
|
||||
diff --git a/framework/platform/android/tcuAndroidPlatform.cpp b/framework/platform/android/tcuAndroidPlatform.cpp
|
||||
index 0472fa615..ff8929409 100644
|
||||
--- a/framework/platform/android/tcuAndroidPlatform.cpp
|
||||
+++ b/framework/platform/android/tcuAndroidPlatform.cpp
|
||||
@@ -22,6 +22,7 @@
|
||||
*//*--------------------------------------------------------------------*/
|
||||
|
||||
#include "tcuAndroidPlatform.hpp"
|
||||
+#include "tcuAndroidNativeActivity.hpp"
|
||||
#include "tcuAndroidUtil.hpp"
|
||||
#include "gluRenderContext.hpp"
|
||||
#include "egluNativeDisplay.hpp"
|
||||
@@ -198,7 +199,7 @@ eglu::NativeWindow *NativeWindowFactory::createWindow(const eglu::WindowParams &
|
||||
Window *window = m_windowRegistry.tryAcquireWindow();
|
||||
|
||||
if (!window)
|
||||
- throw ResourceError("Native window is not available", DE_NULL, __FILE__, __LINE__);
|
||||
+ throw NotSupportedError("Native window is not available", DE_NULL, __FILE__, __LINE__);
|
||||
|
||||
return new NativeWindow(window, params.width, params.height, format);
|
||||
}
|
||||
@@ -319,6 +320,9 @@ static size_t getTotalSystemMemory(ANativeActivity *activity)
|
||||
|
||||
try
|
||||
{
|
||||
+ if (!activity)
|
||||
+ throw tcu::InternalError("No activity (running from command line?");
|
||||
+
|
||||
const size_t totalMemory = getTotalAndroidSystemMemory(activity);
|
||||
print("Device has %.2f MiB of system memory\n", static_cast<double>(totalMemory) / static_cast<double>(MiB));
|
||||
return totalMemory;
|
||||
@@ -416,3 +420,9 @@ bool Platform::hasDisplay(vk::wsi::Type wsiType) const
|
||||
|
||||
} // namespace Android
|
||||
} // namespace tcu
|
||||
+
|
||||
+tcu::Platform* createPlatform (void)
|
||||
+{
|
||||
+ tcu::Android::NativeActivity activity(NULL);
|
||||
+ return new tcu::Android::Platform(activity);
|
||||
+}
|
||||
--
|
||||
2.45.2
|
||||
|
@@ -0,0 +1,26 @@
|
||||
From a602822c53e22e985f942f843ccadbfb64613212 Mon Sep 17 00:00:00 2001
|
||||
From: Helen Koike <helen.koike@collabora.com>
|
||||
Date: Tue, 27 Sep 2022 12:35:22 -0300
|
||||
Subject: [PATCH 2/2] Android prints to stdout instead of logcat
|
||||
|
||||
Signed-off-by: Helen Koike <helen.koike@collabora.com>
|
||||
---
|
||||
framework/qphelper/qpDebugOut.c | 2 +-
|
||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||
|
||||
diff --git a/framework/qphelper/qpDebugOut.c b/framework/qphelper/qpDebugOut.c
|
||||
index 6579e9f48..c200c6f6b 100644
|
||||
--- a/framework/qphelper/qpDebugOut.c
|
||||
+++ b/framework/qphelper/qpDebugOut.c
|
||||
@@ -98,7 +98,7 @@ void qpDiev (const char* format, va_list args)
|
||||
}
|
||||
|
||||
/* print() implementation. */
|
||||
-#if (DE_OS == DE_OS_ANDROID)
|
||||
+#if (0)
|
||||
|
||||
#include <android/log.h>
|
||||
|
||||
--
|
||||
2.42.0
|
||||
|
@@ -1,4 +1,4 @@
|
||||
From bcb1110cc00398dfb501aac83eddbd66d8fae425 Mon Sep 17 00:00:00 2001
|
||||
From 4f53bcbb597a91bab715bc8d555cfd6c81263ac1 Mon Sep 17 00:00:00 2001
|
||||
From: Daniel Stone <daniels@collabora.com>
|
||||
Date: Wed, 29 Jan 2025 12:50:33 +0000
|
||||
Subject: [PATCH] Build: Don't build Vulkan utilities for GL builds
|
||||
@@ -7,11 +7,10 @@ Change-Id: Ie412f914bb6264ffbd502deea57d80cc11a9948e
|
||||
Signed-off-by: Daniel Stone <daniels@collabora.com>
|
||||
---
|
||||
framework/platform/CMakeLists.txt | 9 --
|
||||
.../platform/android/tcuAndroidPlatform.cpp | 126 +-----------------
|
||||
.../platform/android/tcuAndroidPlatform.hpp | 14 +-
|
||||
.../platform/android/tcuAndroidPlatform.cpp | 118 ------------------
|
||||
framework/platform/lnx/tcuLnxPlatform.cpp | 9 +-
|
||||
.../surfaceless/tcuSurfacelessPlatform.cpp | 54 --------
|
||||
5 files changed, 3 insertions(+), 209 deletions(-)
|
||||
4 files changed, 1 insertion(+), 189 deletions(-)
|
||||
|
||||
diff --git a/framework/platform/CMakeLists.txt b/framework/platform/CMakeLists.txt
|
||||
index ec1deb5c2..49fe412a7 100644
|
||||
@@ -55,7 +54,7 @@ index ec1deb5c2..49fe412a7 100644
|
||||
|
||||
# Always link to glutil as some platforms such as Win32 always support GL
|
||||
diff --git a/framework/platform/android/tcuAndroidPlatform.cpp b/framework/platform/android/tcuAndroidPlatform.cpp
|
||||
index 0472fa615..40f523ee2 100644
|
||||
index 0472fa615..87033ad56 100644
|
||||
--- a/framework/platform/android/tcuAndroidPlatform.cpp
|
||||
+++ b/framework/platform/android/tcuAndroidPlatform.cpp
|
||||
@@ -31,7 +31,6 @@
|
||||
@@ -169,17 +168,7 @@ index 0472fa615..40f523ee2 100644
|
||||
static size_t getTotalSystemMemory(ANativeActivity *activity)
|
||||
{
|
||||
const size_t MiB = (size_t)(1 << 20);
|
||||
@@ -338,8 +241,7 @@ static size_t getTotalSystemMemory(ANativeActivity *activity)
|
||||
// Platform
|
||||
|
||||
Platform::Platform(NativeActivity &activity)
|
||||
- : m_activity(activity)
|
||||
- , m_totalSystemMemory(getTotalSystemMemory(activity.getNativeActivity()))
|
||||
+ : m_totalSystemMemory(getTotalSystemMemory(activity.getNativeActivity()))
|
||||
{
|
||||
m_nativeDisplayFactoryRegistry.registerFactory(new NativeDisplayFactory(m_windowRegistry));
|
||||
m_contextFactoryRegistry.registerFactory(new eglu::GLContextFactory(m_nativeDisplayFactoryRegistry));
|
||||
@@ -355,16 +257,6 @@ bool Platform::processEvents(void)
|
||||
@@ -355,11 +258,6 @@ bool Platform::processEvents(void)
|
||||
return true;
|
||||
}
|
||||
|
||||
@@ -188,15 +177,10 @@ index 0472fa615..40f523ee2 100644
|
||||
- return new VulkanLibrary(libraryPath);
|
||||
-}
|
||||
-
|
||||
-void Platform::describePlatform(std::ostream &dst) const
|
||||
-{
|
||||
- tcu::Android::describePlatform(m_activity.getNativeActivity(), dst);
|
||||
-}
|
||||
-
|
||||
void Platform::getMemoryLimits(tcu::PlatformMemoryLimits &limits) const
|
||||
void Platform::describePlatform(std::ostream &dst) const
|
||||
{
|
||||
// Worst-case estimates
|
||||
@@ -398,21 +290,5 @@ void Platform::getMemoryLimits(tcu::PlatformMemoryLimits &limits) const
|
||||
tcu::Android::describePlatform(m_activity.getNativeActivity(), dst);
|
||||
@@ -398,21 +296,5 @@ void Platform::getMemoryLimits(tcu::PlatformMemoryLimits &limits) const
|
||||
limits.devicePageTableHierarchyLevels = 3;
|
||||
}
|
||||
|
||||
@@ -218,53 +202,6 @@ index 0472fa615..40f523ee2 100644
|
||||
-
|
||||
} // namespace Android
|
||||
} // namespace tcu
|
||||
diff --git a/framework/platform/android/tcuAndroidPlatform.hpp b/framework/platform/android/tcuAndroidPlatform.hpp
|
||||
index 32cc9068c..3c3f02d98 100644
|
||||
--- a/framework/platform/android/tcuAndroidPlatform.hpp
|
||||
+++ b/framework/platform/android/tcuAndroidPlatform.hpp
|
||||
@@ -27,7 +27,6 @@
|
||||
#include "tcuPlatform.hpp"
|
||||
#include "egluPlatform.hpp"
|
||||
#include "gluPlatform.hpp"
|
||||
-#include "vkPlatform.hpp"
|
||||
#include "tcuAndroidWindow.hpp"
|
||||
#include "tcuAndroidNativeActivity.hpp"
|
||||
|
||||
@@ -36,7 +35,7 @@ namespace tcu
|
||||
namespace Android
|
||||
{
|
||||
|
||||
-class Platform : public tcu::Platform, private eglu::Platform, private glu::Platform, private vk::Platform
|
||||
+class Platform : public tcu::Platform, private eglu::Platform, private glu::Platform
|
||||
{
|
||||
public:
|
||||
Platform(NativeActivity &activity);
|
||||
@@ -52,10 +51,6 @@ public:
|
||||
{
|
||||
return static_cast<const eglu::Platform &>(*this);
|
||||
}
|
||||
- virtual const vk::Platform &getVulkanPlatform(void) const
|
||||
- {
|
||||
- return static_cast<const vk::Platform &>(*this);
|
||||
- }
|
||||
virtual void getMemoryLimits(tcu::PlatformMemoryLimits &limits) const;
|
||||
|
||||
WindowRegistry &getWindowRegistry(void)
|
||||
@@ -63,14 +58,7 @@ public:
|
||||
return m_windowRegistry;
|
||||
}
|
||||
|
||||
- // Vulkan Platform API
|
||||
- vk::Library *createLibrary(const char *libraryPath) const;
|
||||
- void describePlatform(std::ostream &dst) const;
|
||||
- vk::wsi::Display *createWsiDisplay(vk::wsi::Type wsiType) const;
|
||||
- bool hasDisplay(vk::wsi::Type wsiType) const;
|
||||
-
|
||||
private:
|
||||
- NativeActivity &m_activity;
|
||||
WindowRegistry m_windowRegistry;
|
||||
const size_t m_totalSystemMemory;
|
||||
};
|
||||
diff --git a/framework/platform/lnx/tcuLnxPlatform.cpp b/framework/platform/lnx/tcuLnxPlatform.cpp
|
||||
index 8c0a3ef06..6b1a4985a 100644
|
||||
--- a/framework/platform/lnx/tcuLnxPlatform.cpp
|
||||
@@ -387,5 +324,5 @@ index 1cea9dd97..3d5bd8b62 100644
|
||||
|
||||
class ContextFactory : public glu::ContextFactory
|
||||
--
|
||||
2.47.2
|
||||
2.48.1
|
||||
|
||||
|
@@ -2,9 +2,6 @@
|
||||
# Strip the image to a small minimal system.
|
||||
# When changing this file, you need to bump the following
|
||||
# .gitlab-ci/image-tags.yml tags:
|
||||
# DEBIAN_TEST_ANDROID_TAG
|
||||
# DEBIAN_TEST_GL_TAG
|
||||
# DEBIAN_TEST_VK_TAG
|
||||
# KERNEL_ROOTFS_TAG
|
||||
set -ex
|
||||
|
||||
|
@@ -76,7 +76,7 @@ set_vsock_context || { echo "Could not generate crosvm vsock CID" >&2; exit 1; }
|
||||
# Securely pass the current variables to the crosvm environment
|
||||
echo "Variables passed through:"
|
||||
SCRIPTS_DIR=$(readlink -en "${0%/*}")
|
||||
${SCRIPTS_DIR}/common/export-gitlab-job-env-for-dut.sh | tee ${VM_TEMP_DIR}/crosvm-env.sh
|
||||
${SCRIPTS_DIR}/common/generate-env.sh | tee ${VM_TEMP_DIR}/crosvm-env.sh
|
||||
cp ${SCRIPTS_DIR}/setup-test-env.sh ${VM_TEMP_DIR}/setup-test-env.sh
|
||||
|
||||
# Set the crosvm-script as the arguments of the current script
|
||||
@@ -124,7 +124,7 @@ crosvm --no-syslog run \
|
||||
--net "host-ip=192.168.30.1,netmask=255.255.255.0,mac=AA:BB:CC:00:00:12" \
|
||||
-s $VM_SOCKET \
|
||||
--cid ${VSOCK_CID} -p "${CROSVM_KERN_ARGS}" \
|
||||
/kernel/${KERNEL_IMAGE_NAME:-bzImage} > ${VM_TEMP_DIR}/crosvm 2>&1
|
||||
/lava-files/${KERNEL_IMAGE_NAME:-bzImage} > ${VM_TEMP_DIR}/crosvm 2>&1
|
||||
|
||||
CROSVM_RET=$?
|
||||
|
||||
|
@@ -7,14 +7,10 @@
|
||||
section_start cuttlefish_setup "cuttlefish: setup"
|
||||
set -xe
|
||||
|
||||
# Structured tagging check for angle
|
||||
if [ -n "$ANGLE_TAG" ]; then
|
||||
# Bail out if the ANGLE_TAG differs from what is offered in the system
|
||||
ci_tag_test_time_check "ANGLE_TAG"
|
||||
fi
|
||||
|
||||
export HOME=/cuttlefish
|
||||
export PATH=/cuttlefish/bin:$PATH
|
||||
export LD_LIBRARY_PATH=/cuttlefish/lib64:${CI_PROJECT_DIR}/install/lib:$LD_LIBRARY_PATH
|
||||
export EGL_PLATFORM=surfaceless
|
||||
|
||||
# Pick up a vulkan driver
|
||||
ARCH=$(uname -m)
|
||||
@@ -29,15 +25,16 @@ pushd /cuttlefish
|
||||
# Add a function to perform some tasks when exiting the script
|
||||
function my_atexit()
|
||||
{
|
||||
# shellcheck disable=SC2317
|
||||
HOME=/cuttlefish stop_cvd -wait_for_launcher=40
|
||||
|
||||
# shellcheck disable=SC2317
|
||||
cp /cuttlefish/cuttlefish/instances/cvd-1/logs/logcat $RESULTS_DIR || true
|
||||
# shellcheck disable=SC2317
|
||||
cp /cuttlefish/cuttlefish/instances/cvd-1/kernel.log $RESULTS_DIR || true
|
||||
|
||||
# shellcheck disable=SC2317
|
||||
cp /cuttlefish/cuttlefish/instances/cvd-1/logs/launcher.log $RESULTS_DIR || true
|
||||
|
||||
# shellcheck disable=SC2317
|
||||
/cuttlefish/bin/stop_cvd -wait_for_launcher=10
|
||||
}
|
||||
|
||||
# stop cuttlefish if the script ends prematurely or is interrupted
|
||||
@@ -46,33 +43,193 @@ trap 'exit 2' HUP INT PIPE TERM
|
||||
|
||||
ulimit -S -n 32768
|
||||
|
||||
VSOCK_BASE=10000 # greater than all the default vsock ports
|
||||
VSOCK_CID=$((VSOCK_BASE + (CI_JOB_ID & 0xfff)))
|
||||
# Clean up state of previous run
|
||||
rm -rf /cuttlefish/cuttlefish
|
||||
rm -rf /cuttlefish/.cache
|
||||
rm -rf /cuttlefish/.cuttlefish_config.json
|
||||
|
||||
HOME=/cuttlefish launch_cvd \
|
||||
launch_cvd \
|
||||
-daemon \
|
||||
-verbosity=VERBOSE \
|
||||
-file_verbosity=VERBOSE \
|
||||
-use_overlay=false \
|
||||
-vsock_guest_cid=$VSOCK_CID \
|
||||
-enable_audio=false \
|
||||
-enable_bootanimation=false \
|
||||
-enable_minimal_mode=true \
|
||||
-enable_modem_simulator=false \
|
||||
-guest_enforce_security=false \
|
||||
-report_anonymous_usage_stats=no \
|
||||
-gpu_mode="$ANDROID_GPU_MODE" \
|
||||
-cpus=${FDO_CI_CONCURRENT:-4} \
|
||||
-memory_mb 8192 \
|
||||
-kernel_path="/cuttlefish/bzImage" \
|
||||
-initramfs_path="/cuttlefish/initramfs.img"
|
||||
-kernel_path="$HOME/bzImage" \
|
||||
-initramfs_path="$HOME/initramfs.img"
|
||||
|
||||
sleep 1
|
||||
|
||||
popd
|
||||
|
||||
# shellcheck disable=SC2034 # used externally
|
||||
ADB=adb
|
||||
|
||||
# The script exits with the appropriate exit code
|
||||
. "$(dirname "$0")/android-runner.sh"
|
||||
$ADB wait-for-device root
|
||||
sleep 1
|
||||
$ADB shell echo Hi from Android
|
||||
# shellcheck disable=SC2035
|
||||
$ADB logcat dEQP:D *:S &
|
||||
|
||||
# overlay vendor
|
||||
|
||||
OV_TMPFS="/data/overlay-remount"
|
||||
$ADB shell mkdir -p "$OV_TMPFS"
|
||||
$ADB shell mount -t tmpfs none "$OV_TMPFS"
|
||||
|
||||
$ADB shell mkdir -p "$OV_TMPFS/vendor-upper"
|
||||
$ADB shell mkdir -p "$OV_TMPFS/vendor-work"
|
||||
|
||||
opts="lowerdir=/vendor,upperdir=$OV_TMPFS/vendor-upper,workdir=$OV_TMPFS/vendor-work"
|
||||
$ADB shell mount -t overlay -o "$opts" none /vendor
|
||||
|
||||
$ADB shell setenforce 0
|
||||
|
||||
# deqp
|
||||
|
||||
$ADB shell mkdir -p /data/deqp
|
||||
$ADB push /deqp-gles/modules/egl/deqp-egl-android /data/deqp
|
||||
$ADB push /deqp-gles/assets/gl_cts/data/mustpass/egl/aosp_mustpass/3.2.6.x/egl-main.txt /data/deqp
|
||||
$ADB push /deqp-vk/external/vulkancts/modules/vulkan/* /data/deqp
|
||||
$ADB push /deqp-vk/mustpass/vk-main.txt.zst /data/deqp
|
||||
$ADB push /deqp-tools/* /data/deqp
|
||||
$ADB push /deqp-runner/deqp-runner /data/deqp
|
||||
|
||||
# download Android Mesa from S3
|
||||
MESA_ANDROID_ARTIFACT_URL=https://${PIPELINE_ARTIFACTS_BASE}/${S3_ANDROID_ARTIFACT_NAME}.tar.zst
|
||||
curl -L --retry 4 -f --retry-all-errors --retry-delay 60 -o ${S3_ANDROID_ARTIFACT_NAME}.tar.zst ${MESA_ANDROID_ARTIFACT_URL}
|
||||
mkdir /mesa-android
|
||||
tar -C /mesa-android -xvf ${S3_ANDROID_ARTIFACT_NAME}.tar.zst
|
||||
rm "${S3_ANDROID_ARTIFACT_NAME}.tar.zst" &
|
||||
|
||||
INSTALL="/mesa-android/install"
|
||||
|
||||
$ADB push "$INSTALL/all-skips.txt" /data/deqp
|
||||
$ADB push "$INSTALL/angle-skips.txt" /data/deqp
|
||||
if [ -e "$INSTALL/$GPU_VERSION-flakes.txt" ]; then
|
||||
$ADB push "$INSTALL/$GPU_VERSION-flakes.txt" /data/deqp
|
||||
fi
|
||||
if [ -e "$INSTALL/$GPU_VERSION-fails.txt" ]; then
|
||||
$ADB push "$INSTALL/$GPU_VERSION-fails.txt" /data/deqp
|
||||
fi
|
||||
if [ -e "$INSTALL/$GPU_VERSION-skips.txt" ]; then
|
||||
$ADB push "$INSTALL/$GPU_VERSION-skips.txt" /data/deqp
|
||||
fi
|
||||
$ADB push "$INSTALL/deqp-$DEQP_SUITE.toml" /data/deqp
|
||||
|
||||
# remove 32 bits libs from /vendor/lib
|
||||
|
||||
$ADB shell rm -f /vendor/lib/libglapi.so
|
||||
$ADB shell rm -f /vendor/lib/egl/libGLES_mesa.so
|
||||
|
||||
$ADB shell rm -f /vendor/lib/egl/libEGL_angle.so
|
||||
$ADB shell rm -f /vendor/lib/egl/libEGL_emulation.so
|
||||
$ADB shell rm -f /vendor/lib/egl/libGLESv1_CM_angle.so
|
||||
$ADB shell rm -f /vendor/lib/egl/libGLESv1_CM_emulation.so
|
||||
$ADB shell rm -f /vendor/lib/egl/libGLESv2_angle.so
|
||||
$ADB shell rm -f /vendor/lib/egl/libGLESv2_emulation.so
|
||||
|
||||
$ADB shell rm -f /vendor/lib/hw/vulkan.*
|
||||
|
||||
# replace on /vendor/lib64
|
||||
|
||||
$ADB push "$INSTALL/lib/libgallium_dri.so" /vendor/lib64/libgallium_dri.so
|
||||
$ADB push "$INSTALL/lib/libEGL.so" /vendor/lib64/egl/libEGL_mesa.so
|
||||
$ADB push "$INSTALL/lib/libGLESv1_CM.so" /vendor/lib64/egl/libGLESv1_CM_mesa.so
|
||||
$ADB push "$INSTALL/lib/libGLESv2.so" /vendor/lib64/egl/libGLESv2_mesa.so
|
||||
|
||||
$ADB push "$INSTALL/lib/libvulkan_lvp.so" /vendor/lib64/hw/vulkan.lvp.so
|
||||
$ADB push "$INSTALL/lib/libvulkan_virtio.so" /vendor/lib64/hw/vulkan.virtio.so
|
||||
|
||||
$ADB shell rm -f /vendor/lib64/egl/libEGL_emulation.so
|
||||
$ADB shell rm -f /vendor/lib64/egl/libGLESv1_CM_emulation.so
|
||||
$ADB shell rm -f /vendor/lib64/egl/libGLESv2_emulation.so
|
||||
|
||||
# Check what GLES implementation Surfaceflinger is using before copying the new mesa libraries
|
||||
while [ "$($ADB shell dumpsys SurfaceFlinger | grep GLES:)" = "" ] ; do sleep 1; done
|
||||
$ADB shell dumpsys SurfaceFlinger | grep GLES
|
||||
|
||||
# restart Android shell, so that surfaceflinger uses the new libraries
|
||||
$ADB shell stop
|
||||
$ADB shell start
|
||||
|
||||
# Check what GLES implementation Surfaceflinger is using after copying the new mesa libraries
|
||||
while [ "$($ADB shell dumpsys SurfaceFlinger | grep GLES:)" = "" ] ; do sleep 1; done
|
||||
MESA_RUNTIME_VERSION="$($ADB shell dumpsys SurfaceFlinger | grep GLES:)"
|
||||
MESA_BUILD_VERSION=$(cat "$INSTALL/VERSION")
|
||||
if ! printf "%s" "$MESA_RUNTIME_VERSION" | grep "${MESA_BUILD_VERSION}$"; then
|
||||
echo "Fatal: Android is loading a wrong version of the Mesa3D libs: ${MESA_RUNTIME_VERSION}" 1>&2
|
||||
exit 1
|
||||
fi
|
||||
|
||||
BASELINE=""
|
||||
if [ -e "$INSTALL/$GPU_VERSION-fails.txt" ]; then
|
||||
BASELINE="--baseline /data/deqp/$GPU_VERSION-fails.txt"
|
||||
fi
|
||||
|
||||
# Default to an empty known flakes file if it doesn't exist.
|
||||
$ADB shell "touch /data/deqp/$GPU_VERSION-flakes.txt"
|
||||
|
||||
if [ -e "$INSTALL/$GPU_VERSION-skips.txt" ]; then
|
||||
DEQP_SKIPS="$DEQP_SKIPS /data/deqp/$GPU_VERSION-skips.txt"
|
||||
fi
|
||||
|
||||
if [ -n "$USE_ANGLE" ]; then
|
||||
DEQP_SKIPS="$DEQP_SKIPS /data/deqp/angle-skips.txt"
|
||||
fi
|
||||
|
||||
AOSP_RESULTS=/data/deqp/results
|
||||
uncollapsed_section_switch cuttlefish_test "cuttlefish: testing"
|
||||
|
||||
set +e
|
||||
$ADB shell "mkdir ${AOSP_RESULTS}; cd ${AOSP_RESULTS}/..; \
|
||||
XDG_CACHE_HOME=/data/local/tmp \
|
||||
./deqp-runner \
|
||||
suite \
|
||||
--suite /data/deqp/deqp-$DEQP_SUITE.toml \
|
||||
--output $AOSP_RESULTS \
|
||||
--skips /data/deqp/all-skips.txt $DEQP_SKIPS \
|
||||
--flakes /data/deqp/$GPU_VERSION-flakes.txt \
|
||||
--testlog-to-xml /data/deqp/testlog-to-xml \
|
||||
--shader-cache-dir /data/local/tmp \
|
||||
--fraction-start ${CI_NODE_INDEX:-1} \
|
||||
--fraction $(( CI_NODE_TOTAL * ${DEQP_FRACTION:-1})) \
|
||||
--jobs ${FDO_CI_CONCURRENT:-4} \
|
||||
$BASELINE \
|
||||
${DEQP_RUNNER_MAX_FAILS:+--max-fails \"$DEQP_RUNNER_MAX_FAILS\"} \
|
||||
"
|
||||
|
||||
EXIT_CODE=$?
|
||||
set -e
|
||||
section_switch cuttlefish_results "cuttlefish: gathering the results"
|
||||
|
||||
$ADB pull "$AOSP_RESULTS/." "$RESULTS_DIR"
|
||||
|
||||
# Remove all but the first 50 individual XML files uploaded as artifacts, to
|
||||
# save fd.o space when you break everything.
|
||||
find $RESULTS_DIR -name \*.xml | \
|
||||
sort -n |
|
||||
sed -n '1,+49!p' | \
|
||||
xargs rm -f
|
||||
|
||||
# If any QPA XMLs are there, then include the XSL/CSS in our artifacts.
|
||||
find $RESULTS_DIR -name \*.xml \
|
||||
-exec cp /deqp-tools/testlog.css /deqp-tools/testlog.xsl "$RESULTS_DIR/" ";" \
|
||||
-quit
|
||||
|
||||
$ADB shell "cd ${AOSP_RESULTS}/..; \
|
||||
./deqp-runner junit \
|
||||
--testsuite dEQP \
|
||||
--results $AOSP_RESULTS/failures.csv \
|
||||
--output $AOSP_RESULTS/junit.xml \
|
||||
--limit 50 \
|
||||
--template \"See $ARTIFACTS_BASE_URL/results/{{testcase}}.xml\""
|
||||
|
||||
$ADB pull "$AOSP_RESULTS/junit.xml" "$RESULTS_DIR"
|
||||
|
||||
section_end cuttlefish_results
|
||||
exit $EXIT_CODE
|
||||
|
@@ -25,9 +25,7 @@ ARCH=$(uname -m)
|
||||
export VK_DRIVER_FILES="$PWD"/install/share/vulkan/icd.d/"$VK_DRIVER"_icd."$ARCH".json
|
||||
export OCL_ICD_VENDORS="$PWD"/install/etc/OpenCL/vendors/
|
||||
|
||||
if [ -n "$ANGLE_TAG" ]; then
|
||||
# Are we using the right angle version?
|
||||
ci_tag_test_time_check "ANGLE_TAG"
|
||||
if [ -n "$USE_ANGLE" ]; then
|
||||
export LD_LIBRARY_PATH=/angle:$LD_LIBRARY_PATH
|
||||
fi
|
||||
|
||||
@@ -69,7 +67,15 @@ if [ -e "$INSTALL/$GPU_VERSION-slow-skips.txt" ] && [[ $CI_JOB_NAME != *full* ]]
|
||||
DEQP_SKIPS="$DEQP_SKIPS $INSTALL/$GPU_VERSION-slow-skips.txt"
|
||||
fi
|
||||
|
||||
if [ -n "$ANGLE_TAG" ]; then
|
||||
if [ "$PIGLIT_PLATFORM" != "gbm" ] ; then
|
||||
DEQP_SKIPS="$DEQP_SKIPS $INSTALL/x11-skips.txt"
|
||||
fi
|
||||
|
||||
if [ "$PIGLIT_PLATFORM" = "gbm" ]; then
|
||||
DEQP_SKIPS="$DEQP_SKIPS $INSTALL/gbm-skips.txt"
|
||||
fi
|
||||
|
||||
if [ -n "$USE_ANGLE" ]; then
|
||||
DEQP_SKIPS="$DEQP_SKIPS $INSTALL/angle-skips.txt"
|
||||
fi
|
||||
|
||||
|
@@ -28,22 +28,6 @@
|
||||
# that are used by a driver. See the various `.$DRIVER-rules` in the
|
||||
# corresponding `src/**/ci/gitlab-ci.yml`.
|
||||
|
||||
# In case of issues with a farm, here are the people to contact:
|
||||
# farm name | ci infrastructure used | admin(s)
|
||||
# -----------------|----------------------------------|---------
|
||||
# anholt | baremetal/poe-powered | @anholt
|
||||
# austriancoder | ci-tron | @austriancoder
|
||||
# collabora | lava | @daniels, @sergi
|
||||
# google-freedreno | baremetal/{fastboot,cros-servo} | @robclark
|
||||
# igalia | baremetal/poe-powered | @jasuarez, @chema
|
||||
# lima | lava | @enunes
|
||||
# microsoft | custom | @jenatali, @alatiera
|
||||
# ondracka | ci-tron | @ondracka
|
||||
# pengutronix | lava | @hnez, @lynxeye
|
||||
# valve-kws | ci-tron | @mupuf, @eric
|
||||
# valve-mupuf | ci-tron | @mupuf, @eric
|
||||
# vmware | lava | @blu
|
||||
|
||||
.microsoft-farm-rules:
|
||||
rules:
|
||||
- exists: [ .ci-farms-disabled/microsoft ] # 1. Is disabled, never run
|
||||
@@ -294,27 +278,6 @@
|
||||
- !reference [.ondracka-farm-rules, rules]
|
||||
|
||||
|
||||
.pengutronix-farm-rules:
|
||||
rules:
|
||||
- exists: [ .ci-farms-disabled/pengutronix ]
|
||||
when: never
|
||||
- if: '$CI_PIPELINE_SOURCE != "schedule"'
|
||||
changes: [ .ci-farms-disabled/pengutronix ]
|
||||
when: on_success
|
||||
- if: '$CI_PIPELINE_SOURCE != "schedule"'
|
||||
changes: [ .ci-farms-disabled/* ]
|
||||
when: never
|
||||
|
||||
.pengutronix-farm-manual-rules:
|
||||
rules:
|
||||
- exists: [ .ci-farms-disabled/pengutronix ]
|
||||
when: never
|
||||
- if: '$CI_PIPELINE_SOURCE != "schedule"'
|
||||
changes: [ .ci-farms-disabled/pengutronix ]
|
||||
when: never
|
||||
- !reference [.pengutronix-farm-rules, rules]
|
||||
|
||||
|
||||
# Skip container & build jobs when disabling any farm, and run them if any
|
||||
# farm gets re-enabled.
|
||||
# Only apply these rules in MR context, because otherwise we get a false
|
||||
@@ -371,10 +334,6 @@
|
||||
changes: [ .ci-farms-disabled/vmware ]
|
||||
exists: [ .ci-farms-disabled/vmware ]
|
||||
when: never
|
||||
- if: '$CI_PIPELINE_SOURCE == "merge_request_event"'
|
||||
changes: [ .ci-farms-disabled/pengutronix ]
|
||||
exists: [ .ci-farms-disabled/pengutronix ]
|
||||
when: never
|
||||
# Any other change to ci-farms/* means some farm is getting re-enabled.
|
||||
# Run jobs in Marge pipelines (and let it fallback to manual otherwise)
|
||||
- if: '$CI_PIPELINE_SOURCE == "merge_request_event" && $GITLAB_USER_LOGIN == "marge-bot"'
|
||||
|
@@ -1,10 +0,0 @@
|
||||
{
|
||||
"src": "https://git.kernel.org/pub/scm/linux/kernel/git/firmware/linux-firmware.git/plain/i915/",
|
||||
"git_hash": "36d0c64694dcee6cf49654f430ab70c22dd647d8",
|
||||
"files": [
|
||||
"adlp_dmc.bin",
|
||||
"adlp_guc_70.bin",
|
||||
"tgl_guc_70.bin"
|
||||
],
|
||||
"dst": "/lib/firmware/i915/"
|
||||
}
|
@@ -16,7 +16,7 @@ fi
|
||||
# Check which fluster vectors to get
|
||||
FLUSTER_VECTORS_HOST_PATH="${STORAGE_MAINLINE_HOST_PATH}/fluster/${FLUSTER_VECTORS_VERSION}"
|
||||
if [ "$CI_PROJECT_PATH" != "$FDO_UPSTREAM_REPO" ]; then
|
||||
if ! curl -s -L --retry 4 -f --retry-delay 60 "${FDO_HTTP_CACHE_URI:-}https://${FLUSTER_VECTORS_HOST_PATH}/done"; then
|
||||
if ! curl -s -X HEAD -L --retry 4 -f --retry-delay 60 "https://${FLUSTER_VECTORS_HOST_PATH}/done"; then
|
||||
echo "Using Fluster vectors from the fork, cached from mainline is unavailable."
|
||||
FLUSTER_VECTORS_HOST_PATH="${STORAGE_FORK_HOST_PATH}/fluster/${FLUSTER_VECTORS_VERSION}"
|
||||
else
|
||||
@@ -24,7 +24,9 @@ if [ "$CI_PROJECT_PATH" != "$FDO_UPSTREAM_REPO" ]; then
|
||||
fi
|
||||
fi
|
||||
|
||||
curl -L --retry 4 -f --retry-all-errors --retry-delay 60 "${FDO_HTTP_CACHE_URI:-}https://${FLUSTER_VECTORS_HOST_PATH}/vectors.tar.zst" | tar --zstd -x -C /usr/local/
|
||||
FLUSTER_VECTORS_HOST_PATH="${FDO_HTTP_CACHE_URI:-}https://${FLUSTER_VECTORS_HOST_PATH}/vectors.tar.zst"
|
||||
|
||||
curl -L --retry 4 -f --retry-all-errors --retry-delay 60 ${FLUSTER_VECTORS_HOST_PATH} | tar --zstd -x -C /usr/local/
|
||||
|
||||
INSTALL="$PWD/install"
|
||||
|
||||
|
7
.gitlab-ci/gbm-skips.txt
Normal file
7
.gitlab-ci/gbm-skips.txt
Normal file
@@ -0,0 +1,7 @@
|
||||
# gbm does not support reading the front buffer after a swapbuffers, and that's
|
||||
# intentional. Don't bother running these tests when PIGLIT_PLATFORM=gbm.
|
||||
#
|
||||
# Note that this doesn't include tests like fbo-sys-blit, which draw/read front
|
||||
# but don't swap.
|
||||
spec@!opengl 1.0@gl-1.0-swapbuffers-behavior
|
||||
spec@!opengl 1.1@read-front
|
@@ -11,37 +11,45 @@
|
||||
# cannot parse input: "$image:$tag": invalid reference format
|
||||
# check the length of $tag; if it's > 128 chars you need to shorten your tag.
|
||||
|
||||
include:
|
||||
# Include the conditional build image tags used for structured tagging runtime checks that happens
|
||||
# during both build and test jobs
|
||||
# It can be auto-generated by bin/ci/update_tag.py script, so to keep the script's serde simple,
|
||||
# let's keep the component tags in a separate file
|
||||
- .gitlab-ci/conditional-build-image-tags.yml
|
||||
|
||||
variables:
|
||||
DEBIAN_BASE_TAG: "20250408-virgl"
|
||||
DEBIAN_X86_64_BUILD_BASE_IMAGE: "debian/x86_64_build-base"
|
||||
DEBIAN_BASE_TAG: "20250130-vvless"
|
||||
|
||||
DEBIAN_BUILD_TAG: "20250324-android"
|
||||
DEBIAN_X86_64_BUILD_IMAGE_PATH: "debian/x86_64_build"
|
||||
DEBIAN_BUILD_TAG: "20250128-llvm19-up"
|
||||
|
||||
DEBIAN_TEST_ANDROID_TAG: "20250415-anglit"
|
||||
DEBIAN_TEST_GL_TAG: "20250415-anglit"
|
||||
DEBIAN_TEST_VK_TAG: "20250416-vkvideo"
|
||||
KERNEL_ROOTFS_TAG: "20250415-anglit"
|
||||
DEBIAN_X86_64_TEST_BASE_IMAGE: "debian/x86_64_test-base"
|
||||
DEBIAN_ARM64_TEST_BASE_IMAGE: "debian/arm64_test-base"
|
||||
|
||||
DEBIAN_PYUTILS_TAG: "20250321-s3cp-fix5"
|
||||
DEBIAN_X86_64_TEST_IMAGE_GL_PATH: "debian/x86_64_test-gl"
|
||||
DEBIAN_ARM64_TEST_IMAGE_GL_PATH: "debian/arm64_test-gl"
|
||||
DEBIAN_X86_64_TEST_IMAGE_VK_PATH: "debian/x86_64_test-vk"
|
||||
DEBIAN_ARM64_TEST_IMAGE_VK_PATH: "debian/arm64_test-vk"
|
||||
DEBIAN_X86_64_TEST_ANDROID_IMAGE_PATH: "debian/x86_64_test-android"
|
||||
|
||||
ALPINE_X86_64_BUILD_TAG: "20250324-sphinx"
|
||||
ALPINE_X86_64_LAVA_SSH_TAG: "20250321-s3cp-fix5"
|
||||
FEDORA_X86_64_BUILD_TAG: "20250321-s3cp-fix5"
|
||||
DEBIAN_TEST_ANDROID_TAG: "20250130-vvless"
|
||||
DEBIAN_TEST_GL_TAG: "20250130-vvless"
|
||||
DEBIAN_TEST_VK_TAG: "20250130-vvless"
|
||||
KERNEL_ROOTFS_TAG: "20250130-vvless"
|
||||
|
||||
KERNEL_TAG: "v6.14-mesa-0bdd"
|
||||
KERNEL_REPO: "gfx-ci/linux"
|
||||
PKG_REPO_REV: "95bf62c"
|
||||
DEBIAN_PYUTILS_IMAGE: "debian/x86_64_pyutils"
|
||||
DEBIAN_PYUTILS_TAG: "20250129-lavacli"
|
||||
|
||||
FLUSTER_VECTORS_VERSION: "5"
|
||||
ALPINE_X86_64_BUILD_TAG: "20250128-llversionm"
|
||||
ALPINE_X86_64_LAVA_SSH_TAG: "20250124-spirv-tools"
|
||||
FEDORA_X86_64_BUILD_TAG: "20250128-llversionm"
|
||||
|
||||
WINDOWS_X64_MSVC_TAG: "20250129-llvm19"
|
||||
KERNEL_TAG: "v6.13-rc4-mesa-5e77"
|
||||
KERNEL_REPO: "gfx-ci/linux"
|
||||
PKG_REPO_REV: "95bf62c"
|
||||
|
||||
WINDOWS_X64_BUILD_TAG: "20250129-llvm19"
|
||||
FLUSTER_VECTORS_VERSION: "5"
|
||||
|
||||
WINDOWS_X64_TEST_TAG: "20250129-llvm19"
|
||||
WINDOWS_X64_MSVC_PATH: "windows/x86_64_msvc"
|
||||
WINDOWS_X64_MSVC_TAG: "20240827-v143"
|
||||
|
||||
WINDOWS_X64_BUILD_PATH: "windows/x86_64_build"
|
||||
WINDOWS_X64_BUILD_TAG: "20241107-setup"
|
||||
|
||||
WINDOWS_X64_TEST_PATH: "windows/x86_64_test"
|
||||
WINDOWS_X64_TEST_TAG: "20241107-setup"
|
||||
|
34
.gitlab-ci/lava/lava-gitlab-ci.yml
Normal file → Executable file
34
.gitlab-ci/lava/lava-gitlab-ci.yml
Normal file → Executable file
@@ -5,19 +5,6 @@ variables:
|
||||
.lava-test:
|
||||
# Cancel job if a newer commit is pushed to the same branch
|
||||
interruptible: true
|
||||
# The jobs themselves shouldn't actually run for an hour, of course.
|
||||
# Jobs are picked up greedily by a GitLab CI runner which is deliberately
|
||||
# overprovisioned compared to the number of available devices. They are
|
||||
# submitted to the LAVA co-ordinator with a job priority which gives
|
||||
# pre-merge priority over everyone else. User-submitted and nightly jobs
|
||||
# can thus spend ages just waiting around in a queue to be run at some
|
||||
# point as they get pre-empted by other things.
|
||||
# Non-queue time has strict timeouts for each stage, e.g. for downloading
|
||||
# the artifacts, booting the device, device setup, running the tests, etc,
|
||||
# which is handled by LAVA itself.
|
||||
# So the only reason we should see anyone bouncing off this timeout is due
|
||||
# to a lack of available devices to run the jobs.
|
||||
timeout: 1h
|
||||
variables:
|
||||
GIT_STRATEGY: none # testing doesn't build anything from source
|
||||
FDO_CI_CONCURRENT: 6 # should be replaced by per-machine definitions
|
||||
@@ -54,7 +41,7 @@ variables:
|
||||
tags:
|
||||
- $RUNNER_TAG
|
||||
after_script:
|
||||
- curl -L --retry 4 -f --retry-connrefused --retry-delay 30 -s "https://${JOB_RESULTS_PATH}" | tar --warning=no-timestamp --zstd -x
|
||||
- curl -L --retry 4 -f --retry-all-errors --retry-delay 60 -s "https://${JOB_RESULTS_PATH}" | tar --warning=no-timestamp --zstd -x
|
||||
needs:
|
||||
- !reference [.required-for-hardware-jobs, needs]
|
||||
- job: alpine/x86_64_lava_ssh_client
|
||||
@@ -139,31 +126,38 @@ variables:
|
||||
extends:
|
||||
- .lava-test:x86_64
|
||||
|
||||
.lava-piglit-traces:
|
||||
.lava-traces-base:
|
||||
variables:
|
||||
HWCI_TEST_SCRIPT: "/install/piglit/piglit-traces.sh"
|
||||
# until we overcome Infrastructure issues, give traces extra 5 min before timeout
|
||||
DEVICE_HANGING_TIMEOUT_SEC: 600
|
||||
PIGLIT_REPLAY_DEVICE_NAME: "gl-${GPU_VERSION}"
|
||||
PIGLIT_RESULTS: "${GPU_VERSION}-replay"
|
||||
artifacts:
|
||||
reports:
|
||||
junit: results/junit.xml
|
||||
|
||||
.lava-piglit:
|
||||
variables:
|
||||
PIGLIT_REPLAY_DEVICE_NAME: "gl-${GPU_VERSION}"
|
||||
PIGLIT_RESULTS: "${GPU_VERSION}-${PIGLIT_PROFILES}"
|
||||
HWCI_TEST_SCRIPT: "/install/piglit/piglit-runner.sh"
|
||||
|
||||
.lava-piglit-traces:x86_64:
|
||||
extends:
|
||||
- .lava-test:x86_64
|
||||
- .lava-piglit-traces
|
||||
- .lava-piglit
|
||||
- .lava-traces-base
|
||||
|
||||
.lava-piglit-traces:arm32:
|
||||
extends:
|
||||
- .lava-test:arm32
|
||||
- .lava-piglit-traces
|
||||
- .lava-piglit
|
||||
- .lava-traces-base
|
||||
|
||||
.lava-piglit-traces:arm64:
|
||||
extends:
|
||||
- .lava-test:arm64
|
||||
- .lava-piglit-traces
|
||||
- .lava-piglit
|
||||
- .lava-traces-base
|
||||
|
||||
.lava-fluster:
|
||||
variables:
|
||||
|
@@ -47,12 +47,12 @@ ROOTFS_URL="$(get_path_to_artifact lava-rootfs.tar.zst)"
|
||||
rm -rf results
|
||||
mkdir -p results/job-rootfs-overlay/
|
||||
|
||||
artifacts/ci-common/export-gitlab-job-env-for-dut.sh > results/job-rootfs-overlay/set-job-env-vars.sh
|
||||
artifacts/ci-common/generate-env.sh > results/job-rootfs-overlay/set-job-env-vars.sh
|
||||
cp artifacts/ci-common/init-*.sh results/job-rootfs-overlay/
|
||||
cp "$SCRIPTS_DIR"/setup-test-env.sh results/job-rootfs-overlay/
|
||||
|
||||
tar zcf job-rootfs-overlay.tar.gz -C results/job-rootfs-overlay/ .
|
||||
s3_upload job-rootfs-overlay.tar.gz "https://${JOB_ARTIFACTS_BASE}/"
|
||||
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:"
|
||||
@@ -62,9 +62,6 @@ section_switch lava_submit "Submitting job for scheduling"
|
||||
|
||||
touch results/lava.log
|
||||
tail -f results/lava.log &
|
||||
# Ensure that we are printing the commands that are being executed,
|
||||
# making it easier to debug the job in case it fails.
|
||||
set -x
|
||||
PYTHONPATH=artifacts/ artifacts/lava/lava_job_submitter.py \
|
||||
--farm "${FARM}" \
|
||||
--device-type "${DEVICE_TYPE}" \
|
||||
@@ -100,11 +97,5 @@ PYTHONPATH=artifacts/ artifacts/lava/lava_job_submitter.py \
|
||||
--compression=gz \
|
||||
--path="/" \
|
||||
--format=tar \
|
||||
- append-overlay \
|
||||
--name=extra-modules \
|
||||
--url="${KERNEL_IMAGE_BASE}/${DEBIAN_ARCH}/modules.tar.zst" \
|
||||
--compression=zstd \
|
||||
--path="/" \
|
||||
--format=tar \
|
||||
- submit \
|
||||
>> results/lava.log
|
||||
|
@@ -225,12 +225,12 @@ def wait_for_job_get_started(job, attempt_no):
|
||||
|
||||
|
||||
def bootstrap_log_follower(main_test_case, timestamp_relative_to) -> LogFollower:
|
||||
deploy_timeout = GL_SECTION_TIMEOUTS[LogSectionType.LAVA_DEPLOY]
|
||||
start_section = GitlabSection(
|
||||
id="dut_deploy",
|
||||
header=f"Running LAVA deploy action - Timeout: {deploy_timeout}",
|
||||
type=LogSectionType.LAVA_DEPLOY,
|
||||
id="dut_boot",
|
||||
header="Booting hardware device",
|
||||
type=LogSectionType.LAVA_BOOT,
|
||||
start_collapsed=True,
|
||||
suppress_end=True, # init-stage2 prints the end for us
|
||||
timestamp_relative_to=timestamp_relative_to,
|
||||
)
|
||||
print(start_section.start())
|
||||
|
@@ -1,10 +1,7 @@
|
||||
from os import getenv
|
||||
|
||||
# How many attempts should be made when a timeout happen during LAVA device boot.
|
||||
NUMBER_OF_ATTEMPTS_LAVA_BOOT = int(getenv("LAVA_NUMBER_OF_ATTEMPTS_LAVA_BOOT", 2))
|
||||
# The deploy involves downloading and decompressing the kernel, modules, dtb and the overlays.
|
||||
# We should retry, to overcome network issues.
|
||||
NUMBER_OF_ATTEMPTS_LAVA_DEPLOY = int(getenv("LAVA_NUMBER_OF_ATTEMPTS_LAVA_DEPLOY", 2))
|
||||
NUMBER_OF_ATTEMPTS_LAVA_BOOT = int(getenv("LAVA_NUMBER_OF_ATTEMPTS_LAVA_BOOT", 3))
|
||||
|
||||
|
||||
# Supports any integers in [0, 100].
|
||||
|
@@ -83,13 +83,11 @@ class GitlabSection:
|
||||
)
|
||||
|
||||
def __enter__(self):
|
||||
if start_log_line := self.start():
|
||||
print(start_log_line)
|
||||
print(self.start())
|
||||
return self
|
||||
|
||||
def __exit__(self, exc_type, exc_val, exc_tb):
|
||||
if end_log_line := self.end():
|
||||
print(end_log_line)
|
||||
print(self.end())
|
||||
|
||||
def start(self) -> str:
|
||||
assert not self.has_finished, "Starting an already finished section"
|
||||
|
@@ -1,16 +1,35 @@
|
||||
import logging
|
||||
import os
|
||||
import re
|
||||
from enum import Enum
|
||||
|
||||
|
||||
def get_lava_farm() -> str:
|
||||
class LavaFarm(Enum):
|
||||
"""Enum class representing the different LAVA farms."""
|
||||
|
||||
LIMA = 1
|
||||
COLLABORA = 2
|
||||
UNKNOWN = 3
|
||||
|
||||
|
||||
LAVA_FARM_RUNNER_PATTERNS: dict[LavaFarm, str] = {
|
||||
# Lima pattern comes first, since it has the same prefix as the
|
||||
# Collabora pattern.
|
||||
LavaFarm.LIMA: r"^mesa-ci-[\x01-\x7F]+-lava-lima$",
|
||||
LavaFarm.COLLABORA: r"^mesa-ci-[\x01-\x7F]+-lava-[\x01-\x7F]+$",
|
||||
LavaFarm.UNKNOWN: r"^[\x01-\x7F]+",
|
||||
}
|
||||
|
||||
|
||||
def get_lava_farm() -> LavaFarm:
|
||||
"""
|
||||
Returns the LAVA farm based on the FARM environment variable.
|
||||
Returns the LAVA farm based on the RUNNER_TAG environment variable.
|
||||
|
||||
:return: The LAVA farm
|
||||
"""
|
||||
farm: str = os.getenv("FARM", "unknown")
|
||||
runner_tag: str = os.getenv("RUNNER_TAG", "unknown")
|
||||
|
||||
if farm == "unknown":
|
||||
logging.warning("FARM environment variable is not set, using unknown")
|
||||
for farm, pattern in LAVA_FARM_RUNNER_PATTERNS.items():
|
||||
if re.match(pattern, runner_tag):
|
||||
return farm
|
||||
|
||||
return farm.lower()
|
||||
raise ValueError(f"Unknown LAVA runner tag: {runner_tag}")
|
||||
|
@@ -182,8 +182,7 @@ class LAVAJob:
|
||||
return lava_lines[:last_line]
|
||||
|
||||
def handle_exception(self, exception: Exception):
|
||||
# Print the exception type and message
|
||||
print_log(f"{type(exception).__name__}: {str(exception)}")
|
||||
print_log(exception)
|
||||
self.cancel()
|
||||
self.exception = exception
|
||||
|
||||
|
@@ -3,10 +3,7 @@ from typing import TYPE_CHECKING, Any
|
||||
|
||||
from ruamel.yaml import YAML
|
||||
|
||||
from os import getenv
|
||||
|
||||
from lava.utils.lava_farm import get_lava_farm
|
||||
from lava.utils.log_section import LAVA_DEPLOY_TIMEOUT
|
||||
from lava.utils.lava_farm import LavaFarm, get_lava_farm
|
||||
from lava.utils.ssh_job_definition import (
|
||||
generate_docker_test,
|
||||
generate_dut_test,
|
||||
@@ -26,12 +23,7 @@ from lava.utils.uart_job_definition import (
|
||||
if TYPE_CHECKING:
|
||||
from lava.lava_job_submitter import LAVAJobSubmitter
|
||||
|
||||
from .constants import (
|
||||
FORCE_UART,
|
||||
JOB_PRIORITY,
|
||||
NUMBER_OF_ATTEMPTS_LAVA_BOOT,
|
||||
NUMBER_OF_ATTEMPTS_LAVA_DEPLOY,
|
||||
)
|
||||
from .constants import FORCE_UART, JOB_PRIORITY, NUMBER_OF_ATTEMPTS_LAVA_BOOT
|
||||
|
||||
|
||||
class LAVAJobDefinition:
|
||||
@@ -46,9 +38,6 @@ class LAVAJobDefinition:
|
||||
self.lava_nfs_args: str = "root=/dev/nfs rw nfsroot=$NFS_SERVER_IP:$NFS_ROOTFS,tcp,hard,v3 ip=dhcp"
|
||||
# extra_nfsroot_args appends to cmdline
|
||||
self.extra_nfsroot_args: str = " init=/init rootwait usbcore.quirks=0bda:8153:k"
|
||||
# Append LAVA_CMDLINE to extra_nfsroot_args
|
||||
if lava_cmdline := getenv('LAVA_CMDLINE'):
|
||||
self.extra_nfsroot_args += f" {lava_cmdline}"
|
||||
|
||||
def has_ssh_support(self) -> bool:
|
||||
if FORCE_UART:
|
||||
@@ -58,7 +47,7 @@ class LAVAJobDefinition:
|
||||
# which is required to follow the job in a SSH section
|
||||
current_farm = get_lava_farm()
|
||||
|
||||
return current_farm == "collabora"
|
||||
return current_farm == LavaFarm.COLLABORA
|
||||
|
||||
def generate_lava_yaml_payload(self) -> dict[str, Any]:
|
||||
"""
|
||||
@@ -160,15 +149,18 @@ class LAVAJobDefinition:
|
||||
"job": {"minutes": self.job_submitter.job_timeout_min},
|
||||
"actions": {
|
||||
"depthcharge-retry": {
|
||||
# Setting higher values here, to affect the subactions, namely
|
||||
# `bootloader-commands` and `login-action`
|
||||
# So this value can be higher than `depthcharge-action` timeout.
|
||||
"minutes": 3 * NUMBER_OF_ATTEMPTS_LAVA_DEPLOY
|
||||
# Could take between 1 and 1.5 min in slower boots
|
||||
"minutes": 4
|
||||
},
|
||||
"depthcharge-start": {
|
||||
# Should take less than 1 min.
|
||||
"minutes": 1,
|
||||
},
|
||||
"depthcharge-action": {
|
||||
# This timeout englobes the entire depthcharge timing,
|
||||
# including retries
|
||||
"minutes": LAVA_DEPLOY_TIMEOUT
|
||||
"minutes": 5
|
||||
* NUMBER_OF_ATTEMPTS_LAVA_BOOT,
|
||||
},
|
||||
"uboot-action": {
|
||||
# For rockchip DUTs, U-Boot auto-login action downloads the kernel and
|
||||
@@ -176,10 +168,9 @@ class LAVAJobDefinition:
|
||||
# The LAVA action that wraps it is `uboot-commands`, but we can't set a
|
||||
# timeout for it directly, it is overridden by one third of `uboot-action`
|
||||
# timeout.
|
||||
# So actually, this timeout is here to enforce that `uboot-action`
|
||||
# timeout to be 100 seconds (uboot-action timeout /
|
||||
# NUMBER_OF_ATTEMPTS_LAVA_BOOT), which is more than enough.
|
||||
"seconds": 100 * NUMBER_OF_ATTEMPTS_LAVA_BOOT
|
||||
# So actually, this timeout is here to enforce that `uboot-commands`
|
||||
# timeout to be 100 seconds (300 sec / 3), which is more than enough.
|
||||
"minutes": 5
|
||||
},
|
||||
},
|
||||
},
|
||||
|
@@ -20,7 +20,7 @@ from typing import Optional, Union
|
||||
from lava.exceptions import MesaCITimeoutError
|
||||
from lava.utils.console_format import CONSOLE_LOG
|
||||
from lava.utils.gitlab_section import GitlabSection
|
||||
from lava.utils.lava_farm import get_lava_farm
|
||||
from lava.utils.lava_farm import LavaFarm, get_lava_farm
|
||||
from lava.utils.lava_log_hints import LAVALogHints
|
||||
from lava.utils.log_section import (
|
||||
DEFAULT_GITLAB_SECTION_TIMEOUTS,
|
||||
@@ -43,7 +43,7 @@ class LogFollower:
|
||||
fallback_timeout: timedelta = FALLBACK_GITLAB_SECTION_TIMEOUT
|
||||
_buffer: list[str] = field(default_factory=list, init=False)
|
||||
log_hints: LAVALogHints = field(init=False)
|
||||
lava_farm: str = field(init=False, default=get_lava_farm())
|
||||
lava_farm: LavaFarm = field(init=False, default=get_lava_farm())
|
||||
_merge_next_line: str = field(default_factory=str, init=False)
|
||||
|
||||
def __post_init__(self):
|
||||
@@ -261,9 +261,7 @@ class LogFollower:
|
||||
elif line["lvl"] == "input":
|
||||
prefix = "$ "
|
||||
suffix = ""
|
||||
elif line["lvl"] == "target" and self.lava_farm != "collabora":
|
||||
if self.lava_farm == "lima":
|
||||
fix_lava_color_log(line)
|
||||
elif line["lvl"] == "target" and self.lava_farm != LavaFarm.COLLABORA:
|
||||
# gl_section_fix_gen will output the stored line if it can't find a
|
||||
# match for the first split line
|
||||
# So we can recover it and put it back to the buffer
|
||||
@@ -272,31 +270,6 @@ class LogFollower:
|
||||
|
||||
return f'{prefix}{line["msg"]}{suffix}'
|
||||
|
||||
|
||||
def fix_lava_color_log(line):
|
||||
"""This function is a temporary solution for the color escape codes mangling problem. There is
|
||||
some problem in message passing between the LAVA dispatcher and the device under test (DUT).
|
||||
Here \x1b or \\e character is missing before `[:digit::digit:?m` ANSI TTY color codes.
|
||||
When this problem is fixed on the LAVA side, one should remove this function.
|
||||
|
||||
For example, instead of receiving "\x1b[31m" (red text), we receive "[31m".
|
||||
|
||||
The function fixes three types of mangled ANSI sequences:
|
||||
1. Standard color codes like [31m → \x1b[31m
|
||||
2. Line erase codes [0K → \x1b[0K
|
||||
3. Specific color formatting codes with carriage return [0;3xm → \r\x1b[0;3xm
|
||||
|
||||
Note: most LAVA farms don't have this problem, except for Lima, which uses
|
||||
an older version of LAVA.
|
||||
"""
|
||||
# Fix standard ANSI color codes (e.g., [31m → \x1b[31m)
|
||||
line["msg"] = re.sub(r"(\[\d{1,2}m)", "\x1b" + r"\1", line["msg"])
|
||||
# Fix ANSI line erase codes (e.g., [0K → \x1b[0K)
|
||||
line["msg"] = re.sub(r"(\[0K)", "\x1b" + r"\1", line["msg"])
|
||||
# Fix ANSI color codes with formatting and carriage return (e.g., [0;31m → \r\x1b[0;31m)
|
||||
line["msg"] = re.sub(r"(\[0;3\d{1,2}m)", "\r\x1b" + r"\1", line["msg"])
|
||||
|
||||
|
||||
def fix_lava_gitlab_section_log():
|
||||
"""This function is a temporary solution for the Gitlab section markers
|
||||
splitting problem. Gitlab parses the following lines to define a collapsible
|
||||
@@ -332,12 +305,8 @@ def fix_lava_gitlab_section_log():
|
||||
yield first_line
|
||||
|
||||
|
||||
def print_log(msg: str, *args) -> None:
|
||||
is_section_header = msg.startswith("\x1b[0Ksection_")
|
||||
if is_section_header:
|
||||
print(msg, *args)
|
||||
return
|
||||
|
||||
def print_log(msg: str, *args) -> None:
|
||||
# Reset color from timestamp, since `msg` can tint the terminal color
|
||||
ts = datetime.now(tz=UTC)
|
||||
ts_str = f"{ts.hour:02}:{ts.minute:02}:{ts.second:02}.{int(ts.microsecond / 1000):03}"
|
||||
|
@@ -12,7 +12,6 @@ class LogSectionType(Enum):
|
||||
UNKNOWN = auto()
|
||||
LAVA_SUBMIT = auto()
|
||||
LAVA_QUEUE = auto()
|
||||
LAVA_DEPLOY = auto()
|
||||
LAVA_BOOT = auto()
|
||||
TEST_DUT_SUITE = auto()
|
||||
TEST_SUITE = auto()
|
||||
@@ -28,17 +27,13 @@ LAVA_SUBMIT_TIMEOUT = int(getenv("LAVA_SUBMIT_TIMEOUT", 5))
|
||||
# aggressively for pre-merge.
|
||||
LAVA_QUEUE_TIMEOUT = int(getenv("LAVA_QUEUE_TIMEOUT", 60))
|
||||
|
||||
# How long should we wait for a device to be deployed?
|
||||
# The deploy involves downloading and decompressing the kernel, modules, dtb and the overlays.
|
||||
# We should retry, to overcome network issues.
|
||||
LAVA_DEPLOY_TIMEOUT = int(getenv("LAVA_DEPLOY_TIMEOUT", 5))
|
||||
|
||||
# Empirically, successful device deploy+boot in LAVA time takes less than 3 minutes.
|
||||
# LAVA itself is configured to attempt `failure_retry` times (NUMBER_OF_ATTEMPTS_LAVA_BOOT) to boot
|
||||
# the device.
|
||||
# Empirically, successful device boot in LAVA time takes less than 3
|
||||
# minutes.
|
||||
# LAVA itself is configured to attempt thrice to boot the device,
|
||||
# summing up to 9 minutes.
|
||||
# It is better to retry the boot than cancel the job and re-submit to avoid
|
||||
# the enqueue delay.
|
||||
LAVA_BOOT_TIMEOUT = int(getenv("LAVA_BOOT_TIMEOUT", 5))
|
||||
LAVA_BOOT_TIMEOUT = int(getenv("LAVA_BOOT_TIMEOUT", 9))
|
||||
|
||||
# Estimated overhead in minutes for a job from GitLab to reach the test phase,
|
||||
# including LAVA scheduling and boot duration
|
||||
@@ -64,7 +59,6 @@ FALLBACK_GITLAB_SECTION_TIMEOUT = timedelta(minutes=10)
|
||||
DEFAULT_GITLAB_SECTION_TIMEOUTS = {
|
||||
LogSectionType.LAVA_SUBMIT: timedelta(minutes=LAVA_SUBMIT_TIMEOUT),
|
||||
LogSectionType.LAVA_QUEUE: timedelta(minutes=LAVA_QUEUE_TIMEOUT),
|
||||
LogSectionType.LAVA_DEPLOY: timedelta(minutes=LAVA_DEPLOY_TIMEOUT),
|
||||
LogSectionType.LAVA_BOOT: timedelta(minutes=LAVA_BOOT_TIMEOUT),
|
||||
LogSectionType.TEST_DUT_SUITE: timedelta(minutes=LAVA_TEST_DUT_SUITE_TIMEOUT),
|
||||
LogSectionType.TEST_SUITE: timedelta(minutes=LAVA_TEST_SUITE_TIMEOUT),
|
||||
@@ -108,14 +102,6 @@ class LogSection:
|
||||
|
||||
|
||||
LOG_SECTIONS = (
|
||||
LogSection(
|
||||
regex=re.compile(r"start: 2 (\S+) \(timeout ([^)]+)\).*"),
|
||||
levels=("info"),
|
||||
section_id="{}",
|
||||
section_header="Booting via {}",
|
||||
section_type=LogSectionType.LAVA_BOOT,
|
||||
collapsed=True,
|
||||
),
|
||||
LogSection(
|
||||
regex=re.compile(r"<?STARTTC>? ([^>]*)"),
|
||||
levels=("target", "debug"),
|
||||
|
@@ -83,7 +83,7 @@ if [ -n "$HOST_BUILD_OPTIONS" ]; then
|
||||
|
||||
section_switch meson-host-build "meson: host build"
|
||||
|
||||
meson configure --no-pager
|
||||
meson configure
|
||||
ninja
|
||||
ninja install
|
||||
popd
|
||||
@@ -120,8 +120,8 @@ case $CI_PIPELINE_SOURCE in
|
||||
# /tmp/ccWlDCPV.s:15250880: Error: operand out of range (0xfffffffffdd4e688 is not between 0xfffffffffe000000 and 0x1fffffc)
|
||||
LTO=false
|
||||
# enable one by one for now
|
||||
elif [ "$CI_JOB_NAME" == "fedora-release" ]; then
|
||||
LTO=false
|
||||
elif [ "$CI_JOB_NAME" == "fedora-release" ] || [ "$CI_JOB_NAME" == "debian-build-testing" ]; then
|
||||
LTO=true
|
||||
else
|
||||
LTO=false
|
||||
fi
|
||||
@@ -186,7 +186,7 @@ meson setup _build \
|
||||
-D backend_max_links=${MAX_LD} \
|
||||
${EXTRA_OPTION}
|
||||
cd _build
|
||||
meson configure --no-pager
|
||||
meson configure
|
||||
|
||||
uncollapsed_section_switch meson-build "meson: build"
|
||||
|
||||
|
136
.gitlab-ci/piglit/piglit-runner.sh
Executable file
136
.gitlab-ci/piglit/piglit-runner.sh
Executable file
@@ -0,0 +1,136 @@
|
||||
#!/usr/bin/env bash
|
||||
# shellcheck disable=SC2086 # we want word splitting
|
||||
# shellcheck disable=SC1091 # paths only become valid at runtime
|
||||
|
||||
. "${SCRIPTS_DIR}/setup-test-env.sh"
|
||||
|
||||
set -ex
|
||||
|
||||
if [ -z "$GPU_VERSION" ]; then
|
||||
echo 'GPU_VERSION must be set to something like "llvmpipe" or "freedreno-a630" (the name used in your ci/gpu-version-*.txt)'
|
||||
exit 1
|
||||
fi
|
||||
|
||||
INSTALL="$PWD/install"
|
||||
|
||||
# Set up the driver environment.
|
||||
export LD_LIBRARY_PATH="$INSTALL/lib/"
|
||||
export EGL_PLATFORM=surfaceless
|
||||
ARCH=$(uname -m)
|
||||
export VK_DRIVER_FILES="$INSTALL/share/vulkan/icd.d/${VK_DRIVER}_icd.$ARCH.json"
|
||||
|
||||
# Ensure Mesa Shader Cache resides on tmpfs.
|
||||
SHADER_CACHE_HOME=${XDG_CACHE_HOME:-${HOME}/.cache}
|
||||
SHADER_CACHE_DIR=${MESA_SHADER_CACHE_DIR:-${SHADER_CACHE_HOME}/mesa_shader_cache}
|
||||
|
||||
findmnt -n tmpfs ${SHADER_CACHE_HOME} || findmnt -n tmpfs ${SHADER_CACHE_DIR} || {
|
||||
mkdir -p ${SHADER_CACHE_DIR}
|
||||
mount -t tmpfs -o nosuid,nodev,size=2G,mode=1755 tmpfs ${SHADER_CACHE_DIR}
|
||||
}
|
||||
|
||||
if [ "$GALLIUM_DRIVER" = "virpipe" ]; then
|
||||
# deqp is to use virpipe, and virgl_test_server llvmpipe
|
||||
export GALLIUM_DRIVER="$GALLIUM_DRIVER"
|
||||
|
||||
VTEST_ARGS="--use-egl-surfaceless"
|
||||
if [ "$VIRGL_HOST_API" = "GLES" ]; then
|
||||
VTEST_ARGS="$VTEST_ARGS --use-gles"
|
||||
fi
|
||||
|
||||
GALLIUM_DRIVER=llvmpipe \
|
||||
GALLIVM_PERF="nopt" \
|
||||
virgl_test_server $VTEST_ARGS >$RESULTS_DIR/vtest-log.txt 2>&1 &
|
||||
|
||||
sleep 1
|
||||
fi
|
||||
|
||||
if [ -n "$PIGLIT_FRACTION" ] || [ -n "$CI_NODE_INDEX" ]; then
|
||||
FRACTION=$((${PIGLIT_FRACTION:-1} * ${CI_NODE_TOTAL:-1}))
|
||||
PIGLIT_RUNNER_OPTIONS="$PIGLIT_RUNNER_OPTIONS --fraction $FRACTION"
|
||||
fi
|
||||
|
||||
# If the job is parallel at the gitab job level, take the corresponding fraction
|
||||
# of the caselist.
|
||||
if [ -n "$CI_NODE_INDEX" ]; then
|
||||
PIGLIT_RUNNER_OPTIONS="$PIGLIT_RUNNER_OPTIONS --fraction-start ${CI_NODE_INDEX}"
|
||||
fi
|
||||
|
||||
if [ -e "$INSTALL/$GPU_VERSION-fails.txt" ]; then
|
||||
PIGLIT_RUNNER_OPTIONS="$PIGLIT_RUNNER_OPTIONS --baseline $INSTALL/$GPU_VERSION-fails.txt"
|
||||
fi
|
||||
|
||||
# Default to an empty known flakes file if it doesn't exist.
|
||||
touch $INSTALL/$GPU_VERSION-flakes.txt
|
||||
|
||||
if [ -n "$VK_DRIVER" ] && [ -e "$INSTALL/$VK_DRIVER-skips.txt" ]; then
|
||||
PIGLIT_SKIPS="$PIGLIT_SKIPS $INSTALL/$VK_DRIVER-skips.txt"
|
||||
fi
|
||||
|
||||
if [ -n "$GALLIUM_DRIVER" ] && [ -e "$INSTALL/$GALLIUM_DRIVER-skips.txt" ]; then
|
||||
PIGLIT_SKIPS="$PIGLIT_SKIPS $INSTALL/$GALLIUM_DRIVER-skips.txt"
|
||||
fi
|
||||
|
||||
if [ -n "$DRIVER_NAME" ] && [ -e "$INSTALL/$DRIVER_NAME-skips.txt" ]; then
|
||||
PIGLIT_SKIPS="$PIGLIT_SKIPS $INSTALL/$DRIVER_NAME-skips.txt"
|
||||
fi
|
||||
|
||||
if [ -e "$INSTALL/$GPU_VERSION-skips.txt" ]; then
|
||||
PIGLIT_SKIPS="$PIGLIT_SKIPS $INSTALL/$GPU_VERSION-skips.txt"
|
||||
fi
|
||||
|
||||
if [ -e "$INSTALL/$GPU_VERSION-slow-skips.txt" ] && [[ $CI_JOB_NAME != *full* ]]; then
|
||||
PIGLIT_SKIPS="$PIGLIT_SKIPS $INSTALL/$GPU_VERSION-slow-skips.txt"
|
||||
fi
|
||||
|
||||
if [ "$PIGLIT_PLATFORM" != "gbm" ] ; then
|
||||
PIGLIT_SKIPS="$PIGLIT_SKIPS $INSTALL/x11-skips.txt"
|
||||
fi
|
||||
|
||||
if [ "$PIGLIT_PLATFORM" = "gbm" ]; then
|
||||
PIGLIT_SKIPS="$PIGLIT_SKIPS $INSTALL/gbm-skips.txt"
|
||||
fi
|
||||
|
||||
set +e
|
||||
|
||||
piglit-runner \
|
||||
run \
|
||||
--piglit-folder /piglit \
|
||||
--output $RESULTS_DIR \
|
||||
--jobs ${FDO_CI_CONCURRENT:-4} \
|
||||
--skips $INSTALL/all-skips.txt $PIGLIT_SKIPS \
|
||||
--flakes $INSTALL/$GPU_VERSION-flakes.txt \
|
||||
--profile $PIGLIT_PROFILES \
|
||||
--process-isolation \
|
||||
$PIGLIT_RUNNER_OPTIONS \
|
||||
-v -v
|
||||
|
||||
PIGLIT_EXITCODE=$?
|
||||
|
||||
deqp-runner junit \
|
||||
--testsuite $PIGLIT_PROFILES \
|
||||
--results $RESULTS_DIR/failures.csv \
|
||||
--output $RESULTS_DIR/junit.xml \
|
||||
--limit 50 \
|
||||
--template "See $ARTIFACTS_BASE_URL/results/{{testcase}}.xml"
|
||||
|
||||
# Report the flakes to the IRC channel for monitoring (if configured):
|
||||
if [ -n "$FLAKES_CHANNEL" ]; then
|
||||
python3 $INSTALL/report-flakes.py \
|
||||
--host irc.oftc.net \
|
||||
--port 6667 \
|
||||
--results $RESULTS_DIR/results.csv \
|
||||
--known-flakes $INSTALL/$GPU_VERSION-flakes.txt \
|
||||
--channel "$FLAKES_CHANNEL" \
|
||||
--runner "$CI_RUNNER_DESCRIPTION" \
|
||||
--job "$CI_JOB_ID" \
|
||||
--url "$CI_JOB_URL" \
|
||||
--branch "${CI_MERGE_REQUEST_SOURCE_BRANCH_NAME:-$CI_COMMIT_BRANCH}" \
|
||||
--branch-title "${CI_MERGE_REQUEST_TITLE:-$CI_COMMIT_TITLE}" || true
|
||||
fi
|
||||
|
||||
# Compress results.csv to save on bandwidth during the upload of artifacts to
|
||||
# GitLab. This reduces a full piglit run to 550 KB, down from 6 MB, and takes
|
||||
# 55ms on my Ryzen 5950X (with or without parallelism).
|
||||
zstd --quiet --rm --threads ${FDO_CI_CONCURRENT:-0} -8 $RESULTS_DIR/results.csv -o $RESULTS_DIR/results.csv.zst
|
||||
|
||||
exit $PIGLIT_EXITCODE
|
@@ -13,6 +13,7 @@ set -ex
|
||||
export PAGER=cat # FIXME: export everywhere
|
||||
|
||||
INSTALL=$(realpath -s "$PWD"/install)
|
||||
S3_ARGS="--token-file ${S3_JWT_FILE}"
|
||||
|
||||
export PIGLIT_REPLAY_DESCRIPTION_FILE="$INSTALL/$PIGLIT_TRACES_FILE"
|
||||
|
||||
@@ -119,7 +120,7 @@ replay_s3_upload_images() {
|
||||
fi
|
||||
__S3_PATH="$PIGLIT_REPLAY_REFERENCE_IMAGES_BASE"
|
||||
__DESTINATION_FILE_PATH="${line##*-}"
|
||||
if curl --fail -L -s -I "https://${__S3_PATH}/${__DESTINATION_FILE_PATH}" | grep -q "content-type: application/octet-stream" 2>/dev/null; then
|
||||
if curl -L -s -I "https://${__S3_PATH}/${__DESTINATION_FILE_PATH}" | grep -q "content-type: application/octet-stream" 2>/dev/null; then
|
||||
continue
|
||||
fi
|
||||
else
|
||||
@@ -127,7 +128,8 @@ replay_s3_upload_images() {
|
||||
__DESTINATION_FILE_PATH="$__S3_TRACES_PREFIX/${line##*-}"
|
||||
fi
|
||||
|
||||
s3_upload "$RESULTS_DIR/$__PREFIX/$line" "https://${__S3_PATH}/${__DESTINATION_FILE_PATH%/*}/"
|
||||
ci-fairy s3cp $S3_ARGS "$RESULTS_DIR/$__PREFIX/$line" \
|
||||
"https://${__S3_PATH}/${__DESTINATION_FILE_PATH}"
|
||||
done
|
||||
}
|
||||
|
||||
@@ -164,11 +166,10 @@ RUN_CMD="export LD_LIBRARY_PATH=$__LD_LIBRARY_PATH; $SANITY_MESA_VERSION_CMD &&
|
||||
rm -rf replayer-db
|
||||
|
||||
# ANGLE: download compiled ANGLE runtime and the compiled restricted traces (all-in-one package)
|
||||
if [ -n "$PIGLIT_REPLAY_ANGLE_ARCH" ]; then
|
||||
FILE="angle-bin-${PIGLIT_REPLAY_ANGLE_ARCH}-${ANGLE_TRACE_FILES_TAG}.tar.zst"
|
||||
curl --location --fail --retry-all-errors --retry 4 --retry-delay 60 \
|
||||
--header "Authorization: Bearer $(cat "${S3_JWT_FILE}")" \
|
||||
"https://s3.freedesktop.org/mesa-tracie-private/${FILE}" --output "${FILE}"
|
||||
if [ -n "$PIGLIT_REPLAY_ANGLE_TAG" ]; then
|
||||
ARCH="amd64"
|
||||
FILE="angle-bin-${ARCH}-${PIGLIT_REPLAY_ANGLE_TAG}.tar.zst"
|
||||
ci-fairy s3cp $S3_ARGS "https://s3.freedesktop.org/mesa-tracie-private/${FILE}" "${FILE}"
|
||||
mkdir -p replayer-db/angle
|
||||
tar --zstd -xf ${FILE} -C replayer-db/angle/
|
||||
fi
|
||||
|
@@ -52,8 +52,8 @@ cp -Rp .gitlab-ci/*.txt artifacts/
|
||||
if [ -n "$S3_ARTIFACT_NAME" ]; then
|
||||
# Pass needed files to the test stage
|
||||
S3_ARTIFACT_TAR="$S3_ARTIFACT_NAME.tar.zst"
|
||||
tar c artifacts/ | zstd -o "${S3_ARTIFACT_TAR}"
|
||||
s3_upload "${S3_ARTIFACT_TAR}" "https://${PIPELINE_ARTIFACTS_BASE}/"
|
||||
tar cv artifacts/ | zstd -o "${S3_ARTIFACT_TAR}"
|
||||
ci-fairy s3cp --token-file "${S3_JWT_FILE}" "${S3_ARTIFACT_TAR}" "https://${PIPELINE_ARTIFACTS_BASE}/${S3_ARTIFACT_TAR}"
|
||||
rm "${S3_ARTIFACT_TAR}"
|
||||
fi
|
||||
|
||||
|
@@ -84,7 +84,7 @@ if [ -n "$S3_ARTIFACT_NAME" ]; then
|
||||
# Pass needed files to the test stage
|
||||
S3_ARTIFACT_NAME="$S3_ARTIFACT_NAME.tar.zst"
|
||||
zstd --quiet --threads ${FDO_CI_CONCURRENT:-0} artifacts/install.tar -o ${S3_ARTIFACT_NAME}
|
||||
s3_upload "${S3_ARTIFACT_NAME}" "https://${PIPELINE_ARTIFACTS_BASE}/"
|
||||
ci-fairy s3cp --token-file "${S3_JWT_FILE}" ${S3_ARTIFACT_NAME} https://${PIPELINE_ARTIFACTS_BASE}/${S3_ARTIFACT_NAME}
|
||||
fi
|
||||
|
||||
section_end prepare-artifacts
|
||||
|
@@ -26,13 +26,6 @@ function _x_restore {
|
||||
}
|
||||
alias x_restore='{ _x_restore; } >/dev/null 2>/dev/null'
|
||||
|
||||
function _error_msg() (
|
||||
x_off
|
||||
RED="\e[0;31m"
|
||||
ENDCOLOR="\e[0m"
|
||||
echo -e "${RED}$*${ENDCOLOR}"
|
||||
)
|
||||
|
||||
export JOB_START_S=$(date -u +"%s" -d "${CI_JOB_STARTED_AT:?}")
|
||||
|
||||
function get_current_minsec {
|
||||
@@ -113,7 +106,6 @@ export -f _build_section_end
|
||||
export -f _section_end
|
||||
export -f _section_switch
|
||||
export -f _uncollapsed_section_switch
|
||||
export -f _error_msg
|
||||
|
||||
# Freedesktop requirement (needed for Wayland)
|
||||
[ -n "${XDG_RUNTIME_DIR:-}" ] || export XDG_RUNTIME_DIR="$(mktemp -p "$PWD" -d xdg-runtime-XXXXXX)"
|
||||
@@ -127,6 +119,8 @@ if [ -z "${RESULTS_DIR:-}" ]; then
|
||||
fi
|
||||
|
||||
function error {
|
||||
RED="\e[0;31m"
|
||||
ENDCOLOR="\e[0m"
|
||||
# we force the following to be not in a section
|
||||
if [ -n "${CURRENT_SECTION:-}" ]; then
|
||||
section_end $CURRENT_SECTION
|
||||
@@ -134,8 +128,7 @@ function error {
|
||||
fi
|
||||
|
||||
CURR_MINSEC=$(get_current_minsec)
|
||||
echo -e "\n"
|
||||
_error_msg "[$CURR_MINSEC] ERROR: $*"
|
||||
echo -e "\n${RED}[${CURR_MINSEC}] ERROR: $*${ENDCOLOR}\n"
|
||||
x_restore
|
||||
}
|
||||
|
||||
@@ -144,166 +137,6 @@ function trap_err {
|
||||
error ${CURRENT_SECTION:-'unknown-section'}: ret code: $*
|
||||
}
|
||||
|
||||
# ------ Structured tagging
|
||||
export _CI_TAG_CHECK_DIR="/mesa-ci-build-tag"
|
||||
|
||||
_ci_tag_from_name_to_var() {
|
||||
# Transforms MY_COMPONENT_TAG to my-component
|
||||
echo "${1%_TAG}" | tr '[:upper:]' '[:lower:]' | tr '_' '-'
|
||||
}
|
||||
|
||||
_ci_tag_check() (
|
||||
x_off
|
||||
_declared_name="${1}"
|
||||
declare -n _declared="${_declared_name}"
|
||||
_calculated="${2}"
|
||||
local component_lower=$(_ci_tag_from_name_to_var "${_declared_name}")
|
||||
|
||||
if [ -z "${_declared:-}" ]; then
|
||||
# Close the section
|
||||
error "Fatal error"
|
||||
_error_msg "Structured tag is not set: ${_declared_name}"
|
||||
_error_msg ""
|
||||
echo "If you are adding a new component, please run:"
|
||||
echo "bin/ci/update_tag.py --include ${component_lower}"
|
||||
echo "This will automatically update the YAML file for you."
|
||||
echo "Or manually edit .gitlab-ci/conditional-build-image-tags.yml to add the new"
|
||||
echo "component."
|
||||
error ""
|
||||
exit 2
|
||||
fi
|
||||
|
||||
if [ "${_declared}" != "${_calculated}" ]; then
|
||||
# Close the section
|
||||
error "Fatal error"
|
||||
_error_msg "Mismatch in declared and calculated tags:"
|
||||
_error_msg " ${_declared_name} from the YAML is \"${_declared}\""
|
||||
_error_msg " ... but I think it should be \"${_calculated}\""
|
||||
_error_msg ""
|
||||
echo "Usually this happens when you change what you want to be built without also"
|
||||
echo "changing the YAML declaration. For example, you've bumped SKQP to version"
|
||||
echo "1.2.3, but you still have 'SKQP_VER: 1.2.2' in"
|
||||
echo ".gitlab-ci/conditional-build-image-tags.yml."
|
||||
echo ""
|
||||
echo "If you meant to change the component I'm talking about, please change the"
|
||||
echo "tag and resubmit. You can also run:"
|
||||
echo "bin/ci/update_tag.py --include ${component_lower}"
|
||||
echo "to update the tag automatically."
|
||||
echo ""
|
||||
echo "If you didn't mean to change the component, please ping @mesa/ci-helpers and we"
|
||||
echo "can help you figure out what's gone wrong."
|
||||
echo ""
|
||||
echo "But for now, I've got to fail this build. Sorry."
|
||||
exit 2
|
||||
fi
|
||||
x_restore
|
||||
)
|
||||
|
||||
_ci_tag_check_build() {
|
||||
x_off
|
||||
if [ -n "${NEW_TAG_DRY_RUN:-}" ]; then
|
||||
echo "${2}"
|
||||
exit 0
|
||||
fi
|
||||
|
||||
_ci_tag_check "${1}" "${2}"
|
||||
|
||||
if [ -n "${CI_NOT_BUILDING_ANYTHING:-}" ]; then
|
||||
exit 0
|
||||
fi
|
||||
x_restore
|
||||
}
|
||||
|
||||
get_tag_file() {
|
||||
x_off
|
||||
# If no tag name is provided, return the directory
|
||||
echo "${_CI_TAG_CHECK_DIR}/${1:-}"
|
||||
x_restore
|
||||
}
|
||||
|
||||
_ci_tag_write() (
|
||||
set +x
|
||||
local tag_name="${1}"
|
||||
local tag_value="${2}"
|
||||
|
||||
mkdir -p "${_CI_TAG_CHECK_DIR}"
|
||||
echo -n "${tag_value}" > "$(get_tag_file "${tag_name}")"
|
||||
)
|
||||
|
||||
_ci_calculate_tag() {
|
||||
x_off
|
||||
# the args are files that can affect the build output
|
||||
mapfile -t extra_files < <(printf '%s\n' "$@")
|
||||
(
|
||||
for extra_file in "${extra_files[@]}"; do
|
||||
if [ ! -f "${extra_file}" ]; then
|
||||
error "File '${extra_file}' does not exist"
|
||||
exit 1
|
||||
fi
|
||||
cat "${extra_file}"
|
||||
done
|
||||
) | md5sum | cut -d' ' -f1
|
||||
x_restore
|
||||
}
|
||||
|
||||
ci_tag_build_time_check() {
|
||||
# Get the caller script and hash its contents plus the extra files
|
||||
x_off
|
||||
local tag_name="${1}"
|
||||
local build_script_file="build-$(_ci_tag_from_name_to_var "${tag_name}").sh"
|
||||
local build_script=".gitlab-ci/container/${build_script_file}"
|
||||
shift
|
||||
# now $@ has the extra files
|
||||
local calculated_tag=$(_ci_calculate_tag "${build_script}" "$@")
|
||||
|
||||
_ci_tag_check_build "${tag_name}" "${calculated_tag}"
|
||||
_ci_tag_write "${tag_name}" "${calculated_tag}"
|
||||
x_restore
|
||||
}
|
||||
|
||||
ci_tag_test_time_check() {
|
||||
x_off
|
||||
local tag_file=$(get_tag_file "${1}")
|
||||
if [ ! -f "${tag_file}" ]; then
|
||||
_error_msg "Structured tag file ${tag_file} does not exist"
|
||||
_error_msg "Please run the ci_tag_build_time_check first and rebuild the image/rootfs"
|
||||
exit 2
|
||||
fi
|
||||
_ci_tag_check "${1}" "$(cat "${tag_file}")"
|
||||
x_restore
|
||||
}
|
||||
|
||||
# Export all functions
|
||||
export -f _ci_calculate_tag
|
||||
export -f _ci_tag_check
|
||||
export -f _ci_tag_check_build
|
||||
export -f _ci_tag_from_name_to_var
|
||||
export -f _ci_tag_write
|
||||
export -f ci_tag_build_time_check
|
||||
export -f ci_tag_test_time_check
|
||||
export -f get_tag_file
|
||||
|
||||
# Structured tagging ------
|
||||
|
||||
s3_upload() {
|
||||
x_off
|
||||
local file=$1 s3_folder_url=$2
|
||||
if [ ! -f "$file" ] || [[ "$s3_folder_url" != https://*/ ]]
|
||||
then
|
||||
echo "Error: s3_upload incorrect usage."
|
||||
echo "Usage: s3_upload <file> <s3_folder_url>"
|
||||
echo " - <file> must exist."
|
||||
echo " - <s3_folder_url> must start with 'https://' and end with '/'."
|
||||
exit 1
|
||||
fi
|
||||
curl --fail --retry-all-errors --retry 4 --retry-delay 60 \
|
||||
--header "Authorization: Bearer $(cat "${S3_JWT_FILE}")" \
|
||||
-X PUT --form file=@"$file" \
|
||||
"$s3_folder_url"
|
||||
x_restore
|
||||
}
|
||||
export -f s3_upload
|
||||
|
||||
export -f error
|
||||
export -f trap_err
|
||||
|
||||
|
@@ -40,7 +40,7 @@
|
||||
.restricted-rules:
|
||||
rules:
|
||||
# If the triggerer has access to the restricted traces and if it is pre-merge
|
||||
- if: '($GITLAB_USER_LOGIN !~ "/^(robclark|anholt|flto|cwabbott0|Danil|tomeu|okias|gallo|kwg|llanderwelin|zmike|vigneshraman|Valentine|daniels)$/") &&
|
||||
- if: '($GITLAB_USER_LOGIN !~ "/^(robclark|anholt|flto|cwabbott0|Danil|tomeu|okias|gallo|kwg|llanderwelin|zmike|vigneshraman|Valentine)$/") &&
|
||||
($GITLAB_USER_LOGIN != "marge-bot" || $CI_COMMIT_BRANCH)'
|
||||
when: never
|
||||
|
||||
@@ -55,7 +55,7 @@
|
||||
- .gitlab-ci/**/*
|
||||
- include/**/*
|
||||
- meson.build
|
||||
- meson.options
|
||||
- meson_options.txt
|
||||
- build-support/**/*
|
||||
- subprojects/**/*
|
||||
- .gitattributes
|
||||
|
@@ -31,6 +31,8 @@
|
||||
timeout: 10m
|
||||
script:
|
||||
- git diff --color=always --exit-code # Fails if there are diffs
|
||||
tags:
|
||||
- placeholder-job
|
||||
|
||||
rustfmt:
|
||||
extends:
|
||||
@@ -38,45 +40,9 @@ rustfmt:
|
||||
- .lint-rustfmt-rules
|
||||
before_script:
|
||||
- shopt -s globstar
|
||||
- source "$HOME/.cargo/env"
|
||||
- rustfmt --version
|
||||
- rustfmt --verbose src/**/lib.rs
|
||||
|
||||
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:
|
||||
# FIXME: kvm is a hack, should not be needed
|
||||
- $FDO_RUNNER_JOB_PRIORITY_TAG_X86_64_KVM
|
||||
|
||||
yaml-toml-shell-py-test:
|
||||
extends:
|
||||
- .use-debian/x86_64_pyutils
|
||||
@@ -119,6 +85,8 @@ yaml-toml-shell-py-test:
|
||||
when: on_success
|
||||
- changes: *lint_files
|
||||
when: manual
|
||||
tags:
|
||||
- placeholder-job
|
||||
|
||||
.test-gl:
|
||||
extends:
|
||||
@@ -177,10 +145,6 @@ yaml-toml-shell-py-test:
|
||||
paths:
|
||||
- results/
|
||||
|
||||
.test-angle:
|
||||
variables:
|
||||
ANGLE_TAG: ${CONDITIONAL_BUILD_ANGLE_TAG}
|
||||
|
||||
.b2c-vkd3d-proton-test:
|
||||
variables:
|
||||
HWCI_TEST_SCRIPT: install/vkd3d-runner.sh
|
||||
@@ -200,10 +164,10 @@ yaml-toml-shell-py-test:
|
||||
DEVICE_HANGING_TIMEOUT_SEC: 600
|
||||
PIGLIT_REPLAY_EXTRA_ARGS: --db-path ${CI_PROJECT_DIR}/replayer-db/ --minio_bucket=${S3_TRACIE_PUBLIC_BUCKET} --jwt-file=${S3_JWT_FILE}
|
||||
PIGLIT_NO_WINDOW: 1
|
||||
HWCI_TEST_SCRIPT: "/install/piglit/piglit-traces.sh"
|
||||
HWCI_TEST_SCRIPT: "/install/piglit/piglit-runner.sh"
|
||||
script:
|
||||
- section_start variables "Variables passed through:"
|
||||
- install/common/export-gitlab-job-env-for-dut.sh
|
||||
- install/common/generate-env.sh
|
||||
- section_end variables
|
||||
- install/piglit/piglit-traces.sh
|
||||
|
||||
@@ -340,8 +304,7 @@ yaml-toml-shell-py-test:
|
||||
image: registry.freedesktop.org/gfx-ci/ci-tron/mesa-trigger:2024-01-05.1
|
||||
timeout: 1h 40m
|
||||
variables:
|
||||
# No need to pull the whole git repo, the artifacts from python-artifacts
|
||||
# contain everything we need.
|
||||
# No need by default to pull the whole repo
|
||||
GIT_STRATEGY: none
|
||||
# boot2container initrd configuration parameters.
|
||||
B2C_VERSION: v0.9.14
|
||||
@@ -358,29 +321,20 @@ yaml-toml-shell-py-test:
|
||||
B2C_TIMEOUT_OVERALL_MINUTES: 90
|
||||
B2C_TIMEOUT_CONSOLE_ACTIVITY_RETRIES: 0
|
||||
B2C_JOB_VOLUME_EXCLUSIONS: "*.shader_cache,install/*,*/install/*,*/vkd3d-proton.cache*,vkd3d-proton.cache*,*.qpa"
|
||||
B2C_MACHINE_REGISTRATION_IMAGE: "registry.freedesktop.org/gfx-ci/ci-tron/machine-registration:latest"
|
||||
B2C_TELEGRAF_IMAGE: "registry.freedesktop.org/gfx-ci/ci-tron/telegraf:latest"
|
||||
B2C_KERNEL_CMDLINE_EXTRAS: ""
|
||||
|
||||
# As noted in the top description, we make a distinction between the
|
||||
# container used by gitlab-runner to queue the work, and the container
|
||||
# used by the DUTs/test machines. To make this distinction quite clear,
|
||||
# we rename the variable.
|
||||
B2C_IMAGE_UNDER_TEST: "$MESA_IMAGE"
|
||||
|
||||
B2C_INSTALL_TARBALL_URL: "https://${PIPELINE_ARTIFACTS_BASE}/${S3_ARTIFACT_NAME}.tar.zst"
|
||||
B2C_CONTAINER_CMD: "./install/common/init-stage2.sh"
|
||||
# we rename the MESA_IMAGE variable into IMAGE_UNDER_TEST.
|
||||
IMAGE_UNDER_TEST: "$MESA_IMAGE"
|
||||
|
||||
INSTALL_TARBALL_NAME: "install.tar"
|
||||
INSTALL_TARBALL: "./artifacts/${INSTALL_TARBALL_NAME}"
|
||||
CI_B2C_ARTIFACTS: "./artifacts/b2c"
|
||||
CI_COMMON_SCRIPTS: "./artifacts/ci-common"
|
||||
B2C_JOB_TEMPLATE: "${CI_B2C_ARTIFACTS}/b2c.yml.jinja2.jinja2"
|
||||
JOB_FOLDER: "job_folder"
|
||||
|
||||
needs:
|
||||
- job: python-artifacts
|
||||
artifacts: true
|
||||
- !reference [.required-for-hardware-jobs, needs]
|
||||
|
||||
before_script:
|
||||
# We don't want the tarball unpacking of .test, but will take the JWT bits.
|
||||
- !reference [default, before_script]
|
||||
@@ -405,13 +359,11 @@ yaml-toml-shell-py-test:
|
||||
fi
|
||||
fi
|
||||
|
||||
[ -s "$INSTALL_TARBALL" ] || exit 1
|
||||
[ -d "$CI_B2C_ARTIFACTS" ] || exit 1
|
||||
[ -d "$CI_COMMON_SCRIPTS" ] || exit 1
|
||||
|
||||
# Pull all our images through our proxy registry
|
||||
B2C_IMAGE_UNDER_TEST=${B2C_IMAGE_UNDER_TEST//registry.freedesktop.org/{{ fdo_proxy_registry \}\}}
|
||||
B2C_MACHINE_REGISTRATION_IMAGE=${B2C_MACHINE_REGISTRATION_IMAGE//registry.freedesktop.org/{{ fdo_proxy_registry \}\}}
|
||||
B2C_TELEGRAF_IMAGE=${B2C_TELEGRAF_IMAGE//registry.freedesktop.org/{{ fdo_proxy_registry \}\}}
|
||||
export B2C_CONTAINER_CMD="bash -euc 'tar xf ${INSTALL_TARBALL_NAME}; ./install/common/init-stage2.sh'"
|
||||
|
||||
# The Valve CI gateway receives jobs in a YAML format. Create a
|
||||
# job description from the CI environment.
|
||||
@@ -425,12 +377,15 @@ yaml-toml-shell-py-test:
|
||||
# Create a script to regenerate the CI environment when this job
|
||||
# begins running on the remote DUT.
|
||||
set +x
|
||||
"$CI_COMMON_SCRIPTS"/export-gitlab-job-env-for-dut.sh > ${JOB_FOLDER}/set-job-env-vars.sh
|
||||
"$CI_COMMON_SCRIPTS"/generate-env.sh > ${JOB_FOLDER}/set-job-env-vars.sh
|
||||
echo "export SCRIPTS_DIR=./install" >> ${JOB_FOLDER}/set-job-env-vars.sh
|
||||
echo "Variables passed through:"
|
||||
cat ${JOB_FOLDER}/set-job-env-vars.sh
|
||||
set -x
|
||||
|
||||
# Copy the mesa install tarball to the job folder, for later extraction
|
||||
mv "${INSTALL_TARBALL}" "${JOB_FOLDER}"
|
||||
|
||||
script: |
|
||||
slugify () {
|
||||
echo "$1" | sed -r s/[~\^]+//g | sed -r s/[^a-zA-Z0-9]+/-/g | sed -r s/^-+\|-+$//g | tr A-Z a-z
|
||||
@@ -438,24 +393,19 @@ yaml-toml-shell-py-test:
|
||||
|
||||
# Submit the job to Valve's CI gateway service with the CI
|
||||
# provisioned job_folder.
|
||||
PYTHONUNBUFFERED=1 \
|
||||
executorctl run \
|
||||
--machine-id "$CI_RUNNER_DESCRIPTION" \
|
||||
--job-id $(slugify "$CI_JOB_NAME") \
|
||||
--share-directory "$JOB_FOLDER" \
|
||||
--wait \
|
||||
b2c.yml.jinja2
|
||||
env PYTHONUNBUFFERED=1 executorctl \
|
||||
run -w b2c.yml.jinja2 -j $(slugify "$CI_JOB_NAME") -s ${JOB_FOLDER} -i "$CI_RUNNER_DESCRIPTION"
|
||||
|
||||
# Anything our job places in results/ will be collected by the
|
||||
# Gitlab coordinator for status presentation. results/junit.xml
|
||||
# will be parsed by the UI for more detailed explanations of
|
||||
# test execution.
|
||||
after_script:
|
||||
# Keep the results path the same as baremetal and LAVA
|
||||
- mkdir -p "${JOB_FOLDER}"/results
|
||||
- mv "${JOB_FOLDER}"/results ./
|
||||
- !reference [default, after_script]
|
||||
|
||||
# Anything our job places in results/ will be collected by the
|
||||
# Gitlab coordinator for status presentation. results/junit.xml
|
||||
# will be parsed by the UI for more detailed explanations of
|
||||
# test execution.
|
||||
artifacts:
|
||||
when: always
|
||||
name: "${CI_PROJECT_NAME}_${CI_JOB_NAME}"
|
||||
@@ -470,18 +420,15 @@ yaml-toml-shell-py-test:
|
||||
variables:
|
||||
B2C_KERNEL_URL: 'https://gitlab.freedesktop.org/gfx-ci/ci-tron/-/package_files/519/download' # Linux 6.1
|
||||
B2C_INITRAMFS_URL: 'https://gitlab.freedesktop.org/gfx-ci/boot2container/-/releases/${B2C_VERSION}/downloads/initramfs.linux_amd64.cpio.xz'
|
||||
S3_ARTIFACT_NAME: "mesa-x86_64-default-debugoptimized"
|
||||
|
||||
.b2c-x86_64-test-vk:
|
||||
extends:
|
||||
- .use-debian/x86_64_test-vk
|
||||
- .b2c-x86_64-test
|
||||
needs:
|
||||
- job: debian/x86_64_test-vk
|
||||
artifacts: false
|
||||
- job: debian-testing
|
||||
artifacts: false
|
||||
- !reference [.b2c-test, needs]
|
||||
- debian/x86_64_test-vk
|
||||
- debian-testing
|
||||
- !reference [.required-for-hardware-jobs, needs]
|
||||
|
||||
.b2c-x86_64-test-vk-manual:
|
||||
extends:
|
||||
@@ -490,22 +437,18 @@ yaml-toml-shell-py-test:
|
||||
variables:
|
||||
S3_ARTIFACT_NAME: "debian-build-testing"
|
||||
needs:
|
||||
- job: debian/x86_64_test-vk
|
||||
artifacts: false
|
||||
- job: debian-build-testing
|
||||
artifacts: false
|
||||
- !reference [.b2c-test, needs]
|
||||
- debian/x86_64_test-vk
|
||||
- debian-build-testing
|
||||
- !reference [.required-for-hardware-jobs, needs]
|
||||
|
||||
.b2c-x86_64-test-gl:
|
||||
extends:
|
||||
- .use-debian/x86_64_test-gl
|
||||
- .b2c-x86_64-test
|
||||
needs:
|
||||
- job: debian/x86_64_test-gl
|
||||
artifacts: false
|
||||
- job: debian-testing
|
||||
artifacts: false
|
||||
- !reference [.b2c-test, needs]
|
||||
- debian/x86_64_test-gl
|
||||
- debian-testing
|
||||
- !reference [.required-for-hardware-jobs, needs]
|
||||
|
||||
.b2c-x86_64-test-gl-manual:
|
||||
extends:
|
||||
@@ -514,11 +457,9 @@ yaml-toml-shell-py-test:
|
||||
variables:
|
||||
S3_ARTIFACT_NAME: "debian-build-testing"
|
||||
needs:
|
||||
- job: debian/x86_64_test-gl
|
||||
artifacts: false
|
||||
- job: debian-build-testing
|
||||
artifacts: false
|
||||
- !reference [.b2c-test, needs]
|
||||
- debian/x86_64_test-gl
|
||||
- debian-build-testing
|
||||
- !reference [.required-for-hardware-jobs, needs]
|
||||
|
||||
.b2c-arm64-test:
|
||||
extends:
|
||||
@@ -526,70 +467,21 @@ yaml-toml-shell-py-test:
|
||||
variables:
|
||||
B2C_INITRAMFS_URL: 'https://gitlab.freedesktop.org/gfx-ci/boot2container/-/releases/${B2C_VERSION}/downloads/initramfs.linux_arm64.cpio.xz'
|
||||
B2C_KERNEL_URL: 'https://gitlab.freedesktop.org/gfx-ci/boot2container/-/releases/${B2C_VERSION}/downloads/linux-arm64'
|
||||
S3_ARTIFACT_NAME: "mesa-arm64-default-debugoptimized"
|
||||
|
||||
.b2c-arm64-test-vk:
|
||||
extends:
|
||||
- .use-debian/arm64_test-vk
|
||||
- .b2c-arm64-test
|
||||
needs:
|
||||
- job: debian/arm64_test-vk
|
||||
artifacts: false
|
||||
- job: debian-arm64
|
||||
artifacts: false
|
||||
- !reference [.b2c-test, needs]
|
||||
- debian/arm64_test-vk
|
||||
- debian-arm64
|
||||
- !reference [.required-for-hardware-jobs, needs]
|
||||
|
||||
.b2c-arm64-test-gl:
|
||||
extends:
|
||||
- .use-debian/arm64_test-gl
|
||||
- .b2c-arm64-test
|
||||
needs:
|
||||
- job: debian/arm64_test-gl
|
||||
artifacts: false
|
||||
- job: debian-arm64
|
||||
artifacts: false
|
||||
- !reference [.b2c-test, needs]
|
||||
|
||||
.b2c-arm32-test:
|
||||
extends:
|
||||
- .b2c-test
|
||||
variables:
|
||||
B2C_INITRAMFS_URL: 'https://gitlab.freedesktop.org/gfx-ci/boot2container/-/releases/${B2C_VERSION}/downloads/initramfs.linux_arm.cpio.xz'
|
||||
B2C_KERNEL_URL: 'https://gitlab.freedesktop.org/gfx-ci/boot2container/-/releases/${B2C_VERSION}/downloads/linux-arm'
|
||||
S3_ARTIFACT_NAME: "mesa-arm32-default-debugoptimized"
|
||||
|
||||
.b2c-arm32-test-vk:
|
||||
extends:
|
||||
- .use-debian/arm32_test-vk
|
||||
- .b2c-arm32-test
|
||||
needs:
|
||||
- job: debian/arm32_test-vk
|
||||
artifacts: false
|
||||
- job: debian-arm32
|
||||
artifacts: false
|
||||
- !reference [.b2c-test, needs]
|
||||
|
||||
.b2c-arm32-test-gl:
|
||||
extends:
|
||||
- .use-debian/arm32_test-gl
|
||||
- .b2c-arm32-test
|
||||
needs:
|
||||
- job: debian/arm32_test-gl
|
||||
artifacts: false
|
||||
- job: debian-arm32
|
||||
artifacts: false
|
||||
- !reference [.b2c-test, needs]
|
||||
|
||||
.b2c-arm32-test-asan-gl:
|
||||
extends:
|
||||
- .use-debian/arm32_test-gl
|
||||
- .b2c-arm32-test
|
||||
variables:
|
||||
S3_ARTIFACT_NAME: "mesa-arm32-asan-debugoptimized"
|
||||
DEQP_FORCE_ASAN: 1
|
||||
needs:
|
||||
- job: debian/arm32_test-gl
|
||||
artifacts: false
|
||||
- job: debian-arm32-asan
|
||||
artifacts: false
|
||||
- !reference [.b2c-test, needs]
|
||||
- debian/arm64_test-gl
|
||||
- debian-arm64
|
||||
- !reference [.required-for-hardware-jobs, needs]
|
||||
|
@@ -4,9 +4,12 @@ from unittest.mock import MagicMock, patch
|
||||
import pytest
|
||||
import yaml
|
||||
from freezegun import freeze_time
|
||||
from hypothesis import settings
|
||||
|
||||
from .lava.helpers import generate_testsuite_result, jobs_logs_response
|
||||
|
||||
settings.register_profile("ci", max_examples=1000, derandomize=True)
|
||||
settings.load_profile("ci")
|
||||
|
||||
def pytest_configure(config):
|
||||
config.addinivalue_line(
|
||||
|
@@ -11,11 +11,13 @@ timeouts:
|
||||
minutes: 10
|
||||
actions:
|
||||
depthcharge-retry:
|
||||
minutes: 6
|
||||
minutes: 4
|
||||
depthcharge-start:
|
||||
minutes: 1
|
||||
depthcharge-action:
|
||||
minutes: 5
|
||||
minutes: 15
|
||||
uboot-action:
|
||||
seconds: 200
|
||||
minutes: 5
|
||||
actions:
|
||||
- deploy:
|
||||
timeout:
|
||||
@@ -56,13 +58,13 @@ actions:
|
||||
boot:
|
||||
url: downloads://boot.img
|
||||
namespace: dut
|
||||
failure_retry: 2
|
||||
failure_retry: 3
|
||||
- boot:
|
||||
timeout:
|
||||
minutes: 2
|
||||
docker:
|
||||
image: registry.gitlab.collabora.com/lava/health-check-docker
|
||||
failure_retry: 2
|
||||
failure_retry: 3
|
||||
method: fastboot
|
||||
prompts:
|
||||
- 'lava-shell:'
|
||||
|
@@ -11,11 +11,13 @@ timeouts:
|
||||
minutes: 10
|
||||
actions:
|
||||
depthcharge-retry:
|
||||
minutes: 6
|
||||
minutes: 4
|
||||
depthcharge-start:
|
||||
minutes: 1
|
||||
depthcharge-action:
|
||||
minutes: 5
|
||||
minutes: 15
|
||||
uboot-action:
|
||||
seconds: 200
|
||||
minutes: 5
|
||||
actions:
|
||||
- deploy:
|
||||
timeout:
|
||||
@@ -58,7 +60,7 @@ actions:
|
||||
minutes: 2
|
||||
docker:
|
||||
image: registry.gitlab.collabora.com/lava/health-check-docker
|
||||
failure_retry: 2
|
||||
failure_retry: 3
|
||||
method: fastboot
|
||||
prompts:
|
||||
- 'lava-shell:'
|
||||
|
@@ -11,11 +11,13 @@ timeouts:
|
||||
minutes: 10
|
||||
actions:
|
||||
depthcharge-retry:
|
||||
minutes: 6
|
||||
minutes: 4
|
||||
depthcharge-start:
|
||||
minutes: 1
|
||||
depthcharge-action:
|
||||
minutes: 5
|
||||
minutes: 15
|
||||
uboot-action:
|
||||
seconds: 200
|
||||
minutes: 5
|
||||
actions:
|
||||
- deploy:
|
||||
timeout:
|
||||
@@ -32,9 +34,9 @@ actions:
|
||||
dtb:
|
||||
url: None/my_dtb_filename.dtb
|
||||
namespace: dut
|
||||
failure_retry: 2
|
||||
failure_retry: 3
|
||||
- boot:
|
||||
failure_retry: 2
|
||||
failure_retry: 3
|
||||
method: u-boot
|
||||
prompts:
|
||||
- 'lava-shell:'
|
||||
|
@@ -11,11 +11,13 @@ timeouts:
|
||||
minutes: 10
|
||||
actions:
|
||||
depthcharge-retry:
|
||||
minutes: 6
|
||||
minutes: 4
|
||||
depthcharge-start:
|
||||
minutes: 1
|
||||
depthcharge-action:
|
||||
minutes: 5
|
||||
minutes: 15
|
||||
uboot-action:
|
||||
seconds: 200
|
||||
minutes: 5
|
||||
actions:
|
||||
- deploy:
|
||||
timeout:
|
||||
@@ -32,7 +34,7 @@ actions:
|
||||
dtb:
|
||||
url: None/my_dtb_filename.dtb
|
||||
- boot:
|
||||
failure_retry: 2
|
||||
failure_retry: 3
|
||||
method: u-boot
|
||||
prompts:
|
||||
- 'lava-shell:'
|
||||
|
@@ -1,6 +1,41 @@
|
||||
from lava.utils.lava_farm import get_lava_farm
|
||||
import re
|
||||
|
||||
import pytest
|
||||
from hypothesis import given
|
||||
from hypothesis import strategies as st
|
||||
from lava.utils.lava_farm import LAVA_FARM_RUNNER_PATTERNS, LavaFarm, get_lava_farm
|
||||
|
||||
|
||||
@given(
|
||||
runner_tag=st.text(
|
||||
alphabet=st.characters(
|
||||
min_codepoint=1, max_codepoint=127, blacklist_categories=("C",)
|
||||
),
|
||||
min_size=1,
|
||||
)
|
||||
)
|
||||
def test_get_lava_farm_invalid_tags(runner_tag):
|
||||
with pytest.MonkeyPatch().context() as mp:
|
||||
mp.setenv("RUNNER_TAG", runner_tag)
|
||||
assert get_lava_farm() == LavaFarm.UNKNOWN
|
||||
|
||||
|
||||
def test_get_lava_farm_no_tag(monkeypatch):
|
||||
monkeypatch.delenv("FARM", raising=False)
|
||||
assert get_lava_farm() == "unknown"
|
||||
monkeypatch.delenv("RUNNER_TAG", raising=False)
|
||||
assert get_lava_farm() == LavaFarm.UNKNOWN
|
||||
|
||||
|
||||
@given(
|
||||
st.fixed_dictionaries(
|
||||
{k: st.from_regex(v) for k, v in LAVA_FARM_RUNNER_PATTERNS.items()}
|
||||
)
|
||||
)
|
||||
def test_get_lava_farm_valid_tags(runner_farm_tag: dict):
|
||||
with pytest.MonkeyPatch().context() as mp:
|
||||
for farm, tag in runner_farm_tag.items():
|
||||
try:
|
||||
mp.setenv("RUNNER_TAG", tag)
|
||||
except ValueError:
|
||||
# hypothesis may generate null bytes in the string
|
||||
continue
|
||||
assert get_lava_farm() == farm
|
||||
|
@@ -83,7 +83,7 @@ def clear_env_vars(autouse=True):
|
||||
@pytest.fixture
|
||||
def mock_collabora_farm(clear_env_vars, monkeypatch):
|
||||
# Mock a Collabora farm-like device runner tag to enable SSH execution
|
||||
monkeypatch.setenv("FARM", "collabora")
|
||||
monkeypatch.setenv("RUNNER_TAG", "mesa-ci-1234-lava-collabora")
|
||||
|
||||
|
||||
@pytest.mark.parametrize("force_uart", [True, False], ids=["SSH", "UART"])
|
||||
|
@@ -48,9 +48,10 @@ meson setup `
|
||||
-Dllvm=enabled `
|
||||
-Dshared-llvm=disabled `
|
||||
-Dvulkan-drivers="swrast,amd,microsoft-experimental" `
|
||||
-Dgallium-drivers="llvmpipe,softpipe,d3d12,zink" `
|
||||
-Dgallium-drivers="swrast,d3d12,zink" `
|
||||
-Dgallium-va=enabled `
|
||||
-Dvideo-codecs="all" `
|
||||
-Dshared-glapi=enabled `
|
||||
-Dgles1=enabled `
|
||||
-Dgles2=enabled `
|
||||
-Dgallium-opencl=icd `
|
||||
|
@@ -57,7 +57,7 @@ if (!$buildstatus) {
|
||||
|
||||
Get-Date
|
||||
Write-Host "Cloning LLVM release/15.x"
|
||||
git clone -b llvmorg-19.1.6 --depth=1 https://github.com/llvm/llvm-project deps/llvm-project
|
||||
git clone -b release/15.x --depth=1 https://github.com/llvm/llvm-project deps/llvm-project
|
||||
if (!$?) {
|
||||
Write-Host "Failed to clone LLVM repository"
|
||||
Exit 1
|
||||
@@ -65,7 +65,7 @@ if (!$?) {
|
||||
|
||||
Get-Date
|
||||
Write-Host "Cloning SPIRV-LLVM-Translator"
|
||||
git clone -b v19.1.3 https://github.com/KhronosGroup/SPIRV-LLVM-Translator deps/llvm-project/llvm/projects/SPIRV-LLVM-Translator
|
||||
git clone -b llvm_release_150 https://github.com/KhronosGroup/SPIRV-LLVM-Translator deps/llvm-project/llvm/projects/SPIRV-LLVM-Translator
|
||||
if (!$?) {
|
||||
Write-Host "Failed to clone SPIRV-LLVM-Translator repository"
|
||||
Exit 1
|
||||
@@ -79,7 +79,7 @@ Write-Host "Compiling LLVM and Clang"
|
||||
cmake ../llvm `
|
||||
-GNinja `
|
||||
-DCMAKE_BUILD_TYPE=Release `
|
||||
-DCMAKE_MSVC_RUNTIME_LIBRARY=MultiThreaded `
|
||||
-DLLVM_USE_CRT_RELEASE=MT `
|
||||
-DCMAKE_PREFIX_PATH="$depsInstallPath" `
|
||||
-DCMAKE_INSTALL_PREFIX="$depsInstallPath" `
|
||||
-DLLVM_ENABLE_PROJECTS="clang" `
|
||||
|
@@ -63,8 +63,6 @@ Update-SessionEnvironment
|
||||
|
||||
Start-Process -NoNewWindow -Wait git -ArgumentList 'config --global core.autocrlf false'
|
||||
|
||||
New-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Control\FileSystem" -Name "LongPathsEnabled" -Value 1 -PropertyType DWORD -Force
|
||||
|
||||
Write-Host "Upgrading pip at:"
|
||||
Get-Date
|
||||
python -m pip install --upgrade pip --progress-bar off
|
||||
|
@@ -2,7 +2,7 @@
|
||||
# Touch this file needs update both WINDOWS_X64_BUILD_TAG WINDOWS_X64_TEST_TAG
|
||||
# This file needs run in administrator mode
|
||||
|
||||
$env:VULKAN_SDK_VERSION="1.4.304.0"
|
||||
$env:VULKAN_SDK_VERSION="1.3.275.0"
|
||||
|
||||
$ProgressPreference = "SilentlyContinue"
|
||||
|
||||
@@ -22,5 +22,18 @@ if (!$?) {
|
||||
}
|
||||
Remove-Item "${env:TMP}\vulkan_sdk.exe" -Force
|
||||
|
||||
$VULKAN_RUNTIME_URL="https://sdk.lunarg.com/sdk/download/$env:VULKAN_SDK_VERSION/windows/VulkanRT-$env:VULKAN_SDK_VERSION-Installer.exe"
|
||||
Write-Host "Downloading Vulkan-Runtime $VULKAN_RUNTIME_URL at:"
|
||||
Get-Date
|
||||
Invoke-WebRequest -Uri "$VULKAN_RUNTIME_URL" -OutFile "${env:TMP}\vulkan-runtime.exe" | Out-Null
|
||||
Write-Host "Installing Vulkan-Runtime at:"
|
||||
Get-Date
|
||||
Start-Process -NoNewWindow -Wait "${env:TMP}\vulkan-runtime.exe" -ArgumentList '/S'
|
||||
if (!$?) {
|
||||
Write-Host "Failed to install Vulkan-Runtime"
|
||||
Exit 1
|
||||
}
|
||||
Remove-Item "${env:TMP}\vulkan-runtime.exe" -Force
|
||||
|
||||
Write-Host "Installing Vulkan-Runtime finished at:"
|
||||
Get-Date
|
||||
|
@@ -3,6 +3,7 @@ $env:PIGLIT_SPIRV_AS_BINARY = "C:\VulkanSDK\$env:VULKAN_SDK_VERSION\Bin\spirv-as
|
||||
|
||||
Copy-Item -Path _install\bin\opengl32.dll -Destination C:\Piglit\bin\opengl32.dll
|
||||
Copy-Item -Path _install\bin\libgallium_wgl.dll -Destination C:\Piglit\bin\libgallium_wgl.dll
|
||||
Copy-Item -Path _install\bin\libglapi.dll -Destination C:\Piglit\bin\libglapi.dll
|
||||
|
||||
$jobs = ""
|
||||
if ($null -ne $env:FDO_CI_CONCURRENT) {
|
||||
|
19
.gitlab-ci/x11-skips.txt
Normal file
19
.gitlab-ci/x11-skips.txt
Normal file
@@ -0,0 +1,19 @@
|
||||
# These tests all read from the front buffer after a swap. Given that we
|
||||
# run piglit tests in parallel in Mesa CI, and don't have a compositor
|
||||
# running, the frontbuffer reads may end up with undefined results from
|
||||
# windows overlapping us.
|
||||
#
|
||||
# Piglit does mark these tests as not to be run in parallel, but deqp-runner
|
||||
# doesn't respect that. We need to extend deqp-runner to allow some tests to be
|
||||
# marked as single-threaded and run after the rayon loop if we want to support
|
||||
# them.
|
||||
#
|
||||
# Other front-buffer access tests like fbo-sys-blit, fbo-sys-sub-blit, or
|
||||
# fcc-front-buffer-distraction don't appear here, because the DRI3 fake-front
|
||||
# handling should be holding the pixels drawn by the test even if we happen to fail
|
||||
# GL's window system pixel occlusion test.
|
||||
#
|
||||
# Note that glx skips don't appear here, they're in all-skips.txt (in case someone
|
||||
# sets PIGLIT_PLATFORM=gbm to mostly use gbm, but still has an X server running).
|
||||
spec@!opengl 1.0@gl-1.0-swapbuffers-behavior
|
||||
spec@!opengl 1.1@read-front
|
@@ -2,7 +2,7 @@
|
||||
- Check if a new version of Mesa is available which might have fixed the problem.
|
||||
- If you can, check if the latest development version (git main) works better.
|
||||
- Check if your bug has already been reported here.
|
||||
- For any logs, backtraces, etc - use [code blocks](https://docs.gitlab.com/user/markdown/#code-spans-and-blocks), GitLab removes line breaks without this.
|
||||
- For any logs, backtraces, etc - use [code blocks](https://docs.gitlab.com/ee/user/markdown.html#code-spans-and-blocks), GitLab removes line breaks without this.
|
||||
- Do not paste long logs directly into the description. Use https://gitlab.freedesktop.org/-/snippets/new, attachments, or a pastebin with a long expiration instead.
|
||||
- As examples of good bug reports you may review one of these - #2598, #2615, #2608
|
||||
|
||||
@@ -44,7 +44,7 @@ Example:
|
||||
|
||||
### System information
|
||||
|
||||
Please post `inxi -GSC -xx` output ([fenced with triple backticks](https://docs.gitlab.com/user/markdown/#code-spans-and-blocks)) OR fill information below manually
|
||||
Please post `inxi -GSC -xx` output ([fenced with triple backticks](https://docs.gitlab.com/ee/user/markdown.html#code-spans-and-blocks)) OR fill information below manually
|
||||
|
||||
|
||||
- OS: (`cat /etc/os-release | grep "NAME"`)
|
||||
|
@@ -2,7 +2,7 @@
|
||||
- Check if a new version of Mesa is available which might have fixed the problem.
|
||||
- If you can, check if the latest development version (git main) works better.
|
||||
- Check if your bug has already been reported here.
|
||||
- For any logs, backtraces, etc - use [code blocks](https://docs.gitlab.com/user/markdown/#code-spans-and-blocks), GitLab removes line breaks without this.
|
||||
- For any logs, backtraces, etc - use [code blocks](https://docs.gitlab.com/ee/user/markdown.html#code-spans-and-blocks), GitLab removes line breaks without this.
|
||||
- Do not paste long logs directly into the description. Use https://gitlab.freedesktop.org/-/snippets/new, attachments, or a pastebin with a long expiration instead.
|
||||
- As examples of good bug reports you may review one of these - #2598, #2615, #2608
|
||||
|
||||
@@ -16,7 +16,7 @@ The title should effectively distinguish this bug report from others and be spec
|
||||
|
||||
### System information
|
||||
|
||||
Please post `inxi -GSC -xx` output ([fenced with triple backticks](https://docs.gitlab.com/user/markdown/#code-spans-and-blocks)) OR fill information below manually
|
||||
Please post `inxi -GSC -xx` output ([fenced with triple backticks](https://docs.gitlab.com/ee/user/markdown.html#code-spans-and-blocks)) OR fill information below manually
|
||||
|
||||
|
||||
- OS: (`cat /etc/os-release | grep "NAME"`)
|
||||
|
2
.mailmap
2
.mailmap
@@ -501,8 +501,6 @@ Mike Stroyan <mike@lunarg.com> <mike@LunarG.com>
|
||||
|
||||
Mun Gwan-gyeong <elongbug@gmail.com> Gwan-gyeong Mun <elongbug@gmail.com>
|
||||
|
||||
Natalie Vock <natalie.vock@gmx.de> <friedrich.vock@gmx.de>
|
||||
|
||||
Neha Bhende <bhenden@vmware.com> <nbhende@vmware.com>
|
||||
|
||||
Neil Roberts <nroberts@igalia.com> <neil@linux.intel.com>
|
||||
|
@@ -140,7 +140,7 @@ merge_requests:
|
||||
'^include/drm-uapi/i915_drm.h': ['intel']
|
||||
'^include/drm-uapi/xe_drm.h': ['intel']
|
||||
'^include/vulkan/': ['vulkan']
|
||||
'^meson.options': ['meson']
|
||||
'^meson_options.txt': ['meson']
|
||||
'^README.rst': ['docs']
|
||||
'^src/amd/addrlib/': ['AMD common']
|
||||
'^src/amd/common/': ['AMD common']
|
||||
|
16162
.pick_status.json
Normal file
16162
.pick_status.json
Normal file
File diff suppressed because it is too large
Load Diff
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user