Merge topic 'cpack-rpm-component-descriptions'
603ef7fd
CPackRPM: Add component based packaging description and summary
This commit is contained in:
commit
e5feae9838
|
@ -29,6 +29,7 @@
|
||||||
# However as a handy reminder here comes the list of specific variables:
|
# However as a handy reminder here comes the list of specific variables:
|
||||||
#
|
#
|
||||||
# .. variable:: CPACK_RPM_PACKAGE_SUMMARY
|
# .. variable:: CPACK_RPM_PACKAGE_SUMMARY
|
||||||
|
# CPACK_RPM_<component>_PACKAGE_SUMMARY
|
||||||
#
|
#
|
||||||
# The RPM package summary.
|
# The RPM package summary.
|
||||||
#
|
#
|
||||||
|
@ -100,11 +101,13 @@
|
||||||
# * Default : -
|
# * Default : -
|
||||||
#
|
#
|
||||||
# .. variable:: CPACK_RPM_PACKAGE_DESCRIPTION
|
# .. variable:: CPACK_RPM_PACKAGE_DESCRIPTION
|
||||||
|
# CPACK_RPM_<component>_PACKAGE_DESCRIPTION
|
||||||
#
|
#
|
||||||
# RPM package description.
|
# RPM package description.
|
||||||
#
|
#
|
||||||
# * Mandatory : YES
|
# * Mandatory : YES
|
||||||
# * Default : CPACK_PACKAGE_DESCRIPTION_FILE if set or "no package
|
# * Default : CPACK_COMPONENT_<compName>_DESCRIPTION (component based installers
|
||||||
|
# only) if set, CPACK_PACKAGE_DESCRIPTION_FILE if set or "no package
|
||||||
# description available"
|
# description available"
|
||||||
#
|
#
|
||||||
# .. variable:: CPACK_RPM_COMPRESSION_TYPE
|
# .. variable:: CPACK_RPM_COMPRESSION_TYPE
|
||||||
|
@ -414,6 +417,7 @@ endif()
|
||||||
# Are we packaging components ?
|
# Are we packaging components ?
|
||||||
if(CPACK_RPM_PACKAGE_COMPONENT)
|
if(CPACK_RPM_PACKAGE_COMPONENT)
|
||||||
set(CPACK_RPM_PACKAGE_COMPONENT_PART_NAME "-${CPACK_RPM_PACKAGE_COMPONENT}")
|
set(CPACK_RPM_PACKAGE_COMPONENT_PART_NAME "-${CPACK_RPM_PACKAGE_COMPONENT}")
|
||||||
|
string(TOUPPER ${CPACK_RPM_PACKAGE_COMPONENT} CPACK_RPM_PACKAGE_COMPONENT_UPPER)
|
||||||
else()
|
else()
|
||||||
set(CPACK_RPM_PACKAGE_COMPONENT_PART_NAME "")
|
set(CPACK_RPM_PACKAGE_COMPONENT_PART_NAME "")
|
||||||
endif()
|
endif()
|
||||||
|
@ -430,12 +434,31 @@ set(WDIR "${CPACK_TOPLEVEL_DIRECTORY}/${CPACK_PACKAGE_FILE_NAME}${CPACK_RPM_PACK
|
||||||
#
|
#
|
||||||
|
|
||||||
# CPACK_RPM_PACKAGE_SUMMARY (mandatory)
|
# 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)
|
||||||
|
if(CPACK_RPM_${CPACK_RPM_PACKAGE_COMPONENT}_PACKAGE_SUMMARY)
|
||||||
|
set(CPACK_RPM_PACKAGE_SUMMARY ${CPACK_RPM_${CPACK_RPM_PACKAGE_COMPONENT}_PACKAGE_SUMMARY})
|
||||||
|
endif()
|
||||||
|
endif()
|
||||||
|
|
||||||
if(NOT CPACK_RPM_PACKAGE_SUMMARY)
|
if(NOT CPACK_RPM_PACKAGE_SUMMARY)
|
||||||
# if neither var is defined lets use the name as summary
|
if(CPACK_RPM_PACKAGE_SUMMARY_)
|
||||||
if(NOT CPACK_PACKAGE_DESCRIPTION_SUMMARY)
|
set(CPACK_RPM_PACKAGE_SUMMARY ${CPACK_RPM_PACKAGE_SUMMARY_})
|
||||||
string(TOLOWER "${CPACK_PACKAGE_NAME}" CPACK_RPM_PACKAGE_SUMMARY)
|
elseif(CPACK_PACKAGE_DESCRIPTION_SUMMARY)
|
||||||
else()
|
|
||||||
set(CPACK_RPM_PACKAGE_SUMMARY ${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
|
||||||
|
string(TOLOWER "${CPACK_PACKAGE_NAME}" CPACK_RPM_PACKAGE_SUMMARY)
|
||||||
endif()
|
endif()
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
|
@ -508,12 +531,33 @@ endif()
|
||||||
# if it is defined
|
# if it is defined
|
||||||
# - set to a default value
|
# - set to a default value
|
||||||
#
|
#
|
||||||
if (NOT CPACK_RPM_PACKAGE_DESCRIPTION)
|
|
||||||
if (CPACK_PACKAGE_DESCRIPTION_FILE)
|
# CPACK_RPM_PACKAGE_DESCRIPTION_ is used only locally so that it can be unset each time before use otherwise
|
||||||
file(READ ${CPACK_PACKAGE_DESCRIPTION_FILE} CPACK_RPM_PACKAGE_DESCRIPTION)
|
# component packaging could leak variable content between components
|
||||||
else ()
|
unset(CPACK_RPM_PACKAGE_DESCRIPTION_)
|
||||||
set(CPACK_RPM_PACKAGE_DESCRIPTION "no package description available")
|
if(CPACK_RPM_PACKAGE_DESCRIPTION)
|
||||||
endif ()
|
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)
|
||||||
|
if(CPACK_RPM_${CPACK_RPM_PACKAGE_COMPONENT}_PACKAGE_DESCRIPTION)
|
||||||
|
set(CPACK_RPM_PACKAGE_DESCRIPTION ${CPACK_RPM_${CPACK_RPM_PACKAGE_COMPONENT}_PACKAGE_DESCRIPTION})
|
||||||
|
elseif(CPACK_COMPONENT_${CPACK_RPM_PACKAGE_COMPONENT_UPPER}_DESCRIPTION)
|
||||||
|
set(CPACK_RPM_PACKAGE_DESCRIPTION ${CPACK_COMPONENT_${CPACK_RPM_PACKAGE_COMPONENT_UPPER}_DESCRIPTION})
|
||||||
|
endif()
|
||||||
|
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)
|
||||||
|
file(READ ${CPACK_PACKAGE_DESCRIPTION_FILE} CPACK_RPM_PACKAGE_DESCRIPTION)
|
||||||
|
else ()
|
||||||
|
set(CPACK_RPM_PACKAGE_DESCRIPTION "no package description available")
|
||||||
|
endif ()
|
||||||
endif ()
|
endif ()
|
||||||
|
|
||||||
# CPACK_RPM_COMPRESSION_TYPE
|
# CPACK_RPM_COMPRESSION_TYPE
|
||||||
|
@ -1100,3 +1144,15 @@ else()
|
||||||
message(FATAL_ERROR "RPM packaging through alien not done (yet)")
|
message(FATAL_ERROR "RPM packaging through alien not done (yet)")
|
||||||
endif()
|
endif()
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
|
# 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()
|
||||||
|
|
|
@ -8,6 +8,13 @@ endif()
|
||||||
if(CPACK_GENERATOR MATCHES "RPM")
|
if(CPACK_GENERATOR MATCHES "RPM")
|
||||||
set(CPACK_RPM_COMPONENT_INSTALL "ON")
|
set(CPACK_RPM_COMPONENT_INSTALL "ON")
|
||||||
set(CPACK_RPM_applications_PACKAGE_REQUIRES "mylib-libraries")
|
set(CPACK_RPM_applications_PACKAGE_REQUIRES "mylib-libraries")
|
||||||
|
|
||||||
|
# test package summary override
|
||||||
|
set(CPACK_RPM_PACKAGE_SUMMARY "default summary")
|
||||||
|
set(CPACK_RPM_libraries_PACKAGE_SUMMARY "libraries summary")
|
||||||
|
|
||||||
|
# test package description override
|
||||||
|
set(CPACK_RPM_libraries_PACKAGE_DESCRIPTION "libraries description")
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
if(CPACK_GENERATOR MATCHES "DEB")
|
if(CPACK_GENERATOR MATCHES "DEB")
|
||||||
|
@ -20,4 +27,4 @@ endif()
|
||||||
#set(CPACK_COMPONENTS_ALL_GROUPS_IN_ONE_PACKAGE)
|
#set(CPACK_COMPONENTS_ALL_GROUPS_IN_ONE_PACKAGE)
|
||||||
#set(CPACK_COMPONENTS_GROUPING)
|
#set(CPACK_COMPONENTS_GROUPING)
|
||||||
set(CPACK_COMPONENTS_IGNORE_GROUPS 1)
|
set(CPACK_COMPONENTS_IGNORE_GROUPS 1)
|
||||||
#set(CPACK_COMPONENTS_ALL_IN_ONE_PACKAGE 1)
|
#set(CPACK_COMPONENTS_ALL_IN_ONE_PACKAGE 1)
|
||||||
|
|
|
@ -123,3 +123,62 @@ if(expected_file_mask)
|
||||||
message(FATAL_ERROR "error: expected_count=${expected_count} does not match actual_count=${actual_count}: CPackComponents test fails. (CPack_output=${CPack_output}, CPack_error=${CPack_error})")
|
message(FATAL_ERROR "error: expected_count=${expected_count} does not match actual_count=${actual_count}: CPackComponents test fails. (CPack_output=${CPack_output}, CPack_error=${CPack_error})")
|
||||||
endif()
|
endif()
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
|
# Validate content
|
||||||
|
if(CPackGen MATCHES "RPM")
|
||||||
|
find_program(RPM_EXECUTABLE rpm)
|
||||||
|
if(NOT RPM_EXECUTABLE)
|
||||||
|
message(FATAL_ERROR "error: missing rpm executable required by the test")
|
||||||
|
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_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")
|
||||||
|
|
||||||
|
if(${CPackComponentWay} STREQUAL "IgnoreGroup")
|
||||||
|
foreach(check_file ${expected_file})
|
||||||
|
string(REGEX MATCH ".*libraries.*" check_file_libraries_match ${check_file})
|
||||||
|
string(REGEX MATCH ".*headers.*" check_file_headers_match ${check_file})
|
||||||
|
string(REGEX MATCH ".*applications.*" check_file_applications_match ${check_file})
|
||||||
|
string(REGEX MATCH ".*Unspecified.*" check_file_Unspecified_match ${check_file})
|
||||||
|
|
||||||
|
execute_process(COMMAND ${RPM_EXECUTABLE} -pqi ${check_file}
|
||||||
|
OUTPUT_VARIABLE check_file_content
|
||||||
|
ERROR_QUIET
|
||||||
|
OUTPUT_STRIP_TRAILING_WHITESPACE)
|
||||||
|
|
||||||
|
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}.*")
|
||||||
|
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}.*")
|
||||||
|
elseif(check_file_applications_match)
|
||||||
|
set(check_file_match_expected_summary ".*${CPACK_RPM_PACKAGE_SUMMARY}.*")
|
||||||
|
set(check_file_match_expected_description ".*${CPACK_COMPONENT_APPLICATIONS_DESCRIPTION}.*")
|
||||||
|
elseif(check_file_Unspecified_match)
|
||||||
|
set(check_file_match_expected_summary ".*${CPACK_RPM_PACKAGE_SUMMARY}.*")
|
||||||
|
set(check_file_match_expected_description ".*DESCRIPTION.*")
|
||||||
|
else()
|
||||||
|
message(FATAL_ERROR "error: unexpected rpm package '${check_file}'")
|
||||||
|
endif()
|
||||||
|
|
||||||
|
string(REGEX MATCH ${check_file_match_expected_summary} check_file_match_summary ${check_file_content})
|
||||||
|
|
||||||
|
if(NOT check_file_match_summary)
|
||||||
|
message(FATAL_ERROR "error: '${check_file}' rpm package summary does not match expected value - regex '${check_file_match_expected_summary}'")
|
||||||
|
endif()
|
||||||
|
|
||||||
|
string(REGEX MATCH ${check_file_match_expected_description} check_file_match_description ${check_file_content})
|
||||||
|
|
||||||
|
if(NOT check_file_match_description)
|
||||||
|
message(FATAL_ERROR "error: '${check_file}' rpm package description does not match expected value - regex '${check_file_match_expected_description}'")
|
||||||
|
endif()
|
||||||
|
endforeach()
|
||||||
|
elseif(${CPackComponentWay} STREQUAL "IgnoreGroup")
|
||||||
|
endif()
|
||||||
|
endif()
|
||||||
|
|
Loading…
Reference in New Issue