TLDR: We need force cross-build the compilation of WebEngine tools
when cross-compiling for Windows ARM64, to ensure that native
development on Windows ARM64 hosts can use the WebEngine tools.
Long version:
We have two packaging configurations for Windows ARM64.
1) we cross-compile 'Windows On Arm' Qt on an x64 Windows host.
This configuration includes the WoA WebEngine libraries, but not
the tools.
2) we build Windows on Arm Qt on a native arm64 windows host. This
currently lacks the WebEngine libraries and tools, because it takes
too much time to build them on native arm hosts in the CI.
When installing WoA on a Windows host using the Qt online
installer, there are three possible scenarios:
a) Running the x64 installer on an x64 Windows host, to be
able to cross-build projects targeting Windows on Arm.
This will install an x64 MSVC host qt, and an arm64 WoA target Qt
from case '1' above.
The x64 qt includes the WebEngine libraries and tools, and the WoA
qt only includes the libraries, but not the tools.
For WoA project builds, the build system will use the
x64 host tools. This works fine.
b) Running the x64 installer on an arm64 Windows host.
This is very similar to the 'a' case, except it involves emulation
of the x64 host tools.
This will install an x64 MSVC host qt, and an arm64 WoA target Qt.
The x64 qt includes the WebEngine libraries and tools, and the WoA
qt only includes the libraries, but not the tools.
For WoA project builds, the build system will use the
x64 host tools using /emulation/. This works fine, as long as x64
emulation is available and enabled.
c) Running the arm64 installer on an arm64 Windows host.
This will install the native arm64 WoA Qt from case '2' above.
The arm64 qt includes arm libraries and tools from case '2', but
that lacks the WebEngine libraries and tools.
So the installer will also install the cross-compiled arm64
WebEngine libraries from case '1', but not the WebEngine tools
(e.g. dict conversion tool).
To ensure that scenario 'c' also gets WebEngine tools, we need to
force build (cross-compile) the tools in scenario '1'.
This patch achieves that by passing -DQT_FORCE_BUILD_TOOLS=ON ,
similar how we do it for yocto builds.
Pick-to: 6.9
Task-number: QTBUG-138859
Change-Id: I8270731a4afef7ab9af8df63326fb838e02968e8
Reviewed-by: Michal Klocek <michal.klocek@qt.io>
Reviewed-by: Alexey Edelev <alexey.edelev@qt.io>
(cherry picked from commit 9254959ace)
Reviewed-by: Joerg Bornemann <joerg.bornemann@qt.io>
the gstreamer-1.20-plugin-openh264 package seems to be outdated, as
opensuse's openh264 repo seems to have moved to gstreamer-1.24 and
renamed the package to gstreamer-plugin-openh264:
https://codecs.opensuse.org/openh264/openSUSE_Leap/x86_64/
This partially reverts 69f651b01794c93da20894a7ea5728a332903850.
Pick-to: 6.9
Change-Id: Ie159ec48f83a7b7d10671d2200f7eb4fbcf93db3
Reviewed-by: Lars Sutterud <lars.sutterud@qt.io>
Reviewed-by: Artem Dyomin <artem.dyomin@qt.io>
(cherry picked from commit c52c9ef8b8)
Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
Fix build issue for openSUSE on CI, probably related to the
gstreamer-plugin-openh264 plugin being obsolete for the latest
gstreamer-plugins-bad package
https://forums.opensuse.org/t/gstreamer-plugins-bad-wants-to-obsolete-gstreamer-plugin-openh264/186318
GStreamer tests are disabled on openSUSE anyway atm.
Pick-to: 6.9 6.8
Change-Id: I6e19e655c8753de879d6bbf82e532d18b25a01cb
Reviewed-by: Tim Blechmann <tim.blechmann@qt.io>
Reviewed-by: Artem Dyomin <artem.dyomin@qt.io>
(cherry picked from commit 9c0de61c89)
Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
OpenCL, OpenGL, and Vulkan Compatibility pack has been
installed to WoA 11 23h2 Tier1 images to support OpenGL
usage with these modules:
- QtBase
- QtGui
- QtWidgets
- QtDeclarative
- QtQuick
- Qt3D
Enabling OpenGL by removing tags:
-no-opengl
-no-feature-run-opengl-tests
Introduce new cross-compile build target for WoA 11 23h2
- windows-11_24H2-msvc2022-arm64-23H2
- Which has OpenGL enabled
- Should not be used with WoA 11 22h2 as it doesn't have OpenGL
New build will be used only for WoA 11 23h2 tests
- windows-11-x86_64-arm64-tests-23H2
- Which has OpenGL tests enabled
Names for these build and test targets will be renamed later when
WoA 11 23h2 replaces WoA 11 22h2 by removing '-23H2' suffix from names.
Task-number: QTQAINFRA-6973
Task-number: QTQAINFRA-6109
Task-number: QTBUG-126030
Pick-to: 6.9 6.9.2
Change-Id: Ifa29d93d996ac4884a86835328170d857bf91f33
Reviewed-by: Jani Heikkinen <jani.heikkinen@qt.io>
Reviewed-by: Oliver Wolff <oliver.wolff@qt.io>
Reviewed-by: Artem Dyomin <artem.dyomin@qt.io>
(cherry picked from commit d48682bcdf)
Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
So it can be used during cross-compilation of arm64 packages.
To ensure the env variable set does not conflict with the x86_64
version, the env variable is suffixed with "arm64".
Pick-to: 6.9
Change-Id: I117f6c4a8431058b9af22390942539a49c632d6a
Reviewed-by: Toni Saario <toni.saario@qt.io>
(cherry picked from commit c3f303b50b)
Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
This makes configuring nightlies more simple and its results more
readable.
Pick-to: 6.9 6.8 6.5
Task-number: QTQAINFRA-5945
Task-number: QTQAINFRA-7069
Change-Id: I89ca6b65fbdfcd52dd607c008174e446dc6925f4
Reviewed-by: Assam Boudjelthia <assam.boudjelthia@qt.io>
(cherry picked from commit 737eb7aa6d)
In preparation for generating a CycloneDX SBOM for Qt framework,
install the cyclonedx-python-lib package which will be a required
dependency for the SBOM generation process (assuming CycloneDX
generation feature is enabled in the build).
Pick-to: 6.9 6.8
Task-number: QTBUG-129598
Change-Id: Iacaeb22aa568cecd6ffbe2ece30de953e37c5cf2
Reviewed-by: Alexey Edelev <alexey.edelev@qt.io>
(cherry picked from commit 86589a14fc)
Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
Bullseye-backports has reached end-of-life and is no longer
supported or updated.
Pick-to: 6.9 6.8
Change-Id: If154155507e159333c0d0b638fc6910b1814665a
Reviewed-by: Patrik Teivonen <patrik.teivonen@qt.io>
(cherry picked from commit 8882c8cac4)
Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
New targets:
- windows-11_23h2-arm64-msvc2022
- windows-11-x86_64-arm64-tests-23H2
With latest versions
- Visual Studio Professional 2022: 17.14.7
- MSVC: 14.44.35207
OpenGL is still disabled, but 'OpenCL, OpenGL, and Vulkan
Compatibility pack' has been installed to WoA 11 23h2 Tier1
image to support OpenGL usage with QtWebengine, Qt3D etc.
These targets will be added later:
- windows-11_23h2-arm64-msvc2022-minimal-static-test
- Windows-MSVC2022-arm64_Static-23H2
[CI Platforms]
Task-number: QTQAINFRA-6973
Pick-to: 6.9
Change-Id: I049f84ad7df91cd62e7f40044d8ef40705ac34e1
Reviewed-by: Simo Fält <simo.falt@qt.io>
(cherry picked from commit 657ac0bcbb)
We are going to run test suite twice with qtwebview, with
different backends on windows. Therefore install
webview2 to build plugin also on other nodes.
Task-number: QTBUG-128447
Task-number: QTBUG-75747
Change-Id: I88da09eb9bf9e58f630ed65071d33bd4a89ac094
Reviewed-by: Toni Saario <toni.saario@qt.io>
(cherry picked from commit 539dc64e8e)
Reviewed-by: Tero Heikkinen <tero.heikkinen@qt.io>
Add a script to download windows app sdk and webview2 to be used for CI
This script downloads NUGET, then tries to download Windows App SDK,
WebView2 and CppWinRT libraries and sets appropriate environment paths
to be used later by webview2 plugin.
Task-number: QTBUG-128447
Task-number: QTBUG-75747
Change-Id: I1b7ff29b1870d0445034590d01caa503c9e3ae0f
Reviewed-by: Toni Saario <toni.saario@qt.io>
(cherry picked from commit e95025936a)
Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
Files were prebuild by cloning emsdk repo in their respective VM
produced by Coin provisioning, and running './emsdk install 4.0.7' and
'./emsdk activate 4.0.7' in macOS 15 and OpenSUSE 15.6. And just
'./emsdk install 4.0.7' in Windows 10.
This amends 5510396f4d9f175e7f61a953ea0722ce57d059d4
Task-number: COIN-1232
Change-Id: Ifa768173093c4b6b90599d0fff8b34a1db8b1bbc
Reviewed-by: Lorn Potter <lorn.potter@qt.io>
(cherry picked from commit 82b1992011)
Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
Emscripten 4.0.7 requires Python +3.8, OpenSUSE does have Python 3.11
but its path is only set to PYTHON3_EXECUTABLE envvar defined in
08-pythondev.sh.
OpenSUSE 15.6 comes with Python 3.6.15 which the previous emscripten
3.1.70 used.
Change-Id: Ied63ace32b7fb252d124ad447bc56dba353ff403
Reviewed-by: Lorn Potter <lorn.potter@qt.io>
(cherry picked from commit 7471b6b6d2)
Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
The flite plugin for QtSpeech wasn't tested on CI as the development
files weren't installed.
Pick-to: 6.9 6.8
Change-Id: Ieefe42f67009b99cc95f54567f224972d12c1538
Reviewed-by: Axel Spoerl <axel.spoerl@qt.io>
Reviewed-by: Tim Blechmann <tim.blechmann@qt.io>
(cherry picked from commit fb878af9e7)
Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
23H2 is replaced by 24H2. [CI Platforms]
Task-number: QTQAINFRA-6734
Change-Id: Ib136f46a6725aeb929d7bd406fbb31a290f71e58
Reviewed-by: Jukka Jokiniva <jukka.jokiniva@qt.io>
(cherry picked from commit 38fe4599c7)
Reviewed-by: Simo Fält <simo.falt@qt.io>
Native WoA builds are done with -no-opengl switch,
therefore native test coin nodes do not need to have
openglsw installed.
(ms-windows-store://pdp/?productid=9NQPSL29BFFF)
However, when trying to run cross compiled WoA on native
test nodes this ends up with:
tst_QOpenGLWindow::create() Failed to load opengl32sw (%1 is not a valid
tst_QOpenGLWindow::create() Failed to load and resolve WGL/OpenGL
function
However, adding no-opengl flag would affect our release binaries
and would remove qt3d and qtdatavisualisation from packaging.
Use run-opengl-test feature instead.
Task-number: COIN-1211
Change-Id: Id21051bc69e431a9d3773c4b4e0c8c2e63315b42
Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io>
(cherry picked from commit c73dbf6dfe)
Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
This change removes 'InsignificantTests' from all 24H2 targets and also
adds 'Packaging' to 24H2 targets that have 'Packaging' in equivalent
23H2 targets. [CI Platforms]
Task-number: QTQAINFRA-6734
Change-Id: I6056ddafcb351875d297ab52565e6b20ba75bb2b
Reviewed-by: Tero Heikkinen <tero.heikkinen@qt.io>
Reviewed-by: Jukka Jokiniva <jukka.jokiniva@qt.io>
(cherry picked from commit 15872ba2cc)
Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
This makes the qemu virtualize the target rather than emulating
it. Virtualization allows few times better performance in tests.
Pick-to: 6.9
Change-Id: I7a5f7e3e2b04c52034325459ef05bfc0dce5d0b7
Reviewed-by: Simo Fält <simo.falt@qt.io>
(cherry picked from commit ecff7e6ddc)
Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
This patch adds an optional parameter to the provisioning script
'install-ffmpeg-ios.sh', allowing us to override the output directory
for which the finalized library is installed.
This is particularly useful for local builds, where we often need
multiple different versions of FFmpeg installed, for different Qt
versions.
This patch has no impact for existing coin workflows.
Pick-to: 6.9 6.8
Change-Id: Ib0764eb29b84ae8badcfb48424f86316f3b2b650
Reviewed-by: Simo Fält <simo.falt@qt.io>
(cherry picked from commit 0e5937c8a4)
Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
In the provisioning script 'install-ffmpeg-ios.sh', we have a variable
'prefix' controlling where to install the finalized library. The value
of this prefix is sometimes hardcoded into some of the temporary build
directories, making the script break if we actually modify the 'prefix'
variable. This means we currently cannot easily change the output
directory.
This patch modifies 'install-ffmpeg-ios.sh' so that the 'prefix' is
applied consistently throughout the script, allowing us to change
the output directory in the future.
Pick-to: 6.9 6.8
Change-Id: I3458984aa22f8c82ed4d0bfac8ac8e71356e8789
Reviewed-by: Simo Fält <simo.falt@qt.io>
(cherry picked from commit d72ace1a0d)
Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
This patch adds an optional parameter to the provisioning script
'install-ffmpeg-macos.sh', allowing us to override the output directory
for which the finalized library is installed.
This is particularly useful for local builds, where we often need
multiple different versions of FFmpeg installed, for different Qt
versions.
This patch has no impact for existing coin workflows.
Pick-to: 6.9 6.8
Change-Id: If31922e931db19ab189850b975ce0131a64321b4
Reviewed-by: Simo Fält <simo.falt@qt.io>
(cherry picked from commit 708548742b)
Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
Our CI does not need some mDNS multicast services by Windows and they
are spammed by Windows VMs in network with mdns.mcast.net requests.
Pick-to: 6.9 6.8 6.5
Task-number: QTQAINFRA-6761
Change-Id: Ie676f94b81e7281ec84d9fbbfa2fd7f1d28dfbca
Reviewed-by: Tero Heikkinen <tero.heikkinen@qt.io>
(cherry picked from commit 066371f7cd)
Reviewed-by: Jukka Jokiniva <jukka.jokiniva@qt.io>
Large Send Offload (LSO) was originally disabled because it caused
deterioration in network throughput but the cause of that deterioration
is now fixed in infra and LSO should be enabled back as it improves
network performance. LSO is enabled in Windows by default.
Pick-to: 6.9 6.8 6.5
Task-number: QTQAINFRA-7236
Change-Id: I243632d958007142792df0cbd9a341fb2b86df69
Reviewed-by: Tero Heikkinen <tero.heikkinen@qt.io>
(cherry picked from commit 4aaba78cb4)
Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
Previous patch 75fea893b1 introduced
a small bug where multiple nightly builds of FFmpeg were being
outputted into the same directory, effectively causing them to
overwrite each other.
This patch gives the nightly builds their own subfolder for outputted
library files.
Task-number: QTQAINFRA-7069
Change-Id: I5f7e111708aecedd2817888948b77b8163f0452d
Reviewed-by: Artem Dyomin <artem.dyomin@qt.io>
(cherry picked from commit 303b4c13dc)
Reviewed-by: Jukka Jokiniva <jukka.jokiniva@qt.io>
Set the latest NDK envvars for android-quick-minimal and Android 16.
Task-number: QTQAINFRA-7069
Change-Id: Ib533eeb08a31437967485cc35f40e434c2880108
Reviewed-by: Assam Boudjelthia <assam.boudjelthia@qt.io>
(cherry picked from commit 6e478e595c)
Reviewed-by: Jukka Jokiniva <jukka.jokiniva@qt.io>
Multiple Android NDKs are installed in provisoning. FFmpeg build uses
NDK in its build process for Android, so this change makes provisioning
build multiple Android FFmpeg builds, so each Android nightly can use a
FFmpeg build where its corresponding NDK version was used.
Task-number: QTQAINFRA-7069
Change-Id: Ie4457c87b7b75e0c711a76bd8170e718cbda445d
Reviewed-by: Assam Boudjelthia <assam.boudjelthia@qt.io>
(cherry picked from commit 75fea893b1)
Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
This change makes macOS provisioning also install older NDKs for
Android (if set), which will be used in nightly targets.
Task-number: QTQAINFRA-7069
Change-Id: Ie176c5ea69a1398afa69691ad6f37b7af2f66dfc
Reviewed-by: Assam Boudjelthia <assam.boudjelthia@qt.io>
(cherry picked from commit bf04a7a94d)
Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
This change makes provisioning also install older NDKs for Android,
which will be used in nightly targets.
Task-number: QTQAINFRA-7069
Change-Id: Ia8695383e94df282822da9019c33f1004a879bf6
Reviewed-by: Assam Boudjelthia <assam.boudjelthia@qt.io>
(cherry picked from commit 687b73cde0)
Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
When you use the helper to set an envvar in provisioning, you can not
reference the machine scoped variable in a later .ps1 script in the same
provisoning run using the direct/static reference '$env:NAME', instead
you have to use a more verbose method with e.g. 'Get-Item' cmdlet and/or
set the envvar additionally to the process scope yourself.
This change makes the helper also add process scope to the envvars, this
way envvars set in provisioning can be simply referenced with
'$env:NAME' in later provisioning scripts, which is consistent with the
way you can use SetEnvVar helper in Unix and directly reference the
envvar with just its variable name in later .sh scripts.
This change also removes duplicate local scope envvar definitions now
that Set-EnvironmentVariable helper does it.
Change-Id: I804fa8f8dfce742a84e8b4bc077f466820589f7e
Reviewed-by: Assam Boudjelthia <assam.boudjelthia@qt.io>
Reviewed-by: Tero Heikkinen <tero.heikkinen@qt.io>
(cherry picked from commit 33ff9ebc9e)
Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>