diff --git a/CMakeLists.txt b/CMakeLists.txt index d4ff638ca0c410cbe611642e424ef7717b74927e..c56773e3a581e5eb6341768a949e71639e397a6c 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -385,7 +385,6 @@ message (STATUS "ENABLE_BUNDLED_LIBEV: ${ENABLE_BUNDLED_LIBEV}") message (STATUS "ENABLE_BUNDLED_LIBEIO: ${ENABLE_BUNDLED_LIBEIO}") message (STATUS "ENABLE_BUNDLED_LIBCORO: ${ENABLE_BUNDLED_LIBCORO}") message (STATUS "ENABLE_DOC: ${ENABLE_DOC}") -message (STATUS "RPM_SCL_PREFIX: '${RPM_SCL_PREFIX}'") list_optional_packages() if (TARGET_OS_DARWIN) message (STATUS "DARWIN_BUILD_TYPE: ${DARWIN_BUILD_TYPE}") diff --git a/cmake/rpm.cmake b/cmake/rpm.cmake index 0402d8f1a0f5601d7c7b7b76426183ae3fa34c4e..21a9670d71c9fb5731ba5d8f8845c18cd7edda62 100644 --- a/cmake/rpm.cmake +++ b/cmake/rpm.cmake @@ -1,93 +1,96 @@ - find_program(RPMBUILD rpmbuild) -find_program(MKDIR mkdir) -find_program(CP cp) -find_program(WC wc) - -execute_process (COMMAND ${GIT} describe HEAD --abbrev=0 - OUTPUT_VARIABLE VERSION - OUTPUT_STRIP_TRAILING_WHITESPACE) - -execute_process (COMMAND ${GIT} rev-list --oneline ${VERSION}.. - COMMAND ${WC} -l - OUTPUT_VARIABLE RELEASE - OUTPUT_STRIP_TRAILING_WHITESPACE) - -execute_process (COMMAND ${RPMBUILD} -E '%_srcrpmdir' - OUTPUT_VARIABLE RPM_SRCRPMDIR - OUTPUT_STRIP_TRAILING_WHITESPACE) - -execute_process (COMMAND ${RPMBUILD} -E '%_sourcedir' - OUTPUT_VARIABLE RPM_SOURCEDIR - OUTPUT_STRIP_TRAILING_WHITESPACE) - -set (RPM_PACKAGE_VERSION ${VERSION} CACHE STRING "" FORCE) -set (RPM_PACKAGE_RELEASE ${RELEASE} CACHE STRING "" FORCE) - -set (RPM_SOURCE_DIRECTORY_NAME ${CPACK_SOURCE_PACKAGE_FILE_NAME} - CACHE STRING "" FORCE) -set (RPM_PACKAGE_SOURCE_FILE_NAME ${CPACK_SOURCE_PACKAGE_FILE_NAME}.tar.gz - CACHE STRING "" FORCE) - -set (RPM_BUILDROOT "${PROJECT_BINARY_DIR}/RPM/BUILDROOT" CACHE STRING "" FORCE) - -add_custom_command(OUTPUT ${PROJECT_SOURCE_DIR}/${CPACK_SOURCE_PACKAGE_FILE_NAME}.tar.gz - WORKING_DIRECTORY ${PROJECT_BINARY_DIR} - COMMAND $(MAKE) package_source) - -add_custom_command(OUTPUT ${RPM_BUILDROOT} - COMMAND ${MKDIR} -p ${RPM_BUILDROOT}) - -add_custom_command(OUTPUT ${RPM_SOURCEDIR} - COMMAND ${MKDIR} -p ${RPM_SOURCEDIR}) - -############################################################################################## - -set (RPM_ROOT "${PROJECT_BINARY_DIR}/RPM" CACHE STRING "" FORCE) - -add_custom_command(OUTPUT ${RPM_ROOT} - COMMAND ${MKDIR} -p ${RPM_ROOT}/{BUILD,SOURCES,SRPMS} ${RPM_ROOT}/RPMS/{i386,x86_64}) - -add_custom_target(rpm - DEPENDS ${RPM_ROOT} - DEPENDS ${PROJECT_SOURCE_DIR}/${CPACK_SOURCE_PACKAGE_FILE_NAME}.tar.gz - COMMAND ${CP} ${PROJECT_BINARY_DIR}/${RPM_PACKAGE_SOURCE_FILE_NAME} ${RPM_ROOT}/SOURCES - COMMAND ${RPMBUILD} --buildroot ${RPM_BUILDROOT} -bb ${PROJECT_SOURCE_DIR}/extra/rpm.spec - WORKING_DIRECTORY ${PROJECT_BINARY_DIR}) - -add_custom_target(rpm_src - DEPENDS ${RPM_ROOT} - DEPENDS ${PROJECT_SOURCE_DIR}/${CPACK_SOURCE_PACKAGE_FILE_NAME}.tar.gz - COMMAND ${CP} ${PROJECT_BINARY_DIR}/${RPM_PACKAGE_SOURCE_FILE_NAME} ${RPM_ROOT}/SOURCES - COMMAND ${RPMBUILD} --buildroot ${RPM_BUILDROOT} -bs ${PROJECT_SOURCE_DIR}/extra/rpm.spec - WORKING_DIRECTORY ${PROJECT_BINARY_DIR}) - -############################################################################################## - -add_custom_target(new_rpm - DEPENDS ${RPM_BUILDROOT} - DEPENDS ${RPM_SOURCEDIR} - DEPENDS ${PROJECT_SOURCE_DIR}/${CPACK_SOURCE_PACKAGE_FILE_NAME}.tar.gz - COMMAND ${CP} ${PROJECT_BINARY_DIR}/${RPM_PACKAGE_SOURCE_FILE_NAME} ${RPM_SOURCEDIR} - COMMAND ${RPMBUILD} --buildroot ${RPM_BUILDROOT} -bb ${PROJECT_SOURCE_DIR}/extra/rpm/tarantool.rpm.spec - WORKING_DIRECTORY ${PROJECT_BINARY_DIR}) - -add_custom_target(new_rpm_src - DEPENDS ${RPM_BUILDROOT} - DEPENDS ${RPM_SOURCEDIR} - DEPENDS ${PROJECT_SOURCE_DIR}/${CPACK_SOURCE_PACKAGE_FILE_NAME}.tar.gz - COMMAND ${CP} ${PROJECT_BINARY_DIR}/${RPM_PACKAGE_SOURCE_FILE_NAME} ${RPM_SOURCEDIR} - COMMAND ${RPMBUILD} --buildroot ${RPM_BUILDROOT} -bs ${PROJECT_SOURCE_DIR}/extra/rpm/tarantool.rpm.spec - WORKING_DIRECTORY ${PROJECT_BINARY_DIR}) - -add_custom_target(new_rpm_scl - DEPENDS ${RPM_BUILDROOT} - DEPENDS ${PROJECT_SOURCE_DIR}/${CPACK_SOURCE_PACKAGE_FILE_NAME}.tar.gz - COMMAND ${CP} ${PROJECT_BINARY_DIR}/${RPM_PACKAGE_SOURCE_FILE_NAME} ${RPM_SOURCEDIR} - COMMAND ${RPMBUILD} --buildroot ${RPM_BUILDROOT} -bb ${PROJECT_SOURCE_DIR}/extra/rpm/tarantool-scl.rpm.spec - COMMAND ${RPMBUILD} --buildroot ${RPM_BUILDROOT} -bb ${PROJECT_SOURCE_DIR}/extra/rpm/tarantool.rpm.spec --define 'scl 15' - WORKING_DIRECTORY ${PROJECT_BINARY_DIR}) - -# TODO: Add MOCK builds -# : -DMOCK_TARGET -# : -DMOCK_OS: EPEL / FEDORA + +if (RPMBUILD) + find_program(MKDIR mkdir) + find_program(CP cp) + find_program(WC wc) + + execute_process (COMMAND ${GIT} describe HEAD --abbrev=0 + OUTPUT_VARIABLE VERSION + OUTPUT_STRIP_TRAILING_WHITESPACE) + + execute_process (COMMAND ${GIT} rev-list --oneline ${VERSION}.. + COMMAND ${WC} -l + OUTPUT_VARIABLE RELEASE + OUTPUT_STRIP_TRAILING_WHITESPACE) + + execute_process (COMMAND ${RPMBUILD} -E '%_srcrpmdir' + OUTPUT_VARIABLE RPM_SRCRPMDIR + OUTPUT_STRIP_TRAILING_WHITESPACE) + + execute_process (COMMAND ${RPMBUILD} -E '%_sourcedir' + OUTPUT_VARIABLE RPM_SOURCEDIR + OUTPUT_STRIP_TRAILING_WHITESPACE) + + set (RPM_PACKAGE_VERSION ${VERSION} CACHE STRING "" FORCE) + set (RPM_PACKAGE_RELEASE ${RELEASE} CACHE STRING "" FORCE) + + set (RPM_SOURCE_DIRECTORY_NAME ${CPACK_SOURCE_PACKAGE_FILE_NAME} + CACHE STRING "" FORCE) + set (RPM_PACKAGE_SOURCE_FILE_NAME ${CPACK_SOURCE_PACKAGE_FILE_NAME}.tar.gz + CACHE STRING "" FORCE) + + set (RPM_BUILDROOT "${PROJECT_BINARY_DIR}/RPM/BUILDROOT" CACHE STRING "" FORCE) + + add_custom_command(OUTPUT ${PROJECT_SOURCE_DIR}/${CPACK_SOURCE_PACKAGE_FILE_NAME}.tar.gz + WORKING_DIRECTORY ${PROJECT_BINARY_DIR} + COMMAND $(MAKE) package_source) + + add_custom_command(OUTPUT ${RPM_BUILDROOT} + COMMAND ${MKDIR} -p ${RPM_BUILDROOT}) + + add_custom_command(OUTPUT ${RPM_SOURCEDIR} + COMMAND ${MKDIR} -p ${RPM_SOURCEDIR}) + + ############################################################################################## + + set (RPM_ROOT "${PROJECT_BINARY_DIR}/RPM" CACHE STRING "" FORCE) + + add_custom_command(OUTPUT ${RPM_ROOT} + COMMAND ${MKDIR} -p ${RPM_ROOT}/{BUILD,SOURCES,SRPMS} ${RPM_ROOT}/RPMS/{i386,x86_64}) + + add_custom_target(rpm + DEPENDS ${RPM_ROOT} + DEPENDS ${PROJECT_SOURCE_DIR}/${CPACK_SOURCE_PACKAGE_FILE_NAME}.tar.gz + COMMAND ${CP} ${PROJECT_BINARY_DIR}/${RPM_PACKAGE_SOURCE_FILE_NAME} ${RPM_ROOT}/SOURCES + COMMAND ${RPMBUILD} --buildroot ${RPM_BUILDROOT} -bb ${PROJECT_SOURCE_DIR}/extra/rpm.spec + WORKING_DIRECTORY ${PROJECT_BINARY_DIR}) + + add_custom_target(rpm_src + DEPENDS ${RPM_ROOT} + DEPENDS ${PROJECT_SOURCE_DIR}/${CPACK_SOURCE_PACKAGE_FILE_NAME}.tar.gz + COMMAND ${CP} ${PROJECT_BINARY_DIR}/${RPM_PACKAGE_SOURCE_FILE_NAME} ${RPM_ROOT}/SOURCES + COMMAND ${RPMBUILD} --buildroot ${RPM_BUILDROOT} -bs ${PROJECT_SOURCE_DIR}/extra/rpm.spec + WORKING_DIRECTORY ${PROJECT_BINARY_DIR}) + + ############################################################################################## + + add_custom_target(new_rpm + DEPENDS ${RPM_BUILDROOT} + DEPENDS ${RPM_SOURCEDIR} + DEPENDS ${PROJECT_SOURCE_DIR}/${CPACK_SOURCE_PACKAGE_FILE_NAME}.tar.gz + COMMAND ${CP} ${PROJECT_BINARY_DIR}/${RPM_PACKAGE_SOURCE_FILE_NAME} ${RPM_SOURCEDIR} + COMMAND ${RPMBUILD} --buildroot ${RPM_BUILDROOT} -bb ${PROJECT_SOURCE_DIR}/extra/rpm/tarantool.rpm.spec + WORKING_DIRECTORY ${PROJECT_BINARY_DIR}) + + add_custom_target(new_rpm_src + DEPENDS ${RPM_BUILDROOT} + DEPENDS ${RPM_SOURCEDIR} + DEPENDS ${PROJECT_SOURCE_DIR}/${CPACK_SOURCE_PACKAGE_FILE_NAME}.tar.gz + COMMAND ${CP} ${PROJECT_BINARY_DIR}/${RPM_PACKAGE_SOURCE_FILE_NAME} ${RPM_SOURCEDIR} + COMMAND ${RPMBUILD} --buildroot ${RPM_BUILDROOT} -bs ${PROJECT_SOURCE_DIR}/extra/rpm/tarantool.rpm.spec + WORKING_DIRECTORY ${PROJECT_BINARY_DIR}) + + add_custom_target(new_rpm_scl + DEPENDS ${RPM_BUILDROOT} + DEPENDS ${PROJECT_SOURCE_DIR}/${CPACK_SOURCE_PACKAGE_FILE_NAME}.tar.gz + COMMAND ${CP} ${PROJECT_BINARY_DIR}/${RPM_PACKAGE_SOURCE_FILE_NAME} ${RPM_SOURCEDIR} + COMMAND ${RPMBUILD} --buildroot ${RPM_BUILDROOT} -bb ${PROJECT_SOURCE_DIR}/extra/rpm/tarantool-scl.rpm.spec + COMMAND ${RPMBUILD} --buildroot ${RPM_BUILDROOT} -bb ${PROJECT_SOURCE_DIR}/extra/rpm/tarantool.rpm.spec --define 'scl 15' + WORKING_DIRECTORY ${PROJECT_BINARY_DIR}) + + # TODO: Add MOCK builds + # : -DMOCK_TARGET + # : -DMOCK_OS: EPEL / FEDORA + +endif()