From 8afe5f227c9ba892d259b4ceaf89bcfff5c24ca5 Mon Sep 17 00:00:00 2001 From: Brad King Date: Mon, 24 Nov 2025 11:38:27 -0500 Subject: [PATCH] ExternalProject: Fix environment modification ops named with underscores Extend commit e301cbffcc (ExternalProject: Set environment variables, 2025-04-09, v4.2.0-rc1~480^2) and commit 9cb590b843 (ExternalProject: Fix lists and empty commands with environment modification, 2025-09-11, v4.2.0-rc1~9^2) to match `_` in environment modification operation names. Fixes: #27409 --- Modules/ExternalProject.cmake | 2 +- Tests/RunCMake/ExternalProject/EnvVars.cmake | 2 +- Tests/RunCMake/ExternalProject/RunCMakeTest.cmake | 2 ++ 3 files changed, 4 insertions(+), 2 deletions(-) diff --git a/Modules/ExternalProject.cmake b/Modules/ExternalProject.cmake index bae238de9d..fefcd27159 100644 --- a/Modules/ExternalProject.cmake +++ b/Modules/ExternalProject.cmake @@ -2285,7 +2285,7 @@ function(ExternalProject_Add_Step name step) if(environment) set(env_args "") foreach(env_mod IN LISTS environment) - if(env_mod MATCHES [[^([^=:]+)=([a-z]+):(.*)$]]) + if(env_mod MATCHES [[^([^=:]+)=([a-z_]+):(.*)$]]) set(_value "${CMAKE_MATCH_3}") # Replace the separator only in the value in case it is `:`. if(sep) diff --git a/Tests/RunCMake/ExternalProject/EnvVars.cmake b/Tests/RunCMake/ExternalProject/EnvVars.cmake index 7fc3cbcb3c..f34c3e4884 100644 --- a/Tests/RunCMake/ExternalProject/EnvVars.cmake +++ b/Tests/RunCMake/ExternalProject/EnvVars.cmake @@ -67,7 +67,7 @@ ExternalProject_Add(DefaultCommand CMAKE_ARGS -DVARIABLE=ConfigVar CONFIGURE_ENVIRONMENT_MODIFICATION - ConfigVar=set:config + ConfigVar=string_append:fig # RunCMakeTest.cmake sets to "con" ListVar=set:7,8,9 ListSeparator=set:, BUILD_ENVIRONMENT_MODIFICATION diff --git a/Tests/RunCMake/ExternalProject/RunCMakeTest.cmake b/Tests/RunCMake/ExternalProject/RunCMakeTest.cmake index 61862922a1..3848d77886 100644 --- a/Tests/RunCMake/ExternalProject/RunCMakeTest.cmake +++ b/Tests/RunCMake/ExternalProject/RunCMakeTest.cmake @@ -261,6 +261,8 @@ if(GIT_EXECUTABLE) endif() set(RunCMake_TEST_OUTPUT_MERGE 1) +set(ENV{ConfigVar} "con") __ep_test_with_build(EnvVars) +unset(ENV{ConfigVar}) unset(RunCMake_TEST_OUTPUT_MERGE) run_cmake(InvalidEnvModification)