Compare commits

...

61 Commits

Author SHA1 Message Date
Nils Petter Skålerud
9958d9c9ac Windows, FFmpeg: Handle exception when downloading patchelf
The script 'install-ffmpeg.ps1' contains logic for building all targets
even if some targets fail, and then report all results at the end. When
building Android specifically, we download patchelf sources from CI,
it's possible for it to throw an exception if CI-files is not
available. This breaks the logic and makes us terminate early.

This patch encloses the Invoke-WebRequest in a try-catch.

This also makes it easier to run this script locally.

Pick-to: 6.8
Change-Id: I93d4ec905c61dc7b44b87100353353f24c27d276
Reviewed-by: Artem Dyomin <artem.dyomin@qt.io>
(cherry picked from commit 2911978176)
Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
2026-04-16 01:06:46 +00:00
Jukka Jokiniva
bbd3c7029f Fix compilation error in libiodbc on macOS 26
For some unknown reason the compilation has started using -std=gnu23,
which breaks the build.

Forcing "-std=gnu89" allows the build to succeed, so let's do that
as a workaround to unblock qt5, while we continue investigation why
this broke.

Task-number: QTQAINFRA-7775
Change-Id: I59a29ab9a20d5b2302d72b1e6fbbe52c7ecd277a
Reviewed-by: Dimitrios Apostolou <jimis@qt.io>
Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@qt.io>
(cherry picked from commit 97af7f3855)
Reviewed-by: Ville-Pekka Karhu <ville-pekka.karhu@qt.io>
Reviewed-by: Tero Heikkinen <tero.heikkinen@qt.io>
2026-04-15 21:55:27 +00:00
Ville-Pekka Karhu
37f53cc0d9 Increase macOS 13 ARM Tier1 size to 350G
Remove recovery partition to save space and update OS version to 13.7.8

Pick-to: 6.8 6.5
Task-number: QTQAINFRA-7737
Change-Id: I093aceecfac72b2faf8d9e104bda7d0d67ab09b5
Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@qt.io>
2026-04-15 21:55:25 +00:00
Qt Submodule Update Bot
898440075b Update submodules on '6.11 in qt/qt5'
Change-Id: Id703b7e8022aa7581c43c6f442fee0769c018573
Reviewed-by: Qt Submodule Update Bot <qt_submodule_update_bot@qt-project.org>
2026-04-15 00:16:35 +00:00
Qt Submodule Update Bot
40944f18c3 Update submodules on '6.11 in qt/qt5'
Change-Id: Ifd6abac30295453c3803ee252a7e391ac656f66e
Reviewed-by: Qt Submodule Update Bot <qt_submodule_update_bot@qt-project.org>
2026-04-09 18:34:36 +00:00
Rami Potinkara
7d379bca12 Coin: Add Android 17 as insignificant platform
This patch adds Android 17 16KB Beta3 as insignificant platform
to CI which will not abort on first test failure. At the moment
there is only 16KB compliant system image available.

Before the platform can become significant we need to wait
first released version of Android 17. When the first released
version will be added remove the Hack to alter source.properties
mentioned in this patch.

Task-number: QTBUG-143600
Pick-to: 6.8
Change-Id: Iaf2f122e6b56e496ddb8549f281cca6acd3970ac
Reviewed-by: Elias Toivola <elias.toivola@qt.io>
Reviewed-by: Assam Boudjelthia <assam.boudjelthia@qt.io>
(cherry picked from commit 5f5f9c4db4)
Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
2026-04-09 10:31:10 +00:00
Tero Heikkinen
e1b2031f68 Fix openSUSE 16.0 dependency issue with cargo 1.94 installation
Task-number: QTQAINFRA-7793
Change-Id: Ia5ad818dc599317b7f46697732fa9434d5a0eace
Reviewed-by: Tony Sarajärvi <tony.sarajarvi@qt.io>
(cherry picked from commit daecc2a3f2)
Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
2026-04-08 18:05:48 +00:00
Toni Saario
7c1d6903ed Separate openSUSE 16 sccache from the history
Update from:
gcc15-15.2.0+git10201-160000.1.1.x86_64
to
gcc15-15.2.0+git10201-160000.2.1.x86_64
breaks the gcc compability check and causes "false positive"
cache hit which eventually fails with:
"created by a different GCC executable"

Sccache do not seem to see the change as build id, checksums etc.
for the gcc are the same between the versions.

Just set the value to v1 as nothing is pinning the gcc
so it will update on it's own also in future.

Change-Id: I4f2a6da95680c28ad1912751307f96df806c9930
Reviewed-by: Tero Heikkinen <tero.heikkinen@qt.io>
Reviewed-by: Simo Fält <simo.falt@qt.io>
2026-04-08 18:05:45 +00:00
Qt Submodule Update Bot
31aee9fcbb Update submodules on '6.11 in qt/qt5'
Change-Id: I34370270ade1cb0b8f82853edc027e0e5140c399
Reviewed-by: Qt Submodule Update Bot <qt_submodule_update_bot@qt-project.org>
2026-04-08 15:34:05 +00:00
Allan Sandfeld Jensen
33eb44f592 Install rust on Windows CI
Change-Id: Ic33c84f8bab20cc2cbae17b7e42bc8ac89153924
Reviewed-by: Simo Fält <simo.falt@qt.io>
(cherry picked from commit 2548d074a0)
Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
2026-04-08 06:15:37 +00:00
Alexandru Croitor
546f7a3ba8 Fix Windows gRPC install with CMake minimum version 3.5
Augments 7a8ffd980f

Pick-to: 6.8
Task-number: QTQAINFRA-7683
Change-Id: I3e0531eb0df63116a068ae2e66c916e564e3552b
Reviewed-by: Tero Heikkinen <tero.heikkinen@qt.io>
(cherry picked from commit 6ef2fa58fa)
Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
2026-04-03 10:59:36 +00:00
Qt Submodule Update Bot
65d1bc2995 Update submodules on '6.11 in qt/qt5'
Change-Id: Ibb9c3808aa84c50d7c251a5b0adafbf9cc9a0c97
Reviewed-by: Qt Submodule Update Bot <qt_submodule_update_bot@qt-project.org>
2026-03-31 12:06:43 +00:00
Simo Fält
3c5a67eacb Provisioning: Install libicu to /usr/local on Ubuntu 24.04 x86_64
Build configs are not using correct version from the /opt/icu.

Task-number: QTBRIDGES-172
Change-Id: Ic90560036067de1e9d324adfb0c0e765fc521a90
Reviewed-by: Tero Heikkinen <tero.heikkinen@qt.io>
(cherry picked from commit 3bf43a0827)
Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
2026-03-30 16:01:58 +00:00
Joerg Bornemann
7f6d01f3a9 .gitignore: restrict build patterns to directories only
build-* was matching files like build-ohos-deps.sh. Add trailing slash
to both build and build-* so only directories are excluded.

Change-Id: I8f5d8c3adcac4071320d70aed5112d037f7cc138
Reviewed-by: Assam Boudjelthia <assam.boudjelthia@qt.io>
(cherry picked from commit 27280bf442)
Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
2026-03-30 10:35:12 +00:00
Qt Submodule Update Bot
b58994808e Update submodules on '6.11 in qt/qt5'
Change-Id: I5140cf360b60fb653bf04ff603b78efe5cabd067
Reviewed-by: Qt Submodule Update Bot <qt_submodule_update_bot@qt-project.org>
2026-03-27 10:33:48 +00:00
Qt Submodule Update Bot
3d1a7e0b80 Update submodules on '6.11 in qt/qt5'
Change-Id: I31d19a7de2d57765abc256cfce9cfa6affa30432
Reviewed-by: Qt Submodule Update Bot <qt_submodule_update_bot@qt-project.org>
2026-03-26 13:48:40 +00:00
Allan Sandfeld Jensen
845bc18ba9 Add missing html5lib
Change-Id: I1f10e5772718222a006732c6bb11d793d2eb9624
Reviewed-by: Michal Klocek <michal.klocek@qt.io>
(cherry picked from commit 74245b3b85)
Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
2026-03-26 11:12:03 +00:00
Qt Submodule Update Bot
6369bf40a7 Update submodules on '6.11 in qt/qt5'
Change-Id: I70056af60f0ffe9bf38d7e2d60bd6707e88a93d1
Reviewed-by: Qt Submodule Update Bot <qt_submodule_update_bot@qt-project.org>
2026-03-24 19:24:18 +00:00
Tero Heikkinen
50448a3bb8 RHEL 10: Quick fix to skip updates due to cockpit install fail
This should be temporary fix until pinning or update works.

Without updates QtWebengine needs these libs to be installed directly
  - libatomic

Task-number: QTQAINFRA-7773
Change-Id: I55bb3cfe671f21986753048cea5f8cf64c25f112
Reviewed-by: Jukka Jokiniva <jukka.jokiniva@qt.io>
Reviewed-by: Aku Pietikäinen <aku.pietikainen@qt.io>
(cherry picked from commit fc6b391028)
Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
2026-03-23 19:59:09 +00:00
Matti Paaso
a9fee15f5a Provisioning: Update Axivion bauhaus-suite tool
Update tool version from 7.11.1 into 7.11.3

Task-number: QTQAINFRA-7727
Pick-to: 6.10 6.8
Change-Id: Ic91dbe06c81fc2086e89a715bb1514581ff08620
Reviewed-by: Tero Heikkinen <tero.heikkinen@qt.io>
(cherry picked from commit 68c8815a01)
Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
2026-03-23 08:33:41 +00:00
Nils Petter Skålerud
3897e68506 Windows, OpenSSH: Include .zip file extension when downloading
This script currently downloads the .zip file from the web into a local
file with no file extension. This can cause issues for 7-zip when
unarchiving. This patch fixes this.

As a drive-by, we improve the names of some variables.

Pick-to: 6.8
Change-Id: Icb1b24646b54d75d825764d30a268fa6e55d0183
Reviewed-by: Artem Dyomin <artem.dyomin@qt.io>
(cherry picked from commit 99b67a8f3f)
Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
2026-03-23 08:33:39 +00:00
Dimitrios Apostolou
4316ca969b Update curl version on OpenSUSE-16.0
The version that comes with the distro is buggy, it returns success
instead of failure for the command:

    curl --verbose --fail -L --retry 5 --retry-delay 5 -o filename \
        http://url/that/returns/404

The upstream ticket is: https://github.com/curl/curl/issues/17554

Change-Id: Ic763c10a308a24c921a8d2ae1f1c651e0cbac429
Reviewed-by: Tero Heikkinen <tero.heikkinen@qt.io>
(cherry picked from commit 08892fc088)
Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
2026-03-23 08:33:37 +00:00
Dimitrios Apostolou
54e04d08b8 windows provisioning: automatically choose the right hash algorithm
...based on the length of the given hash.

Additionally use -ine for string comparison, which explicitly does
case-insensitive comparison. That is what the function needs, previously
it was done implicitly by -ne.

And remove MD5, it's not used anywhere.

Pick-to: 6.10 6.8 6.5
Change-Id: Ib4303737e5e1d743dd0be1a8f829be9a0db2bc04
Reviewed-by: Tero Heikkinen <tero.heikkinen@qt.io>
(cherry picked from commit e5e813ef90)
2026-03-23 08:33:35 +00:00
Allan Sandfeld Jensen
f6c3e33877 Explicitly list libclang-dev for Ubuntu 24.04
Is needed by bindgen but not pulled in by dependencies.

Change-Id: Ic3963e580f5d03a4c6de89afcac03639d4d3c27f
Reviewed-by: Michal Klocek <michal.klocek@qt.io>
(cherry picked from commit 073360db1e)
Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
2026-03-22 09:58:01 +00:00
Qt Submodule Update Bot
18e7fca594 Update submodules on '6.11 in qt/qt5'
Change-Id: I8829113c5b81308adb647ed9a071c7a6a329f986
Reviewed-by: Qt Submodule Update Bot <qt_submodule_update_bot@qt-project.org>
2026-03-13 07:45:34 +00:00
Qt Submodule Update Bot
f449d46879 Update submodules on '6.11 in qt/qt5'
Change-Id: I92a734b49c323eaa0cdcddd2fe8bea8810c84017
Reviewed-by: Qt Submodule Update Bot <qt_submodule_update_bot@qt-project.org>
2026-03-11 17:48:20 +00:00
Qt Submodule Update Bot
251f469fb7 Update submodules on '6.11 in qt/qt5'
Change-Id: I9e956df0c8c40e1ae5dd939619f7d7cd84d7b398
Reviewed-by: Qt Submodule Update Bot <qt_submodule_update_bot@qt-project.org>
2026-03-10 20:14:09 +00:00
Tero Heikkinen
86054fb95a openSUSE 16.0: Add missing InsignificantTests flag to wasm qtbase
Test tst_qurl has started to fail too often.

Task-number: QTQAINFRA-7455
Change-Id: I4f565179fdcf281740e27211a69a1a2868a44cd1
Reviewed-by: Jukka Jokiniva <jukka.jokiniva@qt.io>
(cherry picked from commit 8bd36b1d0d)
Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
2026-03-10 09:59:08 +00:00
Qt Submodule Update Bot
fcbd137c15 Update submodules on '6.11 in qt/qt5'
Change-Id: I2ab92bf7262ceb1d9e30f15779ac1a01c0c35f24
Reviewed-by: Qt Submodule Update Bot <qt_submodule_update_bot@qt-project.org>
2026-03-09 17:47:31 +00:00
Qt Submodule Update Bot
de61eb0b3c Update submodules on '6.11 in qt/qt5'
Change-Id: Ide626304594e9a69604d59c2b4a992829458407a
Reviewed-by: Qt Submodule Update Bot <qt_submodule_update_bot@qt-project.org>
2026-03-06 15:06:38 +00:00
Qt Submodule Update Bot
ed2aa04553 Update submodules on '6.11 in qt/qt5'
Change-Id: Id28b91f974f2b06cdea8057428df346524d958aa
Reviewed-by: Qt Submodule Update Bot <qt_submodule_update_bot@qt-project.org>
2026-03-05 17:31:32 +00:00
Qt Submodule Update Bot
480bec0c8f Update submodules on '6.11 in qt/qt5'
Change-Id: I7f90b6f89aa70b3a3f0261b00c6f7e19880fbbd4
Reviewed-by: Qt Submodule Update Bot <qt_submodule_update_bot@qt-project.org>
2026-03-04 18:22:56 +00:00
Qt Submodule Update Bot
e99cbd70fc Update submodules on '6.11 in qt/qt5'
Change-Id: Ic153ad4ee957ab705f6dad77cbd955fac54855d4
Reviewed-by: Qt Submodule Update Bot <qt_submodule_update_bot@qt-project.org>
2026-03-02 23:09:25 +00:00
Nils Petter Skålerud
2b3aa0d2eb VxWorks, QEMU: Remove reference to undefined $appPrefix
install-vxworks-qemu.sh uses a variable that doesn't exist, causing
issues when we turn on more strict error-handling.

Pick-to: 6.10 6.8
Change-Id: I9d644a497e4689c7ab35c80f97548b1a1a6bdf12
Reviewed-by: Simo Fält <simo.falt@qt.io>
(cherry picked from commit 55c0e2f24a)
Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
2026-02-24 12:48:47 +00:00
Joerg Bornemann
782b6fb70c Fix configure -skip not forwarded to CMake
This amends commit 378c8719a9.

Since 378c8719a9, -skip is registered as a known option in
init-repository's option parser. This caused -skip values to be consumed
during option parsing and no longer appear in the unknown_args list that
gets forwarded to configure. As a result, -skip was silently ignored
when -init-submodules was not passed.

Fix by collecting skip modules into a dedicated list from two sources:
the -skip option values consumed by init-repository's parser, and
exclusion entries from -submodules/--module-subset. The merged list is
then forwarded to configure.

This also simplifies the previous merge logic that searched for -skip in
filtered_args, which became dead code after 378c8719a9.

Pick-to: 6.10 6.8
Task-number: QTBUG-140359
Change-Id: I816020959f86cf4b8e36ce1a62172acd442ed1d3
Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io>
(cherry picked from commit 1d4da9a59b)
Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
2026-02-23 19:53:56 +00:00
Nils Petter Skålerud
f76a47ab0c OpenSSL, Android: Enforce correct symlinks in openssl_for_android.sh
There have been cases where necessary symlinks have been lost when
extracting prebuilt OpenSSL builds for Android. This patch ensures the
script will always create them.

As a drive-by, the patch cleans up some behavior related to
'opensslHome' being used to write to a variable outside function scope.

Pick-to: 6.10 6.8
Change-Id: Id6fb4143aaadcbf11e1b9bc6301ef53d2043ad10
Reviewed-by: Assam Boudjelthia <assam.boudjelthia@qt.io>
(cherry picked from commit 52b3c97ab7)
Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
2026-02-23 05:30:27 +00:00
Tero Heikkinen
4a184bed88 Unix: Bash scripts needs to be executable
Pick-to: 6.10 6.8 6.5
Task-number: QTQAINFRA-7709
Change-Id: Ia8802cc2c5e7fb8ed63e261f70fb343cd55a1dfa
Reviewed-by: Edward Welbourne <edward.welbourne@qt.io>
(cherry picked from commit 0ab91c0886)
Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
2026-02-23 05:30:25 +00:00
Tero Heikkinen
00b0638d66 Linux: Keep the IANA time zone database (tzdata/timezone) up to date
Need upgrade of the IANA db to 2022g or later with Ubuntu 22.04. Ensure
zoneinfo (tzdata/timezone) always stays up to date with all Linux OS.

Both packages (tzdata/timezone) provide the same thing:
  - the IANA TZ database under /usr/share/zoneinfo/

tzdata:
  - Debian
  - Ubuntu
  - RHEL

timezone:
  - openSUSE
  - SLES

