diff options
author | Brad King <brad.king@kitware.com> | 2023-11-28 14:45:41 (GMT) |
---|---|---|
committer | Kitware Robot <kwrobot@kitware.com> | 2023-11-28 14:45:53 (GMT) |
commit | c40e242be39d50c4fc235a6a088efb99ff1916dd (patch) | |
tree | 8e11210305515c6262e782f0a4a765e64558baec | |
parent | 806c40a38fc6e1996738173ecfa23a26f7502dbf (diff) | |
parent | 53991e62daf819a91b7c89f4d4899d0f94c7fd12 (diff) | |
download | CMake-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.rst | 34 | ||||
-rw-r--r-- | Help/cpack_gen/rpm.rst | 15 | ||||
-rw-r--r-- | Help/release/dev/cpack-auto-suffixes.rst | 10 | ||||
-rw-r--r-- | Modules/Internal/CPack/CPackDeb.cmake | 2 | ||||
-rw-r--r-- | Modules/Internal/CPack/CPackRPM.cmake | 2 | ||||
-rw-r--r-- | Tests/RunCMake/CMakeLists.txt | 2 | ||||
-rw-r--r-- | Tests/RunCMake/CPack/RunCMakeTest.cmake | 1 | ||||
-rw-r--r-- | Tests/RunCMake/CPack/tests/AUTO_SUFFIXES/ExpectedFiles.cmake | 8 | ||||
-rw-r--r-- | Tests/RunCMake/CPack/tests/AUTO_SUFFIXES/test.cmake | 5 |
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") |