@dpeukert: Ahh, I think I know something that might have influenced this: dolphin updated its own bundled fmt to 8.1.1 4 days ago, and also changed a lot of its own custom formatters.
The failing build was with hash 73bcf9c24b from 6 days ago.
EDIT: Yup! Reproducible even in a fresh chroot:
[263/1001] Building CXX object Source/Core/Common/CMakeFiles/common.dir/Image.cpp.o
FAILED: Source/Core/Common/CMakeFiles/common.dir/Image.cpp.o
/usr/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/build/dolphin-emu-git/src/dolphin-emu-git/Source/Core -I/build/dolphin-emu-git/src/dolphin-emu-git/External/minizip -I/usr/include/libpng16 -I/build/dolphin-emu-git/src/dolphin-emu-git/Externals/soundtouch -I/usr/include/libusb-1.0 -I/build/dolphin-emu-git/src/dolphin-emu-git/Externals/discord-rpc/include -I/build/dolphin-emu-git/src/dolphin-emu-git/Externals/picojson -I/build/dolphin-emu-git/src/dolphin-emu-git/build/Source/Core -I/build/dolphin-emu-git/src/dolphin-emu-git/Externals/minizip/. -isystem /usr/include/miniupnpc -march=x86-64 -mtune=generic -O2 -pipe -fno-plt -fexceptions -Wp,-D_FORTIFY_SOURCE=2 -Wformat -Werror=format-security -fstack-clash-protection -fcf-protection -Wp,-D_GLIBCXX_ASSERTIONS -fpermissive -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 /build/dolphin-emu-git/src/dolphin-emu-git/Source/Core/Common/Image.cpp
In file included from /usr/include/fmt/format.h:48,
from /build/dolphin-emu-git/src/dolphin-emu-git/Source/Core/Common/Logging/Log.h:7,
from /build/dolphin-emu-git/src/dolphin-emu-git/Source/Core/Common/Assert.h:8,
from /build/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 [72], 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 [72], 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 [72], 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]’
/build/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 [72], int, char [8]}]’
/build/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 (&)[72], const int&, const char (&)[8]}; Context = fmt::v8::basic_format_context<fmt::v8::appender, char>; Args = {Common::ImageByteFormat, char [6], char [72], 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 [72], 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]’
/build/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 [72], int, char [8]}]’
/build/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
[264/1001] Building CXX object Source/Core/Common/CMakeFiles/common.dir/FileSearch.cpp.o
[265/1001] Building CXX object Source/Core/Common/CMakeFiles/common.dir/Hash.cpp.o
[266/1001] Building CXX object Source/Core/Common/CMakeFiles/common.dir/HttpRequest.cpp.o
[267/1001] Building CXX object Source/Core/Common/CMakeFiles/common.dir/FileUtil.cpp.o
[268/1001] Building CXX object Source/Core/Common/CMakeFiles/common.dir/GekkoDisassembler.cpp.o
ninja: build stopped: subcommand failed.
==> ERROR: A failure occurred in build().
Aborting...
==> ERROR: Build failed, check /opt/archroot/yrlf/build
Maybe it's not that great of an idea to select a version of fmt with a different major version than dolphin expects.
It's fixed though, so not really relevant, but might be good to think about the next time Arch switches to a new major version of fmt (fmt 9.0.0, whenever that will be)
Pinned Comments
dpeukert commented on 2020-04-10 12:34 (UTC) (edited on 2020-09-26 17:48 (UTC) by dpeukert)
The PKGBUILD for this package is hosted here (contributions are welcome!): https://gitlab.com/dpeukert/pkgbuilds/tree/main/dolphin-emu-git