[{"id":38067,"web_url":"https://patchwork.libcamera.org/comment/38067/","msgid":"<aYMSjNvgZuAowcDE@zed>","date":"2026-02-04T09:36:47","subject":"Re: [libcamera-ci] [RFC PATCH v2 3/5] Add job to run lc-compliance\n\tvia lava","submitter":{"id":143,"url":"https://patchwork.libcamera.org/api/people/143/","name":"Jacopo Mondi","email":"jacopo.mondi@ideasonboard.com"},"content":"Hi Barnabás\n\nOn Fri, Jan 30, 2026 at 05:02:52PM +0100, Barnabás Pőcze wrote:\n> Add a job that runs lc-compliance via lava on real hardware.\n>\n> Signed-off-by: Barnabás Pőcze <barnabas.pocze@ideasonboard.com>\n> ---\n>  .gitlab-ci/on-device-testing/lava-debix-a.yml | 40 +++++++++++++++++++\n>  gitlab-ci.yml                                 | 36 +++++++++++++++++\n>  2 files changed, 76 insertions(+)\n>  create mode 100644 .gitlab-ci/on-device-testing/lava-debix-a.yml\n>\n> diff --git a/.gitlab-ci/on-device-testing/lava-debix-a.yml b/.gitlab-ci/on-device-testing/lava-debix-a.yml\n> new file mode 100644\n> index 0000000..4a9b9b6\n> --- /dev/null\n> +++ b/.gitlab-ci/on-device-testing/lava-debix-a.yml\n> @@ -0,0 +1,40 @@\n> +device_type: debix-a\n> +job_name: debix-a lc-compliance test\n> +\n> +timeouts:\n> +  job:\n> +    minutes: 30\n> +  action:\n> +    minutes: 5\n> +  connection:\n> +    minutes: 6\n> +priority: medium\n> +visibility: public\n> +\n> +actions:\n> +- boot:\n> +    method: minimal\n> +    timeout:\n> +      minutes: 6\n> +    auto_login:\n> +      login_prompt: 'boot2container login:'\n> +      username: \"root\"\n> +      password_prompt: \"Password:\"\n> +      password: \"root\"\n> +    prompts: [\":~#\"]\n> +- test:\n> +    interactive:\n> +    - name: lc-compliance\n> +      prompts: [\":~#\"]\n> +      echo: discard\n> +      script:\n> +      - command: >-\n> +          /opt/test-libcamera.sh\n> +          \"{{ job.LIBCAMERA_DEB_URL }}\"\n> +          /base/soc@0/bus@30800000/i2c@30a30000/camera@10\n> +          && echo \"lc-compliance test passed\"\n> +          || echo \"lc-compliance test failed\"\n> +        successes:\n> +          - message: \"lc-compliance test passed\"\n> +        failures:\n> +          - message: \"lc-compliance test failed\"\n> diff --git a/gitlab-ci.yml b/gitlab-ci.yml\n> index 66f4b5b..37ffc58 100644\n> --- a/gitlab-ci.yml\n> +++ b/gitlab-ci.yml\n> @@ -355,6 +355,7 @@ build-deb-for-lc-compliance-testing:\n>          --name libcamera\n>          --description \"$CI_COMMIT_SHA (job $CI_JOB_ID, pipeline $CI_PIPELINE_ID, project $CI_PROJECT_PATH)\"\n>          --version \"0.0.0\"\n> +    - echo \"LIBCAMERA_DEB_URL=$CI_API_V4_URL/projects/$CI_PROJECT_ID/jobs/$CI_JOB_ID/artifacts/libcamera.deb\" >> env\n>    artifacts:\n>      when: always\n>      expire_in: 1 week\n> @@ -362,11 +363,30 @@ build-deb-for-lc-compliance-testing:\n>        - build/meson-logs/\n>        - build/build.ninja\n>        - \"*.deb\"\n> +    reports:\n> +      dotenv: env\n>    parallel:\n>      matrix:\n>        - ARCH:\n>          - arm64\n>\n> +lava-jobs-as-artifacts:\n> +  extends:\n> +    - .fdo.distribution-image@debian\n> +    - .libcamera-ci.debian:13\n> +    - .libcamera-ci.scripts\n> +  stage: build\n> +  needs:\n> +    - job: container-debian:13\n> +      artifacts: false\n> +  variables:\n> +    GIT_STRATEGY: none\n> +  script:\n> +    - echo \"saving lava job definitions as artifacts for lava-gitlab-runner\"\n> +  artifacts:\n> +    expire_in: 1w\n> +    paths:\n> +      - $CI_PROJECT_DIR/.gitlab-ci/on-device-testing/lava-*\n\nLooking at how we did it with Soraka\nhttps://gitlab.freedesktop.org/camera/libcamera-ci/-/commit/c3a6d616470f577abd01fb2fc2ecd6caf877e0e9\n\nI wonder the lava job can't be added as an artifact to the job that\nbuilds the .deb ? The only reason is to avoid spawning a container\njust to save an artifact. Is it a valid concern ?\n\n>\n>  # ------------------------------------------------------------------------------\n>  # Lint stage - Run checkstyle.py and check merge suitability\n> @@ -470,3 +490,19 @@ test-lc-compliance:virtual:\n>    artifacts:\n>      reports:\n>        junit: build/lc-compliance-report.xml\n> +\n> +test-lc-compliance:rkisp1:debix-a:\n> +  stage: test\n> +  needs:\n> +    - job: lava-jobs-as-artifacts\n> +      artifacts: true\n> +    - job: build-deb-for-lc-compliance-testing\n> +      artifacts: true\n> +      parallel:\n> +        matrix:\n> +          - ARCH:\n> +            - arm64\n> +  tags:\n> +    - libcamera-lava\n> +  script:\n> +    - submit .gitlab-ci/on-device-testing/lava-debix-a.yml\n> --\n> 2.52.0","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 D4ABEC31E9\n\tfor <parsemail@patchwork.libcamera.org>;\n\tWed,  4 Feb 2026 09:36:52 +0000 (UTC)","from lancelot.ideasonboard.com (localhost [IPv6:::1])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTP id 068976202D;\n\tWed,  4 Feb 2026 10:36:52 +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 9DA0E615B2\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tWed,  4 Feb 2026 10:36:50 +0100 (CET)","from ideasonboard.com (net-93-65-100-155.cust.vodafonedsl.it\n\t[93.65.100.155])\n\tby perceval.ideasonboard.com (Postfix) with ESMTPSA id 776E1833;\n\tWed,  4 Feb 2026 10:36:08 +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=\"ixrYjvoE\"; dkim-atps=neutral","DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/simple; d=ideasonboard.com;\n\ts=mail; t=1770197768;\n\tbh=DJfsE6nTt/YNb0QBemnVvoztil5+5U0q8epQzso/uI4=;\n\th=Date:From:To:Cc:Subject:References:In-Reply-To:From;\n\tb=ixrYjvoEyPAR6weYZ5ebF1XalpPtTZ+lzhnboIvLqBBTTWlqLKI9ukjuq9bMPlcWk\n\tHeVCxHNYcys6Ax1DyRJItW4I9MfV5tZezbnDGRfkjIBUpjIHkNUVbVAJzUBD9bo2A0\n\twV5spJlI+bqkBXiNJVW+ude7WvkyZ4xOU1opAjik=","Date":"Wed, 4 Feb 2026 10:36:47 +0100","From":"Jacopo Mondi <jacopo.mondi@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 v2 3/5] Add job to run lc-compliance\n\tvia lava","Message-ID":"<aYMSjNvgZuAowcDE@zed>","References":"<20260130160254.1770742-1-barnabas.pocze@ideasonboard.com>\n\t<20260130160254.1770742-4-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":"<20260130160254.1770742-4-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":38144,"web_url":"https://patchwork.libcamera.org/comment/38144/","msgid":"<3efadd4f-94e1-4197-b016-c434036eba82@ideasonboard.com>","date":"2026-02-09T10:13:26","subject":"Re: [libcamera-ci] [RFC PATCH v2 3/5] Add job to run lc-compliance\n\tvia lava","submitter":{"id":216,"url":"https://patchwork.libcamera.org/api/people/216/","name":"Barnabás Pőcze","email":"barnabas.pocze@ideasonboard.com"},"content":"2026. 02. 04. 10:36 keltezéssel, Jacopo Mondi írta:\n> Hi Barnabás\n> \n> On Fri, Jan 30, 2026 at 05:02:52PM +0100, Barnabás Pőcze wrote:\n>> Add a job that runs lc-compliance via lava on real hardware.\n>>\n>> Signed-off-by: Barnabás Pőcze <barnabas.pocze@ideasonboard.com>\n>> ---\n>>   .gitlab-ci/on-device-testing/lava-debix-a.yml | 40 +++++++++++++++++++\n>>   gitlab-ci.yml                                 | 36 +++++++++++++++++\n>>   2 files changed, 76 insertions(+)\n>>   create mode 100644 .gitlab-ci/on-device-testing/lava-debix-a.yml\n>>\n>> diff --git a/.gitlab-ci/on-device-testing/lava-debix-a.yml b/.gitlab-ci/on-device-testing/lava-debix-a.yml\n>> new file mode 100644\n>> index 0000000..4a9b9b6\n>> --- /dev/null\n>> +++ b/.gitlab-ci/on-device-testing/lava-debix-a.yml\n>> @@ -0,0 +1,40 @@\n>> +device_type: debix-a\n>> +job_name: debix-a lc-compliance test\n>> +\n>> +timeouts:\n>> +  job:\n>> +    minutes: 30\n>> +  action:\n>> +    minutes: 5\n>> +  connection:\n>> +    minutes: 6\n>> +priority: medium\n>> +visibility: public\n>> +\n>> +actions:\n>> +- boot:\n>> +    method: minimal\n>> +    timeout:\n>> +      minutes: 6\n>> +    auto_login:\n>> +      login_prompt: 'boot2container login:'\n>> +      username: \"root\"\n>> +      password_prompt: \"Password:\"\n>> +      password: \"root\"\n>> +    prompts: [\":~#\"]\n>> +- test:\n>> +    interactive:\n>> +    - name: lc-compliance\n>> +      prompts: [\":~#\"]\n>> +      echo: discard\n>> +      script:\n>> +      - command: >-\n>> +          /opt/test-libcamera.sh\n>> +          \"{{ job.LIBCAMERA_DEB_URL }}\"\n>> +          /base/soc@0/bus@30800000/i2c@30a30000/camera@10\n>> +          && echo \"lc-compliance test passed\"\n>> +          || echo \"lc-compliance test failed\"\n>> +        successes:\n>> +          - message: \"lc-compliance test passed\"\n>> +        failures:\n>> +          - message: \"lc-compliance test failed\"\n>> diff --git a/gitlab-ci.yml b/gitlab-ci.yml\n>> index 66f4b5b..37ffc58 100644\n>> --- a/gitlab-ci.yml\n>> +++ b/gitlab-ci.yml\n>> @@ -355,6 +355,7 @@ build-deb-for-lc-compliance-testing:\n>>           --name libcamera\n>>           --description \"$CI_COMMIT_SHA (job $CI_JOB_ID, pipeline $CI_PIPELINE_ID, project $CI_PROJECT_PATH)\"\n>>           --version \"0.0.0\"\n>> +    - echo \"LIBCAMERA_DEB_URL=$CI_API_V4_URL/projects/$CI_PROJECT_ID/jobs/$CI_JOB_ID/artifacts/libcamera.deb\" >> env\n>>     artifacts:\n>>       when: always\n>>       expire_in: 1 week\n>> @@ -362,11 +363,30 @@ build-deb-for-lc-compliance-testing:\n>>         - build/meson-logs/\n>>         - build/build.ninja\n>>         - \"*.deb\"\n>> +    reports:\n>> +      dotenv: env\n>>     parallel:\n>>       matrix:\n>>         - ARCH:\n>>           - arm64\n>>\n>> +lava-jobs-as-artifacts:\n>> +  extends:\n>> +    - .fdo.distribution-image@debian\n>> +    - .libcamera-ci.debian:13\n>> +    - .libcamera-ci.scripts\n>> +  stage: build\n>> +  needs:\n>> +    - job: container-debian:13\n>> +      artifacts: false\n>> +  variables:\n>> +    GIT_STRATEGY: none\n>> +  script:\n>> +    - echo \"saving lava job definitions as artifacts for lava-gitlab-runner\"\n>> +  artifacts:\n>> +    expire_in: 1w\n>> +    paths:\n>> +      - $CI_PROJECT_DIR/.gitlab-ci/on-device-testing/lava-*\n> \n> Looking at how we did it with Soraka\n> https://gitlab.freedesktop.org/camera/libcamera-ci/-/commit/c3a6d616470f577abd01fb2fc2ecd6caf877e0e9\n> \n> I wonder the lava job can't be added as an artifact to the job that\n> builds the .deb ? The only reason is to avoid spawning a container\n> just to save an artifact. Is it a valid concern ?\n\nI think I did it like this to avoid having to download the deb archive to\nlava-gitlab-runner. But it turns out that is unavoidable. I will change it\nso that the build job has the lava files as artifacts.\n\n\n\n> \n>>\n>>   # ------------------------------------------------------------------------------\n>>   # Lint stage - Run checkstyle.py and check merge suitability\n>> @@ -470,3 +490,19 @@ test-lc-compliance:virtual:\n>>     artifacts:\n>>       reports:\n>>         junit: build/lc-compliance-report.xml\n>> +\n>> +test-lc-compliance:rkisp1:debix-a:\n>> +  stage: test\n>> +  needs:\n>> +    - job: lava-jobs-as-artifacts\n>> +      artifacts: true\n>> +    - job: build-deb-for-lc-compliance-testing\n>> +      artifacts: true\n>> +      parallel:\n>> +        matrix:\n>> +          - ARCH:\n>> +            - arm64\n>> +  tags:\n>> +    - libcamera-lava\n>> +  script:\n>> +    - submit .gitlab-ci/on-device-testing/lava-debix-a.yml\n>> --\n>> 2.52.0","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 8EFA3BD78E\n\tfor <parsemail@patchwork.libcamera.org>;\n\tMon,  9 Feb 2026 10:13:32 +0000 (UTC)","from lancelot.ideasonboard.com (localhost [IPv6:::1])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTP id A65B6620CB;\n\tMon,  9 Feb 2026 11:13:31 +0100 (CET)","from perceval.ideasonboard.com (perceval.ideasonboard.com\n\t[213.167.242.64])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTPS id 4C6EE615B2\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tMon,  9 Feb 2026 11:13:30 +0100 (CET)","from [192.168.33.63] (185.221.141.206.nat.pool.zt.hu\n\t[185.221.141.206])\n\tby perceval.ideasonboard.com (Postfix) with ESMTPSA id 8D78663F;\n\tMon,  9 Feb 2026 11:12:44 +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=\"TW2HAtM6\"; dkim-atps=neutral","DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/simple; d=ideasonboard.com;\n\ts=mail; t=1770631964;\n\tbh=3M/YEdH/RhTAiAIu19IMtmaQwvPtxMlw7LzJVrjI49k=;\n\th=Date:Subject:To:Cc:References:From:In-Reply-To:From;\n\tb=TW2HAtM66KZ0MrmI4gfzuHGZV/Lyck1eE3PI/uKzI8rvHz1m68vt3SNfXeNr4hFDA\n\tOrdru4HAIDs289q/8McY92kVscs0erYKq+Paq2IVd25sjG50uTqz8zWTMT3OJG0Nmd\n\tdJzz51akkGQthiHE26k96s44lcpYvRchDq3vjrNE=","Message-ID":"<3efadd4f-94e1-4197-b016-c434036eba82@ideasonboard.com>","Date":"Mon, 9 Feb 2026 11:13:26 +0100","MIME-Version":"1.0","User-Agent":"Mozilla Thunderbird","Subject":"Re: [libcamera-ci] [RFC PATCH v2 3/5] Add job to run lc-compliance\n\tvia lava","To":"Jacopo Mondi <jacopo.mondi@ideasonboard.com>","Cc":"libcamera-devel@lists.libcamera.org","References":"<20260130160254.1770742-1-barnabas.pocze@ideasonboard.com>\n\t<20260130160254.1770742-4-barnabas.pocze@ideasonboard.com>\n\t<aYMSjNvgZuAowcDE@zed>","From":"=?utf-8?q?Barnab=C3=A1s_P=C5=91cze?= <barnabas.pocze@ideasonboard.com>","Content-Language":"en-US, hu-HU","In-Reply-To":"<aYMSjNvgZuAowcDE@zed>","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>"}}]