new file mode 100755
@@ -0,0 +1,40 @@
+#!/bin/bash
+
+# SPDX-License-Identifier: GPL-2.0-or-later
+# SPDX-FileCopyrightText: © 2024 Google Inc.
+
+set -e
+
+source "$(dirname "$0")/lib.sh"
+
+libcamera_compliance() {
+ echo "Running libcamera compliance tests in a qemu VM"
+
+ virtme-ng \
+ --verbose \
+ --skip-modules \
+ --force-9p \
+ --rwdir "$PWD/build" \
+ --run /opt/linux/bzImage \
+ --exec " \
+ set -x; \
+ mv /usr/local/share/libcamera/pipeline/virtual/virtual.yaml.example \
+ /usr/local/share/libcamera/pipeline/virtual/virtual.yaml; \
+ LIBCAMERA_LOG_LEVELS=*:DEBUG \
+ 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 \
+ GTEST_OUTPUT=xml:./build/lc-compliance-report.xml \
+ lc-compliance -c Virtual0; \
+ echo \\\$? > ./build/.test-status; \
+ "
+
+ local status=$(cat build/.test-status)
+ echo "Test result exit state: $status"
+ rm build/.test-status
+
+ if [[ $status != 0 ]] ; then
+ exit $status
+ fi
+}
+
+run libcamera_compliance
new file mode 100755
@@ -0,0 +1,17 @@
+#!/bin/bash
+
+# SPDX-License-Identifier: GPL-2.0-or-later
+# SPDX-FileCopyrightText: © 2024 Google Inc.
+
+set -e
+
+source "$(dirname "$0")/lib.sh"
+
+libcamera_unpackage() {
+ echo "Unpackage libcamera binaries"
+
+ tar -xvf libcamera-${CI_COMMIT_SHA}.tar.xz -C /
+ ldconfig -v
+}
+
+run libcamera_unpackage
@@ -280,7 +280,7 @@ build-package:debug:
-D b_sanitize=address,undefined
-D cpp_debugstl=true
-D force_fallback_for=['gtest']
- -D pipelines=['auto']
+ -D pipelines=['auto','virtual']
-D auto_features=disabled
-D lc-compliance=enabled
-D test=false
@@ -411,3 +411,23 @@ test-unit:
artifacts:
reports:
junit: build/meson-logs/testlog.junit.xml
+
+test-lc-compliance:virtual:
+ extends:
+ - .fdo.distribution-image@debian
+ - .libcamera-ci.debian:12
+ - .libcamera-ci.scripts
+ stage: test
+ needs:
+ - job: build-package:debug
+ parallel:
+ matrix:
+ - ARCH: amd64
+ tags:
+ - kvm
+ script:
+ - $CI_PROJECT_DIR/.gitlab-ci/unpackage-libcamera.sh
+ - $CI_PROJECT_DIR/.gitlab-ci/test-lc-compliance.sh
+ artifacts:
+ reports:
+ junit: build/lc-compliance-report.xml
Add a new job named `test-lc-compliance:virtual` that uses the build artifacts created by the `build-package:debug` job on amd64 to run `lc-compliance` on the "Virtual0" camera in a virtual machine. Signed-off-by: Barnabás Pőcze <barnabas.pocze@ideasonboard.com> --- This needs libcamera changes to work and to run in reasonable time: * https://patchwork.libcamera.org/project/libcamera/list/?series=4874 * https://patchwork.libcamera.org/patch/22379/ * https://patchwork.libcamera.org/patch/22406/ Changes in v4: * add `set -x` to see the full commands run inside the virtual machine * activate installed example configuration of the virtual pipeline handler Changes in v2: * publish lc-compliance results to gitlab * add and use script to install libcamera binary package --- .gitlab-ci/test-lc-compliance.sh | 40 +++++++++++++++++++++++++++++++ .gitlab-ci/unpackage-libcamera.sh | 17 +++++++++++++ gitlab-ci.yml | 22 ++++++++++++++++- 3 files changed, 78 insertions(+), 1 deletion(-) create mode 100755 .gitlab-ci/test-lc-compliance.sh create mode 100755 .gitlab-ci/unpackage-libcamera.sh -- 2.47.1