[MacPorts] #70882: OpenCore Legacy Patcher 2.0.2 installs faulty CoreImage framework on macOS 15 on Macs using 3802-based GPUs
MacPorts
noreply at macports.org
Wed Oct 16 00:49:36 UTC 2024
#70882: OpenCore Legacy Patcher 2.0.2 installs faulty CoreImage framework on macOS
15 on Macs using 3802-based GPUs
-------------------------------------------------+-------------------------
Reporter: RivetBenoit | Owner: (none)
Type: defect | Status: assigned
Priority: Normal | Milestone:
Component: ports | Version: 2.10.1
Resolution: | Keywords: sequoia
Port: ffmpeg, ffmpeg6, ffmpeg7, ffmpeg- |
devel |
-------------------------------------------------+-------------------------
Comment (by ryandesign):
Replying to [comment:31 kampfflunder]:
> What I do not understand: While linking, I get the known errors:
> {{{
> ---> Scanning binaries for linking errors
> Incompatible library version: /opt/local/bin/ffmpeg requires version
1.0.1 or later, but
/System/Library/Frameworks/CoreImage.framework/Versions/A/CoreImage
provides version 1.0.0
> Incompatible library version: /opt/local/bin/ffplay requires version
1.0.1 or later, but
/System/Library/Frameworks/CoreImage.framework/Versions/A/CoreImage
provides version 1.0.0
> Incompatible library version: /opt/local/bin/ffprobe requires version
1.0.1 or later, but
/System/Library/Frameworks/CoreImage.framework/Versions/A/CoreImage
provides version 1.0.0
> Incompatible library version: /opt/local/lib/libavdevice.58.13.100.dylib
requires version 1.0.1 or later, but
/System/Library/Frameworks/CoreImage.framework/Versions/A/CoreImage
provides version 1.0.0
> Incompatible library version: /opt/local/lib/libavfilter.7.110.100.dylib
requires version 1.0.1 or later, but
/System/Library/Frameworks/CoreImage.framework/Versions/A/CoreImage
provides version 1.0.0
> Incompatible library version: /opt/local/libexec/ffmpeg7/bin/ffmpeg7
requires version 1.0.1 or later, but
/System/Library/Frameworks/CoreImage.framework/Versions/A/CoreImage
provides version 1.0.0
> Incompatible library version: /opt/local/libexec/ffmpeg7/bin/ffplay7
requires version 1.0.1 or later, but
/System/Library/Frameworks/CoreImage.framework/Versions/A/CoreImage
provides version 1.0.0
> Incompatible library version: /opt/local/libexec/ffmpeg7/bin/ffprobe7
requires version 1.0.1 or later, but
/System/Library/Frameworks/CoreImage.framework/Versions/A/CoreImage
provides version 1.0.0
> Incompatible library version:
/opt/local/libexec/ffmpeg7/lib/libavdevice.61.1.100.dylib requires version
1.0.1 or later, but
/System/Library/Frameworks/CoreImage.framework/Versions/A/CoreImage
provides version 1.0.0
> Incompatible library version:
/opt/local/libexec/ffmpeg7/lib/libavfilter.10.1.100.dylib requires version
1.0.1 or later, but
/System/Library/Frameworks/CoreImage.framework/Versions/A/CoreImage
provides version 1.0.0
> }}}
To clarify: this is not "while linking". Scanning binaries for linking
errors is a step called "rev-upgrade" that MacPorts performs after every
install or upgrade. It's designed to catch the fairly-common problem of
someone updating a port to a new version that installs a new backwards-
incompatible version of a library without remembering to increase the
revision of all ports that link with that library, which renders those
ports that link with the older library broken. If the new library is a
different major version than the old one, then programs linking with the
older library cannot be launched anymore. Instead, you get a message that
the library can't be found. In the case of CoreImage here, it's only the
minor library version that has changed; the major version ("A") hasn't so
you won't get a file not found error when using programs that link with
the library, but it is expected that you would see other problems, so it
is reported to you.
> However, `otool` reports version 1.0.1:
>
> {{{
> ❯ otool -L $(which ffmpeg) | grep -i coreimage
>
/System/Library/Frameworks/CoreImage.framework/Versions/A/CoreImage
(compatibility version 1.0.1, current version 6.0.0)
> }}}
Precisely. ffmpeg et al indicate that they require CoreImage compatibility
version 1.0.1 or later. This version of CoreImage is what the macOS SDK on
the machine that built this ffmpeg claims the OS has. Rev-upgrade is
noticing that the OS actually has CoreImage compatibility version 1.0.0
and notifies you, since that combination is not expected to work.
> And at least ffmpeg, ffprobe and ffplay seem to work fine.
Oh! That's new information. I assumed ffmpeg et al would not launch. But
it works? Is that true for everyone following this ticket?
I have observed before that macOS doesn't actually inspect minor library
minor versions as much as I would have expected when running programs,
which leads to another fairly common problem of projects publishing
incorrectly versioned libraries without realizing that they have done so.
This often happens when projects switch from one build system (e.g.
autotools with libtool) to another (e.g. cmake or meson) without
understanding the intricacies of library versioning on every platform,
especially on macOS where libtool's library versioning differs from Linux
for historical reasons.
But the fact that macOS doesn't check the minor library version isn't a
valid excuse for publishing libraries with incorrect minor versioning
information, so the OCLP developers should still correct this mistake so
that software that does check the minor library versioning, like MacPorts'
rev-upgrade feature, don't complain.
--
Ticket URL: <https://trac.macports.org/ticket/70882#comment:32>
MacPorts <https://www.macports.org/>
Ports system for macOS
More information about the macports-tickets
mailing list