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.