浏览代码

CPack: Remove the deprecated PackageMaker generator

This CPack generator has been deprecated since commit 7bf187499f
(CPack: Deprecate PackageMaker generator, 2020-01-31).

Fixes: #23344
Craig Scott 3 年之前
父节点
当前提交
c150f89f4d

+ 0 - 8
CMakeCPackOptions.cmake.in

@@ -198,14 +198,6 @@ if(CPACK_GENERATOR MATCHES "IFW")
 
 
 endif()
 endif()
 
 
-if("${CPACK_GENERATOR}" STREQUAL "PackageMaker")
-  if(CMAKE_PACKAGE_QTGUI)
-    set(CPACK_PACKAGE_DEFAULT_LOCATION "/Applications")
-  else()
-    set(CPACK_PACKAGE_DEFAULT_LOCATION "/usr")
-  endif()
-endif()
-
 if("${CPACK_GENERATOR}" STREQUAL "DragNDrop")
 if("${CPACK_GENERATOR}" STREQUAL "DragNDrop")
   set(CPACK_DMG_BACKGROUND_IMAGE
   set(CPACK_DMG_BACKGROUND_IMAGE
       "@CMake_SOURCE_DIR@/Packaging/CMakeDMGBackground.tif")
       "@CMake_SOURCE_DIR@/Packaging/CMakeDMGBackground.tif")

+ 4 - 84
Help/cpack_gen/packagemaker.rst

@@ -1,87 +1,7 @@
 CPack PackageMaker Generator
 CPack PackageMaker Generator
 ----------------------------
 ----------------------------
 
 
