Merge topic 'cpack_rpm_component_fall_through'
be089724 CPack/RPM prevent component attributes leakage ffc1b945 CPack/RPM improved component override test
This commit is contained in:
commit
4faa4c60ce
@ -494,6 +494,7 @@ if(NOT UNIX)
|
||||
message(FATAL_ERROR "CPackRPM.cmake may only be used under UNIX.")
|
||||
endif()
|
||||
|
||||
function(cpack_rpm_generate_package)
|
||||
# rpmbuild is the basic command for building RPM package
|
||||
# it may be a simple (symbolic) link to rpm command.
|
||||
find_program(RPMBUILD_EXECUTABLE rpmbuild)
|
||||
@ -576,14 +577,6 @@ set(WDIR "${CPACK_TOPLEVEL_DIRECTORY}/${CPACK_PACKAGE_FILE_NAME}${CPACK_RPM_PACK
|
||||
|
||||
# CPACK_RPM_PACKAGE_SUMMARY (mandatory)
|
||||
|
||||
# CPACK_RPM_PACKAGE_SUMMARY_ is used only locally so that it can be unset each time before use otherwise
|
||||
# component packaging could leak variable content between components
|
||||
unset(CPACK_RPM_PACKAGE_SUMMARY_)
|
||||
if(CPACK_RPM_PACKAGE_SUMMARY)
|
||||
set(CPACK_RPM_PACKAGE_SUMMARY_ ${CPACK_RPM_PACKAGE_SUMMARY})
|
||||
unset(CPACK_RPM_PACKAGE_SUMMARY)
|
||||
endif()
|
||||
|
||||
#Check for component summary first.
|
||||
#If not set, it will use regular package summary logic.
|
||||
if(CPACK_RPM_PACKAGE_COMPONENT)
|
||||
@ -593,9 +586,7 @@ if(CPACK_RPM_PACKAGE_COMPONENT)
|
||||
endif()
|
||||
|
||||
if(NOT CPACK_RPM_PACKAGE_SUMMARY)
|
||||
if(CPACK_RPM_PACKAGE_SUMMARY_)
|
||||
set(CPACK_RPM_PACKAGE_SUMMARY ${CPACK_RPM_PACKAGE_SUMMARY_})
|
||||
elseif(CPACK_PACKAGE_DESCRIPTION_SUMMARY)
|
||||
if(CPACK_PACKAGE_DESCRIPTION_SUMMARY)
|
||||
set(CPACK_RPM_PACKAGE_SUMMARY ${CPACK_PACKAGE_DESCRIPTION_SUMMARY})
|
||||
else()
|
||||
# if neither var is defined lets use the name as summary
|
||||
@ -691,14 +682,6 @@ endif()
|
||||
# - set to a default value
|
||||
#
|
||||
|
||||
# CPACK_RPM_PACKAGE_DESCRIPTION_ is used only locally so that it can be unset each time before use otherwise
|
||||
# component packaging could leak variable content between components
|
||||
unset(CPACK_RPM_PACKAGE_DESCRIPTION_)
|
||||
if(CPACK_RPM_PACKAGE_DESCRIPTION)
|
||||
set(CPACK_RPM_PACKAGE_DESCRIPTION_ ${CPACK_RPM_PACKAGE_DESCRIPTION})
|
||||
unset(CPACK_RPM_PACKAGE_DESCRIPTION)
|
||||
endif()
|
||||
|
||||
#Check for a component description first.
|
||||
#If not set, it will use regular package description logic.
|
||||
if(CPACK_RPM_PACKAGE_COMPONENT)
|
||||
@ -710,9 +693,7 @@ if(CPACK_RPM_PACKAGE_COMPONENT)
|
||||
endif()
|
||||
|
||||
if(NOT CPACK_RPM_PACKAGE_DESCRIPTION)
|
||||
if(CPACK_RPM_PACKAGE_DESCRIPTION_)
|
||||
set(CPACK_RPM_PACKAGE_DESCRIPTION ${CPACK_RPM_PACKAGE_DESCRIPTION_})
|
||||
elseif(CPACK_PACKAGE_DESCRIPTION_FILE)
|
||||
if(CPACK_PACKAGE_DESCRIPTION_FILE)
|
||||
file(READ ${CPACK_PACKAGE_DESCRIPTION_FILE} CPACK_RPM_PACKAGE_DESCRIPTION)
|
||||
else ()
|
||||
set(CPACK_RPM_PACKAGE_DESCRIPTION "no package description available")
|
||||
@ -745,8 +726,6 @@ if(CPACK_PACKAGE_RELOCATABLE)
|
||||
set(CPACK_RPM_PACKAGE_RELOCATABLE TRUE)
|
||||
endif()
|
||||
if(CPACK_RPM_PACKAGE_RELOCATABLE)
|
||||
unset(TMP_RPM_PREFIXES)
|
||||
|
||||
if(CPACK_RPM_PACKAGE_DEBUG)
|
||||
message("CPackRPM:Debug: Trying to build a relocatable package")
|
||||
endif()
|
||||
@ -790,8 +769,6 @@ foreach(_RPM_SPEC_HEADER URL REQUIRES SUGGESTS PROVIDES OBSOLETES PREFIX CONFLIC
|
||||
endif()
|
||||
endif()
|
||||
|
||||
# Do not forget to unset previously set header (from previous component)
|
||||
unset(TMP_RPM_${_RPM_SPEC_HEADER})
|
||||
# Treat the RPM Spec keyword iff it has been properly defined
|
||||
if(DEFINED CPACK_RPM_PACKAGE_${_RPM_SPEC_HEADER}_TMP)
|
||||
# Transform NAME --> Name e.g. PROVIDES --> Provides
|
||||
@ -1148,6 +1125,7 @@ else()
|
||||
set(CPACK_RPM_ABSOLUTE_INSTALL_FILES "")
|
||||
endif()
|
||||
|
||||
|
||||
# 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
|
||||
@ -1319,15 +1297,6 @@ else()
|
||||
message(FATAL_ERROR "RPM packaging through alien not done (yet)")
|
||||
endif()
|
||||
endif()
|
||||
endfunction()
|
||||
|
||||
# reset variables from temporary variables
|
||||
if(CPACK_RPM_PACKAGE_SUMMARY_)
|
||||
set(CPACK_RPM_PACKAGE_SUMMARY ${CPACK_RPM_PACKAGE_SUMMARY_})
|
||||
else()
|
||||
unset(CPACK_RPM_PACKAGE_SUMMARY)
|
||||
endif()
|
||||
if(CPACK_RPM_PACKAGE_DESCRIPTION_)
|
||||
set(CPACK_RPM_PACKAGE_DESCRIPTION ${CPACK_RPM_PACKAGE_DESCRIPTION_})
|
||||
else()
|
||||
unset(CPACK_RPM_PACKAGE_DESCRIPTION)
|
||||
endif()
|
||||
cpack_rpm_generate_package()
|
||||
|
@ -22,12 +22,12 @@ if(CPACK_GENERATOR MATCHES "RPM")
|
||||
# test cross-built rpm
|
||||
set(CPACK_RPM_applications_PACKAGE_ARCHITECTURE "armv7hf")
|
||||
|
||||
# test package summary override
|
||||
# test package summary override - headers rpm is generated in the middle
|
||||
set(CPACK_RPM_PACKAGE_SUMMARY "default summary")
|
||||
set(CPACK_RPM_libraries_PACKAGE_SUMMARY "libraries summary")
|
||||
set(CPACK_RPM_headers_PACKAGE_SUMMARY "headers summary")
|
||||
|
||||
# test package description override
|
||||
set(CPACK_RPM_libraries_PACKAGE_DESCRIPTION "libraries description")
|
||||
# test package description override - headers rpm is generated in the middle
|
||||
set(CPACK_RPM_headers_PACKAGE_DESCRIPTION "headers description")
|
||||
endif()
|
||||
|
||||
if(CPACK_GENERATOR MATCHES "DEB")
|
||||
|
@ -132,12 +132,12 @@ if(CPackGen MATCHES "RPM")
|
||||
endif()
|
||||
|
||||
set(CPACK_RPM_PACKAGE_SUMMARY "default summary")
|
||||
set(CPACK_RPM_libraries_PACKAGE_SUMMARY "libraries summary")
|
||||
set(CPACK_RPM_libraries_PACKAGE_DESCRIPTION "libraries description")
|
||||
set(CPACK_RPM_headers_PACKAGE_SUMMARY "headers summary")
|
||||
set(CPACK_RPM_headers_PACKAGE_DESCRIPTION "headers description")
|
||||
set(CPACK_COMPONENT_APPLICATIONS_DESCRIPTION
|
||||
"An extremely useful application that makes use of MyLib")
|
||||
set(CPACK_COMPONENT_HEADERS_DESCRIPTION
|
||||
"C/C\\+\\+ header files for use with MyLib")
|
||||
set(CPACK_COMPONENT_LIBRARIES_DESCRIPTION
|
||||
"Static libraries used to build programs with MyLib")
|
||||
|
||||
# test package info
|
||||
if(${CPackComponentWay} STREQUAL "IgnoreGroup")
|
||||
@ -172,15 +172,15 @@ if(CPackGen MATCHES "RPM")
|
||||
set(whitespaces "[\\t\\n\\r ]*")
|
||||
|
||||
if(check_file_libraries_match)
|
||||
set(check_file_match_expected_summary ".*${CPACK_RPM_libraries_PACKAGE_SUMMARY}.*")
|
||||
set(check_file_match_expected_description ".*${CPACK_RPM_libraries_PACKAGE_DESCRIPTION}.*")
|
||||
set(check_file_match_expected_summary ".*${CPACK_RPM_PACKAGE_SUMMARY}.*")
|
||||
set(check_file_match_expected_description ".*${CPACK_COMPONENT_LIBRARIES_DESCRIPTION}.*")
|
||||
set(check_file_match_expected_relocation_path "Relocations${whitespaces}:${whitespaces}${CPACK_PACKAGING_INSTALL_PREFIX}${whitespaces}${CPACK_PACKAGING_INSTALL_PREFIX}/${CMAKE_INSTALL_LIBDIR}")
|
||||
set(check_file_match_expected_architecture "") # we don't explicitly set this value so it is different on each platform - ignore it
|
||||
set(spec_regex "*libraries*")
|
||||
set(check_content_list "^/usr/foo/bar\n/usr/foo/bar/lib.*\n/usr/foo/bar/lib.*/libmylib.a$")
|
||||
elseif(check_file_headers_match)
|
||||
set(check_file_match_expected_summary ".*${CPACK_RPM_PACKAGE_SUMMARY}.*")
|
||||
set(check_file_match_expected_description ".*${CPACK_COMPONENT_HEADERS_DESCRIPTION}.*")
|
||||
set(check_file_match_expected_summary ".*${CPACK_RPM_headers_PACKAGE_SUMMARY}.*")
|
||||
set(check_file_match_expected_description ".*${CPACK_RPM_headers_PACKAGE_DESCRIPTION}.*")
|
||||
set(check_file_match_expected_relocation_path "Relocations${whitespaces}:${whitespaces}${CPACK_PACKAGING_INSTALL_PREFIX}${whitespaces}${CPACK_PACKAGING_INSTALL_PREFIX}/${CMAKE_INSTALL_INCLUDEDIR}")
|
||||
set(check_file_match_expected_architecture "noarch")
|
||||
set(spec_regex "*headers*")
|
||||
|
Loading…
x
Reference in New Issue
Block a user