Project

General

Profile

Emulator Issues #12798

build fails against fmt 8.1.x

Added by Scrumplex 9 months ago. Updated 8 months ago.

Status:
Fixed
Priority:
High
Assignee:
-
% Done:

0%

Operating system:
N/A
Issue type:
Bug
Milestone:
Current
Regression:
No
Relates to usability:
No
Relates to performance:
No
Easy:
No
Relates to maintainability:
Yes
Regression start:
Fixed in:
5.0-15920

Description

Game Name?

N/A

Game ID? (right click the game in the game list, Properties, Info tab)

N/A

MD5 Hash? (right click the game in the game list, Properties, Verify tab, Verify Integrity button)

N/A

What's the problem? Describe what went wrong.

When building against fmt version 8.1.x compilation fails.

What steps will reproduce the problem?

  1. Install fmt 8.1.1
  2. Build dolphin-emu

Is the issue present in the latest development version? For future reference, please also write down the version number of the latest development version.

Yes, Git commit e4372a317d

Is the issue present in the latest stable version?

probably

If the issue isn't present in the latest stable version, which is the first broken version? (You can find the first broken version by bisecting. Windows users can use the tool https://forums.dolphin-emu.org/Thread-green-notice-development-thread-unofficial-dolphin-bisection-tool-for-finding-broken-builds and anyone who is building Dolphin on their own can use git bisect.)

N/A

If your issue is a graphical issue, please attach screenshots and record a three frame fifolog of the issue if possible. Screenshots showing what it is supposed to look like from either console or older builds of Dolphin will help too. For more information on how to use the fifoplayer, please check here: https://wiki.dolphin-emu.org/index.php?title=FifoPlayer

N/A

What are your PC specifications? (CPU, GPU, Operating System, more)

  • CPU: AMD Ryzen 9 3900X
  • GPU: AMD Radeon Vega 56
  • OS: Arch Linux
  • Packages:
    • fmt 8.1.1-1
    • dolphin-emu-git 5.0.r15874.ge4372a317d-1 (target)

Is there anything else that can help developers narrow down the issue? (e.g. logs, screenshots,
configuration files, savefiles, savestates)

log:

FAILED: Source/Core/Common/CMakeFiles/common.dir/Image.cpp.o 
/usr/bin/ccache /usr/lib/ccache/bin/c++ -DDATA_DIR=\"/usr/share/dolphin-emu/\" -DFMT_LOCALE -DFMT_SHARED -DHAS_OPENGL -DHAS_VULKAN -DHAVE_EGL=1 -DHAVE_FFMPEG -DHAVE_LIBEVDEV=1 -DHAVE_LIBSYSTEMD -DHAVE_LIBUDEV=1 -DHAVE_X11=1 -DHAVE_XRANDR=1 -DUSE_ANALYTICS=1 -DUSE_MEMORYWATCHER=1 -DUSE_PIPES=1 -DUSE_UPNP -D_ARCH_64=1 -D_DEFAULT_SOURCE -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE -D_M_X86=1 -D_M_X86_64=1 -D__LIBUSB__ -D__STDC_CONSTANT_MACROS -D__STDC_LIMIT_MACROS -I/home/scrumplex/.cache/paru/clone/dolphin-emu-git/src/dolphin-emu-git/Source/Core -I/home/scrumplex/.cache/paru/clone/dolphin-emu-git/src/dolphin-emu-git/External/minizip -I/usr/include/libpng16 -I/home/scrumplex/.cache/paru/clone/dolphin-emu-git/src/dolphin-emu-git/Externals/soundtouch -I/usr/include/libusb-1.0 -I/home/scrumplex/.cache/paru/clone/dolphin-emu-git/src/dolphin-emu-git/Externals/discord-rpc/include -I/home/scrumplex/.cache/paru/clone/dolphin-emu-git/src/dolphin-emu-git/Externals/picojson -I/home/scrumplex/.cache/paru/clone/dolphin-emu-git/src/dolphin-emu-git/build/Source/Core -I/home/scrumplex/.cache/paru/clone/dolphin-emu-git/src/dolphin-emu-git/Externals/minizip/. -isystem /usr/include/miniupnpc -march=native -O2 -pipe -fno-plt -fexceptions         -Wp,-D_FORTIFY_SOURCE=2 -Wformat -Werror=format-security         -fstack-clash-protection -fcf-protection -Wp,-D_GLIBCXX_ASSERTIONS -flto -msse2 -fdiagnostics-color -fno-strict-aliasing -fno-exceptions -fvisibility-inlines-hidden -fvisibility=hidden -fomit-frame-pointer -Wall -Wtype-limits -Wsign-compare -Wignored-qualifiers -Wuninitialized -Wlogical-op -Wshadow -Winit-self -Wmissing-declarations -Wno-stringop-truncation -Werror=format -std=c++17 -MD -MT Source/Core/Common/CMakeFiles/common.dir/Image.cpp.o -MF Source/Core/Common/CMakeFiles/common.dir/Image.cpp.o.d -o Source/Core/Common/CMakeFiles/common.dir/Image.cpp.o -c /home/scrumplex/.cache/paru/clone/dolphin-emu-git/src/dolphin-emu-git/Source/Core/Common/Image.cpp
In file included from /usr/include/fmt/format.h:48,
                 from /home/scrumplex/.cache/paru/clone/dolphin-emu-git/src/dolphin-emu-git/Source/Core/Common/Logging/Log.h:7,
                 from /home/scrumplex/.cache/paru/clone/dolphin-emu-git/src/dolphin-emu-git/Source/Core/Common/Assert.h:8,
                 from /home/scrumplex/.cache/paru/clone/dolphin-emu-git/src/dolphin-emu-git/Source/Core/Common/Image.cpp:11:
