| Message ID | 20260216142843.482262-1-barnabas.pocze@ideasonboard.com |
|---|---|
| State | New |
| Headers | show |
| Series |
|
| Related | show |
Quoting Barnabás Pőcze (2026-02-16 14:28:43) > Currently clang is only used to test libc++ builds. This, however, prevents > the build testing of e.g. qcam since the packaged qt libraries use libstdc++, > so it needs to be disabled when using libc++. > > So duplicate every current clang job for libstdc++ testing. > > Link: https://gitlab.freedesktop.org/camera/libcamera/-/issues/315 > Signed-off-by: Barnabás Pőcze <barnabas.pocze@ideasonboard.com> > --- > Maybe it's not worth duplicating each clang job, but adding at least one > (clang, libstdc++) build is probably worth it. I believe the freedesktop infrastructure have told us that the most 'expensive' part of CI is setting up the runner for the jobs, and we have quite a few per run already. Is it easy/possible for us to combine these additional builds into a single job somehow? I think the actual compilation test is 'cheap' once the runner has been set up, so it might be helpful for us to look at how to combine more tests, then it would be easy to also test many combinations of clang? -- Kieran > --- > .gitlab-ci/meson/libstdc++.native | 3 +++ > gitlab-ci.yml | 36 ++++++++++++++----------------- > 2 files changed, 19 insertions(+), 20 deletions(-) > create mode 100644 .gitlab-ci/meson/libstdc++.native > > diff --git a/.gitlab-ci/meson/libstdc++.native b/.gitlab-ci/meson/libstdc++.native > new file mode 100644 > index 0000000..3116043 > --- /dev/null > +++ b/.gitlab-ci/meson/libstdc++.native > @@ -0,0 +1,3 @@ > +[built-in options] > +cpp_args = ['-stdlib=libstdc++'] > +cpp_link_args = ['-stdlib=libstdc++'] > diff --git a/gitlab-ci.yml b/gitlab-ci.yml > index 6256335..e51266c 100644 > --- a/gitlab-ci.yml > +++ b/gitlab-ci.yml > @@ -29,7 +29,12 @@ variables: > # clang fails to link with ASan if --no-undefined is enabled. > MESON_CLANG_OPTIONS: >- > -D b_lundef=false > + MESON_CLANG_LIBCPP_OPTIONS: >- > + ${MESON_CLANG_OPTIONS} > --native-file $CI_PROJECT_DIR/.gitlab-ci/meson/libc++.native > + MESON_CLANG_LIBSTDCPP_OPTIONS: >- > + ${MESON_CLANG_OPTIONS} > + --native-file $CI_PROJECT_DIR/.gitlab-ci/meson/libstdc++.native > PACKAGES: >- > ca-certificates > git > @@ -194,21 +199,14 @@ build-full:debian:12: > ${MESON_ALL_OPTIONS} > -D b_sanitize=none > - ARCH: amd64 > - BUILD_TYPE: debug > - CC: clang > - CXX: clang++ > - MESON_OPTIONS: >- > - ${MESON_ALL_OPTIONS} > - ${MESON_CLANG_OPTIONS} > - -D qcam=disabled > - - ARCH: amd64 > - BUILD_TYPE: release > + BUILD_TYPE: > + - debug > + - release > CC: clang > CXX: clang++ > - MESON_OPTIONS: >- > - ${MESON_ALL_OPTIONS} > - ${MESON_CLANG_OPTIONS} > - -D qcam=disabled > + MESON_OPTIONS: > + - ${MESON_ALL_OPTIONS} ${MESON_CLANG_LIBCPP_OPTIONS} -D qcam=disabled > + - ${MESON_ALL_OPTIONS} ${MESON_CLANG_LIBSTDCPP_OPTIONS} > > build-full:debian:12:as-subproject: > extends: > @@ -256,13 +254,11 @@ build-full:debian:13: > - ARCH: amd64 > CC: clang > CXX: clang++ > - MESON_OPTIONS: >- > - ${MESON_ALL_OPTIONS} > - ${MESON_CLANG_OPTIONS} > - -D qcam=disabled > - -D cpp_debugstl=false > - # `cpp_debugstl=false` needed approximately between meson 1.4.0 and 1.9.3 > - # with clang 18 or later due to https://github.com/mesonbuild/meson/issues/13812 > + MESON_OPTIONS: > + # `cpp_debugstl=false` needed approximately between meson 1.4.0 and 1.9.3 > + # with clang 18 or later due to https://github.com/mesonbuild/meson/issues/13812 > + - ${MESON_ALL_OPTIONS} ${MESON_CLANG_LIBCPP_OPTIONS} -D qcam=disabled -D cpp_debugstl=false > + - ${MESON_ALL_OPTIONS} ${MESON_CLANG_LIBSTDCPP_OPTIONS} > - ARCH: armhf > - ARCH: arm64 > > -- > 2.53.0
2026. 02. 23. 10:30 keltezéssel, Kieran Bingham írta: > Quoting Barnabás Pőcze (2026-02-16 14:28:43) >> Currently clang is only used to test libc++ builds. This, however, prevents >> the build testing of e.g. qcam since the packaged qt libraries use libstdc++, >> so it needs to be disabled when using libc++. >> >> So duplicate every current clang job for libstdc++ testing. >> >> Link: https://gitlab.freedesktop.org/camera/libcamera/-/issues/315 >> Signed-off-by: Barnabás Pőcze <barnabas.pocze@ideasonboard.com> >> --- >> Maybe it's not worth duplicating each clang job, but adding at least one >> (clang, libstdc++) build is probably worth it. > > I believe the freedesktop infrastructure have told us that the most > 'expensive' part of CI is setting up the runner for the jobs, and we > have quite a few per run already. > It would be nice to put a concrete number on it then, because otherwise any kind of planning is impossible. > > Is it easy/possible for us to combine these additional builds into a > single job somehow? > > I think the actual compilation test is 'cheap' once the runner has been > set up, so it might be helpful for us to look at how to combine more > tests, then it would be easy to also test many combinations of clang? I believe even all jobs could be combined into a single one if so desired, but in my view merging like that definitely goes against the gitlab workflow (wrt. variables, matrices, artifacts, etc). > > -- > Kieran > >> --- >> .gitlab-ci/meson/libstdc++.native | 3 +++ >> gitlab-ci.yml | 36 ++++++++++++++----------------- >> 2 files changed, 19 insertions(+), 20 deletions(-) >> create mode 100644 .gitlab-ci/meson/libstdc++.native >> >> diff --git a/.gitlab-ci/meson/libstdc++.native b/.gitlab-ci/meson/libstdc++.native >> new file mode 100644 >> index 0000000..3116043 >> --- /dev/null >> +++ b/.gitlab-ci/meson/libstdc++.native >> @@ -0,0 +1,3 @@ >> +[built-in options] >> +cpp_args = ['-stdlib=libstdc++'] >> +cpp_link_args = ['-stdlib=libstdc++'] >> diff --git a/gitlab-ci.yml b/gitlab-ci.yml >> index 6256335..e51266c 100644 >> --- a/gitlab-ci.yml >> +++ b/gitlab-ci.yml >> @@ -29,7 +29,12 @@ variables: >> # clang fails to link with ASan if --no-undefined is enabled. >> MESON_CLANG_OPTIONS: >- >> -D b_lundef=false >> + MESON_CLANG_LIBCPP_OPTIONS: >- >> + ${MESON_CLANG_OPTIONS} >> --native-file $CI_PROJECT_DIR/.gitlab-ci/meson/libc++.native >> + MESON_CLANG_LIBSTDCPP_OPTIONS: >- >> + ${MESON_CLANG_OPTIONS} >> + --native-file $CI_PROJECT_DIR/.gitlab-ci/meson/libstdc++.native >> PACKAGES: >- >> ca-certificates >> git >> @@ -194,21 +199,14 @@ build-full:debian:12: >> ${MESON_ALL_OPTIONS} >> -D b_sanitize=none >> - ARCH: amd64 >> - BUILD_TYPE: debug >> - CC: clang >> - CXX: clang++ >> - MESON_OPTIONS: >- >> - ${MESON_ALL_OPTIONS} >> - ${MESON_CLANG_OPTIONS} >> - -D qcam=disabled >> - - ARCH: amd64 >> - BUILD_TYPE: release >> + BUILD_TYPE: >> + - debug >> + - release >> CC: clang >> CXX: clang++ >> - MESON_OPTIONS: >- >> - ${MESON_ALL_OPTIONS} >> - ${MESON_CLANG_OPTIONS} >> - -D qcam=disabled >> + MESON_OPTIONS: >> + - ${MESON_ALL_OPTIONS} ${MESON_CLANG_LIBCPP_OPTIONS} -D qcam=disabled >> + - ${MESON_ALL_OPTIONS} ${MESON_CLANG_LIBSTDCPP_OPTIONS} >> >> build-full:debian:12:as-subproject: >> extends: >> @@ -256,13 +254,11 @@ build-full:debian:13: >> - ARCH: amd64 >> CC: clang >> CXX: clang++ >> - MESON_OPTIONS: >- >> - ${MESON_ALL_OPTIONS} >> - ${MESON_CLANG_OPTIONS} >> - -D qcam=disabled >> - -D cpp_debugstl=false >> - # `cpp_debugstl=false` needed approximately between meson 1.4.0 and 1.9.3 >> - # with clang 18 or later due to https://github.com/mesonbuild/meson/issues/13812 >> + MESON_OPTIONS: >> + # `cpp_debugstl=false` needed approximately between meson 1.4.0 and 1.9.3 >> + # with clang 18 or later due to https://github.com/mesonbuild/meson/issues/13812 >> + - ${MESON_ALL_OPTIONS} ${MESON_CLANG_LIBCPP_OPTIONS} -D qcam=disabled -D cpp_debugstl=false >> + - ${MESON_ALL_OPTIONS} ${MESON_CLANG_LIBSTDCPP_OPTIONS} >> - ARCH: armhf >> - ARCH: arm64 >> >> -- >> 2.53.0
diff --git a/.gitlab-ci/meson/libstdc++.native b/.gitlab-ci/meson/libstdc++.native new file mode 100644 index 0000000..3116043 --- /dev/null +++ b/.gitlab-ci/meson/libstdc++.native @@ -0,0 +1,3 @@ +[built-in options] +cpp_args = ['-stdlib=libstdc++'] +cpp_link_args = ['-stdlib=libstdc++'] diff --git a/gitlab-ci.yml b/gitlab-ci.yml index 6256335..e51266c 100644 --- a/gitlab-ci.yml +++ b/gitlab-ci.yml @@ -29,7 +29,12 @@ variables: # clang fails to link with ASan if --no-undefined is enabled. MESON_CLANG_OPTIONS: >- -D b_lundef=false + MESON_CLANG_LIBCPP_OPTIONS: >- + ${MESON_CLANG_OPTIONS} --native-file $CI_PROJECT_DIR/.gitlab-ci/meson/libc++.native + MESON_CLANG_LIBSTDCPP_OPTIONS: >- + ${MESON_CLANG_OPTIONS} + --native-file $CI_PROJECT_DIR/.gitlab-ci/meson/libstdc++.native PACKAGES: >- ca-certificates git @@ -194,21 +199,14 @@ build-full:debian:12: ${MESON_ALL_OPTIONS} -D b_sanitize=none - ARCH: amd64 - BUILD_TYPE: debug - CC: clang - CXX: clang++ - MESON_OPTIONS: >- - ${MESON_ALL_OPTIONS} - ${MESON_CLANG_OPTIONS} - -D qcam=disabled - - ARCH: amd64 - BUILD_TYPE: release + BUILD_TYPE: + - debug + - release CC: clang CXX: clang++ - MESON_OPTIONS: >- - ${MESON_ALL_OPTIONS} - ${MESON_CLANG_OPTIONS} - -D qcam=disabled + MESON_OPTIONS: + - ${MESON_ALL_OPTIONS} ${MESON_CLANG_LIBCPP_OPTIONS} -D qcam=disabled + - ${MESON_ALL_OPTIONS} ${MESON_CLANG_LIBSTDCPP_OPTIONS} build-full:debian:12:as-subproject: extends: @@ -256,13 +254,11 @@ build-full:debian:13: - ARCH: amd64 CC: clang CXX: clang++ - MESON_OPTIONS: >- - ${MESON_ALL_OPTIONS} - ${MESON_CLANG_OPTIONS} - -D qcam=disabled - -D cpp_debugstl=false - # `cpp_debugstl=false` needed approximately between meson 1.4.0 and 1.9.3 - # with clang 18 or later due to https://github.com/mesonbuild/meson/issues/13812 + MESON_OPTIONS: + # `cpp_debugstl=false` needed approximately between meson 1.4.0 and 1.9.3 + # with clang 18 or later due to https://github.com/mesonbuild/meson/issues/13812 + - ${MESON_ALL_OPTIONS} ${MESON_CLANG_LIBCPP_OPTIONS} -D qcam=disabled -D cpp_debugstl=false + - ${MESON_ALL_OPTIONS} ${MESON_CLANG_LIBSTDCPP_OPTIONS} - ARCH: armhf - ARCH: arm64
Currently clang is only used to test libc++ builds. This, however, prevents the build testing of e.g. qcam since the packaged qt libraries use libstdc++, so it needs to be disabled when using libc++. So duplicate every current clang job for libstdc++ testing. Link: https://gitlab.freedesktop.org/camera/libcamera/-/issues/315 Signed-off-by: Barnabás Pőcze <barnabas.pocze@ideasonboard.com> --- Maybe it's not worth duplicating each clang job, but adding at least one (clang, libstdc++) build is probably worth it. --- .gitlab-ci/meson/libstdc++.native | 3 +++ gitlab-ci.yml | 36 ++++++++++++++----------------- 2 files changed, 19 insertions(+), 20 deletions(-) create mode 100644 .gitlab-ci/meson/libstdc++.native -- 2.53.0