From f2a6d423da1400108327bff5a27647b6d1d90392 Mon Sep 17 00:00:00 2001 From: Alex Neundorf Date: Thu, 26 Oct 2023 23:29:27 +0200 Subject: CPack/DEB: Append .deb to CPACK_DEBIAN_FILE_NAME if missing Previously we issued an error when the `.deb` or `.ipk` suffix is missing. Instead, append the suffix `.deb` automatically. This matches the behavior of `CPACK_ARCHIVE_FILE_NAME`, to which the archive format suffix is automatically appended. --- Help/cpack_gen/deb.rst | 9 +++++++-- Help/release/dev/cpack-auto-suffixes.rst | 6 ++++++ Modules/Internal/CPack/CPackDeb.cmake | 2 +- Tests/RunCMake/CMakeLists.txt | 1 + Tests/RunCMake/CPack/RunCMakeTest.cmake | 1 + Tests/RunCMake/CPack/tests/AUTO_SUFFIXES/ExpectedFiles.cmake | 8 ++++++++ Tests/RunCMake/CPack/tests/AUTO_SUFFIXES/test.cmake | 4 ++++ 7 files changed, 28 insertions(+), 3 deletions(-) create mode 100644 Help/release/dev/cpack-auto-suffixes.rst create mode 100644 Tests/RunCMake/CPack/tests/AUTO_SUFFIXES/ExpectedFiles.cmake create mode 100644 Tests/RunCMake/CPack/tests/AUTO_SUFFIXES/test.cmake diff --git a/Help/cpack_gen/deb.rst b/Help/cpack_gen/deb.rst index 1aac279..23436de 100644 --- a/Help/cpack_gen/deb.rst +++ b/Help/cpack_gen/deb.rst @@ -82,8 +82,13 @@ List of CPack DEB generator specific variables: Duplicate files get overwritten and it is up to the packager to set the variables in a manner that will prevent such errors. - ``.deb`` - Use the given file name. The ``.deb`` suffix is required. + ``[.deb]`` + Use the given file name. + + .. versionchanged:: 3.29 + + The ``.deb`` suffix will be automatically added if the file name does + not end in ``.deb`` or ``.ipk``. Previously the suffix was required. ``.ipk`` .. versionadded:: 3.10 diff --git a/Help/release/dev/cpack-auto-suffixes.rst b/Help/release/dev/cpack-auto-suffixes.rst new file mode 100644 index 0000000..678e3f6 --- /dev/null +++ b/Help/release/dev/cpack-auto-suffixes.rst @@ -0,0 +1,6 @@ +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. 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/Tests/RunCMake/CMakeLists.txt b/Tests/RunCMake/CMakeLists.txt index 4387c5b..522e463 100644 --- a/Tests/RunCMake/CMakeLists.txt +++ b/Tests/RunCMake/CMakeLists.txt @@ -959,6 +959,7 @@ if("${CMAKE_GENERATOR}" MATCHES "Make|Ninja") endif() set(cpack_tests + DEB.AUTO_SUFFIXES DEB.CUSTOM_NAMES DEB.DEBUGINFO DEB.DEFAULT_PERMISSIONS diff --git a/Tests/RunCMake/CPack/RunCMakeTest.cmake b/Tests/RunCMake/CPack/RunCMakeTest.cmake index ca02b76..90c0cce 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 "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..a531c04 --- /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") + 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..5c29b2d --- /dev/null +++ b/Tests/RunCMake/CPack/tests/AUTO_SUFFIXES/test.cmake @@ -0,0 +1,4 @@ +install(FILES CMakeLists.txt DESTINATION foo COMPONENT test) + +# if the filename doesn't have the expected deb suffix, test that it is appended automatically +set(CPACK_DEBIAN_FILE_NAME "autosuffixpackage") -- cgit v0.12