#1092842 gerbera: FTBFS with fmtlib 11.1

#1092842#5
Date:
2025-01-12 09:24:43 UTC
From:
To:
X-Debbugs-Cc: fmtlib@packages.debian.org, aron@debian.org

Dear maintainers,

We are planning the transition towards fmtlib 11.1 (in experimental).
You package gerbera 2.2.0+dfsg-1 FTBFS with fmtlib 11.1.1+ds1-1.

There are no significant API changes from (in testing) fmtlib 10 to 11.
After a quick look at ratt logs (thanks @aron for running it), I can
spot problems including (but not limited to):

- removal of APIs: nmodl, opm-common
- use of private APIs (fmt::detail): dolphin-emu
- '-fpermissive' compiler errors: doxygen, nheko
- unformattable types: genomicsdb, gerbera
- missing #include for std header: ntfs2btrfs, transmission

...and many of them have already been fixed by upstream.

There might be false positives due to collision with other on-going
transitions (e.g. python3.13). Please close this bug if so.

#1092842#12
Date:
2025-01-13 16:35:32 UTC
From:
To:
(Probably) related build logs:

[ 98%] Building CXX object CMakeFiles/libgerbera.dir/src/web/web_update.cc.o
/usr/bin/c++ -DATRAILERS -DCOMPILE_INFO="\"WITH_NPUPNP=OFF\\nWITH_MAGIC=ON\\nWITH_MYSQL=1\\nWITH_CURL=ON\\nWITH_INOTIFY=ON\\nWITH_JS=ON\\nWITH_TAGLIB=ON\\nWITH_AVCODEC=1\\nWITH_FFMPEGTHUMBNAILER=1\\nWITH_EXIF=ON\\nWITH_EXIV2=1\\nWITH_MATROSKA=ON\\nWITH_WAVPACK=OFF\\nWITH_SYSTEMD=0\\nWITH_LASTFM=OFF\\nWITH_DEBUG=ON\\nWITH_DEBUG_OPTIONS=ON\\nWITH_TESTS=OFF\"" -DFMT_SHARED -DGERBERA_VERSION=\"2.2.0\" -DGIT_BRANCH=\"\" -DGIT_COMMIT_HASH=\"\" -DGRBDEBUG -DHAVE_AVSTREAM_CODECPAR -DHAVE_CURL -DHAVE_EXIV2 -DHAVE_FFMPEG -DHAVE_FFMPEGTHUMBNAILER -DHAVE_INOTIFY -DHAVE_JS -DHAVE_LIBEXIF -DHAVE_MAGIC -DHAVE_MATROSKA -DHAVE_MYSQL -DHAVE_NL_LANGINFO -DHAVE_SETLOCALE -DHAVE_TAGLIB -DONLINE_SERVICES -DPACKAGE_DATADIR=\"/usr/share/gerbera\" -DSPDLOG_ACTIVE_LEVEL=SPDLOG_LEVEL_TRACE -DSPDLOG_COMPILED_LIB -DSPDLOG_FMT_EXTERNAL -DSPDLOG_SHARED_LIB -DTOMBDEBUG -I/<<PKGBUILDDIR>>/src -I/usr/include/mysql -I/usr/include/libexif -I/usr/include/ebml -I/usr/include/matroska -isystem /usr/include/uuid -isystem /usr/include/upnp -isystem /usr/include/taglib -g -O2 -ffile-prefix-map=/<<PKGBUILDDIR>>=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -fcf-protection -Wdate-time -D_FORTIFY_SOURCE=2 -std=c++17 -Wall -MD -MT CMakeFiles/libgerbera.dir/src/web/web_update.cc.o -MF CMakeFiles/libgerbera.dir/src/web/web_update.cc.o.d -o CMakeFiles/libgerbera.dir/src/web/web_update.cc.o -c /<<PKGBUILDDIR>>/src/web/web_update.cc
/<<PKGBUILDDIR>>/src/web/config_load.cc: In instantiation of ‘static void Web::ConfigLoad::setValue(pugi::xml_node&, const T&) [with T = fmt::v11::join_view<__gnu_cxx::__normal_iterator<const std::__cxx11::basic_string<char>*, std::vector<std::__cxx11::basic_string<char> > >, __gnu_cxx::__normal_iterator<const std::__cxx11::basic_string<char>*, std::vector<std::__cxx11::basic_string<char> > >, char>]’:
/<<PKGBUILDDIR>>/src/web/config_load.cc:532:17:   required from here
  532 |         setValue(item, fmt::join(filter->getNoTranscodingMimeTypes(), ","));
      |         ~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/<<PKGBUILDDIR>>/src/web/config_load.cc:110:63: error: static assertion failed: T must be formattable
  110 |     static_assert(fmt::has_formatter<T, fmt::format_context>::value, "T must be formattable");
      |                                                               ^~~~~
/<<PKGBUILDDIR>>/src/web/config_load.cc:110:63: note: ‘std::integral_constant<bool, false>::value’ evaluates to false
/<<PKGBUILDDIR>>/src/web/config_load.cc: In instantiation of ‘static void Web::ConfigLoad::setValue(pugi::xml_node&, const T&) [with T = const char*]’:
/<<PKGBUILDDIR>>/src/web/config_load.cc:657:21:   required from here
  657 |             setValue(item, AutoscanDirectory::mapScanmode(adir->getScanMode()));
      |             ~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/<<PKGBUILDDIR>>/src/web/config_load.cc:110:63: error: static assertion failed: T must be formattable
  110 |     static_assert(fmt::has_formatter<T, fmt::format_context>::value, "T must be formattable");
      |                                                               ^~~~~
/<<PKGBUILDDIR>>/src/web/config_load.cc:110:63: note: ‘std::integral_constant<bool, false>::value’ evaluates to false
make[4]: *** [CMakeFiles/libgerbera.dir/build.make:1860: CMakeFiles/libgerbera.dir/src/web/config_load.cc.o] Error 1