Commit Graph

128 Commits

Author SHA1 Message Date
Alexandru Croitor
0e6c4224f0 CMake: Build minimal subset of tests in desktop static builds
Add new configure option -make minimal-static-tests and CMake option
QT_BUILD_MINIMAL_STATIC_TESTS. In conjunction with QT_BUILD_TESTS
it will enable building a minimal subset of tests when targeting
a static desktop Qt build.

In qtbase the minimal subset includes all the auto tests of testlib,
tools, corelib and cmake. In particular this will also do cmake build
tests and qmake build tests (tst_qmake)

Adjust CI instructions to enable building a minimal subset of static
tests when a platform configuration is tagged with the
MinimalStaticTests feature.

Fix and skip a few tests that were failing.

Pick-to: 6.1
Task-number: QTBUG-87580
Task-number: QTBUG-91869
Change-Id: I1fc311b8d5e743ccf05047fb9a7fdb813a645206
Reviewed-by: Joerg Bornemann <joerg.bornemann@qt.io>
2021-04-06 09:15:37 +01:00
Joerg Bornemann
4ae9922166 Move bin/qt-internal-configure-tests to libexec
Pick-to: 6.1
Task-number: QTBUG-88791
Change-Id: I78613128760b5820e6db17b0c09462e34f7c7bb2
Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org>
Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io>
2021-03-30 14:39:12 +01:00
Toni Saario
6172f3101e Allow disabling module build and building of tests per module
This patch enables per module control of the build instructions.
This enables documentation building in modules that are not capable
of building the module itself on linux.

Change-Id: I72b7931c5ffda9bf437a99c27c0bb340665ce927
Reviewed-by: Oliver Wolff <oliver.wolff@qt.io>
Reviewed-by: Simo Fält <simo.falt@qt.io>
2021-02-19 16:28:06 +02:00
Toni Saario
22d692e9e0 Doc Build: Do not fail if CMakeCache.txt does not exist
If we skip module build the CMakeCache.txt does not exist.

Change-Id: Ic44bddf29f1eef1e6ffc568c871d9d7e7de71f48
Reviewed-by: Oliver Wolff <oliver.wolff@qt.io>
Reviewed-by: Simo Fält <simo.falt@qt.io>
2021-02-19 16:27:47 +02:00
Assam Boudjelthia
136324ad62 Coin: fix android emulator script to use bash instead of sh
Task-number: QTBUG-91180
Pick-to: 6.0 6.1
Change-Id: I410c6769aac3b3b760ff35aa71d52c8a5d6c1143
Reviewed-by: Toni Saario <toni.saario@qt.io>
2021-02-19 10:31:44 +02:00
Assam Boudjelthia
bcbdbd50fe Coin: remove workarounds to allow running Android tests
We had two workarounds:
* script that adds Gui to tests
* create a symbolic link for the qt install dir to fake_prefix which
androiddelployqt was expecting them to be under

Both issues are fixed, thus removing the workarounds.

Pick-to: 6.1 6.0
Change-Id: Ic022bece15afe92c693d573893d260b13b4227ed
Reviewed-by: Heikki Halmet <heikki.halmet@qt.io>
2021-02-18 13:42:19 +02:00
Marianne Yrjänä
4d9a5f28ee Add QNX7.1 to CI
Change-Id: Ib7288844f3474632d70b60beadfb2b06379855c6
Reviewed-by: Simo Fält <simo.falt@qt.io>
2021-01-19 15:17:55 +02:00
Marianne Yrjänä
2481d92c6e Prepare QNX env for cmake build
QTQAINFRA-3768

Change-Id: I5993acd282843095deba3d34006b7aa3e23db448
Reviewed-by: Heikki Halmet <heikki.halmet@qt.io>
Reviewed-by: Simo Fält <simo.falt@qt.io>
2021-01-11 15:02:09 +02:00
Assam Boudjelthia
f3cfdb905b Android: install android test scripts to libexec to test on all modules
The scripts that are used by Android test VMs are now located in qtbase
and are not easily usable by other modules. To fix that and allow other
modules to use those scripts, we install them with cmake into libexec.

Task-number: QTQAINFRA-4052
Pick-to: 6.0
Change-Id: Ibdd3658fd9fe7e007104a85d9999028a2de99a33
Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io>
2020-12-11 20:28:50 +00:00
Assam Boudjelthia
86a655387c Android: restart emulator if it gets stuck during testing
Task-number: QTQAINFRA-4052
Pick-to: 6.0
Change-Id: Ie1a0d1c6b6c5cd0425b7ccf195ac57408142f3c3
Reviewed-by: Simo Fält <simo.falt@qt.io>
2020-12-11 11:09:22 +02:00
Alexandru Croitor
24f12d0cef CMake: Build examples with qmake against a CMake built Qt
We want to remove the Qt .pro files for projects, except examples,
because examples are still meant to build with qmake.

To not lose coverage on examples built with qmake, add instructions that
will build the qtrepo/examples folder with qmake when the CMake
configuration has -DQT_BUILD_EXAMPLES=ON.

This means that such configurations will build examples both with CMake
and qmake.

Aside from making sure that our examples will still build with qmake, it
will gives us some some coverage that a CMake-built qmake works
correctly.

Implementation-wise, add new instructions files that can call qmake and
make depending on configuration and target type.

