From patchwork Sun Jul 27 01:11:21 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Laurent Pinchart X-Patchwork-Id: 23977 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 90DDFBDCC1 for ; Sun, 27 Jul 2025 01:11:38 +0000 (UTC) Received: from lancelot.ideasonboard.com (localhost [IPv6:::1]) by lancelot.ideasonboard.com (Postfix) with ESMTP id 53DA469121; Sun, 27 Jul 2025 03:11:38 +0200 (CEST) Authentication-Results: lancelot.ideasonboard.com; dkim=pass (1024-bit key; unprotected) header.d=ideasonboard.com header.i=@ideasonboard.com header.b="jUKEhck8"; dkim-atps=neutral Received: from perceval.ideasonboard.com (perceval.ideasonboard.com [IPv6:2001:4b98:dc2:55:216:3eff:fef7:d647]) by lancelot.ideasonboard.com (Postfix) with ESMTPS id 35D46614B6 for ; Sun, 27 Jul 2025 03:11:31 +0200 (CEST) Received: from pendragon.ideasonboard.com (81-175-209-231.bb.dnainternet.fi [81.175.209.231]) by perceval.ideasonboard.com (Postfix) with UTF8SMTPSA id 3FE666A8 for ; Sun, 27 Jul 2025 03:10:50 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=ideasonboard.com; s=mail; t=1753578650; bh=UPyo88ZteCZkjUI+TwVLzP3ucVIVGR/WcQtaNA3XZSA=; h=From:To:Subject:Date:In-Reply-To:References:From; b=jUKEhck8z/0TYSj/6gp/rNIq+3jr7+Kq0MjHVolAuMmPTS7hp2IaUbzD0SLgnjKD6 JBdbLatiKCGOCG3/WNjbU05ezk/K/ir/W9sOZr68FHE4UMSYlV6AOw4ZX4POgdXrlB elvdvCbfiDDHpNRSxQEAZ1D1jfj2ilSIzwxfiKW4= From: Laurent Pinchart To: libcamera-devel@lists.libcamera.org Subject: [libcamera-ci] [PATCH 1/3] Avoid duplicated documentation builds Date: Sun, 27 Jul 2025 04:11:21 +0300 Message-ID: <20250727011123.31634-2-laurent.pinchart@ideasonboard.com> X-Mailer: git-send-email 2.49.1 In-Reply-To: <20250727011123.31634-1-laurent.pinchart@ideasonboard.com> References: <20250727011123.31634-1-laurent.pinchart@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" The libcamera documentation is built as part of every build job. This wastes CPU cycles. Build it only in the gcc 12 debug job, chosen semi-randomly. We could also split the documentation build to a separate job, but short-running jobs are discouraged as they waste significant amount of resources to spawn the container in the runner. Signed-off-by: Laurent Pinchart --- gitlab-ci.yml | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/gitlab-ci.yml b/gitlab-ci.yml index cad4c2b0c445..03ea7795f3ff 100644 --- a/gitlab-ci.yml +++ b/gitlab-ci.yml @@ -16,7 +16,7 @@ variables: -D b_sanitize=address -D cam=enabled -D cpp_debugstl=true - -D documentation=enabled + -D documentation=disabled -D gstreamer=enabled -D lc-compliance=enabled -D pipelines=['all'] @@ -170,13 +170,16 @@ build-full:debian:12: variables: MESON_OPTIONS: >- ${MESON_ALL_OPTIONS} - -D doc_werror=true parallel: matrix: - ARCH: amd64 BUILD_TYPE: debug CC: gcc-12 CXX: g++-12 + MESON_OPTIONS: >- + ${MESON_ALL_OPTIONS} + -D documentation=enabled + -D doc_werror=true - ARCH: amd64 BUILD_TYPE: release CC: gcc-12 From patchwork Sun Jul 27 01:11:22 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Laurent Pinchart X-Patchwork-Id: 23978 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 2AAD9BDCC1 for ; Sun, 27 Jul 2025 01:11:41 +0000 (UTC) Received: from lancelot.ideasonboard.com (localhost [IPv6:::1]) by lancelot.ideasonboard.com (Postfix) with ESMTP id 6B9A769126; Sun, 27 Jul 2025 03:11:39 +0200 (CEST) Authentication-Results: lancelot.ideasonboard.com; dkim=pass (1024-bit key; unprotected) header.d=ideasonboard.com header.i=@ideasonboard.com header.b="pAStOFRt"; dkim-atps=neutral Received: from perceval.ideasonboard.com (perceval.ideasonboard.com [213.167.242.64]) by lancelot.ideasonboard.com (Postfix) with ESMTPS id 4FEDC69119 for ; Sun, 27 Jul 2025 03:11:33 +0200 (CEST) Received: from pendragon.ideasonboard.com (81-175-209-231.bb.dnainternet.fi [81.175.209.231]) by perceval.ideasonboard.com (Postfix) with UTF8SMTPSA id 4C7866A8 for ; Sun, 27 Jul 2025 03:10:52 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=ideasonboard.com; s=mail; t=1753578652; bh=FuQc/soNymejiq1pykKxrxb9d9wSGOetoEUMzTSkT1c=; h=From:To:Subject:Date:In-Reply-To:References:From; b=pAStOFRtOGy8q58PjUYLz3SJ19aaNfC2xmZvjiM+NcNVuJ9Ztr5Opyf9RO6WTmAEq jurA7znoV2iuu95wbfse4Ojo8RnUoxCdBHelPAbFG4JtUoj7TkAp19GbUNmvJBtKmZ dO3vAIzVKigGUwMMl1V/VQ/6TVWybwPaQriBshXM= From: Laurent Pinchart To: libcamera-devel@lists.libcamera.org Subject: [libcamera-ci] [PATCH 2/3] setup-container: Generalize package installation through pip Date: Sun, 27 Jul 2025 04:11:22 +0300 Message-ID: <20250727011123.31634-3-laurent.pinchart@ideasonboard.com> X-Mailer: git-send-email 2.49.1 In-Reply-To: <20250727011123.31634-1-laurent.pinchart@ideasonboard.com> References: <20250727011123.31634-1-laurent.pinchart@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" When building containers, we favour packages from the Debian repositories, and fall back to pip when minimum version requirements are not met by Debian. This is open-coded for two packages (meson and python3-pygments). Generalize the mechanism in preparation for adding more packages. Signed-off-by: Laurent Pinchart --- .gitlab-ci/setup-container.sh | 43 +++++++++++++++++++---------------- 1 file changed, 24 insertions(+), 19 deletions(-) diff --git a/.gitlab-ci/setup-container.sh b/.gitlab-ci/setup-container.sh index 5e9b89da8431..c8b631c387b5 100755 --- a/.gitlab-ci/setup-container.sh +++ b/.gitlab-ci/setup-container.sh @@ -93,6 +93,11 @@ PKGS_VIRTME_RUNTIME=( udev ) +PKGS_PIP_MIN_VERSIONS=( + 'meson meson 1.2.0 remove' + 'python3-pygments pygments 2.10.0 keep' +) + archs=( amd64 ) declare -A components @@ -192,34 +197,34 @@ dpkg_check_version() { cbuild_fixups() { echo "Applying miscellaneous fixups" - local min_version local pip3_options - local version + local pkg if [[ $FDO_DISTRIBUTION_VERSION != 'bullseye' ]] ; then pip3_options=--break-system-packages fi - # Install meson from pip. - min_version=1.2.0 - version=$(dpkg_version meson) - if dpkg_check_version $version $min_version ; then - echo "meson $version too old, installing $min_version from pip" + # Install packages from pip to ensure minimum versions. + for pkg in "${PKGS_PIP_MIN_VERSIONS[@]}" ; do + pkg=($pkg) + local pkg_name=${pkg[0]} + local pip_name=${pkg[1]} + local min_version=${pkg[2]} + local action=${pkg[3]} - apt remove -y meson - apt install -y python3-pip - pip3 install ${pip3_options} meson==${min_version} - fi + local version=$(dpkg_version $pkg_name) - # Install pygments from pip. - min_version=2.10.0 - version=$(dpkg_version python3-pygments) - if dpkg_check_version $version $min_version ; then - echo "pygments $version too old, installing $min_version from pip" + if dpkg_check_version $version $min_version ; then + echo "$pkg_name $version too old, installing $min_version from pip" - apt install -y python3-pip - pip3 install ${pip3_options} pygments==${min_version} - fi + if [[ $action == 'remove' ]] ; then + apt remove -y ${pkg_name} + fi + + apt install -y python3-pip + pip3 install ${pip3_options} ${pip_name}==${min_version} + fi + done # Create pybind11.pc manually if not provided by the distribution # package. From patchwork Sun Jul 27 01:11:23 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Laurent Pinchart X-Patchwork-Id: 23979 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 5AA32BDCC1 for ; Sun, 27 Jul 2025 01:11:43 +0000 (UTC) Received: from lancelot.ideasonboard.com (localhost [IPv6:::1]) by lancelot.ideasonboard.com (Postfix) with ESMTP id 093086911F; Sun, 27 Jul 2025 03:11:43 +0200 (CEST) Authentication-Results: lancelot.ideasonboard.com; dkim=pass (1024-bit key; unprotected) header.d=ideasonboard.com header.i=@ideasonboard.com header.b="iSIkDMm5"; dkim-atps=neutral Received: from perceval.ideasonboard.com (perceval.ideasonboard.com [IPv6:2001:4b98:dc2:55:216:3eff:fef7:d647]) by lancelot.ideasonboard.com (Postfix) with ESMTPS id 276B469118 for ; Sun, 27 Jul 2025 03:11:35 +0200 (CEST) Received: from pendragon.ideasonboard.com (81-175-209-231.bb.dnainternet.fi [81.175.209.231]) by perceval.ideasonboard.com (Postfix) with UTF8SMTPSA id 0B87E6A8 for ; Sun, 27 Jul 2025 03:10:53 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=ideasonboard.com; s=mail; t=1753578654; bh=CSlkDX/9jNP0G+iD0oTYGiQCfbz/gbqyKN6RI8g6sNY=; h=From:To:Subject:Date:In-Reply-To:References:From; b=iSIkDMm5By9LOGvTZ1mXGEFfWFbLNyaYSvMNFsjwB6Y1pvLp7Ne6iCSCbKY8PoQQQ L+mfmGuutuGe5vJqiq1KbmTl7gBi5QjJmD+Tkk+8PhtJyVgxCcT+ysg9xemFcXzN9t Lw0jRNrgOCOohNjbv3ViY86/w2MuGtuM+wj6ECrM= From: Laurent Pinchart To: libcamera-devel@lists.libcamera.org Subject: [libcamera-ci] [PATCH 3/3] Add python3-sphinxcontrib.doxylink package to container images Date: Sun, 27 Jul 2025 04:11:23 +0300 Message-ID: <20250727011123.31634-4-laurent.pinchart@ideasonboard.com> X-Mailer: git-send-email 2.49.1 In-Reply-To: <20250727011123.31634-1-laurent.pinchart@ideasonboard.com> References: <20250727011123.31634-1-laurent.pinchart@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" libcamera will soon require python3-sphinxcontrib.doxylink to build the documentation. Add it to the container images. Signed-off-by: Laurent Pinchart --- .gitlab-ci/setup-container.sh | 3 +++ gitlab-ci.yml | 6 +++--- 2 files changed, 6 insertions(+), 3 deletions(-) diff --git a/.gitlab-ci/setup-container.sh b/.gitlab-ci/setup-container.sh index c8b631c387b5..32b23789e70a 100755 --- a/.gitlab-ci/setup-container.sh +++ b/.gitlab-ci/setup-container.sh @@ -49,8 +49,10 @@ PKGS_LIBCAMERA_RUNTIME=( python3-autopep8 python3-dev python3-jinja2 + python3-pyparsing python3-ply python3-sphinx + python3-sphinxcontrib.doxylink python3-yaml qt6-tools-dev-tools shellcheck @@ -96,6 +98,7 @@ PKGS_VIRTME_RUNTIME=( PKGS_PIP_MIN_VERSIONS=( 'meson meson 1.2.0 remove' 'python3-pygments pygments 2.10.0 keep' + 'python3-sphinxcontrib.doxylink sphinxcontrib-doxylink 1.6.1 remove' ) archs=( amd64 ) diff --git a/gitlab-ci.yml b/gitlab-ci.yml index 03ea7795f3ff..57607dbfe7e4 100644 --- a/gitlab-ci.yml +++ b/gitlab-ci.yml @@ -59,17 +59,17 @@ include: .libcamera-ci.debian:11: variables: FDO_DISTRIBUTION_VERSION: 'bullseye' - FDO_DISTRIBUTION_TAG: '2025-07-25.1' + FDO_DISTRIBUTION_TAG: '2025-07-27.1' .libcamera-ci.debian:12: variables: FDO_DISTRIBUTION_VERSION: 'bookworm' - FDO_DISTRIBUTION_TAG: '2025-02-27.1' + FDO_DISTRIBUTION_TAG: '2025-07-27.1' .libcamera-ci.debian:13: variables: FDO_DISTRIBUTION_VERSION: 'trixie' - FDO_DISTRIBUTION_TAG: '2025-07-25.1' + FDO_DISTRIBUTION_TAG: '2025-07-27.1' .container-debian: extends: