From patchwork Mon Jan 19 10:20:38 2026 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: =?utf-8?q?Barnab=C3=A1s_P=C5=91cze?= X-Patchwork-Id: 25843 Return-Path: X-Original-To: parsemail@patchwork.libcamera.org Delivered-To: parsemail@patchwork.libcamera.org Received: from lancelot.ideasonboard.com (lancelot.ideasonboard.com [92.243.16.209]) by patchwork.libcamera.org (Postfix) with ESMTPS id 24187C32E7 for ; Mon, 19 Jan 2026 10:20:52 +0000 (UTC) Received: from lancelot.ideasonboard.com (localhost [IPv6:::1]) by lancelot.ideasonboard.com (Postfix) with ESMTP id E5C9761FC4; Mon, 19 Jan 2026 11:20:49 +0100 (CET) Authentication-Results: lancelot.ideasonboard.com; dkim=pass (1024-bit key; unprotected) header.d=ideasonboard.com header.i=@ideasonboard.com header.b="Hjyd1aMj"; dkim-atps=neutral Received: from perceval.ideasonboard.com (perceval.ideasonboard.com [213.167.242.64]) by lancelot.ideasonboard.com (Postfix) with ESMTPS id 48EBA61FBF for ; Mon, 19 Jan 2026 11:20:44 +0100 (CET) Received: from pb-laptop.local (185.221.143.114.nat.pool.zt.hu [185.221.143.114]) by perceval.ideasonboard.com (Postfix) with ESMTPSA id 105EB2D9 for ; Mon, 19 Jan 2026 11:20:14 +0100 (CET) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=ideasonboard.com; s=mail; t=1768818014; bh=Nw+F3Q+/BSe/nbe4wHSXMSFKbRnDFnWgAsga1PZvnIo=; h=From:To:Subject:Date:In-Reply-To:References:From; b=Hjyd1aMjSEnllAy/gUUFWHbLDhtN8iL4wLcn9te7NjaY4dPxzY2DizD47eO/BSrX/ Rw6+w8K+rya/744BNk8sbEoVIJlqJZaafpXfUlwtx+5MUDH7ZVwI3eY6JyuxokuyY9 yLuSuQxSsvAUvP3iF0xyC/myQNaKdli0s7fuFvRE= From: =?utf-8?q?Barnab=C3=A1s_P=C5=91cze?= To: libcamera-devel@lists.libcamera.org Subject: [libcamera-ci] [RFC PATCH v1 4/5] Add job to run lc-compliance via lava Date: Mon, 19 Jan 2026 11:20:38 +0100 Message-ID: <20260119102039.3521673-5-barnabas.pocze@ideasonboard.com> X-Mailer: git-send-email 2.52.0 In-Reply-To: <20260119102039.3521673-1-barnabas.pocze@ideasonboard.com> References: <20260119102039.3521673-1-barnabas.pocze@ideasonboard.com> MIME-Version: 1.0 X-BeenThere: libcamera-devel@lists.libcamera.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: libcamera-devel-bounces@lists.libcamera.org Sender: "libcamera-devel" Add a job that runs lc-compliance via lava on real hardware. Signed-off-by: Barnabás Pőcze --- .../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 diff --git a/.gitlab-ci/debian-rootfs-overlay/opt/test-libcamera.sh b/.gitlab-ci/debian-rootfs-overlay/opt/test-libcamera.sh new file mode 100755 index 0000000..85574f1 --- /dev/null +++ b/.gitlab-ci/debian-rootfs-overlay/opt/test-libcamera.sh @@ -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" diff --git a/.gitlab-ci/on-device-testing/lava-debix-a.yml b/.gitlab-ci/on-device-testing/lava-debix-a.yml new file mode 100644 index 0000000..4a9b9b6 --- /dev/null +++ b/.gitlab-ci/on-device-testing/lava-debix-a.yml @@ -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" diff --git a/gitlab-ci.yml b/gitlab-ci.yml index 36032e3..8f670f7 100644 --- a/gitlab-ci.yml +++ b/gitlab-ci.yml @@ -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