Pick-to: 6.10 6.8 6.5
Fixes: COIN-1282
Change-Id: I6fe7d548470d8f0f63e5451a6b5203e658575f48
Reviewed-by: Edward Welbourne <edward.welbourne@qt.io>
(cherry picked from commit 9deb066d4c)
Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
2026-02-23 05:30:23 +00:00
Qt Submodule Update Bot
3b03dc00c1 Update submodules on '6.11 in qt/qt5'
Change-Id: I233209f30bf1e12220b9bc80bdd152fe40d2724a
Reviewed-by: Qt Submodule Update Bot <qt_submodule_update_bot@qt-project.org>
2026-02-22 18:58:50 +00:00
Qt Submodule Update Bot
1b6a8c073a Update submodules on '6.11 in qt/qt5'
Change-Id: I25daf0bddb3fdec26ae0d6a60e9d01d8feed4529
Reviewed-by: Qt Submodule Update Bot <qt_submodule_update_bot@qt-project.org>
2026-02-21 01:19:39 +00:00
Qt Submodule Update Bot
73cad7fe96 Update submodules on '6.11 in qt/qt5'
Change-Id: Ifac65e8a54140ecfeced2047ffda36bdff4cd8eb
Reviewed-by: Qt Submodule Update Bot <qt_submodule_update_bot@qt-project.org>
2026-02-20 01:03:08 +00:00
Joerg Bornemann
b2fb8279dc Fix configure -init-submodules ignoring -skip option
When running configure -init-submodules -skip <module>, the -skip
option was ignored because init-repository ran before -skip values
were processed. The skipped modules were still initialized.

Fix by preprocessing -skip values in qt_tl_run_main_script() before
calling qt_ir_run_main_script(). The -skip values are converted to
module-subset exclusions (e.g. -qtwebengine) and merged with the
existing module-subset option.

Also register -skip as a known option in init-repository so it can
be parsed from the optfile.

Fixes: QTBUG-140359
Pick-to: 6.10 6.8
Change-Id: I37ed916dd1c22b6d10d23821044fee807919d4a9
Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io>
(cherry picked from commit 378c8719a9)
Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
2026-02-18 10:02:11 +00:00
Nils Petter Skålerud
546bcebdaa iOS, FFmpeg: Add documentation/commenting
This patch adds more commenting + documentation to the script
'install-ffmpeg-ios.sh'.

Pick-to: 6.10 6.8
Change-Id: I7e0023651b868d46b3fb4604bcc6d3eb1d24b7b2
Reviewed-by: Artem Dyomin <artem.dyomin@qt.io>
Reviewed-by: Nils Petter Skålerud <nils.petter.skalerud@qt.io>
(cherry picked from commit c3fe5fe6fe)
Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
2026-02-17 21:04:49 +00:00
Nils Petter Skålerud
75b333607c iOS, FFmpeg: Include dSYM files
App Store requires that our FFmpeg distribution includes dSYM files for
debugging symbols.

This patch removes stripping from the FFmpeg build, generates the
dSYM files and then manually strips the dylibs afterwards.

Pick-to: 6.10 6.8
Fixes: QTBUG-143963
Change-Id: I2740f46bb0fd7e7ee9da8dede01944b89bc3db7a
Reviewed-by: Artem Dyomin <artem.dyomin@qt.io>
(cherry picked from commit 919a4ae240)
Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
2026-02-17 21:04:46 +00:00
Nils Petter Skålerud
6c0f85bdbd iOS, FFmpeg: Clean up .framework creation logic
This patch rewrites the create_framework() function to
be more readable and adds commenting.

No functional changes.

Pick-to: 6.10 6.8
Task-number: QTBUG-143963
Change-Id: Id52fb43d733fe0c815a13b15135539452999cb40
Reviewed-by: Artem Dyomin <artem.dyomin@qt.io>
(cherry picked from commit 4df773656c)
Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
2026-02-17 21:04:35 +00:00
Nils Petter Skålerud
1d998afee6 Move install-ffmpeg-ios.sh into macos folder
Currently this script is stored under unix, but it's only ever going to
be used on macos. This patch moves the script.

No functional changes.

There was a minor conflict resolution in this patch due to macOS 26 not
being present in this branch.

Pick-to: 6.10 6.8
Change-Id: Iba3d101d360e90ffaa3478689bb002b4e5f65bc1
Reviewed-by: Artem Dyomin <artem.dyomin@qt.io>
(cherry picked from commit ebe3124831)
Reviewed-by: Tero Heikkinen <tero.heikkinen@qt.io>
2026-02-17 21:04:29 +00:00
Assam Boudjelthia
5d247c1e58 Android: bump to Gradle 9.3.1 and AGP 9.0.0
Following Qt 6.11 release 3rd party components update.

Task-number: QTBUG-143129
Change-Id: Idfd310197d5345871637a3e4e1858dbd731eeae8
Reviewed-by: Tero Heikkinen <tero.heikkinen@qt.io>
Reviewed-by: Elias Toivola <elias.toivola@qt.io>
2026-02-17 21:04:26 +00:00
Nils Petter Skålerud
18956e23c4 FFmpeg, Android: Simplify OS parameter logic
The script accepts an OS parameter, which is then forwarded into the
`build_ffmpeg_android` function. This function expects a different set
of values, that are different in name only, not in meaning.

This patch makes us forward the OS parameter directly into the function
and changes the internal logic accordingly.

No functional changes.

Pick-to: 6.10 6.8
Change-Id: I5614f1cf489594cfab2966a680e87a95c7be267b
Reviewed-by: Artem Dyomin <artem.dyomin@qt.io>
(cherry picked from commit ade4488de9)
Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
2026-02-17 21:04:13 +00:00
Tero Heikkinen
6722895711 Add missing comment line to describe patchelf usage
Patchelf is added to fix dependencies in shared ffmpeg libs
(amends 83adc86c53)

Pick-to: 6.10 6.8
Task-number: QTBUG-120990
Change-Id: Ia9359c1a77e82203d53e3d2940885a0c254024c9
Reviewed-by: Edward Welbourne <edward.welbourne@qt.io>
Reviewed-by: Simo Fält <simo.falt@qt.io>
(cherry picked from commit 7a5b6bdeaa)
Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
2026-02-17 21:04:09 +00:00
Tero Heikkinen
87b82c5a62 Fix incorrect external link for ninja package for x64 and arm
x64: ninja-linux.zip
arm: ninja-linux-aarch64.zip

Pick-to: 6.10 6.8 6.5
Fixes: QTQAINFRA-7701
Change-Id: I36465f6413ae80754f4fa39abb04ce492ed445b7
Reviewed-by: Simo Fält <simo.falt@qt.io>
(cherry picked from commit 3480c00adb)
Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
2026-02-17 21:04:07 +00:00
Elias Toivola
e3ee9617ac Android: Make the OpenSSL install script less rigid
OpenSSL packages have differing features indicated in their file name,
separate those in their own $suffix variable for the install function to
reduce hard-coding.

The function will now rename the extracted root directory to mirror the
package name from Ci-files. This is to prevent later "OpenSSL not found"
errors in provisioning when prebuild package and its root are not named
exactly the same.

Pick-to: 6.10 6.8 6.5
Change-Id: I71019a0d2731aace00ff2eb82d63537673f6e41a
Reviewed-by: Assam Boudjelthia <assam.boudjelthia@qt.io>
Reviewed-by: Nils Petter Skålerud <nils.petter.skalerud@qt.io>
(cherry picked from commit aa2272379a)
Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
2026-02-12 18:19:45 +00:00
Tero Heikkinen
03c30a97d5 Fix macOS gRPC install with CMake minimum version 3.5
Pick-to: dev
Fixes: QTQAINFRA-7683
Change-Id: I1cf8984420550f078a8125e16ef5f7d995890bbb
Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io>
2026-02-12 20:19:40 +02:00
Tero Heikkinen
3700add7fc RHEL 10: Point SBOM_PYTHON_APPS_PATH to virtual env for sbom2doc
Currently sbom2doc is not found with RHEL 10 until this other fix
in qtbase is available: 2dc0c29502bec1ffffbbf098d749a49b494122ac

After that this temporary fix could be removed and proceed to
unify virtual env usage for all linux machines (QTQAINFRA-7642)

Task-number: QTQAINFRA-7203
Change-Id: I97adf937afa78371b290baa833c767a106c4c15e
Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io>
(cherry picked from commit 1e25956312)
Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
2026-02-12 20:19:36 +02:00
Tero Heikkinen
08cef8ffb2 Provisioning: Take repo-clones into use in RHEL 10
Task-number: QTQAINFRA-7614
Change-Id: If766b511e367a64691a8eb0683c1fdc698d3fa05
Reviewed-by: Ville-Pekka Karhu <ville-pekka.karhu@qt.io>
(cherry picked from commit 28f9120718)
Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
2026-02-12 20:19:32 +02:00
Tero Heikkinen
7326e7a3b8 RHEL 10: Take rhc into use with subscription activation
Both of the subscription activation options needs to run
with sudo as non-root user cannot connect system.

Task-number: QTQAINFRA-7637
Change-Id: I933536d7321b9a7e54732395b6e536c5275129d3
Reviewed-by: Toni Saario <toni.saario@qt.io>
(cherry picked from commit 4d4e6bb490)
Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
2026-02-12 20:19:28 +02:00
Tero Heikkinen
59fd96b18f sbom: Create virtual env for RHEL 10.0 Python 3.12 requirements
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.

Task-number: QTQAINFRA-7554
Change-Id: I1260ef7fdf0c1ba96acaee1738ed9612e47bedad
Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io>
(cherry picked from commit 88177e9ab8)
Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
2026-02-12 20:19:23 +02:00
Alexandru Croitor
30a9d5669c sbom: Explicitly install jsonschema package newer than 4.19
Because RHEL 10 comes with an older version of jsonschema (4.19),
which breaks cyclonedx verification at qtbase runtime.

Change-Id: Ib7044b6d4107e5382015adfdd8eb747be8605934
Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io>
(cherry picked from commit 6348aa919b)
Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
2026-02-12 20:19:19 +02:00
Alexandru Croitor
49b09bab88 sbom: Bump cyclonedx package to latest 11.5.0
This brings cyclonedx 1.7 support.

Change-Id: Id525d07ea1f7d342bf3e683e3a7c64c064c6e4c4
Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io>
(cherry picked from commit 30d874ad79)
Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
2026-02-12 20:19:14 +02:00
Tero Heikkinen
8c54a23ab6 Add RHEL 10.0 with non-blocking tests in CI
Notes
  - GCC 14
  - Wayland is mandatory to use as X11 has been removed
  - DISPLAY=:0 should not be used anymore as it's for X11
  - Java JDK 21
  - mysql replaced by mariadb
  - gstreamer1-plugin-openh264 not available
  - nodejs-16 upgraded to nodejs-22
  - Squish is no longer installed in provisioning
  - SBOM needs jsonschema > 4.19 to work with Python 3.12
  - Has these to bypass 'Activities Overview'
    - 'GNOME Classic' Desktop Session
    - 'No Overview' GNOME extension
  - 7z >= 25.01 multi-hop symlinks restricted with -snl switch levels
    --> 7z x -snld10 allows minimal usage to use multi symlinks
  - With install-vcpkg.sh and install-vcpkg-ports.sh correct path is
    - ../common/linux/ and not ../common/unix/ like in 6.12 (dev)

EGL support
  - No longer need to install mesa-libEGL with pinned version
  - As there is no longer Xorg to crash when Wayland is used instead

Task-number: QTQAINFRA-7203
Task-number: QTQAINFRA-7202
Change-Id: If8b7bfdbc2b84259fd09276e0566b3967c364668
Reviewed-by: Simo Fält <simo.falt@qt.io>
(cherry picked from commit c399d002de)
2026-02-12 20:19:11 +02:00
Nils Petter Skålerud
13db7987b8 Stop compiling FFmpeg Android arm64 on old macOS x86 hosts
Android FFmpeg provisioning requires 'readelf', which is provided by
binutils package. This package is shown to be flaky on older macOS x86
hosts. It is not critical that we compile that we compile Android
FFmpeg on these hosts, so this patch removes them.

Pick-to: 6.10 6.8
Change-Id: I6722f2c543b022a998573cc76ffc671378a4fcb5
Reviewed-by: Tero Heikkinen <tero.heikkinen@qt.io>
(cherry picked from commit 033329cb00)
Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
2026-02-12 18:19:07 +00:00
Ville-Pekka Karhu
75d3d6297c Provisioning: Take repo-clones into use in RHEL 9
Pick-to: 6.10 6.8 6.5
Task-number: QTQAINFRA-5587
Change-Id: I2459a32b96524a4c29769835d5c37b2cb021720e
Reviewed-by: Aku Pietikäinen <aku.pietikainen@qt.io>
Reviewed-by: Tero Heikkinen <tero.heikkinen@qt.io>
(cherry picked from commit 7f2d96a43e)
Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
2026-02-12 18:19:03 +00:00
516 changed files with 1680 additions and 399 deletions

4
.gitignore vendored
View File

@@ -5,8 +5,8 @@ Makefile
CMakeLists.txt.user* CMakeLists.txt.user*
CMakeUserPresets.json CMakeUserPresets.json
.vscode .vscode
build build/
build-* build-*/
.DS_Store .DS_Store
init-repository.opt init-repository.opt
init-repository.opt.in init-repository.opt.in

View File

@@ -178,7 +178,6 @@ function(qt_ir_command_line_set_input name val)
endfunction() endfunction()
# Appends a value of a command line option into a global property. # Appends a value of a command line option into a global property.
# Currently unused
function(qt_ir_command_line_append_input name val) function(qt_ir_command_line_append_input name val)
if(NOT "${commandline_option_${name}_alias}" STREQUAL "") if(NOT "${commandline_option_${name}_alias}" STREQUAL "")
set(name "${commandline_option_${name}_alias}") set(name "${commandline_option_${name}_alias}")
@@ -240,6 +239,22 @@ function(qt_ir_commandline_string arg val nextok)
endif() endif()
endfunction() endfunction()
# Like string, but appends to the existing value instead of overwriting.
# Allows repeated flags like: -skip qtwebengine -skip qtwebview
function(qt_ir_commandline_addString arg val nextok)
if(nextok)
qt_ir_args_get_next_command_line_arg(val)
if("${val}" MATCHES "^-")
qt_ir_add_error("No value supplied to command line options '${arg}'.")
endif()
endif()
qt_ir_validate_value("${arg}" "${val}" success)
if(success)
qt_ir_command_line_append_input("${arg}" "${val}")
endif()
endfunction()
# Sets / handles the value of a command line void option. # Sets / handles the value of a command line void option.
# This is an option like --force, which doesn't take any arguments. # This is an option like --force, which doesn't take any arguments.
# Currently unused # Currently unused
@@ -279,6 +294,7 @@ endfunction()
# #
# Currently handles the following types of CLI arguments: # Currently handles the following types of CLI arguments:
# string # string
# addString (like string, but accumulates values from repeated flags)
# boolean # boolean
# void # void
# #

View File

