-
Notifications
You must be signed in to change notification settings - Fork 6.4k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
[ffmpeg] Update to 7.0. #38011
[ffmpeg] Update to 7.0. #38011
Conversation
Most of the CI failures are due to |
Is there any new progress? |
@@ -94,7 +95,7 @@ if(VCPKG_DETECTED_CMAKE_C_COMPILER) | |||
get_filename_component(CC_filename "${VCPKG_DETECTED_CMAKE_C_COMPILER}" NAME) | |||
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.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
There is no host_cc in vcpkg.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
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.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
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.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
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.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
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.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
FTR
vcpkg_configure_make
turns 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.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
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.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
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
"port-version": 1, | ||
"description": "Aubio is a tool designed for the extraction of annotations from audio signals. Its features include segmenting a sound file before each of its attacks, performing pitch detection, tapping the beat and producing midi streams from live audio.", | ||
"homepage": "https://github.com/aubio/aubio", | ||
"license": "GPL-3.0-or-later", | ||
"supports": "!xbox", | ||
"supports": "!xbox & !osx", |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
aubio is healthy on osx. ffmpeg and its dependencies are not. Until #39703.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
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.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
#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.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
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.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
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! |
Update ffmpeg to 7.0
Fixes #37888
./vcpkg x-add-version --all
and committing the result.