/usr/include/fmt/core.h: In instantiation of ‘constexpr decltype (ctx.begin()) fmt::v8::detail::parse_format_specs(ParseContext&) [with T = Common::ImageByteFormat; ParseContext = fmt::v8::detail::compile_parse_context<char, fmt::v8::detail::error_handler>; decltype (ctx.begin()) = const char*]’:
/usr/include/fmt/core.h:2906:9:   required from ‘constexpr fmt::v8::detail::format_string_checker<Char, ErrorHandler, Args>::format_string_checker(fmt::v8::basic_string_view<Char>, ErrorHandler) [with Char = char; ErrorHandler = fmt::v8::detail::error_handler; Args = {Common::ImageByteFormat, char [6], char [99], int, char [8]}]’
/usr/include/fmt/core.h:2947:33:   required from ‘void fmt::v8::detail::check_format_string(S) [with <template-parameter-1-1> = {Common::ImageByteFormat, char [6], char [99], int, char [8]}; S = Common::SavePNG(const string&, const u8*, Common::ImageByteFormat, u32, u32, int, int)::<lambda()>::FMT_COMPILE_STRING; typename std::enable_if<fmt::v8::is_compile_string<S>::value, int>::type <anonymous> = 0]’
/usr/include/fmt/format.h:843:39:   required from ‘fmt::v8::format_arg_store<fmt::v8::basic_format_context<typename std::conditional<std::is_same<Char, char>::value, fmt::v8::appender, std::back_insert_iterator<fmt::v8::detail::buffer<Char> > >::type, Char>, typename std::remove_reference<Args>::type ...> fmt::v8::make_args_checked(const S&, fmt::v8::remove_reference_t<Args>& ...) [with Args = {Common::ImageByteFormat, char [6], char [99], int, char [8]}; S = Common::SavePNG(const string&, const u8*, Common::ImageByteFormat, u32, u32, int, int)::<lambda()>::FMT_COMPILE_STRING; Char = char; typename std::conditional<std::is_same<Char, char>::value, fmt::v8::appender, std::back_insert_iterator<fmt::v8::detail::buffer<Char> > >::type = fmt::v8::appender]’
/home/scrumplex/.cache/paru/clone/dolphin-emu-git/src/dolphin-emu-git/Source/Core/Common/MsgHandler.h:46:57:   required from ‘bool Common::MsgAlertFmt(bool, Common::MsgType, Common::Log::LogType, const char*, int, const S&, const Args& ...) [with long unsigned int NumFields = 5; S = Common::SavePNG(const string&, const u8*, Common::ImageByteFormat, u32, u32, int, int)::<lambda()>::FMT_COMPILE_STRING; Args = {Common::ImageByteFormat, char [6], char [99], int, char [8]}]’
/home/scrumplex/.cache/paru/clone/dolphin-emu-git/src/dolphin-emu-git/Source/Core/Common/Image.cpp:83:5:   required from here
/usr/include/fmt/core.h:2672:12: error: use of deleted function ‘fmt::v8::detail::fallback_formatter<T, Char, Enable>::fallback_formatter() [with T = Common::ImageByteFormat; Char = char; Enable = void]’
 2672 |   auto f = conditional_t<has_formatter<mapped_type, context>::value,
      |            ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 2673 |                          formatter<mapped_type, char_type>,
      |                          ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 2674 |                          fallback_formatter<T, char_type>>();
      |                          ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/usr/include/fmt/core.h:1041:3: note: declared here
 1041 |   fallback_formatter() = delete;
      |   ^~~~~~~~~~~~~~~~~~
