Helpers.cmake 3.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394
  1. set(ALL_FILES_GLOB "*.rpm")
  2. function(getPackageContent FILE RESULT_VAR)
  3. execute_process(COMMAND ${RPM_EXECUTABLE} -pql ${FILE}
  4. OUTPUT_VARIABLE package_content_
  5. ERROR_QUIET
  6. OUTPUT_STRIP_TRAILING_WHITESPACE)
  7. set(${RESULT_VAR} "${package_content_}" PARENT_SCOPE)
  8. endfunction()
  9. function(getPackageNameGlobexpr NAME COMPONENT VERSION REVISION FILE_NO RESULT_VAR)
  10. if(COMPONENT)
  11. set(COMPONENT "-${COMPONENT}")
  12. endif()
  13. if(DEFINED EXPECTED_FILE_${FILE_NO}_FILENAME_GENERATOR_SPECIFIC_FORMAT)
  14. set(GENERATOR_SPECIFIC_FORMAT "${EXPECTED_FILE_${FILE_NO}_FILENAME_GENERATOR_SPECIFIC_FORMAT}")
  15. elseif(DEFINED EXPECTED_FILES_NAME_GENERATOR_SPECIFIC_FORMAT)
  16. set(GENERATOR_SPECIFIC_FORMAT "${EXPECTED_FILES_NAME_GENERATOR_SPECIFIC_FORMAT}")
  17. else()
  18. set(GENERATOR_SPECIFIC_FORMAT FALSE)
  19. endif()
  20. if(GENERATOR_SPECIFIC_FORMAT)
  21. if(NOT REVISION)
  22. set(REVISION "1")
  23. endif()
  24. set(${RESULT_VAR} "${NAME}${COMPONENT}-${VERSION}-${REVISION}.*.rpm" PARENT_SCOPE)
  25. else()
  26. set(${RESULT_VAR} "${NAME}-${VERSION}-*${COMPONENT}.rpm" PARENT_SCOPE)
  27. endif()
  28. endfunction()
  29. function(getPackageContentList FILE RESULT_VAR)
  30. execute_process(COMMAND ${RPM_EXECUTABLE} -pql ${FILE}
  31. OUTPUT_VARIABLE package_content_
  32. ERROR_QUIET
  33. OUTPUT_STRIP_TRAILING_WHITESPACE)
  34. string(REGEX REPLACE "\n" ";" package_content_ "${package_content_}")
  35. # never versions of rpmbuild (introduced in rpm 4.13.0.1) add build_id links
  36. # to packages - tests should ignore them
  37. list(FILTER package_content_ EXCLUDE REGEX ".*\.build-id.*")
  38. set(${RESULT_VAR} "${package_content_}" PARENT_SCOPE)
  39. endfunction()
  40. function(toExpectedContentList FILE_NO CONTENT_VAR)
  41. # add install prefix to expected paths
  42. if(DEFINED EXPECTED_FILE_${FILE_NO}_PACKAGING_PREFIX)
  43. set(EXPECTED_FILE_PACKAGING_PREFIX
  44. "${EXPECTED_FILE_${FILE_NO}_PACKAGING_PREFIX}")
  45. elseif(NOT DEFINED EXPECTED_FILE_PACKAGING_PREFIX)
  46. # default CPackRPM packaging install prefix
  47. set(EXPECTED_FILE_PACKAGING_PREFIX "/usr")
  48. endif()
  49. set(prepared_ "${EXPECTED_FILE_PACKAGING_PREFIX}")
  50. foreach(part_ IN LISTS ${CONTENT_VAR})
  51. list(APPEND prepared_ "${EXPECTED_FILE_PACKAGING_PREFIX}${part_}")
  52. endforeach()
  53. # remove paths that are excluded from auto packaging
  54. if(NOT DEFINED CPACK_RPM_EXCLUDE_FROM_AUTO_FILELIST)
  55. set(CPACK_RPM_EXCLUDE_FROM_AUTO_FILELIST
  56. /etc /etc/init.d /usr /usr/bin /usr/include /usr/lib
  57. /usr/libx32 /usr/lib64 /usr/share /usr/share/aclocal /usr/share/doc)
  58. endif()
  59. unset(filtered_)
  60. foreach(part_ IN LISTS prepared_)
  61. unset(dont_add_)
  62. foreach(for_removal_ IN LISTS CPACK_RPM_EXCLUDE_FROM_AUTO_FILELIST)
  63. if(part_ STREQUAL for_removal_)
  64. set(dont_add_ TRUE)
  65. break()
  66. endif()
  67. endforeach()
  68. if(NOT dont_add_)
  69. list(APPEND filtered_ "${part_}")
  70. endif()
  71. endforeach()
  72. set(${CONTENT_VAR} "${filtered_}" PARENT_SCOPE)
  73. endfunction()
  74. function(getPackageInfo FILE RESULT_VAR)
  75. execute_process(COMMAND ${RPM_EXECUTABLE} -pqi ${FILE}
  76. OUTPUT_VARIABLE info_content
  77. ERROR_QUIET
  78. OUTPUT_STRIP_TRAILING_WHITESPACE)
  79. set(${RESULT_VAR} "${info_content}" PARENT_SCOPE)
  80. endfunction()