[Cmake-commits] [cmake-commits] eric.noulard committed CPackRPM.cmake 1.15 1.16

cmake-commits at cmake.org cmake-commits at cmake.org
Mon Nov 9 16:17:24 EST 2009


Update of /cvsroot/CMake/CMake/Modules
In directory public:/mounts/ram/cvs-serv5996/Modules

Modified Files:
	CPackRPM.cmake 
Log Message:
CPackRPM:: Support USER supplied  spec files (bug 9679)

Eric



Index: CPackRPM.cmake
===================================================================
RCS file: /cvsroot/CMake/CMake/Modules/CPackRPM.cmake,v
retrieving revision 1.15
retrieving revision 1.16
diff -C 2 -d -r1.15 -r1.16
*** CPackRPM.cmake	9 Nov 2009 19:06:36 -0000	1.15
--- CPackRPM.cmake	9 Nov 2009 21:17:22 -0000	1.16
***************
*** 70,73 ****
--- 70,87 ----
  #     during CPack RPM run. For example you may launch CPack like this 
  #     cpack -D CPACK_RPM_PACKAGE_DEBUG=1 -G RPM
+ #  CPACK_RPM_USER_BINARY_SPECFILE
+ #     Mandatory : NO
+ #     Default   : - 
+ #     May be set by the user in order to specify a USER binary spec file
+ #     to be used by CPackRPM instead of generating the file.
+ #     The specified file will be processed by CONFIGURE_FILE( @ONLY).
+ #  CPACK_RPM_GENERATE_USER_BINARY_SPECFILE_TEMPLATE
+ #     Mandatory : NO
+ #     Default   : -
+ #     If set CPack will generate a template for USER specified binary 
+ #     spec file and stop with an error. For example launch CPack like this
+ #     cpack -D CPACK_RPM_GENERATE_USER_BINARY_SPECFILE_TEMPLATE=1 -G RPM
+ #     The user may then use this file in order to hand-craft is own
+ #     binary spec file which may be used with CPACK_RPM_USER_BINARY_SPECFILE.
  
  #=============================================================================
***************
*** 256,263 ****
  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}")
--- 270,273 ----
***************
*** 284,330 ****
                 WORKING_DIRECTORY "${CPACK_TOPLEVEL_DIRECTORY}/${CPACK_PACKAGE_FILE_NAME}"
                 OUTPUT_VARIABLE CPACK_RPM_INSTALL_FILES)
!  
  SET(CPACK_RPM_BINARY_SPECFILE "${CPACK_RPM_ROOTDIR}/SPECS/${CPACK_RPM_PACKAGE_NAME}.spec")
! IF(CPACK_RPM_USER_BINARY_SPECFILE)
!   # User may have specified SPECFILE just use it
!   MESSAGE("CPackRPM: Will use user specified spec file: ${CPACK_RPM_USER_BINARY_SPECFILE}")
!   # Note that user provided file is processed for @var replacement
!   CONFIGURE_FILE(${CPACK_RPM_USER_BINARY_SPECFILE} ${CPACK_RPM_BINARY_SPECFILE} @ONLY)
! 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:Debug: CPACK_TOPLEVEL_DIRECTORY          = ${CPACK_TOPLEVEL_DIRECTORY}")
!     MESSAGE("CPackRPM:Debug: CPACK_TOPLEVEL_TAG                = ${CPACK_TOPLEVEL_TAG}")
!     MESSAGE("CPackRPM:Debug: CPACK_TEMPORARY_DIRECTORY         = ${CPACK_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   = ${CPACK_PACKAGE_INSTALL_DIRECTORY}")
!     MESSAGE("CPackRPM:Debug: CPACK_TEMPORARY_PACKAGE_FILE_NAME = ${CPACK_TEMPORARY_PACKAGE_FILE_NAME}")
!   ENDIF(CPACK_RPM_PACKAGE_DEBUG)
!   FILE(WRITE ${CPACK_RPM_BINARY_SPECFILE}
!     "# -*- rpm-spec -*-
! Buildroot:      ${CPACK_RPM_DIRECTORY}/${CPACK_PACKAGE_FILE_NAME}
! Summary:        ${CPACK_RPM_PACKAGE_SUMMARY}
! Name:           ${CPACK_RPM_PACKAGE_NAME}
! Version:        ${CPACK_RPM_PACKAGE_VERSION}
! Release:        ${CPACK_RPM_PACKAGE_RELEASE}
! License:        ${CPACK_RPM_PACKAGE_LICENSE}
! Group:          ${CPACK_RPM_PACKAGE_GROUP}
! Vendor:         ${CPACK_RPM_PACKAGE_VENDOR}
! ${TMP_RPM_REQUIRES}
! ${TMP_RPM_BUILDARCH}
! 
! #p define prefix ${CMAKE_INSTALL_PREFIX}
! %define _rpmdir ${CPACK_RPM_DIRECTORY}
! %define _rpmfilename ${CPACK_RPM_FILE_NAME}
  %define _unpackaged_files_terminate_build 0
! %define _topdir ${CPACK_RPM_DIRECTORY}
! ${TMP_RPM_SPEC_INSTALL_POST}
! ${CPACK_RPM_SPEC_MORE_DEFINE}
! 
  %description
! ${CPACK_RPM_PACKAGE_DESCRIPTION}
  
  # This is a shortcutted spec file
--- 294,343 ----
                 WORKING_DIRECTORY "${CPACK_TOPLEVEL_DIRECTORY}/${CPACK_PACKAGE_FILE_NAME}"
                 OUTPUT_VARIABLE CPACK_RPM_INSTALL_FILES)
