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

Merge topic 'ifw-sign-installer'

e8e07a90c1 CPackIFW: add support for signing the generated app bundles on macOS

Acked-by: Kitware Robot <[email protected]>
Acked-by: buildbot <[email protected]>
Merge-request: !6754
Brad King 4 лет назад
Родитель
Сommit
2d4c3cf684

+ 7 - 0
Help/cpack_gen/ifw.rst

@@ -292,6 +292,13 @@ Package
 
  This feature is available for QtIFW 4.0.0 and newer.
 
+.. variable:: CPACK_IFW_PACKAGE_SIGNING_IDENTITY
+
+ .. versionadded: 3.23
+
+ Allows specifying a code signing identity to be used for signing the generated
+ app bundle. Only available on macOS.
+
 .. variable:: CPACK_IFW_ARCHIVE_FORMAT
 
  .. versionadded:: 3.23

+ 7 - 0
Help/release/dev/cpackifw-signing-identity.rst

@@ -0,0 +1,7 @@
+cpackifw-signing-identity
+-------------------------
+
+* The :cpack_gen:`CPack IFW Generator` gained the new
+  :variable:`CPACK_IFW_PACKAGE_SIGNING_IDENTITY` variable for specifying a code
+  signing identity to be used for signing the generated app bundle.
+  This feature is available on macOS only, and for QtIFW 3.0 and newer.

+ 11 - 0
Source/CPack/IFW/cmCPackIFWGenerator.cxx

@@ -179,6 +179,17 @@ std::vector<std::string> cmCPackIFWGenerator::BuildBinaryCreatorCommmand()
     }
   }
 
+  if (!this->IsVersionLess("3.0")) {
+#ifdef __APPLE__
+    // macOS only
+    std::string signingIdentity = this->Installer.SigningIdentity;
+    if (!signingIdentity.empty()) {
+      ifwCmd.emplace_back("--sign");
+      ifwCmd.emplace_back(signingIdentity);
+    }
+#endif
+  }
+
   ifwCmd.emplace_back("-c");
   ifwCmd.emplace_back(this->toplevel + "/config/config.xml");
 

+ 7 - 0
Source/CPack/IFW/cmCPackIFWInstaller.cxx

@@ -306,6 +306,13 @@ void cmCPackIFWInstaller::ConfigureFromOptions()
         this->GetOption("CPACK_IFW_PACKAGE_RUN_PROGRAM_DESCRIPTION")) {
     this->RunProgramDescription = *description;
   }
+
+#ifdef __APPLE__
+  // Code signing identity for signing the generated app bundle
+  if (cmValue id = this->GetOption("CPACK_IFW_PACKAGE_SIGNING_IDENTITY")) {
+    this->SigningIdentity = *id;
+  }
+#endif
 }
 
 /** \class cmCPackIFWResourcesParser

+ 5 - 0
Source/CPack/IFW/cmCPackIFWInstaller.h

@@ -135,6 +135,11 @@ public:
   /// installation
   std::string RunProgramDescription;
 
+#ifdef __APPLE__
+  /// Code signing identity for signing the generated app bundle
+  std::string SigningIdentity;
+#endif
+
 public:
   // Internal implementation