Pick-to: 6.0
Fixes: QTBUG-85986
Change-Id: Ie8f4cbcda03c94da2aef455e32f48dad41a4bdb0
Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io>
2020-12-04 15:39:32 +01:00
Toni Saario
7fd89ed63b Add instructions to build documentation
This enables documentation building in add-ons and other modules that
need to build docs.

Task-number: QTQAINFRA-3972
Change-Id: Ic2763d6d36d26e5a1267b312727c3c268ad6d114
Reviewed-by: Topi Reiniö <topi.reinio@qt.io>
Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io>
(cherry picked from commit e84e85dd4c59f2c79f81ba4d8d7f04397eb0003c)
Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
2020-12-01 08:12:09 +00:00
Joerg Bornemann
fb21a5ce1a CMake: Name QT_NO_MAKE_*/BUILD_* variables consistently
For consistency, apply the following renamings:
QT_NO_MAKE_EXAMPLES -> QT_BUILD_EXAMPLES_BY_DEFAULT
QT_NO_MAKE_TESTS    -> QT_BUILD_TESTS_BY_DEFAULT
QT_NO_MAKE_TOOLS    -> QT_BUILD_TOOLS_BY_DEFAULT
BUILD_EXAMPLES      -> QT_BUILD_EXAMPLES
BUILD_TESTING       -> QT_BUILD_TESTS

This should help to better convey the difference between "BUILD" and
"NO_MAKE".

To configure tests, but not to build them by default, pass the
following to CMake:
-DQT_BUILD_TESTS=ON -DQT_BUILD_TESTS_BY_DEFAULT=OFF

Analoguous for examples:
-DQT_BUILD_EXAMPLES=ON -DQT_BUILD_EXAMPLES_BY_DEFAULT=OFF

Tools can be excluded from the default build with:
-DBUILD_TOOLS_BY_DEFAULT=OFF

The variable BUILD_TESTING is still available and initialized with the
value of QT_BUILD_TESTS.

Pick-to: 6.0 6.0.0
Change-Id: Ie5f29dfbdca8bfa8d687981dfe8c19c0397ca080
Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io>
2020-11-20 20:38:03 +01:00
Simo Fält
13c460d0ff Add coin instructions to run Android test in emulator
Task-number: QTQAINFRA-3867
Pick-to: 6.0
Change-Id: Ie6dd9c2dfeeccd526c2133d7ac03efce5b7ed091
Reviewed-by: Assam Boudjelthia <assam.boudjelthia@qt.io>
2020-11-20 13:28:31 +00:00
Alexandru Croitor
bcc7d34540 CMake: Provide a qt-internal-configure-tests script
This is meant to be called by our CI instructions to build standalone
tests of a Qt repository.

Currently it just calls qt-cmake with
-DQT_BUILD_STANDALONE_TESTS=ON, but it might contain more things in
the future.

The script also simplifies configuring standalone tests locally, due
to not having to remember the name of the magical variable.

Change our CI instructions to use the new script.

Change-Id: I6bc02b4e94adc9d0d05fecb0fe70a561043271f1
Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org>
Reviewed-by: Cristian Adam <cristian.adam@qt.io>
2020-10-26 15:23:25 +01:00
Alexandru Croitor
054c1aaf79 CMake: Don't use mkspec set by sourcing b2qt environment script
qmake sees the QMAKESPEC variable and uses it when building tests,
instead of using the target mkspec written in the target_qt.conf file
by the build system. Unset the environment variable to force usage
of the mkspec specified when confugring Qt.

Task-number: QTBUG-86053
Change-Id: I24ceddd1436393b496665e439dd1441ecbd36df7
Reviewed-by: Joerg Bornemann <joerg.bornemann@qt.io>
Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org>
2020-10-26 13:46:49 +01:00
Toni Saario
a5b963c638 Set MSVC environment script specifically for MSVC
Current clause is too broad and new compilers do not work with it
properly. E.g. Clang.

Change-Id: I7afadfec07935e76882d27ec7ab408b0e597654b
Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io>
2020-10-01 22:54:22 +03:00
Toni Saario
f26d4def67 Read test specific configure arguments from environment
Reading configure arguments for tests from environment allows control
of CMake args from outside of the module itself. TEST_CONFIGURE_ARGS is
read and appended to host tests build and TARGET_TEST_CONFIGURE_ARGS
respectively for target's tests.

Change-Id: I8270b0254525aec24f7614cba2b90b291e5eb3d2
Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io>
2020-09-28 05:28:22 +00:00
Toni Saario
19d2e61f87 Respect abort testing on failure flag
On regular commits we do not want to waste time running all test if
there is failures.

Change-Id: I050d191058293f4311268169eb26754349930129
Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io>
Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org>
2020-09-25 23:31:02 +03:00
Toni Saario
716e41e86f CMake: Use CMAKE_AUTOGEN_VERBOSE to see moc invocations
In qmake builds we can see the moc invocations, whereas in CMake builds
by default we don't.
Modify the Coin instructions to pass the CMAKE_AUTOGEN_VERBOSE cache
variable so that AUTOMOC prints the moc invocations.

