VerifyResult.cmake 5.0 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182
  1. if(GENERATOR_TYPE STREQUAL "DEB")
  2. function(checkDependencies_ FILE REGEX)
  3. set(whitespaces_ "[\t\n\r ]*")
  4. getPackageInfo("${FILE}" "FILE_INFO_")
  5. if(NOT FILE_INFO_ MATCHES "${REGEX}")
  6. message(FATAL_ERROR "Unexpected dependencies in '${FILE}'; file info: '${FILE_INFO_}'")
  7. endif()
  8. endfunction()
  9. foreach(dependency_type_ DEPENDS CONFLICTS ENHANCES BREAKS REPLACES RECOMMENDS SUGGESTS)
  10. string(TOLOWER "${dependency_type_}" lower_dependency_type_)
  11. string(SUBSTRING ${lower_dependency_type_} 1 -1 lower_dependency_type_tail_)
  12. string(SUBSTRING ${dependency_type_} 0 1 dependency_type_head_)
  13. set(dependency_type_name_ "${dependency_type_head_}${lower_dependency_type_tail_}")
  14. checkDependencies_("${FOUND_FILE_1}" ".*${dependency_type_name_}${whitespaces_}:${whitespaces_}${lower_dependency_type_}-application, ${lower_dependency_type_}-application-b.*")
  15. checkDependencies_("${FOUND_FILE_2}" ".*${dependency_type_name_}${whitespaces_}:${whitespaces_}.*${lower_dependency_type_}-application, ${lower_dependency_type_}-application-b.*")
  16. checkDependencies_("${FOUND_FILE_3}" ".*${dependency_type_name_}${whitespaces_}:${whitespaces_}${lower_dependency_type_}-headers.*")
  17. checkDependencies_("${FOUND_FILE_4}" ".*${dependency_type_name_}${whitespaces_}:${whitespaces_}${lower_dependency_type_}-default, ${lower_dependency_type_}-default-b.*")
  18. checkDependencies_("${FOUND_FILE_5}" ".*${dependency_type_name_}${whitespaces_}:${whitespaces_}${lower_dependency_type_}-default, ${lower_dependency_type_}-default-b.*")
  19. endforeach()
  20. checkDependencies_("${FOUND_FILE_1}" ".*Provides${whitespaces_}:${whitespaces_}provided-default, provided-default-b")
  21. checkDependencies_("${FOUND_FILE_2}" ".*Provides${whitespaces_}:${whitespaces_}provided-default, provided-default-b")
  22. checkDependencies_("${FOUND_FILE_3}" ".*Provides${whitespaces_}:${whitespaces_}provided-default, provided-default-b")
  23. checkDependencies_("${FOUND_FILE_4}" ".*Provides${whitespaces_}:${whitespaces_}provided-lib.*")
  24. checkDependencies_("${FOUND_FILE_5}" ".*Provides${whitespaces_}:${whitespaces_}provided-lib_auto.*, provided-lib_auto-b.*")
  25. # PREDEPENDS
  26. checkDependencies_("${FOUND_FILE_1}" ".*Pre-Depends${whitespaces_}:${whitespaces_}predepends-application, predepends-application-b.*")
  27. checkDependencies_("${FOUND_FILE_2}" ".*Pre-Depends${whitespaces_}:${whitespaces_}.*predepends-application, predepends-application-b.*")
  28. checkDependencies_("${FOUND_FILE_3}" ".*Pre-Depends${whitespaces_}:${whitespaces_}predepends-headers.*")
  29. checkDependencies_("${FOUND_FILE_4}" ".*Pre-Depends${whitespaces_}:${whitespaces_}predepends-default, predepends-default-b.*")
  30. checkDependencies_("${FOUND_FILE_5}" ".*Pre-Depends${whitespaces_}:${whitespaces_}predepends-default, predepends-default-b.*")
  31. elseif(GENERATOR_TYPE STREQUAL "RPM")
  32. function(checkDependencies_ FILE TYPE COMPARE_LIST)
  33. set(whitespaces_ "[\t\n\r ]*")
  34. execute_process(COMMAND ${RPM_EXECUTABLE} -qp --${TYPE} ${FILE}
  35. WORKING_DIRECTORY "${CPACK_TEMPORARY_DIRECTORY}"
  36. OUTPUT_VARIABLE FILE_DEPENDENCIES_
  37. ERROR_QUIET
  38. OUTPUT_STRIP_TRAILING_WHITESPACE)
  39. string(REPLACE "\n" ";" FILE_DEPENDENCIES_LIST_ "${FILE_DEPENDENCIES_}")
  40. foreach(COMPARE_REGEX_ IN LISTS COMPARE_LIST)
  41. unset(FOUND_)
  42. foreach(COMPARE_ IN LISTS FILE_DEPENDENCIES_LIST_)
  43. if(COMPARE_ MATCHES "${COMPARE_REGEX_}")
  44. set(FOUND_ true)
  45. break()
  46. endif()
  47. endforeach()
  48. if(NOT FOUND_)
  49. message(FATAL_ERROR "Missing dependencies in '${FILE}'; check type: '${TYPE}'; file info: '${FILE_DEPENDENCIES_}'; missing: '${COMPARE_REGEX_}'")
  50. endif()
  51. endforeach()
  52. endfunction()
  53. # TODO add tests for what should not be present in lists
  54. checkDependencies_("${FOUND_FILE_1}" "requires" "depend-application;depend-application-b")
  55. checkDependencies_("${FOUND_FILE_2}" "requires" "depend-application;depend-application-b;libtest_lib\\.so.*")
  56. checkDependencies_("${FOUND_FILE_3}" "requires" "depend-headers")
  57. checkDependencies_("${FOUND_FILE_4}" "requires" "depend-default;depend-default-b")
  58. checkDependencies_("${FOUND_FILE_5}" "requires" "depend-default;depend-default-b")
  59. checkDependencies_("${FOUND_FILE_1}" "conflicts" "conflicts-application;conflicts-application-b")
  60. checkDependencies_("${FOUND_FILE_2}" "conflicts" "conflicts-application;conflicts-application-b")
  61. checkDependencies_("${FOUND_FILE_3}" "conflicts" "conflicts-headers")
  62. checkDependencies_("${FOUND_FILE_4}" "conflicts" "conflicts-default;conflicts-default-b")
  63. checkDependencies_("${FOUND_FILE_5}" "conflicts" "conflicts-default;conflicts-default-b")
  64. checkDependencies_("${FOUND_FILE_1}" "provides" "provided-default;provided-default-b")
  65. checkDependencies_("${FOUND_FILE_2}" "provides" "provided-default;provided-default-b")
  66. checkDependencies_("${FOUND_FILE_3}" "provides" "provided-default;provided-default-b")
  67. checkDependencies_("${FOUND_FILE_4}" "provides" "provided-lib")
  68. checkDependencies_("${FOUND_FILE_5}" "provides" "provided-lib_auto;provided-lib_auto-b")
  69. endif()