[libcamera-ci] [RFC PATCH v3 4/4] Add job to run lc-compliance on the virtual pipeline handler
Laurent Pinchart
laurent.pinchart at ideasonboard.com
Tue Dec 17 17:41:29 CET 2024
Hi Barnabás,
Thank you for the patch.
On Tue, Dec 17, 2024 at 04:31:53PM +0100, Barnabás Pőcze wrote:
> 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 at ideasonboard.com>
Reviewed-by: Laurent Pinchart <laurent.pinchart at 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://gitlab.freedesktop.org/pobrn/libcamera/-/commit/ed4b5bc179ea405f2f01b85b4114720f67ce3595
I've reviewed the first two links. I think you can already push patches
1/4 to 3/4 from this series, until we finish discussing how to handle
the configuration file.
> Changes in v2:
> * publish lc-compliance results to gitlab
> * add and use script to install libcamera binary package
>
> ---
> .gitlab-ci/test-lc-compliance.sh | 37 +++++++++++++++++++++++++++++++
> .gitlab-ci/unpackage-libcamera.sh | 17 ++++++++++++++
> gitlab-ci.yml | 22 +++++++++++++++++-
> 3 files changed, 75 insertions(+), 1 deletion(-)
> create mode 100755 .gitlab-ci/test-lc-compliance.sh
> create mode 100755 .gitlab-ci/unpackage-libcamera.sh
>
> diff --git a/.gitlab-ci/test-lc-compliance.sh b/.gitlab-ci/test-lc-compliance.sh
> new file mode 100755
> index 0000000..8c726fa
> --- /dev/null
> +++ b/.gitlab-ci/test-lc-compliance.sh
> @@ -0,0 +1,37 @@
> +#!/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 " \
> + 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
> diff --git a/.gitlab-ci/unpackage-libcamera.sh b/.gitlab-ci/unpackage-libcamera.sh
> new file mode 100755
> index 0000000..9eb3192
> --- /dev/null
> +++ b/.gitlab-ci/unpackage-libcamera.sh
> @@ -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
> diff --git a/gitlab-ci.yml b/gitlab-ci.yml
> index 205c6ff..701d02f 100644
> --- a/gitlab-ci.yml
> +++ b/gitlab-ci.yml
> @@ -273,7 +273,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
> @@ -408,3 +408,23 @@ test-unit:
> # artifacts:
> # reports:
> # junit: build/meson-logs/testlog.junit.xml
> +
> +test-lc-compliance:virtual:
> + extends:
> + - .fdo.distribution-image at 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
--
Regards,
Laurent Pinchart
More information about the libcamera-devel
mailing list