Commit Graph

5986 Commits

Author SHA1 Message Date
Oliver Wolff
8fae627f8b Provisioning: Add Get-CpuArchitecture helper function
For the addition of ARM64 to our checked packages, this helper function
will come in handy as it is more fine grained than Is64BitHost.

Change-Id: I8956c1ca6e445c0b783a39e4d42069199496f053
Reviewed-by: Heikki Halmet <heikki.halmet@qt.io>
2024-04-20 08:37:08 +02:00
Casimir Saastamoinen
0477a26495 Add Git\usr\bin\ to path on windows
Adding Git\usr\bin\ to path would make it possible to use vim and
compile in ssh session

Task-number: COIN-1060
Change-Id: Ic96d787de3cc71c685e09ae6fd00c35745e747a1
Reviewed-by: Ville-Pekka Karhu <ville-pekka.karhu@qt.io>
2024-04-20 09:37:05 +03:00
Jari Helaakoski
c58680d7a3 Make QtLite COIN pipeline significant
Task-number: QTBUG-104898
Change-Id: I0abc1dddf34d9744db050a5bb9d7df1f5198c602
Reviewed-by: Samuli Piippo <samuli.piippo@qt.io>
2024-04-18 11:44:55 +00:00
Qt Submodule Update Bot
7a2aa8b94a Update submodules on 'dev in qt/qt5'
Change-Id: I343ffa9e873d6af9b3955ffafa26eda8b3c45193
Reviewed-by: Qt Submodule Update Bot <qt_submodule_update_bot@qt-project.org>
2024-04-18 06:28:56 +00:00
Axel Spoerl
bf66cc70bc Mark qemu-armv7i/arm64-developer-build insignificant
Linux developer builds on QEMU (armv7 and arm 64) block CI for unknown
reasons.

The platforms host Ubuntu 22. Since Ubuntu is a platform of its own,
mark this insignificant in order to unblock CI.

Task-number: QTQAINFRA-6245
Change-Id: I95dacca73eb9f5ea004601611e654cd75a3d0bf4
Reviewed-by: Jani Heikkinen <jani.heikkinen@qt.io>
2024-04-17 18:58:58 +02:00
Elias Toivola
25f4cc5db6 Remove Windows 11 22H2 targets from CI
22H2 is replaced by Windows 11 23H2.

Task-number: QTQAINFRA-6113
Task-number: QTQAINFRA-6075
Change-Id: Ifd960a4c18b19f91a2624a23eacffa59c2faefac
Reviewed-by: Jukka Jokiniva <jukka.jokiniva@qt.io>
2024-04-16 20:51:37 +03:00
Elias Toivola
dc919e14d8 Make Windows 11 23H2 targets blocking
This change removes 'InsignificantTests' feature from Windows 11 23H2
platform configurations as there has not been increased test fail
rates compared to 22h2 targets in the past 10 days.

Also add 'Packaging' to windows-11_23H2-msvc2022 target

Task-number: QTQAINFRA-6113
Task-number: QTQAINFRA-6075
Task-number: QTBUG-124244
Change-Id: I8ddb9dfa45199982511f46841d1be30757055b25
Reviewed-by: Jukka Jokiniva <jukka.jokiniva@qt.io>
Reviewed-by: Jani Heikkinen <jani.heikkinen@qt.io>
2024-04-16 20:51:35 +03:00
Alexey Edelev
63f83fb13d Add the explicit INPUT_headersclean=ON flag for non-qtbase repos
The 'headersclean' flag is not a "feature" anymore, so qtbase doesn't
propagate it for other repositories. CI no need to set either
INPUT_headersclean=ON or add -headersclean flag to the
qt-configure-module script command line.

