#1151597 opm-common: FTBFS with fmt 12.2: fmt/core.h no longer provides fmt::format

#1151597#5
Date:
2026-10-22 07:18:23 UTC
From:
To:
opm-common 2025.10+ds-5 fails to build in sid on arm64 with fmtlib
12.2.0+ds1-2 from experimental during the fmtlib transition rebuild.

To reproduce, first rebuild spdlog against the experimental fmt packages,
then rebuild Doxygen against that fmt12-compatible spdlog. Rebuild
opm-common in a clean sid build environment with libfmt-dev and libfmt12
12.2.0+ds1-2, explicitly selecting rebuilt Doxygen and its rebuilt spdlog
runtime rather than the archive binaries.

Equil.cpp includes <fmt/core.h> and calls fmt::format. In fmt 12.2,
core.h includes base.h instead of format.h by default; code using
fmt::format should include <fmt/format.h> explicitly. This explains the
missing declaration below, but a complete build with that change has not
been tested.

This is distinct from #1092847 (fmt::join / fmt 11 formatting failures,
fixed in 2024.10+ds-4) and #1143681 (GCC 16 std::abs(__float128)
redefinition, fixed in 2025.10+ds-5).

Relevant build-log excerpt:

  /build/reproducible-path/opm-common-2025.10+ds/opm/input/eclipse/EclipseState/InitConfig/Equil.cpp:40:42: error: ‘format’ is not a member of ‘fmt’; did you mean ‘std::format’?
     40 |             const std::string msg = fmt::format("Equilibration data specification error:\n"
        |                                          ^~~~~~
  /build/reproducible-path/opm-common-2025.10+ds/opm/input/eclipse/EclipseState/InitConfig/Equil.cpp:63:42: error: ‘format’ is not a member of ‘fmt’; did you mean ‘std::format’?
     63 |             const std::string msg = fmt::format("Equilibration input error for region {}:\n"
        |                                          ^~~~~~

The full build log is attached.