diff options
author | Alexandru Croitor <alexandru.croitor@qt.io> | 2020-05-15 11:38:53 +0200 |
---|---|---|
committer | Alexandru Croitor <alexandru.croitor@qt.io> | 2020-05-19 10:16:11 +0200 |
commit | b3e01d608eb39302914c45af7aa18e3178d1309c (patch) | |
tree | 550835fc9d9a449bd9e729d4908cdfd70d6e1fbd /coin/instructions | |
parent | f240d94f140ba1614828804efafd2fc5e6d00099 (diff) | |
download | qtbase-b3e01d608eb39302914c45af7aa18e3178d1309c.tar.gz |
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>
Diffstat (limited to 'coin/instructions')
6 files changed, 48 insertions, 72 deletions
diff --git a/coin/instructions/call_host_install.yaml b/coin/instructions/call_host_install.yaml new file mode 100644 index 0000000000..4762763a1e --- /dev/null +++ b/coin/instructions/call_host_install.yaml @@ -0,0 +1,9 @@ +type: Group +instructions: + - type: ExecuteCommand + command: "{{.Env.ENV_PREFIX}} cmake -DQT_BUILD_DIR={{.BuildDir}} -P {{.Env.COIN_CMAKE_INSTALL_SCRIPT_PATH}}/bin/qt-cmake-private-install.cmake" + executeCommandArgumentSplitingBehavior: SplitAfterVariableSubstitution + maxTimeInSeconds: 6000 + maxTimeBetweenOutput: 1200 + userMessageOnFailure: > + Failed to install package. diff --git a/coin/instructions/call_target_install.yaml b/coin/instructions/call_target_install.yaml new file mode 100644 index 0000000000..0f45240101 --- /dev/null +++ b/coin/instructions/call_target_install.yaml @@ -0,0 +1,9 @@ +type: Group +instructions: + - type: ExecuteCommand + command: "{{.Env.TARGET_ENV_PREFIX}} cmake -DQT_BUILD_DIR={{.BuildDir}} -P {{.Env.COIN_CMAKE_INSTALL_SCRIPT_PATH}}/bin/qt-cmake-private-install.cmake" + executeCommandArgumentSplitingBehavior: SplitAfterVariableSubstitution + maxTimeInSeconds: 6000 + maxTimeBetweenOutput: 1200 + userMessageOnFailure: > + Failed to install package. diff --git a/coin/instructions/cmake_cross_compilation_module_build_instructions.yaml b/coin/instructions/cmake_cross_compilation_module_build_instructions.yaml index 46273d3345..5d8f5e9c15 100644 --- a/coin/instructions/cmake_cross_compilation_module_build_instructions.yaml +++ b/coin/instructions/cmake_cross_compilation_module_build_instructions.yaml @@ -24,21 +24,14 @@ instructions: maxTimeBetweenOutput: 1200 userMessageOnFailure: > Failed to build sources. In the current state bug can be everywhere. - - type: ExecuteCommand - command: "{{.Env.ENV_PREFIX}} cmake --install ." - maxTimeInSeconds: 6000 - maxTimeBetweenOutput: 1200 - userMessageOnFailure: > - Failed to install package. + - type: EnvironmentVariable + variableName: COIN_CMAKE_INSTALL_SCRIPT_PATH + variableValue: "{{.InstallDir}}/host" + - !include "{{qt/qtbase}}/call_host_install.yaml" - type: EnvironmentVariable variableName: DESTDIR variableValue: "{{.InstallRoot}}" - - type: ExecuteCommand - command: "{{.Env.ENV_PREFIX}} cmake --install ." - maxTimeInSeconds: 6000 - maxTimeBetweenOutput: 1200 - userMessageOnFailure: > - Failed to install package for archiving. + - !include "{{qt/qtbase}}/call_host_install.yaml" - type: EnvironmentVariable variableName: DESTDIR variableValue: "" @@ -56,21 +49,14 @@ instructions: maxTimeBetweenOutput: 1200 userMessageOnFailure: > Failed to build sources. In the current state bug can be everywhere. - - type: ExecuteCommand - command: "{{.Env.TARGET_ENV_PREFIX}} cmake --install ." - maxTimeInSeconds: 6000 - maxTimeBetweenOutput: 1200 - userMessageOnFailure: > - Failed to install package. + - type: EnvironmentVariable + variableName: COIN_CMAKE_INSTALL_SCRIPT_PATH + variableValue: "{{.InstallDir}}/target" + - !include "{{qt/qtbase}}/call_target_install.yaml" - type: EnvironmentVariable variableName: DESTDIR variableValue: "{{.InstallRoot}}" - - type: ExecuteCommand - command: "{{.Env.TARGET_ENV_PREFIX}} cmake --install ." - maxTimeInSeconds: 6000 - maxTimeBetweenOutput: 1200 - userMessageOnFailure: > - Failed to install package for archiving. + - !include "{{qt/qtbase}}/call_target_install.yaml" - type: EnvironmentVariable variableName: DESTDIR variableValue: "" diff --git a/coin/instructions/cmake_cross_compilation_qtbase_build_instructions.yaml b/coin/instructions/cmake_cross_compilation_qtbase_build_instructions.yaml index 5a14ee0b87..6a51bdc975 100644 --- a/coin/instructions/cmake_cross_compilation_qtbase_build_instructions.yaml +++ b/coin/instructions/cmake_cross_compilation_qtbase_build_instructions.yaml @@ -27,21 +27,14 @@ instructions: maxTimeBetweenOutput: 1200 userMessageOnFailure: > Failed to build sources. In the current state bug can be everywhere. - - type: ExecuteCommand - command: "{{.Env.ENV_PREFIX}} cmake --install ." - maxTimeInSeconds: 6000 - maxTimeBetweenOutput: 1200 - userMessageOnFailure: > - Failed to install package. + - type: EnvironmentVariable + variableName: COIN_CMAKE_INSTALL_SCRIPT_PATH + variableValue: "{{.BuildDir}}" + - !include "{{qt/qtbase}}/call_host_install.yaml" - type: EnvironmentVariable variableName: DESTDIR variableValue: "{{.InstallRoot}}" - - type: ExecuteCommand - command: "{{.Env.ENV_PREFIX}} cmake --install ." - maxTimeInSeconds: 6000 - maxTimeBetweenOutput: 1200 - userMessageOnFailure: > - Failed to install package for archiving. + - !include "{{qt/qtbase}}/call_host_install.yaml" - type: EnvironmentVariable variableName: DESTDIR variableValue: "" @@ -62,21 +55,14 @@ instructions: maxTimeBetweenOutput: 1200 userMessageOnFailure: > Failed to build sources. In the current state bug can be everywhere. - - type: ExecuteCommand - command: "{{.Env.TARGET_ENV_PREFIX}} cmake --install ." - maxTimeInSeconds: 6000 - maxTimeBetweenOutput: 1200 - userMessageOnFailure: > - Failed to install package. + - type: EnvironmentVariable + variableName: COIN_CMAKE_INSTALL_SCRIPT_PATH + variableValue: "{{.BuildDir}}" + - !include "{{qt/qtbase}}/call_target_install.yaml" - type: EnvironmentVariable variableName: DESTDIR variableValue: "{{.InstallRoot}}" - - type: ExecuteCommand - command: "{{.Env.TARGET_ENV_PREFIX}} cmake --install ." - maxTimeInSeconds: 6000 - maxTimeBetweenOutput: 1200 - userMessageOnFailure: > - Failed to install package for archiving. + - !include "{{qt/qtbase}}/call_target_install.yaml" - type: EnvironmentVariable variableName: DESTDIR variableValue: "" diff --git a/coin/instructions/cmake_module_build_instructions.yaml b/coin/instructions/cmake_module_build_instructions.yaml index 02c1e7b2e3..b6c72bf23f 100644 --- a/coin/instructions/cmake_module_build_instructions.yaml +++ b/coin/instructions/cmake_module_build_instructions.yaml @@ -16,21 +16,14 @@ instructions: maxTimeBetweenOutput: 1200 userMessageOnFailure: > Failed to build sources. In the current state bug can be everywhere. - - type: ExecuteCommand - command: "{{.Env.ENV_PREFIX}} cmake --install ." - maxTimeInSeconds: 6000 - maxTimeBetweenOutput: 1200 - userMessageOnFailure: > - Failed to install package. + - type: EnvironmentVariable + variableName: COIN_CMAKE_INSTALL_SCRIPT_PATH + variableValue: "{{.InstallDir}}" + - !include "{{qt/qtbase}}/call_host_install.yaml" - type: EnvironmentVariable variableName: DESTDIR variableValue: "{{.InstallRoot}}" - - type: ExecuteCommand - command: "{{.Env.ENV_PREFIX}} cmake --install ." - maxTimeInSeconds: 6000 - maxTimeBetweenOutput: 1200 - userMessageOnFailure: > - Failed to install package for archiving. + - !include "{{qt/qtbase}}/call_host_install.yaml" - type: SignPackage enable_if: condition: property diff --git a/coin/instructions/cmake_qtbase_build_instructions.yaml b/coin/instructions/cmake_qtbase_build_instructions.yaml index fe85d1681f..89d95ab4b3 100644 --- a/coin/instructions/cmake_qtbase_build_instructions.yaml +++ b/coin/instructions/cmake_qtbase_build_instructions.yaml @@ -19,21 +19,14 @@ instructions: maxTimeBetweenOutput: 1200 userMessageOnFailure: > Failed to build sources. In the current state bug can be everywhere. - - type: ExecuteCommand - command: "{{.Env.ENV_PREFIX}} cmake --install ." - maxTimeInSeconds: 6000 - maxTimeBetweenOutput: 1200 - userMessageOnFailure: > - Failed to install package. + - type: EnvironmentVariable + variableName: COIN_CMAKE_INSTALL_SCRIPT_PATH + variableValue: "{{.BuildDir}}" + - !include "{{qt/qtbase}}/call_host_install.yaml" - type: EnvironmentVariable variableName: DESTDIR variableValue: "{{.InstallRoot}}" - - type: ExecuteCommand - command: "{{.Env.ENV_PREFIX}} cmake --install ." - maxTimeInSeconds: 6000 - maxTimeBetweenOutput: 1200 - userMessageOnFailure: > - Failed to install package for archiving. + - !include "{{qt/qtbase}}/call_host_install.yaml" - type: SignPackage enable_if: condition: property |