Change-Id: I50be13224839fbbdece3c9e8a4935a72aba91a8e
Reviewed-by: Cristian Adam <cristian.adam@qt.io>
2020-07-24 17:33:17 +02:00
Toni Saario
684fea1314 CMake: Add instructions to re-use host artifacts for target builds
We don't want to build the host Qt configuration every single time we
do a cross-build in Coin.
Coin learned some new qt5.git platform configuration options, which
allow specifying a dependency between a host Coin configuration and a
target one.

This means we can specify a host macOS config as a dependency when
building iOS, and the host artifacts for all dependent repos
(qtbase, qtsvg, qtdeclarative, etc) will be installed into
/home/qt/work/install (as specified by the
{{.AgentWorkingDir}}/install location).

Same for Linux + Android and Linux + qemu.

Modify the qtbase Coin instructions to use these installed host
artifacts if such a dependency is present (platformDependency is not
null). The target artifacts will be installed into a subfolder of the
host installation, called 'target', e.g. /home/qt/work/install/target.

If a dependency is not present, continue to build a host Qt before
doing a target build. This allows gradual conversion of configurations
in case if some of them don't work, or if the dependencies.yaml have
not propagated far enough for all new repos to use the new
instructions.
In this case the locations of the artifacts are different
host - /home/qt/work/install/host
target - /home/qt/work/install/target

Task-number: QTBUG-85623
Change-Id: I33539f4376034539fb7db80293dc4d39dcb9539b
Reviewed-by: Cristian Adam <cristian.adam@qt.io>
2020-07-24 17:33:13 +02:00
Alexandru Croitor
70f7155fcc CMake: Propagate non-qtbase configure args to other repositories
Currently configure arguments specified in
qt5.git/coin/platform_configs are only used when configuring
qtbase itself. Sadly, Coin lacks support for specifying per-repo
configure flags.

Until Coin gets the feature, the best we can do is to pass
all the configure flags to each repo we are configuring.

Unfortunately if we pass all of qtbase's configure flags to other
repos it will break cross-compiling configurations (because the
toolchain argument would be overridden with the initial qtbase
provided toolchain instead of the Qt generated chainloading one).

We thus have to separate flags that should and shouldn't be passed
to other repos.

Introduce usage of two new environment variables called
NON_QTBASE_CONFIGURE_ARGS and NON_QTBASE_TARGET_CONFIGURE_ARGS.
Additional configure arguments can be specified in these variables,
and they will be used when configuring repositories, with the
exception of qtbase.

Ultimately, this is needed to disable detection / usage of certain
strawberry perl system libraries in qtimageformats on MinGW.
Doing that prevents crashes of the tst_qtiff test.

Minor implementation note is that the environment variables have to be
explicitly set in qt5.git platform_configs otherwise it breaks the
Windows Ninja Multi-Config configuration with the error
"The system cannot find the file specified".

Supplements 4b4f0be08debcfde62caf4066222b348ce65dea1 from qt5.git.
Amends previous revert 946fc92d20

Task-number: QTBUG-84886
Task-number: COIN-601
Change-Id: Ie4305c5d799bf4a29da5032a691e797b49c3cf33
Reviewed-by: Joerg Bornemann <joerg.bornemann@qt.io>
2020-07-13 21:01:59 +02:00
Alexandru Croitor
946fc92d20 Revert "CMake: Propagate configure args to all repositories"
This reverts commit adbadc57df.

The change breaks building of repos other than qtbase when
cross-compiling to Android. Not sure yet why.

Change-Id: I6a6efef5360ed141c0c5056afb03b1a0d90439ae
Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io>
2020-07-08 21:14:18 +02:00
Alexandru Croitor
adbadc57df CMake: Propagate configure args to all repositories
Currently the configure arguments specified in qt5.git/coin are only
used when building qtbase itself. None of them are used when
configuring other repos like qtsvg.

While in principle passing all the configure arguments to other repos
is not a good thing, we need to do it to circumvent the lack of
support for specifying per-repo configure flags in Coin.

It's needed to disable detection / usage of certain strawberry perl
system libraries in qtimageformats on MinGW. Doing that prevents
crashes of the tst_qtiff test.

Supplements 4b4f0be08debcfde62caf4066222b348ce65dea1 from qt5.git.

Task-number: QTBUG-84886
Task-number: COIN-601
Change-Id: I59be8c62ebb10282db1b0a9da2d3e3e5595c925f
Reviewed-by: Joerg Bornemann <joerg.bornemann@qt.io>
2020-07-08 11:01:38 +02:00
Joerg Bornemann
860220bd33 CMake: Re-run tests in CI like we do for the qmake build
The test runner re-runs failing tests up to 5 times. We did not do this
for the CMake build, and now we're getting lots of flaky tests failing.
Fix this by passing the -repeat until-pass:5 parameter to ctest.

Change-Id: I6ff3c1e7901bc22cafec87b15d087eab2a565c65
Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io>
Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@qt.io>
2020-07-06 12:17:51 +02:00
Alexandru Croitor
7c51f7ccc5 CMake: Enable enforcing CI tests in qtbase
Any failing tests in CMake configurations will now prevent
integrations to go through in the qtbase repository.

Task-number: QTBUG-84886
Change-Id: I8c963cb2540a29a9c8702acd3d282da82fb521e7
Reviewed-by: Joerg Bornemann <joerg.bornemann@qt.io>
Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org>
2020-07-03 11:14:11 +02:00
Alexandru Croitor
0423814a2f CMake: Add support for enforcing passing CI tests per repository
Create a new test instructions yaml template that does not ignore the
exit code of running tests. This template can be included by
repositories where tests pass in all configurations tested by the CI.

