#1150269 pytorch: FTBFS: error: no matching function for call to ‘format_decimal<char>(std::ostreambuf_iterator<char, std::char_traits<char> >&, unsigned int&, int)’

Package:
src:pytorch
Source:
src:pytorch
Submitter:
Sebastian Ramacher
Date:
2026-10-07 20:15:02 UTC
Severity:
normal
Tags:
#1150269#5
Date:
2026-10-07 19:58:57 UTC
From:
To:
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: sramacher@debian.org

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

#1150269#10
Date:
2026-10-07 20:11:52 UTC
From:
To:
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

#1150269#15
Date:
2026-10-07 20:11:52 UTC
From:
To:
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