From 16d96195d06df8eee4e3b571c955ae59c73ed1f4 Mon Sep 17 00:00:00 2001 From: Robert Maynard Date: Fri, 1 Dec 2023 12:58:27 -0500 Subject: [PATCH 1/5] Package overrides with multiple entries now sets FetchContent for each one FetchContent was previously only called for the last entry. --- rapids-cmake/cpm/package_override.cmake | 25 ++++++++++---------- testing/cpm/cpm_init-override-multiple.cmake | 21 +++++++++++++++- 2 files changed, 32 insertions(+), 14 deletions(-) diff --git a/rapids-cmake/cpm/package_override.cmake b/rapids-cmake/cpm/package_override.cmake index 2cf87ec5..4e164320 100644 --- a/rapids-cmake/cpm/package_override.cmake +++ b/rapids-cmake/cpm/package_override.cmake @@ -87,21 +87,20 @@ function(rapids_cpm_package_override filepath) set_property(GLOBAL PROPERTY rapids_cpm_${package_name}_override_json "${data}") set_property(GLOBAL PROPERTY rapids_cpm_${package_name}_override_json_file "${filepath}") endif() - endforeach() - - # establish the fetch content - include(FetchContent) - include("${rapids-cmake-dir}/cpm/detail/package_details.cmake") - rapids_cpm_package_details(${package_name} version repository tag shallow exclude) - include("${rapids-cmake-dir}/cpm/detail/generate_patch_command.cmake") - rapids_cpm_generate_patch_command(${package_name} ${version} patch_command) + # establish the fetch content + include(FetchContent) + include("${rapids-cmake-dir}/cpm/detail/package_details.cmake") + rapids_cpm_package_details(${package_name} version repository tag shallow exclude) - FetchContent_Declare(${package_name} - GIT_REPOSITORY ${repository} - GIT_TAG ${tag} - GIT_SHALLOW ${shallow} - PATCH_COMMAND ${patch_command} EXCLUDE_FROM_ALL ${exclude}) + include("${rapids-cmake-dir}/cpm/detail/generate_patch_command.cmake") + rapids_cpm_generate_patch_command(${package_name} ${version} patch_command) + FetchContent_Declare(${package_name} + GIT_REPOSITORY ${repository} + GIT_TAG ${tag} + GIT_SHALLOW ${shallow} + PATCH_COMMAND ${patch_command} EXCLUDE_FROM_ALL ${exclude}) + endforeach() endif() endfunction() diff --git a/testing/cpm/cpm_init-override-multiple.cmake b/testing/cpm/cpm_init-override-multiple.cmake index e2007b6b..4e8a8db3 100644 --- a/testing/cpm/cpm_init-override-multiple.cmake +++ b/testing/cpm/cpm_init-override-multiple.cmake @@ -15,6 +15,17 @@ #============================================================================= include(${rapids-cmake-dir}/cpm/init.cmake) +function(expect_fetch_content_details project expected) + string(TOLOWER ${project} project) + set(internal_fetch_content_var_name "_FetchContent_${project}_savedDetails") + get_property(exists GLOBAL PROPERTY ${internal_fetch_content_var_name} DEFINED) + if(expected AND NOT exists) + message(FATAL_ERROR "FetchContent expected ${project} doesn't match expected[${exists}!=${expected})") + elseif(NOT expected AND exists) + message(FATAL_ERROR "FetchContent expected ${project} doesn't match expected[${exists}!=${expected})") + endif() +endfunction() + rapids_cpm_init() # Load the default values for nvbench and GTest projects @@ -22,6 +33,10 @@ include("${rapids-cmake-dir}/cpm/detail/package_details.cmake") rapids_cpm_package_details(nvbench nvbench_version nvbench_repository nvbench_tag nvbench_shallow nvbench_exclude) rapids_cpm_package_details(GTest GTest_version GTest_repository GTest_tag GTest_shallow GTest_exclude) +expect_fetch_content_details(nvbench NO) +expect_fetch_content_details(rmm NO) +expect_fetch_content_details(GTest NO) + # Need to write out an override file file(WRITE ${CMAKE_CURRENT_BINARY_DIR}/override.json @@ -43,6 +58,10 @@ file(WRITE ${CMAKE_CURRENT_BINARY_DIR}/override.json ]=]) rapids_cpm_init(OVERRIDE "${CMAKE_CURRENT_BINARY_DIR}/override.json") +expect_fetch_content_details(nvbench YES) +expect_fetch_content_details(rmm YES) +expect_fetch_content_details(GTest YES) + # Verify that the override works rapids_cpm_package_details(nvbench version repository tag shallow exclude) @@ -79,4 +98,4 @@ if(NOT tag MATCHES "2.99") endif() if(CPM_DOWNLOAD_ALL) message(FATAL_ERROR "CPM_DOWNLOAD_ALL should be false by default when an override exists that doesn't modify url or tag") -endif() +endif() \ No newline at end of file From ea6e475e2ec863fc301d0f5ac5f07abbcd5ef210 Mon Sep 17 00:00:00 2001 From: Robert Maynard Date: Fri, 1 Dec 2023 13:04:36 -0500 Subject: [PATCH 2/5] Correct style issues found by CI --- testing/cpm/cpm_init-override-multiple.cmake | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/testing/cpm/cpm_init-override-multiple.cmake b/testing/cpm/cpm_init-override-multiple.cmake index 4e8a8db3..d6d0578a 100644 --- a/testing/cpm/cpm_init-override-multiple.cmake +++ b/testing/cpm/cpm_init-override-multiple.cmake @@ -98,4 +98,4 @@ if(NOT tag MATCHES "2.99") endif() if(CPM_DOWNLOAD_ALL) message(FATAL_ERROR "CPM_DOWNLOAD_ALL should be false by default when an override exists that doesn't modify url or tag") -endif() \ No newline at end of file +endif() From 0f3591bde5a188c1fcb43f73ca277eec948f8549 Mon Sep 17 00:00:00 2001 From: Robert Maynard Date: Fri, 1 Dec 2023 14:48:35 -0500 Subject: [PATCH 3/5] Only setup override patch when no _SOURCE exists --- rapids-cmake/cpm/package_override.cmake | 24 ++++++++++++------------ 1 file changed, 12 insertions(+), 12 deletions(-) diff --git a/rapids-cmake/cpm/package_override.cmake b/rapids-cmake/cpm/package_override.cmake index 4e164320..2d468f4c 100644 --- a/rapids-cmake/cpm/package_override.cmake +++ b/rapids-cmake/cpm/package_override.cmake @@ -86,21 +86,21 @@ function(rapids_cpm_package_override filepath) string(JSON data GET "${json_data}" packages "${package_name}") set_property(GLOBAL PROPERTY rapids_cpm_${package_name}_override_json "${data}") set_property(GLOBAL PROPERTY rapids_cpm_${package_name}_override_json_file "${filepath}") - endif() - # establish the fetch content - include(FetchContent) - include("${rapids-cmake-dir}/cpm/detail/package_details.cmake") - rapids_cpm_package_details(${package_name} version repository tag shallow exclude) + # establish the fetch content + include(FetchContent) + include("${rapids-cmake-dir}/cpm/detail/package_details.cmake") + rapids_cpm_package_details(${package_name} version repository tag shallow exclude) - include("${rapids-cmake-dir}/cpm/detail/generate_patch_command.cmake") - rapids_cpm_generate_patch_command(${package_name} ${version} patch_command) + include("${rapids-cmake-dir}/cpm/detail/generate_patch_command.cmake") + rapids_cpm_generate_patch_command(${package_name} ${version} patch_command) - FetchContent_Declare(${package_name} - GIT_REPOSITORY ${repository} - GIT_TAG ${tag} - GIT_SHALLOW ${shallow} - PATCH_COMMAND ${patch_command} EXCLUDE_FROM_ALL ${exclude}) + FetchContent_Declare(${package_name} + GIT_REPOSITORY ${repository} + GIT_TAG ${tag} + GIT_SHALLOW ${shallow} + PATCH_COMMAND ${patch_command} EXCLUDE_FROM_ALL ${exclude}) + endif() endforeach() endif() endfunction() From 90528476acab548052335525a72b75b04673566c Mon Sep 17 00:00:00 2001 From: Robert Maynard Date: Fri, 1 Dec 2023 14:48:54 -0500 Subject: [PATCH 4/5] Only setup override patch when no _SOURCE exists --- testing/cpm/cpm_package_override-obey-cpm-source-var.cmake | 2 ++ 1 file changed, 2 insertions(+) diff --git a/testing/cpm/cpm_package_override-obey-cpm-source-var.cmake b/testing/cpm/cpm_package_override-obey-cpm-source-var.cmake index ab10e855..88ff69c9 100644 --- a/testing/cpm/cpm_package_override-obey-cpm-source-var.cmake +++ b/testing/cpm/cpm_package_override-obey-cpm-source-var.cmake @@ -29,7 +29,9 @@ file(WRITE ${CMAKE_CURRENT_BINARY_DIR}/override.json "exclude_from_all" : "ON" }, "not_in_base" : { + "version" : "1.0", "git_url" : "new_rmm_url", + "git_tag" : "main", "git_shallow" : "OFF", "exclude_from_all" : "ON" } From 20687e0653a4f68c39897264f8d9b5b1cafa0335 Mon Sep 17 00:00:00 2001 From: Robert Maynard Date: Fri, 1 Dec 2023 14:55:07 -0500 Subject: [PATCH 5/5] Correct style issues found by CI --- rapids-cmake/cpm/package_override.cmake | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/rapids-cmake/cpm/package_override.cmake b/rapids-cmake/cpm/package_override.cmake index 2d468f4c..18113b44 100644 --- a/rapids-cmake/cpm/package_override.cmake +++ b/rapids-cmake/cpm/package_override.cmake @@ -100,7 +100,7 @@ function(rapids_cpm_package_override filepath) GIT_TAG ${tag} GIT_SHALLOW ${shallow} PATCH_COMMAND ${patch_command} EXCLUDE_FROM_ALL ${exclude}) - endif() + endif() endforeach() endif() endfunction()