Преглед на файлове

Merge topic 'cpackrpm-single-package-handling-empty-dir'

d0adb2386a CPackRPM: correctly handle empty dir in single package mode

Acked-by: Kitware Robot <[email protected]>
Merge-request: !5951
Brad King преди 4 години
родител
ревизия
45fae18f7b

+ 8 - 2
Modules/Internal/CPack/CPackRPM.cmake

@@ -1349,15 +1349,21 @@ function(cpack_rpm_generate_package)
             continue()
           endif()
 
-          file(GLOB_RECURSE files_for_move_ LIST_DIRECTORIES false RELATIVE
+          file(GLOB_RECURSE files_for_move_ LIST_DIRECTORIES true RELATIVE
             "${CPACK_TOPLEVEL_DIRECTORY}/${CPACK_PACKAGE_FILE_NAME}/${component_}"
             "${CPACK_TOPLEVEL_DIRECTORY}/${CPACK_PACKAGE_FILE_NAME}/${component_}/*")
 
           foreach(f_ IN LISTS files_for_move_)
-            get_filename_component(dir_path_ "${f_}" DIRECTORY)
             set(src_file_
               "${CPACK_TOPLEVEL_DIRECTORY}/${CPACK_PACKAGE_FILE_NAME}/${component_}/${f_}")
 
+            if(IS_DIRECTORY "${src_file_}")
+              file(MAKE_DIRECTORY "${WDIR}/${f_}")
+              continue()
+            endif()
+
+            get_filename_component(dir_path_ "${f_}" DIRECTORY)
+
             # check that we are not overriding an existing file that doesn't
             # match the file that we want to copy
             if(EXISTS "${src_file_}" AND EXISTS "${WDIR}/${f_}")

+ 1 - 1
Tests/RunCMake/CPack/tests/SINGLE_DEBUGINFO/ExpectedFiles.cmake

@@ -9,7 +9,7 @@ if(RunCMake_SUBTEST_SUFFIX STREQUAL "valid" OR RunCMake_SUBTEST_SUFFIX STREQUAL
   set(EXPECTED_FILE_2 "single_debuginfo*-headers.rpm")
   set(EXPECTED_FILE_CONTENT_2_LIST "/bar;/bar/CMakeLists.txt")
   set(EXPECTED_FILE_3 "single_debuginfo*-libs.rpm")
-  set(EXPECTED_FILE_CONTENT_3_LIST "/bas;/bas/libtest_lib.so")
+  set(EXPECTED_FILE_CONTENT_3_LIST "/bas;/bas/libtest_lib.so;/empty_dir")
 
   set(EXPECTED_FILE_4_COMPONENT "debuginfo")
   set(EXPECTED_FILE_CONTENT_4 ".*/src${whitespaces_}/src/src_1${whitespaces_}/src/src_1/main.cpp${whitespaces_}/src/src_1/test_lib.cpp.*\.debug.*")

+ 3 - 0
Tests/RunCMake/CPack/tests/SINGLE_DEBUGINFO/test.cmake

@@ -30,6 +30,9 @@ if(RunCMake_SUBTEST_SUFFIX STREQUAL "valid"
   OR RunCMake_SUBTEST_SUFFIX STREQUAL "no_debuginfo")
   install(FILES CMakeLists.txt DESTINATION bar COMPONENT headers)
   install(TARGETS test_lib DESTINATION bas COMPONENT libs)
+
+  # test that we correctly handle empty dir in non main component
+  install(DIRECTORY DESTINATION empty_dir COMPONENT libs)
 elseif(RunCMake_SUBTEST_SUFFIX STREQUAL "one_component"
   OR RunCMake_SUBTEST_SUFFIX STREQUAL "one_component_no_debuginfo")
   set(CPACK_COMPONENTS_ALL applications)