Index: Modules/CPackRPM.cmake
===================================================================
RCS file: /cvsroot/CMake/CMake/Modules/CPackRPM.cmake,v
retrieving revision 1.7
diff -u -r1.7 CPackRPM.cmake
--- Modules/CPackRPM.cmake	25 Feb 2008 19:23:24 -0000	1.7
+++ Modules/CPackRPM.cmake	25 Aug 2008 08:26:46 -0000
@@ -25,6 +25,11 @@
   MESSAGE(FATAL_ERROR "${RPMBUILD_EXECUTABLE} can't handle paths with spaces, use a build directory without spaces for building RPMs.")
 ENDIF(CPACK_TOPLEVEL_DIRECTORY MATCHES ".* .*")
 
+IF(NOT CPACK_SET_DESTDIR)
+  MESSAGE("CPackRPM:Warning: You did not set CPACK_SET_DESTDIR to ON")
+  MESSAGE("CPackRPM:Warning: this will make CPackRPM fail if you have installed files with absolute path")
+ENDIF(NOT CPACK_SET_DESTDIR)
+
 # If rpmbuild is found 
 # we try to discover alien since we may be on non RPM distro like Debian.
 # In this case we may try to to use more advanced features
@@ -106,8 +111,7 @@
 ENDIF(NOT CPACK_RPM_PACKAGE_VENDOR)
 
 # CPACK_RPM_PACKAGE_SOURCE
-# The name of the source tarball in case we generate
-# a source RPM
+# The name of the source tarball in case we generate a source RPM
 
 # CPACK_RPM_PACKAGE_DESCRIPTION
 # The variable content may be either
@@ -124,13 +128,29 @@
         ENDIF (CPACK_PACKAGE_DESCRIPTION_FILE)
 ENDIF (NOT CPACK_RPM_PACKAGE_DESCRIPTION)
 
+# CPACK_RPM_SPEC_INSTALL_POST
+# May be used to define a RPM post intallation script
+# for example setting it to "/bin/true" may prevent
+# rpmbuild from stripping binaries.
+IF(CPACK_RPM_SPEC_INSTALL_POST)
+  SET(CPACK_RPM_SPEC_INSTALL_POST "%define __spec_install_post ${CPACK_RPM_SPEC_INSTALL_POST}")
+ENDIF(CPACK_RPM_SPEC_INSTALL_POST)
+
+# CPACK_RPM_SPEC_MORE_DEFINE
+# This is a generated spec rpm file spaceholder
+IF(CPACK_RPM_SPEC_MORE_DEFINE)
+  IF(CPACK_RPM_PACKAGE_DEBUG)
+    MESSAGE("CPackRPM:Debug: User defined more define spec line specified:\n ${CPACK_RPM_SPEC_MORE_DEFINE}")
+  ENDIF(CPACK_RPM_PACKAGE_DEBUG)
+ENDIF(CPACK_RPM_SPEC_MORE_DEFINE)
+
 # CPACK_RPM_USER_BINARY_SPECFILE 
 # FIXME when this is set then CPack should us the 
 # user provided file.
 
 # Now we may create the RPM build tree structure
 SET(CPACK_RPM_ROOTDIR "${CPACK_TOPLEVEL_DIRECTORY}")
-MESSAGE(STATUS "CPackRPM:: Using CPACK_RPM_ROOTDIR=${CPACK_RPM_ROOTDIR}")
+MESSAGE(STATUS "CPackRPM:Debug: Using CPACK_RPM_ROOTDIR=${CPACK_RPM_ROOTDIR}")
 # Prepare RPM build tree
 FILE(MAKE_DIRECTORY ${CPACK_RPM_ROOTDIR})
 FILE(MAKE_DIRECTORY ${CPACK_RPM_ROOTDIR}/tmp)
@@ -157,15 +177,16 @@
 ELSE(CPACK_RPM_USER_BINARY_SPECFILE)
   # No User specified spec file generate a valid one using var values
   IF(CPACK_RPM_PACKAGE_DEBUG)
