From patchwork Mon Jan 19 10:20:35 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: 25840 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 7F0C1C3220 for ; Mon, 19 Jan 2026 10:20:49 +0000 (UTC) Received: from lancelot.ideasonboard.com (localhost [IPv6:::1]) by lancelot.ideasonboard.com (Postfix) with ESMTP id 3C23A61FC9; Mon, 19 Jan 2026 11:20:47 +0100 (CET) Authentication-Results: lancelot.ideasonboard.com; dkim=pass (1024-bit key; unprotected) header.d=ideasonboard.com header.i=@ideasonboard.com header.b="ZYXZXhcF"; dkim-atps=neutral Received: from perceval.ideasonboard.com (perceval.ideasonboard.com [213.167.242.64]) by lancelot.ideasonboard.com (Postfix) with ESMTPS id CE0AD61FB9 for ; Mon, 19 Jan 2026 11:20:43 +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 6E32ABE1 for ; Mon, 19 Jan 2026 11:20:13 +0100 (CET) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=ideasonboard.com; s=mail; t=1768818013; bh=sh4Eb/0U/uJtp8efTij2QPLDmgUWpXqJmSOdIz7XM1I=; h=From:To:Subject:Date:In-Reply-To:References:From; b=ZYXZXhcFbpW05Qs1DTGKTr8s33LaaBN5CFiGqHUk/sIDjpfJlnT4ZlRbFyKcZU6qj BIDsir/hmNtduxcQEjwZKdmc+X2/MUJPG9dKbIcYgdBLG/bWaLoPeBzFTeC2zuQdOr qtGNvDJAqeFiQ89KJQanSOJt4MP5pGtNJQ6X/GrI= From: =?utf-8?q?Barnab=C3=A1s_P=C5=91cze?= To: libcamera-devel@lists.libcamera.org Subject: [libcamera-ci] [RFC PATCH v1 1/5] Add job to generate container for cross compilation Date: Mon, 19 Jan 2026 11:20:35 +0100 Message-ID: <20260119102039.3521673-2-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 generates a debian based container with the necessary dependencies to cross compile for the given architecture. Signed-off-by: Barnabás Pőcze --- .gitlab-ci/setup-debian-cross-container.sh | 45 ++++++++++++++++++++++ gitlab-ci.yml | 40 +++++++++++++++++++ 2 files changed, 85 insertions(+) create mode 100755 .gitlab-ci/setup-debian-cross-container.sh -- 2.52.0 diff --git a/.gitlab-ci/setup-debian-cross-container.sh b/.gitlab-ci/setup-debian-cross-container.sh new file mode 100755 index 0000000..82aea02 --- /dev/null +++ b/.gitlab-ci/setup-debian-cross-container.sh @@ -0,0 +1,45 @@ +#!/bin/bash + +set -ex + +packages=( + python3-autopep8 + python3-dev + python3-jinja2 + python3-pyparsing + python3-ply + python3-yaml +) + +multiarch_packages=( + libevent-dev + libpisp-dev + libssl-dev + libudev-dev + libyaml-dev + openssl +) + +arch="$1" + +export DEBIAN_FRONTEND=noninteractive + +dpkg --add-architecture "$arch" +apt update -y + +pkgs=() + +packages+=( "crossbuild-essential-$arch" ) +for pkg in "${packages[@]}"; do + pkgs+=( "$pkg" ) +done + +multiarch_packages+=( "cross-exe-wrapper" ) +multiarch_packages+=( "pkg-config" ) +for pkg in "${multiarch_packages[@]}"; do + pkgs+=( "$pkg:$arch" ) +done + +apt install -y "${pkgs[@]}" + +meson env2mfile --cross --debarch "$arch" -o "/opt/meson-$arch.cross" diff --git a/gitlab-ci.yml b/gitlab-ci.yml index bc44feb..afac21f 100644 --- a/gitlab-ci.yml +++ b/gitlab-ci.yml @@ -73,6 +73,18 @@ include: FDO_DISTRIBUTION_VERSION: 'trixie' FDO_DISTRIBUTION_TAG: '2025-11-02.0' +.debian-cross-build: + variables: + CROSS_BUILD_DISTRIBUTION_VERSION: 'trixie' + CROSS_BUILD_TAG: '2026-01-09.0' + CROSS_BUILD_IMAGE: 'on-device-testing/debian-rootfs' + +.debian-cross-build-architectures: + parallel: + matrix: + - ARCH: + - arm64 + .container-debian: extends: - .fdo.container-build@debian @@ -104,6 +116,34 @@ container-debian:13: - .container-debian - .libcamera-ci.debian:13 +container-build-debian-cross: + extends: + - .fdo.container-build@debian + - .debian-cross-build + - .debian-cross-build-architectures + stage: container + needs: [] + variables: + GIT_STRATEGY: none + FDO_DISTRIBUTION_VERSION: "$CROSS_BUILD_DISTRIBUTION_VERSION" + FDO_DISTRIBUTION_TAG: "build-debian-cross-$CROSS_BUILD_TAG-$ARCH" + FDO_DISTRIBUTION_PACKAGES: >- + ca-certificates + build-essential + dpkg-dev + findutils + git + meson + ruby + FDO_DISTRIBUTION_EXEC: >- + if echo $CI_CONFIG_PATH | grep -q '@' ; then + git clone --depth 1 --single-branch "${CI_SERVER_URL}/$${CI_CONFIG_PATH/*@/}" .ci-config ; + rm -rf .gitlab-ci ; + mv .ci-config/.gitlab-ci/ . ; + fi ; + .gitlab-ci/setup-debian-cross-container.sh "$ARCH" ; + gem install fpm ; + # ------------------------------------------------------------------------------ # Build stage - Build libcamera for various platforms and configurations # ------------------------------------------------------------------------------