105 lines
		
	
	
		
			4.3 KiB
		
	
	
	
		
			CMake
		
	
	
	
	
	
			
		
		
	
	
			105 lines
		
	
	
		
			4.3 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"
 | |
| set(CPACK_RPM_MAIN_COMPONENT "server")
 | |
| # let rpmbuild determine rpm filename
 | |
| set(CPACK_RPM_FILE_NAME "RPM-DEFAULT")
 | |
| ## 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_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)
 | |
|   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}, jq, systemd")
 | |
| 
 | |
|   configure_file(${CMAKE_CURRENT_SOURCE_DIR}/tools/rpm/systemd/profile/post_install.sh.template
 | |
|                 ${CMAKE_CURRENT_SOURCE_DIR}/tools/rpm/systemd/profile/post_install.sh
 | |
|                 @ONLY)
 | |
|   set(CPACK_RPM_SERVER_POST_INSTALL_SCRIPT_FILE ${CMAKE_CURRENT_SOURCE_DIR}/tools/rpm/systemd/profile/post_install.sh)
 | |
| 
 | |
|   configure_file(${CMAKE_CURRENT_SOURCE_DIR}/tools/rpm/systemd/profile/pre_uninstall.sh.template
 | |
|                 ${CMAKE_CURRENT_SOURCE_DIR}/tools/rpm/systemd/profile/pre_uninstall.sh
 | |
|                 @ONLY)
 | |
|   set(CPACK_RPM_SERVER_PRE_UNINSTALL_SCRIPT_FILE ${CMAKE_CURRENT_SOURCE_DIR}/tools/rpm/systemd/profile/pre_uninstall.sh)
 | |
| 
 | |
|   configure_file(${CMAKE_CURRENT_SOURCE_DIR}/tools/rpm/systemd/profile/post_uninstall.sh.template
 | |
|                 ${CMAKE_CURRENT_SOURCE_DIR}/tools/rpm/systemd/profile/post_uninstall.sh
 | |
|                 @ONLY)
 | |
|   set(CPACK_RPM_SERVER_POST_UNINSTALL_SCRIPT_FILE ${CMAKE_CURRENT_SOURCE_DIR}/tools/rpm/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/rpm/systemd/profile/post_install.sh
 | |
|   tools/rpm/systemd/profile/post_uninstall.sh
 | |
|   tools/rpm/systemd/profile/pre_uninstall.sh
 | |
|   DESTINATION profile
 | |
|   COMPONENT server)
 | |
| endif()
 | |
| 
 | |
| # install cpack to make everything work
 | |
| include(CPack)
 | |
| 
 | |
| #add rpm target to create RPMS
 | |
| add_custom_target(rpm
 | |
|   COMMAND +make package
 | |
|   DEPENDS
 | |
|   observer obcdc_tailf obtable obtable_static
 | |
|   ob_admin ob_error ob_sql_proxy_parser_static
 | |
|   ${BITCODE_TO_ELF_LIST}
 | |
|   )
 | 