The template should be included in module_config.yaml via

Test:
    - !include "{{qt/qtbase}}/coin_module_test_template_v3.yaml"

This allows us to opt into enforcing test runs per repository,
rather than waiting to fix all tests in all qt5.git repositories.

Implementation notes

Try to extract the common parts of the instructions as much as
possible to avoid duplication. Unfortunately some duplication still
remains due to the restricted yaml language supported by Coin.

Add a short README.md file that describes the differences between the
existing templates.

The v2 non-enforcing test template should probably be removed in
the future.

Task-number: QTBUG-84886
Task-number: QTBUG-85364
Change-Id: I718fc3cb44d6aefdbebc2fd2088a910a8095a375
Reviewed-by: Joerg Bornemann <joerg.bornemann@qt.io>
2020-07-03 11:14:11 +02:00
Alexandru Croitor
5d6705c567 CMake: Skip / ignore failing tests on CMake platforms
Skip crashing tests and ignore failing tests on CMake platforms.

Add missing QTEST_ENVIRONMENT=ci env var assignment to Coin test
instructions. This was hardcoded by the Coin code for qmake
configurations.

Task-number: QTBUG-85364
Change-Id: Id2312e504a0d36b8f8596d4cebaa49c63731406e
Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org>
Reviewed-by: Joerg Bornemann <joerg.bornemann@qt.io>
2020-07-01 14:55:29 +02:00
Alexandru Croitor
167741717f CMake: Fix tst_qmake not to hang and re-enable it
We don't really know why, but using the ctest
--force-new-ctest-process flag stops the test from hanging.

Also re-enable the test.

Task-number: QTBUG-78449
Task-number: QTBUG-81365
Change-Id: I33094696dfe3f610dc257089074b1c2a9926f651
Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org>
Reviewed-by: Cristian Adam <cristian.adam@qt.io>
2020-06-26 22:14:09 +02:00
Alexandru Croitor
a2c772dc58 CMake: Use build environment prefix.bat when running tests
Tests like tst_qmake need the build environment to be able to build
apps / libraries. This is mostly needed for MSVC.

Set the TESTS_ENV_PREFIX env var to point to the proper prefix.bat
(host or target) and use that when running ctest.

Task-number: QTBUG-85240
Task-number: QTBUG-78449
Task-number: QTBUG-81365
Change-Id: I6fa68714202ac7fc703973fc772e03b84790a043
Reviewed-by: Cristian Adam <cristian.adam@qt.io>
2020-06-26 22:14:04 +02:00
Alexandru Croitor
d8f814cdb7 CMake: Add instructions for building and testing qemu configs
Before this change, tests were never built for cross-compiling
configurations.

Add instructions that build and run tests for qemu configurations.
This required a bit of abstraction / indirection to find out what's
the path to the correct qt-cmake call, as well as prepending the
correct env prefix to each call (either the host one or the target
one).

Also, the QEMU configuration requires a few environment variables
to pick up the correct runtime linker and which qpa plugin to use
for running tests.

Finally, make sure the tests are not built and run if the DisableTests
feature is set in the configuration.

Task-number: QTBUG-84423
Change-Id: I0cec28c801a657e67cfa48f3c61cfe487109946b
Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org>
Reviewed-by: Joerg Bornemann <joerg.bornemann@qt.io>
2020-06-25 14:11:56 +02:00
Alexandru Croitor
941039356d CMake: Use the same generator when building other repositories
If we configure qtbase with Ninja Multi-Config, we should use the same
generator when building other repositories as well, to ensure that
all repositories have the same set of configurations (debug and
release). To do that, the Coin instructions will call the
qt-cmake-private wrapper which records the generator used.

For standalone tests continue to use qt-cmake, so that only a single
configuration is built (no need to build tests in both debug and
release mode). The configuration built will be the first one from
the initial list with which qtbase was configured (usually
RelWithDebiInfo). This is ensured by the
QtBuildInternalsExtraConfig.cmake file.

Task-number: QTBUG-80900
Change-Id: I701b2f652a22d51e640a6fdf19c3b2d2dfb34d5c
Reviewed-by: Simon Hausmann <hausmann@gmail.com>
2020-05-19 10:16:16 +02:00
Alexandru Croitor
b3e01d608e CMake: Use custom install script to support Ninja Multi-Config builds
Calling cmake --install . only installs a single configuration.

To install both debug and release artifacts, the install
invocation needs to be done for each configuration.

To keep the Coin instruction code simpler, delegate the looping
over configurations to a custom CMake script, and use it in the
Coin instructions.

Replace all cmake --install calls in the instructions with calls
to either call_host_install.yaml or call_target_install.yaml.

The path to the script depends on whether we are building
qtbase or another module. In the former case the script should
be called from the build dir, otherwise from the install dir.

The other distinction is whether the host or target env prefix
needs to be added.

