I'm trying to update the build2 fmt package to v11 and have run into a few issues with certain toolchains used by the build2 CI configurations. Some or all of these may simply be outside of fmt supported environments, and quite likely compiler/STL bugs rather than fmt bugs, but I'm not qualified to make that judgement, especially since I can't locally test most of these configurations, so am just posting the errors that I've run into.
All these are on latest master (bc3af51). I can just disable these configurations for the moment in the package, so if this is outside the scope of what fmt can support/address then no worries. I'm also curious though if there's a reason that the fmt CI (from what I can see) does not seem to be building with any recent compiler versions? Looks like the most recent clang used is 11, for example.
Link to full build2 CI output, which includes full platform/distribution details.
- There's an error building
ranges-test on debian/clang17:
In file included from /tmp/dist/fmt-tests-11.0.1-a.0.20240902045134.60423130ce74/basics/test/ranges-test.cc:8:
In file included from /tmp/dist/fmt-11.0.1-a.0.20240902045134.60423130ce74/fmt/include/fmt/ranges.h:13:
In file included from /usr/bin/../lib/gcc/x86_64-linux-gnu/13/../../../../include/c++/13/iterator:66:
In file included from /usr/bin/../lib/gcc/x86_64-linux-gnu/13/../../../../include/c++/13/bits/streambuf_iterator.h:35:
In file included from /usr/bin/../lib/gcc/x86_64-linux-gnu/13/../../../../include/c++/13/streambuf:43:
In file included from /usr/bin/../lib/gcc/x86_64-linux-gnu/13/../../../../include/c++/13/bits/ios_base.h:41:
In file included from /usr/bin/../lib/gcc/x86_64-linux-gnu/13/../../../../include/c++/13/bits/locale_classes.h:40:
In file included from /usr/bin/../lib/gcc/x86_64-linux-gnu/13/../../../../include/c++/13/string:58:
In file included from /usr/bin/../lib/gcc/x86_64-linux-gnu/13/../../../../include/c++/13/bits/memory_resource.h:41:
In file included from /usr/bin/../lib/gcc/x86_64-linux-gnu/13/../../../../include/c++/13/bits/uses_allocator_args.h:38:
/usr/bin/../lib/gcc/x86_64-linux-gnu/13/../../../../include/c++/13/tuple:691:2: error: pack expansion contains parameter pack '_UTypes' that has a different length (1 vs. 0) from outer parameter packs
691 | using __convertible = __and_<is_convertible<_UTypes, _Types>...>;
| ^~~~~
/usr/bin/../lib/gcc/x86_64-linux-gnu/13/../../../../include/c++/13/tuple:853:27: note: in instantiation of template type alias '__convertible' requested here
853 | = _TCC<true>::template __convertible<_Args...>::value;
| ^
/usr/bin/../lib/gcc/x86_64-linux-gnu/13/../../../../include/c++/13/tuple:948:12: note: in instantiation of static data member 'std::tuple<std::vector<char>>::__convertible<>' requested here
948 | explicit(!__convertible<_UElements&...>)
| ^
/tmp/dist/fmt-tests-11.0.1-a.0.20240902045134.60423130ce74/basics/test/ranges-test.cc:581:31: note: while substituting deduced template arguments into function template 'tuple' [with _UElements = (no value)]
581 | EXPECT_EQ(fmt::format("{}", std::tuple<std::vector<char>>{{'x'}}), "(['x'])");
| ^
- Some tests are failing on
freebsd:
/tmp/dist/fmt-tests-11.0.1-a.0.20240902045134.60423130ce74/basics/test/xchar-test.cc:575: Failure
Value of: saturdays
Expected: contains at least one element that is equal to L"s\xE1" L"b."
Actual: { L"s\xE1" L"b", L"s\xE1." }
[ FAILED ] locale_test.chrono_weekday (2 ms)
/tmp/dist/fmt-tests-11.0.1-a.0.20240902045134.60423130ce74/basics/test/chrono-test.cc:767: Failure
Value of: saturdays
Expected: contains at least one element that is equal to "s\xC3\xA1" "b."
As Text: "sáb."
Actual: { "s\xC3\xA1" "b"
As Text: "sáb", "s\xC3\xA1."
As Text: "sá." }
/tmp/dist/fmt-tests-11.0.1-a.0.20240902045134.60423130ce74/basics/test/chrono-test.cc:768: Failure
Value of: saturdays
Expected: contains at least one element that is equal to "s\xC3\xA1" "b."
As Text: "sáb."
Actual: { "s\xC3\xA1" "b"
As Text: "sáb", "s\xC3\xA1."
As Text: "sá." }
/tmp/dist/fmt-tests-11.0.1-a.0.20240902045134.60423130ce74/basics/test/chrono-test.cc:769: Failure
Value of: saturdays
Expected: contains at least one element that is equal to "s\xC3\xA1" "b."
As Text: "sáb."
Actual: { "s\xC3\xA1" "b"
As Text: "sáb", "s\xC3\xA1."
As Text: "sá." }
[ FAILED ] chrono_test.weekday (1 ms)
- The library itself fails to build on MSVC 17.8. Since it compiles fine on both earlier and later versions I guess this is most likely a compiler bug, but for completeness:
C:\Coding\Build2\third-party-packaging\build2-packaging\fmt\fmt\fmt\include\fmt\base.h(2200): error C2672: 'fmt::v11::detail::buffer<T>::append': no matching overloaded function found
with
[
T=char
]
C:\Coding\Build2\third-party-packaging\build2-packaging\fmt\fmt\fmt\include\fmt\base.h(1944): note: could be 'void fmt::v11::detail::buffer<T>::append(const U *,const U *)'
with
[
T=char
]
C:\Coding\Build2\third-party-packaging\build2-packaging\fmt\fmt\fmt\include\fmt\base.h(2200): note: Failed to specialize function template 'void fmt::v11::detail::buffer<T>::append(const U *,const U *)'
with
[
T=char
]
C:\Coding\Build2\third-party-packaging\build2-packaging\fmt\fmt\fmt\include\fmt\base.h(2200): note: With the following template arguments:
C:\Coding\Build2\third-party-packaging\build2-packaging\fmt\fmt\fmt\include\fmt\base.h(2200): note: 'U=char'
C:\Coding\Build2\third-party-packaging\build2-packaging\fmt\fmt\fmt\include\fmt\base.h(2200): note: the template instantiation context (the oldest one first) is
C:\Coding\Build2\third-party-packaging\build2-packaging\fmt\fmt\fmt\include\fmt\format.h(3180): note: see reference to function template instantiation 'OutputIt fmt::v11::detail::format_decimal<char,uint32_t,fmt::v11::appender,0>(OutputIt,UInt,int)' being compiled
with
[
OutputIt=fmt::v11::appender,
UInt=uint32_t
]
C:\Coding\Build2\third-party-packaging\build2-packaging\fmt\fmt\fmt\include\fmt\format.h(1376): note: see reference to function template instantiation 'OutputIt fmt::v11::detail::copy_noinline<char,char*,OutputIt>(InputIt,InputIt,OutputIt)' being compiled
with
[
OutputIt=fmt::v11::appender,
InputIt=char *
]
C:\Coding\Build2\third-party-packaging\build2-packaging\fmt\fmt\fmt\include\fmt\format.h(599): note: see reference to function template instantiation 'OutputIt fmt::v11::detail::copy<char,InputIt,OutputIt,0>(InputIt,InputIt,OutputIt)' being compiled
with
[
OutputIt=fmt::v11::appender,
InputIt=char *
]
error: process C:/Program Files/Microsoft Visual Studio/2022/Community/VC/Tools/MSVC/14.38.33130/bin/HostX64/x64/cl.exe exited with code 2
info: command line: "C:/Program Files/Microsoft Visual Studio/2022/Community/VC/Tools/MSVC/14.38.33130/bin/HostX64/x64/cl.exe" -IC:\Coding\Build2\third-party-packaging\build2-packaging\fmt\fmt\fmt/include -IC:\Coding\Build2\third-party-packaging\build2-packaging\build\msvc\fmt -IC:\Coding\Build2\third-party-packaging\build2-packaging\fmt\fmt -DFMT_LIB_EXPORT /Zi /nologo /std:c++latest /Zc:__cplusplus /permissive- /I "C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.38.33130\include" /I "C:\Program Files (x86)\Windows Kits\10\Include\10.0.22621.0\ucrt" /I "C:\Program Files (x86)\Windows Kits\10\Include\10.0.22621.0\shared" /I "C:\Program Files (x86)\Windows Kits\10\Include\10.0.22621.0\um" /I "C:\Program Files (x86)\Windows Kits\10\Include\10.0.22621.0\winrt" /diagnostics:color /utf-8 /EHsc /MD /Fd: ..\..\build\msvc\fmt\fmt\src\format.dll.obj.pdb /Fo: ..\..\build\msvc\fmt\fmt\src\format.dll.obj /c /TP C:\Coding\Build2\third-party-packaging\build2-packaging\fmt\fmt\fmt\src\format.cc
I'm trying to update the
build2fmtpackage to v11 and have run into a few issues with certain toolchains used by thebuild2CI configurations. Some or all of these may simply be outside offmtsupported environments, and quite likely compiler/STL bugs rather thanfmtbugs, but I'm not qualified to make that judgement, especially since I can't locally test most of these configurations, so am just posting the errors that I've run into.All these are on latest
master(bc3af51). I can just disable these configurations for the moment in the package, so if this is outside the scope of whatfmtcan support/address then no worries. I'm also curious though if there's a reason that thefmtCI (from what I can see) does not seem to be building with any recent compiler versions? Looks like the most recent clang used is 11, for example.Link to full build2 CI output, which includes full platform/distribution details.
ranges-teston debian/clang17:freebsd: