[Cmake-commits] CMake branch, next, updated. v3.2.0-rc2-769-g0770323

Domen Vrankar domen.vrankar at gmail.com
Thu Feb 26 18:40:26 EST 2015


This is an automated email from the git hooks/post-receive script. It was
generated because a ref change was pushed to the repository containing
the project "CMake".

The branch, next has been updated
       via  07703234998b0d9bc1adf0c3db79711ccf51f0a7 (commit)
       via  b1cc97b31c125579f6aa84b513226966339ff787 (commit)
       via  3a481dc2defc6a00f135ddfbd105b26d4bc60227 (commit)
      from  d476ca2703ac95d271d0f5834714a34e5e5dc243 (commit)

Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we list those
revisions in full, below.

- Log -----------------------------------------------------------------
http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=07703234998b0d9bc1adf0c3db79711ccf51f0a7
commit 07703234998b0d9bc1adf0c3db79711ccf51f0a7
Merge: d476ca2 b1cc97b
Author:     Domen Vrankar <domen.vrankar at gmail.com>
AuthorDate: Thu Feb 26 18:40:25 2015 -0500
Commit:     CMake Topic Stage <kwrobot at kitware.com>
CommitDate: Thu Feb 26 18:40:25 2015 -0500

    Merge topic 'fixup_rpm_relocation_paths_regression' into next
    
    b1cc97b3 fixup! CPack/RPM: multiple relocation paths
    3a481dc2 fixup! CPack/RPM: multiple relocation paths


http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=b1cc97b31c125579f6aa84b513226966339ff787
commit b1cc97b31c125579f6aa84b513226966339ff787
Author:     Domen Vrankar <domen.vrankar at gmail.com>
AuthorDate: Fri Feb 27 00:36:25 2015 +0100
Commit:     Domen Vrankar <domen.vrankar at gmail.com>
CommitDate: Fri Feb 27 00:36:25 2015 +0100

    fixup! CPack/RPM: multiple relocation paths
    
    The rest of the parent directory regression
    patch that adds current next branch RPM test
    paths and removes older package content test
    that is now obsoleted by the new tests from
    this patch.