Task-number: QTBUG-80900
Change-Id: Ied4bf739e2b1a2307f22fc79c1cfad746c8cbc44
Reviewed-by: Joerg Bornemann <joerg.bornemann@qt.io>
2020-05-19 10:16:11 +02:00
Alexandru Croitor
f2ae9b3baa CMake: Adjust instructions for MinGW builds
Don't do any of the MSVC-related instructions when targeting MinGW.
Make sure to pass gcc and g++ as compilers when targeting MinGW.
Don't use any ENV_PREFIX that sets up the MSVC environment.

Task-number: QTBUG-75578
Change-Id: Icf5c39b58391d473d914fe8dc17d062812b07df1
Reviewed-by: Simon Hausmann <hausmann@gmail.com>
2020-05-01 19:11:22 +02:00
Simon Hausmann
e9b8837c31 Add support for building building against yocto
Using an environment prefix wrapper shell script that sources the SDK's
env setup. The script also ensure that we don't loose cmake on the way.

Change-Id: I9d08bc58f0efaf688512ab26a7ddb800309a5015
Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io>
2020-04-29 22:26:25 +02:00
Simon Hausmann
9c76047b07 Instruction selection fix for qemu cross-builds
When building for qemu, the target "os" is still set to Linux, so try to
detect qemu by looking at the version field.

Change-Id: I7c66cdb29a47a44d5b8a394977136139fc646155
Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io>
2020-04-29 22:26:20 +02:00
Alexandru Croitor
7dfa00e1cc Coin: Fix incorrect target OS values used in instructions
The friendly named values should be used rather than the
all caps names.

Change-Id: I44dbe8c25d405424c5cd2c9527b6e884511ac269
Reviewed-by: Toni Saario <toni.saario@qt.io>
Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
2020-04-02 09:39:27 +02:00
Alexandru Croitor
a02ec931b6 CMake: Pass --verbose flag to ninja
To allow seeing the exact compiler flags when build in Coin.
We do the same for qmake builds.

Change-Id: I8c43f35b95d722d914aaeaa8860720a3a0578737
Reviewed-by: Leander Beernaert <leander.beernaert@qt.io>
Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io>
2020-03-13 19:14:59 +01:00
Leander Beernaert
3c85440b16 CMake: Build standalone tests out of source in Coin
Due to a bug in upstream CMake regarding relative paths being encoded
into the build.ninja file when performing in source builds, we need to
build the tests in a standalone directory outside of the source
directory.

Failing to do so will cause the source directory for the test to be
incorrect which can cause tests to fails and never read the
BLACKLIST.txt file. See the mentioned issue for details.

Task-number: QTBUG-82820
Change-Id: Ie5c178a92369d6b9decff625bd9641e53088a9fa
Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io>
2020-03-11 13:46:51 +00:00
Liang Qi
60feaae196 coin: remove contact person for cmake issues
Change-Id: Id274bf821f424077e7259ed42433f2ef88153c36
Reviewed-by: Toni Saario <toni.saario@qt.io>
Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io>
2020-02-13 20:14:12 +01:00
Alexandru Croitor
abc2e51041 Fix cross compilation builds with template v2
Make sure to split the command arguments after variable substitution
like it is done in call_cmake.yaml.

Amends d445112cc0

Change-Id: Id23fcfa5b58c33e05495413fb10349fbcff1bfac
Reviewed-by: Leander Beernaert <leander.beernaert@qt.io>
Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io>
2020-02-07 12:37:10 +00:00
Liang Qi
d445112cc0 cmake: upload artifact for qtbase android build and etc
Task-number: QTBUG-78945
Change-Id: I3361e63ed4830ac0e1ebb9d4b9495df09c45f476
Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io>
2020-02-07 10:05:51 +00:00
Alexandru Croitor
c9bea1ad62 Add initial support for CMake "Ninja Multi-Config" generator
This allows doing debug_and_release builds with Ninja on all
platforms.
The "Ninja Multi-Config generator" is available starting with CMake
3.17.

Desired configurations can be set via CMAKE_CONFIGURATION_TYPES.
Possible values: "Release, Debug, RelWithDebInfo, MinRelSize".
For example -DCMAKE_CONFIGURATION_TYPES="Release;Debug".

The first configuration is the 'default' configuration which is
built when calling ninja with no arguments.

To build all targets of a certain configuration use "ninja all:Release"
or "ninja all:Debug".

To build all targets in all configurations use "ninja all:all".

Note that the first configuration influences which configuration of
tools will be used when building the libraries for all configurations.
In simple terms, when configured with
-DCMAKE_CONFIGURATION_TYPES="Release;Debug" the release version of moc
is used by AUTOMOC.
When configured with -DCMAKE_CONFIGURATION_TYPES="Debug;Release"
the debug version of moc is used by AUTOMOC.

Framework builds and Ninja Multi-Config don't currently work together
due to multiple bugs in CMake, which ends up generating an invalid ninja
file with duplicate rules. There are also issues with placement of the
debug artifacts.

This will be handled in a follow up patch after CMake is fixed.

Task-number: QTBUG-76899
Change-Id: If224adc0b71b7d1d6606738101536146aa866cd7
Reviewed-by: Qt CMake Build Bot
Reviewed-by: Leander Beernaert <leander.beernaert@qt.io>
Reviewed-by: Cristian Adam <cristian.adam@qt.io>
2020-01-27 11:47:57 +00:00
Alexandru Croitor
de3a806def Make standalone tests build via top level repo project
Previously repo/tests/CMakeLists.txt was a standalone project on which
CMake could be called. This was useful for Coin to be able to build
and package only tests, but was a bit troublesome because that means
having to specify the usual boilerplate like minimum CMake version,
which packages to find in every tests.pro project.

