Helpers.cmake 2.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475
  1. set(ALL_FILES_GLOB "*.sh")
  2. function(getPackageContent FILE RESULT_VAR)
  3. get_filename_component(path_ "${FILE}" DIRECTORY)
  4. file(REMOVE_RECURSE "${path_}/content")
  5. file(MAKE_DIRECTORY "${path_}/content")
  6. execute_process(COMMAND ${FILE} --prefix=${path_}/content --include-subdir
  7. RESULT_VARIABLE extract_result_
  8. ERROR_VARIABLE extract_error_
  9. OUTPUT_STRIP_TRAILING_WHITESPACE)
  10. if(extract_result_)
  11. message(FATAL_ERROR "Extracting STGZ archive failed: '${extract_result_}';"
  12. " '${extract_error_}'.")
  13. endif()
  14. file(GLOB_RECURSE package_content_ LIST_DIRECTORIES true RELATIVE
  15. "${path_}/content" "${path_}/content/*")
  16. set(${RESULT_VAR} "${package_content_}" PARENT_SCOPE)
  17. endfunction()
  18. function(getPackageNameGlobexpr NAME COMPONENT VERSION REVISION FILE_NO RESULT_VAR)
  19. if(COMPONENT)
  20. set(COMPONENT "-${COMPONENT}")
  21. endif()
  22. set(${RESULT_VAR} "${NAME}-${VERSION}-*${COMPONENT}.sh" PARENT_SCOPE)
  23. endfunction()
  24. function(getPackageContentList FILE RESULT_VAR)
  25. getPackageContent("${FILE}" package_content_)
  26. set(${RESULT_VAR} "${package_content_}" PARENT_SCOPE)
  27. endfunction()
  28. function(toExpectedContentList FILE_NO CONTENT_VAR)
  29. findExpectedFile("${FILE_NO}" "file_" "glob_expr_")
  30. get_filename_component(prefix_ "${file_}" NAME)
  31. # NAME_WE removes everything after the dot and dot is in version so replace instead
  32. string(REPLACE ".sh" "" prefix_ "${prefix_}")
  33. if(NOT PACKAGING_TYPE STREQUAL "MONOLITHIC")
  34. # STGZ packages don't have component dir prefix in subdir
  35. string(FIND "${prefix_}" "-" pos_ REVERSE)
  36. string(SUBSTRING "${prefix_}" 0 ${pos_} prefix_)
  37. endif()
  38. # add install prefix to expected paths
  39. if(DEFINED EXPECTED_FILE_${FILE_NO}_PACKAGING_PREFIX)
  40. set(EXPECTED_FILE_PACKAGING_PREFIX
  41. "${EXPECTED_FILE_${FILE_NO}_PACKAGING_PREFIX}")
  42. elseif(NOT DEFINED EXPECTED_FILE_PACKAGING_PREFIX)
  43. # default CPack Archive packaging install prefix
  44. set(EXPECTED_FILE_PACKAGING_PREFIX "/")
  45. endif()
  46. # remove trailing slash otherwise path concatenation will cause double slashes
  47. string(REGEX REPLACE "/$" "" EXPECTED_FILE_PACKAGING_PREFIX
  48. "${EXPECTED_FILE_PACKAGING_PREFIX}")
  49. if(EXPECTED_FILE_PACKAGING_PREFIX)
  50. set(prepared_ "${prefix_}")
  51. else()
  52. unset(prepared_)
  53. endif()
  54. list(APPEND prepared_ "${prefix_}${EXPECTED_FILE_PACKAGING_PREFIX}")
  55. foreach(part_ IN LISTS ${CONTENT_VAR})
  56. list(APPEND prepared_ "${prefix_}${EXPECTED_FILE_PACKAGING_PREFIX}${part_}")
  57. endforeach()
  58. set(${CONTENT_VAR} "${prepared_}" PARENT_SCOPE)
  59. endfunction()