Skip to content

Build failure with libfmt 10 #1807

@NexAdn

Description

@NexAdn

Bug report

Describe the bug

Compile error with libfmt 10. Seems like there was a change in libfmt's API.

Expected Behavior

Software compiles.

Actual Behavior

Compile failure. Excerpt from the build output:

[5/99] c++ -Impd.p -I. -I.. -Isrc -I../src -I/usr/include/dbus-1.0 -I/usr/lib64/dbus-1.0/include -fdiagnostics-color=always -D_FILE_OFFSET_BITS=64 -Wall -Winvalid-pch -Wextra -Wpedantic -std=c++2a -O0 -g -ffast-math -ftree-vectorize -Wcast-qual -Wdouble-promotion -Wmissing-declarations -Wshadow -Wunused -Wvla -Wwrite-strings -Wno-stringop-overflow -fno-threadsafe-statics -fmerge-all-constants -Wcomma-subscript -Wextra-semi -Wmismatched-tags -Woverloaded-virtual -Wsign-promo -Wvolatile -Wvirtual-inheritance -Wno-non-virtual-dtor -Wsuggest-override -fvisibility=hidden -D_GNU_SOURCE -DPCRE2_CODE_UNIT_WIDTH=0 -MD -MQ mpd.p/src_command_PlayerCommands.cxx.o -MF mpd.p/src_command_PlayerCommands.cxx.o.d -o mpd.p/src_command_PlayerCommands.cxx.o -c ../src/command/PlayerCommands.cxx
FAILED: mpd.p/src_command_PlayerCommands.cxx.o 
c++ -Impd.p -I. -I.. -Isrc -I../src -I/usr/include/dbus-1.0 -I/usr/lib64/dbus-1.0/include -fdiagnostics-color=always -D_FILE_OFFSET_BITS=64 -Wall -Winvalid-pch -Wextra -Wpedantic -std=c++2a -O0 -g -ffast-math -ftree-vectorize -Wcast-qual -Wdouble-promotion -Wmissing-declarations -Wshadow -Wunused -Wvla -Wwrite-strings -Wno-stringop-overflow -fno-threadsafe-statics -fmerge-all-constants -Wcomma-subscript -Wextra-semi -Wmismatched-tags -Woverloaded-virtual -Wsign-promo -Wvolatile -Wvirtual-inheritance -Wno-non-virtual-dtor -Wsuggest-override -fvisibility=hidden -D_GNU_SOURCE -DPCRE2_CODE_UNIT_WIDTH=0 -MD -MQ mpd.p/src_command_PlayerCommands.cxx.o -MF mpd.p/src_command_PlayerCommands.cxx.o.d -o mpd.p/src_command_PlayerCommands.cxx.o -c ../src/command/PlayerCommands.cxx
In file included from ../src/client/Response.hxx:9,
                 from ../src/command/PlayerCommands.cxx:12:
/usr/include/fmt/core.h: In instantiation of 'constexpr fmt::v10::detail::value<Context> fmt::v10::detail::make_value(T&&) [with Context = fmt::v10::basic_format_context<fmt::v10::appender, char>; T = StringBuffer<24>&]':
/usr/include/fmt/core.h:1711:29:   required from 'constexpr fmt::v10::detail::value<Context> fmt::v10::detail::make_arg(T&&) [with bool IS_PACKED = true; Context = fmt::v10::basic_format_context<fmt::v10::appender, char>; type <anonymous> = fmt::v10::detail::type::custom_type; T = StringBuffer<24>&; typename std::enable_if<IS_PACKED, int>::type <anonymous> = 0]'
/usr/include/fmt/core.h:1827:77:   required from 'constexpr fmt::v10::format_arg_store<Context, Args>::format_arg_store(T&& ...) [with T = {StringBuffer<24>&}; Context = fmt::v10::basic_format_context<fmt::v10::appender, char>; Args = {StringBuffer<24>}]'
/usr/include/fmt/core.h:1844:31:   required from 'constexpr fmt::v10::format_arg_store<Context, typename std::remove_cv<typename std::remove_reference<T>::type>::type ...> fmt::v10::make_format_args(T&& ...) [with Context = basic_format_context<appender, char>; T = {StringBuffer<24>&}]'
../src/client/Response.hxx:71:29:   required from 'bool Response::Fmt(const S&, Args&& ...) [with S = handle_status(Client&, Request, Response&)::<lambda()>::FMT_COMPILE_STRING; Args = {StringBuffer<24>}]'
../src/command/PlayerCommands.cxx:172:9:   required from here
/usr/include/fmt/core.h:1691:7: error: static assertion failed: Cannot format an argument. To make type T formattable provide a formatter<T> specialization: https://fmt.dev/latest/api.html#udt
 1691 |       formattable,
      |       ^~~~~~~~~~~
/usr/include/fmt/core.h:1691:7: note: 'formattable' evaluates to false

Version

Tested both current git master and 0.23.12.