@@ -89,6 +89,26 @@ function(qt_ir_handle_called_from_configure top_level_src_path out_var_exit_reas
qt_ir_validate_options_for_configure() qt_ir_validate_options_for_configure()
# Convert -skip values to module-subset exclusions so init-repository respects them.
qt_ir_get_option_value(skip skip_modules)
if(skip_modules)
string(REPLACE "," ";" skip_modules "${skip_modules}")
list(TRANSFORM skip_modules STRIP)
list(TRANSFORM skip_modules PREPEND "-")
qt_ir_get_option_value(module-subset existing_subset)
if(NOT existing_subset)
set(existing_subset "default")
endif()
list(APPEND skip_modules "${existing_subset}")
list(REMOVE_DUPLICATES skip_modules)
list(JOIN skip_modules "," merged_subset)
qt_ir_set_option_value(module-subset "${merged_subset}")
message(DEBUG "Preprocessed -skip option: module-subset is now: ${merged_subset}")
endif()
# -init_submodules implies --force # -init_submodules implies --force
qt_ir_set_option_value(force TRUE) qt_ir_set_option_value(force TRUE)
@@ -110,6 +130,11 @@ function(qt_ir_get_args_from_optfile_configure_filtered optfile_path out_var)
set(extra_configure_args "") set(extra_configure_args "")
set(extra_cmake_args "") set(extra_cmake_args "")
# Collect modules to skip. These may come from:
# 1. The -skip option (consumed by init-repository's option parser)
# 2. Exclusion entries in -submodules/--module-subset (e.g. -qtfoo)
qt_ir_get_option_value(skip skip_modules)
# If the -submodules or --module-subset options were specified, transform # If the -submodules or --module-subset options were specified, transform
# the values into something configure understands and pass them to configure. # the values into something configure understands and pass them to configure.
qt_ir_get_option_value(module-subset submodules) qt_ir_get_option_value(module-subset submodules)
@@ -133,25 +158,10 @@ function(qt_ir_get_args_from_optfile_configure_filtered optfile_path out_var)
endif() endif()
list(JOIN include_submodules "," include_submodules) list(JOIN include_submodules "," include_submodules)
list(JOIN exclude_submodules "," exclude_submodules)
# Handle case when the -skip argument is already passed. # Merge exclusions from module-subset into the skip list.
# In that case read the passed values, merge with new ones, if(exclude_submodules)
# remove both the -skip and its values, and re-add it later. list(APPEND skip_modules ${exclude_submodules})
list(FIND filtered_args "-skip" skip_index)
if(exclude_submodules AND skip_index GREATER -1)
list(LENGTH filtered_args filtered_args_length)
math(EXPR skip_args_index "${skip_index} + 1")
if(skip_args_index LESS filtered_args_length)
list(GET filtered_args "${skip_args_index}" skip_args)
string(REPLACE "," ";" skip_args "${skip_args}")
list(APPEND skip_args ${exclude_submodules})
list(REMOVE_DUPLICATES skip_args)
list(JOIN skip_args "," exclude_submodules)
list(REMOVE_AT filtered_args "${skip_args_index}")
list(REMOVE_AT filtered_args "${skip_index}")
endif()
endif() endif()
# Handle case when only '-submodules existing' is passed and the # Handle case when only '-submodules existing' is passed and the
@@ -159,9 +169,13 @@ function(qt_ir_get_args_from_optfile_configure_filtered optfile_path out_var)
if(include_submodules) if(include_submodules)
list(APPEND extra_configure_args "-submodules" "${include_submodules}") list(APPEND extra_configure_args "-submodules" "${include_submodules}")
endif() endif()
if(exclude_submodules) endif()
list(APPEND extra_configure_args "-skip" "${exclude_submodules}")
endif() # Forward all collected skip modules to configure.
if(skip_modules)
list(REMOVE_DUPLICATES skip_modules)
list(JOIN skip_modules "," skip_csv)
list(APPEND extra_configure_args "-skip" "${skip_csv}")
endif() endif()
# Insert the extra arguments into the proper positions before and after '--'. # Insert the extra arguments into the proper positions before and after '--'.

View File

@@ -37,6 +37,7 @@ macro(qt_ir_set_known_command_line_options)
qt_ir_commandline_option(init-submodules TYPE boolean) qt_ir_commandline_option(init-submodules TYPE boolean)
# We alias qtbase's submodules option to init-repository module-subset. # We alias qtbase's submodules option to init-repository module-subset.
qt_ir_commandline_option(submodules ALIAS module-subset TYPE string) qt_ir_commandline_option(submodules ALIAS module-subset TYPE string)
qt_ir_commandline_option(skip TYPE addString)
set_property(GLOBAL PROPERTY _qt_ir_known_command_line_options "${commandline_known_options}") set_property(GLOBAL PROPERTY _qt_ir_known_command_line_options "${commandline_known_options}")
endmacro() endmacro()

View File

@@ -155,6 +155,7 @@ Configurations:
'NON_QTBASE_CMAKE_ARGS=-DFFMPEG_DIR={{.Env.FFMPEG_DIR}} -DQT_DEPLOY_FFMPEG=TRUE', 'NON_QTBASE_CMAKE_ARGS=-DFFMPEG_DIR={{.Env.FFMPEG_DIR}} -DQT_DEPLOY_FFMPEG=TRUE',
'VCPKG_HOST_TRIPLET=x64-linux-qt', 'VCPKG_HOST_TRIPLET=x64-linux-qt',
'VCPKG_TARGET_TRIPLET=x64-linux-qt', 'VCPKG_TARGET_TRIPLET=x64-linux-qt',
'SCCACHE_C_CUSTOM_CACHE_BUSTER=v1'
] ]
- -
Id: 'sles-15_sp6-static' Id: 'sles-15_sp6-static'
@@ -266,6 +267,18 @@ Configurations:
'VCPKG_HOST_TRIPLET=x64-linux-qt', 'VCPKG_HOST_TRIPLET=x64-linux-qt',
'VCPKG_TARGET_TRIPLET=x64-linux-qt', 'VCPKG_TARGET_TRIPLET=x64-linux-qt',
] ]
-
Id: 'rhel-10.0'
Template: 'qtci-linux-RHEL-10.0-x86_64-51'
Compiler: 'GCC'
Features: ['Sccache', 'UseConfigure', 'InstallQt5Dependencies', 'GenerateSBOM', 'VerifySBOM', 'InsignificantTests', 'DoNotAbortTestingOnFirstFailure']
Configure arguments: '-nomake examples -release -force-debug-info -headersclean -separate-debug-info -qt-libjpeg -qt-libpng -qt-pcre -qt-harfbuzz -qt-doubleconversion -no-libudev -bundled-xcb-xinput'
Environment variables: [
'CMAKE_ARGS=-DOpenGL_GL_PREFERENCE=LEGACY',
'NON_QTBASE_CMAKE_ARGS=-DFFMPEG_DIR={{.Env.FFMPEG_DIR}} -DQT_DEPLOY_FFMPEG=TRUE -DINPUT_headersclean=ON',
'VCPKG_HOST_TRIPLET=x64-linux-qt',
'VCPKG_TARGET_TRIPLET=x64-linux-qt',
]
- -
Id: 'ios-universal' Id: 'ios-universal'
Template: 'qtci-macos-14-arm-106' Template: 'qtci-macos-14-arm-106'

View File

@@ -69,3 +69,22 @@ Configurations:
'ANDROID_NDK_ROOT={{.Env.ANDROID_NDK_ROOT_LATEST}}', 'ANDROID_NDK_ROOT={{.Env.ANDROID_NDK_ROOT_LATEST}}',
'ANDROID_EMULATOR=emulator_x86_64_api_36' 'ANDROID_EMULATOR=emulator_x86_64_api_36'
] ]
-
Id: 'android-17-x86_64-on-linux'
Template: 'qtci-linux-RHEL-9.6-x86_64-51'
Target os: 'Android_ANY'
Target arch: 'x86_64'
Compiler: 'GCC'
Target compiler: 'Clang'
Platform dependency: 'rhel-9.6'
Features: ['Sccache', 'WarningsAreErrors', 'AndroidTestRun', 'VMSize8', 'UseConfigure', 'GenerateSBOM', 'VerifySBOM', 'JavaDocs', 'InsignificantTests', 'DoNotAbortTestingOnFirstFailure']
Environment variables: [
'TARGET_CONFIGURE_ARGS=-nomake examples -release -force-debug-info -android-ndk {{.Env.ANDROID_NDK_ROOT_LATEST}} -android-sdk {{.Env.ANDROID_SDK_ROOT}} -android-abis x86_64',
'TARGET_CMAKE_ARGS=-DCMAKE_C_COMPILER_FRONTEND_VARIANT=GNU -DCMAKE_CXX_COMPILER_FRONTEND_VARIANT=GNU -DOPENSSL_ROOT_DIR={{.Env.OPENSSL_ANDROID_HOME_LATEST}} -DQT_GENERATE_WRAPPER_SCRIPTS_FOR_ALL_HOSTS=ON',
'NON_QTBASE_TARGET_CMAKE_ARGS=-DFFMPEG_DIR={{.Env.FFMPEG_DIR_ANDROID_X86_64_NDK_LATEST}} -DQT_DEPLOY_FFMPEG=TRUE -DQT_PROTOBUF_WELL_KNOWN_TYPES_PROTO_DIR=/usr/local/include',
# We check QT_USE_TARGET_ANDROID_BUILD_DIR and QT_USE_ANDROID_MODERN_BUNDLE only in one
# configuration, to ensure builds without this option work too.
'COMMON_TARGET_TEST_CMAKE_ARGS=-DQT_USE_TARGET_ANDROID_BUILD_DIR=ON -DQT_USE_ANDROID_MODERN_BUNDLE=ON',
'ANDROID_NDK_ROOT={{.Env.ANDROID_NDK_ROOT_LATEST}}',
'ANDROID_EMULATOR=emulator_x86_64_api_37'
]

View File

@@ -46,7 +46,7 @@ Configurations:
- -
Id: 'macos-13-arm64-tests' Id: 'macos-13-arm64-tests'
Template: 'qtci-macos-13-arm-107' Template: 'qtci-macos-13-arm-108'
Compiler: 'Clang' Compiler: 'Clang'
Features: ['Sccache', 'TestOnly', 'Packaging'] Features: ['Sccache', 'TestOnly', 'Packaging']
Platform dependency: 'macos-universal-on-arm64' Platform dependency: 'macos-universal-on-arm64'
@@ -109,7 +109,7 @@ Configurations:
# Test on all supported macOS versions (deployment targets) # Test on all supported macOS versions (deployment targets)
- -
Id: 'macos-13-arm64-developer-build-tests' Id: 'macos-13-arm64-developer-build-tests'
Template: 'qtci-macos-13-arm-107' Template: 'qtci-macos-13-arm-108'
Compiler: 'Clang' Compiler: 'Clang'
Features: ['TestOnly'] Features: ['TestOnly']
Platform dependency: 'macos-arm64-developer-build' Platform dependency: 'macos-arm64-developer-build'

View File

@@ -12,5 +12,5 @@ Configurations:
Template: 'qtci-linux-openSUSE-16.0-x86_64-51' Template: 'qtci-linux-openSUSE-16.0-x86_64-51'
Target os: 'WebAssembly' Target os: 'WebAssembly'
Compiler: 'GCC' Compiler: 'GCC'
Features: ['Sccache', 'TestOnly'] Features: ['Sccache', 'TestOnly', 'InsignificantTests', 'DoNotAbortTestingOnFirstFailure']
Platform dependency: 'webassembly-linux-thread-asyncify-new' Platform dependency: 'webassembly-linux-thread-asyncify-new'

View File

@@ -0,0 +1,13 @@
#!/usr/bin/env bash
# Copyright (C) 2026 The Qt Company Ltd.
# SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only
set -ex
sudo tee -a /etc/dconf/db/local.d/00-media-automount <<"EOF"
[org/gnome/desktop/media-handling]
automount=false
automount-open=false
EOF
sudo dconf update

View File

@@ -0,0 +1,88 @@
### RHEL 10.0 ###
Hard Disk: 500G
Network: CI
Video Card: Total Video Memory: 64MB
Boot options/Firmware: BIOS
Language: English (United States)
Keyboard: English (US), Norwegian (Windows), Finnish (Windows)
Time & Date: Etc/Coordinated Universal Time
Software Selection: Server with GUI
Installation Destination: Automatic partitioning selected
Root Passowrd: Set
Network & Host..: Connected
KDUMP enabled: Memory Reservation: automatic
Begin Installation
Reboot
# Configure Settings
Notifications:
* Lock Screen Notifications: OFF
* Applications: Set notification off
* Do Not Disturb: on
Applications:
* Disable notifications from all applications
Privacy:
* Blank Screen Delay: Never
* Screen Lock: OFF
Power:
* Blank screen: Never
Displays:
* Resolution: 1280 x 800
Users:
* Automatic login on
# Add user to sudoers
Add 'qt ALL=NOPASSWD: ALL' to /etc/sudoers.d/qt
Add 'GRUB_GFXMODE=1280x800' to /etc/default/grub
sudo grub2-mkconfig -o /etc/grub2.cfg
sudo grub2-mkconfig -o /boot/grub2/grub.cfg
# Add support for virtio driver
su
echo "add_drivers+=\" virtio-blk \"" >> /etc/dracut.conf.d/virtio.conf
dracut -f
# NOTE!
# - RHEL uses 'sudo subscription-manager release --set=10.0' in provisioning
# - Do not update Tier 1 via GUI without using this same --set before provisioning
# - To avoid System to have newer packages than RPMS which will cause update issues
# Register RHEL before it's possible to install qemu-guest-agent
subscription-manager register
yum -y install qemu-guest-agent
# Do these from Opennebula UI!
# Enable network connection from right upper corner
This is done when the VM is launched as persistent in OpenNebula.
# Fetch and run coin-setup
Download http://coin/coin/binary/linux_amd64/coin-setup
# run as qt user
run './coin-setup'
# Switch to use GNOME Classic user interface
# GNOME Classic was selected because there's an issue with Standard (wayland display server).
# Autotest start failing because terminal session remains in Activities Overview.
# https://gitlab.gnome.org/GNOME/gnome-shell/-/issues/3854
First execute script ./01-disable-automounting.sh (dconf update crash in GNOME Classic)
logout -> Select user (without it the drop down menu won't appear) -> switch to 'GNOME Classic' -desktop session from drop down menu in login screen
# If gear icon is not seen, check is 'GNOME Classic' -desktop session installed, and install if it's missing
ls /usr/share/xsessions/
# This should list something like these if it's installed
gnome-classic.desktop
gnome.desktop
# To install GNOME Classic if it's missing
sudo dnf reinstall gnome-classic-session
# In RHEL 10.0 even with 'GNOME Classic' -desktop the Activities Overview is still in use
# It can be bypassed via 'No Overview' -GNOME extension:
# - https://extensions.gnome.org/extension/4099/no-overview/
# - Select GNOME Shell version 47 to download
# - Unpack extension from tar.gz
sudo mv <extension_folder> /usr/share/gnome-shell/extensions/no-overview@fthx
sudo chown -R root: /usr/share/gnome-shell/extensions/no-overview@fthx
sudo chmod 755 -R /usr/share/gnome-shell/extensions/no-overview@fthx
sudo reboot
gnome-extensions list
gnome-extensions enable no-overview@fthx
Reboot

View File

@@ -1,12 +1,7 @@
*.iml *.iml
.gradle .gradle
.idea
/local.properties /local.properties
/.idea/caches
/.idea/libraries
/.idea/modules.xml
/.idea/workspace.xml
/.idea/navEditor.xml
/.idea/assetWizardSettings.xml
.DS_Store .DS_Store
/build /build
/captures /captures

View File

@@ -15,8 +15,8 @@ android {
} }
compileOptions { compileOptions {
sourceCompatibility JavaVersion.VERSION_1_8 sourceCompatibility JavaVersion.VERSION_17
targetCompatibility JavaVersion.VERSION_1_8 targetCompatibility JavaVersion.VERSION_17
} }
} }

View File

@@ -6,7 +6,7 @@
android:allowBackup="true" android:allowBackup="true"
android:label="gradle_project" android:label="gradle_project"
android:supportsRtl="true" android:supportsRtl="true"
tools:targetApi="35"> tools:targetApi="36">
<activity <activity
android:name=".MainActivity" android:name=".MainActivity"
android:exported="true"> android:exported="true">

View File

@@ -1,8 +1,8 @@
[versions] [versions]
agp = "8.10.1" agp = "9.0.0"
core = "1.16.0" core = "1.17.0"
appcompat = "1.7.1" appcompat = "1.7.1"
material = "1.12.0" material = "1.13.0"
constraintlayout = "2.2.1" constraintlayout = "2.2.1"
[libraries] [libraries]

View File

@@ -199,6 +199,23 @@ echo "Unzipping the Android 16 to $maxVersionDestination"
sudo unzip -o -q "$maxVersionFilePath" -d "$maxVersionDestination" sudo unzip -o -q "$maxVersionFilePath" -d "$maxVersionDestination"
rm "$maxVersionFilePath" rm "$maxVersionFilePath"
echo "Download and unzip Android 17 Beta 3 16KB System Image"
insignificantMaxVersionFileName="x86_64-ps16k-37.0_r03.zip"
insignificantMaxVersionDestination="$sdkTargetFolder/system-images/android-37/google_apis_ps16k/"
insignificantMaxVersionFilePath="$insignificantMaxVersionDestination/$insignificantMaxVersionFileName"
insignificantMaxVersionCiUrl="$basePath/system_images/google_apis/$insignificantMaxVersionFileName"
insignificantMaxVersionUrl="https://dl.google.com/android/repository/sys-img/google_apis/$insignificantMaxVersionFileName"
insignificantMaxVersionSha1="b89a6686f9a9e9942d596bed45d422cbccb70c98"
mkdir -p "$insignificantMaxVersionDestination"
DownloadURL "$insignificantMaxVersionCiUrl" "$insignificantMaxVersionUrl" "$insignificantMaxVersionSha1" "$insignificantMaxVersionFilePath"
echo "Unzipping the Android 17 Beta3 16KB to $insignificantMaxVersionDestination"
sudo unzip -o -q "$insignificantMaxVersionFilePath" -d "$insignificantMaxVersionDestination"
# Hack to avoid SDK version bug in source.properties file, the usage of ".0" messes things for avdmanager. TODO: undo when official comes
sudo sed -i 's/AndroidVersion.ApiLevel=37.0/AndroidVersion.ApiLevel=37/g' "$insignificantMaxVersionDestination/x86_64/source.properties"
rm "$insignificantMaxVersionFilePath"
echo "Checking the contents of Android SDK again..." echo "Checking the contents of Android SDK again..."
ls -l "$sdkTargetFolder" ls -l "$sdkTargetFolder"
@@ -208,6 +225,9 @@ echo "no" | ./avdmanager create avd -n emulator_x86_api_28 -c 2048M -f \
echo "no" | ./avdmanager create avd -n emulator_x86_64_api_36 -c 2048M -f \ echo "no" | ./avdmanager create avd -n emulator_x86_64_api_36 -c 2048M -f \
-k "system-images;android-36;google_apis;x86_64" -k "system-images;android-36;google_apis;x86_64"
echo "no" | ./avdmanager create avd -n emulator_x86_64_api_37 -c 2048M -f \
-k "system-images;android-37;google_apis,page_size_16kb,ai_glasses_compatible;x86_64"
echo "Install maximum supported SDK level image for Android Automotive $sdkApiLevelAutomotiveMax" echo "Install maximum supported SDK level image for Android Automotive $sdkApiLevelAutomotiveMax"
DownloadURL "$androidAutomotiveMaxUrl" "$androidAutomotiveMaxUrl" "$androidAutomotiveMaxSha" \ DownloadURL "$androidAutomotiveMaxUrl" "$androidAutomotiveMaxUrl" "$androidAutomotiveMaxSha" \
"/tmp/${sdkApiLevelAutomotiveMax}_automotive.tar.gz" "/tmp/${sdkApiLevelAutomotiveMax}_automotive.tar.gz"
@@ -241,7 +261,7 @@ cp -r "${scripts_dir_name}/android/gradle_project" /tmp/gradle_project
cd /tmp/gradle_project cd /tmp/gradle_project
# Get Gradle files from qtbase # Get Gradle files from qtbase
qtbaseGradleUrl="https://code.qt.io/cgit/qt/qtbase.git/plain/src/3rdparty/gradle" qtbaseGradleUrl="https://code.qt.io/cgit/qt/qtbase.git/plain/src/3rdparty/gradle"
commit_sha="bb12c984b2c838bdb06169ef7d659384c02c8b82" commit_sha="269a75dbd1262a714eb238c42e5159a0a8979818"
curl "$qtbaseGradleUrl/gradle.properties?h=$commit_sha" > gradle.properties curl "$qtbaseGradleUrl/gradle.properties?h=$commit_sha" > gradle.properties
curl "$qtbaseGradleUrl/gradlew?h=$commit_sha" > gradlew curl "$qtbaseGradleUrl/gradlew?h=$commit_sha" > gradlew
curl "$qtbaseGradleUrl/gradlew.bat?h=$commit_sha" > gradlew.bat curl "$qtbaseGradleUrl/gradlew.bat?h=$commit_sha" > gradlew.bat

0
coin/provisioning/common/linux/fix-bitbake-apparmor.sh Normal file → Executable file
View File

0
coin/provisioning/common/linux/fix-bwrap-apparmor.sh Normal file → Executable file
View File

View File

View File

@@ -15,18 +15,20 @@ case "$uname_m" in
x86_64|amd64) x86_64|amd64)
sha256="6f98805688d19672bd699fbbfa2c2cf0fc054ac3df1f0e6a47664d963d530255" sha256="6f98805688d19672bd699fbbfa2c2cf0fc054ac3df1f0e6a47664d963d530255"
pkgname="ninja-$version-linux-x64.zip" pkgname="ninja-$version-linux-x64.zip"
pkgnameExt="ninja-linux.zip"
dirname="ninja-$version-linux-x64" dirname="ninja-$version-linux-x64"
;; ;;
arm64|aarch64) arm64|aarch64)
sha256="5c25c6570b0155e95fce5918cb95f1ad9870df5768653afe128db822301a05a1" sha256="5c25c6570b0155e95fce5918cb95f1ad9870df5768653afe128db822301a05a1"
pkgname="ninja-$version-linux-arm64.zip" pkgname="ninja-$version-linux-arm64.zip"
pkgnameExt="ninja-linux-aarch64.zip"
dirname="ninja-$version-linux-arm64" dirname="ninja-$version-linux-arm64"
;; ;;
*) fatal "Unknown architecture in uname: $uname_m" 43 ;; *) fatal "Unknown architecture in uname: $uname_m" 43 ;;
esac esac
internalUrl="http://ci-files01-hki.ci.qt.io/input/ninja/$pkgname" internalUrl="http://ci-files01-hki.ci.qt.io/input/ninja/$pkgname"
externalUrl="https://github.com/ninja-build/ninja/releases/download/v$version/$pkgname" externalUrl="https://github.com/ninja-build/ninja/releases/download/v$version/$pkgnameExt"
targetFile="$HOME/$pkgname" targetFile="$HOME/$pkgname"
DownloadURL "$internalUrl" "$externalUrl" "$sha256" "$targetFile" DownloadURL "$internalUrl" "$externalUrl" "$sha256" "$targetFile"

View File

@@ -13,7 +13,7 @@ QEMU_VER="8.2.3"
PrimaryUrl="http://ci-files01-hki.ci.qt.io/input/qemu/qemu-$QEMU_VER.tar.xz" PrimaryUrl="http://ci-files01-hki.ci.qt.io/input/qemu/qemu-$QEMU_VER.tar.xz"
AltUrl="https://download.qemu.org/qemu-$QEMU_VER.tar.xz" AltUrl="https://download.qemu.org/qemu-$QEMU_VER.tar.xz"
SHA1="1b29c8105cf8d15b9e7fb6f8e85170b6c54a1788" SHA1="1b29c8105cf8d15b9e7fb6f8e85170b6c54a1788"
InstallFromCompressedFileFromURL "$PrimaryUrl" "$AltUrl" "$SHA1" "/tmp" "$appPrefix" InstallFromCompressedFileFromURL "$PrimaryUrl" "$AltUrl" "$SHA1" "/tmp" ""
targetFolder=/tmp/qemu-${QEMU_VER} targetFolder=/tmp/qemu-${QEMU_VER}
mkdir -p "$targetFolder/build" mkdir -p "$targetFolder/build"

View File

@@ -0,0 +1,299 @@
#!/usr/bin/env bash
# Copyright (C) 2024 The Qt Company Ltd.
# SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only
# This script will build and install FFmpeg shared libraries.
#
# The script will package iOS and iOS-simulator binaries into one
# single .xcframework. This .xcframework cannot contain .dylibs
# directly. It must contain .framework files. Unlike macOS, binaries
# should NOT be lipoed together.
#
# From https://developer.apple.com/documentation/xcode/creating-a-multi-platform-binary-framework-bundle
# "Avoid using dynamic library files (.dylib files) for dynamic
# linking. An XCFramework can include dynamic library files, but only
# macOS supports these libraries for dynamic linking. Dynamic linking
# on iOS, iPadOS, tvOS, visionOS, and watchOS requires the XCFramework
# to contain .framework bundles."
#
# This script can take an optional final parameter to control
# installation directory.
set -eoux pipefail
# Must match or be lower than the minimum iOS version supported by the version of Qt that is
# is currently being built.
readonly MINIMUM_IOS_VERSION="16.0"
source "${BASH_SOURCE%/*}/../unix/ffmpeg-installation-utils.sh"
ffmpeg_version=$(ffmpeg_version_default)
ffmpeg_source_dir=$(download_ffmpeg)
ffmpeg_config_options=$(get_ffmpeg_config_options "shared")
default_prefix="/usr/local/ios/ffmpeg"
prefix="${1:-$default_prefix}"
# Qt doesn't utilize all FFmpeg components. This is a list of the ones
# we care about
ffmpeg_components="libavcodec libavformat libavutil libswresample libswscale"
target_platform_to_sdk() {
local target_platform="$1"
if [[ "$target_platform" == "arm64-simulator" ]] \
|| [[ "$target_platform" == "x86_64-simulator" ]]; then
echo "iphonesimulator"
elif [ "$target_platform" == "arm64-iphoneos" ]; then
echo "iphoneos"
else
echo "Error finding corresponding iOS SDK for target platform: ${target_platform}"
exit 1
fi
}
build_ffmpeg_ios() {
local target_platform="$1"
local target_cpu_arch=""
local target_sdk;
target_sdk="$(target_platform_to_sdk "${target_platform}")"
if [ "$target_platform" == "arm64-simulator" ]; then
target_cpu_arch="arm64"
minos="-mios-simulator-version-min=$MINIMUM_IOS_VERSION"
elif [ "$target_platform" == "x86_64-simulator" ]; then
target_cpu_arch="x86_64"
minos="-mios-simulator-version-min=$MINIMUM_IOS_VERSION"
elif [ "$target_platform" == "arm64-iphoneos" ]; then
target_cpu_arch="arm64"
minos="-miphoneos-version-min=$MINIMUM_IOS_VERSION"
else
echo "Error when building FFmpeg for iOS. Unknown parameter given for target_platform: '${target_platform}'"
exit 1
fi
local build_dir="$ffmpeg_source_dir/build_ios/$target_platform"
sudo mkdir -p "$build_dir"
pushd "$build_dir"
local sysroot;
sysroot="$(xcrun --sdk "${target_sdk}" --show-sdk-path)"
local cc;
cc="$(xcrun -f --sdk ${target_sdk} clang)"
local cxx;
cxx="$(xcrun -f --sdk ${target_sdk} clang++)"
# We add -g so we get debug symbols.
local common_arch_flags="${minos} -arch ${target_cpu_arch} -g"
local config_parameters=(
$ffmpeg_config_options
--sysroot="${sysroot}"
--enable-cross-compile
--enable-optimizations
--prefix="$prefix"
--arch="$target_cpu_arch"
--cc="$cc"
--cxx="$cxx"
--extra-cflags="${common_arch_flags}"
--extra-cxxflags="${common_arch_flags}"
--extra-ldflags="${common_arch_flags}"
--target-os=darwin
--enable-shared
--disable-static
--install-name-dir="@rpath"
--disable-audiotoolbox
# We perform manual stripping after generating dSYMs.
# Make sure to skip it during FFmpeg compilation.
--disable-stripping
)
sudo "$ffmpeg_source_dir/configure" "${config_parameters[@]}"
sudo make install DESTDIR="$build_dir/installed" -j4
popd
}
build_info_plist() {
local file_path="$1"
local framework_name="$2"
local framework_id="$3"
# Apple plist format has a strict requirement that the version string
# contains up to 3 numerics separated by a dot. Meanwhile, FFmpeg versioning
# tends to use an 'n' prefix in their versioning. We use a regex to convert
# and verify the version string.
#
# https://developer.apple.com/documentation/bundleresources/information-property-list/cfbundleversion
local formatted_ffmpeg_version
if [[ $ffmpeg_version =~ ([0-9]+(\.[0-9]+){0,2}) ]]; then
formatted_ffmpeg_version="${BASH_REMATCH[1]}"
else
echo "Unable to format FFmpeg version string '$ffmpeg_version' into corresponding Apple Info.plist format"
exit 1
fi
local minimum_version_key="MinimumOSVersion"
local supported_platforms="iPhoneOS"
info_plist="<?xml version=\"1.0\" encoding=\"UTF-8\"?>
<!DOCTYPE plist PUBLIC \"-//Apple//DTD PLIST 1.0//EN\" \"http://www.apple.com/DTDs/PropertyList-1.0.dtd\">
<plist version=\"1.0\">
<dict>
<key>CFBundleDevelopmentRegion</key>
<string>en</string>
<key>CFBundleExecutable</key>
<string>${framework_name}</string>
<key>CFBundleIdentifier</key>
<string>${framework_id}</string>
<key>CFBundleInfoDictionaryVersion</key>
<string>6.0</string>
<key>CFBundleName</key>
<string>${framework_name}</string>
<key>CFBundlePackageType</key>
<string>FMWK</string>
<key>CFBundleShortVersionString</key>
<string>${formatted_ffmpeg_version}</string>
<key>CFBundleVersion</key>
<string>${formatted_ffmpeg_version}</string>
<key>CFBundleSignature</key>
<string>????</string>
<key>${minimum_version_key}</key>
<string>${MINIMUM_IOS_VERSION}</string>
<key>CFBundleSupportedPlatforms</key>
<array>
<string>${supported_platforms}</string>
</array>
<key>NSPrincipalClass</key>
<string></string>
</dict>
</plist>"
echo $info_plist | sudo tee ${file_path} 1>/dev/null
}
# Create a 'traditional' framework from the corresponding dylib.
# This includes creating a folder for it, and inserting Info.plist
# and dylib. We also patch runpaths in the dylib to match the
# frameworks directory structure.
#
# There is no command-line tool for generating .framework
# files. By inspecting .frameworks generated through Xcode, we
# have found they are primarily a directory with a very specific
# layout. The code below generates a matching layout.
#
# See https://developer.apple.com/library/archive/documentation/MacOSX/Conceptual/BPFrameworks/Frameworks.html
create_framework() {
local ffmpeg_component_name="$1"
local platform="$2"
local ffmpeg_build_path="${ffmpeg_source_dir}/build_ios/${platform}/installed/${prefix}"
local ffmpeg_component_src_dylib="${ffmpeg_build_path}/lib/${ffmpeg_component_name}.dylib"
local ffmpeg_component_framework="${ffmpeg_build_path}/framework/${ffmpeg_component_name}.framework"
local ffmpeg_component_target_dylib="${ffmpeg_component_framework}/${ffmpeg_component_name}"
# Make directory for the .framework
sudo mkdir -p "${ffmpeg_component_framework}"
# Inser the Info.plist
build_info_plist \
"${ffmpeg_component_framework}/Info.plist" \
"${ffmpeg_component_name}" \
"io.qt.ffmpegkit.${ffmpeg_component_name}"
# Copy in the dylib
sudo cp \
"${ffmpeg_component_src_dylib}" \
"${ffmpeg_component_target_dylib}"
# By default, runpaths will look for FFmpeg dependencies in
# '@rpath/libavcodec.xx.yy.dylib'. We want this path to be in the form
# '@rpath/libavcodec.framework/libavcodec.dylib'.
# Set the dylibs self-identity
sudo install_name_tool \
-id "@rpath/${ffmpeg_component_name}.framework/${ffmpeg_component_name}" \
"${ffmpeg_component_target_dylib}"
# Update the runpaths for each FFmpeg dependency entry
otool -L "$ffmpeg_component_target_dylib" \
| tail -n +2 \
| awk '{print $1}' \
| while read -r dep; do
# Go through all dependency entries of this .dylib,
# see if they point to a FFmpeg component. If it does,
# modify the entry to match the final
# directory structure.
for ffdep in $ffmpeg_components; do
if [[ "$dep" == */${ffdep}.* ]]; then
echo "Rewriting dependency: $dep -> @rpath/${ffdep}.framework/${ffdep}"
sudo install_name_tool -change \
"$dep" \
"@rpath/${ffdep}.framework/${ffdep}" \
"$ffmpeg_component_target_dylib"
fi
done
done
}
# dSYM symbols must be generated manually, these are required for
# App Store deployment. We generate them from the .dylibs inside
# our .frameworks. This has to be done after patching the runpaths.
# At the end, we strip the dylib.
create_dsym() {
local ffmpeg_component_name="$1"
local platform="$2"
local ffmpeg_build_path="${ffmpeg_source_dir}/build_ios/${platform}/installed/${prefix}"
local target_dylib="${ffmpeg_build_path}/framework/${ffmpeg_component_name}.framework/${ffmpeg_component_name}"
sudo dsymutil "${target_dylib}" \
-o "${ffmpeg_build_path}/framework/${ffmpeg_component_name}.framework.dSYM"
local target_sdk;
target_sdk=$(target_platform_to_sdk "${platform}")
local strip;
strip="$(xcrun -f --sdk ${target_sdk} strip)"
sudo ${strip} -x "${target_dylib}"
}
create_xcframework() {
# Create 'traditional' framework from the corresponding dylib,
# also creating
local framework_name="$1"
local target_platform_a="$2"
local target_platform_b="$3"
local platform_a_build="${ffmpeg_source_dir}/build_ios/${target_platform_a}/installed/${prefix}"
local fw_a="${platform_a_build}/framework/${framework_name}.framework"
local dsym_a="${fw_a}.dSYM"
local platform_b_build="${ffmpeg_source_dir}/build_ios/${target_platform_b}/installed/${prefix}"
local fw_b="${platform_b_build}/framework/${framework_name}.framework"
local dsym_b="${fw_b}.dSYM"
sudo mkdir -p "$prefix/lib/"
sudo xcodebuild -create-xcframework \
-framework "$fw_a" -debug-symbols "$dsym_a" \
-framework $fw_b -debug-symbols "$dsym_b" \
-output "${prefix}/lib/${framework_name}.xcframework"
}
build_ffmpeg_ios "arm64-iphoneos"
build_ffmpeg_ios "x86_64-simulator"
for name in $ffmpeg_components; do
create_framework "$name" "arm64-iphoneos"
create_framework "$name" "x86_64-simulator"
create_dsym "$name" "arm64-iphoneos"
create_dsym "$name" "x86_64-simulator"
done
# Create corresponding xcframeworks containing both arm64 and x86_64-simulator frameworks:
for name in $ffmpeg_components; do
create_xcframework "$name" "arm64-iphoneos" "x86_64-simulator"
done
# xcframeworks are already installed directly into the target output directory.
# We need to install headers
sudo cp -r "${ffmpeg_source_dir}/build_ios/arm64-iphoneos/installed/${prefix}/include" "$prefix"
set_ffmpeg_dir_env_var "FFMPEG_DIR_IOS" "$prefix"

View File

@@ -19,7 +19,7 @@ class Libiodbc < Formula
def install def install
if build.with? "universal" if build.with? "universal"
ENV['CFLAGS'] = '-O -arch arm64 -arch x86_64 -mmacosx-version-min=10.9' ENV['CFLAGS'] = '-O -arch arm64 -arch x86_64 -mmacosx-version-min=10.9 -std=gnu89'
end end
system "./autogen.sh" system "./autogen.sh"
system "./configure", "--disable-dependency-tracking", "--prefix=#{prefix}" system "./configure", "--disable-dependency-tracking", "--prefix=#{prefix}"

View File

@@ -4,4 +4,5 @@ ntia-conformance-checker ; python_version >= '3.9'
sbomaudit ; python_version >= '3.9' sbomaudit ; python_version >= '3.9'
sbom2doc ; python_version >= '3.9' sbom2doc ; python_version >= '3.9'
reuse<=5.1.1 ; python_version >= '3.9' reuse<=5.1.1 ; python_version >= '3.9'
cyclonedx-python-lib==11.0.0 ; python_version >= '3.9' cyclonedx-python-lib==11.5.0 ; python_version >= '3.9'
jsonschema>=4.20 ; python_version >= '3.12'

View File

@@ -24,43 +24,46 @@ assert_envvar_is_populated_dir() {
} }
build_ffmpeg_android() { build_ffmpeg_android() {
local target_arch=$1 local target_dir=$1
local target_dir=$2 local ndk_root=$2
local ndk_root=$3 local openssl_android_path=$3
local openssl_android_path=$4
sudo mkdir -p "$target_dir" sudo mkdir -p "$target_dir"
local openssl_include="$openssl_android_path/include" local openssl_include="$openssl_android_path/include"
local target_arch
local openssl_libs local openssl_libs
local libs_prefix local libs_prefix
local target_cpu local target_cpu
local target_toolchain_arch local target_toolchain_arch
if [ "$target_arch" == "x86_64" ]; then if [ "$os" == "android-x86" ]; then
target_toolchain_arch="x86_64-linux-android"
target_arch=x86_64
target_cpu=x86-64
openssl_libs="$openssl_android_path/x86_64"
libs_prefix="_x86_64"
elif [ "$target_arch" == "x86" ]; then
target_toolchain_arch="i686-linux-android" target_toolchain_arch="i686-linux-android"
target_arch=x86 target_arch=x86
target_cpu=i686 target_cpu=i686
openssl_libs="$openssl_android_path/x86" openssl_libs="$openssl_android_path/x86"
libs_prefix="_x86" libs_prefix="_x86"
elif [ "$target_arch" == "arm32" ]; then elif [ "$os" == "android-x86_64" ]; then
target_toolchain_arch="x86_64-linux-android"
target_arch=x86_64
target_cpu=x86-64
openssl_libs="$openssl_android_path/x86_64"
libs_prefix="_x86_64"
elif [ "$os" == "android-arm32" ]; then
target_toolchain_arch="armv7a-linux-androideabi" target_toolchain_arch="armv7a-linux-androideabi"
target_arch=arm target_arch=arm
target_cpu=armv7-a target_cpu=armv7-a
openssl_libs="$openssl_android_path/armeabi-v7a" openssl_libs="$openssl_android_path/armeabi-v7a"
libs_prefix="_arm32-v7a" libs_prefix="_arm32-v7a"
elif [ "$target_arch" == "arm64" ]; then elif [ "$os" == "android-arm64" ]; then
target_toolchain_arch="aarch64-linux-android" target_toolchain_arch="aarch64-linux-android"
target_arch=aarch64 target_arch=aarch64
target_cpu=armv8-a target_cpu=armv8-a
openssl_libs="$openssl_android_path/arm64-v8a" openssl_libs="$openssl_android_path/arm64-v8a"
libs_prefix="_arm64-v8a" libs_prefix="_arm64-v8a"
else
>&2 echo "Unhandled android os param: $os"
exit 1
fi fi
ln -Ffs "${openssl_libs}/libcrypto_3.so" "${openssl_libs}/libcrypto.so" ln -Ffs "${openssl_libs}/libcrypto_3.so" "${openssl_libs}/libcrypto.so"
@@ -127,28 +130,24 @@ build_ffmpeg_android() {
} }
if [ "$os" == "android-x86" ]; then if [ "$os" == "android-x86" ]; then
target_arch=x86
target_dir="/usr/local/android/ffmpeg-x86" target_dir="/usr/local/android/ffmpeg-x86"
envvar_latest="FFMPEG_DIR_ANDROID_X86_NDK_LATEST" envvar_latest="FFMPEG_DIR_ANDROID_X86_NDK_LATEST"
envvar_nightly1="FFMPEG_DIR_ANDROID_X86_NDK_NIGHTLY1" envvar_nightly1="FFMPEG_DIR_ANDROID_X86_NDK_NIGHTLY1"
envvar_nightly2="FFMPEG_DIR_ANDROID_X86_NDK_NIGHTLY2" envvar_nightly2="FFMPEG_DIR_ANDROID_X86_NDK_NIGHTLY2"
envvar_preview="FFMPEG_DIR_ANDROID_X86_NDK_PREVIEW" envvar_preview="FFMPEG_DIR_ANDROID_X86_NDK_PREVIEW"
elif [ "$os" == "android-x86_64" ]; then elif [ "$os" == "android-x86_64" ]; then
target_arch=x86_64
target_dir="/usr/local/android/ffmpeg-x86_64" target_dir="/usr/local/android/ffmpeg-x86_64"
envvar_latest="FFMPEG_DIR_ANDROID_X86_64_NDK_LATEST" envvar_latest="FFMPEG_DIR_ANDROID_X86_64_NDK_LATEST"
envvar_nightly1="FFMPEG_DIR_ANDROID_X86_64_NDK_NIGHTLY1" envvar_nightly1="FFMPEG_DIR_ANDROID_X86_64_NDK_NIGHTLY1"
envvar_nightly2="FFMPEG_DIR_ANDROID_X86_64_NDK_NIGHTLY2" envvar_nightly2="FFMPEG_DIR_ANDROID_X86_64_NDK_NIGHTLY2"
envvar_preview="FFMPEG_DIR_ANDROID_X86_64_NDK_PREVIEW" envvar_preview="FFMPEG_DIR_ANDROID_X86_64_NDK_PREVIEW"
elif [ "$os" == "android-arm32" ]; then elif [ "$os" == "android-arm32" ]; then
target_arch=arm32
target_dir="/usr/local/android/ffmpeg-arm32" target_dir="/usr/local/android/ffmpeg-arm32"
envvar_latest="FFMPEG_DIR_ANDROID_ARM32_NDK_LATEST" envvar_latest="FFMPEG_DIR_ANDROID_ARM32_NDK_LATEST"
envvar_nightly1="FFMPEG_DIR_ANDROID_ARM32_NDK_NIGHTLY1" envvar_nightly1="FFMPEG_DIR_ANDROID_ARM32_NDK_NIGHTLY1"
envvar_nightly2="FFMPEG_DIR_ANDROID_ARM32_NDK_NIGHTLY2" envvar_nightly2="FFMPEG_DIR_ANDROID_ARM32_NDK_NIGHTLY2"
envvar_preview="FFMPEG_DIR_ANDROID_ARM32_NDK_PREVIEW" envvar_preview="FFMPEG_DIR_ANDROID_ARM32_NDK_PREVIEW"
elif [ "$os" == "android-arm64" ]; then elif [ "$os" == "android-arm64" ]; then
target_arch=arm64
target_dir="/usr/local/android/ffmpeg-arm64" target_dir="/usr/local/android/ffmpeg-arm64"
envvar_latest="FFMPEG_DIR_ANDROID_ARM64_NDK_LATEST" envvar_latest="FFMPEG_DIR_ANDROID_ARM64_NDK_LATEST"
envvar_nightly1="FFMPEG_DIR_ANDROID_ARM64_NDK_NIGHTLY1" envvar_nightly1="FFMPEG_DIR_ANDROID_ARM64_NDK_NIGHTLY1"
@@ -166,26 +165,26 @@ fi
assert_envvar_is_populated_dir "ANDROID_NDK_ROOT_LATEST" assert_envvar_is_populated_dir "ANDROID_NDK_ROOT_LATEST"
assert_envvar_is_populated_dir "OPENSSL_ANDROID_HOME_LATEST" assert_envvar_is_populated_dir "OPENSSL_ANDROID_HOME_LATEST"
build_ffmpeg_android "$target_arch" "$target_dir/latest" "$ANDROID_NDK_ROOT_LATEST" "$OPENSSL_ANDROID_HOME_LATEST" build_ffmpeg_android "$target_dir/latest" "$ANDROID_NDK_ROOT_LATEST" "$OPENSSL_ANDROID_HOME_LATEST"
set_ffmpeg_dir_env_var "$envvar_latest" "$target_dir/latest" set_ffmpeg_dir_env_var "$envvar_latest" "$target_dir/latest"
if [ "${ANDROID_NDK_ROOT_PREVIEW}" ]; then if [ "${ANDROID_NDK_ROOT_PREVIEW}" ]; then
assert_envvar_is_populated_dir "ANDROID_NDK_ROOT_PREVIEW" assert_envvar_is_populated_dir "ANDROID_NDK_ROOT_PREVIEW"
assert_envvar_is_populated_dir "OPENSSL_ANDROID_HOME_PREVIEW" assert_envvar_is_populated_dir "OPENSSL_ANDROID_HOME_PREVIEW"
build_ffmpeg_android "$target_arch" "$target_dir/preview" "$ANDROID_NDK_ROOT_PREVIEW" "$OPENSSL_ANDROID_HOME_PREVIEW" build_ffmpeg_android "$target_dir/preview" "$ANDROID_NDK_ROOT_PREVIEW" "$OPENSSL_ANDROID_HOME_PREVIEW"
set_ffmpeg_dir_env_var "$envvar_preview" "$target_dir/preview" set_ffmpeg_dir_env_var "$envvar_preview" "$target_dir/preview"
fi fi
if [ "${ANDROID_NDK_ROOT_NIGHTLY1}" ]; then if [ "${ANDROID_NDK_ROOT_NIGHTLY1}" ]; then
assert_envvar_is_populated_dir "ANDROID_NDK_ROOT_NIGHTLY1" assert_envvar_is_populated_dir "ANDROID_NDK_ROOT_NIGHTLY1"
assert_envvar_is_populated_dir "OPENSSL_ANDROID_HOME_NIGHTLY1" assert_envvar_is_populated_dir "OPENSSL_ANDROID_HOME_NIGHTLY1"
build_ffmpeg_android "$target_arch" "$target_dir/nightly1" "$ANDROID_NDK_ROOT_NIGHTLY1" "$OPENSSL_ANDROID_HOME_NIGHTLY1" build_ffmpeg_android "$target_dir/nightly1" "$ANDROID_NDK_ROOT_NIGHTLY1" "$OPENSSL_ANDROID_HOME_NIGHTLY1"
set_ffmpeg_dir_env_var "$envvar_nightly1" "$target_dir/nightly1" set_ffmpeg_dir_env_var "$envvar_nightly1" "$target_dir/nightly1"
fi fi
if [ "${ANDROID_NDK_ROOT_NIGHTLY2}" ]; then if [ "${ANDROID_NDK_ROOT_NIGHTLY2}" ]; then
assert_envvar_is_populated_dir "ANDROID_NDK_ROOT_NIGHTLY2" assert_envvar_is_populated_dir "ANDROID_NDK_ROOT_NIGHTLY2"
assert_envvar_is_populated_dir "OPENSSL_ANDROID_HOME_NIGHTLY2" assert_envvar_is_populated_dir "OPENSSL_ANDROID_HOME_NIGHTLY2"
build_ffmpeg_android "$target_arch" "$target_dir/nightly2" "$ANDROID_NDK_ROOT_NIGHTLY2" "$OPENSSL_ANDROID_HOME_NIGHTLY2" build_ffmpeg_android "$target_dir/nightly2" "$ANDROID_NDK_ROOT_NIGHTLY2" "$OPENSSL_ANDROID_HOME_NIGHTLY2"
set_ffmpeg_dir_env_var "$envvar_nightly2" "$target_dir/nightly2" set_ffmpeg_dir_env_var "$envvar_nightly2" "$target_dir/nightly2"
fi fi

View File

@@ -1,187 +0,0 @@
#!/usr/bin/env bash
# Copyright (C) 2024 The Qt Company Ltd.
# SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only
# This script will build and install FFmpeg static libs
# Can take an optional final parameter to control installation directory
set -ex
# Must match or be lower than the minimum iOS version supported by the version of Qt that is
# is currently being built.
readonly MINIMUM_IOS_VERSION="16.0"
source "${BASH_SOURCE%/*}/../unix/ffmpeg-installation-utils.sh"
ffmpeg_version=$(ffmpeg_version_default)
ffmpeg_source_dir=$(download_ffmpeg)
ffmpeg_config_options=$(get_ffmpeg_config_options "shared")
default_prefix="/usr/local/ios/ffmpeg"
prefix="${1:-$default_prefix}"
dylib_regex="^@rpath/.*\.dylib$"
build_ffmpeg_ios() {
local target_platform=$1
local target_cpu_arch=""
if [ "$target_platform" == "arm64-simulator" ]; then
target_sdk="iphonesimulator"
target_cpu_arch="arm64"
minos="-mios-simulator-version-min=$MINIMUM_IOS_VERSION"
elif [ "$target_platform" == "x86_64-simulator" ]; then
target_sdk="iphonesimulator"
target_cpu_arch="x86_64"
minos="-mios-simulator-version-min=$MINIMUM_IOS_VERSION"
elif [ "$target_platform" == "arm64-iphoneos" ]; then
target_sdk="iphoneos"
target_cpu_arch="arm64"
minos="-miphoneos-version-min=$MINIMUM_IOS_VERSION"
else
echo "Error when building FFmpeg for iOS. Unknown parameter given for target_platform: '${target_platform}'"
exit 1
fi
local build_dir="$ffmpeg_source_dir/build_ios/$target_platform"
sudo mkdir -p "$build_dir"
pushd "$build_dir"
# shellcheck disable=SC2086
sudo "$ffmpeg_source_dir/configure" $ffmpeg_config_options \
--sysroot="$(xcrun --sdk "$target_sdk" --show-sdk-path)" \
--enable-cross-compile \
--enable-optimizations \
--prefix=$prefix \
--arch=$target_cpu_arch \
--cc="xcrun --sdk ${target_sdk} clang -arch $target_cpu_arch" \
--cxx="xcrun --sdk ${target_sdk} clang++ -arch $target_cpu_arch" \
--target-os=darwin \
--extra-cflags="$minos" \
--extra-cxxflags="$minos" \
--extra-objcflags="$minos" \
--extra-ldflags="$minos" \
--enable-shared \
--disable-static \
--install-name-dir='@rpath' \
--disable-audiotoolbox
sudo make install DESTDIR="$build_dir/installed" -j4
popd
}
build_info_plist() {
local file_path="$1"
local framework_name="$2"
local framework_id="$3"
# Apple plist format has a strict requirement that the version string
# contains up to 3 numerics separated by a dot. Meanwhile, FFmpeg versioning
# tends to use an 'n' prefix in their versioning. We use a regex to convert
# and verify the version string.
#
# https://developer.apple.com/documentation/bundleresources/information-property-list/cfbundleversion
local formatted_ffmpeg_version
if [[ $ffmpeg_version =~ ([0-9]+(\.[0-9]+){0,2}) ]]; then
formatted_ffmpeg_version="${BASH_REMATCH[1]}"
else
echo "Unable to format FFmpeg version string '$ffmpeg_version' into corresponding Apple Info.plist format"
exit 1
fi
local minimum_version_key="MinimumOSVersion"
local supported_platforms="iPhoneOS"
info_plist="<?xml version=\"1.0\" encoding=\"UTF-8\"?>
<!DOCTYPE plist PUBLIC \"-//Apple//DTD PLIST 1.0//EN\" \"http://www.apple.com/DTDs/PropertyList-1.0.dtd\">
<plist version=\"1.0\">
<dict>
<key>CFBundleDevelopmentRegion</key>
<string>en</string>
<key>CFBundleExecutable</key>
<string>${framework_name}</string>
<key>CFBundleIdentifier</key>
<string>${framework_id}</string>
<key>CFBundleInfoDictionaryVersion</key>
<string>6.0</string>
<key>CFBundleName</key>
<string>${framework_name}</string>
<key>CFBundlePackageType</key>
<string>FMWK</string>
<key>CFBundleShortVersionString</key>
<string>${formatted_ffmpeg_version}</string>
<key>CFBundleVersion</key>
<string>${formatted_ffmpeg_version}</string>
<key>CFBundleSignature</key>
<string>????</string>
<key>${minimum_version_key}</key>
<string>${MINIMUM_IOS_VERSION}</string>
<key>CFBundleSupportedPlatforms</key>
<array>
<string>${supported_platforms}</string>
</array>
<key>NSPrincipalClass</key>
<string></string>
</dict>
</plist>"
echo $info_plist | sudo tee ${file_path} 1>/dev/null
}
create_framework() {
# Create a 'traditional' framework from the corresponding dylib.
local framework_name="$1"
local platform="$2" # For now it's either arm64, x86_64-simulator, see below.
local ffmpeg_library_path="$ffmpeg_source_dir/build_ios/${platform}/installed$prefix"
local framework_complete_path="${ffmpeg_library_path}/framework/${framework_name}.framework/${framework_name}"
sudo mkdir -p "${ffmpeg_library_path}/framework/${framework_name}.framework"
sudo cp "${ffmpeg_library_path}/lib/${framework_name}.dylib" "${ffmpeg_library_path}/framework/${framework_name}.framework/${framework_name}"
# Fix LC_ID_DYLIB (to be libavcodec.framework/libavcodec instead of @rpath/libavcodec.xx.yy.dylib
sudo install_name_tool -id @rpath/${framework_name}.framework/${framework_name} "${framework_complete_path}"
build_info_plist "${ffmpeg_library_path}/framework/${framework_name}.framework/Info.plist" "${framework_name}" "io.qt.ffmpegkit."${framework_name}
# Fix all FFmpeg-related LC_LOAD_DYLIB, similar to how we fixed LC_ID_DYLIB above:
otool -L "$framework_complete_path" | awk '/\t/ {print $1}' | egrep "$dylib_regex" | while read -r dependency_path; do
found_name=$(tmp=${dependency_path/*\/}; echo ${tmp/\.*})
if [ "$found_name" != "$framework_name" ]
then
sudo install_name_tool -change "$dependency_path" @rpath/${found_name}.framework/${found_name} "${framework_complete_path}"
fi
done
#sudo mkdir -p "$prefix/framework/"
#sudo cp -r "${ffmpeg_library_path}/framework/${framework_name}.framework" "$prefix/framework/"
}
create_xcframework() {
# Create 'traditional' framework from the corresponding dylib,
# also creating
local framework_name="$1"
local target_platform_a="$2"
local target_platform_b="$3"
local fw_a="$ffmpeg_source_dir/build_ios/${target_platform_a}/installed$prefix/framework/${framework_name}.framework"
local fw_b="$ffmpeg_source_dir/build_ios/${target_platform_b}/installed$prefix/framework/${framework_name}.framework"
sudo mkdir -p "$prefix/lib/"
sudo xcodebuild -create-xcframework -framework $fw_a -framework $fw_b -output "${prefix}/lib/${framework_name}.xcframework"
}
build_ffmpeg_ios "x86_64-simulator"
build_ffmpeg_ios "arm64-iphoneos"
ffmpeg_libs="libavcodec libavformat libavutil libswresample libswscale"
for name in $ffmpeg_libs; do
create_framework $name "arm64-iphoneos"
create_framework $name "x86_64-simulator"
done
# Create corresponding (xc)frameworks containing both arm64 and arm64-simulator frameworks:
for name in $ffmpeg_libs; do
create_xcframework $name "arm64-iphoneos" "x86_64-simulator"
done
# xcframeworks are already installed directly into the target output directory.
# We need to install headers
sudo cp -r "$ffmpeg_source_dir/build_ios/arm64-iphoneos/installed$prefix/include" $prefix
set_ffmpeg_dir_env_var "FFMPEG_DIR_IOS" $prefix

View File

@@ -63,6 +63,7 @@ cmake "$targetDir" -G"Ninja Multi-Config" \
-DCMAKE_POSITION_INDEPENDENT_CODE=ON \ -DCMAKE_POSITION_INDEPENDENT_CODE=ON \
-DCMAKE_CONFIGURATION_TYPES="Release;Debug;RelWithDebugInfo" \ -DCMAKE_CONFIGURATION_TYPES="Release;Debug;RelWithDebugInfo" \
-DCMAKE_INSTALL_PREFIX="$installPrefix" \ -DCMAKE_INSTALL_PREFIX="$installPrefix" \
-DCMAKE_POLICY_VERSION_MINIMUM=3.5 \
"${extraCMakeArgs[@]}" \ "${extraCMakeArgs[@]}" \
"$extraOpenSslArg" \ "$extraOpenSslArg" \
-DgRPC_BUILD_TESTS=OFF \ -DgRPC_BUILD_TESTS=OFF \

View File

@@ -16,6 +16,7 @@ source "${BASH_SOURCE%/*}/SetEnvVar.sh"
# shellcheck source=./DownloadURL.sh # shellcheck source=./DownloadURL.sh
source "${BASH_SOURCE%/*}/DownloadURL.sh" source "${BASH_SOURCE%/*}/DownloadURL.sh"
zswitch=$1 # Since 7z 25.01 multi-hop symbolic links are restricted with -snl switch levels
version="20.1.3" version="20.1.3"
baseUrl="https://download.qt.io/development_releases/prebuilt/libclang" baseUrl="https://download.qt.io/development_releases/prebuilt/libclang"
cachedUrl="http://ci-files01-hki.ci.qt.io/input/libclang/dynamic" cachedUrl="http://ci-files01-hki.ci.qt.io/input/libclang/dynamic"
@@ -40,7 +41,7 @@ DownloadURL "$url_cached" "$url" "$sha1" "$zip"
if command -v 7zr &> /dev/null; then if command -v 7zr &> /dev/null; then
sudo 7zr x $zip -o/usr/local/ sudo 7zr x $zip -o/usr/local/
else else
sudo 7z x $zip -o/usr/local/ sudo 7z x $zswitch $zip -o/usr/local/
fi fi
sudo mv /usr/local/libclang "$destination" sudo mv /usr/local/libclang "$destination"
rm -rf $zip rm -rf $zip

View File

@@ -20,6 +20,7 @@ PROVISIONING_DIR="$(dirname "$0")/../../"
# shellcheck source=./common.sourced.sh # shellcheck source=./common.sourced.sh
source "$PROVISIONING_DIR"/common/unix/common.sourced.sh source "$PROVISIONING_DIR"/common/unix/common.sourced.sh
zswitch=$1 # Since 7z 25.01 multi-hop symbolic links are restricted with -snl switch levels
libclang_version="20.1.0" libclang_version="20.1.0"
if uname -a |grep -q Darwin; then if uname -a |grep -q Darwin; then
@@ -61,7 +62,7 @@ DownloadURL $url_cached $url $sha1 $zip
if command -v 7zr &> /dev/null; then if command -v 7zr &> /dev/null; then
sudo 7zr x $zip -o/usr/local/ sudo 7zr x $zip -o/usr/local/
else else
sudo 7z x $zip -o/usr/local/ sudo 7z x $zswitch $zip -o/usr/local/
fi fi
sudo mv /usr/local/libclang "$destination" sudo mv /usr/local/libclang "$destination"
rm -rf $zip rm -rf $zip

View File

@@ -5,26 +5,32 @@
# This script install prebuilt OpenSSL which was built against Android NDK 25. # This script install prebuilt OpenSSL which was built against Android NDK 25.
# OpenSSL build will fail with Android NDK 22, because it's missing platforms and sysroot directories # OpenSSL build will fail with Android NDK 22, because it's missing platforms and sysroot directories
set -ex set -eux
# shellcheck source=../unix/DownloadURL.sh # shellcheck source=../unix/DownloadURL.sh
source "${BASH_SOURCE%/*}/../unix/DownloadURL.sh" source "${BASH_SOURCE%/*}/../unix/DownloadURL.sh"
# shellcheck source=../unix/SetEnvVar.sh # shellcheck source=../unix/SetEnvVar.sh
source "${BASH_SOURCE%/*}/../unix/SetEnvVar.sh" source "${BASH_SOURCE%/*}/../unix/SetEnvVar.sh"
outputPathBase="${HOME}"
sslVersionForLatest="3.0.7" sslVersionForLatest="3.0.7"
ndkVersionLatest="r27c" ndkVersionLatest="r27c"
featureSuffixLatest="_16kb"
prebuiltOpensslShaLatest="2cc15dd990460c2c7157ab257a47071fbd9e0ac8" prebuiltOpensslShaLatest="2cc15dd990460c2c7157ab257a47071fbd9e0ac8"
sslVersionForPreview="3.0.7" sslVersionForPreview="3.0.7"
ndkVersionPreview="r29-beta2" ndkVersionPreview="r29-beta2"
featureSuffixPreview="_16kb"
prebuiltOpensslShaPreview="76c9788216440111be97ea1a63c4d8cd807baacd" prebuiltOpensslShaPreview="76c9788216440111be97ea1a63c4d8cd807baacd"
ndkVersionNightly1=$ndkVersionLatest ndkVersionNightly1=$ndkVersionLatest
sslVersionForNightly1=$sslVersionForLatest sslVersionForNightly1=$sslVersionForLatest
featureSuffixNightly1=""
prebuiltOpensslShaNightly1=$prebuiltOpensslShaLatest prebuiltOpensslShaNightly1=$prebuiltOpensslShaLatest
ndkVersionNightly2=$ndkVersionLatest ndkVersionNightly2=$ndkVersionLatest
sslVersionForNightly2=$sslVersionForLatest sslVersionForNightly2=$sslVersionForLatest
featureSuffixNightly2=""
prebuiltOpensslShaNightly2=$prebuiltOpensslShaLatest prebuiltOpensslShaNightly2=$prebuiltOpensslShaLatest
: <<'EOB' SOURCE BUILD INSTRUCTIONS - Openssl prebuilt was made using Android NDK r29-beta2 : <<'EOB' SOURCE BUILD INSTRUCTIONS - Openssl prebuilt was made using Android NDK r29-beta2
@@ -59,41 +65,110 @@ PATH=$TOOLCHAIN:$PATH CC=clang ./Configure android-arm
PATH=$TOOLCHAIN:$PATH CC=clang make build_generated PATH=$TOOLCHAIN:$PATH CC=clang make build_generated
EOB EOB
function BuildOutputPath() {
local ndkVersion="$1"
local suffix="$2"
local sslVersion="$3"
echo "${outputPathBase}/prebuilt-openssl-${sslVersion}-for-android-ndk-${ndkVersion}${suffix}"
}
function InstallPrebuiltOpenssl() { function InstallPrebuiltOpenssl() {
local ndkVersion="$1"
local suffix="$2"
local sha="$3"
local sslVersion="$4"
local output_dir="$5"
ndkVersion=$1 local prebuiltUrl="http://ci-files01-hki.ci.qt.io/input/openssl/prebuilt-openssl-${sslVersion}-for-android-ndk-${ndkVersion}${suffix}.zip"
sha=$2 local targetFile="/tmp/prebuilt-openssl-${sslVersion}-for-android-ndk-${ndkVersion}${suffix}.zip"
sslVersion=$3
opensslHome="${HOME}/prebuilt-openssl-${sslVersion}-for-android-ndk-${ndkVersion}_16kb" DownloadURL "$prebuiltUrl" "$prebuiltUrl" "$sha" "$targetFile"
if [[ ! -d ${opensslHome} ]]; then
prebuiltUrl="http://ci-files01-hki.ci.qt.io/input/openssl/prebuilt-openssl-${sslVersion}-for-android-ndk-${ndkVersion}_16kb.zip"
targetFile="/tmp/prebuilt-openssl-${sslVersion}-for-android-ndk-${ndkVersion}_16kb.zip"
DownloadURL "$prebuiltUrl" "$prebuiltUrl" "$sha" "$targetFile" local tmp_extract
unzip -o "$targetFile" -d "${HOME}" tmp_extract="$(mktemp -d "${TMPDIR:-/tmp}/openssl-extract.XXXXXX")"
sudo rm -f "$targetFile" unzip -q -o "$targetFile" -d "$tmp_extract"
rm -f "$targetFile"
# We assume there is only one top-level directory in the openssl zip
local temp_openssl_root
temp_openssl_root="$(find "$tmp_extract" -mindepth 1 -maxdepth 1 -type d | head -n 1)"
if [[ -z "$temp_openssl_root" ]]; then
echo "ERROR: Expected a single top-level directory in the archive, but none was found." >&2
exit 1
fi fi
mv "$temp_openssl_root" "$output_dir"
rm -rf "$tmp_extract"
# There have been cases where necessary symlinks are lost when unarchiving.
# Force-create them now.
local abi_list="arm64-v8a armeabi-v7a x86 x86_64"
for abi in $abi_list; do
ln -fs "${output_dir}/include" "${output_dir}/${abi}/include"
ln -fs "${output_dir}/${abi}/libcrypto_3.so" "${output_dir}/${abi}/libcrypto.so"
ln -fs "${output_dir}/${abi}/libssl_3.so" "${output_dir}/${abi}/libssl.so"
done
} }
if [ "$ndkVersionNightly1" != "$ndkVersionLatest" ]; then if [ "$ndkVersionNightly1" != "$ndkVersionLatest" ]; then
InstallPrebuiltOpenssl $ndkVersionNightly1 $prebuiltOpensslShaNightly1 $sslVersionForNightly1 outputDirNightly1=$(BuildOutputPath \
SetEnvVar "OPENSSL_ANDROID_HOME_NIGHTLY1" "$opensslHome" "$ndkVersionNightly1" \
echo "OpenSSL for Android $ndkVersionNightly1 = $sslVersionForNightly1" >> ~/versions.txt "$featureSuffixNightly1" \
"$sslVersionForNightly1")
InstallPrebuiltOpenssl \
"$ndkVersionNightly1" \
"$featureSuffixNightly1" \
"$prebuiltOpensslShaNightly1" \
"$sslVersionForNightly1" \
"$outputDirNightly1"
SetEnvVar "OPENSSL_ANDROID_HOME_NIGHTLY1" "$outputDirNightly1"
echo "OpenSSL for Android ${ndkVersionNightly1} = ${sslVersionForNightly1}" >> ~/versions.txt
fi fi
if [ "$ndkVersionNightly2" != "$ndkVersionLatest" ]; then if [ "$ndkVersionNightly2" != "$ndkVersionLatest" ]; then
InstallPrebuiltOpenssl $ndkVersionNightly2 $prebuiltOpensslShaNightly2 $sslVersionForNightly2 outputDirNightly2=$(BuildOutputPath \
SetEnvVar "OPENSSL_ANDROID_HOME_NIGHTLY2" "$opensslHome" "$ndkVersionNightly2" \
echo "OpenSSL for Android $ndkVersionNightly2 = $sslVersionForNightly2" >> ~/versions.txt "$featureSuffixNightly2" \
"$sslVersionForNightly2")
InstallPrebuiltOpenssl \
"$ndkVersionNightly2" \
"$featureSuffixNightly2" \
"$prebuiltOpensslShaNightly2" \
"$sslVersionForNightly2" \
"$outputDirNightly2"
SetEnvVar "OPENSSL_ANDROID_HOME_NIGHTLY1" "$outputDirNightly2"
echo "OpenSSL for Android ${ndkVersionNightly2} = ${sslVersionForNightly2}" >> ~/versions.txt
fi fi
if [ "$ndkVersionPreview" != "$ndkVersionLatest" ]; then if [ "$ndkVersionPreview" != "$ndkVersionLatest" ]; then
InstallPrebuiltOpenssl $ndkVersionPreview $prebuiltOpensslShaPreview $sslVersionForPreview outputDirPreview="$(BuildOutputPath \
SetEnvVar "OPENSSL_ANDROID_HOME_PREVIEW" "$opensslHome" "$ndkVersionPreview" \
echo "OpenSSL for Android $ndkVersionPreview = $sslVersionForPreview" >> ~/versions.txt "$featureSuffixPreview" \
"$sslVersionForPreview")"
InstallPrebuiltOpenssl \
"$ndkVersionPreview" \
"$featureSuffixPreview" \
"$prebuiltOpensslShaPreview" \
"$sslVersionForPreview" \
"$outputDirPreview"
SetEnvVar "OPENSSL_ANDROID_HOME_PREVIEW" "$outputDirPreview"
echo "OpenSSL for Android ${ndkVersionPreview} = ${sslVersionForPreview}" >> ~/versions.txt
fi fi
InstallPrebuiltOpenssl $ndkVersionLatest $prebuiltOpensslShaLatest $sslVersionForLatest outputDirLatest="$(BuildOutputPath \
SetEnvVar "OPENSSL_ANDROID_HOME_LATEST" "$opensslHome" "$ndkVersionLatest" \
echo "OpenSSL for Android $ndkVersionLatest = $sslVersionForLatest" >> ~/versions.txt "$featureSuffixLatest" \
"$sslVersionForLatest")"
InstallPrebuiltOpenssl \
"$ndkVersionLatest" \
"$featureSuffixLatest" \
"$prebuiltOpensslShaLatest" \
"$sslVersionForLatest" \
"$outputDirLatest"
SetEnvVar "OPENSSL_ANDROID_HOME_LATEST" "$outputDirLatest"
echo "OpenSSL for Android ${ndkVersionLatest} = ${sslVersionForLatest}" >> ~/versions.txt

View File

@@ -10,7 +10,7 @@ $sdkChecksumSha1 = "8fe98c00fde0f524760bb9021f438bd7d9304a69"
$package_path = "C:\Windows\Temp\$package" $package_path = "C:\Windows\Temp\$package"
Download $officialUrl $cachedUrl $package_path Download $officialUrl $cachedUrl $package_path
Verify-Checksum $package_path $sdkChecksumSha1 sha1 Verify-Checksum $package_path $sdkChecksumSha1
Write-Host "Installing DirectX SDK" Write-Host "Installing DirectX SDK"
Run-Executable $package_path "/u" Run-Executable $package_path "/u"

View File

@@ -49,6 +49,7 @@ function build-install-grpc {
"-DgRPC_SSL_PROVIDER=package" "-DgRPC_SSL_PROVIDER=package"
# protobuf # protobuf
"-DProtobuf_USE_STATIC_LIBS=ON" "-DProtobuf_USE_STATIC_LIBS=ON"
"-DCMAKE_POLICY_VERSION_MINIMUM=3.5"
"-DCMAKE_PREFIX_PATH=$protobufRoot" "-DCMAKE_PREFIX_PATH=$protobufRoot"
) )
cmake .. -G"Ninja Multi-Config" -DCMAKE_CONFIGURATION_TYPES="$BuildType" -DCMAKE_INSTALL_PREFIX="$installPath" $extraCMakeArgs $configureOptions cmake .. -G"Ninja Multi-Config" -DCMAKE_CONFIGURATION_TYPES="$BuildType" -DCMAKE_INSTALL_PREFIX="$installPath" $extraCMakeArgs $configureOptions

View File

@@ -2,16 +2,20 @@ function Verify-Checksum
{ {
Param ( Param (
[string]$File=$(throw("You must specify a filename to get the checksum of.")), [string]$File=$(throw("You must specify a filename to get the checksum of.")),
[string]$Expected=$(throw("Checksum required")), [string]$Expected=$(throw("Checksum required"))
[ValidateSet("sha256","sha1","md5")][string]$Algorithm="sha1"
) )
switch ($Expected.Length) {
40 { $Algorithm = "SHA1" }
64 { $Algorithm = "SHA256" }
default { throw "Unknown hash length for: $Expected" }
}
Write-Host "Verifying checksum of $File" Write-Host "Verifying checksum of $File"
$fs = new-object System.IO.FileStream $File, "Open" $fs = new-object System.IO.FileStream $File, "Open"
$algo = [type]"System.Security.Cryptography.$Algorithm" $algo = [type]"System.Security.Cryptography.$Algorithm"
$crypto = $algo::Create() $crypto = $algo::Create()
$hash = [BitConverter]::ToString($crypto.ComputeHash($fs)).Replace("-", "") $hash = [BitConverter]::ToString($crypto.ComputeHash($fs)).Replace("-", "")
$fs.Close() $fs.Close()
if ($hash -ne $Expected) { if ($hash -ine $Expected) {
throw "Checksum verification failed, got: '$hash' expected: '$Expected'" throw "Checksum verification failed, got: '$hash' expected: '$Expected'"
} }
} }

View File

@@ -271,10 +271,16 @@ function InstallAndroidArmv7 {
$patchelf_sources = "https://ci-files01-hki.ci.qt.io/input/android/patchelf/0.17.2.tar.gz" $patchelf_sources = "https://ci-files01-hki.ci.qt.io/input/android/patchelf/0.17.2.tar.gz"
$patchelf_download_location = "C:\Windows\Temp\0.17.2.tar.gz" $patchelf_download_location = "C:\Windows\Temp\0.17.2.tar.gz"
Invoke-WebRequest -UseBasicParsing $patchelf_sources -OutFile $patchelf_download_location try {
Verify-Checksum $patchelf_download_location $patchelf_sha1 Invoke-WebRequest -UseBasicParsing $patchelf_sources -OutFile $patchelf_download_location
Extract-tar_gz $patchelf_download_location $unzip_location Verify-Checksum $patchelf_download_location $patchelf_sha1
Remove $patchelf_download_location Extract-tar_gz $patchelf_download_location $unzip_location
Remove $patchelf_download_location
} catch {
Write-Host "Error grabbing sources when installing patchelf:"
Write-Host $_
return $false
}
Start-Process -NoNewWindow -Wait -PassThru -ErrorAction Stop -FilePath $msys -ArgumentList ("-lc", "`"cd C:/patchelf-0.17.2 && ./bootstrap.sh && ./configure && make install`"") Start-Process -NoNewWindow -Wait -PassThru -ErrorAction Stop -FilePath $msys -ArgumentList ("-lc", "`"cd C:/patchelf-0.17.2 && ./bootstrap.sh && ./configure && make install`"")

View File

@@ -33,7 +33,7 @@ $url_official = "https://go.dev/dl/go" + $version + ".windows-" + $arch + ".msi"
Write-Host "Fetching Go $version..." Write-Host "Fetching Go $version..."
Download $url_official $url_cache $goPackage Download $url_official $url_cache $goPackage
Verify-Checksum $goPackage $sha256 sha256 Verify-Checksum $goPackage $sha256
Write-Host "Installing Go $version..." Write-Host "Installing Go $version..."
Run-Executable "msiexec" "/quiet /i $goPackage" Run-Executable "msiexec" "/quiet /i $goPackage"
Write-Output "Go = $version" >> ~\versions.txt Write-Output "Go = $version" >> ~\versions.txt

View File

@@ -10,17 +10,17 @@ $temp = "$env:tmp"
$cpu_arch = Get-CpuArchitecture $cpu_arch = Get-CpuArchitecture
switch ($cpu_arch) { switch ($cpu_arch) {
arm64 { arm64 {
$zipPackage = "OpenSSH-ARM64" $base_file_name = "OpenSSH-ARM64"
$sha1 = "ca3e8f44a550b7ae71c8e122acd4ed905d66feb0" $sha1 = "ca3e8f44a550b7ae71c8e122acd4ed905d66feb0"
Break Break
} }
x64 { x64 {
$zipPackage = "OpenSSH-Win64" $base_file_name = "OpenSSH-Win64"
$sha1 = "1397d40d789ae0911b3cc818b9dcd9321fed529b" $sha1 = "1397d40d789ae0911b3cc818b9dcd9321fed529b"
Break Break
} }
x86 { x86 {
$zipPackage = "OpenSSH-Win32" $base_file_name = "OpenSSH-Win32"
$sha1 = "4642C62F72C108C411E27CE282A863791B63329B" $sha1 = "4642C62F72C108C411E27CE282A863791B63329B"
Break Break
} }
@@ -29,20 +29,27 @@ switch ($cpu_arch) {
} }
} }
Write-Host "Fetching $zipPackage $version..." Write-Host "Fetching $base_file_name $version..."
$url_cache = "http://ci-files01-hki.ci.qt.io/input/windows/openssh/" + $version + "/" + $zipPackage + ".zip" $url_cache = "http://ci-files01-hki.ci.qt.io/input/windows/openssh/$version/$base_file_name.zip"
$url_official = "https://github.com/PowerShell/Win32-OpenSSH/releases/download/" + $version + "/" + $zipPackage + ".zip" $url_official = "https://github.com/PowerShell/Win32-OpenSSH/releases/download/$version/$base_file_name.zip"
Download $url_official $url_cache "$temp\$zipPackage" $output_zip_file = "$temp\$base_file_name.zip"
Verify-Checksum "$temp\$zipPackage" $sha1 Download $url_official $url_cache $output_zip_file
Verify-Checksum $output_zip_file $sha1
Write-Host "Extracting the package" Write-Host "Extracting the package"
Extract-7Zip "$temp\$zipPackage" C:\"Program Files" Extract-7Zip $output_zip_file "C:\Program Files"
# We assume the incoming zip contains exactly one directory, named the same
# as the base file name of th zip.
$output_dir = "C:\Program Files\$base_file_name"
if (-not (Test-Path $output_dir -PathType Container)) {
throw "Error. Expected output directory '$output_dir' does not exist."
}
Write-Host "Installing $zipPackage $version..." Write-Host "Installing $base_file_name $version..."
$path = "C:\Program Files\" + $zipPackage + "\install-sshd.ps1" $install_script = "$output_dir\install-sshd.ps1"
# Installation done as shown at https://github.com/PowerShell/Win32-OpenSSH/wiki/Install-Win32-OpenSSH # Installation done as shown at https://github.com/PowerShell/Win32-OpenSSH/wiki/Install-Win32-OpenSSH
powershell.exe -ExecutionPolicy Bypass -File $path powershell.exe -ExecutionPolicy Bypass -File $install_script
netsh advfirewall firewall add rule name=sshd dir=in action=allow protocol=TCP localport=22 netsh advfirewall firewall add rule name=sshd dir=in action=allow protocol=TCP localport=22
net start sshd net start sshd
Set-Service sshd -StartupType Automatic Set-Service sshd -StartupType Automatic

View File

@@ -0,0 +1,46 @@
# Copyright (C) 2026 The Qt Company Ltd.
# SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only
. "$PSScriptRoot\helpers.ps1"
# This script will install Rust
$rust_version="1.92.0"
$cpu_arch = Get-CpuArchitecture
switch ($cpu_arch) {
arm64 {
$rust_arch = "aarch64"
$sha256="DBB09F213D5A9EBB3B2F4C7D65BA7C3C6CAD7D9A76927D079604020C3EA0AD5A"
Break
}
x64 {
$rust_arch = "x86_64"
$sha256="BD3FD270E92D12094151AAE3A67435B7FEF2164B10D96E99A94230929CDA09FD"
Break
}
default {
throw "Unknown architecture $cpu_arch"
}
}
$installer_name="rust-" + $rust_version + "-" + $rust_arch + "-pc-windows-msvc.msi"
$url_cache = "\\ci-files01-hki.ci.qt.io\provisioning\windows\" + $installer_name
$url_official = "https://static.rust-lang.org/dist/" + $installer_name
$tmp_package = "C:\Windows\Temp\" + $installer_name
Download $url_official $url_cache $tmp_package
Verify-Checksum $tmp_package $sha256 "sha256"
Run-Executable "msiexec" "/quiet /i $tmp_package"
Set-EnvironmentVariable "PATH" "C:\Program Files\Rust stable MSVC 1.92\bin;$([Environment]::GetEnvironmentVariable('PATH', 'Machine'))"
Run-Executable "cargo" "install bindgen-cli --root=C:\Utils\rust-tools"
Set-EnvironmentVariable "PATH" "C:\Utils\rust-tools\bin;$([Environment]::GetEnvironmentVariable('PATH', 'Machine'))"
Write-Host "Cleaning $tmp_package.."
Remove "$tmp_package"
Write-Output "Rust = $version" >> ~\versions.txt

View File

@@ -17,9 +17,9 @@ $install_location = "c:\Utils\$prog"
$tmp_location = "c:\users\qt\downloads" $tmp_location = "c:\users\qt\downloads"
Download $cached_url $cached_url "$tmp_location\$pkg" Download $cached_url $cached_url "$tmp_location\$pkg"
Verify-Checksum "$tmp_location\$pkg" $sha1 sha1 Verify-Checksum "$tmp_location\$pkg" $sha1
Download $dep_cached_url $dep_cached_url "$tmp_location\$dep_pkg" Download $dep_cached_url $dep_cached_url "$tmp_location\$dep_pkg"
Verify-Checksum "$tmp_location\$dep_pkg" $dep_sha1 sha1 Verify-Checksum "$tmp_location\$dep_pkg" $dep_sha1
Extract-7Zip "$tmp_location\$pkg" $install_location Extract-7Zip "$tmp_location\$pkg" $install_location
Extract-7Zip "$tmp_location\$dep_pkg" $install_location Extract-7Zip "$tmp_location\$dep_pkg" $install_location

View File

@@ -60,7 +60,7 @@ $vcpkgExeCacheUrl = "\\ci-files01-hki.ci.qt.io\provisioning\vcpkg\vcpkg-$nonDott
$vcpkgExe = "C:\Windows\Temp\vcpkg.exe" $vcpkgExe = "C:\Windows\Temp\vcpkg.exe"
Download "$vcpkgExeOfficialUrl" "$vcpkgExeCacheUrl" "$vcpkgExe" Download "$vcpkgExeOfficialUrl" "$vcpkgExeCacheUrl" "$vcpkgExe"
Verify-Checksum $vcpkgExe $vcpkgExechecksum "sha256" Verify-Checksum $vcpkgExe $vcpkgExechecksum
Move-Item "$vcpkgExe" -Destination "$vcpkgRoot" -Force Move-Item "$vcpkgExe" -Destination "$vcpkgRoot" -Force
if(![System.IO.File]::Exists("$vcpkgRoot\vcpkg.exe")){ if(![System.IO.File]::Exists("$vcpkgRoot\vcpkg.exe")){

View File

@@ -43,7 +43,7 @@ $tempfile = "C:\Windows\Temp\" + $filename_zip
Write-Host "Fetching Telegraf $version..." Write-Host "Fetching Telegraf $version..."
Download $url_official $url_cache $tempfile Download $url_official $url_cache $tempfile
Verify-Checksum $tempfile $sha256 sha256 Verify-Checksum $tempfile $sha256
Write-Host "Installing telegraf.exe under C:\Utils\telegraf" Write-Host "Installing telegraf.exe under C:\Utils\telegraf"

View File

@@ -38,7 +38,7 @@ $internalUrl = "http://ci-files01-hki.ci.qt.io/input/windows/node-v$version-win-
Write-Host "Installing Node.js" Write-Host "Installing Node.js"
Download $externalUrl $internalUrl $package Download $externalUrl $internalUrl $package
Verify-Checksum $package $sha256 "sha256" Verify-Checksum $package $sha256
Extract-7Zip $package $targetFolder Extract-7Zip $package $targetFolder
Add-Path $installFolder Add-Path $installFolder
Remove $package Remove $package

View File

@@ -13,7 +13,7 @@ $script:package_path = "$packageRoot\\$nugetPackage"
New-Item -ItemType Directory -Path "$packageRoot" New-Item -ItemType Directory -Path "$packageRoot"
Download $officialUrl $cachedUrl $package_path Download $officialUrl $cachedUrl $package_path
Verify-Checksum $package_path $sdkChecksumSha1 sha1 Verify-Checksum $package_path $sdkChecksumSha1
Write-Host "Installing Nuget" Write-Host "Installing Nuget"
Run-Executable "$package_path" "install Microsoft.WindowsAppSDK -OutputDirectory $packageRoot" Run-Executable "$package_path" "install Microsoft.WindowsAppSDK -OutputDirectory $packageRoot"

View File

@@ -252,6 +252,8 @@ installPackages+=(libusb-1.0-0-dev)
# password management support for Qt Creator # password management support for Qt Creator
installPackages+=(libsecret-1-dev) installPackages+=(libsecret-1-dev)
installPackages+=(debian-archive-keyring) installPackages+=(debian-archive-keyring)
# Keep zoneinfo up-to-date (COIN-1282)
installPackages+=(tzdata)
echo "Running update for apt" echo "Running update for apt"

View File

View File

View File

@@ -0,0 +1,4 @@
#!/bin/sh
sudo ethtool -K ens3 tso off
ethtool -k ens3 | grep tcp-segmentation-offload # Output: tcp-segmentation-offload: off

View File

@@ -0,0 +1,3 @@
#!/bin/sh
"$(dirname "$0")"/../common/unix/telegraf_install.sh

View File

@@ -0,0 +1,15 @@
#!/usr/bin/env bash
# Copyright (C) 2026 The Qt Company Ltd.
# SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only
set -e
curl --retry 5 --retry-delay 10 --retry-max-time 60 http://ci-files01-hki.ci.qt.io/input/semisecure/redhat_ak_all_versions_rhc.sh -o "/tmp/redhat_ak.sh" &>/dev/null
sudo chmod 755 /tmp/redhat_ak.sh
sudo /tmp/redhat_ak.sh
# refresh local certificates
sudo subscription-manager refresh
sudo rm -f /tmp/redhat_ak.sh

View File

@@ -0,0 +1,11 @@
#!/usr/bin/env bash
#Copyright (C) 2026 The Qt Company Ltd
#SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only
# Ipv6 link local becomes tentative and dadfailed if two systems has the same secret_key
# New unique secret key will be created automatically during start up.
# https://access.redhat.com/solutions/3553581
echo "Removing secret_key"
sudo rm -f "/var/lib/NetworkManager/secret_key"

View File

@@ -0,0 +1,8 @@
#!/usr/bin/env bash
#Copyright (C) 2026 The Qt Company Ltd
#SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only
set -ex
BASEDIR=$(dirname "$0")
"$BASEDIR/../common/linux/set_ulimit.sh"

View File

@@ -0,0 +1,20 @@
#!/usr/bin/env bash
# Copyright (C) 2026 The Qt Company Ltd.
# SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only
set -ex
BASEDIR=$(dirname "$0")
# shellcheck source=../common/shared/network_test_server_ip.txt
source "$BASEDIR/../common/shared/network_test_server_ip.txt"
echo "Set Network Test Server address to $network_test_server_ip in /etc/hosts"
echo "$network_test_server_ip qt-test-server qt-test-server.qt-test-net" | sudo tee -a /etc/hosts
# Set timezone to UTC.
sudo timedatectl set-timezone Etc/UTC
"$BASEDIR/../common/linux/configure-gnome-shell.sh"
echo "Disable windows key from showing the GNOME Shell Activities overlay"
gsettings set org.gnome.mutter overlay-key ""

View File

@@ -0,0 +1,10 @@
#!/usr/bin/env bash
# Copyright (C) 2026 The Qt Company Ltd.
# SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only
set -ex
# Install xcb-util-cursor* libraries before updating repos. In updated repos these libraries are no longer available.
# QTQAINFRA-6325
sudo yum -y install xcb-util-cursor
sudo yum -y install xcb-util-cursor-devel

View File

@@ -0,0 +1,62 @@
#!/usr/bin/env bash
# Copyright (C) 2026 The Qt Company Ltd.
# SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only
set -ex
echo "set WritePreparedUpdates=false" | sudo tee -a /etc/PackageKit/PackageKit.conf
sudo systemctl stop packagekit
sudo systemctl mask --now packagekit
while sudo fuser /usr/libexec/packagekitd >/dev/null 2>&1; do
echo "Waiting for PackageKit to finish..."
sleep 1
sudo systemctl stop packagekit
done
sudo yum -y remove PackageKit gnome-software
sudo subscription-manager config --rhsm.manage_repos=0
sudo subscription-manager refresh
# List available RHEL versions and bind with correct one
sudo subscription-manager release --list
# Do not update Tier 1 via GUI without using this same --set
# - To avoid System to have newer packages than RPMS which will cause update issues
sudo subscription-manager release --set=10.0
sudo yum clean all
sudo tee "/etc/yum.repos.d/local.repo" > /dev/null <<EOC
[rhel-10-for-x86_64-baseos-rpms]
metadata_expire = 86400
baseurl = http://repo-clones-rhel10.ci.qt.io/rhel-10-for-x86_64-baseos-rpms
ui_repoid_vars = releasever basearch
name = Qt Red Hat Enterprise Linux 10 Base OS (RPMs)
gpgkey = file:///etc/pki/rpm-gpg/RPM-GPG-KEY-redhat-release
enabled = 1
gpgcheck = 1
[rhel-10-for-x86_64-appstream-rpms]
metadata_expire = 86400
baseurl = http://repo-clones-rhel10.ci.qt.io/rhel-10-for-x86_64-appstream-rpms
ui_repoid_vars = releasever basearch
name = Qt Red Hat Enterprise Linux 10 Appstream (RPMs)
gpgkey = file:///etc/pki/rpm-gpg/RPM-GPG-KEY-redhat-release
enabled = 1
gpgcheck = 1
[codeready-builder-for-rhel-10-x86_64-rpms]
metadata_expire = 86400
baseurl = http://repo-clones-rhel10.ci.qt.io/codeready-builder-for-rhel-10-x86_64-rpms
ui_repoid_vars = releasever basearch
name = Qt Red Hat Enterprise Linux Codeready Builder (RPMs)
gpgkey = file:///etc/pki/rpm-gpg/RPM-GPG-KEY-redhat-release
enabled = 1
gpgcheck = 1
EOC
# Epel is required for 'double-conversion-devel', 'libsqlite3x' and 'p7zip'
sudo dnf install -y https://dl.fedoraproject.org/pub/epel/epel-release-latest-10.noarch.rpm
sudo yum clean all
# As well as this fetching the repository data, we also get a printout of the used repos
sudo yum repolist

View File

@@ -0,0 +1,8 @@
#!/usr/bin/env bash
# Copyright (C) 2026 The Qt Company Ltd
# SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only
set -ex
BASEDIR=$(dirname "$0")
"$BASEDIR/../common/linux/limit-avahi-interfaces.sh"

View File

@@ -0,0 +1,210 @@
#!/usr/bin/env bash
# Copyright (C) 2026 The Qt Company Ltd.
# SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only
set -ex
# Remove update notifications and packagekit running in the background
sudo yum -y remove PackageKit gnome-software
# CI: All platforms should have up-to-date packages when new provision is made
echo "Quick fix: Temporarily skip RHEL 10.0 updates due to cockpit update fail (QTQAINFRA-7773)"
#sudo yum -y update
installPackages=()
# Make sure needed ca-certificates are available
installPackages+=(ca-certificates)
installPackages+=(git)
installPackages+=(zlib-devel)
installPackages+=(glib2-devel)
installPackages+=(openssl-devel)
installPackages+=(freetype-devel)
installPackages+=(fontconfig-devel)
installPackages+=(curl-devel)
installPackages+=(expat-devel)
installPackages+=(gettext-devel)
installPackages+=(perl-devel)
# Required by some old pkg perl script, FindBin.pm was moved to new package in perl 5.32
installPackages+=(perl-FindBin)
installPackages+=(dh-autoreconf)
# cmake build
installPackages+=(ninja-build)
installPackages+=(pcre2-devel)
installPackages+=(double-conversion-devel)
installPackages+=(zstd)
installPackages+=(libzstd-devel)
# EGL support
installPackages+=(mesa-libEGL)
installPackages+=(libxkbfile-devel)
# Xinput2
installPackages+=(libXi-devel)
installPackages+=(mariadb-server)
installPackages+=(mariadb)
installPackages+=(mariadb-devel)
installPackages+=(postgresql-devel)
installPackages+=(cups-devel)
installPackages+=(dbus-devel)
# gstreamer 1 for QtMultimedia
# Note! gstreamer1-plugins-bad-free needs to be upgraded or it will conflicts with gstreamer1-plugins-base-devel
installPackages+=(gstreamer1-plugins-bad-free)
installPackages+=(gstreamer1-devel)
installPackages+=(gstreamer1-plugins-base-devel)
# Not available for RHEL 10.0
#installPackages+=(gstreamer1-plugin-openh264)
# pipewire for QtMultimedia
installPackages+=(pipewire-devel)
# yasm for QtMultimedia
installPackages+=(yasm)
# gtk3 style for QtGui/QStyle
installPackages+=(gtk3-devel)
# libusb1 for tqtc-boot2qt/qdb
installPackages+=(libusbx-devel)
# speech-dispatcher-devel / flite-devel for QtSpeech
installPackages+=(speech-dispatcher-devel)
installPackages+=(flite-devel)
# Python 2 devel and pip. python-pip requires the EPEL repository to be added
# Python 2 no longer supported
# installPackages+=(python2-devel python2-pip)
# Python 3 with python-devel, pip and virtualenv
installPackages+=(python3)
installPackages+=(python3-devel)
# WebEngine
installPackages+=(bison)
installPackages+=(flex)
installPackages+=(gperftools-libs)
installPackages+=(gperf)
installPackages+=(alsa-lib-devel)
installPackages+=(pulseaudio-libs-devel)
installPackages+=(libdrm-devel)
installPackages+=(libva-devel)
installPackages+=(libXtst-devel)
installPackages+=(libxshmfence-devel)
installPackages+=(nspr-devel)
installPackages+=(nss-devel)
installPackages+=(python3-html5lib)
installPackages+=(libstdc++-static)
installPackages+=(libatomic)
# For Android builds
#installPackages+=(java-21-openjdk-devel.21.0.9.0.10-1.el10)
installPackages+=(java-21-openjdk-devel)
# For receiving shasum
installPackages+=(perl-Digest-SHA)
# INTEGRITY requirements
# Not available for RHEL 10.0
#installPackages+=(glibc.i686)
# Enable Qt Bluetooth
installPackages+=(bluez-libs-devel)
# QtNfc
installPackages+=(pcsc-lite-devel)
# QtWebKit
installPackages+=(libxml2-devel)
installPackages+=(libxslt-devel)
# For building Wayland from source
installPackages+=(libffi-devel)
# QtWayland
# installPackages+=(mesa-libwayland-egl)
# installPackages+=(mesa-libwayland-egl-devel)
installPackages+=(libwayland-egl)
installPackages+=(libwayland-client)
installPackages+=(libwayland-cursor)
installPackages+=(libwayland-server)
# Jenkins
installPackages+=(chrpath)
# libxkbcommon
installPackages+=(libxkbcommon-devel)
installPackages+=(libxkbcommon-x11-devel)
# xcb-util-* libraries
installPackages+=(xcb-util)
installPackages+=(xcb-util-devel)
installPackages+=(xcb-util-image-devel)
installPackages+=(xcb-util-keysyms-devel)
installPackages+=(xcb-util-wm-devel)
installPackages+=(xcb-util-renderutil-devel)
installPackages+=(xcb-util-cursor)
installPackages+=(xcb-util-cursor-devel)
# ODBC support
installPackages+=(unixODBC-devel)
installPackages+=(unixODBC)
# Vulkan support
installPackages+=(vulkan-devel)
installPackages+=(vulkan-tools)
# Conan: For Python build
installPackages+=(xz-devel)
installPackages+=(zlib-devel)
installPackages+=(libffi-devel)
installPackages+=(libsqlite3x-devel)
# Build.pl
installPackages+=(perl-Data-Dumper)
# In RedHat these come with Devtoolset
installPackages+=(gcc)
installPackages+=(gcc-c++)
installPackages+=(make)
# RHEL 10.0 has newer toolset
#installPackages+=(gcc-toolset-12)
# Open source VMware Tools
installPackages+=(open-vm-tools)
# nfs-utils is needed to make mount work with ci-files01
installPackages+=(nfs-utils)
# cifs-utils, for mounting smb drive
installPackages+=(keyutils)
installPackages+=(cifs-utils)
# zip, needed for vcpkg caching
installPackages+=(zip)
# OpenSSL requirement, built by vcpkg
installPackages+=(perl-IPC-Cmd)
# password management support for Qt Creator
installPackages+=(libsecret-devel)
# For Firebird in RTA
installPackages+=(libtommath-devel)
# For tst_license.pl with all the machines generating SBOM
installPackages+=(perl-JSON)
installPackages+=(perl-Test-Simple) # To install Test::More module for SBOM
# For qtgrpc build
installPackages+=(zlib-static)
# Keep zoneinfo up-to-date (COIN-1282)
installPackages+=(tzdata)
sudo yum -y install "${installPackages[@]}"
sudo dnf install nodejs-22.19.0-2.el10_0 -y
# Required by QtCore
sudo dnf install 'perl(English)' -y
# We shouldn't use yum to install virtualenv. The one found from package repo is not
# working, but we can use installed pip
sudo pip3 install --upgrade pip
# Configure pip
sudo pip config --user set global.index https://ci-files01-hki.ci.qt.io/input/python_module_cache
sudo pip config --user set global.extra-index-url https://pypi.org/simple/
# Create SBOM virtual env compatible with RHEL 10.0 Python 3.12
mkdir "/home/qt/sbom/"
python3 -m venv /home/qt/sbom/venv
/home/qt/sbom/venv/bin/pip install wheel
/home/qt/sbom/venv/bin/pip install -r "${BASH_SOURCE%/*}/../common/shared/requirements.txt"
# Provisioning during installation says:
# 'The script sbom2doc is installed in '/usr/local/bin' which is not on PATH.'
# hence the explicit assignment to SBOM_PYTHON_APPS_PATH.
source "${BASH_SOURCE%/*}/../common/unix/SetEnvVar.sh"
SetEnvVar "SBOM_PYTHON_APPS_PATH" "/home/qt/sbom/venv/bin"
# Set SBOM_PYTHON_INTERP_PATH to Python3 instance which was used to install SBOM packages from requirements
SetEnvVar "SBOM_PYTHON_INTERP_PATH" "/home/qt/sbom/venv/bin"
# Make FindPython3.cmake to find python3
sudo ln -s /usr/bin/python3 /usr/local/bin/python3
gccVersion="$(gcc --version |grep -Eo '[0-9]+\.[0-9]+(\.[0-9]+)?' |head -n 1)"
echo "GCC = $gccVersion" >> versions.txt
glibcVersion="$(ldd --version |grep -Eo '[0-9]+\.[0-9]+(\.[0-9]+)?' |head -n 1)"
echo "glibc = $glibcVersion" >> versions.txt
OpenSSLVersion="$(openssl version |cut -b 9-14)"
echo "System's OpenSSL = $OpenSSLVersion" >> ~/versions.txt
# List all available updates
sudo yum -y list updates

View File

@@ -0,0 +1,15 @@
#!/usr/bin/env bash
# Copyright (C) 2026 The Qt Company Ltd.
# SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only
source "${BASH_SOURCE%/*}/../common/unix/DownloadURL.sh"
set -ex
name="p7zip"
version="7-11"
sudo yum -y install "$name"
# Link 7za to 7z so we can use existing installation scripts
sudo ln -s /usr/bin/7za /usr/bin/7z
echo "$name = $version" >> ~/versions.txt

View File

@@ -0,0 +1,8 @@
#!/usr/bin/env bash
#Copyright (C) 2026 The Qt Company Ltd
#SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only
set -ex
BASEDIR=$(dirname "$0")
"$BASEDIR/../common/linux/install-ninja.sh"

View File

@@ -0,0 +1,5 @@
#!/usr/bin/env bash
# Copyright (C) 2026 The Qt Company Ltd.
# SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only
source "${BASH_SOURCE%/*}/../common/unix/install-patchelf.sh"

View File

@@ -0,0 +1,8 @@
#!/usr/bin/env bash
#Copyright (C) 2026 The Qt Company Ltd
#SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only
set -ex
BASEDIR=$(dirname "$0")
# shellcheck source=../common/unix/libclang-dyn.sh
"$BASEDIR/../common/unix/libclang-dyn.sh" "-snld10"

View File

@@ -0,0 +1,8 @@
#!/usr/bin/env bash
#Copyright (C) 2026 The Qt Company Ltd
#SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only
set -ex
BASEDIR=$(dirname "$0")
# shellcheck source=../common/unix/libclang.sh
"$BASEDIR/../common/unix/libclang.sh" "-snld10"

View File

@@ -0,0 +1,8 @@
#!/usr/bin/env bash
# Copyright (C) 2026 The Qt Company Ltd.
# SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only
set -ex
# shellcheck source=../common/linux/mount-vcpkg-cache-drive.sh
source "${BASH_SOURCE%/*}/../common/linux/mount-vcpkg-cache-drive.sh"

View File

@@ -0,0 +1,8 @@
#!/usr/bin/env bash
# Copyright (C) 2026 The Qt Company Ltd.
# SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only
set -ex
# shellcheck source=../common/linux/disable_selinux.sh
source "${BASH_SOURCE%/*}/../common/linux/disable_selinux.sh"

View File

@@ -0,0 +1,3 @@
#!/usr/bin/env bash
source "${BASH_SOURCE%/*}/../common/linux/sccache.sh"

View File

@@ -0,0 +1,6 @@
#!/usr/bin/env bash
# Copyright (C) 2026 The Qt Company Ltd.
# SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only
# shellcheck source=../common/unix/mqtt_broker.sh
source "${BASH_SOURCE%/*}/../common/unix/mqtt_broker.sh"

View File

@@ -0,0 +1,8 @@
#!/usr/bin/env bash
#Copyright (C) 2026 The Qt Company Ltd
#SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only
set -ex
BASEDIR=$(dirname "$0")
"$BASEDIR/../common/linux/fbx_linux.sh"

View File

@@ -0,0 +1,8 @@
#!/usr/bin/env bash
#Copyright (C) 2026 The Qt Company Ltd
#SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only
set -ex
BASEDIR=$(dirname "$0")
"$BASEDIR/../common/unix/install-conan.sh"

View File

@@ -0,0 +1,8 @@
#!/usr/bin/env bash
#Copyright (C) 2026 The Qt Company Ltd
#SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only
set -ex
BASEDIR=$(dirname "$0")
"$BASEDIR/../common/linux/install-git.sh"

View File

@@ -0,0 +1,45 @@
#!/usr/bin/env bash
# Copyright (C) 2026 The Qt Company Ltd.
# SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only
# shellcheck source=../common/unix/DownloadURL.sh
source "${BASH_SOURCE%/*}/../common/unix/DownloadURL.sh"
set -ex
# This script will install ICU
icuVersion="73.2"
icuLocation="/usr/lib64"
sha1="d2bbb7b2a9a9ee00dba5cc6a68137f6c8a98c27e"
baseBinaryPackageURL="http://ci-files01-hki.ci.qt.io/input/icu/$icuVersion/icu-linux-g++-Rhel8.6-x64.7z"
baseBinaryPackageExternalURL="http://master.qt.io/development_releases/prebuilt/icu/prebuilt/$icuVersion/icu-linux-g++-Rhel8.6-x64.7z"
sha1Dev="edc9cba31ffeac28bf7360c52b85b5e4d2f39043"
develPackageURL="http://ci-files01-hki.ci.qt.io/input/icu/$icuVersion/icu-linux-g++-Rhel8.6-x64-devel.7z"
develPackageExternalURL="http://master.qt.io/development_releases/prebuilt/icu/prebuilt/$icuVersion/icu-linux-g++-Rhel8.6-x64-devel.7z"
echo "Installing custom ICU $icuVersion $sha1 packages on RHEL to $icuLocation"
targetFile=$(mktemp)
DownloadURL "$baseBinaryPackageURL" "$baseBinaryPackageExternalURL" "$sha1" "$targetFile"
sudo 7z x -snld10 -y -o/usr/lib64 "$targetFile"
sudo rm "$targetFile"
echo "Installing custom ICU devel packages on RHEL"
tempDir=$(mktemp -d)
targetFile=$(mktemp)
DownloadURL "$develPackageURL" "$develPackageExternalURL" "$sha1Dev" "$targetFile"
7z x -snld10 -y -o"$tempDir" "$targetFile"
sudo cp -a "$tempDir"/lib/* /usr/lib64
sudo cp -a "$tempDir"/* /usr/
sudo rm "$targetFile"
sudo rm -fr "$tempDir"
sudo /sbin/ldconfig
echo "ICU = $icuVersion" >> ~/versions.txt

View File

@@ -0,0 +1,8 @@
#!/usr/bin/env bash
#Copyright (C) 2026 The Qt Company Ltd
#SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only
set -ex
# shellcheck source=../common/unix/install-breakpad.sh
source "${BASH_SOURCE%/*}/../common/unix/install-breakpad.sh"

View File

@@ -0,0 +1,7 @@
#!/usr/bin/env bash
#Copyright (C) 2026 The Qt Company Ltd
#SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only
set -ex
source "${BASH_SOURCE%/*}/../common/unix/install-maven.sh"

View File

@@ -0,0 +1,8 @@
#!/usr/bin/env bash
# Copyright (C) 2026 The Qt Company Ltd.
# SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only
set -ex
# shellcheck source=../common/linux/android_linux.sh
source "${BASH_SOURCE%/*}/../common/linux/android_linux.sh"

View File

@@ -0,0 +1,12 @@
#!/usr/bin/env bash
# Copyright (C) 2026 The Qt Company Ltd.
# SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only
# This script installs CMake 3.6.2
set -ex
# CMake is needed for autotests that verify that Qt can be built with CMake
# shellcheck source=../common/linux/cmake_linux.sh
source "${BASH_SOURCE%/*}/../common/linux/cmake_linux.sh"

View File

@@ -0,0 +1,8 @@
#!/usr/bin/env bash
# Copyright (C) 2026 The Qt Company Ltd.
# SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only
set -ex
# shellcheck source=../common/linux/install-android-bundletool.sh
source "${BASH_SOURCE%/*}/../common/linux/install-android-bundletool.sh"

View File

@@ -0,0 +1,7 @@
#!/usr/bin/env bash
#Copyright (C) 2026 The Qt Company Ltd
#SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only
set -ex
source "${BASH_SOURCE%/*}/../common/unix/install-golang.sh" "linux"

View File

@@ -0,0 +1,7 @@
#!/usr/bin/env bash
#Copyright (C) 2026 The Qt Company Ltd
#SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only
set -ex
source "${BASH_SOURCE%/*}/../common/linux/install-upx.sh"

View File

@@ -0,0 +1,6 @@
#!/usr/bin/env bash
set -ex
BASEDIR=$(dirname "$0")
"$BASEDIR/../common/linux/install-vcpkg.sh"

View File

@@ -0,0 +1,6 @@
#!/usr/bin/env bash
set -ex
BASEDIR=$(dirname "$0")
"$BASEDIR/../common/linux/install-vcpkg-ports.sh" x64-linux-qt

View File

@@ -0,0 +1,7 @@
#!/usr/bin/env bash
# Copyright (C) 2026 The Qt Company Ltd.
# SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only
set -ex
# shellcheck source=../common/unix/openssl_for_android.sh
source "${BASH_SOURCE%/*}/../common/unix/openssl_for_android.sh"

View File

@@ -0,0 +1,7 @@
#!/bin/bash
#Copyright (C) 2026 The Qt Company Ltd
#SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only
BASEDIR=$(dirname "$0")
"$BASEDIR/../common/unix/install_openapi.sh"

View File

@@ -0,0 +1,9 @@
#!/usr/bin/env bash
# Copyright (C) 2026 The Qt Company Ltd.
# SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only
set -ex
# shellcheck source=../common/unix/install_protobuf.sh
source "${BASH_SOURCE%/*}/../common/unix/install_protobuf.sh"

View File

@@ -0,0 +1,9 @@
#!/usr/bin/env bash
# Copyright (C) 2026 The Qt Company Ltd.
# SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only
set -ex
# shellcheck source=../common/unix/install_grpc.sh
source "${BASH_SOURCE%/*}/../common/unix/install_grpc.sh"

View File

@@ -0,0 +1,10 @@
#!/usr/bin/env bash
# Copyright (C) 2026 The Qt Company Ltd.
# SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only
# This script installs QEMU Guest Agent
set -ex
sudo yum -y install qemu-guest-agent
sudo systemctl start qemu-guest-agent

View File

@@ -0,0 +1,11 @@
#!/usr/bin/env bash
# Copyright (C) 2026 Konstantin Tokarev <annulen@yandex.ru>
# SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only
set -ex
sudo yum -y install elfutils-libelf-devel
# shellcheck source=../common/linux/install_dwz.sh
source "${BASH_SOURCE%/*}/../common/linux/install_dwz.sh"

View File

@@ -0,0 +1,3 @@
#!/usr/bin/env bash
source "${BASH_SOURCE%/*}/../common/linux/bootstrap-autostart.sh"

View File

@@ -0,0 +1,8 @@
#!/usr/bin/env bash
# Copyright (C) 2026 The Qt Company Ltd.
# SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only
set -ex
BASEDIR=$(dirname "$0")
"$BASEDIR/../common/linux/install-firebird.sh"

View File

@@ -0,0 +1,5 @@
#!/usr/bin/env bash
source "${BASH_SOURCE%/*}/../common/linux/install-ffmpeg-linux.sh"
source "${BASH_SOURCE%/*}/../common/unix/install-ffmpeg-android.sh" "android-x86_64" "use_16kb_page_size"
source "${BASH_SOURCE%/*}/../common/unix/install-ffmpeg-android.sh" "android-x86" "use_4kb_page_size"

View File

@@ -0,0 +1,8 @@
#!/usr/bin/env bash
# Copyright (C) 2026 The Qt Company Ltd.
# SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only
set -ex
BASEDIR=$(dirname "$0")
"$BASEDIR/../common/linux/install-oracle.sh"

View File

@@ -0,0 +1,8 @@
#!/usr/bin/env bash
# Copyright (C) 2026 The Qt Company Ltd.
# SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only
set -ex
BASEDIR=$(dirname "$0")
"$BASEDIR/../common/linux/mimersql.sh" "openssl-3" "rpm"

View File

@@ -0,0 +1,7 @@
#!/usr/bin/env bash
# Copyright (C) 2026 The Qt Company Ltd.
# SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only
set -ex
"$(dirname "$0")"/../common/linux/cleanup_cache.sh

View File

@@ -0,0 +1,8 @@
#!/usr/bin/env bash
#Copyright (C) 2026 The Qt Company Ltd
#SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only
set -ex
BASEDIR=$(dirname "$0")
"$BASEDIR"/../common/linux/enable_test_stacktraces.sh

View File

@@ -0,0 +1,3 @@
#!/usr/bin/env bash
BASEDIR=$(dirname "$0")
"$BASEDIR/../common/linux/install-network-test.sh" "--warn-only"

View File

@@ -0,0 +1,17 @@
#!/usr/bin/env bash
# Copyright (C) 2026 The Qt Company Ltd.
# SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only
# This script needs to be called last during provisioning so that the software information will show up last in provision log.
# Storage installed RPM packages information
set -ex
# shellcheck disable=SC2129
echo "*********************************************" >> ~/versions.txt
echo "***** All installed RPM packages *****" >> ~/versions.txt
rpm -q -a | sort >> ~/versions.txt
echo "*********************************************" >> ~/versions.txt
"$(dirname "$0")/../common/linux/version.sh"

View File

View File

Some files were not shown because too many files have changed in this diff Show More