From adbd3985f89f19d9de867a75321465d6e181908d Mon Sep 17 00:00:00 2001
From: Domen Vrankar <domen.vrankar@gmail.com>
Date: Mon, 23 May 2016 19:51:33 +0200
Subject: [PATCH] CPack/Deb possibility to change package name

This patch preserves backward compatibility of
deb package names with previous CMake versions
but similarly to CPack/RPM allows to change
package name format and supports DEB-DEFAULT
setting that produces proper Debian package names.
---
 Help/release/dev/cpack-deb-imporvements.rst   | 16 +++--
 Modules/CPackDeb.cmake                        | 70 +++++++++++++++++--
 Source/CPack/cmCPackDebGenerator.cxx          |  8 +--
 Tests/CPackComponentsDEB/CMakeLists.txt       |  2 +
 Tests/CPackComponentsForAll/CMakeLists.txt    |  3 +
 ..._CUSTOM_NAMES.cmake => CUSTOM_NAMES.cmake} |  4 --
 .../DEB/COMPONENTS_EMPTY_DIR-specifics.cmake  |  1 +
 .../DEB/CUSTOM_NAMES-ExpectedFiles.cmake      |  9 +++
 .../CPack/DEB/CUSTOM_NAMES-specifics.cmake    |  6 ++
 .../DEB/DEPENDENCIES-ExpectedFiles.cmake      | 10 +--
 .../CPack/DEB/DEPENDENCIES-specifics.cmake    |  2 +
 .../CPack/DEB/EMPTY_DIR-specifics.cmake       |  1 +
 .../CPack/DEB/MINIMAL-specifics.cmake         |  1 +
 .../DEB/PER_COMPONENT_FIELDS-specifics.cmake  |  1 +
 Tests/RunCMake/CPack/DEB_EXTRA.cmake          |  1 +
 .../RunCMake/CPack/DEB_GENERATE_SHLIBS.cmake  |  1 +
 .../CPack/DEB_GENERATE_SHLIBS_LDCONFIG.cmake  |  1 +
 ...cmake => CUSTOM_NAMES-ExpectedFiles.cmake} |  0
 .../CPack/RPM/CUSTOM_NAMES-specifics.cmake    |  5 ++
 .../CPack/RPM/CUSTOM_NAMES-stderr.txt         |  3 +
 .../CPack/RPM/RPM_CUSTOM_NAMES-stderr.txt     |  3 -
 Tests/RunCMake/CPack/RunCMakeTest.cmake       |  2 +-
 22 files changed, 120 insertions(+), 30 deletions(-)
 rename Tests/RunCMake/CPack/{RPM_CUSTOM_NAMES.cmake => CUSTOM_NAMES.cmake} (67%)
 create mode 100644 Tests/RunCMake/CPack/DEB/CUSTOM_NAMES-ExpectedFiles.cmake
 create mode 100644 Tests/RunCMake/CPack/DEB/CUSTOM_NAMES-specifics.cmake
 rename Tests/RunCMake/CPack/RPM/{RPM_CUSTOM_NAMES-ExpectedFiles.cmake => CUSTOM_NAMES-ExpectedFiles.cmake} (100%)
 create mode 100644 Tests/RunCMake/CPack/RPM/CUSTOM_NAMES-specifics.cmake
 create mode 100644 Tests/RunCMake/CPack/RPM/CUSTOM_NAMES-stderr.txt
 delete mode 100644 Tests/RunCMake/CPack/RPM/RPM_CUSTOM_NAMES-stderr.txt

diff --git a/Help/release/dev/cpack-deb-imporvements.rst b/Help/release/dev/cpack-deb-imporvements.rst
index 4fd35b8980..d3cb52cb32 100644
--- a/Help/release/dev/cpack-deb-imporvements.rst
+++ b/Help/release/dev/cpack-deb-imporvements.rst
@@ -13,15 +13,19 @@ cpack-deb-imporvements
   :variable:`CPACK_COMPONENT_<compName>_DEPENDS` variables are set.
   This breaks compatibility with previous versions.
 
