CPack: Change CPACK_PRODUCTBUILD_DOMAINS default to true (CMP0161)

Fixes: #23351
This commit is contained in:
Craig Scott
2024-01-28 17:57:58 +11:00
parent 4e7f2397e4
commit 339ae33e55
14 changed files with 99 additions and 3 deletions

View File

@@ -91,8 +91,9 @@ macOS using ProductBuild:
.. versionadded:: 3.23
This option enables more granular control over where the product may be
installed. When it is set to true, a ``domains`` element of the following
form will be added to the productbuild Distribution XML:
installed. When it is set to true (see policy :policy:`CMP0161`), a
``domains`` element of the following form will be added to the
productbuild Distribution XML:
.. code-block:: xml

View File

@@ -57,6 +57,7 @@ Policies Introduced by CMake 3.29
.. toctree::
:maxdepth: 1
CMP0161: CPACK_PRODUCTBUILD_DOMAINS defaults to true. </policy/CMP0161>
CMP0160: More read-only target properties now error when trying to set them. </policy/CMP0160>
CMP0159: file(STRINGS) with REGEX updates CMAKE_MATCH_<n>. </policy/CMP0159>
CMP0158: add_test() honors CMAKE_CROSSCOMPILING_EMULATOR only when cross-compiling. </policy/CMP0158>

36
Help/policy/CMP0161.rst Normal file
View File

@@ -0,0 +1,36 @@
CMP0161
-------
.. versionadded:: 3.29
The :variable:`CPACK_PRODUCTBUILD_DOMAINS` variable defaults to true.
Before CMake 3.29, the :variable:`CPACK_PRODUCTBUILD_DOMAINS` variable is
unset by default. When using the :cpack_gen:`CPack productbuild Generator`,
this disables the use of the ``domains`` attribute in the productbuild
Distribution XML, and falls back to the ``auth`` attribute instead.
These attributes control where a productbuild package is allowed to be
installed. But the ``auth`` attribute has been deprecated by Apple,
so projects should migrate to using ``domains`` instead.
CMake 3.29 and above prefer to use a default value of true for
:variable:`CPACK_PRODUCTBUILD_DOMAINS`, which means ``domains`` will be used
by default unless the project explicitly sets
:variable:`CPACK_PRODUCTBUILD_DOMAINS` to false.
This policy provides compatibility with projects that enabled the
:cpack_gen:`CPack productbuild Generator`, but did not explicitly set
:variable:`CPACK_PRODUCTBUILD_DOMAINS`.
The ``OLD`` behavior for this policy is to leave
:variable:`CPACK_PRODUCTBUILD_DOMAINS` unset if it hasn't been set.
The ``NEW`` behavior for this policy is to use a default value of true for
:variable:`CPACK_PRODUCTBUILD_DOMAINS`.
.. |INTRODUCED_IN_CMAKE_VERSION| replace:: 3.29
.. |WARNS_OR_DOES_NOT_WARN| replace:: warns
.. include:: STANDARD_ADVICE.txt
Note that a warning will only be emitted if the
:variable:`CPACK_BINARY_PRODUCTBUILD <CPACK_BINARY_<GENNAME>>` variable is
set to true and the project is being built for an Apple platform.
.. include:: DEPRECATED.txt

View File

@@ -0,0 +1,5 @@
productbuild-domains-policy
---------------------------
* The :variable:`CPACK_PRODUCTBUILD_DOMAINS` variable now defaults to true.
See policy :policy:`CMP0161`.