From 1b9cf551170a54f813f7067f7948f0378cac2deb Mon Sep 17 00:00:00 2001 From: Joerg Bornemann Date: Mon, 17 Mar 2025 09:06:32 +0100 Subject: [PATCH] CMake: Show the "Docker image ... not found" warning only once ...if docker / docker-compose are not installed. This amends commit 3223c06d43b1be658032c179397eaf6ed3b1f27c, which fixed the multiple warnings only for the docker image existence check. Remove the QT_TEST_DOCKER_WARNING_SHOWN global property and set the QT_SKIP_DOCKER_COMPOSE cache variable to ON instead. Now, we'll see the warning only once, and further re-configuration attempts won't even try to find the docker tools. Change-Id: I98a584ae91899ae8c4c347ee62601d791105d301 Reviewed-by: Alexey Edelev --- cmake/QtTestHelpers.cmake | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/cmake/QtTestHelpers.cmake b/cmake/QtTestHelpers.cmake index f64e25b6764..e84a9bfa6b0 100644 --- a/cmake/QtTestHelpers.cmake +++ b/cmake/QtTestHelpers.cmake @@ -100,6 +100,10 @@ function(qt_internal_add_manual_test target) qt_internal_add_test(${ARGV} MANUAL) endfunction() +macro(qt_internal_skip_docker_compose) + set(QT_SKIP_DOCKER_COMPOSE ON CACHE BOOL "Skip setting docker on Linux." FORCE) +endmacro() + # This function will configure the fixture for the network tests that require docker network services # qmake counterpart: qtbase/mkspecs/features/unsupported/testserver.prf function(qt_internal_setup_docker_test_fixture name) @@ -119,6 +123,7 @@ function(qt_internal_setup_docker_test_fixture name) find_program(QT_DOCKER_COMPOSE docker-compose) if (NOT QT_DOCKER_COMPOSE) message(WARNING "docker-compose was not found. Docker network tests will not be run.") + qt_internal_skip_docker_compose() return() endif() if (NOT DEFINED QT_DOCKER_COMPOSE_VERSION) @@ -130,20 +135,17 @@ function(qt_internal_setup_docker_test_fixture name) find_program(QT_DOCKER docker) if (NOT QT_DOCKER) message(WARNING "docker was not found. Docker network tests will not be run.") + qt_internal_skip_docker_compose() return() endif() if (NOT DEFINED QT_DOCKER_TEST_SERVER) execute_process(COMMAND "${QT_DOCKER}" images -aq "qt-test-server-*" OUTPUT_VARIABLE QT_DOCKER_TEST_SERVER) if (NOT QT_DOCKER_TEST_SERVER) - get_cmake_property(warning_shown QT_TEST_DOCKER_WARNING_SHOWN) - if(warning_shown) - return() - endif() - set_property(GLOBAL PROPERTY QT_TEST_DOCKER_WARNING_SHOWN ON) message(WARNING "Docker image qt-test-server-* not found.\n" "Run the provisioning script (coin/provisioning/.../testserver/docker_testserver.sh) in advance\n" "Docker network tests will not be run.") + qt_internal_skip_docker_compose() return() endif() set(QT_DOCKER_TEST_SERVER "ON" CACHE BOOL "docker qt-test-server-* present")