From c0cadc1d042ee1cae608ee332f38aee2574b1990 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Nils=20Petter=20Ska=CC=8Alerud?= Date: Fri, 1 Aug 2025 11:55:41 +0200 Subject: [PATCH] macOS, FFmpeg: Don't use patchelf 0.18 for Android FFmpeg patching At the time of writing, homebrew ships patchelf version 0.18.0. This version of patchelf has a bug specific to Androd binaries. The macOS 14 arm64 host currently uses this version of patchelf. This causes an issue during runtime linking in Qt Multimedia applications on Android. This patch modifies the macOS 14 arm64 host to use patchelf v0.17.2 that we compile from source. It also adds warnings to the provisioning log should someone try to use v0.18.0 in the future. Fixes: QTBUG-136930 Pick-to: 6.8 Change-Id: Id66b560e6a1d4300a54017e9c3366720dc291944 Reviewed-by: Artem Dyomin (cherry picked from commit 61046109cfa806322a2cfa6b0394c44dd3e0e7d8) Reviewed-by: Qt Cherry-pick Bot (cherry picked from commit 14dcdd32d71ca98aa591122fd54bd8540dba80f2) --- coin/provisioning/common/shared/fix_ffmpeg_dependencies.sh | 6 ++++++ coin/provisioning/common/unix/install-patchelf.sh | 1 + coin/provisioning/qtci-macos-14-arm/28-patchelf.sh | 2 +- 3 files changed, 8 insertions(+), 1 deletion(-) diff --git a/coin/provisioning/common/shared/fix_ffmpeg_dependencies.sh b/coin/provisioning/common/shared/fix_ffmpeg_dependencies.sh index 5e492d2e..e7c8d8dd 100755 --- a/coin/provisioning/common/shared/fix_ffmpeg_dependencies.sh +++ b/coin/provisioning/common/shared/fix_ffmpeg_dependencies.sh @@ -31,6 +31,12 @@ if ! command -v patchelf; then exit 1 fi +# Get patchelf version +patchelf_version=$(patchelf --version 2>/dev/null | awk '{print $2}') +if [[ "$patchelf_version" == "0.18.0" ]]; then + echo "WARNING: patchelf version 0.18.0 is known to have issues with Android." >&2 +fi + ffmpeg_libs=("avcodec" "avdevice" "avfilter" "avformat" "avutil" "swresample" "swscale") stub_prefix="Qt6FFmpegStub-" diff --git a/coin/provisioning/common/unix/install-patchelf.sh b/coin/provisioning/common/unix/install-patchelf.sh index 44ad9b88..ce15d239 100755 --- a/coin/provisioning/common/unix/install-patchelf.sh +++ b/coin/provisioning/common/unix/install-patchelf.sh @@ -5,6 +5,7 @@ source "${BASH_SOURCE%/*}/../unix/InstallFromCompressedFileFromURL.sh" # version 0.18.0 doesn't work correctly for Android binaries, so we use 0.17.2 +# See patchelf bugreport: https://github.com/NixOS/patchelf/issues/576. patchelf_version="0.17.2" url_cached="https://ci-files01-hki.ci.qt.io/input/android/patchelf/$patchelf_version.tar.gz" diff --git a/coin/provisioning/qtci-macos-14-arm/28-patchelf.sh b/coin/provisioning/qtci-macos-14-arm/28-patchelf.sh index 414ed936..a2a91e16 100755 --- a/coin/provisioning/qtci-macos-14-arm/28-patchelf.sh +++ b/coin/provisioning/qtci-macos-14-arm/28-patchelf.sh @@ -4,4 +4,4 @@ set -ex -brew install patchelf +source "${BASH_SOURCE%/*}/../common/unix/install-patchelf.sh"