浏览代码

CPack/External: Fix status messages of staging scripts

Set progress callback on cmake instance used by CPack.  The progress
callback is used to output STATUS messages which are otherwise missing
when issued from e.g. CPack External staging scripts.

Fixes: #18567
Nils Gladitz 7 年之前
父节点
当前提交
4a3ae1710e

+ 10 - 0
Source/CPack/cpack.cxx

@@ -88,6 +88,15 @@ int cpackDefinitionArgument(const char* argument, const char* cValue,
   return 1;
   return 1;
 }
 }
 
 
+static void cpackProgressCallback(const char* message, float progress,
+                                  void* clientdata)
+{
+  (void)progress;
+  (void)clientdata;
+
+  std::cout << "-- " << message << std::endl;
+}
+
 // this is CPack.
 // this is CPack.
 int main(int argc, char const* const* argv)
 int main(int argc, char const* const* argv)
 {
 {
@@ -201,6 +210,7 @@ int main(int argc, char const* const* argv)
   cmake cminst(cmake::RoleScript);
   cmake cminst(cmake::RoleScript);
   cminst.SetHomeDirectory("");
   cminst.SetHomeDirectory("");
   cminst.SetHomeOutputDirectory("");
   cminst.SetHomeOutputDirectory("");
+  cminst.SetProgressCallback(cpackProgressCallback, nullptr);
   cminst.GetCurrentSnapshot().SetDefaultDefinitions();
   cminst.GetCurrentSnapshot().SetDefaultDefinitions();
   cmGlobalGenerator cmgg(&cminst);
   cmGlobalGenerator cmgg(&cminst);
   cmMakefile globalMF(&cmgg, cminst.GetCurrentSnapshot());
   cmMakefile globalMF(&cmgg, cminst.GetCurrentSnapshot());

+ 2 - 0
Tests/RunCMake/CPack/tests/EXTERNAL/create_package.cmake

@@ -22,3 +22,5 @@ expect_file(${CPACK_TEMPORARY_DIRECTORY}/f1/share/cpack-test/f1.txt)
 expect_file(${CPACK_TEMPORARY_DIRECTORY}/f2/share/cpack-test/f2.txt)
 expect_file(${CPACK_TEMPORARY_DIRECTORY}/f2/share/cpack-test/f2.txt)
 expect_file(${CPACK_TEMPORARY_DIRECTORY}/f3/share/cpack-test/f3.txt)
 expect_file(${CPACK_TEMPORARY_DIRECTORY}/f3/share/cpack-test/f3.txt)
 expect_file(${CPACK_TEMPORARY_DIRECTORY}/f4/share/cpack-test/f4.txt)
 expect_file(${CPACK_TEMPORARY_DIRECTORY}/f4/share/cpack-test/f4.txt)
+
+message(STATUS "This status message is expected to be visible")

+ 1 - 0
Tests/RunCMake/CPack/tests/EXTERNAL/stage_and_package-stdout.txt

@@ -0,0 +1 @@
+-- This status message is expected to be visible