Instead of having a separate standalone project, modify the top level
project and associated CMake code to allow passing a special
QT_BUILD_STANDALONE_TESTS variable, which causes the top level project
to build only tests, and find Qt in the previously installed qt
location.

This also means that when building a repo, we generate a
${repo_name}TestsConfig.cmake file which does find_package on all the
modules that have been built as part of that repo. So that when
standalone tests bare built for that repo, the modules are
automatically found.

qt_set_up_standalone_tests_build() is modified to be a no-op because
it is not needed anymore. Its usage should be removed from all the
other repos, and then removed from qtbase.

Non-adjusted tests/CMakeLists.txt projects in other repositories
should still be buildable with the current code, until they are updated
to the new format.

Adjust the Coin build instructions to build the standalone tests in a
separate directory.

Adjust pro2cmake to generate new structure for the tests/tests.pro
projects.

Adjust the qtbase tests project.

Fixes: QTBUG-79239
Change-Id: Ib4b66bc772d8876cdcbae1e90ce5a5a5234fa675
Reviewed-by: Qt CMake Build Bot
Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
2019-11-08 15:42:32 +00:00
Toni Saario
9cd12fad8b Fix invalid condition for test execution
Equals_value check that if the property is same as given value.
Equals_property compares properties in this case the OS of target and host.

Change-Id: Ica42f0f99562911a97d2f6bd02bd8a6420c980ac
Reviewed-by: Qt CMake Build Bot
Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io>
2019-10-25 08:53:49 +00:00
Liang Qi
f03ac58b1e cmake: add Android build
Task-number: QTBUG-78945
Change-Id: I0c9d3cc7de6d3bfb346a77d95a6bbcad6d707a74
Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
Reviewed-by: Qt CMake Build Bot
2019-10-11 20:51:17 +00:00
Liang Qi
8b1e6c2e15 instructions: executeCommandArgumentSplitingBehavior when calling qt-cmake
Change-Id: Ibe589ee181a08df9ec999c9b769fa560b2716aac
Reviewed-by: Toni Saario <toni.saario@qt.io>
Reviewed-by: Liang Qi <liang.qi@qt.io>
Reviewed-by: Qt CMake Build Bot
2019-09-26 06:10:46 +00:00
Liang Qi
30ceee4d9c instructions: start to use --parallel when cmake build
Change-Id: Ia67f0f9413c2f99dbc3b7e978256c0301502ea1d
Reviewed-by: Qt CMake Build Bot
Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
2019-09-25 17:04:55 +00:00
Liang Qi
e0fbb7306d coin: increase the timeout between output for all
Change-Id: I3906a08f5e0cce9abeeafbb67a83d31fbf67c703
Reviewed-by: Toni Saario <toni.saario@qt.io>
Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io>
2019-09-03 11:49:07 +00:00
Liang Qi
8367a51c6d Share most common part of module_config.yaml
Change-Id: Ieea5b662e039cff24e26a127b4a3a8610ed588cc
Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io>
2019-08-30 08:40:02 +00:00
Jędrzej Nowacki
12b73cba89 Split module_config.yaml
There are things that could be shared around all Qt submodules. In particular
compiler specific configuration should not be repeated over and over.
The new file can be included directly from all modules that uses QtBase.

In longer term one would have a separate repository for such instructions as
most of them are not QtBase specific.

Change-Id: I0590b2a0c78b73e1b9dbb27cc1da6568cbe56563
Reviewed-by: Qt CMake Build Bot
Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
2019-07-04 07:06:52 +00:00
Jędrzej Nowacki
872293ad58 Remove debug print
We do not need to print the whole cmake configuration anymore.

Change-Id: I429e06f65258d0be0cf8b7c90e81c0593718e48c
Reviewed-by: Liang Qi <liang.qi@qt.io>
Reviewed-by: Qt CMake Build Bot
2019-07-02 14:43:20 +00:00
Jędrzej Nowacki
b2408ea1ae Fix check for static builds
We should check if configureArgs has "-DBUILD_SHARED_LIBS=OFF", that means
"contains_value" not "in_values".

Change-Id: I6c0c3ac695fa439c68f3027e70adc389f6fb27c1
Reviewed-by: Jędrzej Nowacki <jedrzej.nowacki@qt.io>
2019-07-02 14:10:27 +00:00
Jędrzej Nowacki
bb928e0fb2 Add proper test archive name
MODULE_ARTIFACTS_RELATIVE_STORAGE_PATH was pointing to a build
artifact, instead of a path to a successful item.

