| set(whitespaces_ "[\t\n\r ]*") |
| |
| file(MAKE_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}/test_rpm") |
| file(MAKE_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}/test_rpm/BUILD") |
| file(MAKE_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}/test_rpm/BUILDROOT") |
| file(MAKE_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}/test_rpm/RPMS") |
| file(MAKE_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}/test_rpm/SOURCES") |
| file(MAKE_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}/test_rpm/SPECS") |
| file(MAKE_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}/test_rpm/SRPMS") |
| |
| # make sure that we are using the version of cmake and cpack that we are testing |
| get_filename_component(cpack_path_ "${CMAKE_CPACK_COMMAND}" DIRECTORY) |
| set(ENV{PATH} "${cpack_path_}:$ENV{PATH}") |
| |
| execute_process(COMMAND ${RPMBUILD_EXECUTABLE} --define "_topdir ${CMAKE_CURRENT_BINARY_DIR}/test_rpm" --rebuild ${FOUND_FILE_1} |
| RESULT_VARIABLE result_ |
| ERROR_VARIABLE error_ |
| OUTPUT_QUIET |
| ) |
| |
| set(output_error_message_ |
| "\n${RPMBUILD_EXECUTABLE} error: '${error_}';\nresult: '${result_}';\n${output_error_message}") |
| |
| # expected file content are test_prog and optional build-id links that are |
| # generated by rpmbuild (introduced in rpm 4.13.0.1) |
| set(EXPECTED_FILE_CONTENT_ "^/foo${whitespaces_}/foo/test_prog(${whitespaces_}.*\.build-id.*)*$") |
| |
| file(GLOB_RECURSE FOUND_FILE_ RELATIVE "${CMAKE_CURRENT_BINARY_DIR}/test_rpm/RPMS" "${CMAKE_CURRENT_BINARY_DIR}/test_rpm/RPMS/*.rpm") |
| list(APPEND foundFiles_ "${FOUND_FILE_}") |
| list(LENGTH FOUND_FILE_ foundFilesCount_) |
| |
| if(foundFilesCount_ EQUAL 1) |
| unset(PACKAGE_CONTENT) |
| getPackageContent("${CMAKE_CURRENT_BINARY_DIR}/test_rpm/RPMS/${FOUND_FILE_}" "PACKAGE_CONTENT") |
| |
| string(REGEX MATCH "${EXPECTED_FILE_CONTENT_}" |
| expected_content_list "${PACKAGE_CONTENT}") |
| |
| if(NOT expected_content_list) |
| message(FATAL_ERROR |
| "Unexpected file content!\n" |
| " Content: '${PACKAGE_CONTENT}'\n\n" |
| " Expected: '${EXPECTED_FILE_CONTENT_}'" |
| "${output_error_message_}") |
| endif() |
| else() |
| message(FATAL_ERROR |
| "Found more than one file!" |
| " Found files count '${foundFilesCount_}'." |
| " Files: '${FOUND_FILE_}'" |
| "${output_error_message_}") |
| endif() |
| |
| # check that there were no extra files generated |
| foreach(all_files_glob_ IN LISTS ALL_FILES_GLOB) |
| file(GLOB foundAll_ RELATIVE "${CMAKE_CURRENT_BINARY_DIR}/test_rpm/RPMS" "${all_files_glob_}") |
| list(APPEND allFoundFiles_ "${foundAll_}") |
| endforeach() |
| |
| list(LENGTH foundFiles_ foundFilesCount_) |
| list(LENGTH allFoundFiles_ allFoundFilesCount_) |
| |
| if(NOT foundFilesCount_ EQUAL allFoundFilesCount_) |
| message(FATAL_ERROR |
| "Found more files than expected! Found files: '${allFoundFiles_}'" |
| "${output_error_message_}") |
| endif() |