CPack: Change CPACK_PRODUCTBUILD_DOMAINS default to true (CMP0161)
Fixes: #23351
This commit is contained in:
parent
4e7f2397e4
commit
339ae33e55
@ -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
|
||||
|
||||
|
@ -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
36
Help/policy/CMP0161.rst
Normal 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
|
5
Help/release/dev/productbuild-domains-policy.rst
Normal file
5
Help/release/dev/productbuild-domains-policy.rst
Normal file
@ -0,0 +1,5 @@
|
||||
productbuild-domains-policy
|
||||
---------------------------
|
||||
|
||||
* The :variable:`CPACK_PRODUCTBUILD_DOMAINS` variable now defaults to true.
|
||||
See policy :policy:`CMP0161`.
|
@ -883,6 +883,24 @@ endif()
|
||||
# WiX specific variables
|
||||
_cpack_set_default(CPACK_WIX_SIZEOF_VOID_P "${CMAKE_SIZEOF_VOID_P}")
|
||||
|
||||
# productbuild specific variables
|
||||
cmake_policy(GET CMP0161 _CPack_CMP0161)
|
||||
if("x${_CPack_CMP0161}x" STREQUAL "xNEWx")
|
||||
_cpack_set_default(CPACK_PRODUCTBUILD_DOMAINS ON)
|
||||
elseif(APPLE AND CPACK_BINARY_PRODUCTBUILD AND
|
||||
NOT DEFINED CPACK_PRODUCTBUILD_DOMAINS AND
|
||||
NOT "x${_CPack_CMP0161}x" STREQUAL "xOLDx")
|
||||
cmake_policy(GET_WARNING CMP0161 _CMP0161_warning)
|
||||
message(AUTHOR_WARNING
|
||||
"${_CMP0161_warning}\n"
|
||||
"For compatibility, CPACK_PRODUCTBUILD_DOMAINS will remain unset. "
|
||||
"Explicitly setting CPACK_PRODUCTBUILD_DOMAINS or setting policy CMP0161 "
|
||||
"to NEW will prevent this warning."
|
||||
)
|
||||
unset(_CMP0161_warning)
|
||||
endif()
|
||||
unset(_CPack_CMP0161)
|
||||
|
||||
# set sysroot so SDK tools can be used
|
||||
if(CMAKE_OSX_SYSROOT)
|
||||
_cpack_set_default(CPACK_OSX_SYSROOT "${_CMAKE_OSX_SYSROOT_PATH}")
|
||||
|
@ -491,7 +491,9 @@ class cmMakefile;
|
||||
SELECT( \
|
||||
POLICY, CMP0160, \
|
||||
"More read-only target properties now error when trying to set them.", 3, \
|
||||
29, 0, cmPolicies::WARN)
|
||||
29, 0, cmPolicies::WARN) \
|
||||
SELECT(POLICY, CMP0161, "CPACK_PRODUCTBUILD_DOMAINS defaults to true.", 3, \
|
||||
29, 0, cmPolicies::WARN)
|
||||
|
||||
#define CM_SELECT_ID(F, A1, A2, A3, A4, A5, A6) F(A1)
|
||||
#define CM_FOR_EACH_POLICY_ID(POLICY) \
|
||||
|
3
Tests/RunCMake/CPackConfig/CMP0161-NEW-check.cmake
Normal file
3
Tests/RunCMake/CPackConfig/CMP0161-NEW-check.cmake
Normal file
@ -0,0 +1,3 @@
|
||||
include(${RunCMake_SOURCE_DIR}/check.cmake)
|
||||
|
||||
test_variable(CPACK_PRODUCTBUILD_DOMAINS "ON")
|
2
Tests/RunCMake/CPackConfig/CMP0161-NEW.cmake
Normal file
2
Tests/RunCMake/CPackConfig/CMP0161-NEW.cmake
Normal file
@ -0,0 +1,2 @@
|
||||
cmake_policy(SET CMP0161 NEW)
|
||||
set(CPACK_BINARY_PRODUCTBUILD ON CACHE BOOL "" FORCE)
|
5
Tests/RunCMake/CPackConfig/CMP0161-OLD-check.cmake
Normal file
5
Tests/RunCMake/CPackConfig/CMP0161-OLD-check.cmake
Normal file
@ -0,0 +1,5 @@
|
||||
include(${RunCMake_SOURCE_DIR}/check.cmake)
|
||||
|
||||
if(DEFINED CPACK_PRODUCTBUILD_DOMANS)
|
||||
message(FATAL_ERROR "CPACK_PRODUCTBUILD_DOMANS was defined, but it should not have been")
|
||||
endif()
|
2
Tests/RunCMake/CPackConfig/CMP0161-OLD.cmake
Normal file
2
Tests/RunCMake/CPackConfig/CMP0161-OLD.cmake
Normal file
@ -0,0 +1,2 @@
|
||||
cmake_policy(SET CMP0161 OLD)
|
||||
set(CPACK_BINARY_PRODUCTBUILD ON CACHE BOOL "" FORCE)
|
5
Tests/RunCMake/CPackConfig/CMP0161-WARN-check.cmake
Normal file
5
Tests/RunCMake/CPackConfig/CMP0161-WARN-check.cmake
Normal file
@ -0,0 +1,5 @@
|
||||
include(${RunCMake_SOURCE_DIR}/check.cmake)
|
||||
|
||||
if(DEFINED CPACK_PRODUCTBUILD_DOMANS)
|
||||
message(FATAL_ERROR "CPACK_PRODUCTBUILD_DOMANS was defined, but it should not have been")
|
||||
endif()
|
12
Tests/RunCMake/CPackConfig/CMP0161-WARN-stderr-darwin.txt
Normal file
12
Tests/RunCMake/CPackConfig/CMP0161-WARN-stderr-darwin.txt
Normal file
@ -0,0 +1,12 @@
|
||||
^CMake Warning \(dev\) at [^
|
||||
]*/Modules/CPack\.cmake:[0-9]+ \(message\):
|
||||
Policy CMP0161 is not set: CPACK_PRODUCTBUILD_DOMAINS defaults to true\.
|
||||
Run "cmake --help-policy CMP0161" for policy details\. Use the cmake_policy
|
||||
command to set the policy and suppress this warning\.
|
||||
|
||||
For compatibility, CPACK_PRODUCTBUILD_DOMAINS will remain unset\.
|
||||
Explicitly setting CPACK_PRODUCTBUILD_DOMAINS or setting policy CMP0161 to
|
||||
NEW will prevent this warning\.
|
||||
Call Stack \(most recent call first\):
|
||||
CMakeLists\.txt:[0-9]+ \(include\)
|
||||
This warning is for project developers\. Use -Wno-dev to suppress it\.$
|
1
Tests/RunCMake/CPackConfig/CMP0161-WARN.cmake
Normal file
1
Tests/RunCMake/CPackConfig/CMP0161-WARN.cmake
Normal file
@ -0,0 +1 @@
|
||||
set(CPACK_BINARY_PRODUCTBUILD ON CACHE BOOL "" FORCE)
|
@ -2,6 +2,9 @@ include(RunCMake)
|
||||
|
||||
run_cmake(CMP0133-NEW)
|
||||
run_cmake(CMP0133-WARN)
|
||||
run_cmake(CMP0161-NEW)
|
||||
run_cmake(CMP0161-OLD)
|
||||
run_cmake(CMP0161-WARN)
|
||||
run_cmake(Simple)
|
||||
run_cmake(Default)
|
||||
run_cmake(Special)
|
||||
|
Loading…
Reference in New Issue
Block a user