-* The :module:`CPackDeb` module learned how to set the package release number
-  (``DebianRevisionNumber`` in package file name).  See
-  :variable:`CPACK_DEBIAN_PACKAGE_RELEASE`.
-
-* The :module:`CPackDeb` module now generates properly-named Debian packages::
+* The :module:`CPackDeb` module learned how to set custom package file names
+  including how to generate properly-named Debian packages::
 
     <PackageName>_<VersionNumber>-<DebianRevisionNumber>_<DebianArchitecture>.deb
 
-  This breaks compatibility with previous versions.
+  For backward compatibility this feature is disabled by default. See
+  :variable:`CPACK_DEBIAN_FILE_NAME` and
+  :variable:`CPACK_DEBIAN_<COMPONENT>_FILE_NAME`.
+
+* The :module:`CPackDeb` module learned how to set the package release number
+  (``DebianRevisionNumber`` in package file name when used in combination with
+  ``DEB-DEFAULT`` value set by :variable:`CPACK_DEBIAN_FILE_NAME`).  See
+  :variable:`CPACK_DEBIAN_PACKAGE_RELEASE`.
 
 * The :module:`CPackDeb` module learned how to set the package architecture
   per-component.  See :variable:`CPACK_DEBIAN_<COMPONENT>_PACKAGE_ARCHITECTURE`.
diff --git a/Modules/CPackDeb.cmake b/Modules/CPackDeb.cmake
index d93d924a87..f7cd7aad30 100644
--- a/Modules/CPackDeb.cmake
+++ b/Modules/CPackDeb.cmake
@@ -42,6 +42,32 @@
 #
 #  See https://www.debian.org/doc/debian-policy/ch-controlfields.html#s-f-Source
 #
+# .. variable:: CPACK_DEBIAN_FILE_NAME
+#               CPACK_DEBIAN_<COMPONENT>_FILE_NAME
+#
+#  Package file name.
+#
+#  * Mandatory : YES
+#  * Default   : ``<CPACK_PACKAGE_FILE_NAME>[-<component>].deb``
+#
+#  This may be set to ``DEB-DEFAULT`` to allow CPackDeb to generate package file
+#  name by itself in deb format::
+#
+#    <PackageName>_<VersionNumber>-<DebianRevisionNumber>_<DebianArchitecture>.deb
+#
+#  Alternatively provided package file name must end with ".deb" suffix.
+#
+#  .. note::
+#
+#    Preferred setting of this variable is ``DEB-DEFAULT`` but for backward
+#    compatibility with CPackDeb in CMake prior to version 3.6 this feature
+#    is disabled by default.
+#
+#  .. note::
+#
+#    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.
 #
 # .. variable:: CPACK_DEBIAN_PACKAGE_VERSION
 #
@@ -466,6 +492,17 @@ if(NOT UNIX)
   message(FATAL_ERROR "CPackDeb.cmake may only be used under UNIX.")
 endif()
 
+function(cpack_deb_variable_fallback OUTPUT_VAR_NAME)
+  set(FALLBACK_VAR_NAMES ${ARGN})
+
+  foreach(variable_name IN LISTS FALLBACK_VAR_NAMES)
+    if(${variable_name})
+      set(${OUTPUT_VAR_NAME} "${${variable_name}}" PARENT_SCOPE)
+      break()
+    endif()
+  endforeach()
+endfunction()
+
 function(get_component_package_name var component)
   string(TOUPPER "${component}" component_upcase)
   if(CPACK_DEBIAN_${component_upcase}_PACKAGE_NAME)
@@ -878,13 +915,32 @@ function(cpack_deb_prepare_package_vars)
     set(CPACK_DEBIAN_PACKAGE_RELEASE 1)
   endif()
 