/usr/include/fmt/core.h: In instantiation of ‘constexpr fmt::v8::detail::value<Context> fmt::v8::detail::make_arg(T&&) [with bool IS_PACKED = true; Context = fmt::v8::basic_format_context<fmt::v8::appender, char>; fmt::v8::detail::type <anonymous> = fmt::v8::detail::type::custom_type; T = const Common::ImageByteFormat&; typename std::enable_if<IS_PACKED, int>::type <anonymous> = 0]’:
/usr/include/fmt/core.h:1855:77:   required from ‘constexpr fmt::v8::format_arg_store<Context, Args>::format_arg_store(T&& ...) [with T = {const Common::ImageByteFormat&, const char (&)[6], const char (&)[99], const int&, const char (&)[8]}; Context = fmt::v8::basic_format_context<fmt::v8::appender, char>; Args = {Common::ImageByteFormat, char [6], char [99], int, char [8]}]’
/usr/include/fmt/format.h:844:18:   required from ‘fmt::v8::format_arg_store<fmt::v8::basic_format_context<typename std::conditional<std::is_same<Char, char>::value, fmt::v8::appender, std::back_insert_iterator<fmt::v8::detail::buffer<Char> > >::type, Char>, typename std::remove_reference<Args>::type ...> fmt::v8::make_args_checked(const S&, fmt::v8::remove_reference_t<Args>& ...) [with Args = {Common::ImageByteFormat, char [6], char [99], int, char [8]}; S = Common::SavePNG(const string&, const u8*, Common::ImageByteFormat, u32, u32, int, int)::<lambda()>::FMT_COMPILE_STRING; Char = char; typename std::conditional<std::is_same<Char, char>::value, fmt::v8::appender, std::back_insert_iterator<fmt::v8::detail::buffer<Char> > >::type = fmt::v8::appender]’
/home/scrumplex/.cache/paru/clone/dolphin-emu-git/src/dolphin-emu-git/Source/Core/Common/MsgHandler.h:46:57:   required from ‘bool Common::MsgAlertFmt(bool, Common::MsgType, Common::Log::LogType, const char*, int, const S&, const Args& ...) [with long unsigned int NumFields = 5; S = Common::SavePNG(const string&, const u8*, Common::ImageByteFormat, u32, u32, int, int)::<lambda()>::FMT_COMPILE_STRING; Args = {Common::ImageByteFormat, char [6], char [99], int, char [8]}]’
/home/scrumplex/.cache/paru/clone/dolphin-emu-git/src/dolphin-emu-git/Source/Core/Common/Image.cpp:83:5:   required from here
/usr/include/fmt/core.h:1728: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
 1728 |       formattable,
      |       ^~~~~~~~~~~
/usr/include/fmt/core.h:1728:7: note: ‘formattable’ evaluates to false

