diff --git a/Help/release/dev/cpack-deb-imporvements.rst b/Help/release/dev/cpack-deb-imporvements.rst index 4fd35b898..9e45aa546 100644 --- a/Help/release/dev/cpack-deb-imporvements.rst +++ b/Help/release/dev/cpack-deb-imporvements.rst @@ -11,7 +11,8 @@ cpack-deb-imporvements * The :module:`CPackDeb` module learned how to generate dependencies between Debian packages if multi-component setup is used and :variable:`CPACK_COMPONENT__DEPENDS` variables are set. - This breaks compatibility with previous versions. + For backward compatibility this feature is disabled by default. See + :variable:`CPACK_DEBIAN_ENABLE_COMPONENT_DEPENDS`. * The :module:`CPackDeb` module learned how to set the package release number (``DebianRevisionNumber`` in package file name). See diff --git a/Modules/CPackDeb.cmake b/Modules/CPackDeb.cmake index d93d924a8..70bf81dd2 100644 --- a/Modules/CPackDeb.cmake +++ b/Modules/CPackDeb.cmake @@ -100,6 +100,13 @@ # # set(CPACK_DEBIAN_PACKAGE_DEPENDS "libc6 (>= 2.3.1-6), libc6 (< 2.4)") # +# .. variable:: CPACK_DEBIAN_ENABLE_COMPONENT_DEPENDS +# +# Sets inter component dependencies if listed with +# :variable:`CPACK_COMPONENT__DEPENDS` variables. +# +# * Mandatory : NO +# * Default : - # # .. variable:: CPACK_DEBIAN_PACKAGE_MAINTAINER # @@ -713,20 +720,23 @@ function(cpack_deb_prepare_package_vars) endif() endif() endforeach() - set(COMPONENT_DEPENDS "") - foreach (_PACK ${CPACK_COMPONENT_${_local_component_name}_DEPENDS}) - get_component_package_name(_PACK_NAME "${_PACK}") + + if(CPACK_DEBIAN_ENABLE_COMPONENT_DEPENDS) + set(COMPONENT_DEPENDS "") + foreach (_PACK ${CPACK_COMPONENT_${_local_component_name}_DEPENDS}) + get_component_package_name(_PACK_NAME "${_PACK}") + if(COMPONENT_DEPENDS) + set(COMPONENT_DEPENDS "${_PACK_NAME} (= ${CPACK_DEBIAN_PACKAGE_VERSION}), ${COMPONENT_DEPENDS}") + else() + set(COMPONENT_DEPENDS "${_PACK_NAME} (= ${CPACK_DEBIAN_PACKAGE_VERSION})") + endif() + endforeach() if(COMPONENT_DEPENDS) - set(COMPONENT_DEPENDS "${_PACK_NAME} (= ${CPACK_DEBIAN_PACKAGE_VERSION}), ${COMPONENT_DEPENDS}") - else() - set(COMPONENT_DEPENDS "${_PACK_NAME} (= ${CPACK_DEBIAN_PACKAGE_VERSION})") - endif() - endforeach() - if(COMPONENT_DEPENDS) - if(CPACK_DEBIAN_PACKAGE_DEPENDS) - set(CPACK_DEBIAN_PACKAGE_DEPENDS "${COMPONENT_DEPENDS}, ${CPACK_DEBIAN_PACKAGE_DEPENDS}") - else() - set(CPACK_DEBIAN_PACKAGE_DEPENDS "${COMPONENT_DEPENDS}") + if(CPACK_DEBIAN_PACKAGE_DEPENDS) + set(CPACK_DEBIAN_PACKAGE_DEPENDS "${COMPONENT_DEPENDS}, ${CPACK_DEBIAN_PACKAGE_DEPENDS}") + else() + set(CPACK_DEBIAN_PACKAGE_DEPENDS "${COMPONENT_DEPENDS}") + endif() endif() endif() endif() diff --git a/Tests/CPackComponentsDEB/MyLibCPackConfig-components-depend1.cmake.in b/Tests/CPackComponentsDEB/MyLibCPackConfig-components-depend1.cmake.in index d207bcc12..dc038fa4c 100644 --- a/Tests/CPackComponentsDEB/MyLibCPackConfig-components-depend1.cmake.in +++ b/Tests/CPackComponentsDEB/MyLibCPackConfig-components-depend1.cmake.in @@ -4,6 +4,7 @@ if(CPACK_GENERATOR MATCHES "DEB") set(CPACK_DEB_COMPONENT_INSTALL "ON") + set(CPACK_DEBIAN_ENABLE_COMPONENT_DEPENDS "ON") endif() # diff --git a/Tests/CPackComponentsDEB/MyLibCPackConfig-components-depend2.cmake.in b/Tests/CPackComponentsDEB/MyLibCPackConfig-components-depend2.cmake.in index 803720a3c..1aa7d0199 100644 --- a/Tests/CPackComponentsDEB/MyLibCPackConfig-components-depend2.cmake.in +++ b/Tests/CPackComponentsDEB/MyLibCPackConfig-components-depend2.cmake.in @@ -4,6 +4,7 @@ if(CPACK_GENERATOR MATCHES "DEB") set(CPACK_DEB_COMPONENT_INSTALL "ON") + set(CPACK_DEBIAN_ENABLE_COMPONENT_DEPENDS "ON") endif() #