Task-number: QTBUG-121722
Change-Id: I6970d6a04dd51ad4d3df114212f6410b80ddc6a1
Reviewed-by: Joerg Bornemann <joerg.bornemann@qt.io>
2024-04-16 06:25:00 +02:00
Assam Boudjelthia
39517ef0d0 Android:Coin: do gradle build in provisioning to cache downloadables
If Gradle is not present in the system, it's downloaded from the URL
from the Gradle wrapper. Also, the same for AGP when an Android
project build is done. Currently, that's done on every integration,
and that can be unreliable due to networking flakiness. With this
patch, a Gradle build is done once during provisioning where the
downloads of Gradle and AGP dependencies are downloaded.

Fixes: QTQAINFRA-6166
Fixes: QTQAINFRA-4726
Fixes: QTBUG-117203
Fixes: QTBUG-114699
Change-Id: Ic9fd8aeea3379ca1d45ffeb4523a52e2846fcabb
Reviewed-by: Dimitrios Apostolou <jimis@qt.io>
Reviewed-by: Toni Saario <toni.saario@qt.io>
2024-04-14 13:28:59 +00:00
Robert Löhning
6941e50a6d README.md: Update MinGW requirement
Pick-to: 6.7
Change-Id: I931202f00592d5fc6411fa2d8a7825c5b9117c4e
Reviewed-by: Kai Köhne <kai.koehne@qt.io>
2024-04-08 16:48:07 +02:00
Alexey Edelev
38ab29daf4 Ensure that the list of modules to exclude is not empty
Change-Id: I4ad2044966d793f7d2596336120942d65d2187d9
Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io>
2024-04-06 08:22:46 +01:00
Assam Boudjelthia
a9f16c0abd Coin:Android: update emulator version to 34.1.19
Update to latest (as of now) Android emulator version 34.1.19, which
might solve Vulkan crashes on some CI tests.

Pick-to: 6.7 6.6 6.5
Task-number: QTQAINFRA-5971
Change-Id: Ic81158f44ac5c922bfdbe6f5c04900234e063615
Reviewed-by: Jukka Jokiniva <jukka.jokiniva@qt.io>
2024-04-05 05:47:09 +00:00
Liang Qi
3e57070389 coin: test gcc-12 for qtbase only
Task-number: QTQAINFRA-6203
Change-Id: I4515b2be1cf9b9fe2f559dddf52f25d67f0e131f
Reviewed-by: Tero Heikkinen <tero.heikkinen@qt.io>
Reviewed-by: Tony Sarajärvi <tony.sarajarvi@qt.io>
2024-04-04 15:20:10 +02:00
Allan Sandfeld Jensen
ee56a3b8ae Add gbm dependencies for webengine to RHEL
Was previously only added for 8.4 and 9.0

Pick-to: 6.7 6.5
Change-Id: Ifa22b6836818ad59b6f3dcfd6b1a6dbc1293782b
Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io>
2024-04-04 09:41:49 +01:00
Tor Arne Vestbø
0a8f1050f9 Fix shellcheck warnings in set_tcc_permissions.sh
Pick-to: 6.7
Change-Id: I6b4de6e02e92d4c85fbb58cb1573a0ab3a178b24
Reviewed-by: Tony Sarajärvi <tony.sarajarvi@qt.io>
2024-04-03 13:57:31 +02:00
Toni Saario
c06ac4d550 Move c++20 to msvc2022 on windows 11 23h2
Amends f22c8e459f

Change-Id: I328cd0fbe7b93c84903373224ebc8d230ea7f62f
Reviewed-by: Jukka Jokiniva <jukka.jokiniva@qt.io>
2024-04-02 15:45:17 +03:00
Elias Toivola
5157d1ef93 Add Windows 11 23H2 as non-blocking in CI
Windows 11 23H2 version which will replace Windows 11 22H2 once the new version is deemed as stable. Until then, 23h2 tests will be set as insignificant.