FAILED: Source/Core/Common/CMakeFiles/common.dir/TraversalClient.cpp.o 
/usr/bin/ccache /usr/lib/ccache/bin/c++ -DDATA_DIR=\"/usr/share/dolphin-emu/\" -DFMT_LOCALE -DFMT_SHARED -DHAS_OPENGL -DHAS_VULKAN -DHAVE_EGL=1 -DHAVE_FFMPEG -DHAVE_LIBEVDEV=1 -DHAVE_LIBSYSTEMD -DHAVE_LIBUDEV=1 -DHAVE_X11=1 -DHAVE_XRANDR=1 -DUSE_ANALYTICS=1 -DUSE_MEMORYWATCHER=1 -DUSE_PIPES=1 -DUSE_UPNP -D_ARCH_64=1 -D_DEFAULT_SOURCE -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE -D_M_X86=1 -D_M_X86_64=1 -D__LIBUSB__ -D__STDC_CONSTANT_MACROS -D__STDC_LIMIT_MACROS -I/home/scrumplex/.cache/paru/clone/dolphin-emu-git/src/dolphin-emu-git/Source/Core -I/home/scrumplex/.cache/paru/clone/dolphin-emu-git/src/dolphin-emu-git/External/minizip -I/usr/include/libpng16 -I/home/scrumplex/.cache/paru/clone/dolphin-emu-git/src/dolphin-emu-git/Externals/soundtouch -I/usr/include/libusb-1.0 -I/home/scrumplex/.cache/paru/clone/dolphin-emu-git/src/dolphin-emu-git/Externals/discord-rpc/include -I/home/scrumplex/.cache/paru/clone/dolphin-emu-git/src/dolphin-emu-git/Externals/picojson -I/home/scrumplex/.cache/paru/clone/dolphin-emu-git/src/dolphin-emu-git/build/Source/Core -I/home/scrumplex/.cache/paru/clone/dolphin-emu-git/src/dolphin-emu-git/Externals/minizip/. -isystem /usr/include/miniupnpc -march=native -O2 -pipe -fno-plt -fexceptions         -Wp,-D_FORTIFY_SOURCE=2 -Wformat -Werror=format-security         -fstack-clash-protection -fcf-protection -Wp,-D_GLIBCXX_ASSERTIONS -flto -msse2 -fdiagnostics-color -fno-strict-aliasing -fno-exceptions -fvisibility-inlines-hidden -fvisibility=hidden -fomit-frame-pointer -Wall -Wtype-limits -Wsign-compare -Wignored-qualifiers -Wuninitialized -Wlogical-op -Wshadow -Winit-self -Wmissing-declarations -Wno-stringop-truncation -Werror=format -std=c++17 -MD -MT Source/Core/Common/CMakeFiles/common.dir/TraversalClient.cpp.o -MF Source/Core/Common/CMakeFiles/common.dir/TraversalClient.cpp.o.d -o Source/Core/Common/CMakeFiles/common.dir/TraversalClient.cpp.o -c /home/scrumplex/.cache/paru/clone/dolphin-emu-git/src/dolphin-emu-git/Source/Core/Common/TraversalClient.cpp
In file included from /usr/include/fmt/format.h:48,
                 from /home/scrumplex/.cache/paru/clone/dolphin-emu-git/src/dolphin-emu-git/Source/Core/Common/Logging/Log.h:7,
                 from /home/scrumplex/.cache/paru/clone/dolphin-emu-git/src/dolphin-emu-git/Source/Core/Common/TraversalClient.cpp:10:
/usr/include/fmt/core.h: In instantiation of ‘constexpr decltype (ctx.begin()) fmt::v8::detail::parse_format_specs(ParseContext&) [with T = TraversalPacketType; ParseContext = fmt::v8::detail::compile_parse_context<char, fmt::v8::detail::error_handler>; decltype (ctx.begin()) = const char*]’:
/usr/include/fmt/core.h:2906:9:   required from ‘constexpr fmt::v8::detail::format_string_checker<Char, ErrorHandler, Args>::format_string_checker(fmt::v8::basic_string_view<Char>, ErrorHandler) [with Char = char; ErrorHandler = fmt::v8::detail::error_handler; Args = {TraversalPacketType}]’
/usr/include/fmt/core.h:2947:33:   required from ‘void fmt::v8::detail::check_format_string(S) [with <template-parameter-1-1> = {TraversalPacketType}; S = TraversalClient::HandleServerPacket(TraversalPacket*)::<lambda()>::FMT_COMPILE_STRING; typename std::enable_if<fmt::v8::is_compile_string<S>::value, int>::type <anonymous> = 0]’
/usr/include/fmt/format.h:843:39:   required from ‘fmt::v8::format_arg_store<fmt::v8::basic_format_context<typename std::conditional<std::is_same<Char, char>::value, fmt::v8::appender, std::back_insert_iterator<fmt::v8::detail::buffer<Char> > >::type, Char>, typename std::remove_reference<Args>::type ...> fmt::v8::make_args_checked(const S&, fmt::v8::remove_reference_t<Args>& ...) [with Args = {TraversalPacketType}; S = TraversalClient::HandleServerPacket(TraversalPacket*)::<lambda()>::FMT_COMPILE_STRING; Char = char; typename std::conditional<std::is_same<Char, char>::value, fmt::v8::appender, std::back_insert_iterator<fmt::v8::detail::buffer<Char> > >::type = fmt::v8::appender]’
/home/scrumplex/.cache/paru/clone/dolphin-emu-git/src/dolphin-emu-git/Source/Core/Common/Logging/Log.h:98:52:   required from ‘void Common::Log::GenericLogFmt(Common::Log::LogLevel, Common::Log::LogType, const char*, int, const S&, const Args& ...) [with long unsigned int NumFields = 1; S = TraversalClient::HandleServerPacket(TraversalPacket*)::<lambda()>::FMT_COMPILE_STRING; Args = {TraversalPacketType}]’
/home/scrumplex/.cache/paru/clone/dolphin-emu-git/src/dolphin-emu-git/Source/Core/Common/TraversalClient.cpp:197:5:   required from here
/usr/include/fmt/core.h:2672:12: error: use of deleted function ‘fmt::v8::detail::fallback_formatter<T, Char, Enable>::fallback_formatter() [with T = TraversalPacketType; Char = char; Enable = void]’
 2672 |   auto f = conditional_t<has_formatter<mapped_type, context>::value,
      |            ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 2673 |                          formatter<mapped_type, char_type>,
      |                          ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 2674 |                          fallback_formatter<T, char_type>>();
      |                          ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/usr/include/fmt/core.h:1041:3: note: declared here
 1041 |   fallback_formatter() = delete;
      |   ^~~~~~~~~~~~~~~~~~
