[{"id":37833,"web_url":"https://patchwork.libcamera.org/comment/37833/","msgid":"<20260122021654.GA209830@killaraus>","date":"2026-01-22T02:16:54","subject":"Re: [libcamera-ci] [RFC PATCH v1 1/5] Add job to generate container\n\tfor cross compilation","submitter":{"id":2,"url":"https://patchwork.libcamera.org/api/people/2/","name":"Laurent Pinchart","email":"laurent.pinchart@ideasonboard.com"},"content":"Hi Barnabás,\n\nThank you for the patch.\n\nOn Mon, Jan 19, 2026 at 11:20:35AM +0100, Barnabás Pőcze wrote:\n> Add a job that generates a debian based container with the necessary\n> dependencies to cross compile for the given architecture.\n\nOur Debian containers already support cross-compiling. Is there a reason\nto create another container ?\n\n> Signed-off-by: Barnabás Pőcze <barnabas.pocze@ideasonboard.com>\n> ---\n>  .gitlab-ci/setup-debian-cross-container.sh | 45 ++++++++++++++++++++++\n>  gitlab-ci.yml                              | 40 +++++++++++++++++++\n>  2 files changed, 85 insertions(+)\n>  create mode 100755 .gitlab-ci/setup-debian-cross-container.sh\n> \n> diff --git a/.gitlab-ci/setup-debian-cross-container.sh b/.gitlab-ci/setup-debian-cross-container.sh\n> new file mode 100755\n> index 0000000..82aea02\n> --- /dev/null\n> +++ b/.gitlab-ci/setup-debian-cross-container.sh\n> @@ -0,0 +1,45 @@\n> +#!/bin/bash\n> +\n> +set -ex\n> +\n> +packages=(\n> +\tpython3-autopep8\n> +\tpython3-dev\n> +\tpython3-jinja2\n> +\tpython3-pyparsing\n> +\tpython3-ply\n> +\tpython3-yaml\n> +)\n> +\n> +multiarch_packages=(\n> +\tlibevent-dev\n> +\tlibpisp-dev\n> +\tlibssl-dev\n> +\tlibudev-dev\n> +\tlibyaml-dev\n> +\topenssl\n> +)\n> +\n> +arch=\"$1\"\n> +\n> +export DEBIAN_FRONTEND=noninteractive\n> +\n> +dpkg --add-architecture \"$arch\"\n> +apt update -y\n> +\n> +pkgs=()\n> +\n> +packages+=( \"crossbuild-essential-$arch\" )\n> +for pkg in \"${packages[@]}\"; do\n> +\tpkgs+=( \"$pkg\" )\n> +done\n> +\n> +multiarch_packages+=( \"cross-exe-wrapper\" )\n> +multiarch_packages+=( \"pkg-config\" )\n> +for pkg in \"${multiarch_packages[@]}\"; do\n> +\tpkgs+=( \"$pkg:$arch\" )\n> +done\n> +\n> +apt install -y \"${pkgs[@]}\"\n> +\n> +meson env2mfile --cross --debarch \"$arch\" -o \"/opt/meson-$arch.cross\"\n> diff --git a/gitlab-ci.yml b/gitlab-ci.yml\n> index bc44feb..afac21f 100644\n> --- a/gitlab-ci.yml\n> +++ b/gitlab-ci.yml\n> @@ -73,6 +73,18 @@ include:\n>      FDO_DISTRIBUTION_VERSION: 'trixie'\n>      FDO_DISTRIBUTION_TAG: '2025-11-02.0'\n> \n> +.debian-cross-build:\n> +  variables:\n> +    CROSS_BUILD_DISTRIBUTION_VERSION: 'trixie'\n> +    CROSS_BUILD_TAG: '2026-01-09.0'\n> +    CROSS_BUILD_IMAGE: 'on-device-testing/debian-rootfs'\n> +\n> +.debian-cross-build-architectures:\n> +  parallel:\n> +    matrix:\n> +      - ARCH:\n> +        - arm64\n> +\n>  .container-debian:\n>    extends:\n>      - .fdo.container-build@debian\n> @@ -104,6 +116,34 @@ container-debian:13:\n>      - .container-debian\n>      - .libcamera-ci.debian:13\n> \n> +container-build-debian-cross:\n> +  extends:\n> +    - .fdo.container-build@debian\n> +    - .debian-cross-build\n> +    - .debian-cross-build-architectures\n> +  stage: container\n> +  needs: []\n> +  variables:\n> +    GIT_STRATEGY: none\n> +    FDO_DISTRIBUTION_VERSION: \"$CROSS_BUILD_DISTRIBUTION_VERSION\"\n> +    FDO_DISTRIBUTION_TAG: \"build-debian-cross-$CROSS_BUILD_TAG-$ARCH\"\n> +    FDO_DISTRIBUTION_PACKAGES: >-\n> +      ca-certificates\n> +      build-essential\n> +      dpkg-dev\n> +      findutils\n> +      git\n> +      meson\n> +      ruby\n> +    FDO_DISTRIBUTION_EXEC: >-\n> +      if echo $CI_CONFIG_PATH | grep -q '@' ; then\n> +        git clone --depth 1 --single-branch \"${CI_SERVER_URL}/$${CI_CONFIG_PATH/*@/}\" .ci-config ;\n> +        rm -rf .gitlab-ci ;\n> +        mv .ci-config/.gitlab-ci/ . ;\n> +      fi ;\n> +      .gitlab-ci/setup-debian-cross-container.sh \"$ARCH\" ;\n> +      gem install fpm ;\n> +\n>  # ------------------------------------------------------------------------------\n>  # Build stage - Build libcamera for various platforms and configurations\n>  # ------------------------------------------------------------------------------","headers":{"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\n\t[92.243.16.209])\n\tby patchwork.libcamera.org (Postfix) with ESMTPS id 2EC9AC3220\n\tfor <parsemail@patchwork.libcamera.org>;\n\tThu, 22 Jan 2026 02:16:59 +0000 (UTC)","from lancelot.ideasonboard.com (localhost [IPv6:::1])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTP id 79A0661FBB;\n\tThu, 22 Jan 2026 03:16:58 +0100 (CET)","from perceval.ideasonboard.com (perceval.ideasonboard.com\n\t[213.167.242.64])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTPS id 7E07F61A35\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tThu, 22 Jan 2026 03:16:56 +0100 (CET)","from pendragon.ideasonboard.com\n\t(2001-14ba-703d-e500--ff4.rev.dnainternet.fi\n\t[IPv6:2001:14ba:703d:e500::ff4])\n\tby perceval.ideasonboard.com (Postfix) with UTF8SMTPSA id 04A9F324;\n\tThu, 22 Jan 2026 03:16:23 +0100 (CET)"],"Authentication-Results":"lancelot.ideasonboard.com; dkim=pass (1024-bit key;\n\tunprotected) header.d=ideasonboard.com header.i=@ideasonboard.com\n\theader.b=\"cjZbrr04\"; dkim-atps=neutral","DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/simple; d=ideasonboard.com;\n\ts=mail; t=1769048184;\n\tbh=SFNB05t/oXWhqBuVvVYoBsp80ofikw7UzprwRaztiqA=;\n\th=Date:From:To:Cc:Subject:References:In-Reply-To:From;\n\tb=cjZbrr04wfD6M50gf3Z/PqDY9fikTLrGug1XkY1U0s5llZQ6aVEX2Uq7p0gTLtjyt\n\tNjG5ZaKT6yjtGdfLeZQ6Ts9EVxSfQ9TNKAbwNczAAxoxxAY6M5Nr3fgASVi4Eam3W2\n\tkq0en8PxPg+xDSidSiI7T5i2RFzr15Ee+MNzqDjM=","Date":"Thu, 22 Jan 2026 04:16:54 +0200","From":"Laurent Pinchart <laurent.pinchart@ideasonboard.com>","To":"=?utf-8?q?Barnab=C3=A1s_P=C5=91cze?= <barnabas.pocze@ideasonboard.com>","Cc":"libcamera-devel@lists.libcamera.org","Subject":"Re: [libcamera-ci] [RFC PATCH v1 1/5] Add job to generate container\n\tfor cross compilation","Message-ID":"<20260122021654.GA209830@killaraus>","References":"<20260119102039.3521673-1-barnabas.pocze@ideasonboard.com>\n\t<20260119102039.3521673-2-barnabas.pocze@ideasonboard.com>","MIME-Version":"1.0","Content-Type":"text/plain; charset=utf-8","Content-Disposition":"inline","Content-Transfer-Encoding":"8bit","In-Reply-To":"<20260119102039.3521673-2-barnabas.pocze@ideasonboard.com>","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>,\n\t<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>,\n\t<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>"}},{"id":37865,"web_url":"https://patchwork.libcamera.org/comment/37865/","msgid":"<fa58a60f-d754-4ae8-99ee-f39fd54aec85@ideasonboard.com>","date":"2026-01-22T10:43:40","subject":"Re: [libcamera-ci] [RFC PATCH v1 1/5] Add job to generate container\n\tfor cross compilation","submitter":{"id":216,"url":"https://patchwork.libcamera.org/api/people/216/","name":"Barnabás Pőcze","email":"barnabas.pocze@ideasonboard.com"},"content":"2026. 01. 22. 3:16 keltezéssel, Laurent Pinchart írta:\n> Hi Barnabás,\n> \n> Thank you for the patch.\n> \n> On Mon, Jan 19, 2026 at 11:20:35AM +0100, Barnabás Pőcze wrote:\n>> Add a job that generates a debian based container with the necessary\n>> dependencies to cross compile for the given architecture.\n> \n> Our Debian containers already support cross-compiling. Is there a reason\n> to create another container ?\n\n\nThis started out as a separate repository, but the main reason is that\nI wanted the rootfs and the cross compilation container to be \"in sync\",\nto be built \"at the same time\", that's why they are both tied to the\n`CROSS_BUILD_TAG` variable.\n\nAnother thing is that cross compilation is done in debian 12 container, but that can\nno longer be built: https://gitlab.freedesktop.org/pobrn/libcamera/-/jobs/91608343\nbecause the rustc version is too old.\n\nShould I try to move the virtme-ng + cross compilation parts into debian 13\nto see if that works?\n\n\n> \n>> Signed-off-by: Barnabás Pőcze <barnabas.pocze@ideasonboard.com>\n>> ---\n>>   .gitlab-ci/setup-debian-cross-container.sh | 45 ++++++++++++++++++++++\n>>   gitlab-ci.yml                              | 40 +++++++++++++++++++\n>>   2 files changed, 85 insertions(+)\n>>   create mode 100755 .gitlab-ci/setup-debian-cross-container.sh\n>>\n>> diff --git a/.gitlab-ci/setup-debian-cross-container.sh b/.gitlab-ci/setup-debian-cross-container.sh\n>> new file mode 100755\n>> index 0000000..82aea02\n>> --- /dev/null\n>> +++ b/.gitlab-ci/setup-debian-cross-container.sh\n>> @@ -0,0 +1,45 @@\n>> +#!/bin/bash\n>> +\n>> +set -ex\n>> +\n>> +packages=(\n>> +\tpython3-autopep8\n>> +\tpython3-dev\n>> +\tpython3-jinja2\n>> +\tpython3-pyparsing\n>> +\tpython3-ply\n>> +\tpython3-yaml\n>> +)\n>> +\n>> +multiarch_packages=(\n>> +\tlibevent-dev\n>> +\tlibpisp-dev\n>> +\tlibssl-dev\n>> +\tlibudev-dev\n>> +\tlibyaml-dev\n>> +\topenssl\n>> +)\n>> +\n>> +arch=\"$1\"\n>> +\n>> +export DEBIAN_FRONTEND=noninteractive\n>> +\n>> +dpkg --add-architecture \"$arch\"\n>> +apt update -y\n>> +\n>> +pkgs=()\n>> +\n>> +packages+=( \"crossbuild-essential-$arch\" )\n>> +for pkg in \"${packages[@]}\"; do\n>> +\tpkgs+=( \"$pkg\" )\n>> +done\n>> +\n>> +multiarch_packages+=( \"cross-exe-wrapper\" )\n>> +multiarch_packages+=( \"pkg-config\" )\n>> +for pkg in \"${multiarch_packages[@]}\"; do\n>> +\tpkgs+=( \"$pkg:$arch\" )\n>> +done\n>> +\n>> +apt install -y \"${pkgs[@]}\"\n>> +\n>> +meson env2mfile --cross --debarch \"$arch\" -o \"/opt/meson-$arch.cross\"\n>> diff --git a/gitlab-ci.yml b/gitlab-ci.yml\n>> index bc44feb..afac21f 100644\n>> --- a/gitlab-ci.yml\n>> +++ b/gitlab-ci.yml\n>> @@ -73,6 +73,18 @@ include:\n>>       FDO_DISTRIBUTION_VERSION: 'trixie'\n>>       FDO_DISTRIBUTION_TAG: '2025-11-02.0'\n>>\n>> +.debian-cross-build:\n>> +  variables:\n>> +    CROSS_BUILD_DISTRIBUTION_VERSION: 'trixie'\n>> +    CROSS_BUILD_TAG: '2026-01-09.0'\n>> +    CROSS_BUILD_IMAGE: 'on-device-testing/debian-rootfs'\n>> +\n>> +.debian-cross-build-architectures:\n>> +  parallel:\n>> +    matrix:\n>> +      - ARCH:\n>> +        - arm64\n>> +\n>>   .container-debian:\n>>     extends:\n>>       - .fdo.container-build@debian\n>> @@ -104,6 +116,34 @@ container-debian:13:\n>>       - .container-debian\n>>       - .libcamera-ci.debian:13\n>>\n>> +container-build-debian-cross:\n>> +  extends:\n>> +    - .fdo.container-build@debian\n>> +    - .debian-cross-build\n>> +    - .debian-cross-build-architectures\n>> +  stage: container\n>> +  needs: []\n>> +  variables:\n>> +    GIT_STRATEGY: none\n>> +    FDO_DISTRIBUTION_VERSION: \"$CROSS_BUILD_DISTRIBUTION_VERSION\"\n>> +    FDO_DISTRIBUTION_TAG: \"build-debian-cross-$CROSS_BUILD_TAG-$ARCH\"\n>> +    FDO_DISTRIBUTION_PACKAGES: >-\n>> +      ca-certificates\n>> +      build-essential\n>> +      dpkg-dev\n>> +      findutils\n>> +      git\n>> +      meson\n>> +      ruby\n>> +    FDO_DISTRIBUTION_EXEC: >-\n>> +      if echo $CI_CONFIG_PATH | grep -q '@' ; then\n>> +        git clone --depth 1 --single-branch \"${CI_SERVER_URL}/$${CI_CONFIG_PATH/*@/}\" .ci-config ;\n>> +        rm -rf .gitlab-ci ;\n>> +        mv .ci-config/.gitlab-ci/ . ;\n>> +      fi ;\n>> +      .gitlab-ci/setup-debian-cross-container.sh \"$ARCH\" ;\n>> +      gem install fpm ;\n>> +\n>>   # ------------------------------------------------------------------------------\n>>   # Build stage - Build libcamera for various platforms and configurations\n>>   # ------------------------------------------------------------------------------","headers":{"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\n\t[92.243.16.209])\n\tby patchwork.libcamera.org (Postfix) with ESMTPS id 16607BDCBF\n\tfor <parsemail@patchwork.libcamera.org>;\n\tThu, 22 Jan 2026 10:43:48 +0000 (UTC)","from lancelot.ideasonboard.com (localhost [IPv6:::1])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTP id E604461FC4;\n\tThu, 22 Jan 2026 11:43:46 +0100 (CET)","from perceval.ideasonboard.com (perceval.ideasonboard.com\n\t[IPv6:2001:4b98:dc2:55:216:3eff:fef7:d647])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTPS id 60E9761FA0\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tThu, 22 Jan 2026 11:43:45 +0100 (CET)","from [192.168.33.25] (185.221.143.114.nat.pool.zt.hu\n\t[185.221.143.114])\n\tby perceval.ideasonboard.com (Postfix) with ESMTPSA id B9209324;\n\tThu, 22 Jan 2026 11:43:12 +0100 (CET)"],"Authentication-Results":"lancelot.ideasonboard.com; dkim=pass (1024-bit key;\n\tunprotected) header.d=ideasonboard.com header.i=@ideasonboard.com\n\theader.b=\"qto7T1SQ\"; dkim-atps=neutral","DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/simple; d=ideasonboard.com;\n\ts=mail; t=1769078592;\n\tbh=Z0d+eIqf6h1QvuU8LJTDibimwsceYw59AF/YkifhRbw=;\n\th=Date:Subject:To:Cc:References:From:In-Reply-To:From;\n\tb=qto7T1SQAqiLyR8hwen59n1BN6xVjXiSCjWJ4OGN7R/oANHGusGBN2kxkCnN9dSWN\n\tuwIImZYBi98OEJwA8ZQUIGW9y+YeckkWBMtRVd1DXlKd5fN9x6RiyfrqMzpzibfPMu\n\tvSWK9+zsJsfWo92HS7EpxAEx5dDvQ8yG4NgVrlkI=","Message-ID":"<fa58a60f-d754-4ae8-99ee-f39fd54aec85@ideasonboard.com>","Date":"Thu, 22 Jan 2026 11:43:40 +0100","MIME-Version":"1.0","User-Agent":"Mozilla Thunderbird","Subject":"Re: [libcamera-ci] [RFC PATCH v1 1/5] Add job to generate container\n\tfor cross compilation","To":"Laurent Pinchart <laurent.pinchart@ideasonboard.com>","Cc":"libcamera-devel@lists.libcamera.org","References":"<20260119102039.3521673-1-barnabas.pocze@ideasonboard.com>\n\t<20260119102039.3521673-2-barnabas.pocze@ideasonboard.com>\n\t<20260122021654.GA209830@killaraus>","From":"=?utf-8?q?Barnab=C3=A1s_P=C5=91cze?= <barnabas.pocze@ideasonboard.com>","Content-Language":"en-US, hu-HU","In-Reply-To":"<20260122021654.GA209830@killaraus>","Content-Type":"text/plain; charset=UTF-8; format=flowed","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>,\n\t<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>,\n\t<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>"}},{"id":37867,"web_url":"https://patchwork.libcamera.org/comment/37867/","msgid":"<20260122111603.GB215800@killaraus>","date":"2026-01-22T11:16:03","subject":"Re: [libcamera-ci] [RFC PATCH v1 1/5] Add job to generate container\n\tfor cross compilation","submitter":{"id":2,"url":"https://patchwork.libcamera.org/api/people/2/","name":"Laurent Pinchart","email":"laurent.pinchart@ideasonboard.com"},"content":"On Thu, Jan 22, 2026 at 11:43:40AM +0100, Barnabás Pőcze wrote:\n> 2026. 01. 22. 3:16 keltezéssel, Laurent Pinchart írta:\n> > Hi Barnabás,\n> > \n> > Thank you for the patch.\n> > \n> > On Mon, Jan 19, 2026 at 11:20:35AM +0100, Barnabás Pőcze wrote:\n> >> Add a job that generates a debian based container with the necessary\n> >> dependencies to cross compile for the given architecture.\n> > \n> > Our Debian containers already support cross-compiling. Is there a reason\n> > to create another container ?\n> \n> This started out as a separate repository, but the main reason is that\n> I wanted the rootfs and the cross compilation container to be \"in sync\",\n> to be built \"at the same time\", that's why they are both tied to the\n> `CROSS_BUILD_TAG` variable.\n> \n> Another thing is that cross compilation is done in debian 12 container, but that can\n> no longer be built: https://gitlab.freedesktop.org/pobrn/libcamera/-/jobs/91608343\n> because the rustc version is too old.\n\nAaarghhhhh virtme-ng v1.18 uses a version of the virtme-ng-init\nsubmodule that does not pin specific version of dependencies :-/\n\nThis may be fixable by upgrading virtme-ng to v1.23 or newer. It would\nbe worth trying the latest version.\n\n> Should I try to move the virtme-ng + cross compilation parts into debian 13\n> to see if that works?\n\nIt seems to be a good idea, with the latest virtme-ng version ideally.\nI'd start with this, and move to a newer virtme-ng on Debian 12 only if\nwe run into serious issues with Debian 13.\n\n> >> Signed-off-by: Barnabás Pőcze <barnabas.pocze@ideasonboard.com>\n> >> ---\n> >>   .gitlab-ci/setup-debian-cross-container.sh | 45 ++++++++++++++++++++++\n> >>   gitlab-ci.yml                              | 40 +++++++++++++++++++\n> >>   2 files changed, 85 insertions(+)\n> >>   create mode 100755 .gitlab-ci/setup-debian-cross-container.sh\n> >>\n> >> diff --git a/.gitlab-ci/setup-debian-cross-container.sh b/.gitlab-ci/setup-debian-cross-container.sh\n> >> new file mode 100755\n> >> index 0000000..82aea02\n> >> --- /dev/null\n> >> +++ b/.gitlab-ci/setup-debian-cross-container.sh\n> >> @@ -0,0 +1,45 @@\n> >> +#!/bin/bash\n> >> +\n> >> +set -ex\n> >> +\n> >> +packages=(\n> >> +\tpython3-autopep8\n> >> +\tpython3-dev\n> >> +\tpython3-jinja2\n> >> +\tpython3-pyparsing\n> >> +\tpython3-ply\n> >> +\tpython3-yaml\n> >> +)\n> >> +\n> >> +multiarch_packages=(\n> >> +\tlibevent-dev\n> >> +\tlibpisp-dev\n> >> +\tlibssl-dev\n> >> +\tlibudev-dev\n> >> +\tlibyaml-dev\n> >> +\topenssl\n> >> +)\n> >> +\n> >> +arch=\"$1\"\n> >> +\n> >> +export DEBIAN_FRONTEND=noninteractive\n> >> +\n> >> +dpkg --add-architecture \"$arch\"\n> >> +apt update -y\n> >> +\n> >> +pkgs=()\n> >> +\n> >> +packages+=( \"crossbuild-essential-$arch\" )\n> >> +for pkg in \"${packages[@]}\"; do\n> >> +\tpkgs+=( \"$pkg\" )\n> >> +done\n> >> +\n> >> +multiarch_packages+=( \"cross-exe-wrapper\" )\n> >> +multiarch_packages+=( \"pkg-config\" )\n> >> +for pkg in \"${multiarch_packages[@]}\"; do\n> >> +\tpkgs+=( \"$pkg:$arch\" )\n> >> +done\n> >> +\n> >> +apt install -y \"${pkgs[@]}\"\n> >> +\n> >> +meson env2mfile --cross --debarch \"$arch\" -o \"/opt/meson-$arch.cross\"\n> >> diff --git a/gitlab-ci.yml b/gitlab-ci.yml\n> >> index bc44feb..afac21f 100644\n> >> --- a/gitlab-ci.yml\n> >> +++ b/gitlab-ci.yml\n> >> @@ -73,6 +73,18 @@ include:\n> >>       FDO_DISTRIBUTION_VERSION: 'trixie'\n> >>       FDO_DISTRIBUTION_TAG: '2025-11-02.0'\n> >>\n> >> +.debian-cross-build:\n> >> +  variables:\n> >> +    CROSS_BUILD_DISTRIBUTION_VERSION: 'trixie'\n> >> +    CROSS_BUILD_TAG: '2026-01-09.0'\n> >> +    CROSS_BUILD_IMAGE: 'on-device-testing/debian-rootfs'\n> >> +\n> >> +.debian-cross-build-architectures:\n> >> +  parallel:\n> >> +    matrix:\n> >> +      - ARCH:\n> >> +        - arm64\n> >> +\n> >>   .container-debian:\n> >>     extends:\n> >>       - .fdo.container-build@debian\n> >> @@ -104,6 +116,34 @@ container-debian:13:\n> >>       - .container-debian\n> >>       - .libcamera-ci.debian:13\n> >>\n> >> +container-build-debian-cross:\n> >> +  extends:\n> >> +    - .fdo.container-build@debian\n> >> +    - .debian-cross-build\n> >> +    - .debian-cross-build-architectures\n> >> +  stage: container\n> >> +  needs: []\n> >> +  variables:\n> >> +    GIT_STRATEGY: none\n> >> +    FDO_DISTRIBUTION_VERSION: \"$CROSS_BUILD_DISTRIBUTION_VERSION\"\n> >> +    FDO_DISTRIBUTION_TAG: \"build-debian-cross-$CROSS_BUILD_TAG-$ARCH\"\n> >> +    FDO_DISTRIBUTION_PACKAGES: >-\n> >> +      ca-certificates\n> >> +      build-essential\n> >> +      dpkg-dev\n> >> +      findutils\n> >> +      git\n> >> +      meson\n> >> +      ruby\n> >> +    FDO_DISTRIBUTION_EXEC: >-\n> >> +      if echo $CI_CONFIG_PATH | grep -q '@' ; then\n> >> +        git clone --depth 1 --single-branch \"${CI_SERVER_URL}/$${CI_CONFIG_PATH/*@/}\" .ci-config ;\n> >> +        rm -rf .gitlab-ci ;\n> >> +        mv .ci-config/.gitlab-ci/ . ;\n> >> +      fi ;\n> >> +      .gitlab-ci/setup-debian-cross-container.sh \"$ARCH\" ;\n> >> +      gem install fpm ;\n> >> +\n> >>   # ------------------------------------------------------------------------------\n> >>   # Build stage - Build libcamera for various platforms and configurations\n> >>   # ------------------------------------------------------------------------------","headers":{"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\n\t[92.243.16.209])\n\tby patchwork.libcamera.org (Postfix) with ESMTPS id 3B93DBDCBF\n\tfor <parsemail@patchwork.libcamera.org>;\n\tThu, 22 Jan 2026 11:16:08 +0000 (UTC)","from lancelot.ideasonboard.com (localhost [IPv6:::1])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTP id F1A8A61FC5;\n\tThu, 22 Jan 2026 12:16:06 +0100 (CET)","from perceval.ideasonboard.com (perceval.ideasonboard.com\n\t[213.167.242.64])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTPS id A125F61F84\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tThu, 22 Jan 2026 12:16:05 +0100 (CET)","from pendragon.ideasonboard.com\n\t(2001-14ba-703d-e500--2a1.rev.dnainternet.fi\n\t[IPv6:2001:14ba:703d:e500::2a1])\n\tby perceval.ideasonboard.com (Postfix) with UTF8SMTPSA id A76122DD;\n\tThu, 22 Jan 2026 12:15:32 +0100 (CET)"],"Authentication-Results":"lancelot.ideasonboard.com; dkim=pass (1024-bit key;\n\tunprotected) header.d=ideasonboard.com header.i=@ideasonboard.com\n\theader.b=\"dVSLbDf/\"; dkim-atps=neutral","DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/simple; d=ideasonboard.com;\n\ts=mail; t=1769080532;\n\tbh=rGwFYwB7ADYXrmq6K+EvXum8EempVVC/WX+T1/fDrIU=;\n\th=Date:From:To:Cc:Subject:References:In-Reply-To:From;\n\tb=dVSLbDf/5/1yu0sST+kI5XGJJPeR6RdFg60ZwfLfSKAtCbdn3RYPWnn2Vpsj/Jfnq\n\t5fnulwOEUSmJxOuSr9F4tXc6IsfVNmRPhVZVQj8p5w+rW6R58QU4cM0mAFCbkv35H0\n\t0oDfv/DfP0EbqbiEfiPou8rtkj99vv1ISU/rHKfo=","Date":"Thu, 22 Jan 2026 13:16:03 +0200","From":"Laurent Pinchart <laurent.pinchart@ideasonboard.com>","To":"=?utf-8?q?Barnab=C3=A1s_P=C5=91cze?= <barnabas.pocze@ideasonboard.com>","Cc":"libcamera-devel@lists.libcamera.org","Subject":"Re: [libcamera-ci] [RFC PATCH v1 1/5] Add job to generate container\n\tfor cross compilation","Message-ID":"<20260122111603.GB215800@killaraus>","References":"<20260119102039.3521673-1-barnabas.pocze@ideasonboard.com>\n\t<20260119102039.3521673-2-barnabas.pocze@ideasonboard.com>\n\t<20260122021654.GA209830@killaraus>\n\t<fa58a60f-d754-4ae8-99ee-f39fd54aec85@ideasonboard.com>","MIME-Version":"1.0","Content-Type":"text/plain; charset=utf-8","Content-Disposition":"inline","Content-Transfer-Encoding":"8bit","In-Reply-To":"<fa58a60f-d754-4ae8-99ee-f39fd54aec85@ideasonboard.com>","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>,\n\t<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>,\n\t<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>"}}]