From ae250d5cfa0daec74935e6aa484fa439f3a6dd23 Mon Sep 17 00:00:00 2001
From: Deborah Pickett <deborah.pickett@autodesk.com>
Date: Fri, 13 Jan 2012 21:35:41 +0100
Subject: CPackRPM flag direcories with %dir in the generated spec file

This fix bug #12863 whose symptom was a lot of "warning: File listed twice"
printed out by rpmbuild when processing the spec file.

Signed-off-by: Eric NOULARD <eric.noulard@gmail.com>
---
 Modules/CPackRPM.cmake | 19 +++++++++++++++++++
 1 file changed, 19 insertions(+)

diff --git a/Modules/CPackRPM.cmake b/Modules/CPackRPM.cmake
index bf476ad..e1e76ed 100644
--- a/Modules/CPackRPM.cmake
+++ b/Modules/CPackRPM.cmake
@@ -714,6 +714,25 @@ else()
   set(CPACK_RPM_ABSOLUTE_INSTALL_FILES "")
 endif(CPACK_ABSOLUTE_DESTINATION_FILES_INTERNAL)
 
+# Prepend directories in ${CPACK_RPM_INSTALL_FILES} with %dir
+# This is necessary to avoid duplicate files since rpmbuild do
+# recursion on its own when encountering a pathname which is a directory
+# which is not flagged as %dir
+string(STRIP "${CPACK_RPM_INSTALL_FILES}" CPACK_RPM_INSTALL_FILES_LIST)
+string(REPLACE "\n" ";" CPACK_RPM_INSTALL_FILES_LIST
+                        "${CPACK_RPM_INSTALL_FILES_LIST}")
+string(REPLACE "\"" "" CPACK_RPM_INSTALL_FILES_LIST
+                        "${CPACK_RPM_INSTALL_FILES_LIST}")
+set(CPACK_RPM_INSTALL_FILES "")
+foreach(F IN LISTS CPACK_RPM_INSTALL_FILES_LIST)
+  if(IS_DIRECTORY "${WDIR}/${F}")
+    set(CPACK_RPM_INSTALL_FILES "${CPACK_RPM_INSTALL_FILES}%dir \"${F}\"\n")
+  else()
+    set(CPACK_RPM_INSTALL_FILES "${CPACK_RPM_INSTALL_FILES}\"${F}\"\n")
+  endif()
+endforeach(F)
+set(CPACK_RPM_INSTALL_FILES_LIST "")
+
 # The name of the final spec file to be used by rpmbuild
 SET(CPACK_RPM_BINARY_SPECFILE "${CPACK_RPM_ROOTDIR}/SPECS/${CPACK_RPM_PACKAGE_NAME}${CPACK_RPM_PACKAGE_COMPONENT_PART_NAME}.spec")
 
-- 
cgit v0.12