Configuration

Not relevant, but this is the output from meson setup showing the build configuration:

[nex@saber mpd]$ meson setup build-fmt-test --buildtype=debug
The Meson build system
Version: 1.0.1
Source dir: /home/nex/projects/mpd
Build dir: /home/nex/projects/mpd/build-fmt-test
Build type: native build
Project name: mpd
Project version: 0.24
C compiler for the host machine: cc (gcc 12.2.1 "cc (Gentoo 12.2.1_p20230428-r1 p2) 12.2.1 20230428")
C linker for the host machine: cc ld.bfd 2.39
C++ compiler for the host machine: c++ (gcc 12.2.1 "c++ (Gentoo 12.2.1_p20230428-r1 p2) 12.2.1 20230428")
C++ linker for the host machine: c++ ld.bfd 2.39
Host machine cpu family: x86_64
Host machine cpu: x86_64
Found git repository at /home/nex/projects/mpd
Configuring Version.h using configuration
Compiler for C++ supports arguments -fvisibility=hidden: YES 
Compiler for C supports arguments -fvisibility=hidden: YES 
Compiler for C++ supports arguments -ffast-math: YES 
Compiler for C++ supports arguments -ftree-vectorize: YES 
Compiler for C++ supports arguments -Wcast-qual: YES 
Compiler for C++ supports arguments -Wdouble-promotion: YES 
Compiler for C++ supports arguments -Wmissing-declarations: YES 
Compiler for C++ supports arguments -Wshadow: YES 
Compiler for C++ supports arguments -Wunused: YES 
Compiler for C++ supports arguments -Wvla: YES 
Compiler for C++ supports arguments -Wwrite-strings: YES 
Compiler for C++ supports arguments -Wunreachable-code-aggressive: NO 
Compiler for C++ supports arguments -Wused-but-marked-unused: NO 
Compiler for C++ supports arguments -Wno-stringop-overflow: YES 
Compiler for C++ supports arguments -fno-threadsafe-statics: YES 
Compiler for C++ supports arguments -fmerge-all-constants: YES 
Compiler for C++ supports arguments -Wcomma-subscript: YES 
Compiler for C++ supports arguments -Wextra-semi: YES 
Compiler for C++ supports arguments -Wmismatched-tags: YES 
Compiler for C++ supports arguments -Woverloaded-virtual: YES 
Compiler for C++ supports arguments -Wsign-promo: YES 
Compiler for C++ supports arguments -Wvolatile: YES 
Compiler for C++ supports arguments -Wvirtual-inheritance: YES 
Compiler for C++ supports arguments -Wno-non-virtual-dtor: YES 
Compiler for C++ supports arguments -Wcomma: NO 
Compiler for C++ supports arguments -Wheader-hygiene: NO 
Compiler for C++ supports arguments -Winconsistent-missing-destructor-override: NO 
Compiler for C++ supports arguments -Wsuggest-override: YES 
Compiler for C supports arguments -ffast-math: YES 
Compiler for C supports arguments -ftree-vectorize: YES 
Compiler for C supports arguments -Wcast-qual: YES 
Compiler for C supports arguments -Wdouble-promotion: YES 
Compiler for C supports arguments -Wmissing-declarations: YES 
Compiler for C supports arguments -Wshadow: YES 
Compiler for C supports arguments -Wunused: YES 
Compiler for C supports arguments -Wvla: YES 
Compiler for C supports arguments -Wwrite-strings: YES 
Compiler for C supports arguments -Wunreachable-code-aggressive: NO 
Compiler for C supports arguments -Wused-but-marked-unused: NO 
Compiler for C supports arguments -Wno-stringop-overflow: YES 
Compiler for C supports arguments -Wmissing-prototypes: YES 
Compiler for C supports arguments -Wstrict-prototypes: YES 
Compiler for C++ supports link arguments -Wl,-z,relro: YES 
Compiler for C++ supports link arguments -Wl,-z,now: YES 
Checking for function "getpwnam_r" : YES 
Checking for function "initgroups" : YES 
Checking for function "fnmatch" : YES 
Checking for function "strndup" : YES 
Checking for function "strcasestr" : YES 
Checking for function "syslog" : YES 
Found pkg-config: /usr/bin/pkg-config (1.8.1)
Run-time dependency fmt found: YES 10.0.0
Run-time dependency icu-i18n found: YES 72.1
Run-time dependency liburing found: YES 2.3
Configuring Features.h using configuration
Run-time dependency threads found: YES
Checking for function "pthread_setname_np" with dependency threads: YES 
Header "sys/socket.h" has symbol "AF_INET6" : YES 
Header "sys/socket.h" has symbol "struct ucred" : YES 
Header "sys/socket.h" has symbol "SO_PEERCRED" : YES 
Checking for function "getpeereid" : NO 
Configuring Features.h using configuration
Run-time dependency samplerate found: YES 0.2.2
Run-time dependency soxr found: YES 0.1.3
Run-time dependency dbus-1 found: YES 1.15.4
Dependency smbclient skipped: feature smbclient disabled
Run-time dependency zlib found: YES 1.2.13
Run-time dependency alsa found: YES 1.2.8
Found CMake: /usr/bin/cmake (3.25.3)
Run-time dependency libchromaprint found: NO (tried pkgconfig and cmake)
Run-time dependency libcurl found: YES 8.0.1
Run-time dependency expat found: YES 2.5.0
Run-time dependency libavformat found: YES 58.76.100
Run-time dependency libavcodec found: YES 58.134.100
Run-time dependency libavutil found: YES 56.70.100
Run-time dependency libavfilter found: YES 7.110.100
Run-time dependency libnfs found: YES 5.0.2
Run-time dependency libpcre2-8 found: YES 10.42
Run-time dependency libpipewire-0.3 found: YES 0.3.67
Run-time dependency libpulse found: YES 16.1
Library sndio found: NO
Run-time dependency sqlite3 found: YES 3.41.2
Run-time dependency libsystemd found: YES 253
Run-time dependency libupnp found: NO (tried pkgconfig and cmake)
Run-time dependency libnpupnp found: NO (tried pkgconfig and cmake)
Run-time dependency yajl found: YES 2.1.0
Run-time dependency avahi-client found: YES 0.8
Run-time dependency id3tag found: YES 0.16.2
Run-time dependency libcdio_paranoia found: NO (tried pkgconfig and cmake)
Run-time dependency libmms found: NO (tried pkgconfig and cmake)
Configuring Features.h using configuration
Run-time dependency libiso9660 found: NO (tried pkgconfig and cmake)
Library bz2 found: YES
Run-time dependency zziplib found: YES 0.13.72
Configuring Features.h using configuration
Run-time dependency ao found: NO (tried pkgconfig and cmake)
Run-time dependency jack found: YES 1.9.22
Header "jack/jack.h" has symbol "jack_set_info_function" : YES 
Run-time dependency openal found: YES 1.23.0
Run-time dependency shout found: YES 2.4.6
Configuring Features.h using configuration
Run-time dependency flac found: YES 1.4.2
Run-time dependency opus found: YES 1.3.1
Run-time dependency vorbis found: YES 1.3.7
Run-time dependency vorbisenc found: YES 1.3.7
Run-time dependency ogg found: YES 1.3.5
Run-time dependency adplug found: NO (tried pkgconfig and cmake)
Run-time dependency fluidsynth found: YES 2.3.1
Run-time dependency audiofile found: YES 0.3.6
Library faad found: NO
Run-time dependency libgme found: NO (tried pkgconfig and cmake)
Library mad found: YES
Run-time dependency libmikmod found: NO (tried pkgconfig and cmake)
Run-time dependency libmodplug found: NO (tried pkgconfig and cmake)
Run-time dependency libopenmpt found: NO (tried pkgconfig and cmake)
Library mpcdec found: NO
Run-time dependency libmpg123 found: YES 1.31.3
Run-time dependency sndfile found: YES 1.2.0
Run-time dependency wavpack found: NO (tried pkgconfig and cmake)
Run-time dependency wildmidi found: NO (tried pkgconfig and cmake)
Library WildMidi found: NO
Run-time dependency libsidplayfp found: NO (tried pkgconfig and cmake)
Configuring Features.h using configuration
Library mp3lame found: YES
Run-time dependency twolame found: NO (tried pkgconfig and cmake)
Run-time dependency shine found: NO (tried pkgconfig and cmake)
Configuring Features.h using configuration
Configuring Features.h using configuration
Run-time dependency libmpdclient found: YES 2.20
Configuring config.h using configuration
Run-time dependency systemd found: YES 253
systemd/system/meson.build:5: WARNING: Project targets '>= 0.56.0' but uses feature deprecated since '0.56.0': dependency.get_pkgconfig_variable. use dependency.get_variable(pkgconfig : ...) instead
Configuring mpd.service using configuration
Dependency systemd found: YES 253 (cached)
systemd/user/meson.build:5: WARNING: Project targets '>= 0.56.0' but uses feature deprecated since '0.56.0': dependency.get_pkgconfig_variable. use dependency.get_variable(pkgconfig : ...) instead
Configuring mpd.service using configuration
Program sphinx-build found: YES (/usr/bin/sphinx-build)
Build targets in project: 81
WARNING: Deprecated features used:
 * 0.56.0: {'dependency.get_pkgconfig_variable'}

mpd 0.24

  User defined options
    buildtype: debug

Found ninja-1.11.1 at /usr/bin/ninja

Log

No runtime log available due to being a build failure. I can provide the full build log if needed (it's very long), but I don't see any information relevant to the build failure which I didn't paste above.

Additional Context

Originally discovered on Gentoo Bugzilla: https://bugs.gentoo.org/906074 (also contains a complete build log)

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions