mirror of https://gitee.com/bigwinds/arangodb
195 lines
7.3 KiB
CMake
195 lines
7.3 KiB
CMake
# -*- mode: CMAKE; -*-
|
|
|
|
# we will handle install into the target directory on our own via debconf:
|
|
set(PACKAGING_HANDLE_CONFIG_FILES true)
|
|
|
|
################################################################################
|
|
# This produces the debian packages, using client/deb.txt for the second package.
|
|
################################################################################
|
|
|
|
FILE(READ "${PROJECT_SOURCE_DIR}/Installation/debian/packagedesc.txt" CPACK_DEBIAN_PACKAGE_DESCRIPTION)
|
|
|
|
set(CPACK_GENERATOR "DEB")
|
|
|
|
set(CPACK_DEBIAN_PACKAGE_SECTION "database")
|
|
set(CPACK_DEBIAN_PACKAGE_CONFLICTS
|
|
"arangodb, ${CPACKG_PACKAGE_CONFLICTS}, ${CPACKG_PACKAGE_CONFLICTS}-client, ${CPACK_PACKAGE_NAME}-client")
|
|
set(CPACK_DEBIAN_PACKAGE_SHLIBDEPS ON)
|
|
|
|
if(NOT DISABLE_XZ_DEB)
|
|
set(CPACK_DEBIAN_COMPRESSION_TYPE "xz")
|
|
endif()
|
|
|
|
set(CPACK_DEBIAN_PACKAGE_HOMEPAGE ${ARANGODB_URL_INFO_ABOUT})
|
|
set(CPACK_COMPONENTS_ALL debian-extras)
|
|
|
|
if (SYSTEMD_FOUND)
|
|
set(CPACK_SYSTEMD_FOUND "1")
|
|
else()
|
|
set(CPACK_SYSTEMD_FOUND "0")
|
|
endif()
|
|
|
|
set(LOGROTATE_GROUP "adm")
|
|
|
|
# substitute the package name so debconf works:
|
|
configure_file (
|
|
"${PROJECT_SOURCE_DIR}/Installation/debian/templates.in"
|
|
"${PROJECT_BINARY_DIR}/Installation/debian/templates"
|
|
NEWLINE_STYLE UNIX)
|
|
configure_file (
|
|
"${PROJECT_SOURCE_DIR}/Installation/debian/config.in"
|
|
"${PROJECT_BINARY_DIR}/Installation/debian/config"
|
|
NEWLINE_STYLE UNIX)
|
|
configure_file (
|
|
"${PROJECT_SOURCE_DIR}/Installation/debian/postinst.in"
|
|
"${PROJECT_BINARY_DIR}/Installation/debian/postinst"
|
|
NEWLINE_STYLE UNIX)
|
|
configure_file (
|
|
"${PROJECT_SOURCE_DIR}/Installation/debian/prerm.in"
|
|
"${PROJECT_BINARY_DIR}/Installation/debian/prerm"
|
|
NEWLINE_STYLE UNIX)
|
|
|
|
list(APPEND CPACK_DEBIAN_PACKAGE_CONTROL_EXTRA
|
|
"${PROJECT_BINARY_DIR}/Installation/debian/templates"
|
|
"${PROJECT_BINARY_DIR}/Installation/debian/config"
|
|
|
|
"${PROJECT_SOURCE_DIR}/Installation/debian/preinst"
|
|
"${PROJECT_BINARY_DIR}/Installation/debian/postinst"
|
|
|
|
"${PROJECT_SOURCE_DIR}/Installation/debian/postrm"
|
|
"${PROJECT_BINARY_DIR}/Installation/debian/prerm"
|
|
)
|
|
|
|
################################################################################
|
|
# specify which target archcitecture the package is going to be:
|
|
################################################################################
|
|
|
|
set(CPACK_DEBIAN_PACKAGE_ARCHITECTURE ${ARANGODB_PACKAGE_ARCHITECTURE})
|
|
|
|
set(ARANGODB_DBG_PACKAGE_FILE_NAME
|
|
"${CPACK_PACKAGE_NAME}-dbg-${ARANGODB_DEBIAN_UPSTREAM}-${ARANGODB_DEBIAN_REVISION}_${ARANGODB_PACKAGE_ARCHITECTURE}")
|
|
|
|
set(conffiles_list "")
|
|
if ("${INSTALL_CONFIGFILES_LIST}" STREQUAL "")
|
|
message("the list is empty in this turn")
|
|
else()
|
|
list(REMOVE_DUPLICATES INSTALL_CONFIGFILES_LIST)
|
|
foreach (_configFile ${INSTALL_CONFIGFILES_LIST})
|
|
list(APPEND CPACK_DEBIAN_PACKAGE_CONTROL_EXTRA ${_configFile})
|
|
set(conffiles_list "${conffiles_list}${_configFile}\n")
|
|
endforeach()
|
|
endif()
|
|
|
|
set(DH_CONFFILES_NAME "${PROJECT_BINARY_DIR}/conffiles")
|
|
FILE(WRITE ${DH_CONFFILES_NAME} "${conffiles_list}")
|
|
list(APPEND CPACK_DEBIAN_PACKAGE_CONTROL_EXTRA "${DH_CONFFILES_NAME}")
|
|
|
|
|
|
if (SYSTEMD_FOUND)
|
|
# deploy the Init script:
|
|
install(
|
|
FILES ${PROJECT_BINARY_DIR}/arangodb3.service
|
|
PERMISSIONS OWNER_READ OWNER_WRITE GROUP_READ WORLD_READ
|
|
DESTINATION ${SYSTEMD_UNIT_DIR}/
|
|
RENAME ${SERVICE_NAME}.service
|
|
COMPONENT debian-extras
|
|
)
|
|
|
|
# deploy the logrotate config:
|
|
install(
|
|
FILES ${PROJECT_BINARY_DIR}/arangod.systemd
|
|
PERMISSIONS OWNER_READ OWNER_WRITE GROUP_READ WORLD_READ
|
|
DESTINATION ${CMAKE_INSTALL_FULL_SYSCONFDIR}/logrotate.d
|
|
RENAME ${SERVICE_NAME}
|
|
COMPONENT debian-extras
|
|
)
|
|
else ()
|
|
# deploy the Init script:
|
|
install(
|
|
FILES ${PROJECT_SOURCE_DIR}/Installation/debian/arangodb.init
|
|
PERMISSIONS OWNER_READ OWNER_WRITE OWNER_EXECUTE GROUP_READ GROUP_EXECUTE WORLD_READ WORLD_EXECUTE
|
|
DESTINATION ${CMAKE_INSTALL_FULL_SYSCONFDIR}/init.d
|
|
RENAME arangodb3
|
|
COMPONENT debian-extras
|
|
)
|
|
|
|
# deploy the logrotate config:
|
|
install(
|
|
FILES ${PROJECT_SOURCE_DIR}/Installation/logrotate.d/arangod.sysv
|
|
PERMISSIONS OWNER_READ OWNER_WRITE GROUP_READ WORLD_READ
|
|
DESTINATION ${CMAKE_INSTALL_FULL_SYSCONFDIR}/logrotate.d
|
|
RENAME ${SERVICE_NAME}
|
|
COMPONENT debian-extras
|
|
)
|
|
endif()
|
|
|
|
################################################################################
|
|
# hook to build the server package
|
|
################################################################################
|
|
add_custom_target(package-arangodb-server
|
|
COMMAND ${CMAKE_COMMAND} .
|
|
COMMAND ${CMAKE_CPACK_COMMAND} -G DEB
|
|
WORKING_DIRECTORY ${PROJECT_BINARY_DIR})
|
|
|
|
list(APPEND PACKAGES_LIST package-arangodb-server)
|
|
|
|
################################################################################
|
|
# hook to build the client package
|
|
################################################################################
|
|
|
|
set(CPACK_CLIENT_PACKAGE_NAME "${CPACK_PACKAGE_NAME}-client")
|
|
|
|
set(ARANGODB_CLIENT_PACKAGE_FILE_NAME
|
|
"${CPACK_CLIENT_PACKAGE_NAME}-${ARANGODB_DEBIAN_UPSTREAM}-${ARANGODB_DEBIAN_REVISION}_${ARANGODB_PACKAGE_ARCHITECTURE}")
|
|
|
|
set(CLIENT_BUILD_DIR ${CMAKE_CURRENT_BINARY_DIR}/packages/arangodb-client)
|
|
configure_file(cmake/packages/client/deb.txt ${CLIENT_BUILD_DIR}/CMakeLists.txt @ONLY)
|
|
add_custom_target(package-arangodb-client
|
|
COMMAND ${CMAKE_COMMAND} .
|
|
COMMENT "configuring client package environment"
|
|
COMMAND ${CMAKE_CPACK_COMMAND} -G DEB
|
|
COMMENT "building client packages"
|
|
COMMAND ${CMAKE_COMMAND} -E copy ${CLIENT_BUILD_DIR}/${ARANGODB_CLIENT_PACKAGE_FILE_NAME}.deb ${PROJECT_BINARY_DIR}
|
|
COMMENT "uploading client packages"
|
|
WORKING_DIRECTORY ${CLIENT_BUILD_DIR})
|
|
|
|
list(APPEND PACKAGES_LIST package-arangodb-client)
|
|
|
|
|
|
add_custom_target(copy_deb_packages
|
|
COMMAND ${CMAKE_COMMAND} -E copy ${ARANGODB_CLIENT_PACKAGE_FILE_NAME}.deb ${PACKAGE_TARGET_DIR}
|
|
COMMAND ${CMAKE_COMMAND} -E copy ${CPACK_PACKAGE_FILE_NAME}.deb ${PACKAGE_TARGET_DIR}
|
|
COMMAND ${CMAKE_COMMAND} -E copy ${ARANGODB_DBG_PACKAGE_FILE_NAME}.deb ${PACKAGE_TARGET_DIR}
|
|
COMMENT "copying packages to ${PACKAGE_TARGET_DIR}")
|
|
|
|
list(APPEND COPY_PACKAGES_LIST copy_deb_packages)
|
|
|
|
add_custom_target(remove_packages
|
|
COMMAND ${CMAKE_COMMAND} -E remove_directory _CPack_Packages
|
|
COMMENT Removing server packaging build directory
|
|
COMMAND ${CMAKE_COMMAND} -E remove_directory packages
|
|
COMMENT Removing client packaging build directory
|
|
COMMAND ${CMAKE_COMMAND} -E remove ${ARANGODB_CLIENT_PACKAGE_FILE_NAME}.deb
|
|
COMMAND ${CMAKE_COMMAND} -E remove ${CPACK_PACKAGE_FILE_NAME}.deb
|
|
COMMAND ${CMAKE_COMMAND} -E remove ${ARANGODB_DBG_PACKAGE_FILE_NAME}.deb
|
|
COMMAND ${CMAKE_COMMAND} -E remove ${PROJECT_BINARY_DIR}/bin/strip/*
|
|
COMMENT Removing local target packages
|
|
)
|
|
|
|
list(APPEND CLEAN_PACKAGES_LIST remove_packages)
|
|
|
|
|
|
################################################################################
|
|
# hook to build the debug package
|
|
################################################################################
|
|
set(DEBUG_BUILD_DIR ${CMAKE_CURRENT_BINARY_DIR}/packages/arangodb3-dbg)
|
|
configure_file(cmake/packages/dbg/deb.txt ${DEBUG_BUILD_DIR}/CMakeLists.txt @ONLY)
|
|
|
|
add_custom_target(package-arangodb-dbg
|
|
COMMAND ${CMAKE_COMMAND} . -DCMAKE_OBJCOPY=${CMAKE_OBJCOPY}
|
|
COMMAND ${CMAKE_CPACK_COMMAND} -G DEB
|
|
COMMAND ${CMAKE_COMMAND} -E copy ${ARANGODB_DBG_PACKAGE_FILE_NAME}.deb ${PROJECT_BINARY_DIR}
|
|
WORKING_DIRECTORY ${DEBUG_BUILD_DIR})
|
|
|
|
list(APPEND PACKAGES_LIST package-arangodb-dbg)
|