From 2b6b7e80bc474cc3dd0582ff822410f227e9b62f Mon Sep 17 00:00:00 2001 From: Kai Pastor Date: Wed, 20 Apr 2022 23:44:53 +0200 Subject: [PATCH] [cmake-user] Fix and extend (#24260) * Skip wxwidgets test on Linux On Linux, wxwidgets needs system libs which conflict with vcpkg ports. * Test curl * Execute build to detect wrong libs * Add comment for wxwidgets --- scripts/test_ports/cmake-user/portfile.cmake | 25 +++++++++++++++++++- scripts/test_ports/cmake-user/vcpkg.json | 7 +++++- 2 files changed, 30 insertions(+), 2 deletions(-) diff --git a/scripts/test_ports/cmake-user/portfile.cmake b/scripts/test_ports/cmake-user/portfile.cmake index 7d640a194a..4bc3a485a3 100644 --- a/scripts/test_ports/cmake-user/portfile.cmake +++ b/scripts/test_ports/cmake-user/portfile.cmake @@ -62,6 +62,11 @@ if("find-package" IN_LIST FEATURES) if(VCPKG_TARGET_IS_WINDOWS AND NOT VCPKG_TARGET_IS_MINGW) list(REMOVE_ITEM packages "Curses") endif() + if(VCPKG_TARGET_IS_LINUX) + # Port wxwidgets requires linux system libraries which conflict with vcpkg ports. + # This line complements the "platform" restriction from vcpkg.json. + list(REMOVE_ITEM packages "wxWidgets") + endif() endif() if(DEFINED ENV{VCPKG_FORCE_SYSTEM_BINARIES}) @@ -93,6 +98,7 @@ function(test_cmake_project) set(base_options -G "Ninja" "-DCMAKE_MAKE_PROGRAM=${NINJA}" + "-DCMAKE_VERBOSE_MAKEFILE=ON" "-DCMAKE_TOOLCHAIN_FILE=${SCRIPTS}/buildsystems/vcpkg.cmake" "-DVCPKG_INSTALLED_DIR=${_VCPKG_INSTALLED_DIR}" "-DCMAKE_INSTALL_PREFIX=${build_dir}/install" @@ -137,7 +143,7 @@ function(test_cmake_project) # To produce better error messages for failing wrappers, # we run execute_process directly here, for each wrapper. string(REPLACE " OFF:" ":" message - " CMake ${cmake_version}: `find_package(@package@)` failed.\n" + " CMake ${cmake_version}: @step@ with `find_package(@package@)` failed.\n" " See logs for more information:\n" " @log_out@\n" " @log_err@\n" @@ -166,8 +172,25 @@ function(test_cmake_project) WORKING_DIRECTORY "${find_package_build_dir}" ) if(package_result) + set(step "configuration") string(CONFIGURE "${message}" package_message @ONLY) message(SEND_ERROR "${package_message}") + else() + set(log_out "${CURRENT_BUILDTREES_DIR}/${TARGET_TRIPLET}-${cmake_version}-find-package-${package_string}-${arg_NAME}-build-out.log") + set(log_err "${CURRENT_BUILDTREES_DIR}/${TARGET_TRIPLET}-${cmake_version}-find-package-${package_string}-${arg_NAME}-build-err.log") + execute_process( + COMMAND + "${arg_CMAKE_COMMAND}" --build . + OUTPUT_FILE "${log_out}" + ERROR_FILE "${log_err}" + RESULT_VARIABLE package_result + WORKING_DIRECTORY "${find_package_build_dir}" + ) + if(package_result) + set(step "build") + string(CONFIGURE "${message}" package_message @ONLY) + message(SEND_ERROR "${package_message}") + endif() endif() endforeach() endfunction() diff --git a/scripts/test_ports/cmake-user/vcpkg.json b/scripts/test_ports/cmake-user/vcpkg.json index dac50f93ce..34357b6e29 100644 --- a/scripts/test_ports/cmake-user/vcpkg.json +++ b/scripts/test_ports/cmake-user/vcpkg.json @@ -41,6 +41,10 @@ "$package": "BZip2", "name": "bzip2" }, + { + "$package": "CURL", + "name": "curl" + }, { "$package": "EXPAT", "name": "expat" @@ -79,7 +83,8 @@ }, { "$package": "wxWidgets", - "name": "wxwidgets" + "name": "wxwidgets", + "platform": "!linux" }, { "$package": "ZLIB",