[CI] [PATCH 2/2] Add compilation test with gcc 14

Kieran Bingham kieran.bingham at ideasonboard.com
Tue May 28 17:54:20 CEST 2024


Quoting Laurent Pinchart (2024-05-28 16:49:42)
> On Tue, May 28, 2024 at 03:37:32PM +0100, Kieran Bingham wrote:
> > Quoting Laurent Pinchart (2024-05-27 18:40:16)
> > > Compile with gcc 14 on Debian trixie. Compiling with C++20 would trigger
> > > the following warning, introduced in gcc 14:
> > > 
> > > ../src/libcamera/base/log.cpp: In member function ‘void libcamera::Logger::write(const libcamera::LogMessage&)’:
> > > ../src/libcamera/base/log.cpp:468:61: error: ‘std::shared_ptr<_Tp> std::atomic_load(const shared_ptr<_Tp>*) [with _Tp = libcamera::LogOutput]’ is deprecated: use 'std::atomic<std::shared_ptr<T>>' instead [-Werror=deprecated-declarations]
> > >   468 |         std::shared_ptr<LogOutput> output = std::atomic_load(&output_);
> > >       |                                             ~~~~~~~~~~~~~~~~^~~~~~~~~~
> > > In file included from /usr/include/c++/14/memory:81,
> > >                  from ../include/libcamera/base/class.h:10,
> > >                  from ../include/libcamera/base/log.h:15,
> > >                  from ../src/libcamera/base/log.cpp:8:
> > > /usr/include/c++/14/bits/shared_ptr_atomic.h:142:5: note: declared here
> > >   142 |     atomic_load(const shared_ptr<_Tp>* __p)
> > >       |     ^~~~~~~~~~~
> > > 
> > > As std::atomic<std::shared_ptr<T>> got introduced in C++20, we can't use
> > > it while remaining compatible with C++17. Disabling the
> > > -Werror=deprecated-declarations option would prevent other deprecated
> > > declarations from being noticed, so it's not a good solution either.
> > > 
> > > To work around the problem, use C++17 when compiling with gcc 14. gcc 13
> > > still gives us decent test coverage of C++20 compilation.
> > 
> > That's fine with me.
> > 
> > > Signed-off-by: Laurent Pinchart <laurent.pinchart at ideasonboard.com>
> > > ---
> > >  .gitlab-ci/setup-container.sh | 12 +++++++++---
> > >  gitlab-ci.yml                 | 20 ++++++++++++--------
> > >  2 files changed, 21 insertions(+), 11 deletions(-)
> > > 
> > > diff --git a/.gitlab-ci/setup-container.sh b/.gitlab-ci/setup-container.sh
> > > index fc3c0568bf7c..93a9f9cc91e8 100755
> > > --- a/.gitlab-ci/setup-container.sh
> > > +++ b/.gitlab-ci/setup-container.sh
> > > @@ -93,10 +93,16 @@ archs=( amd64 )
> > >  
> > >  declare -A components
> > >  
> > > -# On Debian bullseye, install gcc 9 in addition to the default gcc 10.
> > > -if [[ $FDO_DISTRIBUTION_VERSION == 'bullseye' ]] ; then
> > > +# Install additional gcc versions On Debian bullseye (gcc 9) and trixie (gcc
> > > +# 14).
> > > +case $FDO_DISTRIBUTION_VERSION in
> > > +'bullseye')
> > >         PKGS_LIBCAMERA_RUNTIME+=( g++-9 )
> > > -fi
> > > +       ;;
> > > +'trixie')
> > > +       PKGS_LIBCAMERA_RUNTIME+=( g++-14 )
> > > +       ;;
> > > +esac
> > 
> > shellcheck is quite noisy on setup-container.sh, but nothing seems to be
> > introduced by this addition.
> 
> Patches are welcome. Do we need to CI our CI ? :-)

I'm surprised you didn't ;-)

--
Kieran


More information about the libcamera-devel mailing list