Change-Id: I01490e63e70beae2f613cda5451a9e2ddb5451fa
Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
2019-07-02 13:09:16 +00:00
Jędrzej Nowacki
655e8113cd Skip building tests for static builds
We do not run the test in such configuration. In theory the build
should success (it doesn't for now) but it creates a lot of data.
So the coverage gain vs cost ratio is not great.

This workaround aims to unblock cmake builds.

Change-Id: Icd730d88bf800ee2e7764704a92238ec147d47f9
Reviewed-by: Qt CMake Build Bot
Reviewed-by: Liang Qi <liang.qi@qt.io>
2019-07-02 13:08:59 +00:00
Jędrzej Nowacki
65d5e725d3 Handle CMAKE_C_COMPILER and CMAKE_CXX_COMPILER automatically
We do not need or should to define these variables in the product
configuration file. It should be enough to just have the compiler
name.

Change-Id: I797958a2c35641f1b79e4e74f3feb49312f8b9c4
Reviewed-by: Jędrzej Nowacki <jedrzej.nowacki@qt.io>
2019-07-02 13:08:41 +00:00
Simon Hausmann
3607ff064b Disable tests when building statically
The resulting test artifacts are way to huge to upload.

Change-Id: I6df1f1c4bdb0fe2cfb7f7baed8999a1ee24b879e
Reviewed-by: Jędrzej Nowacki <jedrzej.nowacki@qt.io>
2019-07-02 13:08:26 +00:00
Simon Hausmann
5488c380d1 Fix symmetry between test artifact handling
The module yaml file provides the instruction for creating and upload
the test artifacts, it might as well provide the instruction for
downloading it. Coin sets the corresponding environment variable for the
storage path now.

Change-Id: I4aabe60e28c0c1a6d5934b3b7b797835a793a7fe
Reviewed-by: Jędrzej Nowacki <jedrzej.nowacki@qt.io>
2019-07-01 11:33:26 +00:00
Simon Hausmann
dea8520bf1 Run tests using ctest
As an initial way this allows running tests. Coin does not yet collect
the results and the logic for re-running is inside ctest.

Change-Id: Ieab619d5f8f4ebdd8cd1293489db36d0bbd7c74a
Reviewed-by: Jędrzej Nowacki <jedrzej.nowacki@qt.io>
Reviewed-by: Liang Qi <liang.qi@qt.io>
2019-07-01 11:29:45 +00:00
Simon Hausmann
f8c52530f7 Simplify test compilation
We don't need the full cmake invocation as when configuring, instead we
can use the qt-cmake wrapper script that uses the generated toolchain
file.

Change-Id: Ie0d554fbf8543d950112108d6a3f8a7c3a58a6a6
Reviewed-by: Qt CMake Build Bot
Reviewed-by: Jędrzej Nowacki <jedrzej.nowacki@qt.io>
2019-06-26 13:26:27 +00:00
Simon Hausmann
ebfd09e7d6 Fix early warning system
Remove dummy test instructions that don't work right now and cause
failures.

Change-Id: I30195fe605419a8eb462e8315f71718dd86df412
Reviewed-by: Liang Qi <liang.qi@qt.io>
2019-06-25 08:28:52 +00:00
Liang Qi
cccc9fc59b SplitAfterVariableSubstitution is also needed for building tests
Just follow da7f40f7c2.

Change-Id: Iac0e96a42fa97bc002e3f11b6a6317ddc6e4187b
Reviewed-by: Jędrzej Nowacki <jedrzej.nowacki@qt.io>
2019-06-24 08:13:49 +00:00
Jędrzej Nowacki
ebbf4a1d96 Move ICC compiler name setup to instructions level
That way we can simplify product level configuration.

Change-Id: I6825a10e4652dc7a730d23aaa7d4e7db9c079e50
Reviewed-by: Qt CMake Build Bot
Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
2019-06-24 06:23:25 +00:00
Jędrzej Nowacki
da7f40f7c2 Update the instructions after CI changed way of splitting arguments
Now execute command can directly specified how the arguments should
be divided. The default option doesn't work well for CONFIGURE_ARGS,
because we want to pass it's result as a separate subprocess
arguments.

Change-Id: I6b7adb04164f5568d9ad2f45e3334d7a7a49bc79
Reviewed-by: Jędrzej Nowacki <jedrzej.nowacki@qt.io>
2019-06-24 06:13:04 +00:00
Simon Hausmann
d0183527d4 Change cmake generator selection mechanism
By using the new environment variable for the generator selection
introduced in 3.15, we can later select the visual studio generator once
the qtbase build is fixed. This will simplify the VS selection code in
this file and allow getting rid of the ENV_PREFIX and .bat file.

Change-Id: I9f76b5714450ffa60b496aef0ce5a0c21e843bef
Reviewed-by: Jędrzej Nowacki <jedrzej.nowacki@qt.io>
2019-06-21 12:50:49 +00:00
Simon Hausmann
b0bd50d339 Prepare for running tests with cmake
This is just a small step towards the situation where we build the tests
during the module build phase and later extract and merely run them.

The general steps we need are:

    * build tests separately, which includes the cmake test plan
    * let coin archive the tests (build) directory
    * in the test VM unpack everything
    * run ctest on the test plan that was part of the tests archive

This patch implements the first two steps.

Change-Id: Ifb8321015d0d18ad20e8cf20bb8b746030202daf
Reviewed-by: Jędrzej Nowacki <jedrzej.nowacki@qt.io>
2019-06-21 12:00:13 +00:00
Jędrzej Nowacki
06a552eab0 Port ICC specific instructions
Coin implicitly was exporting some variables if ICC was used.

This patch is just a first step to enable ICC in CI. To make
it really working one would need to fix the QtBase code and
enable ICC in qt5 repository.

Change-Id: I2fca19ff10d7390fa013f511f167c0c1c2fba427
Reviewed-by: Jędrzej Nowacki <jedrzej.nowacki@qt.io>
2019-06-17 09:21:20 +00:00
Jędrzej Nowacki
d489400448 Simple typo fixup
Change-Id: Ifd2c6c3eef5aea4decdbe1fc6221139bf3447ba6
Reviewed-by: Qt CMake Build Bot
Reviewed-by: Liang Qi <liang.qi@qt.io>
2019-06-17 09:14:14 +00:00
Simon Hausmann
4de70ce952 Avoid hardcoding the underlying build tool
Since 3.15, not only --build can call the low-level build tool,
--install can also be used to run the installation. There's also an
environment variable that can be used to control the backend at cmake
time, but that may only be useful later.

Change-Id: I8c1ee48f946e110af3e824cf8980bbacbb94db99
Reviewed-by: Jędrzej Nowacki <jedrzej.nowacki@qt.io>
Reviewed-by: Qt CMake Build Bot
2019-06-17 09:10:32 +00:00
Jędrzej Nowacki
341cc6e5bb Try to use %ProgramFiles(x86)% instead of custom code
On Windows, we have a problem with locating MSVC. Depending on system
version it can be installed in different directories. Currently
we have a custom logic to handle it, but in theory we could just use
"ProgramFiles(x86)" to abstract it.

Change-Id: Ia94a41d9ef6229de712606f9a9d3d61a0abeb24f
Reviewed-by: Liang Qi <liang.qi@qt.io>
Reviewed-by: Jędrzej Nowacki <jedrzej.nowacki@qt.io>
2019-06-13 11:38:13 +00:00
Jędrzej Nowacki
d59fadb2da Remove double negations
As now the configuration syntax supports enable_if, we can get rid
of double negations.

Change-Id: I5b8b695d4f7a72cd1a836b9b427096fb4e3b85a7
Reviewed-by: Liang Qi <liang.qi@qt.io>
Reviewed-by: Jędrzej Nowacki <jedrzej.nowacki@qt.io>
2019-06-13 11:37:40 +00:00
Jędrzej Nowacki
82840d2660 Implement command prefix
The current CI magically add prefix to every executed command if
target compiler is MSVC. The prefix just calls vcvarsall.bat.
The script has to be called for every command, because of the CI
agent runs every command as a subprocess. It means that script
sourced environment is not passed to subsequent commands,
therefore all changes are lost.

The prefix, as a concept, has known performance issues (COIN-253),
so in long term it would be nice to move to another solution.

CustomModule doesn't support prefix. Therefore the proposed approach
moves the ugliness from CI code to the yaml configuration file.
It has two advantages; nothing needs to be implemented on the CI
level and hopefully someone in future will clean it up as
the problem is more visible and publicly fixable.

Change-Id: Ice3cff89e3a59b2a57e675b7892fde0d04433ba8
Reviewed-by: Liang Qi <liang.qi@qt.io>
2019-06-12 11:16:57 +00:00
Jędrzej Nowacki
ce11410caa Use ninja as default builder
That allows us to skip all the madness of choosing between
make/nmake/jom.

In addition it is actually faster to build with ninja, then other
tools.

Change-Id: I31049a292495800606cede6f15011d97af7c3e41
Reviewed-by: Liang Qi <liang.qi@qt.io>
Reviewed-by: Qt CMake Build Bot
2019-06-12 11:16:11 +00:00
Jędrzej Nowacki
87bb219a72 Move some configure arguments from qt5 configuration file
These arguments are specific to the build and changes to them are _not_
affecting configuration.

Change-Id: I8c46a0dbea8978f13e78c5cb8f41987f4fde09c8
Reviewed-by: Qt CMake Build Bot
Reviewed-by: Liang Qi <liang.qi@qt.io>
2019-05-22 14:52:01 +00:00
Jędrzej Nowacki
d932ac44df Adjust timeouts in module_config.yaml
Signing package may take more then 10s while calling echo really
should take less then 60s ;-)

