[MacPorts] #69808: ffmpeg*: ability to select ffmpeg version as default
MacPorts
noreply at macports.org
Tue Oct 8 09:56:39 UTC 2024
#69808: ffmpeg*: ability to select ffmpeg version as default
-----------------------------+----------------------
Reporter: eirnym | Owner: mascguy
Type: defect | Status: assigned
Priority: Normal | Milestone:
Component: ports | Version: 2.9.3
Resolution: | Keywords:
Port: ffmpeg6 yt-dlp |
-----------------------------+----------------------
Comment (by ryandesign):
Replying to [comment:4 eirnym]:
> ffmpeg is a big and heavy to update dependency. I won't use variant in
`yt-dlp`.
I don't understand your reluctance. If we add, for example, an +ffmpeg6
variant to yt-dlp, then because this variant is not enabled by default, if
you try to install it, MacPorts would have to build yt-dlp from source on
your system, which would take a couple seconds. But you would still be
able to receive our precompiled ffmpeg6 port's binary to satisfy yt-dlp's
dependency and wouldn't have to do the lengthy ffmpeg6 build from source.
Replying to [comment:5 eirnym]:
> The `port select` works perfectly in other cases as I need link only
files in /opt/local/bin and not libraries.
Adding `port select` functionality to the ffmpeg family of ports is a
reasonable request. However, the ffmpeg port currently installs
/opt/local/bin/ffmpeg, whereas you would want that path to be the symlink
created by `port select`. So the ffmpeg port first needs to be changed so
that it installs its program somewhere else, for example
/opt/local/bin/ffmpeg4. There are actually several programs, and their
manpages, and maybe more files, that would need the major version number
appended. At that point, renaming the ffmpeg port to ffmpeg4 would make
sense. And all of the ports that use the ffmpeg port would need to be
updated to adapt to these changes. It's a lot of work that nobody has yet
volunteered to plan and do.
Replying to [comment:6 eirnym]:
> I searched ports git to find which ports could break and found that
almost none of them depends on ffmpeg executables. and I believe that
almost none of these would break if ffmpeg6 will be executed rather than
ffmpeg4.
I don't see how you could know that. According to the output of `port echo
depends:':ffmpeg($|\s)' | wc -l` there are 121 ports that depend on the
ffmpeg port. We do not know which of those use ffmpeg's libraries vs.
which of those use ffmpeg's executables, nor which of them would break if
ffmpeg were updated to version 6 or newer. The change in major ffmpeg
version from 4 to 6 to now 7 indicates backward incompatibility.
Deprecated library APIs have been removed as have deprecated command line
options. Older ports that depend on ffmpeg may well be using those APIs
and/or command line options so that updating to a major new ffmpeg version
would break them. Therefore it's prudent when updating a dependency like
ffmpeg to a new major version to verify that the ports that depend on it
still work afterward. Since there are so many of them, and this is a lot
of work, this is probably why the ffmpeg port was not updated past major
version 4 for so long, and why an alternate strategy of creating separate
non-conflicting ffmpeg6 and ffmpeg7 ports was pursued instead.
--
Ticket URL: <https://trac.macports.org/ticket/69808#comment:8>
MacPorts <https://www.macports.org/>
Ports system for macOS
More information about the macports-tickets
mailing list