new file mode 100755
@@ -0,0 +1,18 @@
+#!/bin/bash
+
+set -ex
+
+pkg_source="$1"
+camera_id="$2"
+
+trap 'rm -rf /tmp/libcamera.deb' EXIT
+curl --retry 3 -f -o /tmp/libcamera.deb -- "$pkg_source"
+dpkg -i /tmp/libcamera.deb
+rm -rf /tmp/libcamera.deb
+
+env \
+ LIBCAMERA_LOG_COLOR=no \
+ GTEST_COLOR=no \
+ ASAN_OPTIONS=halt_on_error=1:abort_on_error=1:print_summary=1 \
+ UBSAN_OPTIONS=halt_on_error=1:abort_on_error=1:print_summary=1:print_stacktrace=1 \
+ lc-compliance -c "$camera_id"
new file mode 100644
@@ -0,0 +1,40 @@
+device_type: debix-a
+job_name: debix-a lc-compliance test
+
+timeouts:
+ job:
+ minutes: 30
+ action:
+ minutes: 5
+ connection:
+ minutes: 6
+priority: medium
+visibility: public
+
+actions:
+- boot:
+ method: minimal
+ timeout:
+ minutes: 6
+ auto_login:
+ login_prompt: 'boot2container login:'
+ username: "root"
+ password_prompt: "Password:"
+ password: "root"
+ prompts: [":~#"]
+- test:
+ interactive:
+ - name: lc-compliance
+ prompts: [":~#"]
+ echo: discard
+ script:
+ - command: >-
+ /opt/test-libcamera.sh
+ "{{ job.LIBCAMERA_DEB_URL }}"
+ /base/soc@0/bus@30800000/i2c@30a30000/camera@10
+ && echo "lc-compliance test passed"
+ || echo "lc-compliance test failed"
+ successes:
+ - message: "lc-compliance test passed"
+ failures:
+ - message: "lc-compliance test failed"
@@ -76,7 +76,7 @@ include:
.debian-cross-build:
variables:
CROSS_BUILD_DISTRIBUTION_VERSION: 'trixie'
- CROSS_BUILD_TAG: '2026-01-09.0'
+ CROSS_BUILD_TAG: '2026-01-12.0'
CROSS_BUILD_IMAGE: 'on-device-testing/debian-rootfs'
.debian-cross-build-architectures:
@@ -452,12 +452,15 @@ build-debian-cross:
--name libcamera
--description "$CI_COMMIT_SHA (job $CI_JOB_ID, pipeline $CI_PIPELINE_ID, project $CI_PROJECT_PATH)"
--version "0.0.0"
+ - echo "LIBCAMERA_DEB_URL=$CI_API_V4_URL/projects/$CI_PROJECT_ID/jobs/$CI_JOB_ID/artifacts/libcamera.deb" >> env
artifacts:
expire_in: 1w
paths:
- build/meson-logs/
- build/build.ninja
- "*.deb"
+ reports:
+ dotenv: env
build-debian-rootfs:
extends:
@@ -478,6 +481,25 @@ build-debian-rootfs:
"$ARCH"
"$CROSS_BUILD_IMAGE"
"$CROSS_BUILD_TAG-$ARCH"
+ $CI_PROJECT_DIR/.gitlab-ci/debian-rootfs-overlay
+
+lava-jobs-as-artifacts:
+ extends:
+ - .fdo.distribution-image@debian
+ - .container-build-debian-rootfs
+ - .libcamera-ci.scripts
+ stage: build
+ needs:
+ - job: container-build-debian-rootfs
+ artifacts: false
+ variables:
+ GIT_STRATEGY: none
+ script:
+ - echo "saving lava job definitions as artifacts for lava-gitlab-runner"
+ artifacts:
+ expire_in: 1w
+ paths:
+ - $CI_PROJECT_DIR/.gitlab-ci/on-device-testing/lava-*
# ------------------------------------------------------------------------------
# Lint stage - Run checkstyle.py and check merge suitability
@@ -581,3 +603,18 @@ test-lc-compliance:virtual:
artifacts:
reports:
junit: build/lc-compliance-report.xml
+
+test-lc-compliance:rkisp1:debix-a:
+ stage: test
+ needs:
+ - job: lava-jobs-as-artifacts
+ artifacts: true
+ - job: build-debian-cross
+ artifacts: true
+ parallel:
+ matrix:
+ - ARCH: ["arm64"]
+ tags:
+ - libcamera-lava
+ script:
+ - submit .gitlab-ci/on-device-testing/lava-debix-a.yml
Add a job that runs lc-compliance via lava on real hardware. Signed-off-by: Barnabás Pőcze <barnabas.pocze@ideasonboard.com> --- .../opt/test-libcamera.sh | 18 +++++++++ .gitlab-ci/on-device-testing/lava-debix-a.yml | 40 +++++++++++++++++++ gitlab-ci.yml | 39 +++++++++++++++++- 3 files changed, 96 insertions(+), 1 deletion(-) create mode 100755 .gitlab-ci/debian-rootfs-overlay/opt/test-libcamera.sh create mode 100644 .gitlab-ci/on-device-testing/lava-debix-a.yml -- 2.52.0