[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