Change-Id: I1798981492d1467bb8b20099ea705b08ea9b0914
Reviewed-by: Liang Qi <liang.qi@qt.io>
Reviewed-by: Jędrzej Nowacki <jedrzej.nowacki@qt.io>
2019-05-22 14:16:07 +00:00
Jędrzej Nowacki
b611936ca8 Cleanup module_config.yaml
The number of CPUs is set implicitly by MAKEFLAGS and NIJAFLAGS.

Change-Id: Ie9296f9a7872253c696536d7b3d6235c7881d42b
Reviewed-by: Liang Qi <liang.qi@qt.io>
2019-05-22 14:14:54 +00:00
Jędrzej Nowacki
f1d428b643 Fix typo in module_config.yaml
The command executed is jom not nmake.

Change-Id: Ieae487a3b50884d901ca2a431f3c3ea615a80e8b
Reviewed-by: Liang Qi <liang.qi@qt.io>
2019-05-20 11:42:27 +00:00
Liang Qi
263af45b4c Move build and test instructions from coin to qtbase
That way we can update instructions without waiting for
Coin update.

The patch contains invalid test instructions, but as
cmake port is not yet able to run tests it should not
matter.

Change-Id: I86088aefec49ded60af00243b0b8c60c8f16147a
Reviewed-by: Jędrzej Nowacki <jedrzej.nowacki@qt.io>
2019-05-10 13:38:13 +00:00