-  # Patch package file name to be in corrent debian format:
-  # <foo>_<VersionNumber>-<DebianRevisionNumber>_<DebianArchitecture>.deb
-  set(CPACK_OUTPUT_FILE_NAME
-    "${CPACK_DEBIAN_PACKAGE_NAME}_${CPACK_PACKAGE_VERSION}-${CPACK_DEBIAN_PACKAGE_RELEASE}_${CPACK_DEBIAN_PACKAGE_ARCHITECTURE}.deb")
-  set(CPACK_TEMPORARY_PACKAGE_FILE_NAME "${CPACK_TOPLEVEL_DIRECTORY}/${CPACK_OUTPUT_FILE_NAME}")
-  get_filename_component(BINARY_DIR "${CPACK_OUTPUT_FILE_PATH}" DIRECTORY)
-  set(CPACK_OUTPUT_FILE_PATH "${BINARY_DIR}/${CPACK_OUTPUT_FILE_NAME}")
+
+  cpack_deb_variable_fallback("CPACK_DEBIAN_FILE_NAME"
+    "CPACK_DEBIAN_${_local_component_name}_FILE_NAME"
+    "CPACK_DEBIAN_FILE_NAME")
+  if(CPACK_DEBIAN_FILE_NAME)
+    if(CPACK_DEBIAN_FILE_NAME STREQUAL "DEB-DEFAULT")
+      # Patch package file name to be in corrent debian format:
+      # <foo>_<VersionNumber>-<DebianRevisionNumber>_<DebianArchitecture>.deb
+      set(CPACK_OUTPUT_FILE_NAME
+        "${CPACK_DEBIAN_PACKAGE_NAME}_${CPACK_PACKAGE_VERSION}-${CPACK_DEBIAN_PACKAGE_RELEASE}_${CPACK_DEBIAN_PACKAGE_ARCHITECTURE}.deb")
+    else()
+      cmake_policy(PUSH)
+        cmake_policy(SET CMP0010 NEW)
+        if(NOT CPACK_DEBIAN_FILE_NAME MATCHES ".*\\.deb")
+      cmake_policy(POP)
+          message(FATAL_ERROR "'${CPACK_DEBIAN_FILE_NAME}' is not a valid DEB package file name as it must end with '.deb'!")
+        endif()
+      cmake_policy(POP)
+
+      set(CPACK_OUTPUT_FILE_NAME "${CPACK_DEBIAN_FILE_NAME}")
+    endif()
+
+    set(CPACK_TEMPORARY_PACKAGE_FILE_NAME "${CPACK_TOPLEVEL_DIRECTORY}/${CPACK_OUTPUT_FILE_NAME}")
+    get_filename_component(BINARY_DIR "${CPACK_OUTPUT_FILE_PATH}" DIRECTORY)
+    set(CPACK_OUTPUT_FILE_PATH "${BINARY_DIR}/${CPACK_OUTPUT_FILE_NAME}")
+  endif() # else() back compatibility - don't change the name
 
   # Print out some debug information if we were asked for that
   if(CPACK_DEBIAN_PACKAGE_DEBUG)
