diff options
author | Domen Vrankar <domen.vrankar@gmail.com> | 2015-02-26 23:33:48 (GMT) |
---|---|---|
committer | Brad King <brad.king@kitware.com> | 2015-02-27 13:37:24 (GMT) |
commit | 1cbb15625304b01e8a99a956fa42e4b7011fea48 (patch) | |
tree | 9653f71ef5c96b4b344ace4fb8612b29be0ca0ae /Tests | |
parent | be36bfd65d53962c7ba975382bd911e0857f6a33 (diff) | |
download | CMake-1cbb15625304b01e8a99a956fa42e4b7011fea48.zip CMake-1cbb15625304b01e8a99a956fa42e4b7011fea48.tar.gz CMake-1cbb15625304b01e8a99a956fa42e4b7011fea48.tar.bz2 |
CPackRPM: Fix handling of relocation prefix parent directories
In commit 3ec02547 (CPackRPM: Allow multiple path relocation prefixes
for one package, 2015-01-21) a regression was introduced that causes
parent directories of relocation paths to be incorrectly included in
the rpm. Fix this and make the test case more strict to cover it.
Diffstat (limited to 'Tests')
-rw-r--r-- | Tests/CPackComponentsForAll/MyLibCPackConfig-IgnoreGroup.cmake.in | 9 | ||||
-rw-r--r-- | Tests/CPackComponentsForAll/RunCPackVerifyResult.cmake | 31 |
2 files changed, 37 insertions, 3 deletions
diff --git a/Tests/CPackComponentsForAll/MyLibCPackConfig-IgnoreGroup.cmake.in b/Tests/CPackComponentsForAll/MyLibCPackConfig-IgnoreGroup.cmake.in index de0ee46..e20f11a 100644 --- a/Tests/CPackComponentsForAll/MyLibCPackConfig-IgnoreGroup.cmake.in +++ b/Tests/CPackComponentsForAll/MyLibCPackConfig-IgnoreGroup.cmake.in @@ -6,9 +6,14 @@ if(CPACK_GENERATOR MATCHES "ZIP") endif() if(CPACK_GENERATOR MATCHES "RPM") - set(CPACK_PACKAGING_INSTALL_PREFIX "/usr") - 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") # test package summary override diff --git a/Tests/CPackComponentsForAll/RunCPackVerifyResult.cmake b/Tests/CPackComponentsForAll/RunCPackVerifyResult.cmake index 68d846f..69af374 100644 --- a/Tests/CPackComponentsForAll/RunCPackVerifyResult.cmake +++ b/Tests/CPackComponentsForAll/RunCPackVerifyResult.cmake @@ -144,7 +144,7 @@ if(CPackGen MATCHES "RPM") # 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 include(GNUInstallDirs) - set(CPACK_PACKAGING_INSTALL_PREFIX "/usr") + set(CPACK_PACKAGING_INSTALL_PREFIX "/usr/foo/bar") foreach(check_file ${expected_file}) string(REGEX MATCH ".*libraries.*" check_file_libraries_match ${check_file}) @@ -157,30 +157,44 @@ if(CPackGen MATCHES "RPM") ERROR_QUIET 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) 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_relocation_path "Relocations : ${CPACK_PACKAGING_INSTALL_PREFIX} ${CPACK_PACKAGING_INSTALL_PREFIX}/${CMAKE_INSTALL_LIBDIR}") 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_relocation_path "Relocations : ${CPACK_PACKAGING_INSTALL_PREFIX} ${CPACK_PACKAGING_INSTALL_PREFIX}/${CMAKE_INSTALL_INCLUDEDIR}") 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) 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_relocation_path "Relocations : ${CPACK_PACKAGING_INSTALL_PREFIX} ${CPACK_PACKAGING_INSTALL_PREFIX}/${CMAKE_INSTALL_BINDIR}") 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) set(check_file_match_expected_summary ".*${CPACK_RPM_PACKAGE_SUMMARY}.*") 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(spec_regex "*Unspecified*") + set(check_content_list "^/usr/foo/bar +/usr/foo/bar/bin +/usr/foo/bar/bin/mylibapp2$") else() message(FATAL_ERROR "error: unexpected rpm package '${check_file}'") endif() + ####################### + # test package info + ####################### string(REGEX MATCH ${check_file_match_expected_summary} check_file_match_summary ${check_file_content}) if(NOT check_file_match_summary) @@ -204,6 +218,21 @@ 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}'") 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() elseif(${CPackComponentWay} STREQUAL "IgnoreGroup") endif() |