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 <alexey.edelev@qt.io>
This commit is contained in:
Joerg Bornemann 2025-03-17 09:06:32 +01:00
parent baffc8e47d
commit 1b9cf55117

View File

@ -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")