[{"id":38270,"web_url":"https://patchwork.libcamera.org/comment/38270/","msgid":"<177183900656.1230693.7672533762382890181@ping.linuxembedded.co.uk>","date":"2026-02-23T09:30:06","subject":"Re: [libcamera-ci] [RFC PATCH v1] Add clang builds with libstdc++","submitter":{"id":4,"url":"https://patchwork.libcamera.org/api/people/4/","name":"Kieran Bingham","email":"kieran.bingham@ideasonboard.com"},"content":"Quoting Barnabás Pőcze (2026-02-16 14:28:43)\n> Currently clang is only used to test libc++ builds. This, however, prevents\n> the build testing of e.g. qcam since the packaged qt libraries use libstdc++,\n> so it needs to be disabled when using libc++.\n> \n> So duplicate every current clang job for libstdc++ testing.\n> \n> Link: https://gitlab.freedesktop.org/camera/libcamera/-/issues/315\n> Signed-off-by: Barnabás Pőcze <barnabas.pocze@ideasonboard.com>\n> ---\n> Maybe it's not worth duplicating each clang job, but adding at least one\n> (clang, libstdc++) build is probably worth it.\n\nI believe the freedesktop infrastructure have told us that the most\n'expensive' part of CI is setting up the runner for the jobs, and we\nhave quite a few per run already.\n\n\nIs it easy/possible for us to combine these additional builds into a\nsingle job somehow?\n\nI think the actual compilation test is 'cheap' once the runner has been\nset up, so it might be helpful for us to look at how to combine more\ntests, then it would be easy to also test many combinations of clang?\n\n--\nKieran\n\n> ---\n>  .gitlab-ci/meson/libstdc++.native |  3 +++\n>  gitlab-ci.yml                     | 36 ++++++++++++++-----------------\n>  2 files changed, 19 insertions(+), 20 deletions(-)\n>  create mode 100644 .gitlab-ci/meson/libstdc++.native\n> \n> diff --git a/.gitlab-ci/meson/libstdc++.native b/.gitlab-ci/meson/libstdc++.native\n> new file mode 100644\n> index 0000000..3116043\n> --- /dev/null\n> +++ b/.gitlab-ci/meson/libstdc++.native\n> @@ -0,0 +1,3 @@\n> +[built-in options]\n> +cpp_args = ['-stdlib=libstdc++']\n> +cpp_link_args = ['-stdlib=libstdc++']\n> diff --git a/gitlab-ci.yml b/gitlab-ci.yml\n> index 6256335..e51266c 100644\n> --- a/gitlab-ci.yml\n> +++ b/gitlab-ci.yml\n> @@ -29,7 +29,12 @@ variables:\n>    # clang fails to link with ASan if --no-undefined is enabled.\n>    MESON_CLANG_OPTIONS: >-\n>      -D b_lundef=false\n> +  MESON_CLANG_LIBCPP_OPTIONS: >-\n> +    ${MESON_CLANG_OPTIONS}\n>      --native-file $CI_PROJECT_DIR/.gitlab-ci/meson/libc++.native\n> +  MESON_CLANG_LIBSTDCPP_OPTIONS: >-\n> +    ${MESON_CLANG_OPTIONS}\n> +    --native-file $CI_PROJECT_DIR/.gitlab-ci/meson/libstdc++.native\n>    PACKAGES: >-\n>      ca-certificates\n>      git\n> @@ -194,21 +199,14 @@ build-full:debian:12:\n>            ${MESON_ALL_OPTIONS}\n>            -D b_sanitize=none\n>        - ARCH: amd64\n> -        BUILD_TYPE: debug\n> -        CC: clang\n> -        CXX: clang++\n> -        MESON_OPTIONS: >-\n> -          ${MESON_ALL_OPTIONS}\n> -          ${MESON_CLANG_OPTIONS}\n> -          -D qcam=disabled\n> -      - ARCH: amd64\n> -        BUILD_TYPE: release\n> +        BUILD_TYPE:\n> +          - debug\n> +          - release\n>          CC: clang\n>          CXX: clang++\n> -        MESON_OPTIONS: >-\n> -          ${MESON_ALL_OPTIONS}\n> -          ${MESON_CLANG_OPTIONS}\n> -          -D qcam=disabled\n> +        MESON_OPTIONS:\n> +          - ${MESON_ALL_OPTIONS} ${MESON_CLANG_LIBCPP_OPTIONS} -D qcam=disabled\n> +          - ${MESON_ALL_OPTIONS} ${MESON_CLANG_LIBSTDCPP_OPTIONS}\n> \n>  build-full:debian:12:as-subproject:\n>    extends:\n> @@ -256,13 +254,11 @@ build-full:debian:13:\n>        - ARCH: amd64\n>          CC: clang\n>          CXX: clang++\n> -        MESON_OPTIONS: >-\n> -          ${MESON_ALL_OPTIONS}\n> -          ${MESON_CLANG_OPTIONS}\n> -          -D qcam=disabled\n> -          -D cpp_debugstl=false\n> -        # `cpp_debugstl=false` needed approximately between meson 1.4.0 and 1.9.3\n> -        # with clang 18 or later due to https://github.com/mesonbuild/meson/issues/13812\n> +        MESON_OPTIONS:\n> +          # `cpp_debugstl=false` needed approximately between meson 1.4.0 and 1.9.3\n> +          # with clang 18 or later due to https://github.com/mesonbuild/meson/issues/13812\n> +          - ${MESON_ALL_OPTIONS} ${MESON_CLANG_LIBCPP_OPTIONS} -D qcam=disabled -D cpp_debugstl=false\n> +          - ${MESON_ALL_OPTIONS} ${MESON_CLANG_LIBSTDCPP_OPTIONS}\n>        - ARCH: armhf\n>        - ARCH: arm64\n> \n> --\n> 2.53.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 AE870BE175\n\tfor <parsemail@patchwork.libcamera.org>;\n\tMon, 23 Feb 2026 09:30:12 +0000 (UTC)","from lancelot.ideasonboard.com (localhost [IPv6:::1])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTP id 7891A6228B;\n\tMon, 23 Feb 2026 10:30:11 +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 9E7A461FA0\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tMon, 23 Feb 2026 10:30:09 +0100 (CET)","from monstersaurus.ideasonboard.com\n\t(cpc89244-aztw30-2-0-cust6594.18-1.cable.virginm.net [86.31.185.195])\n\tby perceval.ideasonboard.com (Postfix) with ESMTPSA id 6E271308;\n\tMon, 23 Feb 2026 10:29:13 +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=\"ZwLcANOC\"; dkim-atps=neutral","DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/simple; d=ideasonboard.com;\n\ts=mail; t=1771838953;\n\tbh=IJVKN/PPgtXhQXVrZuwzxrXnArXwKuOrDfTyRWRzTBY=;\n\th=In-Reply-To:References:Subject:From:To:Date:From;\n\tb=ZwLcANOCEXK9kY/yJFLtq9o1OzDPKfKvpyF0CJcrTebWbJ6glwO8bFxNx35LSYdqr\n\twqsPUppPMBWKCgCw0XDfL5rb5EtcwAzXq2Gsy3rKUzpvBh781nsEGJK763T8yXpSRC\n\tkETXymAHFBiVeRLtsJsr4ZatFNrFmX/hB4X1Rbl0=","Content-Type":"text/plain; charset=\"utf-8\"","MIME-Version":"1.0","Content-Transfer-Encoding":"quoted-printable","In-Reply-To":"<20260216142843.482262-1-barnabas.pocze@ideasonboard.com>","References":"<20260216142843.482262-1-barnabas.pocze@ideasonboard.com>","Subject":"Re: [libcamera-ci] [RFC PATCH v1] Add clang builds with libstdc++","From":"Kieran Bingham <kieran.bingham@ideasonboard.com>","To":"=?utf-8?q?Barnab=C3=A1s_P=C5=91cze?= <barnabas.pocze@ideasonboard.com>,\n\tlibcamera-devel@lists.libcamera.org","Date":"Mon, 23 Feb 2026 09:30:06 +0000","Message-ID":"<177183900656.1230693.7672533762382890181@ping.linuxembedded.co.uk>","User-Agent":"alot/0.9.1","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":38271,"web_url":"https://patchwork.libcamera.org/comment/38271/","msgid":"<4248e889-71ac-4c03-9cf3-edd8a0c03549@ideasonboard.com>","date":"2026-02-23T09:41:41","subject":"Re: [libcamera-ci] [RFC PATCH v1] Add clang builds with libstdc++","submitter":{"id":216,"url":"https://patchwork.libcamera.org/api/people/216/","name":"Barnabás Pőcze","email":"barnabas.pocze@ideasonboard.com"},"content":"2026. 02. 23. 10:30 keltezéssel, Kieran Bingham írta:\n> Quoting Barnabás Pőcze (2026-02-16 14:28:43)\n>> Currently clang is only used to test libc++ builds. This, however, prevents\n>> the build testing of e.g. qcam since the packaged qt libraries use libstdc++,\n>> so it needs to be disabled when using libc++.\n>>\n>> So duplicate every current clang job for libstdc++ testing.\n>>\n>> Link: https://gitlab.freedesktop.org/camera/libcamera/-/issues/315\n>> Signed-off-by: Barnabás Pőcze <barnabas.pocze@ideasonboard.com>\n>> ---\n>> Maybe it's not worth duplicating each clang job, but adding at least one\n>> (clang, libstdc++) build is probably worth it.\n> \n> I believe the freedesktop infrastructure have told us that the most\n> 'expensive' part of CI is setting up the runner for the jobs, and we\n> have quite a few per run already.\n> \n\nIt would be nice to put a concrete number on it then, because otherwise\nany kind of planning is impossible.\n\n\n> \n> Is it easy/possible for us to combine these additional builds into a\n> single job somehow?\n> \n> I think the actual compilation test is 'cheap' once the runner has been\n> set up, so it might be helpful for us to look at how to combine more\n> tests, then it would be easy to also test many combinations of clang?\n\nI believe even all jobs could be combined into a single one if so desired, but\nin my view merging like that definitely goes against the gitlab workflow\n(wrt. variables, matrices, artifacts, etc).\n\n\n> \n> --\n> Kieran\n> \n>> ---\n>>   .gitlab-ci/meson/libstdc++.native |  3 +++\n>>   gitlab-ci.yml                     | 36 ++++++++++++++-----------------\n>>   2 files changed, 19 insertions(+), 20 deletions(-)\n>>   create mode 100644 .gitlab-ci/meson/libstdc++.native\n>>\n>> diff --git a/.gitlab-ci/meson/libstdc++.native b/.gitlab-ci/meson/libstdc++.native\n>> new file mode 100644\n>> index 0000000..3116043\n>> --- /dev/null\n>> +++ b/.gitlab-ci/meson/libstdc++.native\n>> @@ -0,0 +1,3 @@\n>> +[built-in options]\n>> +cpp_args = ['-stdlib=libstdc++']\n>> +cpp_link_args = ['-stdlib=libstdc++']\n>> diff --git a/gitlab-ci.yml b/gitlab-ci.yml\n>> index 6256335..e51266c 100644\n>> --- a/gitlab-ci.yml\n>> +++ b/gitlab-ci.yml\n>> @@ -29,7 +29,12 @@ variables:\n>>     # clang fails to link with ASan if --no-undefined is enabled.\n>>     MESON_CLANG_OPTIONS: >-\n>>       -D b_lundef=false\n>> +  MESON_CLANG_LIBCPP_OPTIONS: >-\n>> +    ${MESON_CLANG_OPTIONS}\n>>       --native-file $CI_PROJECT_DIR/.gitlab-ci/meson/libc++.native\n>> +  MESON_CLANG_LIBSTDCPP_OPTIONS: >-\n>> +    ${MESON_CLANG_OPTIONS}\n>> +    --native-file $CI_PROJECT_DIR/.gitlab-ci/meson/libstdc++.native\n>>     PACKAGES: >-\n>>       ca-certificates\n>>       git\n>> @@ -194,21 +199,14 @@ build-full:debian:12:\n>>             ${MESON_ALL_OPTIONS}\n>>             -D b_sanitize=none\n>>         - ARCH: amd64\n>> -        BUILD_TYPE: debug\n>> -        CC: clang\n>> -        CXX: clang++\n>> -        MESON_OPTIONS: >-\n>> -          ${MESON_ALL_OPTIONS}\n>> -          ${MESON_CLANG_OPTIONS}\n>> -          -D qcam=disabled\n>> -      - ARCH: amd64\n>> -        BUILD_TYPE: release\n>> +        BUILD_TYPE:\n>> +          - debug\n>> +          - release\n>>           CC: clang\n>>           CXX: clang++\n>> -        MESON_OPTIONS: >-\n>> -          ${MESON_ALL_OPTIONS}\n>> -          ${MESON_CLANG_OPTIONS}\n>> -          -D qcam=disabled\n>> +        MESON_OPTIONS:\n>> +          - ${MESON_ALL_OPTIONS} ${MESON_CLANG_LIBCPP_OPTIONS} -D qcam=disabled\n>> +          - ${MESON_ALL_OPTIONS} ${MESON_CLANG_LIBSTDCPP_OPTIONS}\n>>\n>>   build-full:debian:12:as-subproject:\n>>     extends:\n>> @@ -256,13 +254,11 @@ build-full:debian:13:\n>>         - ARCH: amd64\n>>           CC: clang\n>>           CXX: clang++\n>> -        MESON_OPTIONS: >-\n>> -          ${MESON_ALL_OPTIONS}\n>> -          ${MESON_CLANG_OPTIONS}\n>> -          -D qcam=disabled\n>> -          -D cpp_debugstl=false\n>> -        # `cpp_debugstl=false` needed approximately between meson 1.4.0 and 1.9.3\n>> -        # with clang 18 or later due to https://github.com/mesonbuild/meson/issues/13812\n>> +        MESON_OPTIONS:\n>> +          # `cpp_debugstl=false` needed approximately between meson 1.4.0 and 1.9.3\n>> +          # with clang 18 or later due to https://github.com/mesonbuild/meson/issues/13812\n>> +          - ${MESON_ALL_OPTIONS} ${MESON_CLANG_LIBCPP_OPTIONS} -D qcam=disabled -D cpp_debugstl=false\n>> +          - ${MESON_ALL_OPTIONS} ${MESON_CLANG_LIBSTDCPP_OPTIONS}\n>>         - ARCH: armhf\n>>         - ARCH: arm64\n>>\n>> --\n>> 2.53.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 64067C0DA4\n\tfor <parsemail@patchwork.libcamera.org>;\n\tMon, 23 Feb 2026 09:41:48 +0000 (UTC)","from lancelot.ideasonboard.com (localhost [IPv6:::1])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTP id 556C761FA0;\n\tMon, 23 Feb 2026 10:41:47 +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 D942A61FA0\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tMon, 23 Feb 2026 10:41:45 +0100 (CET)","from [192.168.33.88] (185.221.141.206.nat.pool.zt.hu\n\t[185.221.141.206])\n\tby perceval.ideasonboard.com (Postfix) with ESMTPSA id 761CE308;\n\tMon, 23 Feb 2026 10:40:49 +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=\"o2E4/XcG\"; dkim-atps=neutral","DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/simple; d=ideasonboard.com;\n\ts=mail; t=1771839649;\n\tbh=UTTWfmIN/qye8gqitjR/VFG/QLGjQr9Pmawe50wb1GY=;\n\th=Date:Subject:To:References:From:In-Reply-To:From;\n\tb=o2E4/XcG0I9FEBLbxFl872+Q6LER4/ADjDUu/J9uwJbJyoXJbHuOycS67cOqeYipB\n\tXvDpstiZa9hOHMeTOmJPu1EE3Jt3Ipk/oWv18d+WSs66j7Fm2S4hpm6Ikre6t6UtXe\n\tiMZhFLUUSQ6OAs1BpzR5mTJIfcJsdLcBxkpiuJGc=","Message-ID":"<4248e889-71ac-4c03-9cf3-edd8a0c03549@ideasonboard.com>","Date":"Mon, 23 Feb 2026 10:41:41 +0100","MIME-Version":"1.0","User-Agent":"Mozilla Thunderbird","Subject":"Re: [libcamera-ci] [RFC PATCH v1] Add clang builds with libstdc++","To":"Kieran Bingham <kieran.bingham@ideasonboard.com>,\n\tlibcamera-devel@lists.libcamera.org","References":"<20260216142843.482262-1-barnabas.pocze@ideasonboard.com>\n\t<177183900656.1230693.7672533762382890181@ping.linuxembedded.co.uk>","From":"=?utf-8?q?Barnab=C3=A1s_P=C5=91cze?= <barnabas.pocze@ideasonboard.com>","Content-Language":"en-US, hu-HU","In-Reply-To":"<177183900656.1230693.7672533762382890181@ping.linuxembedded.co.uk>","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":38365,"web_url":"https://patchwork.libcamera.org/comment/38365/","msgid":"<5eb0b0b5-d41d-4715-a447-6b0ca924fdea@ideasonboard.com>","date":"2026-03-19T10:45:22","subject":"Re: [libcamera-ci] [RFC PATCH v1] Add clang builds with libstdc++","submitter":{"id":216,"url":"https://patchwork.libcamera.org/api/people/216/","name":"Barnabás Pőcze","email":"barnabas.pocze@ideasonboard.com"},"content":"Hi\n\nI would love to merge this in some capacity. Is this fine (duplicating every clang job),\nor should I send a version that adds only one clang + libstdc++ job?\n\n\n2026. 02. 16. 15:28 keltezéssel, Barnabás Pőcze írta:\n> Currently clang is only used to test libc++ builds. This, however, prevents\n> the build testing of e.g. qcam since the packaged qt libraries use libstdc++,\n> so it needs to be disabled when using libc++.\n> \n> So duplicate every current clang job for libstdc++ testing.\n> \n> Link: https://gitlab.freedesktop.org/camera/libcamera/-/issues/315\n> Signed-off-by: Barnabás Pőcze <barnabas.pocze@ideasonboard.com>\n> ---\n> Maybe it's not worth duplicating each clang job, but adding at least one\n> (clang, libstdc++) build is probably worth it.\n> ---\n>   .gitlab-ci/meson/libstdc++.native |  3 +++\n>   gitlab-ci.yml                     | 36 ++++++++++++++-----------------\n>   2 files changed, 19 insertions(+), 20 deletions(-)\n>   create mode 100644 .gitlab-ci/meson/libstdc++.native\n> \n> diff --git a/.gitlab-ci/meson/libstdc++.native b/.gitlab-ci/meson/libstdc++.native\n> new file mode 100644\n> index 0000000..3116043\n> --- /dev/null\n> +++ b/.gitlab-ci/meson/libstdc++.native\n> @@ -0,0 +1,3 @@\n> +[built-in options]\n> +cpp_args = ['-stdlib=libstdc++']\n> +cpp_link_args = ['-stdlib=libstdc++']\n> diff --git a/gitlab-ci.yml b/gitlab-ci.yml\n> index 6256335..e51266c 100644\n> --- a/gitlab-ci.yml\n> +++ b/gitlab-ci.yml\n> @@ -29,7 +29,12 @@ variables:\n>     # clang fails to link with ASan if --no-undefined is enabled.\n>     MESON_CLANG_OPTIONS: >-\n>       -D b_lundef=false\n> +  MESON_CLANG_LIBCPP_OPTIONS: >-\n> +    ${MESON_CLANG_OPTIONS}\n>       --native-file $CI_PROJECT_DIR/.gitlab-ci/meson/libc++.native\n> +  MESON_CLANG_LIBSTDCPP_OPTIONS: >-\n> +    ${MESON_CLANG_OPTIONS}\n> +    --native-file $CI_PROJECT_DIR/.gitlab-ci/meson/libstdc++.native\n>     PACKAGES: >-\n>       ca-certificates\n>       git\n> @@ -194,21 +199,14 @@ build-full:debian:12:\n>             ${MESON_ALL_OPTIONS}\n>             -D b_sanitize=none\n>         - ARCH: amd64\n> -        BUILD_TYPE: debug\n> -        CC: clang\n> -        CXX: clang++\n> -        MESON_OPTIONS: >-\n> -          ${MESON_ALL_OPTIONS}\n> -          ${MESON_CLANG_OPTIONS}\n> -          -D qcam=disabled\n> -      - ARCH: amd64\n> -        BUILD_TYPE: release\n> +        BUILD_TYPE:\n> +          - debug\n> +          - release\n>           CC: clang\n>           CXX: clang++\n> -        MESON_OPTIONS: >-\n> -          ${MESON_ALL_OPTIONS}\n> -          ${MESON_CLANG_OPTIONS}\n> -          -D qcam=disabled\n> +        MESON_OPTIONS:\n> +          - ${MESON_ALL_OPTIONS} ${MESON_CLANG_LIBCPP_OPTIONS} -D qcam=disabled\n> +          - ${MESON_ALL_OPTIONS} ${MESON_CLANG_LIBSTDCPP_OPTIONS}\n> \n>   build-full:debian:12:as-subproject:\n>     extends:\n> @@ -256,13 +254,11 @@ build-full:debian:13:\n>         - ARCH: amd64\n>           CC: clang\n>           CXX: clang++\n> -        MESON_OPTIONS: >-\n> -          ${MESON_ALL_OPTIONS}\n> -          ${MESON_CLANG_OPTIONS}\n> -          -D qcam=disabled\n> -          -D cpp_debugstl=false\n> -        # `cpp_debugstl=false` needed approximately between meson 1.4.0 and 1.9.3\n> -        # with clang 18 or later due to https://github.com/mesonbuild/meson/issues/13812\n> +        MESON_OPTIONS:\n> +          # `cpp_debugstl=false` needed approximately between meson 1.4.0 and 1.9.3\n> +          # with clang 18 or later due to https://github.com/mesonbuild/meson/issues/13812\n> +          - ${MESON_ALL_OPTIONS} ${MESON_CLANG_LIBCPP_OPTIONS} -D qcam=disabled -D cpp_debugstl=false\n> +          - ${MESON_ALL_OPTIONS} ${MESON_CLANG_LIBSTDCPP_OPTIONS}\n>         - ARCH: armhf\n>         - ARCH: arm64\n> \n> --\n> 2.53.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 06794BE086\n\tfor <parsemail@patchwork.libcamera.org>;\n\tThu, 19 Mar 2026 10:45:30 +0000 (UTC)","from lancelot.ideasonboard.com (localhost [IPv6:::1])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTP id 3B05462731;\n\tThu, 19 Mar 2026 11:45:29 +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 14C5062635\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tThu, 19 Mar 2026 11:45:27 +0100 (CET)","from [192.168.33.21] (185.221.143.129.nat.pool.zt.hu\n\t[185.221.143.129])\n\tby perceval.ideasonboard.com (Postfix) with ESMTPSA id 630EF107;\n\tThu, 19 Mar 2026 11:44: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=\"t/u7cH0T\"; dkim-atps=neutral","DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/simple; d=ideasonboard.com;\n\ts=mail; t=1773917052;\n\tbh=MQrU3ADYBeUy09lB0QwLqk9p8WJVjdGEC5H3Zzsfxws=;\n\th=Date:Subject:From:To:References:In-Reply-To:From;\n\tb=t/u7cH0TTXDZmREdoXnynKvneJNdf+FlXCTMUzAgXoCWxZ9EuWb37eWdg3gIwK3hB\n\tfvoS/xp+qrS1GMo5W5sP14WzKhUT1ivOPjyoGZMxu2BXfXYcEHQefIAOxeDn9t2SJ3\n\tIwR+E8HXocGPdHEeQDKGCkSPTlJzESPywN/9bASI=","Message-ID":"<5eb0b0b5-d41d-4715-a447-6b0ca924fdea@ideasonboard.com>","Date":"Thu, 19 Mar 2026 11:45:22 +0100","MIME-Version":"1.0","User-Agent":"Mozilla Thunderbird","Subject":"Re: [libcamera-ci] [RFC PATCH v1] Add clang builds with libstdc++","From":"=?utf-8?q?Barnab=C3=A1s_P=C5=91cze?= <barnabas.pocze@ideasonboard.com>","To":"libcamera-devel@lists.libcamera.org,\n\tKieran Bingham <kieran.bingham@ideasonboard.com>,\n\tLaurent Pinchart <laurent.pinchart@ideasonboard.com>","References":"<20260216142843.482262-1-barnabas.pocze@ideasonboard.com>","Content-Language":"en-US, hu-HU","In-Reply-To":"<20260216142843.482262-1-barnabas.pocze@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>"}},{"id":38367,"web_url":"https://patchwork.libcamera.org/comment/38367/","msgid":"<177393544724.1533536.11085849632584030117@ping.linuxembedded.co.uk>","date":"2026-03-19T15:50:47","subject":"Re: [libcamera-ci] [RFC PATCH v1] Add clang builds with libstdc++","submitter":{"id":4,"url":"https://patchwork.libcamera.org/api/people/4/","name":"Kieran Bingham","email":"kieran.bingham@ideasonboard.com"},"content":"Quoting Barnabás Pőcze (2026-03-19 10:45:22)\n> Hi\n> \n> I would love to merge this in some capacity. Is this fine (duplicating every clang job),\n> or should I send a version that adds only one clang + libstdc++ job?\n\nI'm fine merging either. Certainly at least the single instance could be\nmerged straight away.\n\nWe could also just merge this patch and see how it goes... we can always\npair it down a bit later if we want to optimise further.\n\nAs we discussed, other systems have more builders than we do ...\n\nI guess the other approach is we could ask in #freedesktop for opinions\nthere.\n\nOr we can simply merge this - and start adding our own dedicated runners\ntoo!\n\nSo to indicate i don't want to block any approach here:\n\n\nAcked-by: Kieran Bingham <kieran.bingham@ideasonboard.com>\n\n--\nKieran\n\n\n> \n> \n> 2026. 02. 16. 15:28 keltezéssel, Barnabás Pőcze írta:\n> > Currently clang is only used to test libc++ builds. This, however, prevents\n> > the build testing of e.g. qcam since the packaged qt libraries use libstdc++,\n> > so it needs to be disabled when using libc++.\n> > \n> > So duplicate every current clang job for libstdc++ testing.\n> > \n> > Link: https://gitlab.freedesktop.org/camera/libcamera/-/issues/315\n> > Signed-off-by: Barnabás Pőcze <barnabas.pocze@ideasonboard.com>\n> > ---\n> > Maybe it's not worth duplicating each clang job, but adding at least one\n> > (clang, libstdc++) build is probably worth it.\n> > ---\n> >   .gitlab-ci/meson/libstdc++.native |  3 +++\n> >   gitlab-ci.yml                     | 36 ++++++++++++++-----------------\n> >   2 files changed, 19 insertions(+), 20 deletions(-)\n> >   create mode 100644 .gitlab-ci/meson/libstdc++.native\n> > \n> > diff --git a/.gitlab-ci/meson/libstdc++.native b/.gitlab-ci/meson/libstdc++.native\n> > new file mode 100644\n> > index 0000000..3116043\n> > --- /dev/null\n> > +++ b/.gitlab-ci/meson/libstdc++.native\n> > @@ -0,0 +1,3 @@\n> > +[built-in options]\n> > +cpp_args = ['-stdlib=libstdc++']\n> > +cpp_link_args = ['-stdlib=libstdc++']\n> > diff --git a/gitlab-ci.yml b/gitlab-ci.yml\n> > index 6256335..e51266c 100644\n> > --- a/gitlab-ci.yml\n> > +++ b/gitlab-ci.yml\n> > @@ -29,7 +29,12 @@ variables:\n> >     # clang fails to link with ASan if --no-undefined is enabled.\n> >     MESON_CLANG_OPTIONS: >-\n> >       -D b_lundef=false\n> > +  MESON_CLANG_LIBCPP_OPTIONS: >-\n> > +    ${MESON_CLANG_OPTIONS}\n> >       --native-file $CI_PROJECT_DIR/.gitlab-ci/meson/libc++.native\n> > +  MESON_CLANG_LIBSTDCPP_OPTIONS: >-\n> > +    ${MESON_CLANG_OPTIONS}\n> > +    --native-file $CI_PROJECT_DIR/.gitlab-ci/meson/libstdc++.native\n> >     PACKAGES: >-\n> >       ca-certificates\n> >       git\n> > @@ -194,21 +199,14 @@ build-full:debian:12:\n> >             ${MESON_ALL_OPTIONS}\n> >             -D b_sanitize=none\n> >         - ARCH: amd64\n> > -        BUILD_TYPE: debug\n> > -        CC: clang\n> > -        CXX: clang++\n> > -        MESON_OPTIONS: >-\n> > -          ${MESON_ALL_OPTIONS}\n> > -          ${MESON_CLANG_OPTIONS}\n> > -          -D qcam=disabled\n> > -      - ARCH: amd64\n> > -        BUILD_TYPE: release\n> > +        BUILD_TYPE:\n> > +          - debug\n> > +          - release\n> >           CC: clang\n> >           CXX: clang++\n> > -        MESON_OPTIONS: >-\n> > -          ${MESON_ALL_OPTIONS}\n> > -          ${MESON_CLANG_OPTIONS}\n> > -          -D qcam=disabled\n> > +        MESON_OPTIONS:\n> > +          - ${MESON_ALL_OPTIONS} ${MESON_CLANG_LIBCPP_OPTIONS} -D qcam=disabled\n> > +          - ${MESON_ALL_OPTIONS} ${MESON_CLANG_LIBSTDCPP_OPTIONS}\n> > \n> >   build-full:debian:12:as-subproject:\n> >     extends:\n> > @@ -256,13 +254,11 @@ build-full:debian:13:\n> >         - ARCH: amd64\n> >           CC: clang\n> >           CXX: clang++\n> > -        MESON_OPTIONS: >-\n> > -          ${MESON_ALL_OPTIONS}\n> > -          ${MESON_CLANG_OPTIONS}\n> > -          -D qcam=disabled\n> > -          -D cpp_debugstl=false\n> > -        # `cpp_debugstl=false` needed approximately between meson 1.4.0 and 1.9.3\n> > -        # with clang 18 or later due to https://github.com/mesonbuild/meson/issues/13812\n> > +        MESON_OPTIONS:\n> > +          # `cpp_debugstl=false` needed approximately between meson 1.4.0 and 1.9.3\n> > +          # with clang 18 or later due to https://github.com/mesonbuild/meson/issues/13812\n> > +          - ${MESON_ALL_OPTIONS} ${MESON_CLANG_LIBCPP_OPTIONS} -D qcam=disabled -D cpp_debugstl=false\n> > +          - ${MESON_ALL_OPTIONS} ${MESON_CLANG_LIBSTDCPP_OPTIONS}\n> >         - ARCH: armhf\n> >         - ARCH: arm64\n> > \n> > --\n> > 2.53.0\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 53912BE086\n\tfor <parsemail@patchwork.libcamera.org>;\n\tThu, 19 Mar 2026 15:50:52 +0000 (UTC)","from lancelot.ideasonboard.com (localhost [IPv6:::1])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTP id 9E74462736;\n\tThu, 19 Mar 2026 16:50:51 +0100 (CET)","from perceval.ideasonboard.com (perceval.ideasonboard.com\n\t[213.167.242.64])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTPS id 5E549620FA\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tThu, 19 Mar 2026 16:50:50 +0100 (CET)","from monstersaurus.ideasonboard.com\n\t(cpc89244-aztw30-2-0-cust6594.18-1.cable.virginm.net [86.31.185.195])\n\tby perceval.ideasonboard.com (Postfix) with ESMTPSA id A1238C78;\n\tThu, 19 Mar 2026 16:49:36 +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=\"ZJi3MvfK\"; dkim-atps=neutral","DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/simple; d=ideasonboard.com;\n\ts=mail; t=1773935376;\n\tbh=WzrmzXwUFqfd3yJ/kpK0Atx2l25LsvTfjRgZ51cei7I=;\n\th=In-Reply-To:References:Subject:From:To:Date:From;\n\tb=ZJi3MvfKQUH0NA2zOBY8eZV/Vh1dB304LKp3S+r8pH4VudMSQlYlrYr+9bctDj8DY\n\tcY0iNXe0dGpsTyGQ7D1jrJuohn12EkReJxstltAeDiIx++xHgfDdKj+3zhCIX7p8uj\n\tpFPaX3W7nU9hfmi0YLOc/lWyylxeyG9XSQ5StmjU=","Content-Type":"text/plain; charset=\"utf-8\"","MIME-Version":"1.0","Content-Transfer-Encoding":"quoted-printable","In-Reply-To":"<5eb0b0b5-d41d-4715-a447-6b0ca924fdea@ideasonboard.com>","References":"<20260216142843.482262-1-barnabas.pocze@ideasonboard.com>\n\t<5eb0b0b5-d41d-4715-a447-6b0ca924fdea@ideasonboard.com>","Subject":"Re: [libcamera-ci] [RFC PATCH v1] Add clang builds with libstdc++","From":"Kieran Bingham <kieran.bingham@ideasonboard.com>","To":"=?utf-8?q?Barnab=C3=A1s_P=C5=91cze?= <barnabas.pocze@ideasonboard.com>,\n\tLaurent Pinchart <laurent.pinchart@ideasonboard.com>, \n\tlibcamera-devel@lists.libcamera.org","Date":"Thu, 19 Mar 2026 15:50:47 +0000","Message-ID":"<177393544724.1533536.11085849632584030117@ping.linuxembedded.co.uk>","User-Agent":"alot/0.9.1","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":38368,"web_url":"https://patchwork.libcamera.org/comment/38368/","msgid":"<20260319161510.GD860715@killaraus.ideasonboard.com>","date":"2026-03-19T16:15:10","subject":"Re: [libcamera-ci] [RFC PATCH v1] Add clang builds with libstdc++","submitter":{"id":2,"url":"https://patchwork.libcamera.org/api/people/2/","name":"Laurent Pinchart","email":"laurent.pinchart@ideasonboard.com"},"content":"On Thu, Mar 19, 2026 at 03:50:47PM +0000, Kieran Bingham wrote:\n> Quoting Barnabás Pőcze (2026-03-19 10:45:22)\n> > Hi\n> > \n> > I would love to merge this in some capacity. Is this fine (duplicating every clang job),\n> > or should I send a version that adds only one clang + libstdc++ job?\n> \n> I'm fine merging either. Certainly at least the single instance could be\n> merged straight away.\n> \n> We could also just merge this patch and see how it goes... we can always\n> pair it down a bit later if we want to optimise further.\n> \n> As we discussed, other systems have more builders than we do ...\n> \n> I guess the other approach is we could ask in #freedesktop for opinions\n> there.\n> \n> Or we can simply merge this - and start adding our own dedicated runners\n> too!\n\nI have a slight preference for a bit more (energy-) conservative\napproach, starting with fewer jobs and expanding if we realize that the\ncoverage isn't broad enough. We'll know it's the case if CI doesn't\ncatch issues before they hit the master branch, while it's more\ndifficult to know which CI jobs don't bring much value.\n\nIf you agree with that reasoning that would be my preferred option.\nOtherwise, it's not a blocker.\n\n> So to indicate i don't want to block any approach here:\n> \n> \n> Acked-by: Kieran Bingham <kieran.bingham@ideasonboard.com>\n> \n> > 2026. 02. 16. 15:28 keltezéssel, Barnabás Pőcze írta:\n> > > Currently clang is only used to test libc++ builds. This, however, prevents\n> > > the build testing of e.g. qcam since the packaged qt libraries use libstdc++,\n> > > so it needs to be disabled when using libc++.\n> > > \n> > > So duplicate every current clang job for libstdc++ testing.\n> > > \n> > > Link: https://gitlab.freedesktop.org/camera/libcamera/-/issues/315\n> > > Signed-off-by: Barnabás Pőcze <barnabas.pocze@ideasonboard.com>\n> > > ---\n> > > Maybe it's not worth duplicating each clang job, but adding at least one\n> > > (clang, libstdc++) build is probably worth it.\n> > > ---\n> > >   .gitlab-ci/meson/libstdc++.native |  3 +++\n> > >   gitlab-ci.yml                     | 36 ++++++++++++++-----------------\n> > >   2 files changed, 19 insertions(+), 20 deletions(-)\n> > >   create mode 100644 .gitlab-ci/meson/libstdc++.native\n> > > \n> > > diff --git a/.gitlab-ci/meson/libstdc++.native b/.gitlab-ci/meson/libstdc++.native\n> > > new file mode 100644\n> > > index 0000000..3116043\n> > > --- /dev/null\n> > > +++ b/.gitlab-ci/meson/libstdc++.native\n> > > @@ -0,0 +1,3 @@\n> > > +[built-in options]\n> > > +cpp_args = ['-stdlib=libstdc++']\n> > > +cpp_link_args = ['-stdlib=libstdc++']\n> > > diff --git a/gitlab-ci.yml b/gitlab-ci.yml\n> > > index 6256335..e51266c 100644\n> > > --- a/gitlab-ci.yml\n> > > +++ b/gitlab-ci.yml\n> > > @@ -29,7 +29,12 @@ variables:\n> > >     # clang fails to link with ASan if --no-undefined is enabled.\n> > >     MESON_CLANG_OPTIONS: >-\n> > >       -D b_lundef=false\n> > > +  MESON_CLANG_LIBCPP_OPTIONS: >-\n> > > +    ${MESON_CLANG_OPTIONS}\n> > >       --native-file $CI_PROJECT_DIR/.gitlab-ci/meson/libc++.native\n> > > +  MESON_CLANG_LIBSTDCPP_OPTIONS: >-\n> > > +    ${MESON_CLANG_OPTIONS}\n> > > +    --native-file $CI_PROJECT_DIR/.gitlab-ci/meson/libstdc++.native\n> > >     PACKAGES: >-\n> > >       ca-certificates\n> > >       git\n> > > @@ -194,21 +199,14 @@ build-full:debian:12:\n> > >             ${MESON_ALL_OPTIONS}\n> > >             -D b_sanitize=none\n> > >         - ARCH: amd64\n> > > -        BUILD_TYPE: debug\n> > > -        CC: clang\n> > > -        CXX: clang++\n> > > -        MESON_OPTIONS: >-\n> > > -          ${MESON_ALL_OPTIONS}\n> > > -          ${MESON_CLANG_OPTIONS}\n> > > -          -D qcam=disabled\n> > > -      - ARCH: amd64\n> > > -        BUILD_TYPE: release\n> > > +        BUILD_TYPE:\n> > > +          - debug\n> > > +          - release\n> > >           CC: clang\n> > >           CXX: clang++\n> > > -        MESON_OPTIONS: >-\n> > > -          ${MESON_ALL_OPTIONS}\n> > > -          ${MESON_CLANG_OPTIONS}\n> > > -          -D qcam=disabled\n> > > +        MESON_OPTIONS:\n> > > +          - ${MESON_ALL_OPTIONS} ${MESON_CLANG_LIBCPP_OPTIONS} -D qcam=disabled\n> > > +          - ${MESON_ALL_OPTIONS} ${MESON_CLANG_LIBSTDCPP_OPTIONS}\n> > > \n> > >   build-full:debian:12:as-subproject:\n> > >     extends:\n> > > @@ -256,13 +254,11 @@ build-full:debian:13:\n> > >         - ARCH: amd64\n> > >           CC: clang\n> > >           CXX: clang++\n> > > -        MESON_OPTIONS: >-\n> > > -          ${MESON_ALL_OPTIONS}\n> > > -          ${MESON_CLANG_OPTIONS}\n> > > -          -D qcam=disabled\n> > > -          -D cpp_debugstl=false\n> > > -        # `cpp_debugstl=false` needed approximately between meson 1.4.0 and 1.9.3\n> > > -        # with clang 18 or later due to https://github.com/mesonbuild/meson/issues/13812\n> > > +        MESON_OPTIONS:\n> > > +          # `cpp_debugstl=false` needed approximately between meson 1.4.0 and 1.9.3\n> > > +          # with clang 18 or later due to https://github.com/mesonbuild/meson/issues/13812\n> > > +          - ${MESON_ALL_OPTIONS} ${MESON_CLANG_LIBCPP_OPTIONS} -D qcam=disabled -D cpp_debugstl=false\n> > > +          - ${MESON_ALL_OPTIONS} ${MESON_CLANG_LIBSTDCPP_OPTIONS}\n> > >         - ARCH: armhf\n> > >         - ARCH: arm64\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 A9059C32DE\n\tfor <parsemail@patchwork.libcamera.org>;\n\tThu, 19 Mar 2026 16:15:13 +0000 (UTC)","from lancelot.ideasonboard.com (localhost [IPv6:::1])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTP id D5DC96272E;\n\tThu, 19 Mar 2026 17:15:12 +0100 (CET)","from perceval.ideasonboard.com (perceval.ideasonboard.com\n\t[213.167.242.64])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTPS id EAE0A620FA\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tThu, 19 Mar 2026 17:15:11 +0100 (CET)","from killaraus.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 014B7838;\n\tThu, 19 Mar 2026 17:13:57 +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=\"wiz5Y1Or\"; dkim-atps=neutral","DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/simple; d=ideasonboard.com;\n\ts=mail; t=1773936838;\n\tbh=IkG+B+bXDK9OJa/dN7bz2tjMtaFcKHMZ8DV28c2yn8I=;\n\th=Date:From:To:Cc:Subject:References:In-Reply-To:From;\n\tb=wiz5Y1OrBYXyRZOYFts0a46+AFEI1UwA468vrCogjYHeHhNCSQkFctVpisD82mqyd\n\tNyJoGaHth7p6T/zCSt6aa+HHsGt6CXrLIezFoibbUCBYXKa9FOs+LIX4aynWf8nvCG\n\t3vkk564FZ8HEOJ9AoLrOA6a1XueD3oKMAdHktBQ0=","Date":"Thu, 19 Mar 2026 18:15:10 +0200","From":"Laurent Pinchart <laurent.pinchart@ideasonboard.com>","To":"Kieran Bingham <kieran.bingham@ideasonboard.com>","Cc":"=?utf-8?q?Barnab=C3=A1s_P=C5=91cze?= <barnabas.pocze@ideasonboard.com>,\n\tlibcamera-devel@lists.libcamera.org","Subject":"Re: [libcamera-ci] [RFC PATCH v1] Add clang builds with libstdc++","Message-ID":"<20260319161510.GD860715@killaraus.ideasonboard.com>","References":"<20260216142843.482262-1-barnabas.pocze@ideasonboard.com>\n\t<5eb0b0b5-d41d-4715-a447-6b0ca924fdea@ideasonboard.com>\n\t<177393544724.1533536.11085849632584030117@ping.linuxembedded.co.uk>","MIME-Version":"1.0","Content-Type":"text/plain; charset=utf-8","Content-Disposition":"inline","Content-Transfer-Encoding":"8bit","In-Reply-To":"<177393544724.1533536.11085849632584030117@ping.linuxembedded.co.uk>","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":38370,"web_url":"https://patchwork.libcamera.org/comment/38370/","msgid":"<29c55131-b0fc-46ee-a8a4-18ed1984c34c@ideasonboard.com>","date":"2026-03-20T08:18:57","subject":"Re: [libcamera-ci] [RFC PATCH v1] Add clang builds with libstdc++","submitter":{"id":216,"url":"https://patchwork.libcamera.org/api/people/216/","name":"Barnabás Pőcze","email":"barnabas.pocze@ideasonboard.com"},"content":"2026. 03. 19. 17:15 keltezéssel, Laurent Pinchart írta:\n> On Thu, Mar 19, 2026 at 03:50:47PM +0000, Kieran Bingham wrote:\n>> Quoting Barnabás Pőcze (2026-03-19 10:45:22)\n>>> Hi\n>>>\n>>> I would love to merge this in some capacity. Is this fine (duplicating every clang job),\n>>> or should I send a version that adds only one clang + libstdc++ job?\n>>\n>> I'm fine merging either. Certainly at least the single instance could be\n>> merged straight away.\n>>\n>> We could also just merge this patch and see how it goes... we can always\n>> pair it down a bit later if we want to optimise further.\n>>\n>> As we discussed, other systems have more builders than we do ...\n>>\n>> I guess the other approach is we could ask in #freedesktop for opinions\n>> there.\n>>\n>> Or we can simply merge this - and start adding our own dedicated runners\n>> too!\n> \n> I have a slight preference for a bit more (energy-) conservative\n> approach, starting with fewer jobs and expanding if we realize that the\n> coverage isn't broad enough. We'll know it's the case if CI doesn't\n> catch issues before they hit the master branch, while it's more\n> difficult to know which CI jobs don't bring much value.\n> \n> If you agree with that reasoning that would be my preferred option.\n> Otherwise, it's not a blocker.\n\nOkay, I have proposed a new version that only adds 1 job.\n\n\n> \n>> So to indicate i don't want to block any approach here:\n>>\n>>\n>> Acked-by: Kieran Bingham <kieran.bingham@ideasonboard.com>\n>>\n>>> 2026. 02. 16. 15:28 keltezéssel, Barnabás Pőcze írta:\n>>>> Currently clang is only used to test libc++ builds. This, however, prevents\n>>>> the build testing of e.g. qcam since the packaged qt libraries use libstdc++,\n>>>> so it needs to be disabled when using libc++.\n>>>>\n>>>> So duplicate every current clang job for libstdc++ testing.\n>>>>\n>>>> Link: https://gitlab.freedesktop.org/camera/libcamera/-/issues/315\n>>>> Signed-off-by: Barnabás Pőcze <barnabas.pocze@ideasonboard.com>\n>>>> ---\n>>>> Maybe it's not worth duplicating each clang job, but adding at least one\n>>>> (clang, libstdc++) build is probably worth it.\n>>>> ---\n>>>>    .gitlab-ci/meson/libstdc++.native |  3 +++\n>>>>    gitlab-ci.yml                     | 36 ++++++++++++++-----------------\n>>>>    2 files changed, 19 insertions(+), 20 deletions(-)\n>>>>    create mode 100644 .gitlab-ci/meson/libstdc++.native\n>>>>\n>>>> diff --git a/.gitlab-ci/meson/libstdc++.native b/.gitlab-ci/meson/libstdc++.native\n>>>> new file mode 100644\n>>>> index 0000000..3116043\n>>>> --- /dev/null\n>>>> +++ b/.gitlab-ci/meson/libstdc++.native\n>>>> @@ -0,0 +1,3 @@\n>>>> +[built-in options]\n>>>> +cpp_args = ['-stdlib=libstdc++']\n>>>> +cpp_link_args = ['-stdlib=libstdc++']\n>>>> diff --git a/gitlab-ci.yml b/gitlab-ci.yml\n>>>> index 6256335..e51266c 100644\n>>>> --- a/gitlab-ci.yml\n>>>> +++ b/gitlab-ci.yml\n>>>> @@ -29,7 +29,12 @@ variables:\n>>>>      # clang fails to link with ASan if --no-undefined is enabled.\n>>>>      MESON_CLANG_OPTIONS: >-\n>>>>        -D b_lundef=false\n>>>> +  MESON_CLANG_LIBCPP_OPTIONS: >-\n>>>> +    ${MESON_CLANG_OPTIONS}\n>>>>        --native-file $CI_PROJECT_DIR/.gitlab-ci/meson/libc++.native\n>>>> +  MESON_CLANG_LIBSTDCPP_OPTIONS: >-\n>>>> +    ${MESON_CLANG_OPTIONS}\n>>>> +    --native-file $CI_PROJECT_DIR/.gitlab-ci/meson/libstdc++.native\n>>>>      PACKAGES: >-\n>>>>        ca-certificates\n>>>>        git\n>>>> @@ -194,21 +199,14 @@ build-full:debian:12:\n>>>>              ${MESON_ALL_OPTIONS}\n>>>>              -D b_sanitize=none\n>>>>          - ARCH: amd64\n>>>> -        BUILD_TYPE: debug\n>>>> -        CC: clang\n>>>> -        CXX: clang++\n>>>> -        MESON_OPTIONS: >-\n>>>> -          ${MESON_ALL_OPTIONS}\n>>>> -          ${MESON_CLANG_OPTIONS}\n>>>> -          -D qcam=disabled\n>>>> -      - ARCH: amd64\n>>>> -        BUILD_TYPE: release\n>>>> +        BUILD_TYPE:\n>>>> +          - debug\n>>>> +          - release\n>>>>            CC: clang\n>>>>            CXX: clang++\n>>>> -        MESON_OPTIONS: >-\n>>>> -          ${MESON_ALL_OPTIONS}\n>>>> -          ${MESON_CLANG_OPTIONS}\n>>>> -          -D qcam=disabled\n>>>> +        MESON_OPTIONS:\n>>>> +          - ${MESON_ALL_OPTIONS} ${MESON_CLANG_LIBCPP_OPTIONS} -D qcam=disabled\n>>>> +          - ${MESON_ALL_OPTIONS} ${MESON_CLANG_LIBSTDCPP_OPTIONS}\n>>>>\n>>>>    build-full:debian:12:as-subproject:\n>>>>      extends:\n>>>> @@ -256,13 +254,11 @@ build-full:debian:13:\n>>>>          - ARCH: amd64\n>>>>            CC: clang\n>>>>            CXX: clang++\n>>>> -        MESON_OPTIONS: >-\n>>>> -          ${MESON_ALL_OPTIONS}\n>>>> -          ${MESON_CLANG_OPTIONS}\n>>>> -          -D qcam=disabled\n>>>> -          -D cpp_debugstl=false\n>>>> -        # `cpp_debugstl=false` needed approximately between meson 1.4.0 and 1.9.3\n>>>> -        # with clang 18 or later due to https://github.com/mesonbuild/meson/issues/13812\n>>>> +        MESON_OPTIONS:\n>>>> +          # `cpp_debugstl=false` needed approximately between meson 1.4.0 and 1.9.3\n>>>> +          # with clang 18 or later due to https://github.com/mesonbuild/meson/issues/13812\n>>>> +          - ${MESON_ALL_OPTIONS} ${MESON_CLANG_LIBCPP_OPTIONS} -D qcam=disabled -D cpp_debugstl=false\n>>>> +          - ${MESON_ALL_OPTIONS} ${MESON_CLANG_LIBSTDCPP_OPTIONS}\n>>>>          - ARCH: armhf\n>>>>          - ARCH: arm64\n>>>>\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 2B70CBE086\n\tfor <parsemail@patchwork.libcamera.org>;\n\tFri, 20 Mar 2026 08:19:01 +0000 (UTC)","from lancelot.ideasonboard.com (localhost [IPv6:::1])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTP id E3CC362736;\n\tFri, 20 Mar 2026 09:19:00 +0100 (CET)","from perceval.ideasonboard.com (perceval.ideasonboard.com\n\t[213.167.242.64])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTPS id CEE266272E\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tFri, 20 Mar 2026 09:18:59 +0100 (CET)","from [192.168.33.22] (185.221.143.129.nat.pool.zt.hu\n\t[185.221.143.129])\n\tby perceval.ideasonboard.com (Postfix) with ESMTPSA id BBAB32D5;\n\tFri, 20 Mar 2026 09:17:45 +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=\"Lms7Z/pG\"; dkim-atps=neutral","DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/simple; d=ideasonboard.com;\n\ts=mail; t=1773994665;\n\tbh=Hq/L68e7iIHh/RPPCPgnWcOOhOwKmcZzXc8eJEZfX6A=;\n\th=Date:Subject:To:Cc:References:From:In-Reply-To:From;\n\tb=Lms7Z/pGxkzKmmqCF0GJJiCNFWcJ9d+rQRtPLF1DcJasSC9eQWDruJkvG8YRpO8rN\n\tb1u+MI1BUHJZmVKa/MnplV7knj6ci/z9N7xTVawMYhNxKf2Fou5fL1rGhZPg6/xcYq\n\tZj0Hjh+dmSPYu0vktIuipcbPh8MxSswOYlweyUNw=","Message-ID":"<29c55131-b0fc-46ee-a8a4-18ed1984c34c@ideasonboard.com>","Date":"Fri, 20 Mar 2026 09:18:57 +0100","MIME-Version":"1.0","User-Agent":"Mozilla Thunderbird","Subject":"Re: [libcamera-ci] [RFC PATCH v1] Add clang builds with libstdc++","To":"Laurent Pinchart <laurent.pinchart@ideasonboard.com>,\n\tKieran Bingham <kieran.bingham@ideasonboard.com>","Cc":"libcamera-devel@lists.libcamera.org","References":"<20260216142843.482262-1-barnabas.pocze@ideasonboard.com>\n\t<5eb0b0b5-d41d-4715-a447-6b0ca924fdea@ideasonboard.com>\n\t<177393544724.1533536.11085849632584030117@ping.linuxembedded.co.uk>\n\t<20260319161510.GD860715@killaraus.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":"<20260319161510.GD860715@killaraus.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>"}}]