[libcamera-ci,RFC,v1,2/5] Add job to build deb package for libcamera
diff mbox series

Message ID 20260119102039.3521673-3-barnabas.pocze@ideasonboard.com
State Superseded
Headers show
Series
  • on-device-testing proof of concept
Related show

Commit Message

Barnabás Pőcze Jan. 19, 2026, 10:20 a.m. UTC
Add a job that builds a very specific deb package for testing
purposes for the given architectures.

Signed-off-by: Barnabás Pőcze <barnabas.pocze@ideasonboard.com>
---
 gitlab-ci.yml | 47 +++++++++++++++++++++++++++++++++++++++++++++++
 1 file changed, 47 insertions(+)

--
2.52.0

Comments

Laurent Pinchart Jan. 22, 2026, 2:19 a.m. UTC | #1
Hi Barnabás,

Thank you for the patch.

On Mon, Jan 19, 2026 at 11:20:36AM +0100, Barnabás Pőcze wrote:
> Add a job that builds a very specific deb package for testing
> purposes for the given architectures.

Similar comment as for patch 1/5, can we instead extend the
build-package:debug job (and possibly rename it) to build a Debian
package ?

> Signed-off-by: Barnabás Pőcze <barnabas.pocze@ideasonboard.com>
> ---
>  gitlab-ci.yml | 47 +++++++++++++++++++++++++++++++++++++++++++++++
>  1 file changed, 47 insertions(+)
> 
> diff --git a/gitlab-ci.yml b/gitlab-ci.yml
> index afac21f..b7362d7 100644
> --- a/gitlab-ci.yml
> +++ b/gitlab-ci.yml
> @@ -385,6 +385,53 @@ build-package:cros:
>        - build/build.ninja
>        - libcamera-upstream-9999.tbz2
> 
> +#
> +# Build and package libcamera for the purpose of running tests on a real device.
> +#
> +
> +build-debian-cross:
> +  extends:
> +    - .fdo.distribution-image@debian
> +    - .debian-cross-build
> +    - .debian-cross-build-architectures
> +  stage: build
> +  needs:
> +    - job: container-build-debian-cross
> +      artifacts: false
> +      parallel:
> +        matrix:
> +          - ARCH: "$[[ matrix.ARCH ]]"
> +  variables:
> +    FDO_DISTRIBUTION_VERSION: "$CROSS_BUILD_DISTRIBUTION_VERSION"
> +    FDO_DISTRIBUTION_TAG: "build-debian-cross-$CROSS_BUILD_TAG-$ARCH"
> +  script:
> +    - echo "0.0.0-ci-build-$CI_COMMIT_SHA-job-$CI_JOB_ID-pipeline-$CI_PIPELINE_ID-project-$CI_PROJECT_PATH" > .tarball-version
> +    - meson setup build
> +        --cross-file "/opt/meson-$ARCH.cross"
> +        -D prefix=/usr
> +        -D debug=true
> +        -D optimization=2
> +        -D force_fallback_for="['gtest']"
> +        -D auto_features=disabled
> +        -D udev=enabled
> +        -D cam=enabled
> +        -D lc-compliance=enabled
> +    - meson compile -C build
> +    - meson install -C build --no-rebuild --destdir install
> +    - fpm -s dir -t deb
> +        -C build/install
> +        --architecture "$ARCH"
> +        --package libcamera.deb
> +        --name libcamera
> +        --description "$CI_COMMIT_SHA (job $CI_JOB_ID, pipeline $CI_PIPELINE_ID, project $CI_PROJECT_PATH)"
> +        --version "0.0.0"

Please create a shell script as in the other jobs.

