productbuild: Restore CPACK_PACKAGEMAKER_CHOICES variable

In 2a8df7e7db (productbuild: Don't write rootVolumeOnly attribute if
writing domains, 2022-03-21), the variable holding the main contents
of the distribution.dist XML file was renamed from
CPACK_PACKAGEMAKER_CHOICES to CPACK_APPLE_PKG_INSTALLER_CONTENT.
This reflected the fact that the PackageMaker generator is deprecated.
The new variable also includes more details than the old one held.
Some projects were relying on the old variable name, so we need to still
set that to the same contents as it would have previously provided.

Neither of these variables were previously documented, but the older
variable was mentioned in enough semi-official places that it essentially
became semi-supported. Document both variables and highlight that the
older one is deprecated.

Fixes: #23467
This commit is contained in:
Craig Scott
2022-04-29 17:43:03 +10:00
parent 74c4762a38
commit d099136add
3 changed files with 108 additions and 21 deletions

View File

@@ -203,3 +203,47 @@ installer.
Does the same as :variable:`CPACK_PRODUCTBUILD_BACKGROUND_UTI` option,
but for the dark theme.
Distribution XML Template
^^^^^^^^^^^^^^^^^^^^^^^^^
CPack uses a template file to generate the ``distribution.dist`` file used
internally by this package generator. Ordinarily, CMake provides the template
file, but projects may supply their own by placing a file called
``CPack.distribution.dist.in`` in one of the directories listed in the
:variable:`CMAKE_MODULE_PATH` variable. CPack will then pick up the project's
template file instead of using its own.
The ``distribution.dist`` file is generated by performing substitutions
similar to the :command:`configure_file` command. Any variable set when
CPack runs will be available for substitution using the usual ``@...@``
form. The following variables are also set internally and made available for
substitution:
``CPACK_RESOURCE_FILE_LICENSE_NOPATH``
Same as :variable:`CPACK_RESOURCE_FILE_LICENSE` except without the path.
The named file will be available in the same directory as the generated
``distribution.dist`` file.
``CPACK_RESOURCE_FILE_README_NOPATH``
Same as :variable:`CPACK_RESOURCE_FILE_README` except without the path.
The named file will be available in the same directory as the generated
``distribution.dist`` file.
``CPACK_RESOURCE_FILE_WELCOME_NOPATH``
Same as :variable:`CPACK_RESOURCE_FILE_WELCOME` except without the path.
The named file will be available in the same directory as the generated
``distribution.dist`` file.
``CPACK_APPLE_PKG_INSTALLER_CONTENT``
.. versionadded:: 3.23
This contains all the XML elements that specify installer-wide options
(including domain details), default backgrounds and the choices outline.
``CPACK_PACKAGEMAKER_CHOICES``
.. deprecated:: 3.23
This contains only the XML elements that specify the default backgrounds
and the choices outline. It does not include the installer-wide options or
any domain details. Use ``CPACK_APPLE_PKG_INSTALLER_CONTENT`` instead.

View File

@@ -185,6 +185,13 @@ CPack
:variable:`CPACK_PRODUCTBUILD_IDENTIFIER`, used to customize the unique
product identifier associated with the product.
* The ``CPack.distribution.dist.in`` template used by the
:cpack_gen:`CPack productbuild Generator` and
:cpack_gen:`CPack PackageMaker Generator` was updated to use a new
``CPACK_APPLE_PKG_INSTALLER_CONTENT`` variable for its main content.
This replaced the previously undocumented and now deprecated
``CPACK_PACKAGEMAKER_CHOICES`` variable.
* The :cpack_gen:`CPack IFW Generator` gained the new
:variable:`CPACK_IFW_ARCHIVE_FORMAT` and
:variable:`CPACK_IFW_ARCHIVE_COMPRESSION` variables for setting the
@@ -230,6 +237,15 @@ Deprecated and Removed Features
* The :manual:`cpack(1)` undocumented ``OSXX11`` generator has been removed.
* The previously undocumented ``CPACK_PACKAGEMAKER_CHOICES`` variable used in
the ``CPack.distribution.dist.in`` template has been replaced by a new
``CPACK_APPLE_PKG_INSTALLER_CONTENT`` variable. This only affects projects
that were providing their own custom ``CPack.distribution.dist.in`` template
file, but still relied on ``CPACK_PACKAGEMAKER_CHOICES`` being set. Those
custom template files should be updated to use
``CPACK_APPLE_PKG_INSTALLER_CONTENT`` instead, or to fully define all the
template file's contents without relying on substitution of either variable.
Other Changes
=============
@@ -282,3 +298,14 @@ Changes made since CMake 3.23.0 include the following.
* The :prop_tgt:`HEADER_SETS` and :prop_tgt:`INTERFACE_HEADER_SETS` target
properties added in CMake 3.23.0 are now read-only records of the header
sets created by the :command:`target_sources` command.
3.23.2
------
* The ``CPACK_PACKAGEMAKER_CHOICES`` variable used in the
``CPack.distribution.dist.in`` template file was replaced by a new
``CPACK_APPLE_PKG_INSTALLER_CONTENT`` variable in CMake 3.23.0.
This broke projects that provided their own template file but still
expected the ``CPACK_PACKAGEMAKER_CHOICES`` variable to be defined.
The old ``CPACK_PACKAGEMAKER_CHOICES`` variable is now also set to the
same content as it was before, but it is formally deprecated.