Opened 2 years ago

Closed 2 years ago

Last modified 2 years ago

#65619 closed defect (fixed)

libfmt @9.x: upstream changes break dependents; create new segregated port libfmt8

Reported by: mascguy (Christopher Nielsen) Owned by: mascguy (Christopher Nielsen)
Priority: Normal Milestone:
Component: ports Version: 2.7.2
Keywords: pending Cc: barracuda156, thomasfiala (Thomas Fiala), poac@…, ryandesign (Ryan Carsten Schmidt), l2dy (Zero King), MarcusCalhoun-Lopez (Marcus Calhoun-Lopez)
Port: libfmt cantera poac mkvtoolnix mpd

Description

The latest update of this port - to 9.0 - breaks a number a of dependents.

https://github.com/macports/macports-ports/pull/15589

Details of upstream's breaking changes:

https://github.com/fmtlib/fmt/blob/master/ChangeLog.rst

Thus far, at least three ports have been identified as being affected:

cantera:

src/thermo/RedlichKwongMFTP.cpp:1049:21: error: no matching function for call to 'format_to'
                    format_to(b, ", {}", speciesName(k));
                    ^~~~~~~~~

poac:

/opt/local/include/fmt/ostream.h:98:19: error: use of undeclared identifier 'FMT_MSC_VERSION'
  if (const_check(FMT_MSC_VERSION)) {
                  ^
In file included from poac-0.3.10/lib/util/archive.cc:6:
In file included from poac-0.3.10/include/poac/util/archive.hpp:13:
In file included from poac-0.3.10/include/poac/poac.hpp:26:
/opt/local/include/fmt/ranges.h:403:9: error: use of undeclared identifier 'disjunction'
        disjunction<
        ^
/opt/local/include/fmt/ranges.h:467:9: error: use of undeclared identifier 'disjunction'
        disjunction<
        ^
/opt/local/include/fmt/ranges.h:473:72: error: expected unqualified-id
          detail::has_fallback_formatter<detail::uncvref_second_type<T>, Char>
                                                                       ^

mpd:

../mpd-0.23.7/src/Log.hxx:50:15: error: no member named 'make_args_checked' in namespace 'fmt'
                       fmt::make_args_checked<Args...>(format_str,
                       ~~~~~^
../mpd-0.23.7/src/Log.hxx:50:33: error: 'Args' does not refer to a value
                       fmt::make_args_checked<Args...>(format_str,
                                              ^
../mpd-0.23.7/src/Log.hxx:43:34: note: declared here
template<typename S, typename... Args>
                                 ^
../mpd-0.23.7/src/Log.hxx:49:32: error: no member named 'to_string_view' in namespace 'fmt'; did you mean 'fmt::detail::to_string_view'?
        return LogVFmt(level, domain, fmt::to_string_view(format_str),
                                      ^~~~~~~~~~~~~~~~~~~
                                      fmt::detail::to_string_view
/opt/local/include/fmt/core.h:532:17: note: 'fmt::detail::to_string_view' declared here
FMT_INLINE auto to_string_view(const Char* s) -> basic_string_view<Char> {
                ^
In file included from ../mpd-0.23.7/src/LogBackend.cxx:21:
../mpd-0.23.7/src/Log.hxx:46:39: warning: unused parameter 'args' [-Wunused-parameter]
       const S &format_str, Args&&... args) noexcept
                                      ^
1 warning and 3 errors generated.

There may also be more dependents affected, but those three are confirmed based on the buildbots.

So we either need to patch those, or simply revert libfmt to the previous release (8.1.1).

Change History (24)

comment:1 Changed 2 years ago by mascguy (Christopher Nielsen)

Cc: thomasfiala poac@… added

CCing maintainers for cantera and poac. How do you folks prefer to handle this?

comment:2 Changed 2 years ago by mascguy (Christopher Nielsen)

Cc: ryandesign added
Port: mkvtoolnix added

comment:3 Changed 2 years ago by mascguy (Christopher Nielsen)

This is also affecting older versions of mkvoolnix, used for macOS releases 10.14 and earlier. See: issue:65635

comment:4 Changed 2 years ago by mascguy (Christopher Nielsen)

After pondering this for a few days, I'm thinking that we might need to create a new port - libfmt8 - segregated from libfmt. That way we can support ports that are broken, without having to go back and patch each one.

comment:5 Changed 2 years ago by mascguy (Christopher Nielsen)

Owner: set to mascguy
Status: newassigned

comment:6 Changed 2 years ago by mascguy (Christopher Nielsen)

Summary: libfmt @9.x: upstream changes break dependentslibfmt @9.x: upstream changes break dependents; create new segregated port libfmt8

comment:7 Changed 2 years ago by ken-matsui (Ken Matsui)

Since I'm an owner of poac, I'll dig into the error while not sure I can fix it soon. I would be grateful if you could create the versioned libfmt8. Thank you.

comment:8 in reply to:  7 ; Changed 2 years ago by mascguy (Christopher Nielsen)

Replying to ken-matsui:

Since I'm an owner of poac, I'll dig into the error while not sure I can fix it soon. I would be grateful if you could create the versioned libfmt8. Thank you.

Sounds good, I'll try to get this taken care of ASAP.

comment:9 Changed 2 years ago by mascguy (Christopher Nielsen)

Keywords: pending added

comment:10 Changed 2 years ago by Christopher Nielsen <mascguy@…>

In ec448312e241563c5df6413edf55f23f13b9035d/macports-ports (master):

libfmt8: new port, segregated from libfmt
See: #65619

comment:11 in reply to:  10 ; Changed 2 years ago by mascguy (Christopher Nielsen)

Replying to Christopher Nielsen <mascguy@…>:

In ec448312e241563c5df6413edf55f23f13b9035d/macports-ports (master):

libfmt8: new port, segregated from libfmt
See: #65619

FYI, for libfmt8, everything has been pushed down one level:

$ port contents libfmt8
Port libfmt8 contains:
  /opt/local/include/libfmt8/fmt/args.h
  /opt/local/include/libfmt8/fmt/chrono.h
  /opt/local/include/libfmt8/fmt/color.h
  /opt/local/include/libfmt8/fmt/compile.h
  /opt/local/include/libfmt8/fmt/core.h
  /opt/local/include/libfmt8/fmt/format-inl.h
  /opt/local/include/libfmt8/fmt/format.h
  /opt/local/include/libfmt8/fmt/locale.h
  /opt/local/include/libfmt8/fmt/os.h
  /opt/local/include/libfmt8/fmt/ostream.h
  /opt/local/include/libfmt8/fmt/printf.h
  /opt/local/include/libfmt8/fmt/ranges.h
  /opt/local/include/libfmt8/fmt/xchar.h
  /opt/local/lib/libfmt8/cmake/fmt/fmt-config-version.cmake
  /opt/local/lib/libfmt8/cmake/fmt/fmt-config.cmake
  /opt/local/lib/libfmt8/cmake/fmt/fmt-targets-release.cmake
  /opt/local/lib/libfmt8/cmake/fmt/fmt-targets.cmake
  /opt/local/lib/libfmt8/libfmt.8.1.1.dylib
  /opt/local/lib/libfmt8/libfmt.8.dylib
  /opt/local/lib/libfmt8/libfmt.dylib
  /opt/local/lib/libfmt8/pkgconfig/fmt.pc

comment:12 in reply to:  11 Changed 2 years ago by mascguy (Christopher Nielsen)

Replying to mascguy:

FYI, for libfmt8, everything has been pushed down one level

For consistency, I'll update libfmt to be similarly segregated. Otherwise, the headers may inadvertently be used, when both are installed.

While the segregation changes are trivial, it'll take some time to tweak all dependents. More to follow.

comment:13 Changed 2 years ago by Christopher Nielsen <mascguy@…>

In ef9f30902c688980e0c7d758696eeea4eefe5da5/macports-ports (master):

libfmt9: new segregated port

  • Will replace libfmt, once all dependents are migrated

See: #65619

comment:14 Changed 2 years ago by mascguy (Christopher Nielsen)

Port: mpd removed

It looks like mpd has been updated, and the new upstream release takes care of this issue.

comment:15 Changed 2 years ago by mascguy (Christopher Nielsen)

Update: I'm almost done with migrating libfmt dependents, with two troublesome ports left: cherrytree and openimageio. Once those are fixed, I'll push all of the changes.

comment:16 in reply to:  8 Changed 2 years ago by ken-matsui (Ken Matsui)

Replying to mascguy:

Replying to ken-matsui:

Since I'm an owner of poac, I'll dig into the error while not sure I can fix it soon. I would be grateful if you could create the versioned libfmt8. Thank you.

Sounds good, I'll try to get this taken care of ASAP.

Thank you so much :)

comment:17 Changed 2 years ago by mascguy (Christopher Nielsen)

Cc: l2dy added
Port: mpd added

comment:18 Changed 2 years ago by mascguy (Christopher Nielsen)

Cc: MarcusCalhoun-Lopez added

Adding Marcus, for openimageio.

comment:19 Changed 2 years ago by Christopher Nielsen <mascguy@…>

comment:20 Changed 2 years ago by Christopher Nielsen <mascguy@…>

In 36d233c15a96cfa77b85276e1a12b3d80919077b/macports-ports (master):

libfmt dependents: migrate to libfmt8/libfmt9
See: #65619
Fixes: #65635

comment:21 Changed 2 years ago by mascguy (Christopher Nielsen)

Folks, there is only one straggler left, cherrytree. And currently working on it.

comment:22 Changed 2 years ago by Christopher Nielsen <mascguy@…>

In b33773d50e318efe68e8112e780500fd57f1a65f/macports-ports (master):

libfmt8/libfmt9: deactivate libfmt, if installed
See: #65619

comment:23 Changed 2 years ago by Christopher Nielsen <mascguy@…>

Resolution: fixed
Status: assignedclosed

In 5a588524a09e30a7982003d45021921a0647fc0f/macports-ports (master):

cherrytree: migrate to libfmt9
Fixes: #65619

comment:24 Changed 2 years ago by Christopher Nielsen <mascguy@…>

In 4cdd039d9785144bb3b426a3e3485a547d5a3840/macports-ports (master):

libfmt: convert to stub

  • Otherwise, existing installs can still be activated and used, causing issues

See: #65619

Note: See TracTickets for help on using tickets.