The FFmpeg components 'avdevice' and 'avfilter' are not used in Qt.
By not building them, we save some time during provisioning in CI.
Pick-to: 6.11
Change-Id: Id9219f6c00bd48d35d1d5c5b87eecb45f8c16c45
Reviewed-by: Mikko Hallamaa <mikko.hallamaa@qt.io>
Reviewed-by: Artem Dyomin <artem.dyomin@qt.io>
Reviewed-by: Elias Toivola <elias.toivola@qt.io>
(cherry picked from commit 75a537b6d5)
Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
The upstream vcpkg *-ohos triplets have been changed to build static
libraries in multi-config mode. Add (and use) an arm64-ohos-qt triplet
that builds shared libs in release mode.
The triplet differs from the upstream one only in the values
VCPKG_LIBRARY_LINKAGE and VCPKG_BUILD_TYPE.
This patch is a preparation for merging vcpkg upstream back to our
fork.
Change-Id: Iac6a4798b0322e9c57cf09ca35a408c66504ba46
Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io>
(cherry picked from commit 41986ce213)
Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
vcpkg-tool release tag 2026-05-27 contains the patch necessary for
HarmonyOS support. We can use the unpatched upstream vcpkg-tool again.
Change the provisioning scripts back to fetch the tool from upstream's
release artifacts page.
Fixes: QTQAINFRA-7902
Change-Id: I84ef4582ef8ff5ca6e8e135128fe515438ac2a22
Reviewed-by: Elias Toivola <elias.toivola@qt.io>
Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io>
(cherry picked from commit 8d4971fd6e)
Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
The new tag and new baseline include the previous qt port
customizations, but also brings in new necessary port changes
to install ohos-related packages.
Done-with: Joerg Bornemann <joerg.bornemann@qt.io>
Change-Id: I813e84b7708656329b3373073a795ed0b9ac45d8
Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io>
Add an :app and :lib modules so both com.android.application
and com.android.library paths are exercised, and add a Kotlin
source + JUnit test in each module. This makes gradlew build
pull the kotlin toolchain jars (compiler-embeddable, reflect,
coroutines) that Qt Android JAR and app builds could need
later. This way we ensure all possible artifacts are made
available in the cache during provisioning and avoid or at
least reduce the chances or later downloads.
Task-number: QTBUG-132915
Change-Id: Ic518f96370ffc40f921bcb3063257f8663e41615
Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io>
This feature enables us to build protobuf with different host/target
triplets to lipo the result.
Fixes: QTBUG-145933
Change-Id: I1456c148686c27cecc6f1f2f5decdeb6f0a2304d
Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io>
It's a new fork under a qtbuildsystem group, but with the contents of
the aledelev fork.
The older mrmsdbdl fork is not used anymore, so it's removed.
Pick-to: 6.8 6.11
Change-Id: I641cf8b86e3809f399cfddbe6c5d71ee6174917c
Reviewed-by: Joerg Bornemann <joerg.bornemann@qt.io>
Add scripts to download and cache Gradle distribution
and its dependencies during provisioning for all hosts
so that Qt builds don't have to fetch them on every Qt
module and test build.
Add those scripts to various RHEL, Ubuntu, macos and
windows configurations after Android has been run
since the Gradle build for Android requires Android
SDK.
Prior to this, to avoid having a full Gradle project added
to the coin tree, some Gradle files were being fetched from
qtbase using a commit sha, that was aiming to reduce the
amount of changes each time, but that's a bit awkward since
the files here and this commit sha needs to be updated
anyways. So just have a full Gradle project here and update
its values whenever we bump Gradle or Android supported
versions.
Task-number: QTBUG-132915
Change-Id: Id4876ad90a09cdaada5b96c457820c691e2be426
Reviewed-by: Simo Fält <simo.falt@qt.io>
Reviewed-by: Dimitrios Apostolou <jimis@qt.io>
In the current Android FFmpeg provisioning, we rely on the tool
'readelf' to be installed on the host. On macOS we currently pull this
tool through the Homebrew 'binutils' package. This has proven
unreliable on older macOS hosts.
The Android NDK provides the same tool under the name 'llvm-readelf'.
This patch makes us rely on this tool during provisioning, which is
guaranteed to be provided.
Pick-to: 6.11
Change-Id: I47a186d2dd4b442929b82f35b4d257d011cb9d10
Reviewed-by: Artem Dyomin <artem.dyomin@qt.io>
Reviewed-by: Dimitrios Apostolou <jimis@qt.io>
Reviewed-by: Tero Heikkinen <tero.heikkinen@qt.io>
With Python 3.12 SBOM needs jsonschema package newer than 4.19
but cannot uninstall current one installed by RPM:
Error:
Attempting uninstall: jsonschema
Found existing installation: jsonschema 4.19.1
error: uninstall-no-record-file
× Cannot uninstall jsonschema 4.19.1
Therefore virtual env is used to fix this.
Pick-to: 6.11
Task-number: QTQAINFRA-7554
Change-Id: I1260ef7fdf0c1ba96acaee1738ed9612e47bedad
Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io>
Because RHEL 10 comes with an older version of jsonschema (4.19),
which breaks cyclonedx verification at qtbase runtime.
Pick-to: 6.11
Change-Id: Ib7044b6d4107e5382015adfdd8eb747be8605934
Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io>
Android arm64 and x86_64 builds now require 16KB page size alignment in
native binaries, this includes FFmpeg. When running patchelf on the
binaries, it will implicitly re-align the affected sections to 4KB page
size.
This patch solves this by using the --page-size flag for patchelf, only
for the builds that require it.
Pick-to: 6.11 6.10 6.8
Fixes: QTBUG-142332
Change-Id: Iba88bf702fd075d2b4432d9cde94f779b14de52f
Reviewed-by: Assam Boudjelthia <assam.boudjelthia@qt.io>
These scripts are generic for both linux and macos, we may parameterize
them and reuse on both platforms.
Change-Id: Ia61cfbbf5c91e2135e38253c4a96605015d2d1b6
Reviewed-by: Alexey Edelev <semlanik@gmail.com>
There is not particular reason to hold multiple manifests for the vcpkg
for different platforms, since we expect that the direct dependency set
that is used from vcpkg will remain the same on each platform.
Keeping copies of the vcpkg manifest doesn't make much sense.
The vcpkg manifest and configuration file are now in the
coin/provisioning/common/shared/vcpkg directory.
Change-Id: Icc9c88592c68cb591216f3d0668f9984592d6c7b
Reviewed-by: Simo Fält <simo.falt@qt.io>
The fetching from 3rd party repos has become very flaky.
To avoid mirrors throttling us and other flaky issues cache
the dependencies and set -o to enable offline mode.
This seems to also speed up the step considerably.
Pick-to: 6.10 6.9 6.8 6.5
Change-Id: I01663e60baa44ab828d8880ab8b346034a50b60e
Reviewed-by: Jukka Jokiniva <jukka.jokiniva@qt.io>
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.10 6.9 6.8
Change-Id: Id66b560e6a1d4300a54017e9c3366720dc291944
Reviewed-by: Artem Dyomin <artem.dyomin@qt.io>
In preparation for generating a CycloneDX SBOM for Qt framework,
install the cyclonedx-python-lib package which will be a required
dependency for the SBOM generation process (assuming CycloneDX
generation feature is enabled in the build).
Pick-to: 6.8 6.9 6.10
Task-number: QTBUG-129598
Change-Id: Iacaeb22aa568cecd6ffbe2ece30de953e37c5cf2
Reviewed-by: Alexey Edelev <alexey.edelev@qt.io>
This script has previously failed under some configurations, while
also failing to stop provisioning.
This patch enables fast-fail behavior, catches potential issues with
missing executables early with a descriptive error message. This
should allow us to detect if the required packages are missing
in the future, and stop provisioning accordingly.
This patch also installs the necessary packages on the relevant
CI build targets.
Task-number: QTBUG-136930
Pick-to: 6.10 6.9 6.8
Change-Id: I7c781264ad67508d19fd44556a9caf0f201638d4
Reviewed-by: Assam Boudjelthia <assam.boudjelthia@qt.io>
Prefer static linking for now, to bypass the deployment issues.
We will switch to dynamic libraries once online installer deliver the
vcpkg installed libraries.
Change-Id: Iac9a888237742ae886df8fb9b742b45f4727e28a
Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io>
We may read the installed package information from the 'vcpkg list'
command instead of parsing the vcpkg.json. Also instead of using
the jq as a parser, use the cmake script. This allows skipping the
jq installation.
Change-Id: Id3ace62f8f40ff1bd059878da3fd13e466861830
Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io>
* add FFmpeg stubs to the 'Required.private' section.
This will make the logic more robust after integration this
in qt multimedia.
* add some script comments.
* fix shellcheck.
* add validity checks.
Pick-to: 6.8 6.9
Change-Id: I28639d21c7210109e52ff98ce682da51f8744287
Reviewed-by: Jøger Hansegård <jogerh@gmail.com>
Reviewed-by: Pavel Dubsky <pavel.dubsky@qt.io>
It's easier to manage the vcpkg tool versions using this file,
but not editing script each time.
Change-Id: If6d04a8ac07731ec1fab46b1f663b86bbe640631
Reviewed-by: Joerg Bornemann <joerg.bornemann@qt.io>
The old version doesn't support MSVC 17.10 toolchain, so we cannot
build for arm64.
Change-Id: I63df5b61d6d7e06ee49f46f77528021f3ce5be47
Reviewed-by: Joerg Bornemann <joerg.bornemann@qt.io>
This file is used by the script common/unix/install-ffmpeg-android.sh.
This script is useful for compiling FFmpeg for Android locally
on macOS. Currently the script assumes the Homebrew installation
of readelf is that of x86. The Homebrews path for readelf is different
under arm64 and this change accounts for this.
Pick-to: 6.8 6.5
Change-Id: I7ec1d4173e35fe91bc988492e56dd9a5fcbad072
Reviewed-by: Artem Dyomin <artem.dyomin@qt.io>
Fix CMAKE_SYSTEM_PROCESSOR definition for armv7le. This is needed when
using Windows host to cross-compile Qt binaries for QNX.
Fixes: QTBUG-125450
Pick-to: 6.8 6.7 6.5
Change-Id: I19df2ef9d4cc988f5acf4f09fa46b7014fac80d2
Reviewed-by: Toni Saario <toni.saario@qt.io>
Add a sbom_requirements.txt file and install it using the
various platform specific pip installations.
Partially restores b87b44168c but
without the wheel cache.
Pick-to: 6.8
Task-number: QTBUG-122899
Change-Id: I8002898866acbc226ffebb59dcf5b3a58237ea34
Reviewed-by: Toni Saario <toni.saario@qt.io>
Prepare for turning on dynamically linked FFmpeg on macOS:
- install binutils (for readelf) on macOS;
- readelf need to be used with absolute path on macOS. Prepare
workaround solution for this system in
fix_ffmpeg_dependencies.sh script;
- install patchelf on macOS;
- ensuring compatibility of sed call on Linux and macOS;
Pick-to: 6.8
Task-number: QTBUG-122010
Change-Id: I810566786de4363b4383f29467c6ca4395f9f668
Reviewed-by: Artem Dyomin <artem.dyomin@qt.io>
Move fix_ffmpeg_dependencies.sh script from "linux" to "shared"
directory.
The script will be used on macOS but also on Windows (using MSYS2)
Pick-to: 6.8
Task-number: QTBUG-122010
Change-Id: If63d5e3ba7562b230cce26c7bfba728a2ae0a382
Reviewed-by: Artem Dyomin <artem.dyomin@qt.io>
The truemotion1 decoder depends on a truemotion1data.h file which is
part of FFmpeg. This header file has a reference to GPL licensing, and
although the header provides a rationale for why the decoder tables are
not copyrightable, we prefer to not distribute this decoder as part of
the online Qt installer.
Users who need ability to decode truemotion1 format video files can do
so by recompiling the QtMultimedia FFmpeg media plugin against a custom
build of FFmpeg.
Task-number: QTBUG-118204
Pick-to: 6.7 6.6 6.5
Change-Id: Ia195ef9ce576d18047e7b38bbc5019648ba42b4c
Reviewed-by: Kai Köhne <kai.koehne@qt.io>
- Add a custom triplets for building dynamic android libraries
- Set `ANDROID_NDK_HOME` environment variable, as it is needed when
vcpkg builds for Android.
- Install `perl-IPC-Cmd` when necessary, requirement for OpenSSL.
- Install openSSL for x64-linux-qt, x86-android-qt, and
x86_64-android-qt. The latter android triplet has been renamed from
vcpkg's official `x64-android.cmake` triplet to further clarify the
android abi.
- Adjusted version.txt to account for the existence of two OpenSSL. The
system OpenSSL now shows up as `System's OpenSSL` in `version.txt`.
Task-number: QTBUG-115715
Change-Id: I6cf9b808d26bbea97ebeeadac58cef5ede25ee50
Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io>
- Add a custom triplets for building dynamic android libraries
- Set `ANDROID_NDK_HOME` environment variable, as it is needed when
vcpkg builds for Android.
- Install openSSL for x64-windows, arm64-windows, and
armeabi-v7a-android-qt. The android triplet has been renamed from
vcpkg's official `arm-neon-android.cmake` triplet to further clarify
the android abi.
- The version of the libraries installed via vcpkg is being written to
versions.txt as `vpckg <library-name> = <library-version>`
Task-number: QTBUG-115715
Change-Id: I4a17bf00e59c3c90968941be6a21c1d961ba3d97
Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io>
- Downloading the vcpkg executable
- Cloning an internal mirror of the vcpkg's official repository, and
setting the VCPKG_ROOT to its path. The mirror is under my personal
namespace in `git.qt.io` and will be replaced by official qt mirror
in the future.
- Adding an empty `vcpkg.json` for Windows
- Adding a `vcpkg-configuration.json`
- Setting environment variables for Binary and Asset cache
- Run `install-vcpkg.sh` on all active Windows hosts
Task-number: QTBUG-115715
Change-Id: I7a8a883a1523f27506ff31757f5aad5221de0698
Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io>
Add CMAKE_SYSTEM PROCESSOR definition and use that for finding processor specific binaries from QNX SDP.
Task-number: QTBUG-116082
Pick-to: 6.6 6.5
Change-Id: I893cac45058d8e0ac6228159e9b97bc59307ff35
Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io>