diff --git a/Source/CPack/cmCPackDebGenerator.cxx b/Source/CPack/cmCPackDebGenerator.cxx
index 76756775c8..7fd76df654 100644
--- a/Source/CPack/cmCPackDebGenerator.cxx
+++ b/Source/CPack/cmCPackDebGenerator.cxx
@@ -57,8 +57,8 @@ int cmCPackDebGenerator::PackageOnePack(std::string initialTopLevel,
   // Begin the archive for this pack
   std::string localToplevel(initialTopLevel);
   std::string packageFileName(cmSystemTools::GetParentDirectory(toplevel));
-  std::string outputFileName(cmsys::SystemTools::LowerCase(std::string(
-                               this->GetOption("CPACK_PACKAGE_FILE_NAME"))) +
+  std::string outputFileName(std::string(
+                               this->GetOption("CPACK_PACKAGE_FILE_NAME")) +
                              "-" + packageName + this->GetOutputExtension());
 
   localToplevel += "/" + packageName;
@@ -174,8 +174,8 @@ int cmCPackDebGenerator::PackageComponentsAllInOne(
   // The ALL GROUPS in ONE package case
   std::string localToplevel(initialTopLevel);
   std::string packageFileName(cmSystemTools::GetParentDirectory(toplevel));
-  std::string outputFileName(cmsys::SystemTools::LowerCase(std::string(
-                               this->GetOption("CPACK_PACKAGE_FILE_NAME"))) +
+  std::string outputFileName(std::string(
+                               this->GetOption("CPACK_PACKAGE_FILE_NAME")) +
                              this->GetOutputExtension());
   // all GROUP in one vs all COMPONENT in one
   localToplevel += "/" + compInstDirName;
diff --git a/Tests/CPackComponentsDEB/CMakeLists.txt b/Tests/CPackComponentsDEB/CMakeLists.txt
index 093b23fdd0..9d4b5e9dfe 100644
--- a/Tests/CPackComponentsDEB/CMakeLists.txt
+++ b/Tests/CPackComponentsDEB/CMakeLists.txt
@@ -130,6 +130,8 @@ configure_file(${CPackComponentsDEB_SOURCE_DIR}/MyLibCPackConfig-${CPackDEBConfi
                @ONLY)
 set(CPACK_PROJECT_CONFIG_FILE ${CPackComponentsDEB_BINARY_DIR}/MyLibCPackConfig-${CPackDEBConfiguration}.cmake)
 
+# set CPACK_DEBIAN_FILE_NAME to use default package name format
+set(CPACK_DEBIAN_FILE_NAME "DEB-DEFAULT")
 
 # Include CPack to introduce the appropriate targets
 include(CPack)
diff --git a/Tests/CPackComponentsForAll/CMakeLists.txt b/Tests/CPackComponentsForAll/CMakeLists.txt
index 05c13a4900..3440843171 100644
--- a/Tests/CPackComponentsForAll/CMakeLists.txt
+++ b/Tests/CPackComponentsForAll/CMakeLists.txt
@@ -165,6 +165,9 @@ set(CPACK_RPM_RELOCATION_PATHS "${CMAKE_INSTALL_INCLUDEDIR}"
   "${CMAKE_INSTALL_LIBDIR}" "${CMAKE_INSTALL_BINDIR}" "other_relocatable"
   "${CMAKE_INSTALL_LIBDIR}/inside_relocatable_two/depth_two/different_relocatable")
 
+# set CPACK_DEBIAN_FILE_NAME to use default package name format
+set(CPACK_DEBIAN_FILE_NAME "DEB-DEFAULT")
+
 # We may use the CPack specific config file in order
 # to tailor CPack behavior on a CPack generator specific way
 # (Behavior would be different for RPM or TGZ or DEB ...)
diff --git a/Tests/RunCMake/CPack/RPM_CUSTOM_NAMES.cmake b/Tests/RunCMake/CPack/CUSTOM_NAMES.cmake
similarity index 67%
rename from Tests/RunCMake/CPack/RPM_CUSTOM_NAMES.cmake
rename to Tests/RunCMake/CPack/CUSTOM_NAMES.cmake
index ba53a872f2..c89df89415 100644
--- a/Tests/RunCMake/CPack/RPM_CUSTOM_NAMES.cmake
+++ b/Tests/RunCMake/CPack/CUSTOM_NAMES.cmake
@@ -1,9 +1,5 @@
 set(CPACK_RPM_COMPONENT_INSTALL "ON")
 
-set(CPACK_RPM_FILE_NAME "RPM-DEFAULT")
-set(CPACK_RPM_PKG_2_PACKAGE_NAME "second")
-set(CPACK_RPM_PKG_3_FILE_NAME "pkg_3_abc.rpm")
-
 install(FILES CMakeLists.txt DESTINATION foo COMPONENT pkg_1)
 install(FILES CMakeLists.txt DESTINATION foo COMPONENT pkg_2)
 install(FILES CMakeLists.txt DESTINATION foo COMPONENT pkg_3)
diff --git a/Tests/RunCMake/CPack/DEB/COMPONENTS_EMPTY_DIR-specifics.cmake b/Tests/RunCMake/CPack/DEB/COMPONENTS_EMPTY_DIR-specifics.cmake
index 2720fe921d..4b4ac8dc21 100644
--- a/Tests/RunCMake/CPack/DEB/COMPONENTS_EMPTY_DIR-specifics.cmake
+++ b/Tests/RunCMake/CPack/DEB/COMPONENTS_EMPTY_DIR-specifics.cmake
@@ -1,2 +1,3 @@
 set(CPACK_PACKAGE_CONTACT "someone")
 set(CPACK_DEB_COMPONENT_INSTALL "ON")
+set(CPACK_DEBIAN_FILE_NAME "DEB-DEFAULT")
diff --git a/Tests/RunCMake/CPack/DEB/CUSTOM_NAMES-ExpectedFiles.cmake b/Tests/RunCMake/CPack/DEB/CUSTOM_NAMES-ExpectedFiles.cmake
new file mode 100644
index 0000000000..2acf45bccf
--- /dev/null
+++ b/Tests/RunCMake/CPack/DEB/CUSTOM_NAMES-ExpectedFiles.cmake
@@ -0,0 +1,9 @@
+set(whitespaces_ "[\t\n\r ]*")
+
+set(EXPECTED_FILES_COUNT "3")
+set(EXPECTED_FILE_1 "custom_names-pkg_1_0.1.1-1_*.deb")
+set(EXPECTED_FILE_CONTENT_1 "^.*/usr/foo${whitespaces_}.*/usr/foo/CMakeLists.txt$")
+set(EXPECTED_FILE_2 "second*.deb")
+set(EXPECTED_FILE_CONTENT_2 "^.*/usr/foo${whitespaces_}.*/usr/foo/CMakeLists.txt$")
+set(EXPECTED_FILE_3 "pkg_3_abc.deb")
+set(EXPECTED_FILE_CONTENT_3 "^.*/usr/foo${whitespaces_}.*/usr/foo/CMakeLists.txt$")
diff --git a/Tests/RunCMake/CPack/DEB/CUSTOM_NAMES-specifics.cmake b/Tests/RunCMake/CPack/DEB/CUSTOM_NAMES-specifics.cmake
new file mode 100644
index 0000000000..c64f16115b
--- /dev/null
+++ b/Tests/RunCMake/CPack/DEB/CUSTOM_NAMES-specifics.cmake
@@ -0,0 +1,6 @@
+set(CPACK_PACKAGE_CONTACT "someone")
+set(CPACK_DEB_COMPONENT_INSTALL "ON")
+
+set(CPACK_DEBIAN_FILE_NAME "DEB-DEFAULT")
+set(CPACK_DEBIAN_PKG_2_PACKAGE_NAME "second")
+set(CPACK_DEBIAN_PKG_3_FILE_NAME "pkg_3_abc.deb")
diff --git a/Tests/RunCMake/CPack/DEB/DEPENDENCIES-ExpectedFiles.cmake b/Tests/RunCMake/CPack/DEB/DEPENDENCIES-ExpectedFiles.cmake
index c182e303d6..a6f08fe100 100644
--- a/Tests/RunCMake/CPack/DEB/DEPENDENCIES-ExpectedFiles.cmake
+++ b/Tests/RunCMake/CPack/DEB/DEPENDENCIES-ExpectedFiles.cmake
@@ -1,14 +1,14 @@
 set(whitespaces_ "[\t\n\r ]*")
 
 set(EXPECTED_FILES_COUNT "5")
-set(EXPECTED_FILE_1 "dependencies-applications_0.1.1-1_*.deb")
+set(EXPECTED_FILE_1 "dependencies-0.1.1-*-applications.deb")
 set(EXPECTED_FILE_CONTENT_1 "^.*/usr/foo${whitespaces_}.*/usr/foo/test_prog$")
-set(EXPECTED_FILE_2 "dependencies-applications_auto_0.1.1-1_*.deb")
+set(EXPECTED_FILE_2 "dependencies-0.1.1-*-applications_auto.deb")
 set(EXPECTED_FILE_CONTENT_2 "^.*/usr/foo_auto${whitespaces_}.*/usr/foo_auto/test_prog$")
-set(EXPECTED_FILE_3 "dependencies-headers_0.1.1-1_*.deb")
+set(EXPECTED_FILE_3 "dependencies-0.1.1-*-headers.deb")
 set(EXPECTED_FILE_CONTENT_3 "^.*/usr/bar${whitespaces_}.*/usr/bar/CMakeLists.txt$")
-set(EXPECTED_FILE_4 "dependencies-libs_0.1.1-1_*.deb")
+set(EXPECTED_FILE_4 "dependencies-0.1.1-*-libs.deb")
 # dynamic lib extension is .so on Linux and .dylib on Mac so we will use a wildcard .* for it
 set(EXPECTED_FILE_CONTENT_4 "^.*/usr/bas${whitespaces_}.*/usr/bas/libtest_lib\\..*$")
-set(EXPECTED_FILE_5 "dependencies-libs_auto_0.1.1-1_*.deb")
+set(EXPECTED_FILE_5 "dependencies-0.1.1-*-libs_auto.deb")
 set(EXPECTED_FILE_CONTENT_5 "^.*/usr/bas_auto${whitespaces_}.*/usr/bas_auto/libtest_lib\\..*$")
diff --git a/Tests/RunCMake/CPack/DEB/DEPENDENCIES-specifics.cmake b/Tests/RunCMake/CPack/DEB/DEPENDENCIES-specifics.cmake
index 96a9f1442a..5f82cc64a8 100644
--- a/Tests/RunCMake/CPack/DEB/DEPENDENCIES-specifics.cmake
+++ b/Tests/RunCMake/CPack/DEB/DEPENDENCIES-specifics.cmake
@@ -1,5 +1,7 @@
 set(CPACK_PACKAGE_CONTACT "someone")
 set(CPACK_DEB_COMPONENT_INSTALL "ON")
+#intentionaly commented out to test old file naming
+#set(CPACK_DEBIAN_FILE_NAME "DEB-DEFAULT")
 
 # false by default
 set(CPACK_DEBIAN_PACKAGE_SHLIBDEPS FALSE)
diff --git a/Tests/RunCMake/CPack/DEB/EMPTY_DIR-specifics.cmake b/Tests/RunCMake/CPack/DEB/EMPTY_DIR-specifics.cmake
index 8821ab9bed..4e9a2e7517 100644
--- a/Tests/RunCMake/CPack/DEB/EMPTY_DIR-specifics.cmake
+++ b/Tests/RunCMake/CPack/DEB/EMPTY_DIR-specifics.cmake
@@ -1 +1,2 @@
 set(CPACK_PACKAGE_CONTACT "someone")
+set(CPACK_DEBIAN_FILE_NAME "DEB-DEFAULT")
diff --git a/Tests/RunCMake/CPack/DEB/MINIMAL-specifics.cmake b/Tests/RunCMake/CPack/DEB/MINIMAL-specifics.cmake
index 8821ab9bed..4e9a2e7517 100644
--- a/Tests/RunCMake/CPack/DEB/MINIMAL-specifics.cmake
+++ b/Tests/RunCMake/CPack/DEB/MINIMAL-specifics.cmake
@@ -1 +1,2 @@
 set(CPACK_PACKAGE_CONTACT "someone")
+set(CPACK_DEBIAN_FILE_NAME "DEB-DEFAULT")
diff --git a/Tests/RunCMake/CPack/DEB/PER_COMPONENT_FIELDS-specifics.cmake b/Tests/RunCMake/CPack/DEB/PER_COMPONENT_FIELDS-specifics.cmake
index a1da1a3cd9..25bd2e7080 100644
--- a/Tests/RunCMake/CPack/DEB/PER_COMPONENT_FIELDS-specifics.cmake
+++ b/Tests/RunCMake/CPack/DEB/PER_COMPONENT_FIELDS-specifics.cmake
@@ -1,5 +1,6 @@
 set(CPACK_PACKAGE_CONTACT "someone")
 set(CPACK_DEB_COMPONENT_INSTALL "ON")
+set(CPACK_DEBIAN_FILE_NAME "DEB-DEFAULT")
 
 set(CPACK_DEBIAN_PACKAGE_SECTION "default")
 set(CPACK_DEBIAN_PKG_2_PACKAGE_NAME "second")
diff --git a/Tests/RunCMake/CPack/DEB_EXTRA.cmake b/Tests/RunCMake/CPack/DEB_EXTRA.cmake
index 3c291d5211..189d12396d 100644
--- a/Tests/RunCMake/CPack/DEB_EXTRA.cmake
+++ b/Tests/RunCMake/CPack/DEB_EXTRA.cmake
@@ -34,5 +34,6 @@ set(CPACK_DEBIAN_BAR_PACKAGE_CONTROL_EXTRA
 
 set(CPACK_PACKAGE_NAME "deb_extra")
 set(CPACK_PACKAGE_CONTACT "someone")
+set(CPACK_DEBIAN_FILE_NAME "DEB-DEFAULT")
 
 set(CPACK_DEB_COMPONENT_INSTALL ON)
diff --git a/Tests/RunCMake/CPack/DEB_GENERATE_SHLIBS.cmake b/Tests/RunCMake/CPack/DEB_GENERATE_SHLIBS.cmake
index efb0211c4d..1aeb06f030 100644
--- a/Tests/RunCMake/CPack/DEB_GENERATE_SHLIBS.cmake
+++ b/Tests/RunCMake/CPack/DEB_GENERATE_SHLIBS.cmake
@@ -1,5 +1,6 @@
 set(CPACK_PACKAGE_CONTACT "someone")
 set(CPACK_DEB_COMPONENT_INSTALL "ON")
+set(CPACK_DEBIAN_FILE_NAME "DEB-DEFAULT")
 
 set(CPACK_DEBIAN_PACKAGE_GENERATE_SHLIBS "ON")
 
diff --git a/Tests/RunCMake/CPack/DEB_GENERATE_SHLIBS_LDCONFIG.cmake b/Tests/RunCMake/CPack/DEB_GENERATE_SHLIBS_LDCONFIG.cmake
index 1f70386449..f58c876b02 100644
--- a/Tests/RunCMake/CPack/DEB_GENERATE_SHLIBS_LDCONFIG.cmake
+++ b/Tests/RunCMake/CPack/DEB_GENERATE_SHLIBS_LDCONFIG.cmake
@@ -1,5 +1,6 @@
 set(CPACK_PACKAGE_CONTACT "someone")
 set(CPACK_DEB_COMPONENT_INSTALL "ON")
+set(CPACK_DEBIAN_FILE_NAME "DEB-DEFAULT")
 
 set(CPACK_DEBIAN_PACKAGE_GENERATE_SHLIBS "ON")
 set(CPACK_DEBIAN_PACKAGE_GENERATE_SHLIBS_POLICY ">=")
diff --git a/Tests/RunCMake/CPack/RPM/RPM_CUSTOM_NAMES-ExpectedFiles.cmake b/Tests/RunCMake/CPack/RPM/CUSTOM_NAMES-ExpectedFiles.cmake
similarity index 100%
rename from Tests/RunCMake/CPack/RPM/RPM_CUSTOM_NAMES-ExpectedFiles.cmake
rename to Tests/RunCMake/CPack/RPM/CUSTOM_NAMES-ExpectedFiles.cmake
diff --git a/Tests/RunCMake/CPack/RPM/CUSTOM_NAMES-specifics.cmake b/Tests/RunCMake/CPack/RPM/CUSTOM_NAMES-specifics.cmake
new file mode 100644
index 0000000000..575aa01eb2
--- /dev/null
+++ b/Tests/RunCMake/CPack/RPM/CUSTOM_NAMES-specifics.cmake
@@ -0,0 +1,5 @@
+set(CPACK_RPM_COMPONENT_INSTALL "ON")
+
+set(CPACK_RPM_FILE_NAME "RPM-DEFAULT")
+set(CPACK_RPM_PKG_2_PACKAGE_NAME "second")
+set(CPACK_RPM_PKG_3_FILE_NAME "pkg_3_abc.rpm")
diff --git a/Tests/RunCMake/CPack/RPM/CUSTOM_NAMES-stderr.txt b/Tests/RunCMake/CPack/RPM/CUSTOM_NAMES-stderr.txt
new file mode 100644
index 0000000000..9bfba7e651
--- /dev/null
+++ b/Tests/RunCMake/CPack/RPM/CUSTOM_NAMES-stderr.txt
@@ -0,0 +1,3 @@
+^CPackRPM: Will use GENERATED spec file: .*/Tests/RunCMake/RPM/CPack/CUSTOM_NAMES-build/_CPack_Packages/.*/RPM/SPECS/custom_names-pkg_1.spec
+CPackRPM: Will use GENERATED spec file: .*/Tests/RunCMake/RPM/CPack/CUSTOM_NAMES-build/_CPack_Packages/.*/RPM/SPECS/second.spec
+CPackRPM: Will use GENERATED spec file: .*/Tests/RunCMake/RPM/CPack/CUSTOM_NAMES-build/_CPack_Packages/.*/RPM/SPECS/custom_names-pkg_3.spec$
diff --git a/Tests/RunCMake/CPack/RPM/RPM_CUSTOM_NAMES-stderr.txt b/Tests/RunCMake/CPack/RPM/RPM_CUSTOM_NAMES-stderr.txt
deleted file mode 100644
index d3ba7b08ba..0000000000
--- a/Tests/RunCMake/CPack/RPM/RPM_CUSTOM_NAMES-stderr.txt
+++ /dev/null
@@ -1,3 +0,0 @@
-^CPackRPM: Will use GENERATED spec file: .*/Tests/RunCMake/RPM/CPack/RPM_CUSTOM_NAMES-build/_CPack_Packages/.*/RPM/SPECS/custom_names-pkg_1.spec
-CPackRPM: Will use GENERATED spec file: .*/Tests/RunCMake/RPM/CPack/RPM_CUSTOM_NAMES-build/_CPack_Packages/.*/RPM/SPECS/second.spec
-CPackRPM: Will use GENERATED spec file: .*/Tests/RunCMake/RPM/CPack/RPM_CUSTOM_NAMES-build/_CPack_Packages/.*/RPM/SPECS/custom_names-pkg_3.spec$
diff --git a/Tests/RunCMake/CPack/RunCMakeTest.cmake b/Tests/RunCMake/CPack/RunCMakeTest.cmake
index 759295f530..59c52f8f37 100644
--- a/Tests/RunCMake/CPack/RunCMakeTest.cmake
+++ b/Tests/RunCMake/CPack/RunCMakeTest.cmake
@@ -10,7 +10,7 @@ run_cpack_test(DEB_EXTRA "DEB" false)
 run_cpack_test(DEPENDENCIES "RPM;DEB" true)
 run_cpack_test(EMPTY_DIR "RPM;DEB;TGZ" true)
 run_cpack_test(COMPONENTS_EMPTY_DIR "RPM;DEB;TGZ" true)
-run_cpack_test(RPM_CUSTOM_NAMES "RPM" true)
+run_cpack_test(CUSTOM_NAMES "RPM;DEB" true)
 run_cpack_test(PER_COMPONENT_FIELDS "RPM;DEB" false)
 run_cpack_test(RPM_DIST "RPM" false)
 run_cpack_test(INSTALL_SCRIPTS "RPM" false)
-- 
GitLab