Merge branch 'cpack_rpm_mulit_prefix_fixup' into cpack_rpm_mulit_prefix_fixup-for-master
Resolve conflict in Tests/CPackComponentsForAll/RunCPackVerifyResult.cmake by combining the changes from both sides.
This commit is contained in:
commit
3cf86d9e7b
|
@ -482,6 +482,7 @@ function(cpack_rpm_prepare_relocation_paths)
|
||||||
endif()
|
endif()
|
||||||
endforeach()
|
endforeach()
|
||||||
|
|
||||||
|
set(RPM_USED_PACKAGE_PREFIXES "${RPM_USED_PACKAGE_PREFIXES}" PARENT_SCOPE)
|
||||||
set(TMP_RPM_PREFIXES "${TMP_RPM_PREFIXES}" PARENT_SCOPE)
|
set(TMP_RPM_PREFIXES "${TMP_RPM_PREFIXES}" PARENT_SCOPE)
|
||||||
endfunction()
|
endfunction()
|
||||||
|
|
||||||
|
@ -964,16 +965,22 @@ set(CPACK_RPM_DIRECTORY "${CPACK_TOPLEVEL_DIRECTORY}")
|
||||||
# CPACK_RPM_PACKAGE_PREFIX. This is achieved by building a "filter list"
|
# CPACK_RPM_PACKAGE_PREFIX. This is achieved by building a "filter list"
|
||||||
# which is passed to the find command that generates the content-list
|
# which is passed to the find command that generates the content-list
|
||||||
if(CPACK_RPM_PACKAGE_RELOCATABLE)
|
if(CPACK_RPM_PACKAGE_RELOCATABLE)
|
||||||
# get a list of the elements in CPACK_RPM_PACKAGE_PREFIX and remove
|
# get a list of the elements in CPACK_RPM_PACKAGE_PREFIXES that are
|
||||||
# the final element (so the install-prefix dir itself is not omitted
|
# destinct parent paths of other relocation paths and remove the
|
||||||
|
# final element (so the install-prefix dir itself is not omitted
|
||||||
# from the RPM's content-list)
|
# from the RPM's content-list)
|
||||||
foreach(CPACK_RPM_PACKAGE_PREFIX ${RPM_PACKAGE_PREFIXES})
|
list(SORT RPM_USED_PACKAGE_PREFIXES)
|
||||||
string(REPLACE "/" ";" _CPACK_RPM_PACKAGE_PREFIX_ELEMS ".${CPACK_RPM_PACKAGE_PREFIX}")
|
set(_DISTINCT_PATH "NOT_SET")
|
||||||
|
foreach(_RPM_RELOCATION_PREFIX ${RPM_USED_PACKAGE_PREFIXES})
|
||||||
|
if(NOT "${_RPM_RELOCATION_PREFIX}" MATCHES "${_DISTINCT_PATH}/.*")
|
||||||
|
set(_DISTINCT_PATH "${_RPM_RELOCATION_PREFIX}")
|
||||||
|
|
||||||
|
string(REPLACE "/" ";" _CPACK_RPM_PACKAGE_PREFIX_ELEMS ".${_RPM_RELOCATION_PREFIX}")
|
||||||
list(REMOVE_AT _CPACK_RPM_PACKAGE_PREFIX_ELEMS -1)
|
list(REMOVE_AT _CPACK_RPM_PACKAGE_PREFIX_ELEMS -1)
|
||||||
unset(_TMP_LIST)
|
unset(_TMP_LIST)
|
||||||
# Now generate all of the parent dirs of CPACK_RPM_PACKAGE_PREFIX
|
# Now generate all of the parent dirs of the relocation path
|
||||||
foreach(_ELEM ${_CPACK_RPM_PACKAGE_PREFIX_ELEMS})
|
foreach(_PREFIX_PATH_ELEM ${_CPACK_RPM_PACKAGE_PREFIX_ELEMS})
|
||||||
list(APPEND _TMP_LIST "${_ELEM}")
|
list(APPEND _TMP_LIST "${_PREFIX_PATH_ELEM}")
|
||||||
string(REPLACE ";" "/" _OMIT_DIR "${_TMP_LIST}")
|
string(REPLACE ";" "/" _OMIT_DIR "${_TMP_LIST}")
|
||||||
list(FIND _RPM_DIRS_TO_OMIT "${_OMIT_DIR}" _DUPLICATE_FOUND)
|
list(FIND _RPM_DIRS_TO_OMIT "${_OMIT_DIR}" _DUPLICATE_FOUND)
|
||||||
if(_DUPLICATE_FOUND EQUAL -1)
|
if(_DUPLICATE_FOUND EQUAL -1)
|
||||||
|
@ -982,6 +989,7 @@ if(CPACK_RPM_PACKAGE_RELOCATABLE)
|
||||||
list(APPEND _RPM_DIRS_TO_OMIT ${_OMIT_DIR})
|
list(APPEND _RPM_DIRS_TO_OMIT ${_OMIT_DIR})
|
||||||
endif()
|
endif()
|
||||||
endforeach()
|
endforeach()
|
||||||
|
endif()
|
||||||
endforeach()
|
endforeach()
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
|
|
|
@ -6,9 +6,14 @@ if(CPACK_GENERATOR MATCHES "ZIP")
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
if(CPACK_GENERATOR MATCHES "RPM")
|
if(CPACK_GENERATOR MATCHES "RPM")
|
||||||
set(CPACK_PACKAGING_INSTALL_PREFIX "/usr")
|
|
||||||
|
|
||||||
set(CPACK_RPM_COMPONENT_INSTALL "ON")
|
set(CPACK_RPM_COMPONENT_INSTALL "ON")
|
||||||
|
|
||||||
|
# test that /usr and /usr/foo get omitted in relocatable
|
||||||
|
# rpms as shortest relocation path is treated as base of
|
||||||
|
# package (/usr/foo/bar is relocatable and must exist)
|
||||||
|
set(CPACK_PACKAGING_INSTALL_PREFIX "/usr/foo/bar")
|
||||||
|
|
||||||
|
# test requires
|
||||||
set(CPACK_RPM_applications_PACKAGE_REQUIRES "mylib-libraries")
|
set(CPACK_RPM_applications_PACKAGE_REQUIRES "mylib-libraries")
|
||||||
|
|
||||||
# test a "noarch" rpm
|
# test a "noarch" rpm
|
||||||
|
|
|
@ -145,7 +145,7 @@ if(CPackGen MATCHES "RPM")
|
||||||
# CMAKE_SIZEOF_VOID_P is not set here but lib is prefix of lib64 so
|
# CMAKE_SIZEOF_VOID_P is not set here but lib is prefix of lib64 so
|
||||||
# relocation path test won't fail on OSes with lib64 library location
|
# relocation path test won't fail on OSes with lib64 library location
|
||||||
include(GNUInstallDirs)
|
include(GNUInstallDirs)
|
||||||
set(CPACK_PACKAGING_INSTALL_PREFIX "/usr")
|
set(CPACK_PACKAGING_INSTALL_PREFIX "/usr/foo/bar")
|
||||||
|
|
||||||
foreach(check_file ${expected_file})
|
foreach(check_file ${expected_file})
|
||||||
string(REGEX MATCH ".*libraries.*" check_file_libraries_match ${check_file})
|
string(REGEX MATCH ".*libraries.*" check_file_libraries_match ${check_file})
|
||||||
|
@ -158,34 +158,48 @@ if(CPackGen MATCHES "RPM")
|
||||||
ERROR_QUIET
|
ERROR_QUIET
|
||||||
OUTPUT_STRIP_TRAILING_WHITESPACE)
|
OUTPUT_STRIP_TRAILING_WHITESPACE)
|
||||||
|
|
||||||
|
execute_process(COMMAND ${RPM_EXECUTABLE} -pql ${check_file}
|
||||||
|
OUTPUT_VARIABLE check_package_content
|
||||||
|
ERROR_QUIET
|
||||||
|
OUTPUT_STRIP_TRAILING_WHITESPACE)
|
||||||
|
|
||||||
if(check_file_libraries_match)
|
if(check_file_libraries_match)
|
||||||
set(check_file_match_expected_summary ".*${CPACK_RPM_libraries_PACKAGE_SUMMARY}.*")
|
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_description ".*${CPACK_RPM_libraries_PACKAGE_DESCRIPTION}.*")
|
||||||
set(check_file_match_expected_relocation_path "Relocations : ${CPACK_PACKAGING_INSTALL_PREFIX} ${CPACK_PACKAGING_INSTALL_PREFIX}/${CMAKE_INSTALL_LIBDIR}")
|
set(check_file_match_expected_relocation_path "Relocations : ${CPACK_PACKAGING_INSTALL_PREFIX} ${CPACK_PACKAGING_INSTALL_PREFIX}/${CMAKE_INSTALL_LIBDIR}")
|
||||||
set(check_file_match_expected_architecture "Architecture: ${CPACK_RPM_applications_PACKAGE_ARCHITECTURE}")
|
set(check_file_match_expected_architecture "Architecture: ${CPACK_RPM_applications_PACKAGE_ARCHITECTURE}")
|
||||||
set(spec_regex "*libraries*")
|
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)
|
elseif(check_file_headers_match)
|
||||||
set(check_file_match_expected_summary ".*${CPACK_RPM_PACKAGE_SUMMARY}.*")
|
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_description ".*${CPACK_COMPONENT_HEADERS_DESCRIPTION}.*")
|
||||||
set(check_file_match_expected_relocation_path "Relocations : ${CPACK_PACKAGING_INSTALL_PREFIX} ${CPACK_PACKAGING_INSTALL_PREFIX}/${CMAKE_INSTALL_INCLUDEDIR}")
|
set(check_file_match_expected_relocation_path "Relocations : ${CPACK_PACKAGING_INSTALL_PREFIX} ${CPACK_PACKAGING_INSTALL_PREFIX}/${CMAKE_INSTALL_INCLUDEDIR}")
|
||||||
set(check_file_match_expected_architecture "Architecture: ${CPACK_RPM_libraries_PACKAGE_ARCHITECTURE}")
|
set(check_file_match_expected_architecture "Architecture: ${CPACK_RPM_libraries_PACKAGE_ARCHITECTURE}")
|
||||||
set(spec_regex "*headers*")
|
set(spec_regex "*headers*")
|
||||||
|
set(check_content_list "^/usr/foo/bar\n/usr/foo/bar/include\n/usr/foo/bar/include/mylib.h$")
|
||||||
elseif(check_file_applications_match)
|
elseif(check_file_applications_match)
|
||||||
set(check_file_match_expected_summary ".*${CPACK_RPM_PACKAGE_SUMMARY}.*")
|
set(check_file_match_expected_summary ".*${CPACK_RPM_PACKAGE_SUMMARY}.*")
|
||||||
set(check_file_match_expected_description ".*${CPACK_COMPONENT_APPLICATIONS_DESCRIPTION}.*")
|
set(check_file_match_expected_description ".*${CPACK_COMPONENT_APPLICATIONS_DESCRIPTION}.*")
|
||||||
set(check_file_match_expected_relocation_path "Relocations : ${CPACK_PACKAGING_INSTALL_PREFIX} ${CPACK_PACKAGING_INSTALL_PREFIX}/${CMAKE_INSTALL_BINDIR}")
|
set(check_file_match_expected_relocation_path "Relocations : ${CPACK_PACKAGING_INSTALL_PREFIX} ${CPACK_PACKAGING_INSTALL_PREFIX}/${CMAKE_INSTALL_BINDIR}")
|
||||||
set(check_file_match_expected_architecture "Architecture: ${CPACK_RPM_headers_PACKAGE_ARCHITECTURE}")
|
set(check_file_match_expected_architecture "Architecture: ${CPACK_RPM_headers_PACKAGE_ARCHITECTURE}")
|
||||||
set(spec_regex "*applications*")
|
set(spec_regex "*applications*")
|
||||||
|
set(check_content_list "^/usr/foo/bar\n/usr/foo/bar/bin\n/usr/foo/bar/bin/mylibapp$")
|
||||||
elseif(check_file_Unspecified_match)
|
elseif(check_file_Unspecified_match)
|
||||||
set(check_file_match_expected_summary ".*${CPACK_RPM_PACKAGE_SUMMARY}.*")
|
set(check_file_match_expected_summary ".*${CPACK_RPM_PACKAGE_SUMMARY}.*")
|
||||||
set(check_file_match_expected_description ".*DESCRIPTION.*")
|
set(check_file_match_expected_description ".*DESCRIPTION.*")
|
||||||
set(check_file_match_expected_relocation_path "Relocations : ${CPACK_PACKAGING_INSTALL_PREFIX} ${CPACK_PACKAGING_INSTALL_PREFIX}/${CMAKE_INSTALL_BINDIR}")
|
set(check_file_match_expected_relocation_path "Relocations : ${CPACK_PACKAGING_INSTALL_PREFIX} ${CPACK_PACKAGING_INSTALL_PREFIX}/${CMAKE_INSTALL_BINDIR}")
|
||||||
set(check_file_match_expected_architecture "Architecture: ${CPACK_RPM_Unspecified_PACKAGE_ARCHITECTURE}")
|
set(check_file_match_expected_architecture "Architecture: ${CPACK_RPM_Unspecified_PACKAGE_ARCHITECTURE}")
|
||||||
set(spec_regex "*Unspecified*")
|
set(spec_regex "*Unspecified*")
|
||||||
|
set(check_content_list "^/usr/foo/bar
|
||||||
|
/usr/foo/bar/bin
|
||||||
|
/usr/foo/bar/bin/mylibapp2$")
|
||||||
else()
|
else()
|
||||||
message(FATAL_ERROR "error: unexpected rpm package '${check_file}'")
|
message(FATAL_ERROR "error: unexpected rpm package '${check_file}'")
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
|
#######################
|
||||||
|
# test package info
|
||||||
|
#######################
|
||||||
string(REGEX MATCH ${check_file_match_expected_summary} check_file_match_summary ${check_file_content})
|
string(REGEX MATCH ${check_file_match_expected_summary} check_file_match_summary ${check_file_content})
|
||||||
|
|
||||||
if(NOT check_file_match_summary)
|
if(NOT check_file_match_summary)
|
||||||
|
@ -209,10 +223,26 @@ if(CPackGen MATCHES "RPM")
|
||||||
|
|
||||||
message(FATAL_ERROR "error: '${check_file}' rpm package relocation path does not match expected value - regex '${check_file_match_expected_relocation_path}'; RPM output: '${check_file_content}'; generated spec file: '${spec_file_content}'")
|
message(FATAL_ERROR "error: '${check_file}' rpm package relocation path does not match expected value - regex '${check_file_match_expected_relocation_path}'; RPM output: '${check_file_content}'; generated spec file: '${spec_file_content}'")
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
string(REGEX MATCH ${check_file_match_expected_architecture} check_file_match_architecture ${check_file_content})
|
string(REGEX MATCH ${check_file_match_expected_architecture} check_file_match_architecture ${check_file_content})
|
||||||
if (NOT check_file_match_architecture)
|
if (NOT check_file_match_architecture)
|
||||||
message(FATAL_ERROR "error: '${check_file}' Architecture does not match expected value - '${check_file_match_expected_architecture}'; RPM output: '${check_file_content}'; generated spec file: '${spec_file_content}'")
|
message(FATAL_ERROR "error: '${check_file}' Architecture does not match expected value - '${check_file_match_expected_architecture}'; RPM output: '${check_file_content}'; generated spec file: '${spec_file_content}'")
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
|
#######################
|
||||||
|
# test package content
|
||||||
|
#######################
|
||||||
|
string(REGEX MATCH "${check_content_list}" expected_content_list "${check_package_content}")
|
||||||
|
|
||||||
|
if(NOT expected_content_list)
|
||||||
|
file(GLOB_RECURSE spec_file "${CPackComponentsForAll_BINARY_DIR}/${spec_regex}.spec")
|
||||||
|
|
||||||
|
if(spec_file)
|
||||||
|
file(READ ${spec_file} spec_file_content)
|
||||||
|
endif()
|
||||||
|
|
||||||
|
message(FATAL_ERROR "error: '${check_file}' rpm package content does not match expected value - regex '${check_content_list}'; RPM output: '${check_package_content}'; generated spec file: '${spec_file_content}'")
|
||||||
|
endif()
|
||||||
endforeach()
|
endforeach()
|
||||||
|
|
||||||
# test package content
|
# test package content
|
||||||
|
|
Loading…
Reference in New Issue