Just to provide more data points. I had similar incompatibility issue with libfmt v10 vs clang-22 so we might need to bump the package to llvm-22 to make it work with libfmt v11
Please see https://salsa.debian.org/deeplearning-team/pytorch/-/merge_requests/16/diffs?commit_id=8c59383f3d06b8927f31c7a7fb017a2963fc4d51 for details. Best Regards, Talha > On 7 Oct 2026, at 21:58, Sebastian Ramacher <[email protected]> wrote: > > Source: pytorch > Version: 2.12.1+dfsg-1 > Severity: serious > Tags: ftbfs > Justification: fails to build from source (but built successfully in the past) > X-Debbugs-Cc: [email protected] > > Dear maintainer, > > pytorch FTBFS with the new fmtlib: > > FAILED: [code=1] > caffe2/CMakeFiles/torch_cpu.dir/__/aten/src/ATen/core/Formatting.cpp.o > /usr/bin/c++ -DAT_PER_OPERATOR_HEADERS -DBUILD_ONEDNN_GRAPH > -DCAFFE2_BUILD_MAIN_LIB -DDNNL_EXPERIMENTAL_UKERNEL -DENABLE_IPC_FABRIC > -DHAVE_MALLOC_USABLE_SIZE=1 -DHAVE_MMAP=1 -DHAVE_POSIX_FALLOCATE=1 > -DHAVE_SHM_OPEN=1 -DHAVE_SHM_UNLINK=1 -DKINETO_NAMESPACE=libkineto > -DMINIZ_DISABLE_ZIP_READER_CRC32_CHECKS -DONNXIFI_ENABLE_EXT=1 -DONNX_ML=1 > -DONNX_NAMESPACE=onnx -DTORCH_ENABLE_LLVM -DUSE_C10D_GLOO -DUSE_C10D_MPI > -DUSE_DISTRIBUTED -DUSE_EXTERNAL_MZCRC -DUSE_RPC -DUSE_TENSORPIPE > -D_FILE_OFFSET_BITS=64 -Dtorch_cpu_EXPORTS > -DTORCH_ASSERT_ONLY_METHOD_OPERATORS > -I/build/reproducible-path/pytorch-2.12.1+dfsg/build/aten/src > -I/build/reproducible-path/pytorch-2.12.1+dfsg/aten/src > -I/build/reproducible-path/pytorch-2.12.1+dfsg/build > -I/build/reproducible-path/pytorch-2.12.1+dfsg -I/usr/lib/llvm-21/include > -I/build/reproducible-path/pytorch-2.12.1+dfsg/moodycamel > -I/build/reproducible-path/pytorch-2.12.1+dfsg/torch/csrc/api > -I/build/reproducible-path/pytorch-2.12.1+dfsg/torch/csrc/api/include > -I/build/reproducible-path/pytorch-2.12.1+dfsg/caffe2/aten/src/TH > -I/build/reproducible-path/pytorch-2.12.1+dfsg/build/caffe2/aten/src/TH > -I/build/reproducible-path/pytorch-2.12.1+dfsg/build/caffe2/aten/src > -I/build/reproducible-path/pytorch-2.12.1+dfsg/build/caffe2/../aten/src > -I/build/reproducible-path/pytorch-2.12.1+dfsg/torch/csrc > -I/build/reproducible-path/pytorch-2.12.1+dfsg/torch/headeronly > -I/build/reproducible-path/pytorch-2.12.1+dfsg/third_party/miniz-3.0.2 > -I/build/reproducible-path/pytorch-2.12.1+dfsg/debian/kineto/libkineto/include > -I/build/reproducible-path/pytorch-2.12.1+dfsg/debian/kineto/libkineto/src > -I/build/reproducible-path/pytorch-2.12.1+dfsg/third_party/cpp-httplib > -I/build/reproducible-path/pytorch-2.12.1+dfsg/third_party/nlohmann/include > -I/build/reproducible-path/pytorch-2.12.1+dfsg/build/vulkan > -I/build/reproducible-path/pytorch-2.12.1+dfsg/aten/../third_party/VulkanMemoryAllocator > -I/build/reproducible-path/pytorch-2.12.1+dfsg/aten/src/ATen/.. > -I/build/reproducible-path/pytorch-2.12.1+dfsg/c10/.. > -I/build/reproducible-path/pytorch-2.12.1+dfsg/aten/src/ATen/native/quantized/cpu/qnnpack/include > > -I/build/reproducible-path/pytorch-2.12.1+dfsg/aten/src/ATen/native/quantized/cpu/qnnpack/src > > -I/build/reproducible-path/pytorch-2.12.1+dfsg/aten/src/ATen/native/quantized/cpu/qnnpack/deps/clog/include > > -I/build/reproducible-path/pytorch-2.12.1+dfsg/third_party/flatbuffers/include > -isystem > /build/reproducible-path/pytorch-2.12.1+dfsg/cmake/../third_party/googletest/googlemock/include > -isystem > /build/reproducible-path/pytorch-2.12.1+dfsg/cmake/../third_party/googletest/googletest/include > -isystem > /build/reproducible-path/pytorch-2.12.1+dfsg/cmake/../third_party/eigen > -isystem /usr/include/oneapi/dnnl -isystem > /build/reproducible-path/pytorch-2.12.1+dfsg/INTERFACE -isystem > /usr/include/concurrentqueue -isystem > /build/reproducible-path/pytorch-2.12.1+dfsg/caffe2 -isystem > /usr/lib/x86_64-linux-gnu/openmpi/include -isystem > /usr/lib/x86_64-linux-gnu/openmpi/include/openmpi -Wdate-time > -D_FORTIFY_SOURCE=2 -g -O2 > -ffile-prefix-map=/build/reproducible-path/pytorch-2.12.1+dfsg=. > -fstack-protector-strong -fstack-clash-protection -Wformat > -Werror=format-security -fcf-protection -Wno-dangling-reference -I/usr > -fvisibility-inlines-hidden -DUSE_PTHREADPOOL -DUSE_KINETO > -DLIBKINETO_NOCUPTI -DLIBKINETO_NOROCTRACER -DLIBKINETO_NOXPUPTI=ON > -DUSE_PYTORCH_QNNPACK -DUSE_XNNPACK -DUSE_VULKAN -DUSE_VULKAN_API > -DSYMBOLICATE_MOBILE_DEBUG_HANDLE -O2 -fPIC -DC10_NODEPRECATED -Wall -Wextra > -Werror=return-type -Werror=non-virtual-dtor -Werror=range-loop-construct > -Werror=bool-operation -Wnarrowing -Wno-missing-field-initializers > -Wno-unknown-pragmas -Wno-unused-parameter -Wno-strict-overflow > -Wno-strict-aliasing -Wno-stringop-overflow -Wsuggest-override -Wno-psabi > -Wno-error=old-style-cast -faligned-new -Wno-maybe-uninitialized > -fno-math-errno -fno-trapping-math -Werror=format -Wno-dangling-reference > -Wno-error=dangling-reference -Wno-stringop-overflow > -DHAVE_AVX512_CPU_DEFINITION -DHAVE_AVX2_CPU_DEFINITION -O2 -g -DNDEBUG -fPIC > -fdiagnostics-color=always -DTORCH_USE_LIBUV -DCAFFE2_USE_GLOO -Wall -Wextra > -Wdeprecated -Wunused -Wno-unused-parameter -Wno-missing-field-initializers > -Wno-array-bounds -Wno-unknown-pragmas -Wno-strict-overflow > -Wno-strict-aliasing -Wredundant-move -Wno-interference-size > -Wno-maybe-uninitialized -fvisibility=hidden -fopenmp -MD -MT > caffe2/CMakeFiles/torch_cpu.dir/__/aten/src/ATen/core/Formatting.cpp.o -MF > caffe2/CMakeFiles/torch_cpu.dir/__/aten/src/ATen/core/Formatting.cpp.o.d -o > caffe2/CMakeFiles/torch_cpu.dir/__/aten/src/ATen/core/Formatting.cpp.o -c > /build/reproducible-path/pytorch-2.12.1+dfsg/aten/src/ATen/core/Formatting.cpp > In file included from /usr/include/fmt/compile.h:15, > from > /build/reproducible-path/pytorch-2.12.1+dfsg/aten/src/ATen/core/Formatting.cpp:3: > /usr/include/fmt/format.h: In instantiation of ‘constexpr OutputIt > fmt::v11::detail::write_exponent(int, OutputIt) [with Char = char; OutputIt = > std::ostreambuf_iterator<char, std::char_traits<char> >]’: > /usr/include/fmt/format.h:2373:34: required from ‘constexpr OutputIt > fmt::v11::detail::do_write_float(OutputIt, const DecimalFP&, const > fmt::v11::format_specs&, fmt::v11::sign, locale_ref) [with Char = char; > OutputIt = std::ostreambuf_iterator<char, std::char_traits<char> >; DecimalFP > = dragonbox::decimal_fp<double>; Grouping = fallback_digit_grouping<char>]’ > 2373 | return write_exponent<Char>(output_exp, it); > | ~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~ > /usr/include/fmt/format.h:2453:57: required from ‘constexpr OutputIt > fmt::v11::detail::write_float(OutputIt, const DecimalFP&, const > fmt::v11::format_specs&, fmt::v11::sign, locale_ref) [with Char = char; > OutputIt = std::ostreambuf_iterator<char, std::char_traits<char> >; DecimalFP > = dragonbox::decimal_fp<double>]’ > 2452 | return do_write_float<Char, OutputIt, DecimalFP, > | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ > 2453 | fallback_digit_grouping<Char>>(out, f, > specs, s, loc); > | > ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~ > /usr/include/fmt/format.h:3310:31: required from ‘constexpr OutputIt > fmt::v11::detail::write_float(OutputIt, T, fmt::v11::format_specs, > locale_ref) [with Char = char; OutputIt = std::ostreambuf_iterator<char, > std::char_traits<char> >; T = double]’ > 3310 | return write_float<Char>(out, dec, specs, s, loc); > | ~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~ > /usr/include/fmt/format.h:3347:33: required from ‘constexpr OutputIt > fmt::v11::detail::write(OutputIt, T, fmt::v11::format_specs, locale_ref) > [with Char = char; OutputIt = std::ostreambuf_iterator<char, > std::char_traits<char> >; T = double; typename > std::enable_if<std::integral_constant<bool, (std::is_floating_point<T>::value > || std::is_same<T, __float128>::value)>::value, int>::type <anonymous> = 0]’ > 3347 | : write_float<Char>(out, value, specs, loc); > | ~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~ > /usr/include/fmt/format.h:3633:23: required from ‘constexpr decltype > (ctx.out()) fmt::v11::detail::native_formatter<T, Char, TYPE>::format(const > T&, FormatContext&) const [with FormatContext = > fmt::v11::generic_context<std::ostreambuf_iterator<char, > std::char_traits<char> >, char>; T = double; Char = char; > fmt::v11::detail::type TYPE = fmt::v11::detail::type::double_type; decltype > (ctx.out()) = std::ostreambuf_iterator<char, std::char_traits<char> >]’ > 3633 | return write<Char>(ctx.out(), val, specs_, ctx.locale()); > | ~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ > /usr/include/fmt/compile.h:220:22: required from ‘constexpr OutputIt > fmt::v11::detail::spec_field<Char, T, N>::format(OutputIt, const Args& ...) > const [with OutputIt = std::ostreambuf_iterator<char, std::char_traits<char> > >; Args = {double, int}; Char = char; T = double; int N = 0]’ > 220 | return fmt.format(get_arg_checked<T, N>(args...), ctx); > | ~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ > /usr/include/fmt/compile.h:460:19: required from ‘constexpr OutputIt > fmt::v11::format_to(OutputIt, const CompiledFormat&, const Args& ...) [with > OutputIt = std::ostreambuf_iterator<char, std::char_traits<char> >; > CompiledFormat = detail::spec_field<char, double, 0>; Args = {double, int}; > typename std::enable_if<detail::is_compiled_format<CompiledFormat>::value, > int>::type <anonymous> = 0]’ > 460 | return cf.format(out, args...); > | ~~~~~~~~~^~~~~~~~~~~~~~ > /usr/include/fmt/compile.h:500:26: required from ‘constexpr OutputIt > fmt::v11::format_to(OutputIt, const S&, Args&& ...) [with OutputIt = > std::ostreambuf_iterator<char, std::char_traits<char> >; S = > at::<lambda()>::FMT_COMPILE_STRING; Args = {double&, const int&}; typename > std::enable_if<detail::is_compiled_string<S>::value, int>::type <anonymous> = > 0]’ > 500 | return fmt::format_to(out, compiled, > std::forward<Args>(args)...); > | ~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ > > /build/reproducible-path/pytorch-2.12.1+dfsg/aten/src/ATen/core/Formatting.cpp:159:21: > required from here > 159 | fmt::format_to(out_it, FMT_G, val, pf.width); > | ~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ > /usr/include/fmt/format.h:1501:32: error: no matching function for call to > ‘format_decimal<char>(std::ostreambuf_iterator<char, std::char_traits<char> > >&, unsigned int&, int)’ > 1501 | return format_decimal<Char>(out, uexp, count_digits(uexp)); > | ~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ > • there are 2 candidates > • candidate 1: ‘template<class Char, class UInt> constexpr Char* > fmt::v11::detail::format_decimal(Char*, UInt, int)’ > /usr/include/fmt/format.h:1199:31: > 1199 | FMT_CONSTEXPR FMT_INLINE auto format_decimal(Char* out, UInt > value, > | ^~~~~~~~~~~~~~ > • template argument deduction/substitution failed: > • cannot convert ‘out’ (type ‘std::ostreambuf_iterator<char, > std::char_traits<char> >’) to type ‘char*’ > /usr/include/fmt/format.h:1501:33: > 1501 | return format_decimal<Char>(out, uexp, > count_digits(uexp)); > | ^~~ > • candidate 2: ‘template<class Char, class UInt, class OutputIt, > typename > std::enable_if<fmt::v11::detail::is_back_insert_iterator<OutputIt>::value, > int>::type <anonymous> > constexpr OutputIt > fmt::v11::detail::format_decimal(OutputIt, UInt, int)’ > /usr/include/fmt/format.h:1207:20: > 1207 | FMT_CONSTEXPR auto format_decimal(OutputIt out, UInt value, > int num_digits) > | ^~~~~~~~~~~~~~ > • template argument deduction/substitution failed: > In file included from /usr/include/fmt/format.h:41: > • error: no type named ‘type’ in ‘struct std::enable_if<false, int>’ > /usr/include/fmt/format.h:1206:11: > 1206 | > FMT_ENABLE_IF(is_back_insert_iterator<OutputIt>::value)> > | ^~~~~~~~~~~~~ > /usr/include/fmt/format.h: In instantiation of ‘OutputIt > fmt::v11::detail::write_significand(OutputIt, UInt, int) [with Char = char; > OutputIt = std::ostreambuf_iterator<char, std::char_traits<char> >; UInt = > long unsigned int]’: > /usr/include/fmt/format.h:2429:35: required from ‘constexpr OutputIt > fmt::v11::detail::do_write_float(OutputIt, const DecimalFP&, const > fmt::v11::format_specs&, fmt::v11::sign, locale_ref) [with Char = char; > OutputIt = std::ostreambuf_iterator<char, std::char_traits<char> >; DecimalFP > = dragonbox::decimal_fp<double>; Grouping = fallback_digit_grouping<char>]’ > 2429 | return write_significand<Char>(it, significand, > significand_size); > | ~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ > /usr/include/fmt/format.h:2453:57: required from ‘constexpr OutputIt > fmt::v11::detail::write_float(OutputIt, const DecimalFP&, const > fmt::v11::format_specs&, fmt::v11::sign, locale_ref) [with Char = char; > OutputIt = std::ostreambuf_iterator<char, std::char_traits<char> >; DecimalFP > = dragonbox::decimal_fp<double>]’ > 2452 | return do_write_float<Char, OutputIt, DecimalFP, > | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ > 2453 | fallback_digit_grouping<Char>>(out, f, > specs, s, loc); > | > ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~ > /usr/include/fmt/format.h:3310:31: required from ‘constexpr OutputIt > fmt::v11::detail::write_float(OutputIt, T, fmt::v11::format_specs, > locale_ref) [with Char = char; OutputIt = std::ostreambuf_iterator<char, > std::char_traits<char> >; T = double]’ > 3310 | return write_float<Char>(out, dec, specs, s, loc); > | ~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~ > /usr/include/fmt/format.h:3347:33: required from ‘constexpr OutputIt > fmt::v11::detail::write(OutputIt, T, fmt::v11::format_specs, locale_ref) > [with Char = char; OutputIt = std::ostreambuf_iterator<char, > std::char_traits<char> >; T = double; typename > std::enable_if<std::integral_constant<bool, (std::is_floating_point<T>::value > || std::is_same<T, __float128>::value)>::value, int>::type <anonymous> = 0]’ > 3347 | : write_float<Char>(out, value, specs, loc); > | ~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~ > /usr/include/fmt/format.h:3633:23: required from ‘constexpr decltype > (ctx.out()) fmt::v11::detail::native_formatter<T, Char, TYPE>::format(const > T&, FormatContext&) const [with FormatContext = > fmt::v11::generic_context<std::ostreambuf_iterator<char, > std::char_traits<char> >, char>; T = double; Char = char; > fmt::v11::detail::type TYPE = fmt::v11::detail::type::double_type; decltype > (ctx.out()) = std::ostreambuf_iterator<char, std::char_traits<char> >]’ > 3633 | return write<Char>(ctx.out(), val, specs_, ctx.locale()); > | ~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ > /usr/include/fmt/compile.h:220:22: required from ‘constexpr OutputIt > fmt::v11::detail::spec_field<Char, T, N>::format(OutputIt, const Args& ...) > const [with OutputIt = std::ostreambuf_iterator<char, std::char_traits<char> > >; Args = {double, int}; Char = char; T = double; int N = 0]’ > 220 | return fmt.format(get_arg_checked<T, N>(args...), ctx); > | ~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ > /usr/include/fmt/compile.h:460:19: required from ‘constexpr OutputIt > fmt::v11::format_to(OutputIt, const CompiledFormat&, const Args& ...) [with > OutputIt = std::ostreambuf_iterator<char, std::char_traits<char> >; > CompiledFormat = detail::spec_field<char, double, 0>; Args = {double, int}; > typename std::enable_if<detail::is_compiled_format<CompiledFormat>::value, > int>::type <anonymous> = 0]’ > 460 | return cf.format(out, args...); > | ~~~~~~~~~^~~~~~~~~~~~~~ > /usr/include/fmt/compile.h:500:26: required from ‘constexpr OutputIt > fmt::v11::format_to(OutputIt, const S&, Args&& ...) [with OutputIt = > std::ostreambuf_iterator<char, std::char_traits<char> >; S = > at::<lambda()>::FMT_COMPILE_STRING; Args = {double&, const int&}; typename > std::enable_if<detail::is_compiled_string<S>::value, int>::type <anonymous> = > 0]’ > 500 | return fmt::format_to(out, compiled, > std::forward<Args>(args)...); > | ~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ > > /build/reproducible-path/pytorch-2.12.1+dfsg/aten/src/ATen/core/Formatting.cpp:159:21: > required from here > 159 | fmt::format_to(out_it, FMT_G, val, pf.width); > | ~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ > /usr/include/fmt/format.h:2247:30: error: no matching function for call to > ‘format_decimal<char>(std::ostreambuf_iterator<char, std::char_traits<char> > >&, long unsigned int&, int&)’ > 2247 | return format_decimal<Char>(out, significand, significand_size); > | ~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ > • there are 2 candidates > • candidate 1: ‘template<class Char, class UInt> constexpr Char* > fmt::v11::detail::format_decimal(Char*, UInt, int)’ > /usr/include/fmt/format.h:1199:31: > 1199 | FMT_CONSTEXPR FMT_INLINE auto format_decimal(Char* out, UInt > value, > | ^~~~~~~~~~~~~~ > • template argument deduction/substitution failed: > • cannot convert ‘out’ (type ‘std::ostreambuf_iterator<char, > std::char_traits<char> >’) to type ‘char*’ > /usr/include/fmt/format.h:2247:31: > 2247 | return format_decimal<Char>(out, significand, > significand_size); > | ^~~ > • candidate 2: ‘template<class Char, class UInt, class OutputIt, > typename > std::enable_if<fmt::v11::detail::is_back_insert_iterator<OutputIt>::value, > int>::type <anonymous> > constexpr OutputIt > fmt::v11::detail::format_decimal(OutputIt, UInt, int)’ > /usr/include/fmt/format.h:1207:20: > 1207 | FMT_CONSTEXPR auto format_decimal(OutputIt out, UInt value, > int num_digits) > | ^~~~~~~~~~~~~~ > • template argument deduction/substitution failed: > • error: no type named ‘type’ in ‘struct std::enable_if<false, int>’ > /usr/include/fmt/format.h:1206:11: > 1206 | > FMT_ENABLE_IF(is_back_insert_iterator<OutputIt>::value)> > | ^~~~~~~~~~~~~ > > See > https://buildd.debian.org/status/fetch.php?pkg=pytorch&arch=amd64&ver=2.12.1%2Bdfsg-1%2Bb1&stamp=1791370572&raw=0 > for details. > > Cheers > -- > Sebastian Ramacher >