Task-number: QTQAINFRA-6075
Task-number: QTQAINFRA-6113
Change-Id: I15054813896210fadf14da815ad5a7b3e402e800
Reviewed-by: Jukka Jokiniva <jukka.jokiniva@qt.io>
2024-03-28 18:30:59 +02:00
Toni Saario
786faf4727 Update vxworks VSB and VIP
Adds flags
"_WRS_CONFIG_KERNEL_SSP=y"
"_WRS_CONFIG_RTP_SSP=y"
for VSB.

Task-number: QTBUG-123715
Change-Id: I069d86d9633148fc50654f2e43ab7b8c9152f973
Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io>
2024-03-28 09:31:42 +00:00
Matti Paaso
5073850891 Provisioning: Update Axivion bauhaus-suite
Update tool from version 7.7.1 into version 7.7.4. License file
is also updated.

Change-Id: Ia38ed9d58bd4b5e5c1efdacca866faf4bfe95a09
Reviewed-by: Jukka Jokiniva <jukka.jokiniva@qt.io>
2024-03-27 22:35:57 +02:00
Simo Fält
1f69b89aff Provisioning: Disable keyring password prompt
Fixes: QTQAINFRA-6215
Pick-to: 6.6 6.5
Change-Id: I50e70177f763493107d0919625f4885dc3a9713d
Reviewed-by: Tero Heikkinen <tero.heikkinen@qt.io>
Reviewed-by: Toni Saario <toni.saario@qt.io>
(cherry picked from commit 1716158656)
Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
2024-03-27 17:36:56 +00:00
Fabian Kosmale
61dc233044 init-repository: Check for cmake
And bail out with proper warning if cmake is missing

