summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorBrad King <brad.king@kitware.com>2023-11-28 14:45:41 (GMT)
committerKitware Robot <kwrobot@kitware.com>2023-11-28 14:45:53 (GMT)
commitc40e242be39d50c4fc235a6a088efb99ff1916dd (patch)
tree8e11210305515c6262e782f0a4a765e64558baec
parent806c40a38fc6e1996738173ecfa23a26f7502dbf (diff)
parent53991e62daf819a91b7c89f4d4899d0f94c7fd12 (diff)
downloadCMake-c40e242be39d50c4fc235a6a088efb99ff1916dd.zip
CMake-c40e242be39d50c4fc235a6a088efb99ff1916dd.tar.gz
CMake-c40e242be39d50c4fc235a6a088efb99ff1916dd.tar.bz2
Merge topic 'cpack-auto-suffixes'
53991e62da CPack/RPM: Append .rpm to CPACK_RPM_FILE_NAME if missing f2a6d423da CPack/DEB: Append .deb to CPACK_DEBIAN_FILE_NAME if missing 907d4db558 Help: Format allowed CPACK_{DEB,RPM}_FILE_NAME values as definition list Acked-by: Kitware Robot <kwrobot@kitware.com> Acked-by: buildbot <buildbot@kitware.com> Merge-request: !8880
-rw-r--r--Help/cpack_gen/deb.rst34
-rw-r--r--Help/cpack_gen/rpm.rst15
-rw-r--r--Help/release/dev/cpack-auto-suffixes.rst10
-rw-r--r--Modules/Internal/CPack/CPackDeb.cmake2
-rw-r--r--Modules/Internal/CPack/CPackRPM.cmake2
-rw-r--r--Tests/RunCMake/CMakeLists.txt2
-rw-r--r--Tests/RunCMake/CPack/RunCMakeTest.cmake1
-rw-r--r--Tests/RunCMake/CPack/tests/AUTO_SUFFIXES/ExpectedFiles.cmake8
-rw-r--r--Tests/RunCMake/CPack/tests/AUTO_SUFFIXES/test.cmake5
9 files changed, 59 insertions, 20 deletions
diff --git a/Help/cpack_gen/deb.rst b/Help/cpack_gen/deb.rst
index 705ec9c..23436de 100644
--- a/Help/cpack_gen/deb.rst
+++ b/Help/cpack_gen/deb.rst
@@ -69,28 +69,32 @@ List of CPack DEB generator specific variables:
:Mandatory: Yes
:Default: ``<CPACK_PACKAGE_FILE_NAME>[-<component>].deb``
- This may be set to ``DEB-DEFAULT`` to allow the CPack DEB generator to generate
- package file name by itself in deb format::
+ This may be set to:
- <PackageName>_<VersionNumber>-<DebianRevisionNumber>_<DebianArchitecture>.deb
+ ``DEB-DEFAULT``
+ Tell CPack to automatically generate the package file name in deb format::
- Alternatively provided package file name must end
- with either ``.deb`` or ``.ipk`` suffix.
+ <PackageName>_<VersionNumber>-<DebianRevisionNumber>_<DebianArchitecture>.deb
- .. versionadded:: 3.10
- ``.ipk`` suffix used by OPKG packaging system.
+ This setting recommended as the preferred behavior, but for backward
+ compatibility with the CPack DEB generator in CMake prior to version 3.6,
+ this is not the default. Without this, duplicate names may occur.
+ Duplicate files get overwritten and it is up to the packager to set
+ the variables in a manner that will prevent such errors.
- .. note::
+ ``<file-name>[.deb]``
+ Use the given file name.
- Preferred setting of this variable is ``DEB-DEFAULT`` but for backward
- compatibility with the CPack DEB generator in CMake prior to version 3.6 this
- feature is disabled by default.
+ .. versionchanged:: 3.29
- .. note::
+ The ``.deb`` suffix will be automatically added if the file name does
+ not end in ``.deb`` or ``.ipk``. Previously the suffix was required.
+
+ ``<file-name>.ipk``
+ .. versionadded:: 3.10
- By using non default filenames duplicate names may occur. Duplicate files
- get overwritten and it is up to the packager to set the variables in a
- manner that will prevent such errors.
+ Use the given file name.
+ The ``.ipk`` suffix is used by the OPKG packaging system.
.. variable:: CPACK_DEBIAN_PACKAGE_EPOCH
diff --git a/Help/cpack_gen/rpm.rst b/Help/cpack_gen/rpm.rst
index 7b91261..4a2ce5f 100644
--- a/Help/cpack_gen/rpm.rst
+++ b/Help/cpack_gen/rpm.rst
@@ -84,9 +84,18 @@ List of CPack RPM generator specific variables:
:Default: ``<CPACK_PACKAGE_FILE_NAME>[-<component>].rpm`` with spaces
replaced by '-'
- This may be set to ``RPM-DEFAULT`` to allow ``rpmbuild`` tool to generate package
- file name by itself.
- Alternatively provided package file name must end with ``.rpm`` suffix.
+ This may be set to:
+
+ ``RPM-DEFAULT``
+ Tell ``rpmbuild`` to automatically generate the package file name.
+
+ ``<file-name>[.rpm]``
+ Use the given file name.
+
+ .. versionchanged:: 3.29
+
+ The ``.rpm`` suffix will be automatically added if missing.
+ Previously the suffix was required.
.. note::
diff --git a/Help/release/dev/cpack-auto-suffixes.rst b/Help/release/dev/cpack-auto-suffixes.rst
new file mode 100644
index 0000000..f3fd2af
--- /dev/null
+++ b/Help/release/dev/cpack-auto-suffixes.rst
@@ -0,0 +1,10 @@
+cpack-auto-suffixes
+-------------------
+
+* The :cpack_gen:`CPack DEB Generator` :variable:`CPACK_DEBIAN_FILE_NAME`
+ variable may now be set without any suffix, and the ``.deb`` suffix
+ will be added automatically.
+
+* The :cpack_gen:`CPack RPM Generator` :variable:`CPACK_RPM_FILE_NAME`
+ variable may now be set without any suffix, and the ``.rpm`` suffix
+ will be added automatically.
diff --git a/Modules/Internal/CPack/CPackDeb.cmake b/Modules/Internal/CPack/CPackDeb.cmake
index 38e32c2..55a621c 100644
--- a/Modules/Internal/CPack/CPackDeb.cmake
+++ b/Modules/Internal/CPack/CPackDeb.cmake
@@ -710,7 +710,7 @@ function(cpack_deb_prepare_package_vars)
"${CPACK_DEBIAN_PACKAGE_NAME}-dbgsym_${CPACK_DEBIAN_PACKAGE_VERSION}_${CPACK_DEBIAN_PACKAGE_ARCHITECTURE}.ddeb")
else()
if(NOT CPACK_DEBIAN_FILE_NAME MATCHES ".*\\.(deb|ipk)")
- message(FATAL_ERROR "'${CPACK_DEBIAN_FILE_NAME}' is not a valid DEB package file name as it must end with '.deb' or '.ipk'!")
+ set(CPACK_DEBIAN_FILE_NAME "${CPACK_DEBIAN_FILE_NAME}.deb")
endif()
set(CPACK_OUTPUT_FILE_NAME "${CPACK_DEBIAN_FILE_NAME}")
diff --git a/Modules/Internal/CPack/CPackRPM.cmake b/Modules/Internal/CPack/CPackRPM.cmake
index 36c0a3f..bc1e082 100644
--- a/Modules/Internal/CPack/CPackRPM.cmake
+++ b/Modules/Internal/CPack/CPackRPM.cmake
@@ -1563,7 +1563,7 @@ ${TMP_DEBUGINFO_ADDITIONAL_SOURCES}
if(NOT CPACK_RPM_FILE_NAME STREQUAL "RPM-DEFAULT")
if(CPACK_RPM_FILE_NAME)
if(NOT CPACK_RPM_FILE_NAME MATCHES ".*\\.rpm")
- message(FATAL_ERROR "'${CPACK_RPM_FILE_NAME}' is not a valid RPM package file name as it must end with '.rpm'!")
+ set(CPACK_RPM_FILE_NAME "${CPACK_RPM_FILE_NAME}.rpm")
endif()
else()
# old file name format for back compatibility
diff --git a/Tests/RunCMake/CMakeLists.txt b/Tests/RunCMake/CMakeLists.txt
index 6cdb241..0832578 100644
--- a/Tests/RunCMake/CMakeLists.txt
+++ b/Tests/RunCMake/CMakeLists.txt
@@ -973,6 +973,7 @@ if("${CMAKE_GENERATOR}" MATCHES "Make|Ninja")
endif()
set(cpack_tests
+ DEB.AUTO_SUFFIXES
DEB.CUSTOM_NAMES
DEB.DEBUGINFO
DEB.DEFAULT_PERMISSIONS
@@ -991,6 +992,7 @@ set(cpack_tests
DEB.DEB_DESCRIPTION
DEB.PROJECT_META
+ RPM.AUTO_SUFFIXES
RPM.CUSTOM_BINARY_SPEC_FILE
RPM.CUSTOM_NAMES
RPM.DEBUGINFO
diff --git a/Tests/RunCMake/CPack/RunCMakeTest.cmake b/Tests/RunCMake/CPack/RunCMakeTest.cmake
index 5086a3b..258f6a6 100644
--- a/Tests/RunCMake/CPack/RunCMakeTest.cmake
+++ b/Tests/RunCMake/CPack/RunCMakeTest.cmake
@@ -9,6 +9,7 @@ find_program(DEBUGEDIT debugedit)
# run_cpack_test args: TEST_NAME "GENERATORS" RUN_CMAKE_BUILD_STEP "PACKAGING_TYPES"
run_cpack_test(CUSTOM_BINARY_SPEC_FILE "RPM.CUSTOM_BINARY_SPEC_FILE" false "MONOLITHIC;COMPONENT")
run_cpack_test(CUSTOM_NAMES "RPM.CUSTOM_NAMES;DEB.CUSTOM_NAMES;TGZ;DragNDrop" true "COMPONENT")
+run_cpack_test(AUTO_SUFFIXES "RPM.AUTO_SUFFIXES;DEB.AUTO_SUFFIXES" false "MONOLITHIC")
run_cpack_test(DEBUGINFO "DEB.DEBUGINFO" true "COMPONENT")
if(NOT "${DEBUGEDIT}" STREQUAL "DEBUGEDIT-NOTFOUND")
run_cpack_test(DEBUGINFO "RPM.DEBUGINFO" true "COMPONENT")
diff --git a/Tests/RunCMake/CPack/tests/AUTO_SUFFIXES/ExpectedFiles.cmake b/Tests/RunCMake/CPack/tests/AUTO_SUFFIXES/ExpectedFiles.cmake
new file mode 100644
index 0000000..1ca48d8
--- /dev/null
+++ b/Tests/RunCMake/CPack/tests/AUTO_SUFFIXES/ExpectedFiles.cmake
@@ -0,0 +1,8 @@
+set(EXPECTED_FILES_COUNT "1")
+set(EXPECTED_FILES_NAME_GENERATOR_SPECIFIC_FORMAT TRUE)
+set(EXPECTED_FILE_CONTENT_1_LIST "/foo;/foo/CMakeLists.txt")
+
+if(GENERATOR_TYPE STREQUAL "DEB" OR GENERATOR_TYPE STREQUAL "RPM")
+ string(TOLOWER "${GENERATOR_TYPE}" file_extension_)
+ set(EXPECTED_FILE_1 "autosuffixpackage.${file_extension_}")
+endif()
diff --git a/Tests/RunCMake/CPack/tests/AUTO_SUFFIXES/test.cmake b/Tests/RunCMake/CPack/tests/AUTO_SUFFIXES/test.cmake
new file mode 100644
index 0000000..84c9bec
--- /dev/null
+++ b/Tests/RunCMake/CPack/tests/AUTO_SUFFIXES/test.cmake
@@ -0,0 +1,5 @@
+install(FILES CMakeLists.txt DESTINATION foo COMPONENT test)
+
+# if the filename doesn't have the expected deb/rpm suffix, test that it is appended automatically
+set(CPACK_DEBIAN_FILE_NAME "autosuffixpackage")
+set(CPACK_RPM_FILE_NAME "autosuffixpackage")