132 lines
5.2 KiB
CMake
132 lines
5.2 KiB
CMake
set(CPACK_GENERATOR "RPM")
|
|
# use seperated RPM SPECs and generate different RPMs
|
|
set(CPACK_COMPONENTS_IGNORE_GROUPS 1)
|
|
set(CPACK_RPM_COMPONENT_INSTALL ON)
|
|
# use "server" as main component so its RPM filename won't have "server"
|
|
if (BUILD_CDC_ONLY)
|
|
set(CPACK_RPM_MAIN_COMPONENT "cdc")
|
|
else()
|
|
set(CPACK_RPM_MAIN_COMPONENT "server")
|
|
endif()
|
|
# let rpmbuild determine rpm filename
|
|
set(CPACK_RPM_FILE_NAME "RPM-DEFAULT")
|
|
set(CMAKE_INSTALL_LIBDIR "lib64")
|
|
## Stardard debuginfo generating instructions in cmake. However 6u
|
|
## server with rpm-4.8.0 which doesn't support dwarf4 won't generate
|
|
## BUILDID for RPM. And Our debuginfo package doesn't contain source
|
|
## code. Thus we don't use the way cmake sugguests.
|
|
#set(CPACK_RPM_DEBUGINFO_PACKAGE ON)
|
|
#set(CPACK_RPM_BUILD_SOURCE_DIRS_PREFIX "/usr/src/debug")
|
|
# RPM package informations.
|
|
|
|
include(cmake/Pack.cmake)
|
|
|
|
set(CPACK_RPM_PACKAGE_RELEASE ${OB_RELEASEID})
|
|
if (OB_DISABLE_LSE)
|
|
ob_insert_nonlse_to_package_version(${CPACK_RPM_PACKAGE_RELEASE} CPACK_RPM_PACKAGE_RELEASE)
|
|
message(STATUS "CPACK_RPM_PACKAGE_RELEASE: ${CPACK_RPM_PACKAGE_RELEASE}")
|
|
endif()
|
|
|
|
if (OB_BUILD_OPENSOURCE)
|
|
set(CPACK_RPM_PACKAGE_URL "${OceanBase_CE_HOMEPAGE_URL}")
|
|
set(CPACK_RPM_PACKAGE_RELEASE_DIST ON)
|
|
## set relocation path install prefix for each component
|
|
set(CPACK_RPM_DEVEL_PACKAGE_PREFIX /usr)
|
|
set(CPACK_RPM_UTILS_PACKAGE_PREFIX /usr)
|
|
list(APPEND CPACK_RPM_EXCLUDE_FROM_AUTO_FILELIST_ADDITION "/home")
|
|
list(APPEND CPACK_RPM_EXCLUDE_FROM_AUTO_FILELIST_ADDITION "/home/admin")
|
|
list(APPEND CPACK_RPM_EXCLUDE_FROM_AUTO_FILELIST_ADDITION "/home/admin/oceanbase")
|
|
else()
|
|
set(CPACK_RPM_PACKAGE_URL "${OceanBase_HOMEPAGE_URL}")
|
|
endif()
|
|
|
|
set(CPACK_RPM_PACKAGE_GROUP "Applications/Databases")
|
|
set(CPACK_RPM_PACKAGE_DESCRIPTION ${CPACK_PACKAGE_DESCRIPTION})
|
|
set(CPACK_RPM_PACKAGE_LICENSE "Mulan PubL v2.")
|
|
set(CPACK_RPM_DEFAULT_USER "admin")
|
|
set(CPACK_RPM_DEFAULT_GROUP "admin")
|
|
if (OB_BUILD_OPENSOURCE AND NOT BUILD_CDC_ONLY)
|
|
set(DEBUG_INSTALL_POST "mv $RPM_BUILD_ROOT/../server/home/admin/oceanbase/bin/obshell %{_builddir}/obshell; %{_rpmconfigdir}/find-debuginfo.sh %{?_find_debuginfo_opts} %{_builddir}/%{?buildsubdir}; mv %{_builddir}/obshell $RPM_BUILD_ROOT/../server/home/admin/oceanbase/bin/obshell; %{nil}")
|
|
else()
|
|
set(DEBUG_INSTALL_POST "%{_rpmconfigdir}/find-debuginfo.sh %{?_find_debuginfo_opts} %{_builddir}/%{?buildsubdir};%{nil}")
|
|
endif()
|
|
set(CPACK_RPM_SPEC_MORE_DEFINE
|
|
"%global _missing_build_ids_terminate_build 0
|
|
%global _find_debuginfo_opts -g
|
|
%global __brp_check_rpaths %{nil}
|
|
%define __strip ${CMAKE_SOURCE_DIR}/deps/3rd/usr/local/oceanbase/devtools/bin/llvm-strip
|
|
%undefine __brp_mangle_shebangs
|
|
%global __requires_exclude ^\(/bin/bash\|/usr/bin/\.*\)$
|
|
%define __debug_install_post ${DEBUG_INSTALL_POST}
|
|
%if \\\"%name\\\" != \\\"oceanbase-ce-sql-parser\\\" && \\\"%name\\\" != \\\"oceanbase-sql-parser\\\"
|
|
%debug_package
|
|
%endif
|
|
")
|
|
|
|
# systemd define on rpm
|
|
if (OB_BUILD_OPENSOURCE)
|
|
set(CPACK_RPM_SERVER_PACKAGE_REQUIRES "oceanbase-ce-libs = ${CPACK_PACKAGE_VERSION}, systemd")
|
|
|
|
configure_file(${CMAKE_CURRENT_SOURCE_DIR}/tools/systemd/profile/pre_install.sh.template
|
|
${CMAKE_CURRENT_SOURCE_DIR}/tools/systemd/profile/pre_install.sh
|
|
@ONLY)
|
|
set(CPACK_RPM_SERVER_PRE_INSTALL_SCRIPT_FILE ${CMAKE_CURRENT_SOURCE_DIR}/tools/systemd/profile/pre_install.sh)
|
|
|
|
configure_file(${CMAKE_CURRENT_SOURCE_DIR}/tools/systemd/profile/post_install.sh.template
|
|
${CMAKE_CURRENT_SOURCE_DIR}/tools/systemd/profile/post_install.sh
|
|
@ONLY)
|
|
set(CPACK_RPM_SERVER_POST_INSTALL_SCRIPT_FILE ${CMAKE_CURRENT_SOURCE_DIR}/tools/systemd/profile/post_install.sh)
|
|
|
|
configure_file(${CMAKE_CURRENT_SOURCE_DIR}/tools/systemd/profile/pre_uninstall.sh.template
|
|
${CMAKE_CURRENT_SOURCE_DIR}/tools/systemd/profile/pre_uninstall.sh
|
|
@ONLY)
|
|
set(CPACK_RPM_SERVER_PRE_UNINSTALL_SCRIPT_FILE ${CMAKE_CURRENT_SOURCE_DIR}/tools/systemd/profile/pre_uninstall.sh)
|
|
|
|
configure_file(${CMAKE_CURRENT_SOURCE_DIR}/tools/systemd/profile/post_uninstall.sh.template
|
|
${CMAKE_CURRENT_SOURCE_DIR}/tools/systemd/profile/post_uninstall.sh
|
|
@ONLY)
|
|
set(CPACK_RPM_SERVER_POST_UNINSTALL_SCRIPT_FILE ${CMAKE_CURRENT_SOURCE_DIR}/tools/systemd/profile/post_uninstall.sh)
|
|
endif()
|
|
|
|
## server
|
|
if (NOT OB_BUILD_OPENSOURCE)
|
|
install(PROGRAMS
|
|
${DEVTOOLS_DIR}/bin/obstack
|
|
DESTINATION bin
|
|
COMPONENT server)
|
|
endif()
|
|
|
|
# add the rpm post and pre script
|
|
if (OB_BUILD_OPENSOURCE)
|
|
install(FILES
|
|
tools/systemd/profile/pre_install.sh
|
|
tools/systemd/profile/post_install.sh
|
|
tools/systemd/profile/post_uninstall.sh
|
|
tools/systemd/profile/pre_uninstall.sh
|
|
DESTINATION profile
|
|
COMPONENT server)
|
|
endif()
|
|
|
|
if (BUILD_CDC_ONLY)
|
|
message(STATUS "oceanbase build cdc only")
|
|
set(CPACK_COMPONENTS_ALL cdc)
|
|
set(CPACK_PACKAGE_NAME "oceanbase-cdc")
|
|
if (OB_BUILD_OPENSOURCE)
|
|
set(CPACK_PACKAGE_NAME "oceanbase-ce-cdc")
|
|
endif()
|
|
else()
|
|
add_custom_target(bitcode_to_elf ALL
|
|
DEPENDS ${BITCODE_TO_ELF_LIST})
|
|
add_custom_target(ob_table ALL
|
|
DEPENDS obtable obtable_static)
|
|
endif()
|
|
message(STATUS "Cpack Components:${CPACK_COMPONENTS_ALL}")
|
|
|
|
# install cpack to make everything work
|
|
include(CPack)
|
|
|
|
#add rpm target to create RPMS
|
|
add_custom_target(rpm
|
|
COMMAND +make package
|
|
)
|