-    MESSAGE("CPackRPM:: CPACK_TOPLEVEL_DIRECTORY = ${CPACK_TOPLEVEL_DIRECTORY}")
-    MESSAGE("CPackRPM:: CPACK_TOPLEVEL_TAG       = ${CPACK_TOPLEVEL_TAG}")
-    MESSAGE("CPackRPM:: CPACK_TEMPORARY_DIRECTORY= ${PACK_TEMPORARY_DIRECTORY}")
-    MESSAGE("CPackRPM:: CPACK_OUTPUT_FILE_NAME   = ${CPACK_OUTPUT_FILE_NAME}")
-    MESSAGE("CPackRPM:: CPACK_OUTPUT_FILE_PATH   = ${CPACK_OUTPUT_FILE_PATH}")
-    MESSAGE("CPackRPM:: CPACK_PACKAGE_FILE_NAME  = ${CPACK_PACKAGE_FILE_NAME}")
-    MESSAGE("CPackRPM:: CPACK_RPM_BINARY_SPECFILE      = ${CPACK_RPM_BINARY_SPECFILE}")
-    MESSAGE("CPackRPM:: CPACK_PACKAGE_INSTALL_DIRECTORY   = ${PACK_PACKAGE_INSTALL_DIRECTORY}")
-    MESSAGE("CPackRPM ::CPACK_TEMPORARY_PACKAGE_FILE_NAME = ${CPACK_TEMPORARY_PACKAGE_FILE_NAME}")
+    MESSAGE("CPackRPM:Debug: CPACK_TOPLEVEL_DIRECTORY          = ${CPACK_TOPLEVEL_DIRECTORY}")
+    MESSAGE("CPackRPM:Debug: CPACK_TOPLEVEL_TAG                = ${CPACK_TOPLEVEL_TAG}")
+    MESSAGE("CPackRPM:Debug: CPACK_TEMPORARY_DIRECTORY         = ${PACK_TEMPORARY_DIRECTORY}")
+    MESSAGE("CPackRPM:Debug: CPACK_OUTPUT_FILE_NAME            = ${CPACK_OUTPUT_FILE_NAME}")
+    MESSAGE("CPackRPM:Debug: CPACK_OUTPUT_FILE_PATH            = ${CPACK_OUTPUT_FILE_PATH}")
+    MESSAGE("CPackRPM:Debug: CPACK_PACKAGE_FILE_NAME           = ${CPACK_PACKAGE_FILE_NAME}")
+    MESSAGE("CPackRPM:Debug: CPACK_RPM_BINARY_SPECFILE         = ${CPACK_RPM_BINARY_SPECFILE}")
+    MESSAGE("CPackRPM:Debug: CPACK_PACKAGE_INSTALL_DIRECTORY   = ${PACK_PACKAGE_INSTALL_DIRECTORY}")
+    MESSAGE("CPackRPM:Debug: CPACK_TEMPORARY_PACKAGE_FILE_NAME = ${CPACK_TEMPORARY_PACKAGE_FILE_NAME}")
+    MESSAGE("CPackRPM:Debug: CPACK_RPM_SPEC_INSTALL_POST       = ${CPACK_RPM_SPEC_INSTALL_POST}")
   ENDIF(CPACK_RPM_PACKAGE_DEBUG)
   FILE(WRITE ${CPACK_RPM_BINARY_SPECFILE}
     "# -*- rpm-spec -*-
@@ -183,6 +204,8 @@
 %define _rpmfilename ${CPACK_RPM_FILE_NAME}
 %define _unpackaged_files_terminate_build 0
 %define _topdir ${CPACK_RPM_DIRECTORY}
+${CPACK_RPM_SPEC_INSTALL_POST}
+${CPACK_RPM_SPEC_MORE_DEFINE}
 
 %description
 ${CPACK_RPM_PACKAGE_DESCRIPTION}
@@ -206,10 +229,11 @@
 /*
 
 %changelog
+* Mon Aug 25 2008 Erk <eric.noulard@gmail.com>
+  Update generator to handle optional post-install
 * Tue Aug 16 2007 Erk <eric.noulard@gmail.com>
   Generated by CPack RPM Generator and associated macros
 ")
-
 ENDIF(CPACK_RPM_USER_BINARY_SPECFILE)
 
 
@@ -220,6 +244,11 @@
     WORKING_DIRECTORY "${CPACK_TOPLEVEL_DIRECTORY}/${CPACK_PACKAGE_FILE_NAME}"
     ERROR_FILE "${CPACK_TOPLEVEL_DIRECTORY}/rpmbuild.err"
     OUTPUT_FILE "${CPACK_TOPLEVEL_DIRECTORY}/rpmbuild.out")
+  IF(CPACK_RPM_PACKAGE_DEBUG)
+    MESSAGE("CPackRPM:Debug: You may consult rpmbuild logs in: ")
+    MESSAGE("CPackRPM:Debug:    - ${CPACK_TOPLEVEL_DIRECTORY}/rpmbuild.err")
+    MESSAGE("CPackRPM:Debug:    - ${CPACK_TOPLEVEL_DIRECTORY}/rpmbuild.out")
+  ENDIF(CPACK_RPM_PACKAGE_DEBUG)
 ELSE(RPMBUILD_EXECUTABLE)
   IF(ALIEN_EXECUTABLE)
     MESSAGE(FATAL_ERROR "RPM packaging through alien not done (yet)")