> +  artifacts:
> +    expire_in: 1w
> +    paths:
> +      - build/meson-logs/
> +      - build/build.ninja
> +      - "*.deb"
> +
>  # ------------------------------------------------------------------------------
>  # Lint stage - Run checkstyle.py and check merge suitability
>  # ------------------------------------------------------------------------------
Barnabás Pőcze Jan. 22, 2026, 10:56 a.m. UTC | #2
2026. 01. 22. 3:19 keltezéssel, Laurent Pinchart írta:
> Hi Barnabás,
> 
> Thank you for the patch.
> 
> On Mon, Jan 19, 2026 at 11:20:36AM +0100, Barnabás Pőcze wrote:
>> Add a job that builds a very specific deb package for testing
>> purposes for the given architectures.
> 
> Similar comment as for patch 1/5, can we instead extend the
> build-package:debug job (and possibly rename it) to build a Debian
> package ?

Possibly, but note that this one uses different build options.
That is due to https://gitlab.freedesktop.org/camera/libcamera/-/issues/250,
which causes libcamera to abort: https://gitlab.freedesktop.org/pobrn/libcamera/-/jobs/91450286#L1490

   [231] FATAL FCQueue fc_queue.h:85 Frame context for 13 has been overwritten by 93

Now I think this is an issue that should be fixed in libcamera, and locally
I have a commit that changes how `FCQueue` operates to avoid this fatal error
caused by skipped sequence numbers (note that 93 == 13 mod 16, 16 being `kMaxFrameContexts`
defined in `src/ipa/rkisp1.cpp`).

There is also https://patchwork.libcamera.org/project/libcamera/list/?series=5524, and
I believe that changes a lot of things, which could affect this, but I haven't tested it yet.


> 
>> Signed-off-by: Barnabás Pőcze <barnabas.pocze@ideasonboard.com>
>> ---
>>   gitlab-ci.yml | 47 +++++++++++++++++++++++++++++++++++++++++++++++
>>   1 file changed, 47 insertions(+)
>>
>> diff --git a/gitlab-ci.yml b/gitlab-ci.yml
>> index afac21f..b7362d7 100644
>> --- a/gitlab-ci.yml
>> +++ b/gitlab-ci.yml
>> @@ -385,6 +385,53 @@ build-package:cros:
>>         - build/build.ninja
>>         - libcamera-upstream-9999.tbz2
>>
>> +#
>> +# Build and package libcamera for the purpose of running tests on a real device.
>> +#
>> +
>> +build-debian-cross:
>> +  extends:
>> +    - .fdo.distribution-image@debian
>> +    - .debian-cross-build
>> +    - .debian-cross-build-architectures
>> +  stage: build
>> +  needs:
>> +    - job: container-build-debian-cross
>> +      artifacts: false
>> +      parallel:
>> +        matrix:
>> +          - ARCH: "$[[ matrix.ARCH ]]"
>> +  variables:
>> +    FDO_DISTRIBUTION_VERSION: "$CROSS_BUILD_DISTRIBUTION_VERSION"
>> +    FDO_DISTRIBUTION_TAG: "build-debian-cross-$CROSS_BUILD_TAG-$ARCH"
>> +  script:
>> +    - echo "0.0.0-ci-build-$CI_COMMIT_SHA-job-$CI_JOB_ID-pipeline-$CI_PIPELINE_ID-project-$CI_PROJECT_PATH" > .tarball-version
>> +    - meson setup build
>> +        --cross-file "/opt/meson-$ARCH.cross"
>> +        -D prefix=/usr
>> +        -D debug=true
>> +        -D optimization=2
>> +        -D force_fallback_for="['gtest']"
>> +        -D auto_features=disabled
>> +        -D udev=enabled
>> +        -D cam=enabled
>> +        -D lc-compliance=enabled
>> +    - meson compile -C build
>> +    - meson install -C build --no-rebuild --destdir install
>> +    - fpm -s dir -t deb
>> +        -C build/install
>> +        --architecture "$ARCH"
>> +        --package libcamera.deb
>> +        --name libcamera
>> +        --description "$CI_COMMIT_SHA (job $CI_JOB_ID, pipeline $CI_PIPELINE_ID, project $CI_PROJECT_PATH)"
>> +        --version "0.0.0"
> 
> Please create a shell script as in the other jobs.

