mirror of
git://code.qt.io/qt/qt5.git
synced 2026-02-01 19:36:04 +08:00
FFmpeg, Android ARMv7: Use correct build folder when fixing deps
This patch amends 133de012af95507ac485845d8de8f58da005df64.
The previous patch introduced a regression where the newer build paths
were not being passed correctly into 'fix_ffmpeg_dependencies.sh'
during FFmpeg Android builds.
This patch introduces a common function to resolve the installation
directory, which is then used both during compilation and during
FFmpeg patching.
Additionally, it introduces some basic error-handling when running
'fix_ffmpeg_dependencies.sh' so that we can catch this issue in
integration, in the future.
Fixes: QTBUG-138615
Change-Id: I195ebd3034a3184bad32e75916a41a20838b2db1
Reviewed-by: Artem Dyomin <artem.dyomin@qt.io>
Reviewed-by: Assam Boudjelthia <assam.boudjelthia@qt.io>
(cherry picked from commit 7f416abf32)
Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
This commit is contained in:
committed by
Qt Cherry-pick Bot
parent
14dcdd32d7
commit
18a08f7eb6
@@ -30,6 +30,52 @@ function GetFfmpegDefaultConfiguration {
|
||||
return $defaultConfiguration
|
||||
}
|
||||
|
||||
# Returns the absolute installation path of FFmpeg for this build
|
||||
# variant.
|
||||
function ResolveFFmpegInstallDir {
|
||||
param(
|
||||
[Parameter(Mandatory = $true)]
|
||||
[ValidateNotNullOrEmpty()]
|
||||
[string]$buildSystem,
|
||||
|
||||
[Parameter(Mandatory = $false)]
|
||||
[ValidateNotNullOrEmpty()]
|
||||
[string]$ndkVer
|
||||
)
|
||||
|
||||
if ($ndkVer) {
|
||||
$prefix = "installed-ndk-$ndkVer"
|
||||
} else {
|
||||
$prefix = "installed"
|
||||
}
|
||||
|
||||
return "C:\$ffmpeg_name\build\$buildSystem\$prefix"
|
||||
}
|
||||
|
||||
# Returns the absolute installation path of FFmpeg for this build
|
||||
# variant. Returns a path that is compatible with MSYS.
|
||||
#
|
||||
# TODO: There is some code duplications here. Make a helper function
|
||||
# that translates native Windows paths into MSYS compatible paths.
|
||||
function ResolveFFmpegInstallDirMsys {
|
||||
param(
|
||||
[Parameter(Mandatory = $true)]
|
||||
[ValidateNotNullOrEmpty()]
|
||||
[string]$buildSystem,
|
||||
|
||||
[Parameter(Mandatory = $false)]
|
||||
[ValidateNotNullOrEmpty()]
|
||||
[string]$ndkVer
|
||||
)
|
||||
if ($ndkVer) {
|
||||
$prefix = "installed-ndk-$ndkVer"
|
||||
} else {
|
||||
$prefix = "installed"
|
||||
}
|
||||
|
||||
return "/c/$ffmpeg_name/build/$buildSystem/$prefix"
|
||||
}
|
||||
|
||||
function InstallFfmpeg {
|
||||
Param (
|
||||
[string]$config,
|
||||
@@ -53,15 +99,16 @@ function InstallFfmpeg {
|
||||
$env:MSYSTEM = $msystem
|
||||
|
||||
if ($ndk_ver) {
|
||||
$prefix = "installed-ndk-$ndk_ver"
|
||||
$installDir = ResolveFFmpegInstallDir -buildSystem $buildSystem -ndkVer $ndk_ver
|
||||
$installDirForMsys = ResolveFFmpegInstallDirMsys -buildSystem $buildSystem -ndkVer $ndk_ver
|
||||
} else {
|
||||
$prefix = "installed"
|
||||
$installDir = ResolveFFmpegInstallDir -buildSystem $buildSystem
|
||||
$installDirForMsys = ResolveFFmpegInstallDirMsys -buildSystem $buildSystem
|
||||
}
|
||||
$installDir = "C:\$ffmpeg_name\build\$buildSystem\$prefix"
|
||||
|
||||
$cmd = "cd /c/$ffmpeg_name"
|
||||
$cmd += " && mkdir -p build/$buildSystem && cd build/$buildSystem"
|
||||
$cmd += " && ../../configure --prefix=$prefix $config"
|
||||
$cmd += " && ../../configure --prefix=$installDirForMsys $config"
|
||||
if ($toolchain) {
|
||||
$cmd += " --toolchain=$toolchain"
|
||||
}
|
||||
@@ -191,8 +238,8 @@ function InstallAndroidArmv7 {
|
||||
$config += " --extra-cflags=-I${openssl_path}/include --extra-ldflags=-L${openssl_path}/armeabi-v7a"
|
||||
$config += " --strip=$strip"
|
||||
|
||||
|
||||
$result= InstallFfmpeg -config $config -buildSystem "android-arm" -msystem "ANDROID_CLANG" -ffmpegDirEnvVar $ffmpeg_dir_android_envvar_name -shared $shared -ndk_ver $ndk_version
|
||||
$buildSystem = "android-arm"
|
||||
$result= InstallFfmpeg -config $config -buildSystem $buildSystem -msystem "ANDROID_CLANG" -ffmpegDirEnvVar $ffmpeg_dir_android_envvar_name -shared $shared -ndk_ver $ndk_version
|
||||
|
||||
Remove-Item -Path ${openssl_path}/armeabi-v7a/libcrypto.so
|
||||
Remove-Item -Path ${openssl_path}/armeabi-v7a/libssl.so
|
||||
@@ -218,9 +265,14 @@ function InstallAndroidArmv7 {
|
||||
|
||||
Start-Process -NoNewWindow -Wait -PassThru -ErrorAction Stop -FilePath $msys -ArgumentList ("-lc", "`"cd C:/patchelf-0.17.2 && ./bootstrap.sh && ./configure && make install`"")
|
||||
|
||||
$command = "${PSScriptRoot}/../shared/fix_ffmpeg_dependencies.sh C:/${ffmpeg_name}/build/android-arm/installed/ _armeabi-v7a no"
|
||||
$installDirForMsys = ResolveFFmpegInstallDirMsys -buildSystem $buildSystem -ndkVer $ndk_version
|
||||
$command = "${PSScriptRoot}/../shared/fix_ffmpeg_dependencies.sh ${installDirForMsys} _armeabi-v7a no"
|
||||
$command = $command.Replace("\", "/")
|
||||
Start-Process -NoNewWindow -Wait -PassThru -ErrorAction Stop -FilePath $msys -ArgumentList ("-lc", "`"$command`"")
|
||||
$patchResult = Start-Process -NoNewWindow -Wait -PassThru -ErrorAction Stop -FilePath $msys -ArgumentList ("-lc", "`"$command`"")
|
||||
if ($patchResult.ExitCode) {
|
||||
Write-Host "fix_ffmpeg_dependencies.sh did not finish successfully"
|
||||
return $false
|
||||
}
|
||||
|
||||
return $result
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user