From 98a40b369061ad32fb63b680a878807287e3022b Mon Sep 17 00:00:00 2001 From: Tim Jenssen Date: Wed, 16 Nov 2022 11:59:52 +0100 Subject: [PATCH] CMake build: Make errors of execute_process fail the build Instead of silenty failing and resulting in broken builds/packages. The property is only available since CMake 3.19, so limit the feature to that. Change-Id: I82b06e78540e81a809f7fdfe130648becfc9672e Reviewed-by: Cristian Adam Reviewed-by: Qt CI Bot --- cmake/CreatePythonXY.cmake | 2 ++ cmake/QtCreatorAPI.cmake | 4 ++-- cmake/QtCreatorAPIInternal.cmake | 4 ++++ cmake/QtCreatorDocumentation.cmake | 3 ++- cmake/Utils.cmake | 1 + src/plugins/qmldesigner/CMakeLists.txt | 4 ++-- tests/manual/android/setup/setup_android.cmake | 16 ++++++++++------ 7 files changed, 23 insertions(+), 11 deletions(-) diff --git a/cmake/CreatePythonXY.cmake b/cmake/CreatePythonXY.cmake index 8aeeb156cb2..0475b259f68 100644 --- a/cmake/CreatePythonXY.cmake +++ b/cmake/CreatePythonXY.cmake @@ -64,6 +64,7 @@ function(create_python_xy PythonExe PythonZipFilePath) set(ENV{PYTHONOPTIMIZE} "2") execute_process( COMMAND "${PythonExe}" -OO -m compileall "${CMAKE_CURRENT_BINARY_DIR}/python-lib" -b + ${QTC_COMMAND_ERROR_IS_FATAL} ) file(GLOB_RECURSE python_lib_files "${CMAKE_CURRENT_BINARY_DIR}/python-lib/*.py") @@ -75,5 +76,6 @@ function(create_python_xy PythonExe PythonZipFilePath) execute_process( COMMAND ${CMAKE_COMMAND} -E tar cf "${PythonZipFilePath}" . --format=zip WORKING_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}/python-lib/" + ${QTC_COMMAND_ERROR_IS_FATAL} ) endfunction() diff --git a/cmake/QtCreatorAPI.cmake b/cmake/QtCreatorAPI.cmake index 52ba2f44026..68461f8bcd6 100644 --- a/cmake/QtCreatorAPI.cmake +++ b/cmake/QtCreatorAPI.cmake @@ -778,14 +778,14 @@ function(add_qtc_executable name) set(_code "${_code} execute_process(COMMAND \"${CMAKE_INSTALL_NAME_TOOL}\" -delete_rpath \"${_rpath}\" - \"\$ENV{DESTDIR}\${CMAKE_INSTALL_PREFIX}/${_EXECUTABLE_FILE_PATH}\")" + \"\$ENV{DESTDIR}\${CMAKE_INSTALL_PREFIX}/${_EXECUTABLE_FILE_PATH}\" ${QTC_COMMAND_ERROR_IS_FATAL})" ) endforeach() foreach(_rpath ${install_rpath}) set(_code "${_code} execute_process(COMMAND \"${CMAKE_INSTALL_NAME_TOOL}\" -add_rpath \"${_rpath}\" - \"\$ENV{DESTDIR}\${CMAKE_INSTALL_PREFIX}/${_EXECUTABLE_FILE_PATH}\")" + \"\$ENV{DESTDIR}\${CMAKE_INSTALL_PREFIX}/${_EXECUTABLE_FILE_PATH}\" ${QTC_COMMAND_ERROR_IS_FATAL})" ) endforeach() install(CODE "${_code}") diff --git a/cmake/QtCreatorAPIInternal.cmake b/cmake/QtCreatorAPIInternal.cmake index 4efb59c988d..ace1f3c8d1c 100644 --- a/cmake/QtCreatorAPIInternal.cmake +++ b/cmake/QtCreatorAPIInternal.cmake @@ -1,3 +1,7 @@ +if (CMAKE_VERSION GREATER_EQUAL 3.19) + set(QTC_COMMAND_ERROR_IS_FATAL COMMAND_ERROR_IS_FATAL ANY) +endif() + if (CMAKE_VERSION VERSION_LESS 3.18) if (CMAKE_CXX_COMPILER_ID STREQUAL GNU) set(BUILD_WITH_PCH OFF CACHE BOOL "" FORCE) diff --git a/cmake/QtCreatorDocumentation.cmake b/cmake/QtCreatorDocumentation.cmake index 49bf3d2d02d..a652d625176 100644 --- a/cmake/QtCreatorDocumentation.cmake +++ b/cmake/QtCreatorDocumentation.cmake @@ -22,7 +22,8 @@ function(qt5_query_qmake) TIMEOUT 10 RESULT_VARIABLE _qmake_result OUTPUT_VARIABLE _qmake_stdout - OUTPUT_STRIP_TRAILING_WHITESPACE) + OUTPUT_STRIP_TRAILING_WHITESPACE + ${QTC_COMMAND_ERROR_IS_FATAL}) if (NOT "${_qmake_result}" STREQUAL "0") message(FATAL_ERROR "Qmake did not execute successfully: ${_qmake_result}.") diff --git a/cmake/Utils.cmake b/cmake/Utils.cmake index e43674e4a35..602781ca391 100644 --- a/cmake/Utils.cmake +++ b/cmake/Utils.cmake @@ -47,6 +47,7 @@ function(setup_dependencies_component) \"\${_ide_app_target}\" \"${_qmake_binary}\" COMMAND_ECHO STDOUT + \${QTC_COMMAND_ERROR_IS_FATAL} ) " COMPONENT Dependencies diff --git a/src/plugins/qmldesigner/CMakeLists.txt b/src/plugins/qmldesigner/CMakeLists.txt index 78da7fa5ded..eeebb70177c 100644 --- a/src/plugins/qmldesigner/CMakeLists.txt +++ b/src/plugins/qmldesigner/CMakeLists.txt @@ -86,10 +86,10 @@ function(get_and_add_as_subdirectory name repository git_tag build_dir source_di ) execute_process(COMMAND "${CMAKE_COMMAND}" -G "${CMAKE_GENERATOR}" "${build_dir}/${name}" WORKING_DIRECTORY "${build_dir}/${name}" - COMMAND_ERROR_IS_FATAL ANY + ${QTC_COMMAND_ERROR_IS_FATAL} ) execute_process(COMMAND "${CMAKE_COMMAND}" --build "${build_dir}/${name}" - COMMAND_ERROR_IS_FATAL ANY + ${QTC_COMMAND_ERROR_IS_FATAL} ) add_subdirectory(${source_dir}/${name}/${source_subdir} ${name}) endfunction() diff --git a/tests/manual/android/setup/setup_android.cmake b/tests/manual/android/setup/setup_android.cmake index c6a4f8ae298..c4dfb275b35 100644 --- a/tests/manual/android/setup/setup_android.cmake +++ b/tests/manual/android/setup/setup_android.cmake @@ -43,7 +43,7 @@ function(download_jdk) message("Downloading: ${jdk_url}") file(DOWNLOAD ${jdk_url} ./jdk.zip SHOW_PROGRESS) - execute_process(COMMAND ${CMAKE_COMMAND} -E tar xf ./jdk.zip) + execute_process(COMMAND ${CMAKE_COMMAND} -E tar xf ./jdk.zip COMMAND_ERROR_IS_FATAL ANY) endfunction() function(download_android_commandline) @@ -61,7 +61,7 @@ function(download_android_commandline) file(DOWNLOAD ${android_cmdtools_url} ./android_commandline_tools.zip SHOW_PROGRESS) file(MAKE_DIRECTORY android-sdk) file(MAKE_DIRECTORY android-cmdlinetools) - execute_process(COMMAND ${CMAKE_COMMAND} -E tar xf ../android_commandline_tools.zip WORKING_DIRECTORY android-cmdlinetools) + execute_process(COMMAND ${CMAKE_COMMAND} -E tar xf ../android_commandline_tools.zip WORKING_DIRECTORY android-cmdlinetools COMMAND_ERROR_IS_FATAL ANY) endfunction() function(setup_android) @@ -78,9 +78,11 @@ function(setup_android) file(WRITE ${CMAKE_CURRENT_LIST_DIR}/accept_license.txt "y\ny\ny\ny\ny\ny\ny\ny\ny\ny\n") execute_process( INPUT_FILE ${CMAKE_CURRENT_LIST_DIR}/accept_license.txt - COMMAND ${sdkmanager} --licenses --sdk_root=${CMAKE_CURRENT_LIST_DIR}/android-sdk) + COMMAND ${sdkmanager} --licenses --sdk_root=${CMAKE_CURRENT_LIST_DIR}/android-sdk + COMMAND_ERROR_IS_FATAL ANY) execute_process( - COMMAND ${sdkmanager} --update --sdk_root=${CMAKE_CURRENT_LIST_DIR}/android-sdk) + COMMAND ${sdkmanager} --update --sdk_root=${CMAKE_CURRENT_LIST_DIR}/android-sdk + COMMAND_ERROR_IS_FATAL ANY) execute_process( COMMAND ${sdkmanager} "platforms;${ANDROID_PLATFORM}" @@ -90,13 +92,15 @@ function(setup_android) "cmdline-tools;latest" "tools" "emulator" - "ndk-bundle" --sdk_root=${CMAKE_CURRENT_LIST_DIR}/android-sdk) + "ndk-bundle" --sdk_root=${CMAKE_CURRENT_LIST_DIR}/android-sdk + COMMAND_ERROR_IS_FATAL ANY) if (WIN32) execute_process( COMMAND ${sdkmanager} "extras;google;usb_driver" - --sdk_root=${CMAKE_CURRENT_LIST_DIR}/android-sdk) + --sdk_root=${CMAKE_CURRENT_LIST_DIR}/android-sdk + COMMAND_ERROR_IS_FATAL ANY) endif() endfunction()