Okay.


> 
>> +  artifacts:
>> +    expire_in: 1w
>> +    paths:
>> +      - build/meson-logs/
>> +      - build/build.ninja
>> +      - "*.deb"
>> +
>>   # ------------------------------------------------------------------------------
>>   # Lint stage - Run checkstyle.py and check merge suitability
>>   # ------------------------------------------------------------------------------
>
Laurent Pinchart Jan. 22, 2026, 11:24 a.m. UTC | #3
Hi Barnabás,

On Thu, Jan 22, 2026 at 11:56:06AM +0100, Barnabás Pőcze wrote:
> 2026. 01. 22. 3:19 keltezéssel, Laurent Pinchart írta:
> > On Mon, Jan 19, 2026 at 11:20:36AM +0100, Barnabás Pőcze wrote:
> >> Add a job that builds a very specific deb package for testing
> >> purposes for the given architectures.
> > 
> > Similar comment as for patch 1/5, can we instead extend the
> > build-package:debug job (and possibly rename it) to build a Debian
> > package ?
> 
> Possibly, but note that this one uses different build options.

As far as I'm aware, nobody uses the tarball created by
build-package:debug at the moment, so we could change the build options.

> That is due to https://gitlab.freedesktop.org/camera/libcamera/-/issues/250,
> which causes libcamera to abort: https://gitlab.freedesktop.org/pobrn/libcamera/-/jobs/91450286#L1490
> 
>    [231] FATAL FCQueue fc_queue.h:85 Frame context for 13 has been overwritten by 93
> 
> Now I think this is an issue that should be fixed in libcamera, and locally
> I have a commit that changes how `FCQueue` operates to avoid this fatal error
> caused by skipped sequence numbers (note that 93 == 13 mod 16, 16 being `kMaxFrameContexts`
> defined in `src/ipa/rkisp1.cpp`).
> 
> There is also https://patchwork.libcamera.org/project/libcamera/list/?series=5524, and
> I believe that changes a lot of things, which could affect this, but I haven't tested it yet.

That series should fix the issue (as in I expect it to address the
problem, not that I have tested it to verify it does). It's the correct
direction for fixing lots of problems related to our handling of frame
contexts.

> >> Signed-off-by: Barnabás Pőcze <barnabas.pocze@ideasonboard.com>
> >> ---
> >>   gitlab-ci.yml | 47 +++++++++++++++++++++++++++++++++++++++++++++++
> >>   1 file changed, 47 insertions(+)
> >>
> >> diff --git a/gitlab-ci.yml b/gitlab-ci.yml
> >> index afac21f..b7362d7 100644
> >> --- a/gitlab-ci.yml
> >> +++ b/gitlab-ci.yml
> >> @@ -385,6 +385,53 @@ build-package:cros:
> >>         - build/build.ninja
> >>         - libcamera-upstream-9999.tbz2
> >>
> >> +#
> >> +# Build and package libcamera for the purpose of running tests on a real device.
> >> +#
> >> +
> >> +build-debian-cross:
> >> +  extends:
> >> +    - .fdo.distribution-image@debian
> >> +    - .debian-cross-build
> >> +    - .debian-cross-build-architectures
> >> +  stage: build
> >> +  needs:
> >> +    - job: container-build-debian-cross
> >> +      artifacts: false
> >> +      parallel:
> >> +        matrix:
> >> +          - ARCH: "$[[ matrix.ARCH ]]"
> >> +  variables:
> >> +    FDO_DISTRIBUTION_VERSION: "$CROSS_BUILD_DISTRIBUTION_VERSION"
> >> +    FDO_DISTRIBUTION_TAG: "build-debian-cross-$CROSS_BUILD_TAG-$ARCH"
> >> +  script:
> >> +    - echo "0.0.0-ci-build-$CI_COMMIT_SHA-job-$CI_JOB_ID-pipeline-$CI_PIPELINE_ID-project-$CI_PROJECT_PATH" > .tarball-version
> >> +    - meson setup build
> >> +        --cross-file "/opt/meson-$ARCH.cross"
> >> +        -D prefix=/usr
> >> +        -D debug=true
> >> +        -D optimization=2
> >> +        -D force_fallback_for="['gtest']"
> >> +        -D auto_features=disabled
> >> +        -D udev=enabled
> >> +        -D cam=enabled
> >> +        -D lc-compliance=enabled
> >> +    - meson compile -C build
> >> +    - meson install -C build --no-rebuild --destdir install
> >> +    - fpm -s dir -t deb
> >> +        -C build/install
> >> +        --architecture "$ARCH"
> >> +        --package libcamera.deb
> >> +        --name libcamera
> >> +        --description "$CI_COMMIT_SHA (job $CI_JOB_ID, pipeline $CI_PIPELINE_ID, project $CI_PROJECT_PATH)"
> >> +        --version "0.0.0"
> > 
> > Please create a shell script as in the other jobs.
> 
> Okay.
> 
> >> +  artifacts:
> >> +    expire_in: 1w
> >> +    paths:
> >> +      - build/meson-logs/
> >> +      - build/build.ninja
> >> +      - "*.deb"
> >> +
> >>   # ------------------------------------------------------------------------------
> >>   # Lint stage - Run checkstyle.py and check merge suitability
> >>   # ------------------------------------------------------------------------------