Change-Id: I39a9e340f873f8de05264d57b2a80fb754b30fbe
Reviewed-by:  Alexey Edelev <alexey.edelev@qt.io>
2024-03-26 23:07:40 +01:00
Alexey Edelev
b1a9c94a19 Fix the typo in list(APPEND command
Amends 13a7e25f5d

Pick-to: 6.7
Change-Id: I52f0990c1b956a8a1c9315e02114e429548bd2d2
Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io>
2024-03-26 23:07:20 +01:00
Tero Heikkinen
272d49061e Provisioning: Update MSVC2022 in CI
Updated:
Visual Studio Professional 2022
Visual Studio Build Tools 2022
CL new version 19.39.33523

BackgroundDownloader.exe disabled to reduce CPU usage during idle.

Task-number: QTQAINFRA-6204
Task-number: QTQAINFRA-6190
Task-number: QTQAINFRA-6206
Change-Id: I25dfc393a4b320cbaddefda2c8ff4b1738a776d8
Reviewed-by: Tero Heikkinen <tero.heikkinen@qt.io>
Reviewed-by: Tony Sarajärvi <tony.sarajarvi@qt.io>
2024-03-26 07:33:15 +02:00
Joerg Bornemann
c8a236e858 CI: Turn off FEATURE_clangcpp for MSVC2022
This feature turns off clang-support for lupdate.

Task-number: QTBUG-123611
Task-number: QTQAINFRA-6204
Change-Id: I192b711b6a310e3dd1da3fefe2ca0c8fb732a01c
Reviewed-by: Oliver Wolff <oliver.wolff@qt.io>
Reviewed-by: Tero Heikkinen <tero.heikkinen@qt.io>
2024-03-26 06:33:11 +01:00
Dominik Holland
532938387d coin: Disable Tests for the nightly ubuntu lcov config
The actual tests run in a special setup which takes care the tests are
build and run accordingly. The 'DisableTests' feature should make sure
the standard test build is skipped.

Change-Id: I7889c86b19a0f049fd3f682c9f70ed8acf5aeabe
Reviewed-by: Toni Saario <toni.saario@qt.io>
Reviewed-by: Robert Griebl <robert.griebl@qt.io>
2024-03-22 11:20:36 +01:00
Ville-Pekka Karhu
6440fe6f51 Provisioning: Upgrade Xcode to version 15.3 for macOS 14 ARM and Intel
Task-number: QTQAINFRA-6211
Change-Id: I26995366ca954d6b619f5dfe70f7abb5da7a2b31
Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@qt.io>
2024-03-22 12:20:34 +02:00
Alexey Edelev
13a7e25f5d Avoid collecting dependencies from modules that were explicitly skipped
If either -skip <module> or BUILD_<module>=OFF is set from command line
we should avoid processing the module dependencies and exclude it from
the list of modules that needs to be build.

Pick-to: 6.7
Change-Id: Ieec8db085221cc4abd5d8ac83c06ecce25d5d4b0
Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io>
2024-03-22 11:20:31 +01:00
Alex Bu
d77a38f2aa Add platform configs for meta-boot2qt-riscv
CI configs for new Boot2Qt repo.

Change-Id: Ib94f58d067eee6cb2d436984cf5dda40f575bbb4
Reviewed-by: Samuli Piippo <samuli.piippo@qt.io>
2024-03-21 08:44:46 +02:00
Ville-Pekka Karhu
9ceb1b5ef5 Platform configs: Replace hardware macOS 14 ARM with virtualized macOS 14 ARM
Task-number: QTQAINFRA-5831
Change-Id: Ibdd2360a55855d04bf02d6047870f48319c2ce9d
Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@qt.io>
2024-03-19 09:30:09 +00:00
Qt Submodule Update Bot
bbde52b3c5 Update submodules on 'dev in qt/qt5'
Change-Id: Ie7762721a37bc954d2f7962467654c31b5464e37
Reviewed-by: Qt Submodule Update Bot <qt_submodule_update_bot@qt-project.org>
2024-03-19 02:28:27 +00:00
Joerg Bornemann
f22c8e459f CI: Turn off C++20 for MSVC2019
qtbase/45fd36f1480a6229879a4e59236ffa1d1d22dfbf triggers internal
compiler errors in MSVC2019 when configuring Qt with -c++std c++20.

Move the build-testing of the C++20 standard to
windows-11_22h2-msvc2022.

Change-Id: I7591223ae391471c61a80883f305c73e43945714
Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io>
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
Reviewed-by: Toni Saario <toni.saario@qt.io>
2024-03-18 12:47:34 +01:00
Liang Qi
23ce6f4378 Run tests on offscreen mode for debian arm
Debian arm only has Wayland, and there is no QtWayland QPA plugin
available yet during the integration of each module. We can run
offscreen mode for now. And enable tests on Wayland in qtwayland
and qt5 integration.

Pick-to: 6.7 6.6 6.5
Task-number: QTQAINFRA-5594
Change-Id: Ie06d0b88509f9e55c96ce3b05b18ff8cec672f6b
Reviewed-by: Liang Qi <liang.qi@qt.io>
2024-03-18 11:30:54 +01:00
Matti Paaso
1cda55ed91 Add new Axivion Analysis configuration for 7.7.1
code_annotations.json file added into configuration.

Change-Id: I64925cdcb592eb76d0e4231ea35a60f7fb29e0de
Reviewed-by: <sebastian.krings@qt.io>
Reviewed-by: Jukka Jokiniva <jukka.jokiniva@qt.io>
2024-03-18 08:16:31 +02:00
Qt Submodule Update Bot
09ca183bb6 Update submodules on 'dev in qt/qt5'
Change-Id: Ic8dbfdda6aac076980cad6a9e0824d5e1b5db331
Reviewed-by: Qt Submodule Update Bot <qt_submodule_update_bot@qt-project.org>
2024-03-15 19:30:23 +00:00
Ville-Pekka Karhu
25bc8c0ba9 Provisioning: Add Spotlight disabling to macOS 13 and 14 ARM
Pick-to: 6.7
Change-Id: Ibdb5d7d23d43b442811e4a47096b1038fcff3b27
Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@qt.io>
2024-03-15 15:18:07 +02:00
Artem Dyomin
a53b63019f Implement dynamical ffmpeg linking on macOS
* fix dependencies and install names (absolute => relative)
* fix compilation build of dylib on xcode 15.
* add matching build instructions to yaml.
* old macos versions don't have 'realpath', workaround is used.

Task-number: QTBUG-120989
Pick-to: 6.7 6.6 6.5
Change-Id: I22e413d8f6d05c8c7d6d09a5926691216e781fd3
Reviewed-by: Artem Dyomin <artem.dyomin@qt.io>
Reviewed-by: Jøger Hansegård <joger.hansegard@qt.io>
2024-03-13 11:54:46 +00:00
Piotr Wiercinski
a84104df1c Provisioning: Install webdriver-manager for Python3
WebDriverManager will be used to install correct version of
chromedriver for WebAssembly Selenium testing.

Task-number: QTBUG-122729
Change-Id: I49b61da3d8dd20b36ec6965c258a6a608ac33a63
Reviewed-by: Simo Fält <simo.falt@qt.io>
2024-03-12 14:37:27 +00:00
Tor Arne Vestbø
b4de4de742 coin: Give bootstrap-agent permission to use microphone on macOS
The bootstrap-agent is the 'responsible process' in TCC terms when
it comes to whether a test should be allowed to access the microphone.

 https://www.qt.io/blog/the-curious-case-of-the-responsible-process

By giving this process the permission explicitly, by modifying the
TCC database, we ensure that all tests run as child processes also
get this permission.

Change-Id: Ia03084ac89f0717ac6457b0035769f4a9863495b
Reviewed-by: Ville-Pekka Karhu <ville-pekka.karhu@qt.io>
2024-03-11 09:17:21 +00:00
Qt Submodule Update Bot
6d8dd19dae Update submodules on 'dev in qt/qt5'
Change-Id: I18ce853c20a31f99dfee4a1ece54017dcb10878d
Reviewed-by: Qt Submodule Update Bot <qt_submodule_update_bot@qt-project.org>
2024-03-10 23:13:15 +00:00
Simo Fält
a3f2c30374 CI: Use '-qt-doubleconversion' with Debian config
This is to avoid additional dependencies.

Fixes: QTBUG-123051
Pick-to: 6.7
Change-Id: Idb6937e9df353f1667eabedb2642a766131d02da
Reviewed-by: Jani Heikkinen <jani.heikkinen@qt.io>
(cherry picked from commit 3bbe6f0250)
Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
2024-03-08 01:08:10 +00:00
Alexandru Croitor
f818f73c09 CMake: Fix configure -help to work
The -help option was parsed by init-repository and not passed along
to configure. Make sure to pass it.

Currently this means a developer won't be able to see the
init-repository help when using the configure script.

Task-number: QTBUG-120030
Change-Id: I5d8c0f9147e1fcd5522ab98ad9ab0947a8411d1a
Reviewed-by: Joerg Bornemann <joerg.bornemann@qt.io>
2024-03-04 17:22:39 +01:00
Alexey Edelev
7c8bab37bb Fix the broken standalone -submodules argument in top-level configure
Make sure that -submodules argument is processed when we assume that
the top-level Qt meta repository is already initialized.

Amends 2c9664ca33

Fixes: QTBUG-122954
Change-Id: Id7a325c2dd670667e8b0fdcd607b52080b118f4f
Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io>
2024-03-04 16:24:46 +01:00
Qt Submodule Update Bot
6c57ec909d Update submodules on 'dev in qt/qt5'
Change-Id: I3e952781b1eb1ca3f3bd0a10be70c9a1db86f81d
Reviewed-by: Qt Submodule Update Bot <qt_submodule_update_bot@qt-project.org>
2024-03-04 15:24:27 +00:00
Simo Fält
859b4e0c8c CI: Restore lost variable for skipping Debian instructions
Change-Id: I6e0cbb9f974bbe305682afffdfece810307225e6
Reviewed-by: Toni Saario <toni.saario@qt.io>
2024-03-01 08:53:10 +02:00
Qt Submodule Update Bot
d20032ea60 Update submodules on 'dev in qt/qt5'
Change-Id: I3cc0c8a2dc4b907497be110d23b8f9b60419ef64
Reviewed-by: Qt Submodule Update Bot <qt_submodule_update_bot@qt-project.org>
2024-02-29 00:18:58 +00:00
Simo Fält
54245a4888 COIN: Update used chroot for Debian packages
Use Ubuntu 22.04 instead of 20.04

Pick-to: 6.7
Change-Id: If03ba14555fdcd0c98fab3843bdfd5c2ca1eba3f
Reviewed-by: Toni Saario <toni.saario@qt.io>
2024-02-28 05:24:10 +00:00
Alexandru Croitor
2c9664ca33 CMake: Integrate init-repository with the configure script
Calling configure will now implicitly run init-repository when
appropriate. See further down below for what "appropriate" means.

All supported init-repository options can be passed to configure as
except for -mirror, -oslo, -berlin.

This includes useful options like -submodules, -no-resolve-deps and
-no-optional-deps.

When running configure on a qt5.git clone without any submodules
cloned, configure will exit with a helpful error message suggesting to
pass -init-submodules, so it automatically clones missing repositories.
This means cloning is opt-in, so that internet access is not done
implicitly.

The error message also suggests passing the -submodules option.
This will affect which submodules will be cloned by init-repository
and which submodules will be configured by configure.
In this case -submodules is effectively an alias of
init-repository's -module-subset for cloning purposes.

When calling configure a second time, without -init-submodules, on an
already configured repo, init-repository behavior is entirely skipped.

-submodules now accepts init-repository-style special values like
"essential", "addon", "all", "existing", "-deprecated" for the purpose
of cloning submodules. The values are then translated into actual repos
that should also be configured or skipped by configure.

The default subset of cloned submodules is currently the same one as
init-repository, "default", which clones 44 actively maintained
repositories as well as deprecated submodules.

If configure is called a second time WITH -init-submodules, it's the
same as calling init-repository --force to re-initialize submodules.
In this case passing something like
 --submodules existing,<additional-submodules>
might make sense to add or remove submodules.

As a drive-by this also fixes the bug where you couldn't pass a
  configure -- -DFOO=0
parameter to configure, because it got treated as '0>', redirecting
from a different stream than stdout, leading to empty content in the
file.

[ChangeLog][General][Build System] The configure script now implicitly
calls init-repository when appropriate and accepts init-repository
command line options.

Fixes: QTBUG-120030
Task-number: QTBUG-122622
Change-Id: Iedbfcbf0a87c8ee89e40d00b6377b68296a65a62
Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@qt.io>
2024-02-28 06:24:02 +01:00
Alexandru Croitor
915b8d2f54 CMake: Add a test for init-repository
The new test uses the recently introduced upstream cmake test
infrastructure module, to ensure the execution log output is identical
between the old perl script and new the cmake script for a few basic
use cases. It is not an exhaustive test of all features. It should
work on Windows, macOS, Linux (assuming perl is installed).

There are also a few tests that only apply to the cmake-script
version for features that exist only in the latter (like the 'existing'
module-subset key).

The test is a 'manual' test instead of an 'auto' test because we don't
really want to clone so many submodules as part of every qt5.git
integration in Coin.
In the future, we could potentially add a nightly Jenkins job to run
the tests.

Task-number: QTBUG-120030
Change-Id: I4201d734c2877109102518b073dec24bb63edc24
Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@qt.io>
Reviewed-by: Joerg Bornemann <joerg.bornemann@qt.io>
Reviewed-by:  Alexey Edelev <alexey.edelev@qt.io>
2024-02-28 06:23:50 +01:00
Alexandru Croitor
b742509973 CMake: Add upstream cmake (3rdparty) test infrastructure module
It will be used to write some manual tests for init-repository to
ensure there are no big regressions between the perl and cmake
scripts.

It is only used for the manual tests and is not shipped or installed
as part of the Qt installation.

The code is licensed under BSD-3.

The files were renamed to be more inline with Qt's naming.

The contents of QtIRTestHelpers.cmake is one function from
<cmake-upstream>/Tests/RunCMake/CMakeLists.txt

The contents of QtIRRunCMake.cmake is the whole file
<cmake-upstream>/Tests/RunCMake/RunCMake.cmake

Task-number: QTBUG-120030
Change-Id: Ia3f459fe25b9b8c683a69b5dded2019e03eebdb9
Reviewed-by: Joerg Bornemann <joerg.bornemann@qt.io>
Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@qt.io>
Reviewed-by:  Alexey Edelev <alexey.edelev@qt.io>
2024-02-28 06:23:44 +01:00
Alexandru Croitor
29019c9cae CMake: Rewrite init-repository using CMake and .sh / .bat scripts
init-repository is now implemented using CMake + .sh / .bat scripts.

The intent behind the change is not to require Perl to checkout and
build Qt, because it can be troublesome to acquire on Windows and it
can also lead to issues during builds due to CMake picking up a Perl
distribution-shipped compiler.

All previous options were ported over like
- module-subset
- alternates
- etc.

A few new options were added:
- --resolve-deps / --no-resolve-deps
- --optional-deps / --no-optional-deps
- --verbose
and some other internal ones for testing reasons.

The new script does automatic resolving of dependencies
based on the depends / recommends keys in .gitmodules unless
--no-resolve-deps is passed.
So if you configure with --module-subset=qtsvg, the script will also
initialize qtbase.
If --no-optional-deps is passed, only required dependencies ('depends'
ky) will be included and optional dependencies ('recommends' key) will
be excluded.

The new script now has a new default behavior when calling
init-repository a second time with --force, without specifying a
--module-subset option. Instead of initializing all submodules, it
will just update the existing / previously initialized submodules.

It also understands a new module-subset keyword "existing", which
expands to the previously initialized submodules, so someone can
initialize an additional submodule by calling
 init-repository -f --module-subset=existing,qtsvg

Implementation notes:

The overall code flow is init-repository -> cmake/QtIRScript.cmake
-> qt_ir_run_main_script -> qt_ir_run_after_args_parsed ->
qt_ir_handle_init_submodules (recursive) -> qt_ir_clone_one_submodule
with some bells and whistles on the side.

The command line parsing is an adapted copy of the functions
in qtbase/cmake/QtProcessConfigureArgs.cmake. We can't use those exact
functions because qtbase is not available when init-repository is
initially called, and force cloning qtbase was deemed undesirable.

We also have a new mechanism to detect whether init-repository was
previously called. The perl script used the existence of the qtbase
submodule as the check. In the cmake script, we instead set a custom
marker into the local repo config file.

Otherwise the code logic should be a faithful reimplementation of
init-repository.pl aside from some small things like logging and
progress reporting.

The pre-existing git cloning logic in QtTopLevelHelpers was not used
because it would not be compatible with the alternates option and I
didn't want to accidentally break the pre-existing code. Plus
init-repository is a bit opinionated about how it clones and checks
out repos.
The dependency collection and sorting logic uses the pre-existing code
though.

See follow up commit about implicitly calling init-repository when
qt5/configure is called and the repo was not initialized before.

[ChangeLog][General] init-repository was rewritten using CMake. Perl
is no longer required to initialize the qt5.git super repo.

Task-number: QTBUG-120030
Task-number: QTBUG-122622
Change-Id: Ibc38ab79d3fdedd62111ebbec496eabd64c20d2b
Reviewed-by:  Alexey Edelev <alexey.edelev@qt.io>
Reviewed-by: Joerg Bornemann <joerg.bornemann@qt.io>
Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@qt.io>
2024-02-28 06:23:36 +01:00