diff --git a/Tests/CPackComponentsForAll/RunCPackVerifyResult.cmake b/Tests/CPackComponentsForAll/RunCPackVerifyResult.cmake
index 9b9ca0a..c7ec709 100644
--- a/Tests/CPackComponentsForAll/RunCPackVerifyResult.cmake
+++ b/Tests/CPackComponentsForAll/RunCPackVerifyResult.cmake
@@ -192,7 +192,11 @@ if(CPackGen MATCHES "RPM")
         set(spec_regex "*Unspecified*")
         set(check_content_list "^/usr/foo/bar
 /usr/foo/bar/bin
-/usr/foo/bar/bin/mylibapp2$")
+/usr/foo/bar/bin/@in at _@path@@with
+/usr/foo/bar/bin/@in at _@path@@with/@and
+/usr/foo/bar/bin/@in at _@path@@with/@and/@
+/usr/foo/bar/bin/@in at _@path@@with/@and/@/@in_path@
+/usr/foo/bar/bin/@in at _@path@@with/@and/@/@in_path@/mylibapp2$")
       else()
         message(FATAL_ERROR "error: unexpected rpm package '${check_file}'")
       endif()
@@ -244,29 +248,5 @@ if(CPackGen MATCHES "RPM")
         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()
-
-    # test package content
-    foreach(check_file ${expected_file})
-      string(REGEX MATCH ".*Unspecified.*" check_file_Unspecified_match ${check_file})
-
-      if(check_file_Unspecified_match)
-        execute_process(COMMAND ${RPM_EXECUTABLE} -pql ${check_file}
-            OUTPUT_VARIABLE check_file_content
-            ERROR_QUIET
-            OUTPUT_STRIP_TRAILING_WHITESPACE)
-
-        string(REGEX MATCH ".*bin/@in at _@path@@with/@and/@/@in_path@/mylibapp2$" check_at_in_path ${check_file_content})
-
-        if(NOT check_at_in_path)
-          file(GLOB_RECURSE spec_file "${CPackComponentsForAll_BINARY_DIR}/*Unspecified*.spec")
-
-          if(spec_file)
-            file(READ ${spec_file} spec_file_content)
-          endif()
-
-          message(FATAL_ERROR "error: '${check_file}' rpm package path with @ characters is missing or invalid. RPM output: '${check_file_content}'; generated spec file: '${spec_file_content}'")
-        endif()
-      endif()
-    endforeach()
   endif()
 endif()

http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=3a481dc2defc6a00f135ddfbd105b26d4bc60227
commit 3a481dc2defc6a00f135ddfbd105b26d4bc60227
Author:     Domen Vrankar <domen.vrankar at gmail.com>
AuthorDate: Fri Feb 27 00:33:48 2015 +0100
Commit:     Domen Vrankar <domen.vrankar at gmail.com>
CommitDate: Fri Feb 27 00:33:48 2015 +0100

    fixup! CPack/RPM: multiple relocation paths
    
    Patch for CMake 3.2.0-rc2
    A regression was introduced with multiple
    relocation paths patch. Before the patch
    directories that were parents of relocation
    path were omitted from rpm. This patch fixes
    the regression and adds stricter regression
    tests that cover this case.

diff --git a/Modules/CPackRPM.cmake b/Modules/CPackRPM.cmake
index cb987f8..fce8236 100644
--- a/Modules/CPackRPM.cmake
+++ b/Modules/CPackRPM.cmake
@@ -482,6 +482,7 @@ function(cpack_rpm_prepare_relocation_paths)
     endif()
   endforeach()
 
+  set(RPM_USED_PACKAGE_PREFIXES "${RPM_USED_PACKAGE_PREFIXES}" PARENT_SCOPE)
   set(TMP_RPM_PREFIXES "${TMP_RPM_PREFIXES}" PARENT_SCOPE)
 endfunction()
 
@@ -964,24 +965,31 @@ set(CPACK_RPM_DIRECTORY "${CPACK_TOPLEVEL_DIRECTORY}")
 # CPACK_RPM_PACKAGE_PREFIX. This is achieved by building a "filter list"
 # which is passed to the find command that generates the content-list
 if(CPACK_RPM_PACKAGE_RELOCATABLE)
-  # get a list of the elements in CPACK_RPM_PACKAGE_PREFIX and remove
-  # the final element (so the install-prefix dir itself is not omitted
+  # get a list of the elements in CPACK_RPM_PACKAGE_PREFIXES that are
+  # 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)
-  foreach(CPACK_RPM_PACKAGE_PREFIX ${RPM_PACKAGE_PREFIXES})
-    string(REPLACE "/" ";" _CPACK_RPM_PACKAGE_PREFIX_ELEMS ".${CPACK_RPM_PACKAGE_PREFIX}")
-    list(REMOVE_AT _CPACK_RPM_PACKAGE_PREFIX_ELEMS -1)
-    unset(_TMP_LIST)
-    # Now generate all of the parent dirs of CPACK_RPM_PACKAGE_PREFIX
-    foreach(_ELEM ${_CPACK_RPM_PACKAGE_PREFIX_ELEMS})
-      list(APPEND _TMP_LIST "${_ELEM}")
-      string(REPLACE ";" "/" _OMIT_DIR "${_TMP_LIST}")
-      list(FIND _RPM_DIRS_TO_OMIT "${_OMIT_DIR}" _DUPLICATE_FOUND)
-      if(_DUPLICATE_FOUND EQUAL -1)
-        set(_OMIT_DIR "-o -path ${_OMIT_DIR}")
-        separate_arguments(_OMIT_DIR)
-        list(APPEND _RPM_DIRS_TO_OMIT ${_OMIT_DIR})
-      endif()
-    endforeach()
+  list(SORT RPM_USED_PACKAGE_PREFIXES)
+  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)
+      unset(_TMP_LIST)
+      # Now generate all of the parent dirs of the relocation path
+      foreach(_PREFIX_PATH_ELEM ${_CPACK_RPM_PACKAGE_PREFIX_ELEMS})
+        list(APPEND _TMP_LIST "${_PREFIX_PATH_ELEM}")
+        string(REPLACE ";" "/" _OMIT_DIR "${_TMP_LIST}")
+        list(FIND _RPM_DIRS_TO_OMIT "${_OMIT_DIR}" _DUPLICATE_FOUND)
+        if(_DUPLICATE_FOUND EQUAL -1)
+          set(_OMIT_DIR "-o -path ${_OMIT_DIR}")
+          separate_arguments(_OMIT_DIR)
+          list(APPEND _RPM_DIRS_TO_OMIT ${_OMIT_DIR})
+        endif()
+      endforeach()
+    endif()
   endforeach()
 endif()
 
diff --git a/Tests/CPackComponentsForAll/MyLibCPackConfig-IgnoreGroup.cmake.in b/Tests/CPackComponentsForAll/MyLibCPackConfig-IgnoreGroup.cmake.in
index 4119b8d..e4780d3 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 a "noarch" rpm
diff --git a/Tests/CPackComponentsForAll/RunCPackVerifyResult.cmake b/Tests/CPackComponentsForAll/RunCPackVerifyResult.cmake
index f06605a..9b9ca0a 100644
--- a/Tests/CPackComponentsForAll/RunCPackVerifyResult.cmake
+++ b/Tests/CPackComponentsForAll/RunCPackVerifyResult.cmake
@@ -145,7 +145,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})
@@ -158,34 +158,48 @@ 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(check_file_match_expected_architecture "Architecture: ${CPACK_RPM_applications_PACKAGE_ARCHITECTURE}")
         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(check_file_match_expected_architecture "Architecture: ${CPACK_RPM_libraries_PACKAGE_ARCHITECTURE}")
         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(check_file_match_expected_architecture "Architecture: ${CPACK_RPM_headers_PACKAGE_ARCHITECTURE}")
         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(check_file_match_expected_architecture "Architecture: ${CPACK_RPM_Unspecified_PACKAGE_ARCHITECTURE}")
         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)
@@ -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}'")
       endif()
+
       string(REGEX MATCH ${check_file_match_expected_architecture} check_file_match_architecture ${check_file_content})
       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}'")
       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()
 
     # test package content

-----------------------------------------------------------------------

Summary of changes:
 Modules/CPackRPM.cmake                             |   42 +++++++++-------
 .../MyLibCPackConfig-IgnoreGroup.cmake.in          |    9 +++-
 .../RunCPackVerifyResult.cmake                     |   50 ++++++++++++--------
 3 files changed, 62 insertions(+), 39 deletions(-)


hooks/post-receive
-- 
CMake


More information about the Cmake-commits mailing list