[ffmpeg] Update to 7.0.#38011
Conversation
|
Most of the CI failures are due to |
|
Is there any new progress? |
| set(ENV{CC} "${CC_filename}") | ||
| string(APPEND OPTIONS " --cc=${CC_filename}") | ||
| #string(APPEND OPTIONS " --host_cc=${CC_filename}") ffmpeg not yet setup for cross builds? | ||
| string(APPEND OPTIONS " --host_cc=${CC_filename}") |
There was a problem hiding this comment.
There is no host_cc in vcpkg.
There was a problem hiding this comment.
host_cc is a command line arg passed to ffmpeg configure script. Due to the way the portfile is calling ffmpegs configure (calld it as cross compile) it fails without this command option
There was a problem hiding this comment.
It will also fail with this option except for "almost-native" cross builds.
vcpkg allows you to tell the compiler and flags for the target triplet (e.g. android, ios).
vcpkg allows you to know the host triplet and its install prefix.
vcpkg doesn't allow you to tell the compiler and flags for the host triplet.
There was a problem hiding this comment.
FTR vcpkg_configure_make turns the host cc (CC_FOR_BUILD) into a no-op for VCPKG_CROSSCOMPILING.
There was a problem hiding this comment.
Unfortunately someone set the cross compile flag for ffmpeg as always on in PR #23001 (see portfile line 459). I have no idea why or what they were trying to fix but I have no way of testing all the various triplets that this effects in order to work out how to disable it again.
Due to changes in ffmpegs internal configure script in 7.0 it now does additional checks on the host compiler when the cross compile flag is passed to it. This is why the line had to be uncommented as its required to pass those checks. The actual compilation though functions the same as previously.
There was a problem hiding this comment.
FTR
vcpkg_configure_maketurns the host cc (CC_FOR_BUILD) into a no-op forVCPKG_CROSSCOMPILING.
Unfortunately the ffmpeg port doesnt use vcpkg_configure_make
It uses vcpkg_execute_required_process to run a custom bash script. The --host_cc command line option is for this bash script to pass through to ffmpegs internal configure script
| -check_host_cflags_cc -std=$stdc ctype.h "__STDC_VERSION__ >= 201112L" || | ||
| - check_host_cflags_cc -std=c11 ctype.h "__STDC_VERSION__ >= 201112L" || die "Host compiler lacks C11 support" | ||
| +check_host_cflags_cc -std=$stdc ctype.h "__STDC_VERSION__ >= 201112L" || | ||
| + check_host_cflags_cc -std=c11 ctype.h "__STDC_VERSION__ >= 201112L" |
There was a problem hiding this comment.
I don't see a change in the first line.
I wonder about the second line: Is the check wrong for osx, or doesn't it get the required flags?
But we dont have a host_cc anyways, so probably the latter.
There was a problem hiding this comment.
As mentioned previously the hostcc is passed via command line option (and is just set to regular cc).
Im not sure why git diff created the patch the way it did but the only change is the removal of the "die" line as it fails in the osx CI otherwise (I dont have osx to local debug why)
avcpp has been updated and now works with ffmepg 7 but aubio still fails as it hasnt been updated. This was also a blocker for the 6 update as it doesnt get updated (the last aubio release was over 5 years ago) so without a patch for aubio its still failing in the CI |
|
does ffmpeg have a migration guide somewhere? Maybe its easy to patch. |
|
https://gitlab.archlinux.org/archlinux/packaging/packages/aubio/-/blob/main/.SRCINFO?ref_type=heads also downloads some extra patches |
So it turns out aubio port wasnt using release versions anymore anyway so i bumbped to latest commit on master and then added that patch and it seems now to be good |
…g-config (#39077) - Setup and use pkg-config for ffmpeg dependencies. #38011 (comment). - Export actual c++ link libraries for fdk-aac via pkg-config. (Same pattern as lerc, geos.) - Rectify link libraries in pkg-config for alsa, libsrt, snappy, x265. - Burn-in dllimport for libsrt and x265. - Pass detected STRIP to ffmpeg. Fixes #36852.
Done |
7.0.1 should be an easy update. Just need to get ther CI clear with 7.0 first |
ports/aubio/vcpkg.json
Outdated
| "homepage": "https://github.com/aubio/aubio", | ||
| "license": "GPL-3.0-or-later", | ||
| "supports": "!xbox", | ||
| "supports": "!xbox & !osx", |
There was a problem hiding this comment.
aubio is healthy on osx. ffmpeg and its dependencies are not. Until #39703.
There was a problem hiding this comment.
Aubio was failing to link on osx (and I have no way to debug osx). It was the only one failing to link so I disabled it. If #39703 fixes it then ill revert the change
There was a problem hiding this comment.
#39703 fixes it. ffmpeg and its vcpkg port hardcode assumptions about libstdc++ which break libc++ systems such as osx and android.
There was a problem hiding this comment.
The actuall error for aubio with ffmepg 7 was missing a framework link option causing a link error (was missing opengl and one other that i cant remember) which wasnt related to libstc
There was a problem hiding this comment.
Maybe this was an issue, too. libstdc++ wasn't the only problem with the current ffmpeg, and I wouldn't be surprised if 7.0 adds other challenges.
|
Except Except Except |
|
Thanks for the update! |
…g-config (#39077) - Setup and use pkg-config for ffmpeg dependencies. microsoft/vcpkg#38011 (comment). - Export actual c++ link libraries for fdk-aac via pkg-config. (Same pattern as lerc, geos.) - Rectify link libraries in pkg-config for alsa, libsrt, snappy, x265. - Burn-in dllimport for libsrt and x265. - Pass detected STRIP to ffmpeg. Fixes microsoft/vcpkg#36852.
Update ffmpeg to 7.0
Fixes #37888
./vcpkg x-add-version --alland committing the result.