[{"id":38893,"web_url":"https://patchwork.libcamera.org/comment/38893/","msgid":"<177874608967.466049.3844797952132420825@localhost>","date":"2026-05-14T08:08:09","subject":"Re: [libcamera-ci] [PATCH v3 1/2] Split documentation build into\n\tseparate build step","submitter":{"id":184,"url":"https://patchwork.libcamera.org/api/people/184/","name":"Stefan Klug","email":"stefan.klug@ideasonboard.com"},"content":"Hi Laurent,\n\nThank you for the fixes. I like that we can now build the docs for the\nolder libcamera versions also :-)\n\nQuoting Laurent Pinchart (2026-05-13 23:26:11)\n> From: Stefan Klug <stefan.klug@ideasonboard.com>\n> \n> Create a separate build step that builds the docs and merges the html\n> docs and the api docs into a single docs directory.\n> \n> Drop the documentation build from the build-full step as it is no longer\n> needed there.\n> \n> Signed-off-by: Stefan Klug <stefan.klug@ideasonboard.com>\n> Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>\n\nLooks all good to me.\n\nReviewed-by: Stefan Klug <stefan.klug@ideasonboard.com>\n\nRegards,\nStefan\n\n> ---\n> Changes since v2:\n> \n> - Don't run libcamera_install_pkgs\n> - Only build the documentation target\n> - Install to 'install' instead of '$(pwd)/install' as in other jobs\n> - Move public and internal API docs to the correct location\n> - Install with --no-rebuild\n> - Add meson-logs/ and build.ninja to artifacts (requested by Barnabás)\n> - Use release build\n> - Use minimal meson options\n> ---\n>  .gitlab-ci/build-libcamera-docs.sh | 42 ++++++++++++++++++++++++++++++\n>  gitlab-ci.yml                      | 33 ++++++++++++++++++++---\n>  2 files changed, 71 insertions(+), 4 deletions(-)\n>  create mode 100755 .gitlab-ci/build-libcamera-docs.sh\n> \n> diff --git a/.gitlab-ci/build-libcamera-docs.sh b/.gitlab-ci/build-libcamera-docs.sh\n> new file mode 100755\n> index 000000000000..26aec0813007\n> --- /dev/null\n> +++ b/.gitlab-ci/build-libcamera-docs.sh\n> @@ -0,0 +1,42 @@\n> +#!/bin/bash\n> +\n> +# SPDX-License-Identifier: GPL-2.0-or-later\n> +# SPDX-FileCopyrightText: © 2026 Ideas on Board\n> +#\n> +# Build libcamera docs and collect them in ./docs\n> +\n> +set -e\n> +\n> +source \"$(dirname \"$0\")/lib.sh\"\n> +source \"$(dirname \"$0\")/build-libcamera-common.sh\"\n> +\n> +libcamera_build_docs() {\n> +       echo \"Building libcamera docs\"\n> +\n> +       meson compile -C build -j$BUILD_CONCURRENT_JOBS documentation\n> +\n> +       echo \"Installing docs\"\n> +       rm -rf build/install\n> +\n> +       meson install -C build \\\n> +               --destdir install \\\n> +               --no-rebuild \\\n> +               --tags doc,doc-internal\n> +\n> +       local doc_dir=(build/install/usr/local/share/doc/libcamera-*)\n> +\n> +       rm -rf docs\n> +       mv \"${doc_dir}/html\" docs\n> +\n> +       # Move the internal and public API directories to the correct location\n> +       # in case the libcamera documentation post-install script has not run.\n> +       for api in internal-api public-api ; do\n> +               if [[ -d \"${doc_dir}/${api}\" ]] ; then\n> +                       rm -rf \"docs/${api}\"\n> +                       mv \"${doc_dir}/${api}\" docs/\n> +               fi\n> +       done\n> +}\n> +\n> +run libcamera_setup\n> +run libcamera_build_docs collapsed\n> diff --git a/gitlab-ci.yml b/gitlab-ci.yml\n> index 2b376c5da1ee..278e69079c15 100644\n> --- a/gitlab-ci.yml\n> +++ b/gitlab-ci.yml\n> @@ -209,10 +209,6 @@ build-full:debian:13:\n>        - ARCH: amd64\n>          CC: gcc-14\n>          CXX: g++-14\n> -        MESON_OPTIONS: >-\n> -          ${MESON_ALL_OPTIONS}\n> -          -D documentation=enabled\n> -          -D doc_werror=true\n>        - ARCH: amd64\n>          BUILD_TYPE: release\n>          CC: gcc-14\n> @@ -301,6 +297,35 @@ build-package:debug:\n>        - ARCH: amd64\n>        - ARCH: arm64\n>  \n> +# Build documentation.\n> +build-docs:\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> +  script:\n> +    - $CI_PROJECT_DIR/.gitlab-ci/build-libcamera-docs.sh\n> +  artifacts:\n> +    name: libcamera-docs-${CI_COMMIT_SHA}\n> +    when: always\n> +    expire_in: 1 week\n> +    paths:\n> +      - build/meson-logs/\n> +      - build/build.ninja\n> +      - docs\n> +  variables:\n> +    BUILD_TYPE: release\n> +    MESON_OPTIONS: >-\n> +      --auto-features disabled\n> +      -D pipelines=[]\n> +      -D test=false\n> +      -D documentation=enabled\n> +      -D doc_werror=true\n> +\n>  # ------------------------------------------------------------------------------\n>  # Lint stage - Run checkstyle.py and check merge suitability\n>  # ------------------------------------------------------------------------------\n> -- \n> Regards,\n> \n> Laurent Pinchart\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 1E4DCBDCBC\n\tfor <parsemail@patchwork.libcamera.org>;\n\tThu, 14 May 2026 08:08:15 +0000 (UTC)","from lancelot.ideasonboard.com (localhost [IPv6:::1])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTP id 5F52362FB1;\n\tThu, 14 May 2026 10:08:14 +0200 (CEST)","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 B685F62FB1\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tThu, 14 May 2026 10:08:12 +0200 (CEST)","from ideasonboard.com (unknown\n\t[IPv6:2a00:6020:448c:6c00:1c97:ae49:136:40fb])\n\tby perceval.ideasonboard.com (Postfix) with UTF8SMTPSA id 9AE22103F; \n\tThu, 14 May 2026 10:08:03 +0200 (CEST)"],"Authentication-Results":"lancelot.ideasonboard.com; dkim=pass (1024-bit key;\n\tunprotected) header.d=ideasonboard.com header.i=@ideasonboard.com\n\theader.b=\"eTNFDv06\"; dkim-atps=neutral","DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/simple; d=ideasonboard.com;\n\ts=mail; t=1778746083;\n\tbh=mgapnIa2I3LcmAHr8U00TkdPVTfi0oEpL30iVToEfvE=;\n\th=In-Reply-To:References:Subject:From:Cc:To:Date:From;\n\tb=eTNFDv06ExpkTsotk96bgTaSIsxcyAaYqQgqWhFAtxDpdf+XKZkhV+J7okf/s2t94\n\t+qDCIH6hN6JCd0X+6tkv3Bn5W4At3V0DRzU6FFXtGSID+JEZk3KK4PO7dwRKNW2qFI\n\t9gNJ6n4bk7EfArUBn+M9dwzckqgzMkKj7pPjZV6A=","Content-Type":"text/plain; charset=\"utf-8\"","MIME-Version":"1.0","Content-Transfer-Encoding":"quoted-printable","In-Reply-To":"<20260513212613.362445-2-laurent.pinchart@ideasonboard.com>","References":"<20260513212613.362445-1-laurent.pinchart@ideasonboard.com>\n\t<20260513212613.362445-2-laurent.pinchart@ideasonboard.com>","Subject":"Re: [libcamera-ci] [PATCH v3 1/2] Split documentation build into\n\tseparate build step","From":"Stefan Klug <stefan.klug@ideasonboard.com>","Cc":"","To":"Laurent Pinchart <laurent.pinchart@ideasonboard.com>,\n\tlibcamera-devel@lists.libcamera.org","Date":"Thu, 14 May 2026 10:08:09 +0200","Message-ID":"<177874608967.466049.3844797952132420825@localhost>","User-Agent":"alot/0.12.dev8+g2c003385c862.d20250602","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":38895,"web_url":"https://patchwork.libcamera.org/comment/38895/","msgid":"<acaeadc8-ef9b-4156-8ae5-9149c958b0ea@ideasonboard.com>","date":"2026-05-14T08:48:18","subject":"Re: [libcamera-ci] [PATCH v3 1/2] Split documentation build into\n\tseparate build step","submitter":{"id":216,"url":"https://patchwork.libcamera.org/api/people/216/","name":"Barnabás Pőcze","email":"barnabas.pocze@ideasonboard.com"},"content":"2026. 05. 13. 23:26 keltezéssel, Laurent Pinchart írta:\n> From: Stefan Klug <stefan.klug@ideasonboard.com>\n> \n> Create a separate build step that builds the docs and merges the html\n> docs and the api docs into a single docs directory.\n> \n> Drop the documentation build from the build-full step as it is no longer\n> needed there.\n> \n> Signed-off-by: Stefan Klug <stefan.klug@ideasonboard.com>\n> Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>\n> ---\n> Changes since v2:\n> \n> - Don't run libcamera_install_pkgs\n> - Only build the documentation target\n> - Install to 'install' instead of '$(pwd)/install' as in other jobs\n> - Move public and internal API docs to the correct location\n> - Install with --no-rebuild\n> - Add meson-logs/ and build.ninja to artifacts (requested by Barnabás)\n> - Use release build\n> - Use minimal meson options\n> ---\n\nLooks ok to me.\n\nReviewed-by: Barnabás Pőcze <barnabas.pocze@ideasonboard.com>\n\n\n>   .gitlab-ci/build-libcamera-docs.sh | 42 ++++++++++++++++++++++++++++++\n>   gitlab-ci.yml                      | 33 ++++++++++++++++++++---\n>   2 files changed, 71 insertions(+), 4 deletions(-)\n>   create mode 100755 .gitlab-ci/build-libcamera-docs.sh\n> \n> diff --git a/.gitlab-ci/build-libcamera-docs.sh b/.gitlab-ci/build-libcamera-docs.sh\n> new file mode 100755\n> index 000000000000..26aec0813007\n> --- /dev/null\n> +++ b/.gitlab-ci/build-libcamera-docs.sh\n> @@ -0,0 +1,42 @@\n> +#!/bin/bash\n> +\n> +# SPDX-License-Identifier: GPL-2.0-or-later\n> +# SPDX-FileCopyrightText: © 2026 Ideas on Board\n> +#\n> +# Build libcamera docs and collect them in ./docs\n> +\n> +set -e\n> +\n> +source \"$(dirname \"$0\")/lib.sh\"\n> +source \"$(dirname \"$0\")/build-libcamera-common.sh\"\n> +\n> +libcamera_build_docs() {\n> +\techo \"Building libcamera docs\"\n> +\n> +\tmeson compile -C build -j$BUILD_CONCURRENT_JOBS documentation\n> +\n> +\techo \"Installing docs\"\n> +\trm -rf build/install\n> +\n> +\tmeson install -C build \\\n> +\t\t--destdir install \\\n> +\t\t--no-rebuild \\\n> +\t\t--tags doc,doc-internal\n> +\n> +\tlocal doc_dir=(build/install/usr/local/share/doc/libcamera-*)\n> +\n> +\trm -rf docs\n> +\tmv \"${doc_dir}/html\" docs\n> +\n> +\t# Move the internal and public API directories to the correct location\n> +\t# in case the libcamera documentation post-install script has not run.\n> +\tfor api in internal-api public-api ; do\n> +\t\tif [[ -d \"${doc_dir}/${api}\" ]] ; then\n> +\t\t\trm -rf \"docs/${api}\"\n> +\t\t\tmv \"${doc_dir}/${api}\" docs/\n> +\t\tfi\n> +\tdone\n> +}\n> +\n> +run libcamera_setup\n> +run libcamera_build_docs collapsed\n> diff --git a/gitlab-ci.yml b/gitlab-ci.yml\n> index 2b376c5da1ee..278e69079c15 100644\n> --- a/gitlab-ci.yml\n> +++ b/gitlab-ci.yml\n> @@ -209,10 +209,6 @@ build-full:debian:13:\n>         - ARCH: amd64\n>           CC: gcc-14\n>           CXX: g++-14\n> -        MESON_OPTIONS: >-\n> -          ${MESON_ALL_OPTIONS}\n> -          -D documentation=enabled\n> -          -D doc_werror=true\n>         - ARCH: amd64\n>           BUILD_TYPE: release\n>           CC: gcc-14\n> @@ -301,6 +297,35 @@ build-package:debug:\n>         - ARCH: amd64\n>         - ARCH: arm64\n>   \n> +# Build documentation.\n> +build-docs:\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> +  script:\n> +    - $CI_PROJECT_DIR/.gitlab-ci/build-libcamera-docs.sh\n> +  artifacts:\n> +    name: libcamera-docs-${CI_COMMIT_SHA}\n> +    when: always\n> +    expire_in: 1 week\n> +    paths:\n> +      - build/meson-logs/\n> +      - build/build.ninja\n> +      - docs\n> +  variables:\n> +    BUILD_TYPE: release\n> +    MESON_OPTIONS: >-\n> +      --auto-features disabled\n> +      -D pipelines=[]\n> +      -D test=false\n> +      -D documentation=enabled\n> +      -D doc_werror=true\n> +\n>   # ------------------------------------------------------------------------------\n>   # Lint stage - Run checkstyle.py and check merge suitability\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 2BC8CBDCBC\n\tfor <parsemail@patchwork.libcamera.org>;\n\tThu, 14 May 2026 08:48:25 +0000 (UTC)","from lancelot.ideasonboard.com (localhost [IPv6:::1])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTP id 6937B62FE8;\n\tThu, 14 May 2026 10:48:24 +0200 (CEST)","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 54DB462FB1\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tThu, 14 May 2026 10:48:22 +0200 (CEST)","from [192.168.33.26] (185.182.215.166.nat.pool.zt.hu\n\t[185.182.215.166])\n\tby perceval.ideasonboard.com (Postfix) with ESMTPSA id 03A32454;\n\tThu, 14 May 2026 10:48:12 +0200 (CEST)"],"Authentication-Results":"lancelot.ideasonboard.com; dkim=pass (1024-bit key;\n\tunprotected) header.d=ideasonboard.com header.i=@ideasonboard.com\n\theader.b=\"JW01SRIp\"; dkim-atps=neutral","DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/simple; d=ideasonboard.com;\n\ts=mail; t=1778748493;\n\tbh=ti08kMc5ATMFV7MZ63wvlCSRWSbS+lRghZ0KVqnHvJg=;\n\th=Date:Subject:To:Cc:References:From:In-Reply-To:From;\n\tb=JW01SRIpm01QfE7BYFAJAAixbMzh8qG6TaeJyatJCMiCIVw67nFaP6aNE41myeq04\n\tkmZd5RKWhK+ieqL6cUW3DThiBR8l1JBOXXnbxaFxgzaZDJTU0IHbWVtuomaAMsrUwD\n\t+kEF3qwZnVmsj0bUdwGFYuw0eth1jyTRSS8+o8Vk=","Message-ID":"<acaeadc8-ef9b-4156-8ae5-9149c958b0ea@ideasonboard.com>","Date":"Thu, 14 May 2026 10:48:18 +0200","MIME-Version":"1.0","User-Agent":"Mozilla Thunderbird","Subject":"Re: [libcamera-ci] [PATCH v3 1/2] Split documentation build into\n\tseparate build step","To":"Laurent Pinchart <laurent.pinchart@ideasonboard.com>,\n\tlibcamera-devel@lists.libcamera.org","Cc":"Stefan Klug <stefan.klug@ideasonboard.com>","References":"<20260513212613.362445-1-laurent.pinchart@ideasonboard.com>\n\t<20260513212613.362445-2-laurent.pinchart@ideasonboard.com>","From":"=?utf-8?q?Barnab=C3=A1s_P=C5=91cze?= <barnabas.pocze@ideasonboard.com>","Content-Language":"en-US, hu-HU","In-Reply-To":"<20260513212613.362445-2-laurent.pinchart@ideasonboard.com>","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>"}}]