| Message ID | 20260130160254.1770742-1-barnabas.pocze@ideasonboard.com |
|---|---|
| Headers | show
Return-Path: <libcamera-devel-bounces@lists.libcamera.org> 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 F3ED0C3226 for <parsemail@patchwork.libcamera.org>; Fri, 30 Jan 2026 16:02:59 +0000 (UTC) Received: from lancelot.ideasonboard.com (localhost [IPv6:::1]) by lancelot.ideasonboard.com (Postfix) with ESMTP id 062F361FD4; Fri, 30 Jan 2026 17:02:59 +0100 (CET) Authentication-Results: lancelot.ideasonboard.com; dkim=pass (1024-bit key; unprotected) header.d=ideasonboard.com header.i=@ideasonboard.com header.b="c0ntrjMW"; dkim-atps=neutral Received: from perceval.ideasonboard.com (perceval.ideasonboard.com [213.167.242.64]) by lancelot.ideasonboard.com (Postfix) with ESMTPS id 392C161F84 for <libcamera-devel@lists.libcamera.org>; Fri, 30 Jan 2026 17:02:57 +0100 (CET) Received: from pb-laptop.local (185.221.142.123.nat.pool.zt.hu [185.221.142.123]) by perceval.ideasonboard.com (Postfix) with ESMTPSA id 8DD7F55C for <libcamera-devel@lists.libcamera.org>; Fri, 30 Jan 2026 17:02:18 +0100 (CET) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=ideasonboard.com; s=mail; t=1769788938; bh=MwgR9qaoxm3wZtJfijZoL2T7GjSoGXRFxeodwLbXAJ4=; h=From:To:Subject:Date:From; b=c0ntrjMW9SHhQaDVl2/io3Ejzb8iVDvQmQmr+r42LmKcm3wQ0q7+GQypQFECbGD84 55AgXMJfb650lZcb8miKt6gVkxtriQS4rIXEdqEK96wmy1VRbMrDff+JZFJZLqJMx7 bUucAwqPf7VCEL5Xn5ymqUfsagwWKSZF8+mjLkDg= From: =?utf-8?q?Barnab=C3=A1s_P=C5=91cze?= <barnabas.pocze@ideasonboard.com> To: libcamera-devel@lists.libcamera.org Subject: [libcamera-ci] [RFC PATCH v2 0/5] on-device-testing proof of concept Date: Fri, 30 Jan 2026 17:02:49 +0100 Message-ID: <20260130160254.1770742-1-barnabas.pocze@ideasonboard.com> X-Mailer: git-send-email 2.52.0 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: libcamera-devel@lists.libcamera.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: <libcamera-devel.lists.libcamera.org> List-Unsubscribe: <https://lists.libcamera.org/options/libcamera-devel>, <mailto:libcamera-devel-request@lists.libcamera.org?subject=unsubscribe> List-Archive: <https://lists.libcamera.org/pipermail/libcamera-devel/> List-Post: <mailto:libcamera-devel@lists.libcamera.org> List-Help: <mailto:libcamera-devel-request@lists.libcamera.org?subject=help> List-Subscribe: <https://lists.libcamera.org/listinfo/libcamera-devel>, <mailto:libcamera-devel-request@lists.libcamera.org?subject=subscribe> Errors-To: libcamera-devel-bounces@lists.libcamera.org Sender: "libcamera-devel" <libcamera-devel-bounces@lists.libcamera.org> |
| Series |
|
| Related |
show
|
This adds the necessary gitlab parts for running lc-compliance via lava on a "real" device, specifically a debix-a board with an imx219 sensor. There are three parts to the process: 1. libcamera is cross-compiled to the target architecture. This uses a separate container, and does not use setup-container.sh. 2. A debian root file system is built, appropriate for running libcamera as compiled in (1). 3. LAVA job is submitted to the lava worker to run `test-libcamera.sh` on the device. Couple points: * Deploying the debian root filesystem is a manual process. It must be built and uploaded to the lava worker's local container registry. Specifying which container image the device should use is not implemented at the moment, it is hard-coded on the device itself. I think be very nice if this could be fully automatic. * lava-gitlab-runner can only use files from artifacts and not from the repository (https://github.com/collabora/lava-gitlab-runner/issues/16), so there is a job `lava-jobs-as-artifacts` for that. Although even if it could, the libcamera ci definitions are in a separate repository, so that would most likely still not work. * The cross compilation jobs saves the url of the debian package artifact in a `dotenv` artifact report, for lava-gitlab-runner to access it, and for it to be accessible on the device to download and install the package. This is needed because there does not appear to be a way to download job artifacts based on the (pipeline id, job name) tuple, same applies to getting the job id from another job. At least without more complex use of the gitlab api. But this means that the lava job must get the artifacts from the cross compilation job, which unfortunately means downloading the deb package unnecessarily. * The camera id is hard-coded in the lava job definition. Maybe it could be better to extend lc-compliance to support camera indices. * dependencies: - https://patchwork.libcamera.org/project/libcamera/list/?series=5756 - https://patchwork.libcamera.org/patch/26038/ --- changes in v2: * use existing containers * manual rootfs workflow v1: https://patchwork.libcamera.org/cover/25839/ --- Barnabás Pőcze (5): Install `fpm` in the debian 13 container Add job to build deb package for libcamera Add job to run lc-compliance via lava Guard hardware testing jobs Add description about debian rootfs setup for testing .gitlab-ci/on-device-testing/lava-debix-a.yml | 40 ++++++++ .gitlab-ci/setup-container.sh | 6 ++ .../debian-rootfs/build-debian-rootfs.sh | 62 ++++++++++++ containers/debian-rootfs/build.sh | 9 ++ .../overlay/opt/test-libcamera.sh | 18 ++++ doc/debian-rootfs.rst | 47 +++++++++ gitlab-ci.yml | 95 ++++++++++++++++++- 7 files changed, 276 insertions(+), 1 deletion(-) create mode 100644 .gitlab-ci/on-device-testing/lava-debix-a.yml create mode 100755 containers/debian-rootfs/build-debian-rootfs.sh create mode 100755 containers/debian-rootfs/build.sh create mode 100755 containers/debian-rootfs/overlay/opt/test-libcamera.sh create mode 100644 doc/debian-rootfs.rst -- 2.52.0