Просмотр исходного кода

exec_program(): Remove by policy CMP0153

Kyle Edwards 2 лет назад
Родитель
Сommit
ff12a57d5e

+ 4 - 0
Help/command/exec_program.rst

@@ -1,6 +1,10 @@
 exec_program
 ------------
 
+.. versionchanged:: 3.28
+  This command is available only if policy :policy:`CMP0153` is not set to ``NEW``.
+  Port projects to the :command:`execute_process` command.
+
 .. deprecated:: 3.0
 
   Use the :command:`execute_process` command instead.

+ 1 - 0
Help/manual/cmake-policies.7.rst

@@ -57,6 +57,7 @@ Policies Introduced by CMake 3.28
 .. toctree::
    :maxdepth: 1
 
+   CMP0153: The exec_program command should not be called. </policy/CMP0153>
    CMP0152: file(REAL_PATH) resolves symlinks before collapsing ../ components.  </policy/CMP0152>
 
 Policies Introduced by CMake 3.27

+ 12 - 0
Help/policy/CMP0153.rst

@@ -0,0 +1,12 @@
+CMP0153
+-------
+
+The :command:`exec_program` command should not be called.
+
+This command has long been superseded by the :command:`execute_process`
+command and has been deprecated since CMake 3.0.
+
+.. |disallowed_version| replace:: 3.28
+.. include:: DISALLOWED_COMMAND.txt
+
+.. include:: DEPRECATED.txt

+ 6 - 0
Help/release/dev/exec_program-policy.rst

@@ -0,0 +1,6 @@
+exec_program-policy
+-------------------
+
+* The :command:`exec_program` command, which has been deprecated since CMake
+  3.0, has been removed by policy :policy:`CMP0153`. Use the
+  :command:`execute_process` command instead.

+ 3 - 1
Source/cmCommands.cxx

@@ -135,7 +135,6 @@ void GetScriptingCommands(cmState* state)
   state->AddBuiltinCommand("cmake_path", cmCMakePathCommand);
   state->AddBuiltinCommand("cmake_policy", cmCMakePolicyCommand);
   state->AddBuiltinCommand("configure_file", cmConfigureFileCommand);
-  state->AddBuiltinCommand("exec_program", cmExecProgramCommand);
   state->AddBuiltinCommand("execute_process", cmExecuteProcessCommand);
   state->AddBuiltinCommand("file", cmFileCommand);
   state->AddBuiltinCommand("find_file", cmFindFile);
@@ -220,6 +219,9 @@ void GetScriptingCommands(cmState* state)
   state->AddDisallowedCommand(
     "use_mangled_mesa", cmUseMangledMesaCommand, cmPolicies::CMP0030,
     "The use_mangled_mesa command should not be called; see CMP0030.");
+  state->AddDisallowedCommand(
+    "exec_program", cmExecProgramCommand, cmPolicies::CMP0153,
+    "The exec_program command should not be called; see CMP0153.");
 
 #endif
 }

+ 3 - 1
Source/cmPolicies.h

@@ -463,7 +463,9 @@ class cmMakefile;
   SELECT(                                                                     \
     POLICY, CMP0152,                                                          \
     "file(REAL_PATH) resolves symlinks before collapsing ../ components.", 3, \
-    28, 0, cmPolicies::WARN)
+    28, 0, cmPolicies::WARN)                                                  \
+  SELECT(POLICY, CMP0153, "The exec_program command should not be called.",   \
+         3, 28, 0, cmPolicies::WARN)
 
 #define CM_SELECT_ID(F, A1, A2, A3, A4, A5, A6) F(A1)
 #define CM_FOR_EACH_POLICY_ID(POLICY)                                         \

+ 1 - 0
Tests/RunCMake/CMP0153/CMP0153-NEW-result.txt

@@ -0,0 +1 @@
+1

+ 3 - 0
Tests/RunCMake/CMP0153/CMP0153-NEW-stderr.txt

@@ -0,0 +1,3 @@
+^CMake Error at [^
+]*/Tests/RunCMake/CMP0153/CMP0153-NEW\.cmake:[0-9]+ \(exec_program\):
+  The exec_program command should not be called; see CMP0153\.$

+ 1 - 0
Tests/RunCMake/CMP0153/CMP0153-NEW-stdout.txt

@@ -0,0 +1 @@
+^$

+ 2 - 0
Tests/RunCMake/CMP0153/CMP0153-NEW.cmake

@@ -0,0 +1,2 @@
+cmake_policy(SET CMP0153 NEW)
+exec_program("${CMAKE_COMMAND}" ARGS "-E echo \"exec_program() called\"")

+ 1 - 0
Tests/RunCMake/CMP0153/CMP0153-OLD-stdout.txt

@@ -0,0 +1 @@
+exec_program\(\) called

+ 2 - 0
Tests/RunCMake/CMP0153/CMP0153-OLD.cmake

@@ -0,0 +1,2 @@
+cmake_policy(SET CMP0153 OLD)
+exec_program("${CMAKE_COMMAND}" ARGS "-E echo \"exec_program() called\"")

+ 6 - 0
Tests/RunCMake/CMP0153/CMP0153-WARN-stderr.txt

@@ -0,0 +1,6 @@
+^CMake Warning \(dev\) at [^
+]*/Tests/RunCMake/CMP0153/CMP0153-WARN\.cmake:[0-9]+ \(exec_program\):
+  Policy CMP0153 is not set: The exec_program command should not be called\.
+  Run "cmake --help-policy CMP0153" for policy details\.  Use the cmake_policy
+  command to set the policy and suppress this warning\.
+This warning is for project developers\.  Use -Wno-dev to suppress it\.$

+ 1 - 0
Tests/RunCMake/CMP0153/CMP0153-WARN-stdout.txt

@@ -0,0 +1 @@
+exec_program\(\) called

+ 1 - 0
Tests/RunCMake/CMP0153/CMP0153-WARN.cmake

@@ -0,0 +1 @@
+exec_program("${CMAKE_COMMAND}" ARGS "-E echo \"exec_program() called\"")

+ 3 - 0
Tests/RunCMake/CMP0153/CMakeLists.txt

@@ -0,0 +1,3 @@
+cmake_minimum_required(VERSION 3.27)
+project(${RunCMake_TEST} NONE)
+include(${RunCMake_TEST}.cmake)

+ 9 - 0
Tests/RunCMake/CMP0153/RunCMakeTest.cmake

@@ -0,0 +1,9 @@
+include(RunCMake)
+
+function(run_cmp0153 name)
+  run_cmake_command(${name} ${CMAKE_COMMAND} -P "${RunCMake_SOURCE_DIR}/${name}.cmake")
+endfunction()
+
+run_cmp0153(CMP0153-WARN)
+run_cmp0153(CMP0153-OLD)
+run_cmp0153(CMP0153-NEW)

+ 2 - 0
Tests/RunCMake/CMakeLists.txt

@@ -169,6 +169,8 @@ if(NOT WIN32 OR CYGWIN)
   add_RunCMake_test(CMP0152)
 endif()
 
+add_RunCMake_test(CMP0153)
+
 # The test for Policy 65 requires the use of the
 # CMAKE_SHARED_LIBRARY_LINK_CXX_FLAGS variable, which both the VS and Xcode
 # generators ignore.  The policy will have no effect on those generators.