Patch
diff mbox series

diff --git a/gitlab-ci.yml b/gitlab-ci.yml
index afac21f..b7362d7 100644
--- a/gitlab-ci.yml
+++ b/gitlab-ci.yml
@@ -385,6 +385,53 @@  build-package:cros:
       - build/build.ninja
       - libcamera-upstream-9999.tbz2

+#
+# Build and package libcamera for the purpose of running tests on a real device.
+#
+
+build-debian-cross:
+  extends:
+    - .fdo.distribution-image@debian
+    - .debian-cross-build
+    - .debian-cross-build-architectures
+  stage: build
+  needs:
+    - job: container-build-debian-cross
+      artifacts: false
+      parallel:
+        matrix:
+          - ARCH: "$[[ matrix.ARCH ]]"
+  variables:
+    FDO_DISTRIBUTION_VERSION: "$CROSS_BUILD_DISTRIBUTION_VERSION"
+    FDO_DISTRIBUTION_TAG: "build-debian-cross-$CROSS_BUILD_TAG-$ARCH"
+  script:
+    - echo "0.0.0-ci-build-$CI_COMMIT_SHA-job-$CI_JOB_ID-pipeline-$CI_PIPELINE_ID-project-$CI_PROJECT_PATH" > .tarball-version
+    - meson setup build
+        --cross-file "/opt/meson-$ARCH.cross"
+        -D prefix=/usr
+        -D debug=true
+        -D optimization=2
+        -D force_fallback_for="['gtest']"
+        -D auto_features=disabled
+        -D udev=enabled
+        -D cam=enabled
+        -D lc-compliance=enabled
+    - meson compile -C build
+    - meson install -C build --no-rebuild --destdir install
+    - fpm -s dir -t deb
+        -C build/install
+        --architecture "$ARCH"
+        --package libcamera.deb
+        --name libcamera
+        --description "$CI_COMMIT_SHA (job $CI_JOB_ID, pipeline $CI_PIPELINE_ID, project $CI_PROJECT_PATH)"
+        --version "0.0.0"
+  artifacts:
+    expire_in: 1w
+    paths:
+      - build/meson-logs/
+      - build/build.ninja
+      - "*.deb"
+
 # ------------------------------------------------------------------------------
 # Lint stage - Run checkstyle.py and check merge suitability
 # ------------------------------------------------------------------------------