message(STATUS "=============================================================================") message(STATUS "CTEST_FULL_OUTPUT (Avoid ctest truncation of output)") message(STATUS "") if(NOT CPackComponentsForAll_BINARY_DIR) message(FATAL_ERROR "CPackComponentsForAll_BINARY_DIR not set") endif() if(NOT CPackGen) message(FATAL_ERROR "CPackGen not set") endif() message("CMAKE_CPACK_COMMAND = ${CMAKE_CPACK_COMMAND}") if(NOT CMAKE_CPACK_COMMAND) message(FATAL_ERROR "CMAKE_CPACK_COMMAND not set") endif() if(NOT CPackComponentWay) message(FATAL_ERROR "CPackComponentWay not set") endif() set(expected_file_mask "") # The usual default behavior is to expect a single file # Then some specific generators (Archive, RPM, ...) # May produce several numbers of files depending on # CPACK_COMPONENT_xxx values set(expected_count 1) set(config_type $ENV{CMAKE_CONFIG_TYPE}) set(config_args ) if(config_type) set(config_args -C ${config_type}) endif() set(config_verbose ) if(CPackGen MATCHES "ZIP") set(expected_file_mask "${CPackComponentsForAll_BINARY_DIR}/MyLib-*.zip") if (${CPackComponentWay} STREQUAL "default") set(expected_count 1) elseif (${CPackComponentWay} STREQUAL "OnePackPerGroup") set(expected_count 3) elseif (${CPackComponentWay} STREQUAL "IgnoreGroup") set(expected_count 4) elseif (${CPackComponentWay} STREQUAL "AllInOne") set(expected_count 1) endif () elseif (CPackGen MATCHES "RPM") set(config_verbose -D "CPACK_RPM_PACKAGE_DEBUG=1") set(expected_file_mask "${CPackComponentsForAll_BINARY_DIR}/MyLib-*.rpm") if (${CPackComponentWay} STREQUAL "default") set(expected_count 1) elseif (${CPackComponentWay} STREQUAL "OnePackPerGroup") set(expected_count 3) elseif (${CPackComponentWay} STREQUAL "IgnoreGroup") set(expected_count 4) elseif (${CPackComponentWay} STREQUAL "AllInOne") set(expected_count 1) endif () elseif (CPackGen MATCHES "DEB") set(expected_file_mask "${CPackComponentsForAll_BINARY_DIR}/MyLib-*.deb") if (${CPackComponentWay} STREQUAL "default") set(expected_count 1) elseif (${CPackComponentWay} STREQUAL "OnePackPerGroup") set(expected_count 3) elseif (${CPackComponentWay} STREQUAL "IgnoreGroup") set(expected_count 4) elseif (${CPackComponentWay} STREQUAL "AllInOne") set(expected_count 1) endif () endif() if(CPackGen MATCHES "DragNDrop") set(expected_file_mask "${CPackComponentsForAll_BINARY_DIR}/MyLib-*.dmg") if (${CPackComponentWay} STREQUAL "default") set(expected_count 1) elseif (${CPackComponentWay} STREQUAL "OnePackPerGroup") set(expected_count 3) elseif (${CPackComponentWay} STREQUAL "IgnoreGroup") set(expected_count 4) elseif (${CPackComponentWay} STREQUAL "AllInOne") set(expected_count 1) endif () endif() # clean-up previously CPack generated files if(expected_file_mask) file(GLOB expected_file "${expected_file_mask}") if (expected_file) file(REMOVE ${expected_file}) endif() endif() message("config_args = ${config_args}") message("config_verbose = ${config_verbose}") execute_process(COMMAND ${CMAKE_CPACK_COMMAND} ${config_verbose} -G ${CPackGen} ${config_args} RESULT_VARIABLE CPack_result OUTPUT_VARIABLE CPack_output ERROR_VARIABLE CPack_error WORKING_DIRECTORY ${CPackComponentsForAll_BINARY_DIR}) if (CPack_result) message(FATAL_ERROR "error: CPack execution went wrong!, CPack_output=${CPack_output}, CPack_error=${CPack_error}") else () message(STATUS "CPack_output=${CPack_output}") endif() # Now verify if the number of expected file is OK # - using expected_file_mask and # - expected_count if(expected_file_mask) file(GLOB expected_file "${expected_file_mask}") message(STATUS "expected_count='${expected_count}'") message(STATUS "expected_file='${expected_file}'") message(STATUS "expected_file_mask='${expected_file_mask}'") if(NOT expected_file) message(FATAL_ERROR "error: expected_file=${expected_file} does not exist: CPackComponentsForAll test fails. (CPack_output=${CPack_output}, CPack_error=${CPack_error}") endif() list(LENGTH expected_file actual_count) message(STATUS "actual_count='${actual_count}'") if(NOT actual_count EQUAL expected_count) message(FATAL_ERROR "error: expected_count=${expected_count} does not match actual_count=${actual_count}: CPackComponents test fails. (CPack_output=${CPack_output}, CPack_error=${CPack_error})") endif() endif()