BUG: fix for bug 5878

This commit is contained in:
Bill Hoffman 2007-10-12 19:33:41 -04:00
parent 2458b07464
commit 6f2a997781

View File

@ -1,5 +1,9 @@
# CPack script for creating RPM package # CPack script for creating RPM package
# Author: Eric Noulard with the help of Alexander Neundorf # Author: Eric Noulard with the help of Alexander Neundorf.
# All variables used by CPackRPM begins with CPACK_RPM_ prefix
#
# Here comes the list of used variables:
#
IF(CMAKE_BINARY_DIR) IF(CMAKE_BINARY_DIR)
MESSAGE(FATAL_ERROR "CPackRPM.cmake may only be used by CPack internally.") MESSAGE(FATAL_ERROR "CPackRPM.cmake may only be used by CPack internally.")
@ -40,37 +44,37 @@ ENDIF(ALIEN_EXECUTABLE)
# The variables which may/should be defined are: # The variables which may/should be defined are:
# #
# RPM_PACKAGE_SUMMARY (mandatory) # CPACK_RPM_PACKAGE_SUMMARY (mandatory)
IF(NOT RPM_PACKAGE_SUMMARY) IF(NOT CPACK_RPM_PACKAGE_SUMMARY)
# if neither var is defined lets use the name as summary # if neither var is defined lets use the name as summary
IF(NOT CPACK_PACKAGE_DESCRIPTION_SUMMARY) IF(NOT CPACK_PACKAGE_DESCRIPTION_SUMMARY)
STRING(TOLOWER "${CPACK_PACKAGE_NAME}" RPM_PACKAGE_SUMMARY) STRING(TOLOWER "${CPACK_PACKAGE_NAME}" CPACK_RPM_PACKAGE_SUMMARY)
ELSE(NOT CPACK_PACKAGE_DESCRIPTION_SUMMARY) ELSE(NOT CPACK_PACKAGE_DESCRIPTION_SUMMARY)
SET(RPM_PACKAGE_SUMMARY ${CPACK_PACKAGE_DESCRIPTION_SUMMARY}) SET(CPACK_RPM_PACKAGE_SUMMARY ${CPACK_PACKAGE_DESCRIPTION_SUMMARY})
ENDIF(NOT CPACK_PACKAGE_DESCRIPTION_SUMMARY) ENDIF(NOT CPACK_PACKAGE_DESCRIPTION_SUMMARY)
ENDIF(NOT RPM_PACKAGE_SUMMARY) ENDIF(NOT CPACK_RPM_PACKAGE_SUMMARY)
# RPM_PACKAGE_NAME (mandatory) # CPACK_RPM_PACKAGE_NAME (mandatory)
IF(NOT RPM_PACKAGE_NAME) IF(NOT CPACK_RPM_PACKAGE_NAME)
STRING(TOLOWER "${CPACK_PACKAGE_NAME}" RPM_PACKAGE_NAME) STRING(TOLOWER "${CPACK_PACKAGE_NAME}" CPACK_RPM_PACKAGE_NAME)
ENDIF(NOT RPM_PACKAGE_NAME) ENDIF(NOT CPACK_RPM_PACKAGE_NAME)
# RPM_PACKAGE_VERSION (mandatory) # CPACK_RPM_PACKAGE_VERSION (mandatory)
IF(NOT RPM_PACKAGE_VERSION) IF(NOT CPACK_RPM_PACKAGE_VERSION)
IF(NOT CPACK_PACKAGE_VERSION) IF(NOT CPACK_PACKAGE_VERSION)
MESSAGE(FATAL_ERROR "RPM package requires a package version") MESSAGE(FATAL_ERROR "RPM package requires a package version")
ENDIF(NOT CPACK_PACKAGE_VERSION) ENDIF(NOT CPACK_PACKAGE_VERSION)
SET(RPM_PACKAGE_VERSION ${CPACK_PACKAGE_VERSION}) SET(CPACK_RPM_PACKAGE_VERSION ${CPACK_PACKAGE_VERSION})
ENDIF(NOT RPM_PACKAGE_VERSION) ENDIF(NOT CPACK_RPM_PACKAGE_VERSION)
# RPM_PACKAGE_ARCHITECTURE (optional) # CPACK_RPM_PACKAGE_ARCHITECTURE (optional)
IF(NOT RPM_PACKAGE_ARCHITECTURE) IF(NOT CPACK_RPM_PACKAGE_ARCHITECTURE)
# FIXME This should be obtained through 'arch' command # FIXME This should be obtained through 'arch' command
# but is it --really necessary-- ? # but is it --really necessary-- ?
SET(RPM_PACKAGE_ARCHITECTURE i386) SET(CPACK_RPM_PACKAGE_ARCHITECTURE i386)
ENDIF(NOT RPM_PACKAGE_ARCHITECTURE) ENDIF(NOT CPACK_RPM_PACKAGE_ARCHITECTURE)
# RPM_PACKAGE_RELEASE # CPACK_RPM_PACKAGE_RELEASE
# The RPM release is the numbering of the RPM package ITSELF # The RPM release is the numbering of the RPM package ITSELF
# this is the version of the PACKAGING and NOT the version # this is the version of the PACKAGING and NOT the version
# of the CONTENT of the package. # of the CONTENT of the package.
@ -78,93 +82,99 @@ ENDIF(NOT RPM_PACKAGE_ARCHITECTURE)
# without changing the version of the packaged software. # without changing the version of the packaged software.
# This is the case when the packaging is buggy (not) the software :=) # This is the case when the packaging is buggy (not) the software :=)
# If not set, 1 is a good candidate # If not set, 1 is a good candidate
IF(NOT RPM_PACKAGE_RELEASE) IF(NOT CPACK_RPM_PACKAGE_RELEASE)
SET(RPM_PACKAGE_RELEASE 1) SET(CPACK_RPM_PACKAGE_RELEASE 1)
ENDIF(NOT RPM_PACKAGE_RELEASE) ENDIF(NOT CPACK_RPM_PACKAGE_RELEASE)
# RPM_PACKAGE_LICENSE # CPACK_RPM_PACKAGE_LICENSE
IF(NOT RPM_PACKAGE_LICENSE) IF(NOT CPACK_RPM_PACKAGE_LICENSE)
SET(RPM_PACKAGE_LICENSE "unknown") SET(CPACK_RPM_PACKAGE_LICENSE "unknown")
ENDIF(NOT RPM_PACKAGE_LICENSE) ENDIF(NOT CPACK_RPM_PACKAGE_LICENSE)
# RPM_PACKAGE_GROUP # CPACK_RPM_PACKAGE_GROUP
IF(NOT RPM_PACKAGE_GROUP) IF(NOT CPACK_RPM_PACKAGE_GROUP)
SET(RPM_PACKAGE_GROUP "unknown") SET(CPACK_RPM_PACKAGE_GROUP "unknown")
ENDIF(NOT RPM_PACKAGE_GROUP) ENDIF(NOT CPACK_RPM_PACKAGE_GROUP)
# RPM_PACKAGE_SOURCE # CPACK_RPM_PACKAGE_VENDOR
IF(NOT CPACK_RPM_PACKAGE_VENDOR)
SET(CPACK_RPM_PACKAGE_VENDOR "unknown")
ENDIF(NOT CPACK_RPM_PACKAGE_VENDOR)
# CPACK_RPM_PACKAGE_SOURCE
# The name of the source tarball in case we generate # The name of the source tarball in case we generate
# a source RPM # a source RPM
# RPM_PACKAGE_DESCRIPTION # CPACK_RPM_PACKAGE_DESCRIPTION
# FIXME may be found in CPACK_PACKAGE_DESCRIPTION_FILE # FIXME may be found in CPACK_PACKAGE_DESCRIPTION_FILE
# RPM_USER_BINARY_SPECFILE # CPACK_RPM_USER_BINARY_SPECFILE
# FIXME when this is set then CPack should us the # FIXME when this is set then CPack should us the
# user provided file. # user provided file.
# Now we may create the RPM build tree structure # Now we may create the RPM build tree structure
SET(RPM_ROOTDIR "${CPACK_TOPLEVEL_DIRECTORY}") SET(CPACK_RPM_ROOTDIR "${CPACK_TOPLEVEL_DIRECTORY}")
MESSAGE(STATUS "CPackRPM:: Using RPM_ROOTDIR=${RPM_ROOTDIR}") MESSAGE(STATUS "CPackRPM:: Using CPACK_RPM_ROOTDIR=${CPACK_RPM_ROOTDIR}")
# Prepare RPM build tree # Prepare RPM build tree
FILE(MAKE_DIRECTORY ${RPM_ROOTDIR}) FILE(MAKE_DIRECTORY ${CPACK_RPM_ROOTDIR})
FILE(MAKE_DIRECTORY ${RPM_ROOTDIR}/tmp) FILE(MAKE_DIRECTORY ${CPACK_RPM_ROOTDIR}/tmp)
FILE(MAKE_DIRECTORY ${RPM_ROOTDIR}/BUILD) FILE(MAKE_DIRECTORY ${CPACK_RPM_ROOTDIR}/BUILD)
FILE(MAKE_DIRECTORY ${RPM_ROOTDIR}/RPMS) FILE(MAKE_DIRECTORY ${CPACK_RPM_ROOTDIR}/RPMS)
FILE(MAKE_DIRECTORY ${RPM_ROOTDIR}/SOURCES) FILE(MAKE_DIRECTORY ${CPACK_RPM_ROOTDIR}/SOURCES)
FILE(MAKE_DIRECTORY ${RPM_ROOTDIR}/SPECS) FILE(MAKE_DIRECTORY ${CPACK_RPM_ROOTDIR}/SPECS)
FILE(MAKE_DIRECTORY ${RPM_ROOTDIR}/SRPMS) FILE(MAKE_DIRECTORY ${CPACK_RPM_ROOTDIR}/SRPMS)
#SET(RPM_FILE_NAME "${RPM_PACKAGE_NAME}-${RPM_PACKAGE_VERSION}-${RPM_PACKAGE_RELEASE}-${RPM_PACKAGE_ARCHITECTURE}.rpm") #SET(CPACK_RPM_FILE_NAME "${CPACK_RPM_PACKAGE_NAME}-${CPACK_RPM_PACKAGE_VERSION}-${CPACK_RPM_PACKAGE_RELEASE}-${CPACK_RPM_PACKAGE_ARCHITECTURE}.rpm")
SET(RPM_FILE_NAME "${CPACK_OUTPUT_FILE_NAME}") SET(CPACK_RPM_FILE_NAME "${CPACK_OUTPUT_FILE_NAME}")
# it seems rpmbuild can't handle spaces in the path # it seems rpmbuild can't handle spaces in the path
# neither escaping (as below) nor putting quotes around the path seem to help # neither escaping (as below) nor putting quotes around the path seem to help
#STRING(REGEX REPLACE " " "\\\\ " RPM_DIRECTORY "${CPACK_TOPLEVEL_DIRECTORY}") #STRING(REGEX REPLACE " " "\\\\ " CPACK_RPM_DIRECTORY "${CPACK_TOPLEVEL_DIRECTORY}")
SET(RPM_DIRECTORY "${CPACK_TOPLEVEL_DIRECTORY}") SET(CPACK_RPM_DIRECTORY "${CPACK_TOPLEVEL_DIRECTORY}")
SET(RPM_BINARY_SPECFILE "${RPM_ROOTDIR}/SPECS/${RPM_PACKAGE_NAME}.spec") SET(CPACK_RPM_BINARY_SPECFILE "${CPACK_RPM_ROOTDIR}/SPECS/${CPACK_RPM_PACKAGE_NAME}.spec")
IF(RPM_USER_BINARY_SPECFILE) IF(CPACK_RPM_USER_BINARY_SPECFILE)
# User may have specified SPECFILE just use it # User may have specified SPECFILE just use it
MESSAGE("CPackRPM: Will use user specified spec file: ${RPM_USER_BINARY_SPECFILE}") MESSAGE("CPackRPM: Will use user specified spec file: ${CPACK_RPM_USER_BINARY_SPECFILE}")
# Note that user provided file is processed for @var replacement # Note that user provided file is processed for @var replacement
CONFIGURE_FILE(${RPM_USER_BINARY_SPECFILE} ${RPM_BINARY_SPECFILE} @ONLY) CONFIGURE_FILE(${CPACK_RPM_USER_BINARY_SPECFILE} ${CPACK_RPM_BINARY_SPECFILE} @ONLY)
ELSE(RPM_USER_BINARY_SPECFILE) ELSE(CPACK_RPM_USER_BINARY_SPECFILE)
# No User specified spec file generate a valid one using var values # No User specified spec file generate a valid one using var values
IF(RPM_PACKAGE_DEBUG) IF(CPACK_RPM_PACKAGE_DEBUG)
MESSAGE("CPackRPM:: CPACK_TOPLEVEL_DIRECTORY = ${CPACK_TOPLEVEL_DIRECTORY}") MESSAGE("CPackRPM:: CPACK_TOPLEVEL_DIRECTORY = ${CPACK_TOPLEVEL_DIRECTORY}")
MESSAGE("CPackRPM:: CPACK_TOPLEVEL_TAG = ${CPACK_TOPLEVEL_TAG}") MESSAGE("CPackRPM:: CPACK_TOPLEVEL_TAG = ${CPACK_TOPLEVEL_TAG}")
MESSAGE("CPackRPM:: CPACK_TEMPORARY_DIRECTORY= ${PACK_TEMPORARY_DIRECTORY}") MESSAGE("CPackRPM:: CPACK_TEMPORARY_DIRECTORY= ${PACK_TEMPORARY_DIRECTORY}")
MESSAGE("CPackRPM:: CPACK_OUTPUT_FILE_NAME = ${CPACK_OUTPUT_FILE_NAME}") MESSAGE("CPackRPM:: CPACK_OUTPUT_FILE_NAME = ${CPACK_OUTPUT_FILE_NAME}")
MESSAGE("CPackRPM:: CPACK_OUTPUT_FILE_PATH = ${CPACK_OUTPUT_FILE_PATH}") MESSAGE("CPackRPM:: CPACK_OUTPUT_FILE_PATH = ${CPACK_OUTPUT_FILE_PATH}")
MESSAGE("CPackRPM:: CPACK_PACKAGE_FILE_NAME = ${CPACK_PACKAGE_FILE_NAME}") MESSAGE("CPackRPM:: CPACK_PACKAGE_FILE_NAME = ${CPACK_PACKAGE_FILE_NAME}")
MESSAGE("CPackRPM:: RPM_BINARY_SPECFILE = ${RPM_BINARY_SPECFILE}") MESSAGE("CPackRPM:: CPACK_RPM_BINARY_SPECFILE = ${CPACK_RPM_BINARY_SPECFILE}")
MESSAGE("CPackRPM:: CPACK_PACKAGE_INSTALL_DIRECTORY = ${PACK_PACKAGE_INSTALL_DIRECTORY}") MESSAGE("CPackRPM:: CPACK_PACKAGE_INSTALL_DIRECTORY = ${PACK_PACKAGE_INSTALL_DIRECTORY}")
MESSAGE("CPackRPM ::CPACK_TEMPORARY_PACKAGE_FILE_NAME = ${CPACK_TEMPORARY_PACKAGE_FILE_NAME}") MESSAGE("CPackRPM ::CPACK_TEMPORARY_PACKAGE_FILE_NAME = ${CPACK_TEMPORARY_PACKAGE_FILE_NAME}")
ENDIF(RPM_PACKAGE_DEBUG) ENDIF(CPACK_RPM_PACKAGE_DEBUG)
FILE(WRITE ${RPM_BINARY_SPECFILE} FILE(WRITE ${CPACK_RPM_BINARY_SPECFILE}
"# -*- rpm-spec -*- "# -*- rpm-spec -*-
Buildroot: ${RPM_DIRECTORY}/${CPACK_PACKAGE_FILE_NAME} Buildroot: ${CPACK_RPM_DIRECTORY}/${CPACK_PACKAGE_FILE_NAME}
Summary: ${RPM_PACKAGE_SUMMARY} Summary: ${CPACK_RPM_PACKAGE_SUMMARY}
Name: ${RPM_PACKAGE_NAME} Name: ${CPACK_RPM_PACKAGE_NAME}
Version: ${RPM_PACKAGE_VERSION} Version: ${CPACK_RPM_PACKAGE_VERSION}
Release: ${RPM_PACKAGE_RELEASE} Release: ${CPACK_RPM_PACKAGE_RELEASE}
License: ${RPM_PACKAGE_LICENSE} License: ${CPACK_RPM_PACKAGE_LICENSE}
Group: ${RPM_PACKAGE_LICENSE} Group: ${CPACK_RPM_PACKAGE_GROUP}
Vendor: ${CPACK_RPM_PACKAGE_VENDOR}
#%define prefix ${CMAKE_INSTALL_PREFIX} #%define prefix ${CMAKE_INSTALL_PREFIX}
%define _rpmdir ${RPM_DIRECTORY} %define _rpmdir ${CPACK_RPM_DIRECTORY}
%define _rpmfilename ${RPM_FILE_NAME} %define _rpmfilename ${CPACK_RPM_FILE_NAME}
%define _unpackaged_files_terminate_build 0 %define _unpackaged_files_terminate_build 0
%define _topdir ${RPM_DIRECTORY} %define _topdir ${CPACK_RPM_DIRECTORY}
%description %description
${RPM_PACKAGE_NAME} : will come soon ${CPACK_RPM_PACKAGE_NAME} : will come soon
with the value of RPM_PACKAGE_DESCRIPTION with the value of CPACK_RPM_PACKAGE_DESCRIPTION
or or
the content of CPACK_PACKAGE_DESCRIPTION_FILE the content of CPACK_PACKAGE_DESCRIPTION_FILE
*** ***
${RPM_PACKAGE_DESCRIPTION} ${CPACK_RPM_PACKAGE_DESCRIPTION}
*** ***
%prep %prep
@ -186,13 +196,13 @@ ${RPM_PACKAGE_DESCRIPTION}
Generated by CPack RPM Generator and associated macros Generated by CPack RPM Generator and associated macros
") ")
ENDIF(RPM_USER_BINARY_SPECFILE) ENDIF(CPACK_RPM_USER_BINARY_SPECFILE)
IF(RPMBUILD_EXECUTABLE) IF(RPMBUILD_EXECUTABLE)
# Now call rpmbuild using the SPECFILE # Now call rpmbuild using the SPECFILE
EXECUTE_PROCESS( EXECUTE_PROCESS(
COMMAND "${RPMBUILD_EXECUTABLE}" -bb "${RPM_BINARY_SPECFILE}" COMMAND "${RPMBUILD_EXECUTABLE}" -bb "${CPACK_RPM_BINARY_SPECFILE}"
WORKING_DIRECTORY "${CPACK_TOPLEVEL_DIRECTORY}/${CPACK_PACKAGE_FILE_NAME}" WORKING_DIRECTORY "${CPACK_TOPLEVEL_DIRECTORY}/${CPACK_PACKAGE_FILE_NAME}"
ERROR_FILE "${CPACK_TOPLEVEL_DIRECTORY}/rpmbuild.err" ERROR_FILE "${CPACK_TOPLEVEL_DIRECTORY}/rpmbuild.err"
OUTPUT_FILE "${CPACK_TOPLEVEL_DIRECTORY}/rpmbuild.out") OUTPUT_FILE "${CPACK_TOPLEVEL_DIRECTORY}/rpmbuild.out")