/usr/include/fmt/core.h: In instantiation of ‘constexpr fmt::v8::detail::value<Context> fmt::v8::detail::make_arg(T&&) [with bool IS_PACKED = true; Context = fmt::v8::basic_format_context<fmt::v8::appender, char>; fmt::v8::detail::type <anonymous> = fmt::v8::detail::type::custom_type; T = const TraversalPacketType&; typename std::enable_if<IS_PACKED, int>::type <anonymous> = 0]’:
/usr/include/fmt/core.h:1855:77:   required from ‘constexpr fmt::v8::format_arg_store<Context, Args>::format_arg_store(T&& ...) [with T = {const TraversalPacketType&}; Context = fmt::v8::basic_format_context<fmt::v8::appender, char>; Args = {TraversalPacketType}]’
/usr/include/fmt/format.h:844:18:   required from ‘fmt::v8::format_arg_store<fmt::v8::basic_format_context<typename std::conditional<std::is_same<Char, char>::value, fmt::v8::appender, std::back_insert_iterator<fmt::v8::detail::buffer<Char> > >::type, Char>, typename std::remove_reference<Args>::type ...> fmt::v8::make_args_checked(const S&, fmt::v8::remove_reference_t<Args>& ...) [with Args = {TraversalPacketType}; S = TraversalClient::HandleServerPacket(TraversalPacket*)::<lambda()>::FMT_COMPILE_STRING; Char = char; typename std::conditional<std::is_same<Char, char>::value, fmt::v8::appender, std::back_insert_iterator<fmt::v8::detail::buffer<Char> > >::type = fmt::v8::appender]’
/home/scrumplex/.cache/paru/clone/dolphin-emu-git/src/dolphin-emu-git/Source/Core/Common/Logging/Log.h:98:52:   required from ‘void Common::Log::GenericLogFmt(Common::Log::LogLevel, Common::Log::LogType, const char*, int, const S&, const Args& ...) [with long unsigned int NumFields = 1; S = TraversalClient::HandleServerPacket(TraversalPacket*)::<lambda()>::FMT_COMPILE_STRING; Args = {TraversalPacketType}]’
/home/scrumplex/.cache/paru/clone/dolphin-emu-git/src/dolphin-emu-git/Source/Core/Common/TraversalClient.cpp:197:5:   required from here
/usr/include/fmt/core.h:1728: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
 1728 |       formattable,
      |       ^~~~~~~~~~~
/usr/include/fmt/core.h:1728:7: note: ‘formattable’ evaluates to false

History

#1 Updated by JosJuice 9 months ago

  • Relates to maintainability changed from No to Yes
  • Milestone set to Current
  • Priority changed from Normal to High

#2 Updated by pokechu22 9 months ago

  • Status changed from New to Fix pending

#3 Updated by pokechu22 8 months ago

  • Fixed in set to 5.0-15920
  • Status changed from Fix pending to Fixed

Should be fixed now.

Also available in: Atom PDF