!                               
! # 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}.spec")
!  
! # Print out some debug information if we were asked for that
! IF(CPACK_RPM_PACKAGE_DEBUG)
!    MESSAGE("CPackRPM:Debug: CPACK_TOPLEVEL_DIRECTORY          = ${CPACK_TOPLEVEL_DIRECTORY}")
!    MESSAGE("CPackRPM:Debug: CPACK_TOPLEVEL_TAG                = ${CPACK_TOPLEVEL_TAG}")
!    MESSAGE("CPackRPM:Debug: CPACK_TEMPORARY_DIRECTORY         = ${CPACK_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   = ${CPACK_PACKAGE_INSTALL_DIRECTORY}")
!    MESSAGE("CPackRPM:Debug: CPACK_TEMPORARY_PACKAGE_FILE_NAME = ${CPACK_TEMPORARY_PACKAGE_FILE_NAME}")
! ENDIF(CPACK_RPM_PACKAGE_DEBUG)
!  
! # USER generated spec file handling.
! # We should generate a spec file template:
! #  - either because the user asked for it : CPACK_RPM_GENERATE_USER_BINARY_SPECFILE_TEMPLATE
! #  - or the user did not provide one : NOT CPACK_RPM_USER_BINARY_SPECFILE
! #
! IF(CPACK_RPM_GENERATE_USER_BINARY_SPECFILE_TEMPLATE OR NOT CPACK_RPM_USER_BINARY_SPECFILE)
!    FILE(WRITE ${CPACK_RPM_BINARY_SPECFILE}.in
!       "# -*- rpm-spec -*-
! Buildroot:      \@CPACK_RPM_DIRECTORY\@/\@CPACK_PACKAGE_FILE_NAME\@
! Summary:        \@CPACK_RPM_PACKAGE_SUMMARY\@
! Name:           \@CPACK_RPM_PACKAGE_NAME\@
! Version:        \@CPACK_RPM_PACKAGE_VERSION\@
! Release:        \@CPACK_RPM_PACKAGE_RELEASE\@
! License:        \@CPACK_RPM_PACKAGE_LICENSE\@
! Group:          \@CPACK_RPM_PACKAGE_GROUP\@
! Vendor:         \@CPACK_RPM_PACKAGE_VENDOR\@
! \@TMP_RPM_REQUIRES\@
! \@TMP_RPM_BUILDARCH\@
!  
! #p define prefix \@CMAKE_INSTALL_PREFIX\@
! %define _rpmdir \@CPACK_RPM_DIRECTORY\@
! %define _rpmfilename \@CPACK_RPM_FILE_NAME\@
  %define _unpackaged_files_terminate_build 0
! %define _topdir \@CPACK_RPM_DIRECTORY\@
! \@TMP_RPM_SPEC_INSTALL_POST\@
! \@CPACK_RPM_SPEC_MORE_DEFINE\@
!   
  %description
! \@CPACK_RPM_PACKAGE_DESCRIPTION\@
  
  # This is a shortcutted spec file
***************
*** 349,352 ****
--- 362,367 ----
  
  %changelog
+ * Wed Oct 07 2009 Erk <eric.noulard at gmail.com>
+   Add user custom spec file support 
  * Sat Oct 03 2009 Kami <cmoidavid at gmail.com>
    Update to handle more precisely the files section
***************
*** 359,364 ****
    Generated by CPack RPM Generator and associated macros
  ")
! ENDIF(CPACK_RPM_USER_BINARY_SPECFILE)
  
  
  IF(RPMBUILD_EXECUTABLE)
--- 374,398 ----
    Generated by CPack RPM Generator and associated macros
  ")
!   # Stop here if we were asked to only generate a template USER spec file
!   # The generated file may then be used as a template by user who wants
!   # to customize their own spec file.  
!   IF(CPACK_RPM_GENERATE_USER_BINARY_SPECFILE_TEMPLATE)
!      MESSAGE(FATAL_ERROR "CPackRPM: STOP here Generated USER binary spec file templare is: ${CPACK_RPM_BINARY_SPECFILE}.in")
!   ENDIF(CPACK_RPM_GENERATE_USER_BINARY_SPECFILE_TEMPLATE)
! ENDIF(CPACK_RPM_GENERATE_USER_BINARY_SPECFILE_TEMPLATE OR NOT CPACK_RPM_USER_BINARY_SPECFILE)
  
+ # After that we may either use a user provided spec file
+ # or generate one using appropriate variables value.  
+ IF(CPACK_RPM_USER_BINARY_SPECFILE)
+   # User may have specified SPECFILE just use it
+   MESSAGE("CPackRPM: Will use USER specified spec file: ${CPACK_RPM_USER_BINARY_SPECFILE}")
+   # The user provided file is processed for @var replacement
+   CONFIGURE_FILE(${CPACK_RPM_USER_BINARY_SPECFILE} ${CPACK_RPM_BINARY_SPECFILE} @ONLY)
+ ELSE(CPACK_RPM_USER_BINARY_SPECFILE)
+   # No User specified spec file, will use the generated spec file    
+   MESSAGE("CPackRPM: Will use GENERATED spec file: ${CPACK_RPM_BINARY_SPECFILE}")      
+   # Note the just created file is processed for @var replacement  
+   CONFIGURE_FILE(${CPACK_RPM_BINARY_SPECFILE}.in ${CPACK_RPM_BINARY_SPECFILE} @ONLY)
+ ENDIF(CPACK_RPM_USER_BINARY_SPECFILE)
  
  IF(RPMBUILD_EXECUTABLE)



More information about the Cmake-commits mailing list