-PackageMaker CPack generator (macOS).
-
-.. deprecated:: 3.17
-
-  Xcode no longer distributes the PackageMaker tools.
-  This CPack generator will be removed in a future version of CPack.
-
-Variables specific to CPack PackageMaker generator
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-The following variable is specific to installers built on Mac
-macOS using PackageMaker:
-
-.. variable:: CPACK_OSX_PACKAGE_VERSION
-
- The version of macOS that the resulting PackageMaker archive should be
- compatible with. Different versions of macOS support different
- features. For example, CPack can only build component-based installers for
- macOS 10.4 or newer, and can only build installers that download
- components on-the-fly for macOS 10.5 or newer. If left blank, this value
- will be set to the minimum version of macOS that supports the requested
- features. Set this variable to some value (e.g., 10.4) only if you want to
- guarantee that your installer will work on that version of macOS, and
- don't mind missing extra features available in the installer shipping with
- later versions of macOS.
-
-Background Image
-""""""""""""""""
-
-.. versionadded:: 3.17
-
-This group of variables controls the background image of the generated
-installer.
-
-.. variable:: CPACK_PACKAGEMAKER_BACKGROUND
-
- Adds a background to Distribution XML if specified. The value contains the
- path to image in ``Resources`` directory.
-
-.. variable:: CPACK_PACKAGEMAKER_BACKGROUND_ALIGNMENT
-
- Adds an ``alignment`` attribute to the background in Distribution XML.
- Refer to Apple documentation for valid values.
-
-.. variable:: CPACK_PACKAGEMAKER_BACKGROUND_SCALING
-
- Adds a ``scaling`` attribute to the background in Distribution XML.
- Refer to Apple documentation for valid values.
-
-.. variable:: CPACK_PACKAGEMAKER_BACKGROUND_MIME_TYPE
-
- Adds a ``mime-type`` attribute to the background in Distribution XML.
- The option contains MIME type of an image.
-
-.. variable:: CPACK_PACKAGEMAKER_BACKGROUND_UTI
-
- Adds an ``uti`` attribute to the background in Distribution XML.
- The option contains UTI type of an image.
-
-.. variable:: CPACK_PACKAGEMAKER_BACKGROUND_DARKAQUA
-
- Adds a background for the Dark Aqua theme to Distribution XML if
- specified. The value contains the path to image in ``Resources``
- directory.
-
-.. variable:: CPACK_PACKAGEMAKER_BACKGROUND_DARKAQUA_ALIGNMENT
-
- Does the same as :variable:`CPACK_PACKAGEMAKER_BACKGROUND_ALIGNMENT` option,
- but for the dark theme.
-
-.. variable:: CPACK_PACKAGEMAKER_BACKGROUND_DARKAQUA_SCALING
-
- Does the same as :variable:`CPACK_PACKAGEMAKER_BACKGROUND_SCALING` option,
- but for the dark theme.
-
-.. variable:: CPACK_PACKAGEMAKER_BACKGROUND_DARKAQUA_MIME_TYPE
-
- Does the same as :variable:`CPACK_PACKAGEMAKER_BACKGROUND_MIME_TYPE` option,
- but for the dark theme.
-
-.. variable:: CPACK_PACKAGEMAKER_BACKGROUND_DARKAQUA_UTI
-
- Does the same as :variable:`CPACK_PACKAGEMAKER_BACKGROUND_UTI` option,
- but for the dark theme.
+Removed.  This once generated PackageMaker installers, but the
+generator has been removed since CMake 3.24.  Xcode no longer distributes
+the PackageMaker tools.  Use the :cpack_gen:`CPack productbuild Generator`
+instead.

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

@@ -317,7 +317,6 @@ used directly.
    /module/CPackFreeBSD
    /module/CPackFreeBSD
    /module/CPackNSIS
    /module/CPackNSIS
    /module/CPackNuGet
    /module/CPackNuGet
-   /module/CPackPackageMaker
    /module/CPackProductBuild
    /module/CPackProductBuild
    /module/CPackRPM
    /module/CPackRPM
    /module/CPackWIX
    /module/CPackWIX

+ 0 - 4
Help/module/CPackPackageMaker.rst

@@ -1,4 +0,0 @@
-CPackPackageMaker
------------------
-
-The documentation for the CPack PackageMaker generator has moved here: :cpack_gen:`CPack PackageMaker Generator`

+ 1 - 1
Help/release/3.17.rst

@@ -272,7 +272,7 @@ Deprecated and Removed Features
   of all policies are deprecated and that projects should port to the
   of all policies are deprecated and that projects should port to the
   NEW behaviors.
   NEW behaviors.
 
 
-* The :cpack_gen:`CPack PackageMaker Generator` generator has been
+* The CPack ``PackageMaker`` generator has been
   deprecated because Xcode no longer distributes the PackageMaker tools.
   deprecated because Xcode no longer distributes the PackageMaker tools.
   The undocumented ``OSXX11`` generator has also been deprecated.
   The undocumented ``OSXX11`` generator has also been deprecated.
 
 

+ 1 - 1
Help/release/3.23.rst

@@ -187,7 +187,7 @@ CPack
 
 
 * The ``CPack.distribution.dist.in`` template used by the
 * The ``CPack.distribution.dist.in`` template used by the
   :cpack_gen:`CPack productbuild Generator` and
   :cpack_gen:`CPack productbuild Generator` and
-  :cpack_gen:`CPack PackageMaker Generator` was updated to use a new
+  CPack ``PackageMaker`` generator was updated to use a new
   ``CPACK_APPLE_PKG_INSTALLER_CONTENT`` variable for its main content.
   ``CPACK_APPLE_PKG_INSTALLER_CONTENT`` variable for its main content.
   This replaced the previously undocumented and now deprecated
   This replaced the previously undocumented and now deprecated
   ``CPACK_PACKAGEMAKER_CHOICES`` variable.
   ``CPACK_PACKAGEMAKER_CHOICES`` variable.

+ 5 - 0
Help/release/dev/remove-PackageMaker-generator.rst

@@ -0,0 +1,5 @@
+remove-PackageMaker-generator
+-----------------------------
+
+* The deprecated ``PackageMaker`` :manual:`cpack(1)` generator has
+  been removed.

+ 0 - 3
Modules/CPack.cmake

@@ -669,12 +669,10 @@ if(NOT CPACK_GENERATOR)
       if(APPLE)
       if(APPLE)
         option(CPACK_BINARY_BUNDLE       "Enable to build OSX bundles"      OFF)
         option(CPACK_BINARY_BUNDLE       "Enable to build OSX bundles"      OFF)
         option(CPACK_BINARY_DRAGNDROP    "Enable to build OSX Drag And Drop package" OFF)
         option(CPACK_BINARY_DRAGNDROP    "Enable to build OSX Drag And Drop package" OFF)
-        option(CPACK_BINARY_PACKAGEMAKER "Enable to build PackageMaker packages (deprecated)" OFF)
         option(CPACK_BINARY_PRODUCTBUILD "Enable to build productbuild packages" OFF)
         option(CPACK_BINARY_PRODUCTBUILD "Enable to build productbuild packages" OFF)
         mark_as_advanced(
         mark_as_advanced(
           CPACK_BINARY_BUNDLE
           CPACK_BINARY_BUNDLE
           CPACK_BINARY_DRAGNDROP
           CPACK_BINARY_DRAGNDROP
-          CPACK_BINARY_PACKAGEMAKER
           CPACK_BINARY_PRODUCTBUILD
           CPACK_BINARY_PRODUCTBUILD
           )
           )
       else()
       else()
@@ -726,7 +724,6 @@ if(NOT CPACK_GENERATOR)
   cpack_optional_append(CPACK_GENERATOR  CPACK_BINARY_IFW          IFW)
   cpack_optional_append(CPACK_GENERATOR  CPACK_BINARY_IFW          IFW)
   cpack_optional_append(CPACK_GENERATOR  CPACK_BINARY_NSIS         NSIS)
   cpack_optional_append(CPACK_GENERATOR  CPACK_BINARY_NSIS         NSIS)
   cpack_optional_append(CPACK_GENERATOR  CPACK_BINARY_NUGET        NuGet)
   cpack_optional_append(CPACK_GENERATOR  CPACK_BINARY_NUGET        NuGet)
-  cpack_optional_append(CPACK_GENERATOR  CPACK_BINARY_PACKAGEMAKER PackageMaker)
   cpack_optional_append(CPACK_GENERATOR  CPACK_BINARY_PRODUCTBUILD productbuild)
   cpack_optional_append(CPACK_GENERATOR  CPACK_BINARY_PRODUCTBUILD productbuild)
   cpack_optional_append(CPACK_GENERATOR  CPACK_BINARY_RPM          RPM)
   cpack_optional_append(CPACK_GENERATOR  CPACK_BINARY_RPM          RPM)
   cpack_optional_append(CPACK_GENERATOR  CPACK_BINARY_STGZ         STGZ)
   cpack_optional_append(CPACK_GENERATOR  CPACK_BINARY_STGZ         STGZ)

+ 0 - 1
Source/CMakeLists.txt

@@ -1121,7 +1121,6 @@ if(APPLE)
     CPack/cmCPackBundleGenerator.cxx
     CPack/cmCPackBundleGenerator.cxx
     CPack/cmCPackDragNDropGenerator.cxx
     CPack/cmCPackDragNDropGenerator.cxx
     CPack/cmCPackPKGGenerator.cxx
     CPack/cmCPackPKGGenerator.cxx
-    CPack/cmCPackPackageMakerGenerator.cxx
     CPack/cmCPackProductBuildGenerator.cxx
     CPack/cmCPackProductBuildGenerator.cxx
     )
     )
 endif()
 endif()

+ 0 - 5
Source/CPack/cmCPackGeneratorFactory.cxx

@@ -21,7 +21,6 @@
 #ifdef __APPLE__
 #ifdef __APPLE__
 #  include "cmCPackBundleGenerator.h"
 #  include "cmCPackBundleGenerator.h"
 #  include "cmCPackDragNDropGenerator.h"
 #  include "cmCPackDragNDropGenerator.h"
-#  include "cmCPackPackageMakerGenerator.h"
 #  include "cmCPackProductBuildGenerator.h"
 #  include "cmCPackProductBuildGenerator.h"
 #endif
 #endif
 
 
@@ -108,10 +107,6 @@ cmCPackGeneratorFactory::cmCPackGeneratorFactory()
     this->RegisterGenerator("Bundle", "Mac OSX bundle",
     this->RegisterGenerator("Bundle", "Mac OSX bundle",
                             cmCPackBundleGenerator::CreateGenerator);
                             cmCPackBundleGenerator::CreateGenerator);
   }
   }
-  if (cmCPackPackageMakerGenerator::CanGenerate()) {
-    this->RegisterGenerator("PackageMaker", "Mac OSX Package Maker installer",
-                            cmCPackPackageMakerGenerator::CreateGenerator);
-  }
   if (cmCPackProductBuildGenerator::CanGenerate()) {
   if (cmCPackProductBuildGenerator::CanGenerate()) {
     this->RegisterGenerator("productbuild", "Mac OSX pkg",
     this->RegisterGenerator("productbuild", "Mac OSX pkg",
                             cmCPackProductBuildGenerator::CreateGenerator);
                             cmCPackProductBuildGenerator::CreateGenerator);

+ 0 - 577
Source/CPack/cmCPackPackageMakerGenerator.cxx

@@ -1,577 +0,0 @@
-/* Distributed under the OSI-approved BSD 3-Clause License.  See accompanying
-   file Copyright.txt or https://cmake.org/licensing for details.  */
-#include "cmCPackPackageMakerGenerator.h"
-
-#include <cassert>
-#include <cstdio>
-#include <cstdlib>
-#include <map>
-#include <sstream>
-#include <string>
-
-#include "cmsys/FStream.hxx"
-#include "cmsys/RegularExpression.hxx"
-
-#include "cmCPackComponentGroup.h"
-#include "cmCPackLog.h"
-#include "cmDuration.h"
-#include "cmGeneratedFileStream.h"
-#include "cmStringAlgorithms.h"
-#include "cmSystemTools.h"
-#include "cmValue.h"
-#include "cmXMLWriter.h"
-
-static inline unsigned int getVersion(unsigned int major, unsigned int minor)
-{
-  assert(major < 256 && minor < 256);
-  return ((major & 0xFF) << 16 | minor);
-}
-
-cmCPackPackageMakerGenerator::cmCPackPackageMakerGenerator()
-{
-  this->PackageMakerVersion = 0.0;
-  this->PackageCompatibilityVersion = getVersion(10, 4);
-}
-
-cmCPackPackageMakerGenerator::~cmCPackPackageMakerGenerator() = default;
-
-bool cmCPackPackageMakerGenerator::SupportsComponentInstallation() const
-{
-  return this->PackageCompatibilityVersion >= getVersion(10, 4);
-}
-
-int cmCPackPackageMakerGenerator::PackageFiles()
-{
-  // TODO: Use toplevel
-  //       It is used! Is this an obsolete comment?
-
-  std::string resDir; // Where this package's resources will go.
-  std::string packageDirFileName =
-    this->GetOption("CPACK_TEMPORARY_DIRECTORY");
-  if (this->Components.empty()) {
-    packageDirFileName += ".pkg";
-    resDir =
-      cmStrCat(this->GetOption("CPACK_TOPLEVEL_DIRECTORY"), "/Resources");
-  } else {
-    packageDirFileName += ".mpkg";
-    if (!cmsys::SystemTools::MakeDirectory(packageDirFileName.c_str())) {
-      cmCPackLogger(cmCPackLog::LOG_ERROR,
-                    "unable to create package directory " << packageDirFileName
-                                                          << std::endl);
-      return 0;
-    }
-
-    resDir = cmStrCat(packageDirFileName, "/Contents");
-    if (!cmsys::SystemTools::MakeDirectory(resDir.c_str())) {
-      cmCPackLogger(cmCPackLog::LOG_ERROR,
-                    "unable to create package subdirectory " << resDir
-                                                             << std::endl);
-      return 0;
-    }
-
-    resDir += "/Resources";
-    if (!cmsys::SystemTools::MakeDirectory(resDir.c_str())) {
-      cmCPackLogger(cmCPackLog::LOG_ERROR,
-                    "unable to create package subdirectory " << resDir
-                                                             << std::endl);
-      return 0;
-    }
-
-    resDir += "/en.lproj";
-  }
-
-  cmValue preflight = this->GetOption("CPACK_PREFLIGHT_SCRIPT");
-  cmValue postflight = this->GetOption("CPACK_POSTFLIGHT_SCRIPT");
-  cmValue postupgrade = this->GetOption("CPACK_POSTUPGRADE_SCRIPT");
-
-  if (this->Components.empty()) {
-    // Create directory structure
-    std::string preflightDirName = resDir + "/PreFlight";
-    std::string postflightDirName = resDir + "/PostFlight";
-    // if preflight or postflight scripts not there create directories
-    // of the same name, I think this makes it work
-    if (!preflight) {
-      if (!cmsys::SystemTools::MakeDirectory(preflightDirName.c_str())) {
-        cmCPackLogger(cmCPackLog::LOG_ERROR,
-                      "Problem creating installer directory: "
-                        << preflightDirName << std::endl);
-        return 0;
-      }
-    }
-    if (!postflight) {
-      if (!cmsys::SystemTools::MakeDirectory(postflightDirName.c_str())) {
-        cmCPackLogger(cmCPackLog::LOG_ERROR,
-                      "Problem creating installer directory: "
-                        << postflightDirName << std::endl);
-        return 0;
-      }
-    }
-    // if preflight, postflight, or postupgrade are set
-    // then copy them into the resource directory and make
-    // them executable
-    if (preflight) {
-      this->CopyInstallScript(resDir, preflight, "preflight");
-    }
-    if (postflight) {
-      this->CopyInstallScript(resDir, postflight, "postflight");
-    }
-    if (postupgrade) {
-      this->CopyInstallScript(resDir, postupgrade, "postupgrade");
-    }
-  } else if (postflight) {
-    // create a postflight component to house the script
-    this->PostFlightComponent.Name = "PostFlight";
-    this->PostFlightComponent.DisplayName = "PostFlight";
-    this->PostFlightComponent.Description = "PostFlight";
-    this->PostFlightComponent.IsHidden = true;
-
-    // empty directory for pkg contents
-    std::string packageDir = toplevel + "/" + PostFlightComponent.Name;
-    if (!cmsys::SystemTools::MakeDirectory(packageDir.c_str())) {
-      cmCPackLogger(cmCPackLog::LOG_ERROR,
-                    "Problem creating component packages directory: "
-                      << packageDir << std::endl);
-      return 0;
-    }
-
-    // create package
-    std::string packageFileDir = packageDirFileName + "/Contents/Packages/";
-    if (!cmsys::SystemTools::MakeDirectory(packageFileDir.c_str())) {
-      cmCPackLogger(
-        cmCPackLog::LOG_ERROR,
-        "Problem creating component PostFlight Packages directory: "
-          << packageFileDir << std::endl);
-      return 0;
-    }
-    std::string packageFile =
-      packageFileDir + this->GetPackageName(PostFlightComponent);
-    if (!this->GenerateComponentPackage(
-          packageFile.c_str(), packageDir.c_str(), PostFlightComponent)) {
-      return 0;
-    }
-
-    // copy postflight script into resource directory of .pkg
-    std::string resourceDir = packageFile + "/Contents/Resources";
-    this->CopyInstallScript(resourceDir, postflight, "postflight");
-  }
-
-  if (!this->Components.empty()) {
-    // Create the directory where component packages will be built.
-    std::string basePackageDir =
-      cmStrCat(packageDirFileName, "/Contents/Packages");
-    if (!cmsys::SystemTools::MakeDirectory(basePackageDir.c_str())) {
-      cmCPackLogger(cmCPackLog::LOG_ERROR,
-                    "Problem creating component packages directory: "
-                      << basePackageDir << std::endl);
-      return 0;
-    }
-
-    // Create the directory where downloaded component packages will
-    // be placed.
-    cmValue userUploadDirectory = this->GetOption("CPACK_UPLOAD_DIRECTORY");
-    std::string uploadDirectory;
-    if (userUploadDirectory && !userUploadDirectory->empty()) {
-      uploadDirectory = userUploadDirectory;
-    } else {
-      uploadDirectory =
-        cmStrCat(this->GetOption("CPACK_PACKAGE_DIRECTORY"), "/CPackUploads");
-    }
-
-    // Create packages for each component
-    bool warnedAboutDownloadCompatibility = false;
-
-    std::map<std::string, cmCPackComponent>::iterator compIt;
-    for (compIt = this->Components.begin(); compIt != this->Components.end();
-         ++compIt) {
-      std::string packageFile;
-      if (compIt->second.IsDownloaded) {
-        if (this->PackageCompatibilityVersion >= getVersion(10, 5) &&
-            this->PackageMakerVersion >= 3.0) {
-          // Build this package within the upload directory.
-          packageFile = uploadDirectory;
-
-          if (!cmSystemTools::FileExists(uploadDirectory.c_str())) {
-            if (!cmSystemTools::MakeDirectory(uploadDirectory.c_str())) {
-              cmCPackLogger(cmCPackLog::LOG_ERROR,
-                            "Unable to create package upload directory "
-                              << uploadDirectory << std::endl);
-              return 0;
-            }
-          }
-        } else if (!warnedAboutDownloadCompatibility) {
-          if (this->PackageCompatibilityVersion < getVersion(10, 5)) {
-            cmCPackLogger(
-              cmCPackLog::LOG_WARNING,
-              "CPack warning: please set CPACK_OSX_PACKAGE_VERSION to 10.5 "
-              "or greater enable downloaded packages. CPack will build a "
-              "non-downloaded package."
-                << std::endl);
-          }
-
-          if (this->PackageMakerVersion < 3) {
-            cmCPackLogger(cmCPackLog::LOG_WARNING,
-                          "CPack warning: unable to build downloaded "
-                          "packages with PackageMaker versions prior "
-                          "to 3.0. CPack will build a non-downloaded package."
-                            << std::endl);
-          }
-
-          warnedAboutDownloadCompatibility = true;
-        }
-      }
-
-      if (packageFile.empty()) {
-        // Build this package within the overall distribution
-        // metapackage.
-        packageFile = basePackageDir;
-
-        // We're not downloading this component, even if the user
-        // requested it.
-        compIt->second.IsDownloaded = false;
-      }
-
-      packageFile += '/';
-      packageFile += GetPackageName(compIt->second);
-
-      std::string packageDir = cmStrCat(toplevel, '/', compIt->first);
-      if (!this->GenerateComponentPackage(
-            packageFile.c_str(), packageDir.c_str(), compIt->second)) {
-        return 0;
-      }
-    }
-  }
-  this->SetOption("CPACK_MODULE_VERSION_SUFFIX", "");
-
-  // Copy or create all of the resource files we need.
-  if (!this->CopyCreateResourceFile("License", resDir) ||
-      !this->CopyCreateResourceFile("ReadMe", resDir) ||
-      !this->CopyCreateResourceFile("Welcome", resDir) ||
-      !this->CopyResourcePlistFile("Info.plist") ||
-      !this->CopyResourcePlistFile("Description.plist")) {
-    cmCPackLogger(cmCPackLog::LOG_ERROR,
-                  "Problem copying the resource files" << std::endl);
-    return 0;
-  }
-
-  if (this->Components.empty()) {
-    // Use PackageMaker to build the package.
-    std::ostringstream pkgCmd;
-    pkgCmd << "\"" << this->GetOption("CPACK_INSTALLER_PROGRAM")
-           << "\" -build -p \"" << packageDirFileName << "\"";
-    if (this->Components.empty()) {
-      pkgCmd << " -f \"" << this->GetOption("CPACK_TEMPORARY_DIRECTORY");
-    } else {
-      pkgCmd << " -mi \"" << this->GetOption("CPACK_TEMPORARY_DIRECTORY")
-             << "/packages/";
-    }
-    pkgCmd << "\" -r \"" << this->GetOption("CPACK_TOPLEVEL_DIRECTORY")
-           << "/Resources\" -i \""
-           << this->GetOption("CPACK_TOPLEVEL_DIRECTORY")
-           << "/Info.plist\" -d \""
-           << this->GetOption("CPACK_TOPLEVEL_DIRECTORY")
-           << "/Description.plist\"";
-    if (this->PackageMakerVersion > 2.0) {
-      pkgCmd << " -v";
-    }
-    if (!RunPackageMaker(pkgCmd.str().c_str(), packageDirFileName.c_str())) {
-      return 0;
-    }
-  } else {
-    // We have built the package in place. Generate the
-    // distribution.dist file to describe it for the installer.
-    WriteDistributionFile(packageDirFileName.c_str(), "PACKAGEMAKER");
-  }
-
-  std::string tmpFile = cmStrCat(this->GetOption("CPACK_TOPLEVEL_DIRECTORY"),
-                                 "/hdiutilOutput.log");
-  std::ostringstream dmgCmd;
-  dmgCmd << "\"" << this->GetOption("CPACK_INSTALLER_PROGRAM_DISK_IMAGE")
-         << "\" create -ov -fs HFS+ -format UDZO -srcfolder \""
-         << packageDirFileName << "\" \"" << packageFileNames[0] << "\"";
-  std::string output;
-  int retVal = 1;
-  int numTries = 10;
-  bool res = false;
-  while (numTries > 0) {
-    res = cmSystemTools::RunSingleCommand(
-      dmgCmd.str(), &output, &output, &retVal, nullptr, this->GeneratorVerbose,
-      cmDuration::zero());
-    if (res && !retVal) {
-      numTries = -1;
-      break;
-    }
-    cmSystemTools::Delay(500);
-    numTries--;
-  }
-  if (!res || retVal) {
-    cmGeneratedFileStream ofs(tmpFile);
-    ofs << "# Run command: " << dmgCmd.str() << std::endl
-        << "# Output:" << std::endl
-        << output << std::endl;
-    cmCPackLogger(cmCPackLog::LOG_ERROR,
-                  "Problem running hdiutil command: "
-                    << dmgCmd.str() << std::endl
-                    << "Please check " << tmpFile << " for errors"
-                    << std::endl);
-    return 0;
-  }
-
-  return 1;
-}
-
-int cmCPackPackageMakerGenerator::InitializeInternal()
-{
-  cmCPackLogger(cmCPackLog::LOG_WARNING,
-                "The PackageMaker generator is deprecated "
-                "and will be removed in a future version.\n");
-  this->SetOptionIfNotSet("CPACK_PACKAGING_INSTALL_PREFIX", "/usr");
-
-  // Starting with Xcode 4.3, PackageMaker is a separate app, and you
-  // can put it anywhere you want. So... use a variable for its location.
-  // People who put it in unexpected places can use the variable to tell
-  // us where it is.
-  //
-  // Use the following locations, in "most recent installation" order,
-  // to search for the PackageMaker app. Assume people who copy it into
-  // the new Xcode 4.3 app in "/Applications" will copy it into the nested
-  // Applications folder inside the Xcode bundle itself. Or directly in
-  // the "/Applications" directory.
-  //
-  // If found, save result in the CPACK_INSTALLER_PROGRAM variable.
-
-  std::vector<std::string> paths;
-  paths.emplace_back("/Applications/Xcode.app/Contents/Applications"
-                     "/PackageMaker.app/Contents/MacOS");
-  paths.emplace_back("/Applications/Utilities"
-                     "/PackageMaker.app/Contents/MacOS");
-  paths.emplace_back("/Applications"
-                     "/PackageMaker.app/Contents/MacOS");
-  paths.emplace_back("/Developer/Applications/Utilities"
-                     "/PackageMaker.app/Contents/MacOS");
-  paths.emplace_back("/Developer/Applications"
-                     "/PackageMaker.app/Contents/MacOS");
-
-  std::string pkgPath;
-  cmValue inst_program = this->GetOption("CPACK_INSTALLER_PROGRAM");
-  if (inst_program && !inst_program->empty()) {
-    pkgPath = inst_program;
-  } else {
-    pkgPath = cmSystemTools::FindProgram("PackageMaker", paths, false);
-    if (pkgPath.empty()) {
-      cmCPackLogger(cmCPackLog::LOG_ERROR,
-                    "Cannot find PackageMaker compiler" << std::endl);
-      return 0;
-    }
-    this->SetOptionIfNotSet("CPACK_INSTALLER_PROGRAM", pkgPath);
-  }
-
-  // Get path to the real PackageMaker, not a symlink:
-  pkgPath = cmSystemTools::GetRealPath(pkgPath);
-  // Up from there to find the version.plist file in the "Contents" dir:
-  std::string contents_dir;
-  contents_dir = cmSystemTools::GetFilenamePath(pkgPath);
-  contents_dir = cmSystemTools::GetFilenamePath(contents_dir);
-
-  std::string versionFile = contents_dir + "/version.plist";
-
-  if (!cmSystemTools::FileExists(versionFile.c_str())) {
-    cmCPackLogger(cmCPackLog::LOG_ERROR,
-                  "Cannot find PackageMaker compiler version file: "
-                    << versionFile << std::endl);
-    return 0;
-  }
-
-  cmsys::ifstream ifs(versionFile.c_str());
-  if (!ifs) {
-    cmCPackLogger(cmCPackLog::LOG_ERROR,
-                  "Cannot open PackageMaker compiler version file"
-                    << std::endl);
-    return 0;
-  }
-
-  // Check the PackageMaker version
-  cmsys::RegularExpression rexKey("<key>CFBundleShortVersionString</key>");
-  cmsys::RegularExpression rexVersion("<string>([0-9]+.[0-9.]+)</string>");
-  std::string line;
-  bool foundKey = false;
-  while (cmSystemTools::GetLineFromStream(ifs, line)) {
-    if (rexKey.find(line)) {
-      foundKey = true;
-      break;
-    }
-  }
-  if (!foundKey) {
-    cmCPackLogger(
-      cmCPackLog::LOG_ERROR,
-      "Cannot find CFBundleShortVersionString in the PackageMaker compiler "
-      "version file"
-        << std::endl);
-    return 0;
-  }
-  if (!cmSystemTools::GetLineFromStream(ifs, line) || !rexVersion.find(line)) {
-    cmCPackLogger(cmCPackLog::LOG_ERROR,
-                  "Problem reading the PackageMaker compiler version file: "
-                    << versionFile << std::endl);
-    return 0;
-  }
-  this->PackageMakerVersion = atof(rexVersion.match(1).c_str());
-  if (this->PackageMakerVersion < 1.0) {
-    cmCPackLogger(cmCPackLog::LOG_ERROR,
-                  "Require PackageMaker 1.0 or higher" << std::endl);
-    return 0;
-  }
-  cmCPackLogger(cmCPackLog::LOG_DEBUG,
-                "PackageMaker version is: " << this->PackageMakerVersion
-                                            << std::endl);
-
-  // Determine the package compatibility version. If it wasn't
-  // specified by the user, we define it based on which features the
-  // user requested.
-  cmValue packageCompat = this->GetOption("CPACK_OSX_PACKAGE_VERSION");
-  if (packageCompat && !packageCompat->empty()) {
-    unsigned int majorVersion = 10;
-    unsigned int minorVersion = 5;
-    int res =
-      sscanf(packageCompat->c_str(), "%u.%u", &majorVersion, &minorVersion);
-    if (res == 2) {
-      this->PackageCompatibilityVersion =
-        getVersion(majorVersion, minorVersion);
-    }
-  } else if (this->GetOption("CPACK_DOWNLOAD_SITE")) {
-    this->SetOption("CPACK_OSX_PACKAGE_VERSION", "10.5");
-    this->PackageCompatibilityVersion = getVersion(10, 5);
-  } else if (this->GetOption("CPACK_COMPONENTS_ALL")) {
-    this->SetOption("CPACK_OSX_PACKAGE_VERSION", "10.4");
-    this->PackageCompatibilityVersion = getVersion(10, 4);
-  } else {
-    this->SetOption("CPACK_OSX_PACKAGE_VERSION", "10.3");
-    this->PackageCompatibilityVersion = getVersion(10, 3);
-  }
-
-  std::vector<std::string> no_paths;
-  pkgPath = cmSystemTools::FindProgram("hdiutil", no_paths, false);
-  if (pkgPath.empty()) {
-    cmCPackLogger(cmCPackLog::LOG_ERROR,
-                  "Cannot find hdiutil compiler" << std::endl);
-    return 0;
-  }
-  this->SetOptionIfNotSet("CPACK_INSTALLER_PROGRAM_DISK_IMAGE", pkgPath);
-
-  return this->Superclass::InitializeInternal();
-}
-
-bool cmCPackPackageMakerGenerator::RunPackageMaker(const char* command,
-                                                   const char* packageFile)
-{
-  std::string tmpFile = cmStrCat(this->GetOption("CPACK_TOPLEVEL_DIRECTORY"),
-                                 "/PackageMakerOutput.log");
-
-  cmCPackLogger(cmCPackLog::LOG_VERBOSE, "Execute: " << command << std::endl);
-  std::string output;
-  int retVal = 1;
-  bool res = cmSystemTools::RunSingleCommand(
-    command, &output, &output, &retVal, nullptr, this->GeneratorVerbose,
-    cmDuration::zero());
-  cmCPackLogger(cmCPackLog::LOG_VERBOSE,
-                "Done running package maker" << std::endl);
-  if (!res || retVal) {
-    cmGeneratedFileStream ofs(tmpFile);
-    ofs << "# Run command: " << command << std::endl
-        << "# Output:" << std::endl
-        << output << std::endl;
-    cmCPackLogger(cmCPackLog::LOG_ERROR,
-                  "Problem running PackageMaker command: "
-                    << command << std::endl
-                    << "Please check " << tmpFile << " for errors"
-                    << std::endl);
-    return false;
-  }
-  // sometimes the command finishes but the directory is not yet
-  // created, so try 10 times to see if it shows up
-  int tries = 10;
-  while (tries > 0 && !cmSystemTools::FileExists(packageFile)) {
-    cmSystemTools::Delay(500);
-    tries--;
-  }
-  if (!cmSystemTools::FileExists(packageFile)) {
-    cmCPackLogger(cmCPackLog::LOG_ERROR,
-                  "Problem running PackageMaker command: "
-                    << command << std::endl
-                    << "Package not created: " << packageFile << std::endl);
-    return false;
-  }
-
-  return true;
-}
-
-bool cmCPackPackageMakerGenerator::GenerateComponentPackage(
-  const char* packageFile, const char* packageDir,
-  const cmCPackComponent& component)
-{
-  cmCPackLogger(cmCPackLog::LOG_OUTPUT,
-                "-   Building component package: " << packageFile
-                                                   << std::endl);
-
-  // The command that will be used to run PackageMaker
-  std::ostringstream pkgCmd;
-
-  if (this->PackageCompatibilityVersion < getVersion(10, 5) ||
-      this->PackageMakerVersion < 3.0) {
-    // Create Description.plist and Info.plist files for normal Mac OS
-    // X packages, which work on Mac OS X 10.3 and newer.
-    std::string descriptionFile =
-      cmStrCat(this->GetOption("CPACK_TOPLEVEL_DIRECTORY"), '/',
-               component.Name, "-Description.plist");
-    cmsys::ofstream out(descriptionFile.c_str());
-    cmXMLWriter xout(out);
-    xout.StartDocument();
-    xout.Doctype("plist PUBLIC \"-//Apple Computer//DTD PLIST 1.0//EN\""
-                 "\"http://www.apple.com/DTDs/PropertyList-1.0.dtd\"");
-    xout.StartElement("plist");
-    xout.Attribute("version", "1.4");
-    xout.StartElement("dict");
-    xout.Element("key", "IFPkgDescriptionTitle");
-    xout.Element("string", component.DisplayName);
-    xout.Element("key", "IFPkgDescriptionVersion");
-    xout.Element("string", this->GetOption("CPACK_PACKAGE_VERSION"));
-    xout.Element("key", "IFPkgDescriptionDescription");
-    xout.Element("string", component.Description);
-    xout.EndElement(); // dict
-    xout.EndElement(); // plist
-    xout.EndDocument();
-    out.close();
-
-    // Create the Info.plist file for this component
-    std::string moduleVersionSuffix = cmStrCat('.', component.Name);
-    this->SetOption("CPACK_MODULE_VERSION_SUFFIX", moduleVersionSuffix);
-    std::string infoFileName = cmStrCat(component.Name, "-Info.plist");
-    if (!this->CopyResourcePlistFile("Info.plist", infoFileName.c_str())) {
-      return false;
-    }
-
-    pkgCmd << "\"" << this->GetOption("CPACK_INSTALLER_PROGRAM")
-           << "\" -build -p \"" << packageFile << "\""
-           << " -f \"" << packageDir << "\""
-           << " -i \"" << this->GetOption("CPACK_TOPLEVEL_DIRECTORY") << "/"
-           << infoFileName << "\""
-           << " -d \"" << descriptionFile << "\"";
-  } else {
-    // Create a "flat" package on Mac OS X 10.5 and newer. Flat
-    // packages are stored in a single file, rather than a directory
-    // like normal packages, and can be downloaded by the installer
-    // on-the-fly in Mac OS X 10.5 or newer. Thus, we need to create
-    // flat packages when the packages will be downloaded on the fly.
-    std::string pkgId =
-      cmStrCat("com.", this->GetOption("CPACK_PACKAGE_VENDOR"), '.',
-               this->GetOption("CPACK_PACKAGE_NAME"), '.', component.Name);
-
-    pkgCmd << "\"" << this->GetOption("CPACK_INSTALLER_PROGRAM")
-           << "\" --root \"" << packageDir << "\""
-           << " --id " << pkgId << " --target "
-           << this->GetOption("CPACK_OSX_PACKAGE_VERSION") << " --out \""
-           << packageFile << "\"";
-  }
-
-  // Run PackageMaker
-  return RunPackageMaker(pkgCmd.str().c_str(), packageFile);
-}

+ 0 - 50
Source/CPack/cmCPackPackageMakerGenerator.h

@@ -1,50 +0,0 @@
-/* Distributed under the OSI-approved BSD 3-Clause License.  See accompanying
-   file Copyright.txt or https://cmake.org/licensing for details.  */
-#pragma once
-
-#include "cmConfigure.h" // IWYU pragma: keep
-
-#include "cmCPackGenerator.h"
-#include "cmCPackPKGGenerator.h"
-
-class cmCPackComponent;
-
-/** \class cmCPackPackageMakerGenerator
- * \brief A generator for PackageMaker files
- *
- * http://developer.apple.com/documentation/Darwin
- * /Reference/ManPages/man1/packagemaker.1.html
- */
-class cmCPackPackageMakerGenerator : public cmCPackPKGGenerator
-{
-public:
-  cmCPackTypeMacro(cmCPackPackageMakerGenerator, cmCPackPKGGenerator);
-
-  /**
-   * Construct generator
-   */
-  cmCPackPackageMakerGenerator();
-  ~cmCPackPackageMakerGenerator() override;
-  bool SupportsComponentInstallation() const override;
-
-protected:
-  int InitializeInternal() override;
-  int PackageFiles() override;
-  const char* GetOutputExtension() override { return ".dmg"; }
-
-  // Run PackageMaker with the given command line, which will (if
-  // successful) produce the given package file. Returns true if
-  // PackageMaker succeeds, false otherwise.
-  bool RunPackageMaker(const char* command, const char* packageFile);
-
-  // Generate a package in the file packageFile for the given
-  // component.  All of the files within this component are stored in
-  // the directory packageDir. Returns true if successful, false
-  // otherwise.
-  bool GenerateComponentPackage(const char* packageFile,
-                                const char* packageDir,
-                                const cmCPackComponent& component);
-
-  double PackageMakerVersion;
-  unsigned int PackageCompatibilityVersion;
-};

+ 0 - 11
Tests/CMakeLists.txt

@@ -294,17 +294,6 @@ if(BUILD_TESTING)
     mark_as_advanced(CTEST_TEST_CTEST)
     mark_as_advanced(CTEST_TEST_CTEST)
   endif ()
   endif ()
 
 
-  # Should CPack tests be run? By default, yes, but...
-  #
-  # Disable packaging test on Apple 10.3 and below. PackageMaker starts
-  # DiskManagementTool as root and disowns it
-  # (http://lists.apple.com/archives/installer-dev/2005/Jul/msg00005.html).
-  # It is left holding open pipe handles and preventing ProcessUNIX from
-  # detecting end-of-data even after its immediate child exits. Then
-  # the test hangs until it times out and is killed. This is a
-  # well-known bug in kwsys process execution that I would love to get
-  # time to fix.
-  #
   option(CTEST_TEST_CPACK
   option(CTEST_TEST_CPACK
     "Should the tests that use '--build-target package' be run?"
     "Should the tests that use '--build-target package' be run?"
     ON)
     ON)

+ 1 - 3
Tests/CPackComponents/VerifyResult.cmake

@@ -22,9 +22,7 @@ if(WIN32)
 endif()
 endif()
 
 
 if(APPLE)
 if(APPLE)
-  # Always expect the *.dmg installer - PackageMaker should always
-  # be installed on a development Mac:
-  #
+  # Always expect the *.dmg installer
   set(expected_file_mask "${CPackComponents_BINARY_DIR}/MyLib-*.dmg")
   set(expected_file_mask "${CPackComponents_BINARY_DIR}/MyLib-*.dmg")
 endif()
 endif()
 
 

+ 1 - 1
Tests/CPackComponentsForAll/CMakeLists.txt

@@ -5,7 +5,7 @@
 # which supports CPack components.
 # which supports CPack components.
 #
 #
 # Depending on the CPack generator and on some CPACK_xxx var values
 # Depending on the CPack generator and on some CPACK_xxx var values
-# the generator may produce a single (NSIS, PackageMaker)
+# the generator may produce a single (NSIS, productbuild)
 # or several package files (Archive Generators, RPM, DEB)
 # or several package files (Archive Generators, RPM, DEB)
 cmake_minimum_required(VERSION 2.8.3.20101130 FATAL_ERROR)
 cmake_minimum_required(VERSION 2.8.3.20101130 FATAL_ERROR)
 project(CPackComponentsForAll)
 project(CPackComponentsForAll)

+ 0 - 1
Tests/X11/CMakeLists.txt

@@ -29,7 +29,6 @@ if(X11_FOUND)
     target_link_libraries(HelloWorldX11 ${X11_LIBRARIES})
     target_link_libraries(HelloWorldX11 ${X11_LIBRARIES})
     install(TARGETS HelloWorldX11 DESTINATION bin)
     install(TARGETS HelloWorldX11 DESTINATION bin)
 
 
-    set(CPACK_BINARY_PACKAGEMAKER OFF CACHE BOOL "" FORCE )
     set(CPACK_PACKAGE_NAME HelloWorldX11Package)
     set(CPACK_PACKAGE_NAME HelloWorldX11Package)
     set(CPACK_PACKAGE_EXECUTABLES HelloWorldX11 HelloWorldX11)
     set(CPACK_PACKAGE_EXECUTABLES HelloWorldX11 HelloWorldX11)
   endif()
   endif()