set(ALL_FILES_GLOB "*.${cpack_archive_extension_}") function(getPackageContent FILE RESULT_VAR) # TODO for some types this only works because libarchive handles it... (not # part of for e.g. gnu tar) execute_process(COMMAND ${CMAKE_COMMAND} -E tar -xtf ${FILE} OUTPUT_VARIABLE package_content_ ERROR_QUIET OUTPUT_STRIP_TRAILING_WHITESPACE) set(${RESULT_VAR} "${package_content_}" PARENT_SCOPE) endfunction() function(getPackageNameGlobexpr NAME COMPONENT VERSION REVISION FILE_NO RESULT_VAR) if(COMPONENT) set(COMPONENT "-${COMPONENT}") endif() set(${RESULT_VAR} "${NAME}-${VERSION}-*${COMPONENT}.${cpack_archive_extension_}" PARENT_SCOPE) endfunction() function(getPackageContentList FILE RESULT_VAR) getPackageContent("${FILE}" package_content_) string(REPLACE "\n" ";" package_content_ "${package_content_}") foreach(i_ IN LISTS package_content_) string(REGEX REPLACE "/$" "" result_ "${i_}") list(APPEND items_ "${result_}") endforeach() set(${RESULT_VAR} "${items_}" PARENT_SCOPE) endfunction() function(toExpectedContentList FILE_NO CONTENT_VAR) findExpectedFile("${FILE_NO}" "file_" "glob_expr_") # component and monolithic packages differ for some reason by either having # package filename prefix in path or not if(PACKAGING_TYPE STREQUAL "MONOLITHIC") get_filename_component(prefix_ "${file_}" NAME) # NAME_WE removes everything after the dot and dot is in version so replace instead string(REPLACE ".${cpack_archive_extension_}" "/" prefix_ "${prefix_}") else() unset(prefix_) endif() # add install prefix to expected paths if(DEFINED EXPECTED_FILE_${FILE_NO}_PACKAGING_PREFIX) set(EXPECTED_FILE_PACKAGING_PREFIX "${EXPECTED_FILE_${FILE_NO}_PACKAGING_PREFIX}") elseif(NOT DEFINED EXPECTED_FILE_PACKAGING_PREFIX) # default CPack Archive packaging install prefix set(EXPECTED_FILE_PACKAGING_PREFIX "/") endif() set(prepared_ "${EXPECTED_FILE_PACKAGING_PREFIX}") foreach(part_ IN LISTS ${CONTENT_VAR}) list(APPEND prepared_ "${EXPECTED_FILE_PACKAGING_PREFIX}${part_}") endforeach() unset(filtered_) foreach(part_ IN LISTS prepared_) string(REGEX REPLACE "^/" "" part_ "${part_}") if(part_) list(APPEND filtered_ "${prefix_}${part_}") endif() endforeach() set(${CONTENT_VAR} "${filtered_}" PARENT_SCOPE) endfunction()