diff --git a/README.en.md b/README.en.md deleted file mode 100644 index f10c679..0000000 --- a/README.en.md +++ /dev/null @@ -1,36 +0,0 @@ -# oceanbase-ce - -#### Description -OceanBase is a distributed relational database - -#### Software Architecture -Software architecture description - -#### Installation - -1. xxxx -2. xxxx -3. xxxx - -#### Instructions - -1. xxxx -2. xxxx -3. xxxx - -#### Contribution - -1. Fork the repository -2. Create Feat_xxx branch -3. Commit your code -4. Create Pull Request - - -#### Gitee Feature - -1. You can use Readme\_XXX.md to support different languages, such as Readme\_en.md, Readme\_zh.md -2. Gitee blog [blog.gitee.com](https://blog.gitee.com) -3. Explore open source project [https://gitee.com/explore](https://gitee.com/explore) -4. The most valuable open source project [GVP](https://gitee.com/gvp) -5. The manual of Gitee [https://gitee.com/help](https://gitee.com/help) -6. The most popular members [https://gitee.com/gitee-stars/](https://gitee.com/gitee-stars/) diff --git a/README.md b/README.md deleted file mode 100644 index b7ad817..0000000 --- a/README.md +++ /dev/null @@ -1,37 +0,0 @@ -# oceanbase-ce - -#### 介绍 -OceanBase is a distributed relational database - -#### 软件架构 -软件架构说明 - - -#### 安装教程 - -1. xxxx -2. xxxx -3. xxxx - -#### 使用说明 - -1. xxxx -2. xxxx -3. xxxx - -#### 参与贡献 - -1. Fork 本仓库 -2. 新建 Feat_xxx 分支 -3. 提交代码 -4. 新建 Pull Request - - -#### 特技 - -1. 使用 Readme\_XXX.md 来支持不同的语言,例如 Readme\_en.md, Readme\_zh.md -2. Gitee 官方博客 [blog.gitee.com](https://blog.gitee.com) -3. 你可以 [https://gitee.com/explore](https://gitee.com/explore) 这个地址来了解 Gitee 上的优秀开源项目 -4. [GVP](https://gitee.com/gvp) 全称是 Gitee 最有价值开源项目,是综合评定出的优秀开源项目 -5. Gitee 官方提供的使用手册 [https://gitee.com/help](https://gitee.com/help) -6. Gitee 封面人物是一档用来展示 Gitee 会员风采的栏目 [https://gitee.com/gitee-stars/](https://gitee.com/gitee-stars/) diff --git a/diff.patch b/diff.patch new file mode 100644 index 0000000..028952f --- /dev/null +++ b/diff.patch @@ -0,0 +1,1014 @@ +diff --git a/.secignore b/.secignore +index 1085ab2..d951c07 100644 +--- a/.secignore ++++ b/.secignore +@@ -188,6 +188,8 @@ + http://helloworld.com/* + http://1.1.1.1:8080/* + https://mirrors.aliyun.com/* ++ https://mirrors.oceanbase.com/* ++ http://mirrors.oceanbase.com/* + https://bixense.com/clicolors/ + martin.gieseking@uos.de + jloup@gzip.org +diff --git a/cmake/RPM.cmake b/cmake/RPM.cmake +index f0cec90..5771ba3 100644 +--- a/cmake/RPM.cmake ++++ b/cmake/RPM.cmake +@@ -64,27 +64,31 @@ set(CPACK_RPM_SPEC_MORE_DEFINE + if (OB_BUILD_OPENSOURCE) + set(CPACK_RPM_PACKAGE_REQUIRES "jq, systemd") + +- configure_file(${CMAKE_CURRENT_SOURCE_DIR}/tools/rpm/systemd/profile/oceanbase-service.sh.template +- ${CMAKE_CURRENT_SOURCE_DIR}/tools/rpm/systemd/profile/oceanbase-service.sh ++ configure_file(${CMAKE_CURRENT_SOURCE_DIR}/tools/systemd/profile/oceanbase-service.sh.template ++ ${CMAKE_CURRENT_SOURCE_DIR}/tools/systemd/profile/oceanbase-service.sh + @ONLY) +- configure_file(${CMAKE_CURRENT_SOURCE_DIR}/tools/rpm/systemd/profile/telemetry.sh.template +- ${CMAKE_CURRENT_SOURCE_DIR}/tools/rpm/systemd/profile/telemetry.sh ++ configure_file(${CMAKE_CURRENT_SOURCE_DIR}/tools/systemd/profile/telemetry.sh.template ++ ${CMAKE_CURRENT_SOURCE_DIR}/tools/systemd/profile/telemetry.sh + @ONLY) + +- 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 ++ 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_POST_INSTALL_SCRIPT_FILE ${CMAKE_CURRENT_SOURCE_DIR}/tools/rpm/systemd/profile/post_install.sh) ++ 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/rpm/systemd/profile/pre_uninstall.sh.template +- ${CMAKE_CURRENT_SOURCE_DIR}/tools/rpm/systemd/profile/pre_uninstall.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/rpm/systemd/profile/pre_uninstall.sh) ++ 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/rpm/systemd/profile/post_uninstall.sh.template +- ${CMAKE_CURRENT_SOURCE_DIR}/tools/rpm/systemd/profile/post_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/rpm/systemd/profile/post_uninstall.sh) ++ set(CPACK_RPM_SERVER_POST_UNINSTALL_SCRIPT_FILE ${CMAKE_CURRENT_SOURCE_DIR}/tools/systemd/profile/post_uninstall.sh) + endif() + + ## TIPS +@@ -134,14 +138,15 @@ install( + + if (OB_BUILD_OPENSOURCE) + install(FILES +- tools/rpm/systemd/profile/oceanbase.cnf +- tools/rpm/systemd/profile/oceanbase-pre.json +- tools/rpm/systemd/profile/oceanbase.service +- tools/rpm/systemd/profile/oceanbase-service.sh +- tools/rpm/systemd/profile/post_install.sh +- tools/rpm/systemd/profile/post_uninstall.sh +- tools/rpm/systemd/profile/pre_uninstall.sh +- tools/rpm/systemd/profile/telemetry.sh ++ tools/systemd/profile/oceanbase.cnf ++ tools/systemd/profile/oceanbase-pre.json ++ tools/systemd/profile/oceanbase.service ++ tools/systemd/profile/oceanbase-service.sh ++ tools/systemd/profile/pre_install.sh ++ tools/systemd/profile/post_install.sh ++ tools/systemd/profile/post_uninstall.sh ++ tools/systemd/profile/pre_uninstall.sh ++ tools/systemd/profile/telemetry.sh + DESTINATION profile + COMPONENT server) + endif() +@@ -230,171 +235,6 @@ install(FILES + DESTINATION include + COMPONENT sql-parser) + +-## oceanbsae-table +-install(FILES +- deps/oblib/src/common/data_buffer.h +- deps/oblib/src/common/ob_accuracy.h +- deps/oblib/src/common/ob_action_flag.h +- deps/oblib/src/common/ob_common_utility.h +- deps/oblib/src/common/ob_range.h +- deps/oblib/src/common/ob_region.h +- deps/oblib/src/common/ob_role.h +- deps/oblib/src/common/ob_string_buf.h +- deps/oblib/src/common/ob_string_buf.ipp +- deps/oblib/src/common/ob_timeout_ctx.h +- deps/oblib/src/common/ob_zerofill_info.h +- deps/oblib/src/common/ob_zone.h +- deps/oblib/src/common/object/ob_obj_type.h +- deps/oblib/src/common/object/ob_object.h +- deps/oblib/src/common/rowkey/ob_rowkey.h +- deps/oblib/src/common/rowkey/ob_rowkey_info.h +- deps/oblib/src/lib/alloc/abit_set.h +- deps/oblib/src/lib/alloc/alloc_assist.h +- deps/oblib/src/lib/alloc/alloc_func.h +- deps/oblib/src/lib/alloc/alloc_struct.h +- deps/oblib/src/lib/alloc/block_set.h +- deps/oblib/src/lib/alloc/ob_malloc_allocator.h +- deps/oblib/src/lib/alloc/ob_tenant_ctx_allocator.h +- deps/oblib/src/lib/alloc/object_mgr.h +- deps/oblib/src/lib/alloc/object_set.h +- deps/oblib/src/lib/allocator/ob_allocator.h +- deps/oblib/src/lib/allocator/ob_cached_allocator.h +- deps/oblib/src/lib/allocator/ob_concurrent_fifo_allocator.h +- deps/oblib/src/lib/allocator/ob_fifo_allocator.h +- deps/oblib/src/lib/allocator/ob_lf_fifo_allocator.h +- deps/oblib/src/lib/allocator/ob_malloc.h +- deps/oblib/src/lib/allocator/ob_mod_define.h +- deps/oblib/src/lib/allocator/ob_pcounter.h +- deps/oblib/src/lib/allocator/ob_pooled_allocator.h +- deps/oblib/src/lib/allocator/ob_retire_station.h +- deps/oblib/src/lib/allocator/ob_small_allocator.h +- deps/oblib/src/lib/allocator/ob_tc_malloc.h +- deps/oblib/src/lib/allocator/page_arena.h +- deps/oblib/src/lib/atomic/ob_atomic.h +- deps/oblib/src/lib/atomic/ob_atomic_reference.h +- deps/oblib/src/lib/charset/ob_charset.h +- deps/oblib/src/lib/charset/ob_config.h +- deps/oblib/src/lib/charset/ob_ctype.h +- deps/oblib/src/lib/charset/ob_mysql_global.h +- deps/oblib/src/lib/checksum/ob_crc64.h +- deps/oblib/src/lib/container/ob_array.h +- deps/oblib/src/lib/container/ob_array_helper.h +- deps/oblib/src/lib/container/ob_array_iterator.h +- deps/oblib/src/lib/container/ob_array_serialization.h +- deps/oblib/src/lib/container/ob_array_wrap.h +- deps/oblib/src/lib/container/ob_bit_set.h +- deps/oblib/src/lib/container/ob_fixed_array.h +- deps/oblib/src/lib/container/ob_iarray.h +- deps/oblib/src/lib/container/ob_se_array.h +- deps/oblib/src/lib/container/ob_vector.h +- deps/oblib/src/lib/container/ob_vector.ipp +- deps/oblib/src/lib/core_local/ob_core_local_storage.h +- deps/oblib/src/lib/file/config.h +- deps/oblib/src/lib/file/ob_string_util.h +- deps/oblib/src/lib/hash/mprotect.h +- deps/oblib/src/lib/hash/ob_array_index_hash_set.h +- deps/oblib/src/lib/hash/ob_hashmap.h +- deps/oblib/src/lib/hash/ob_hashset.h +- deps/oblib/src/lib/hash/ob_hashtable.h +- deps/oblib/src/lib/hash/ob_hashutils.h +- deps/oblib/src/lib/hash/ob_iteratable_hashmap.h +- deps/oblib/src/lib/hash/ob_linear_hash_map.h +- deps/oblib/src/lib/hash/ob_placement_hashutils.h +- deps/oblib/src/lib/hash/ob_pointer_hashmap.h +- deps/oblib/src/lib/hash/ob_serialization.h +- deps/oblib/src/lib/hash_func/murmur_hash.h +- deps/oblib/src/lib/hash_func/ob_hash_func.h +- deps/oblib/src/lib/json/ob_yson.h +- deps/oblib/src/lib/json/ob_yson_encode.h +- deps/oblib/src/lib/list/ob_dlink_node.h +- deps/oblib/src/lib/list/ob_dlist.h +- deps/oblib/src/lib/list/ob_list.h +- deps/oblib/src/lib/lock/cond.h +- deps/oblib/src/lib/lock/ob_lock.h +- deps/oblib/src/lib/lock/ob_monitor.h +- deps/oblib/src/lib/lock/mutex.h +- deps/oblib/src/lib/lock/ob_bucket_lock.h +- deps/oblib/src/lib/lock/ob_drw_lock.h +- deps/oblib/src/lib/lock/ob_latch.h +- deps/oblib/src/lib/lock/ob_lock_guard.h +- deps/oblib/src/lib/lock/ob_mutex.h +- deps/oblib/src/lib/lock/ob_small_spin_lock.h +- deps/oblib/src/lib/lock/ob_spin_lock.h +- deps/oblib/src/lib/lock/ob_spin_rwlock.h +- deps/oblib/src/lib/lock/ob_thread_cond.h +- deps/oblib/src/lib/lock/ob_rwlock.h +- deps/oblib/src/lib/metrics/ob_counter.h +- deps/oblib/src/lib/net/ob_addr.h +- deps/oblib/src/lib/net/ob_net_util.h +- deps/oblib/src/lib/number/ob_number_v2.h +- deps/oblib/src/lib/ob_date_unit_type.h +- deps/oblib/src/lib/ob_define.h +- deps/oblib/src/lib/ob_errno.h +- deps/oblib/src/lib/ob_name_def.h +- deps/oblib/src/lib/ob_name_id_def.h +- deps/oblib/src/lib/oblog/ob_log.h +- deps/oblib/src/lib/oblog/ob_log_module.h +- deps/oblib/src/lib/oblog/ob_log_print_kv.h +- deps/oblib/src/lib/oblog/ob_trace_log.h +- deps/oblib/src/lib/profile/ob_atomic_event.h +- deps/oblib/src/lib/queue/ob_dedup_queue.h +- deps/oblib/src/lib/queue/ob_fixed_queue.h +- deps/oblib/src/lib/queue/ob_link.h +- deps/oblib/src/lib/random/ob_random.h +- deps/oblib/src/lib/resource/achunk_mgr.h +- deps/oblib/src/lib/resource/ob_cache_washer.h +- deps/oblib/src/lib/resource/ob_resource_mgr.h +- deps/oblib/src/lib/stat/ob_latch_define.h +- deps/oblib/src/lib/string/ob_fixed_length_string.h +- deps/oblib/src/lib/string/ob_string.h +- deps/oblib/src/lib/string/ob_strings.h +- deps/oblib/src/lib/thread_local/ob_tsi_factory.h +- deps/oblib/src/lib/thread_local/ob_tsi_utils.h +- deps/oblib/src/lib/time/Time.h +- deps/oblib/src/lib/time/ob_time_utility.h +- deps/oblib/src/lib/timezone/ob_time_convert.h +- deps/oblib/src/lib/timezone/ob_timezone_info.h +- deps/oblib/src/lib/trace/ob_seq_event_recorder.h +- deps/oblib/src/lib/trace/ob_trace_event.h +- deps/oblib/src/lib/utility/ob_hang_fatal_error.h +- deps/oblib/src/lib/utility/ob_macro_utils.h +- deps/oblib/src/lib/utility/ob_print_kv.h +- deps/oblib/src/lib/utility/ob_print_utils.h +- deps/oblib/src/lib/utility/ob_rate_limiter.h +- deps/oblib/src/lib/utility/ob_serialization_helper.h +- deps/oblib/src/lib/utility/ob_template_utils.h +- deps/oblib/src/lib/utility/ob_unify_serialize.h +- deps/oblib/src/lib/utility/serialization.h +- deps/oblib/src/lib/utility/utility.h +- deps/oblib/src/lib/wait_event/ob_wait_class.h +- deps/oblib/src/lib/wait_event/ob_wait_event.h +- src/share/config/ob_common_config.h +- src/share/config/ob_config.h +- src/share/config/ob_config_helper.h +- src/share/mysql_errno.h +- src/share/object/ob_obj_cast.h +- src/share/partition_table/ob_partition_location.h +- src/share/table/ob_table.h +- src/share/table/ob_table_rpc_proxy.h +- src/share/table/ob_table_rpc_struct.h +- src/libtable/src/libobtable.h +- src/libtable/src/ob_table.h +- src/libtable/src/ob_hkv_table.h +- src/libtable/src/ob_pstore.h +- src/libtable/src/ob_table_service_client.h +- src/libtable/src/ob_table_service_config.h +- src/libtable/src/ob_table_define.h +- DESTINATION include +- COMPONENT table) +- +-install(FILES +- src/libtable/examples/ob_pstore_example.cpp +- src/libtable/examples/ob_kvtable_example.cpp +- src/libtable/examples/ob_table_example.cpp +- src/libtable/examples/example_makefile.mk +- DESTINATION examples +- COMPONENT table) +- + if (OB_BUILD_LIBOBTABLE) + + if (ENABLE_THIN_LTO) +@@ -406,14 +246,6 @@ if (OB_BUILD_LIBOBTABLE) + COMMAND_EXPAND_LISTS) + list(APPEND BITCODE_TO_ELF_LIST libobtable_static_to_elf) + endif() +- +- install(PROGRAMS +- ${CMAKE_BINARY_DIR}/src/libtable/src/libobtable.so +- ${CMAKE_BINARY_DIR}/src/libtable/src/libobtable.so.1 +- ${CMAKE_BINARY_DIR}/src/libtable/src/libobtable.so.1.0.0 +- ${CMAKE_BINARY_DIR}/src/libtable/src/libobtable_static.a +- DESTINATION lib +- COMPONENT table) + endif() + + if(OB_BUILD_OPENSOURCE) +diff --git a/deps/init/dep_create.sh b/deps/init/dep_create.sh +index ad5f149..4ad0adb 100644 +--- a/deps/init/dep_create.sh ++++ b/deps/init/dep_create.sh +@@ -80,6 +80,9 @@ function get_os_release() { + fedora) + version_ge "33" && compat_centos7 && return + ;; ++ openEuler) ++ version_ge "20" && compat_centos9 && return ++ ;; + opensuse-leap) + version_ge "15" && compat_centos7 && return + ;; +@@ -106,10 +109,18 @@ function get_os_release() { + version_ge "8.0" && compat_centos8 && return + version_ge "7.0" && compat_centos7 && return + ;; ++ anolis) ++ version_ge "23.0" && compat_centos9 && return ++ version_ge "8.0" && compat_centos8 && return ++ version_ge "7.0" && compat_centos7 && return ++ ;; + centos) + version_ge "8.0" && OS_RELEASE=8 && return + version_ge "7.0" && OS_RELEASE=7 && return + ;; ++ openEuler) ++ version_ge "20" && compat_centos9 && return ++ ;; + ubuntu) + version_ge "22.04" && compat_centos9 && return + version_ge "16.04" && compat_centos7 && return +diff --git a/deps/init/oceanbase.el7.aarch64.deps b/deps/init/oceanbase.el7.aarch64.deps +index 56c510d..1397b9c 100644 +--- a/deps/init/oceanbase.el7.aarch64.deps ++++ b/deps/init/oceanbase.el7.aarch64.deps +@@ -1,12 +1,12 @@ + [target-default] + os=7 + arch=aarch64 +-repo=http://mirrors.aliyun.com/oceanbase/development-kit/el/7/aarch64/ ++repo=https://mirrors.oceanbase.com/oceanbase/development-kit/el/7/aarch64/ + + [target-community] + os=7 + arch=aarch64 +-repo=http://mirrors.aliyun.com/oceanbase/community/stable/el/7/aarch64/ ++repo=https://mirrors.oceanbase.com/oceanbase/community/stable/el/7/aarch64/ + + + [deps] +diff --git a/deps/init/oceanbase.el7.x86_64.deps b/deps/init/oceanbase.el7.x86_64.deps +index e86e501..5b83a69 100644 +--- a/deps/init/oceanbase.el7.x86_64.deps ++++ b/deps/init/oceanbase.el7.x86_64.deps +@@ -1,13 +1,13 @@ + [target-default] + os=7 + arch=x86_64 +-repo=http://mirrors.aliyun.com/oceanbase/development-kit/el/7/x86_64/ ++repo=https://mirrors.oceanbase.com/oceanbase/development-kit/el/7/x86_64/ + + + [target-community] + os=7 + arch=x86_64 +-repo=http://mirrors.aliyun.com/oceanbase/community/stable/el/7/x86_64/ ++repo=https://mirrors.oceanbase.com/oceanbase/community/stable/el/7/x86_64/ + + + [deps] +diff --git a/deps/init/oceanbase.el8.aarch64.deps b/deps/init/oceanbase.el8.aarch64.deps +index 2b8612c..919cd33 100644 +--- a/deps/init/oceanbase.el8.aarch64.deps ++++ b/deps/init/oceanbase.el8.aarch64.deps +@@ -1,12 +1,12 @@ + [target-default] + os=8 + arch=aarch64 +-repo=http://mirrors.aliyun.com/oceanbase/development-kit/el/8/aarch64/ ++repo=https://mirrors.oceanbase.com/oceanbase/development-kit/el/8/aarch64/ + + [target-community] + os=8 + arch=aarch64 +-repo=http://mirrors.aliyun.com/oceanbase/community/stable/el/8/aarch64/ ++repo=https://mirrors.oceanbase.com/oceanbase/community/stable/el/8/aarch64/ + + + [deps] +diff --git a/deps/init/oceanbase.el8.x86_64.deps b/deps/init/oceanbase.el8.x86_64.deps +index bda5fcc..db3c8a1 100644 +--- a/deps/init/oceanbase.el8.x86_64.deps ++++ b/deps/init/oceanbase.el8.x86_64.deps +@@ -1,12 +1,12 @@ + [target-default] + os=8 + arch=x86_64 +-repo=http://mirrors.aliyun.com/oceanbase/development-kit/el/8/x86_64/ ++repo=https://mirrors.oceanbase.com/oceanbase/development-kit/el/8/x86_64/ + + [target-community] + os=8 + arch=x86_64 +-repo=http://mirrors.aliyun.com/oceanbase/community/stable/el/8/x86_64/ ++repo=https://mirrors.oceanbase.com/oceanbase/community/stable/el/8/x86_64/ + + + [deps] +diff --git a/deps/init/oceanbase.el9.aarch64.deps b/deps/init/oceanbase.el9.aarch64.deps +index 136767c..07d4b9a 100644 +--- a/deps/init/oceanbase.el9.aarch64.deps ++++ b/deps/init/oceanbase.el9.aarch64.deps +@@ -1,17 +1,17 @@ + [target-default] + os=9 + arch=aarch64 +-repo=http://mirrors.aliyun.com/oceanbase/development-kit/el/8/aarch64/ ++repo=https://mirrors.oceanbase.com/oceanbase/development-kit/el/8/aarch64/ + + [target-community] + os=9 + arch=aarch64 +-repo=http://mirrors.aliyun.com/oceanbase/community/stable/el/8/aarch64/ ++repo=https://mirrors.oceanbase.com/oceanbase/community/stable/el/8/aarch64/ + + [target-apr-el9] + os=9 + arch=aarch64 +-repo=http://mirrors.aliyun.com/oceanbase/development-kit/el/9/aarch64/ ++repo=https://mirrors.oceanbase.com/oceanbase/development-kit/el/9/aarch64/ + + [deps] + devdeps-gtest-1.8.0-132022101316.el8.aarch64.rpm +@@ -46,8 +46,9 @@ obdevtools-gcc9-9.3.0-52022092914.el8.aarch64.rpm + obdevtools-llvm-11.0.1-312022092921.el8.aarch64.rpm + + [tools-deps] +-devdeps-oblogmsg-1.0-52022113019.el8.aarch64.rpm ++devdeps-oblogmsg-1.0-142024012415.el8.aarch64.rpm + devdeps-rocksdb-6.22.1.1-52022100420.el8.aarch64.rpm ++obshell-4.2.2.0-122024022614.el8.aarch64.rpm target=community + + [test-utils] + ob-deploy-1.6.0-41.el8.aarch64.rpm target=community +diff --git a/deps/init/oceanbase.el9.x86_64.deps b/deps/init/oceanbase.el9.x86_64.deps +index e9712b3..a359e80 100644 +--- a/deps/init/oceanbase.el9.x86_64.deps ++++ b/deps/init/oceanbase.el9.x86_64.deps +@@ -1,17 +1,17 @@ + [target-default] + os=9 + arch=x86_64 +-repo=http://mirrors.aliyun.com/oceanbase/development-kit/el/8/x86_64/ ++repo=https://mirrors.oceanbase.com/oceanbase/development-kit/el/8/x86_64/ + + [target-community] + os=9 + arch=x86_64 +-repo=http://mirrors.aliyun.com/oceanbase/community/stable/el/8/x86_64/ ++repo=https://mirrors.oceanbase.com/oceanbase/community/stable/el/8/x86_64/ + + [target-apr-el9] + os=9 + arch=x86_64 +-repo=http://mirrors.aliyun.com/oceanbase/development-kit/el/9/x86_64/ ++repo=https://mirrors.oceanbase.com/oceanbase/development-kit/el/9/x86_64/ + + [deps] + devdeps-gtest-1.8.0-132022101316.el8.x86_64.rpm +@@ -47,8 +47,9 @@ obdevtools-gcc9-9.3.0-52022092914.el8.x86_64.rpm + obdevtools-llvm-11.0.1-312022092921.el8.x86_64.rpm + + [tools-deps] +-devdeps-oblogmsg-1.0-52022113019.el8.x86_64.rpm ++devdeps-oblogmsg-1.0-142024012415.el8.x86_64.rpm + devdeps-rocksdb-6.22.1.1-52022100420.el8.x86_64.rpm ++obshell-4.2.2.0-122024022614.el8.x86_64.rpm target=community + + [test-utils] + ob-deploy-1.6.0-41.el8.x86_64.rpm target=community +diff --git a/tools/rpm/systemd/README-CN.md b/tools/rpm/systemd/README-CN.md +deleted file mode 100644 +index 2af52a9..0000000 +--- a/tools/rpm/systemd/README-CN.md ++++ /dev/null +@@ -1,27 +0,0 @@ +-# 通过yum和systemd的方式安装OceanBase数据库 +-如果你想在linux rpm平台上部署oceanbase,可以使用yum进行单节点安装,并通过systemd进行简单管理 +- +-**注意** +- +-- 该方法仅能用做学习研究或测试使用; +-- 千万不要使用此方法用于带有重要数据的场景,比如生产环境。 +- +-## 安装方法 +-现在暂时只支持RPM平台系统,可以通过以下指令进行安装和启动: +-```bash +-yum install oceanbase-ce +-systemctl start oceanbase +-``` +-可以通过以下指令将oceanbase服务设置为开机自启动: +-```bash +-systemctl enable oceanbase +-``` +- +-## systemd介绍 +-Systemd提供了自动化管理oceanbase的启动和停止,可以通过systemctl指令对oceanbase进行管理控制,例如: +-```bash +-systemctl {start|stop|restart|status} oceanbase +-``` +- +-## 通过systemd配置oceanbase +-systemd提供了配置文件`/etc/oceanbase.cnf`,可以在启动前修改配置进行带参启动 +diff --git a/tools/rpm/systemd/README.md b/tools/rpm/systemd/README.md +deleted file mode 100644 +index 89bb399..0000000 +--- a/tools/rpm/systemd/README.md ++++ /dev/null +@@ -1,27 +0,0 @@ +-# Installing OceanBase Database via yum and systemd +-If you want to deploy OceanBase on a Linux RPM platform, you can use yum for single-node installation and simple management with systemd. +- +-**WARNING** +- +-- The installation method is just used for study or test; +-- You should not deploy it with important data as it is not used in production environment. +- +-## Installation Method +-Now systemd only support RPM platform and you can install and run oceanbase service using the following command: +-```bash +-yum install oceanbase-ce +-systemctl start oceanbase +-``` +-You can set the OceanBase service to start automatically on boot using the following command: +-```bash +-systemctl enable oceanbase +-``` +- +-## Overview of systemd +-Systemd provides automatic oceanbase startup and shutdown. It also enables manual server management using the systemctl command. For example: +-```bash +-systemctl {start|stop|restart|status} oceanbase +-``` +- +-## Oceanbase configuration by systemd +-Systemd provide `/etc/oceanbase.cnf` to config oceanbase before startup. +diff --git a/tools/rpm/systemd/profile/post_install.sh.template b/tools/rpm/systemd/profile/post_install.sh.template +deleted file mode 100644 +index 94df4dc..0000000 +--- a/tools/rpm/systemd/profile/post_install.sh.template ++++ /dev/null +@@ -1,14 +0,0 @@ +-#!/bin/bash +- +-echo "execute post install script" +-prefix=@CPACK_PACKAGING_INSTALL_PREFIX@ +- +-# prepare the systemd service unit +-cp -f $prefix/profile/oceanbase.service /etc/systemd/system/oceanbase.service +-chmod 644 /etc/systemd/system/oceanbase.service +-chmod +x $prefix/profile/oceanbase-service.sh +-cp -f $prefix/profile/oceanbase.cnf /etc/oceanbase.cnf +-systemctl daemon-reload +- +-# telemetry +-/bin/bash $prefix/profile/telemetry.sh $1 >/dev/null 2>&1 +\ No newline at end of file +diff --git a/tools/rpm/systemd/profile/post_uninstall.sh.template b/tools/rpm/systemd/profile/post_uninstall.sh.template +deleted file mode 100644 +index 0b3666c..0000000 +--- a/tools/rpm/systemd/profile/post_uninstall.sh.template ++++ /dev/null +@@ -1,6 +0,0 @@ +-#!/bin/bash +- +-echo "execute post uninstall script" +-prefix=@CPACK_PACKAGING_INSTALL_PREFIX@ +- +-rm -rf $prefix/.meta $prefix/log_obshell +\ No newline at end of file +diff --git a/tools/systemd/README-CN.md b/tools/systemd/README-CN.md +new file mode 100644 +index 0000000..3911528 +--- /dev/null ++++ b/tools/systemd/README-CN.md +@@ -0,0 +1,54 @@ ++# 通过软件源安装 OceanBase 数据库 ++如果你想在Linux rpm或deb平台上部署OceanBase,可以使用yum或apt进行单节点安装,并通过systemd进行简单管理 ++ ++**注意** ++ ++- 该方法仅能用做学习研究或测试使用; ++- 千万不要使用此方法用于带有重要数据的场景,比如生产环境。 ++ ++## 通过 YUM 仓库安装 OceanBase ++配置yum源,安装OceanBase,会自动安装所需依赖 ++```bash ++yum install -y yum-utils ++yum-config-manager --add-repo https://mirrors.aliyun.com/oceanbase/OceanBase.repo ++yum install -y oceanbase-ce ++``` ++ ++## 通过 APT 仓库安装 OceanBase ++配置apt源,安装OceanBase,会自动安装所需依赖 ++```bash ++apt update ++apt install -y lsb-release wget gnupg2 mysql-client curl ++wget http://mirrors.oceanbase.com/oceanbase/oceanbase_deb.pub && apt-key add oceanbase_deb.pub ++echo "deb http://mirrors.oceanbase.com/oceanbase/community/stable/$(lsb_release -is | awk '{print tolower($0)}')/$(lsb_release -cs)/$(dpkg --print-architecture)/ ./" | tee -a /etc/apt/sources.list.d/oceanbase.list ++apt update ++apt install -y oceanbase-ce ++``` ++ ++## 依赖列表说明: ++| 组件 | 版本 | ++|-------|-------| ++| oceanbase-ce-libs | 与oceanbase-ce相同版本 | ++| jq | / | ++| oniguruma | / | ++| curl | / | ++ ++# 启动方法 ++可以通过以下指令进行启动: ++```bash ++systemctl start oceanbase ++``` ++ ++可以通过以下指令将oceanbase服务设置为开机自启动: ++```bash ++systemctl enable oceanbase ++``` ++ ++## systemd介绍 ++Systemd提供了自动化管理oceanbase的启动和停止,可以通过systemctl指令对oceanbase进行管理控制,例如: ++```bash ++systemctl {start|stop|restart|status} oceanbase ++``` ++ ++## 通过systemd配置OceanBase ++systemd提供了配置文件`/etc/oceanbase.cnf`,可以在启动前修改配置进行带参启动 +diff --git a/tools/systemd/README.md b/tools/systemd/README.md +new file mode 100644 +index 0000000..2d0832f +--- /dev/null ++++ b/tools/systemd/README.md +@@ -0,0 +1,53 @@ ++# Installing OceanBase Database via yum/apt ++If you want to deploy OceanBase on a Linux RPM platform, you can use yum/apt for single-node installation and simple management with systemd. ++ ++**WARNING** ++ ++- The installation method is just used for study or test; ++- You should not deploy it with important data as it is not used in production environment. ++ ++## Installing OceanBase via yum ++Config yum repo then install OceanBase, it will automatically install the required dependencies. ++```bash ++yum install -y yum-utils ++yum-config-manager --add-repo https://mirrors.aliyun.com/oceanbase/OceanBase.repo ++yum install -y oceanbase-ce ++``` ++ ++## Installing OceanBase via apt ++Config apt repo then install OceanBase, it will automatically install the required dependencies. ++```bash ++apt update ++apt install -y lsb-release wget gnupg2 mysql-client curl ++wget http://mirrors.oceanbase.com/oceanbase/oceanbase_deb.pub && apt-key add oceanbase_deb.pub ++echo "deb http://mirrors.oceanbase.com/oceanbase/community/stable/$(lsb_release -is | awk '{print tolower($0)}')/$(lsb_release -cs)/$(dpkg --print-architecture)/ ./" | tee -a /etc/apt/sources.list.d/oceanbase.list ++apt update ++apt install -y oceanbase-ce ++``` ++ ++## Dependencies list: ++| dependency | version | ++|-------|-------| ++| oceanbase-ce-libs | same version with oceanbase-ce | ++| jq | / | ++| oniguruma | / | ++| curl | / | ++ ++# Startup Method ++You can install and run OceanBase service using the following command: ++```bash ++systemctl start oceanbase ++``` ++You can set the OceanBase service to start automatically on boot using the following command: ++```bash ++systemctl enable oceanbase ++``` ++ ++## Overview of systemd ++Systemd provides automatic OceanBase startup and shutdown. It also enables manual server management using the systemctl command. For example: ++```bash ++systemctl {start|stop|restart|status} oceanbase ++``` ++ ++## Oceanbase configuration by systemd ++Systemd provide `/etc/oceanbase.cnf` to config OceanBase before startup. +diff --git a/tools/rpm/systemd/profile/oceanbase-pre.json b/tools/systemd/profile/oceanbase-pre.json +similarity index 100% +rename from tools/rpm/systemd/profile/oceanbase-pre.json +rename to tools/systemd/profile/oceanbase-pre.json +diff --git a/tools/rpm/systemd/profile/oceanbase-service.sh.template b/tools/systemd/profile/oceanbase-service.sh.template +similarity index 85% +rename from tools/rpm/systemd/profile/oceanbase-service.sh.template +rename to tools/systemd/profile/oceanbase-service.sh.template +index c726e6d..04184ee 100644 +--- a/tools/rpm/systemd/profile/oceanbase-service.sh.template ++++ b/tools/systemd/profile/oceanbase-service.sh.template +@@ -2,12 +2,14 @@ + + DATE=`date '+%Y-%m-%d %H:%M:%S'` + cnf_file='/etc/oceanbase.cnf' +-ip=`hostname -i` ++ip=`hostname -I | awk '/^[0-9]/ {print $1; exit}'` + port=2886 + url="http://localhost" + prefix=@CPACK_PACKAGING_INSTALL_PREFIX@ + unix_socket="$prefix/run/obshell.sock" + obshell="$prefix/bin/obshell" ++etc_folder="$prefix/etc" ++current_user=`whoami` + report=3 + + function prepare_config_json { +@@ -43,6 +45,11 @@ function prepare_config_json { + sed -i "s|HOSTIP|${ip}|g" $json_file + } + ++function prepare_env { ++ echo "change etc owner to ${current_user}" ++ chown $current_user:$current_user "${etc_folder}" ++} ++ + function do_reload_observer { + echo "Not support reload now" + } +@@ -72,8 +79,8 @@ function check_obagent_process { + echo "obshell process with PID $pid is not running." + $obshell admin start --ip $ip --port $port + if [ $? -ne 0 ]; then +- echo "start ob_agent failed" +- exit ++ echo "start ob_shell failed" ++ exit 1 + fi + fi + else +@@ -103,10 +110,10 @@ function check_trace { + state=$(echo "$response" | jq -r '.data.state') + echo "the response state is $state" + if [ "x$state" = "xSUCCEED" ]; then +- echo "request successfully" ++ echo "$content request successfully" + break + elif [ "x$state" = "xFAILED" ]; then +- echo "request failed" ++ echo "$content request failed" + exit 1 + else + count=$((count + 1)) +@@ -123,8 +130,8 @@ function check_trace { + function start_obshell { + $obshell admin start --ip $ip --port $port > /dev/null 2>&1 + if [ $? -ne 0 ]; then +- echo "start ob_agent failed" +- exit ++ echo "start ob_shell failed" ++ exit 1 + fi + } + +@@ -169,19 +176,10 @@ function do_config_observer { + check_trace $trace "config observer" 3 3 + } + +-function deploy_observer { +- echo "oceanbase service deployed at ${DATE}" +- prepare_config_json +- start_obshell +- do_config_observer +-} +- +-function start_observer { +- systemd-notify --ready ++function do_start_observer { + # check observer status + response=$(curl --silent -H "Content-Type: application/json" -X GET --unix-socket $unix_socket $url/api/v1/status) + identity=$(echo "$response" | jq -r '.data.agent.identity') +- systemd-notify "STATUS=Service is running" + if [ "x$identity" = "xCLUSTER AGENT" ]; then + echo "The observer is already bootstrap, please start it immediately" + response=$(curl --silent -H "Content-Type: application/json" -X POST -d '{ +@@ -222,41 +220,40 @@ function start_observer { + echo "The observer has been installed before" + fi + +- systemd-notify --status="Service is ready" +- + if [ -f $prefix/run/observer.pid ]; then + pid=$(cat $prefix/run/observer.pid) +- while true; do +- if [ ! -d "/proc/$pid" ]; then +- echo "Observer process with PID $pid has exited." +- break +- fi ++ if [ ! -d "/proc/$pid" ]; then ++ echo "Observer process with PID $pid has exited." ++ break ++ fi + +- echo "Observer process with PID $pid is still running." +- # check observer state +- response=$(curl --silent -H "Content-Type: application/json" -X GET -d '{ +- "scope": +- { +- "type":"global", +- "target":[] +- }, +- "force": true +- }' --unix-socket $unix_socket $url/api/v1/status) +- ob_state=$(echo "$response" | jq -r '.data.obState') +- if [ "x$ob_state" = "x1" ]; then +- echo "The agent dose not know the observer password" +- echo "1. Please set environment: export OB_ROOT_PASSWORD={root_passowrd}" +- echo "2. Kill all the obshell process" +- echo "3. Restart the agent process: $prefix/bin/obshell admin start --ip $ip --port $port" +- fi +- sleep 30 +- done ++ # check observer state ++ response=$(curl --silent -H "Content-Type: application/json" -X GET --unix-socket $unix_socket $url/api/v1/status) ++ ob_state=$(echo "$response" | jq -r '.data.obState') ++ if [ "x$ob_state" = "x1" ]; then ++ echo "The agent dose not know the observer password" ++ echo "1. Please set environment: export OB_ROOT_PASSWORD={root_passowrd}" ++ echo "2. Kill all the obshell process" ++ echo "3. Restart the agent process: $prefix/bin/obshell admin start --ip $ip --port $port" ++ fi + else + echo "observer PID file not found." + exit 1 + fi + } + ++function start_observer { ++ /bin/bash $prefix/profile/telemetry.sh $report "10" >/dev/null 2>&1 ++ prepare_config_json ++ prepare_env ++ if check_daemon_process; then ++ echo "The agent service is exist" ++ else ++ start_obshell ++ fi ++ do_start_observer ++} ++ + function stop_observer { + check_obagent_process + response=$(curl --silent -H "Content-Type: application/json" -X POST -d '{ +@@ -274,7 +271,6 @@ function stop_observer { + fi + trace=$(echo "$response" | jq -r '.data.id') + check_trace $trace "stop observer" 20 6 +- systemd-notify --status='STOPPING=1' + } + + function reload_observer { +@@ -285,15 +281,7 @@ function reload_observer { + + if [ "x$1" = "xstart" ]; then + echo "oceanbase service started at ${DATE}" +- /bin/bash $prefix/profile/telemetry.sh $report "10" >/dev/null 2>&1 +- prepare_config_json +- if check_daemon_process; then +- echo "The agent service is exist" +- else +- start_obshell +- fi + start_observer +- + elif [ "x$1" = "xstop" ]; then + echo "oceanbase service stopped at ${DATE}" + stop_observer +@@ -306,7 +294,7 @@ elif [ "x$1" = "xdestroy" ]; then + $obshell admin stop > /dev/null 2>&1 + if [ $? -ne 0 ]; then + echo "stop obshell failed" +- exit ++ exit 1 + fi + fi + +diff --git a/tools/rpm/systemd/profile/oceanbase.cnf b/tools/systemd/profile/oceanbase.cnf +similarity index 100% +rename from tools/rpm/systemd/profile/oceanbase.cnf +rename to tools/systemd/profile/oceanbase.cnf +diff --git a/tools/rpm/systemd/profile/oceanbase.service b/tools/systemd/profile/oceanbase.service +similarity index 52% +rename from tools/rpm/systemd/profile/oceanbase.service +rename to tools/systemd/profile/oceanbase.service +index bc3b05f..7e135fa 100644 +--- a/tools/rpm/systemd/profile/oceanbase.service ++++ b/tools/systemd/profile/oceanbase.service +@@ -3,11 +3,22 @@ Description=oceanbase + + [Service] + User=root +-Type=notify ++Type=forking + KillMode=none + ExecStart=/bin/bash /home/admin/oceanbase/profile/oceanbase-service.sh start + ExecStop=/bin/bash /home/admin/oceanbase/profile/oceanbase-service.sh stop + ExecReload=/bin/bash /home/admin/oceanbase/profile/oceanbase-service.sh reload ++PIDFile=/home/admin/oceanbase/run/observer.pid ++TimeoutSec=2000 ++TimeoutStopSec=300 ++Restart=on-failure ++RestartSec=10 ++SuccessExitStatus=SIGKILL ++SendSIGKILL=no ++LimitNOFILE=infinity ++LimitNPROC=infinity ++LimitCORE=infinity ++LimitSTACK=infinity + + [Install] + WantedBy=multi-user.target +\ No newline at end of file +diff --git a/tools/systemd/profile/post_install.sh.template b/tools/systemd/profile/post_install.sh.template +new file mode 100644 +index 0000000..21ad989 +--- /dev/null ++++ b/tools/systemd/profile/post_install.sh.template +@@ -0,0 +1,20 @@ ++#!/bin/bash ++echo "execute post install script" ++prefix=@CPACK_PACKAGING_INSTALL_PREFIX@ ++ ++# prepare the systemd service unit ++cp -f $prefix/profile/oceanbase.service /etc/systemd/system/oceanbase.service ++chmod 644 /etc/systemd/system/oceanbase.service ++chmod +x $prefix/profile/oceanbase-service.sh ++cp -f $prefix/profile/oceanbase.cnf /etc/oceanbase.cnf ++systemctl daemon-reload ++ ++# telemetry ++/bin/bash $prefix/profile/telemetry.sh $1 >/dev/null 2>&1 ++ ++GREEN='\033[32m' ++NC="\033[0m" ++echo -e "${GREEN}To configure OceanBase${NC} : edit /etc/oceanbase.cnf" ++echo -e "${GREEN}To start OceanBase${NC} : systemctl start oceanbase" ++echo -e "${GREEN}To enable OceanBase auto reboot ${NC} : systemctl enable oceanbase" ++echo -e "${GREEN}To get more infomation${NC} : https://www.oceanbase.com/docs/common-oceanbase-database-cn-1000000000640297" +\ No newline at end of file +diff --git a/tools/systemd/profile/post_uninstall.sh.template b/tools/systemd/profile/post_uninstall.sh.template +new file mode 100644 +index 0000000..65e826f +--- /dev/null ++++ b/tools/systemd/profile/post_uninstall.sh.template +@@ -0,0 +1,24 @@ ++#!/bin/bash ++echo "execute post uninstall script" ++prefix=@CPACK_PACKAGING_INSTALL_PREFIX@ ++json_file=$prefix/profile/oceanbase.json ++GREEN='\033[32m' ++NC="\033[0m" ++ ++if [ $1 -eq 0 ]; then ++ rm -rf $prefix/.meta $prefix/log_obshell ++ ++ # prepare clean script ++ echo "find $prefix/ -mindepth 1 -maxdepth 1 ! -name lib -exec rm -rf {} +" > $prefix/oceanbase_clean.sh ++ ++ if [ -f "$json_file" ] && [ -s "$json_file" ]; then ++ redo_dir=$(cat "$json_file" | jq -r '.oceanbase_ce.server.observerConfig.redo_dir') ++ echo "rm -rf $redo_dir" >> $prefix/oceanbase_clean.sh ++ data_dir=$(cat "$json_file" | jq -r '.oceanbase_ce.server.observerConfig.data_dir') ++ echo "rm -rf $data_dir" >> $prefix/oceanbase_clean.sh ++ echo "echo OK" >> $prefix/oceanbase_clean.sh ++ fi ++ ++ echo "Clean oceanbase script can clean ob all configuration files and all data files." ++ echo -e "${GREEN}To clean OceanBase${NC} : bash $prefix/oceanbase_clean.sh" ++fi +\ No newline at end of file +diff --git a/tools/systemd/profile/pre_install.sh.template b/tools/systemd/profile/pre_install.sh.template +new file mode 100644 +index 0000000..b87b154 +--- /dev/null ++++ b/tools/systemd/profile/pre_install.sh.template +@@ -0,0 +1,11 @@ ++#!/bin/bash ++echo "execute pre install script" ++version=@OceanBase_CE_VERSION@ ++ ++if [ "$1" -gt 1 ]; then ++ parent_name=$(cat /proc/$PPID/comm) ++ if [[ "$parent_name" != "ocp_mgragent" ]]; then ++ echo "The upgrade of the oceanbase $version is not allowed." >&2 ++ exit 1 ++ fi ++fi +\ No newline at end of file +diff --git a/tools/rpm/systemd/profile/pre_uninstall.sh.template b/tools/systemd/profile/pre_uninstall.sh.template +similarity index 84% +rename from tools/rpm/systemd/profile/pre_uninstall.sh.template +rename to tools/systemd/profile/pre_uninstall.sh.template +index 23c699d..5c50bde 100644 +--- a/tools/rpm/systemd/profile/pre_uninstall.sh.template ++++ b/tools/systemd/profile/pre_uninstall.sh.template +@@ -1,5 +1,4 @@ + #!/bin/bash +- + echo "execute pre uninstall script" + prefix=@CPACK_PACKAGING_INSTALL_PREFIX@ + +diff --git a/tools/rpm/systemd/profile/telemetry.sh.template b/tools/systemd/profile/telemetry.sh.template +similarity index 100% +rename from tools/rpm/systemd/profile/telemetry.sh.template +rename to tools/systemd/profile/telemetry.sh.template +diff --git a/tools/systemd/profile/telemetry.sh.template.rej b/tools/systemd/profile/telemetry.sh.template.rej +new file mode 100644 +index 0000000..96945a4 +--- /dev/null ++++ b/tools/systemd/profile/telemetry.sh.template.rej +@@ -0,0 +1,10 @@ ++diff a/tools/systemd/profile/telemetry.sh.template b/tools/systemd/profile/telemetry.sh.template (rejected hunks) ++@@ -4,7 +4,7 @@ url="https://openwebapi.oceanbase.com/api/web/oceanbase/report" ++ type=@CPACK_PACKAGE_NAME@ ++ version=@CPACK_PACKAGE_VERSION@ ++ release=@CPACK_RPM_PACKAGE_RELEASE@ ++-ip=$(hostname -i) +++ip=$(hostname -I | awk '/^[0-9]/ {print $1; exit}') ++ hostHash=$(echo -n "$ip" | sha1sum | awk '{print $1}') ++ osName=$(cat /etc/os-release | grep "^ID=" | cut -f2 -d=) ++ osRelease=$(cat /etc/os-release | grep "^VERSION_ID=" | cut -f2 -d=) diff --git a/oceanbase-ce-4.2.1.4.tar.gz b/oceanbase-ce-4.2.1.4.tar.gz new file mode 100644 index 0000000..847706e Binary files /dev/null and b/oceanbase-ce-4.2.1.4.tar.gz differ diff --git a/oceanbase-ce.spec b/oceanbase-ce.spec new file mode 100644 index 0000000..913d7d1 --- /dev/null +++ b/oceanbase-ce.spec @@ -0,0 +1,229 @@ +%define euler_release 104000052024022918 + +Name: oceanbase-ce +Version: 4.2.1.4 +Release: %{euler_release} +Summary: oceanbase-ce +Group: Applications/Databases +License: Mulan PubL v2 +Url: https://open.oceanbase.com/ +Vendor: OceanBase Inc. +Prefix: /home/admin/oceanbase +Requires: curl, jq, systemd, oceanbase-ce-libs = %{version} +BuildRequires: wget, rpm, cpio, make, glibc-devel, glibc-headers, binutils, m4, python3, libtool, libaio +Autoreq: 0 +Source0: oceanbase-ce-%{version}.tar.gz +Patch0: diff.patch + +%global daemon_name oceanbase +%define __os_install_post %{nil} +%define _prefix /home/admin/oceanbase +%description +OceanBase is a distributed relational database +%global __requires_exclude ^(/bin/bash|/usr/bin/.*)$ +%define _unpackaged_files_terminate_build 0 +%global _missing_build_ids_terminate_build 0 +%global arch %{_arch} +%global lto_jobs 10 +%global src_dir %{?src_dir} +%global _find_debuginfo_opts -g +%define __strip %{?src_dir}/deps/3rd/usr/local/oceanbase/devtools/bin/llvm-strip +%undefine __brp_mangle_shebangs +%global _buildsubdir %{name}-%{version}-%{release}.%{arch} +%define _debugsource_template %{nil} +%global debug_package %{nil} + +%package debuginfo +Summary: Debug information for OceanBase +Group: Development/Debug +%description debuginfo +This package provides debug information for package oceanbase-ce. +Debug information is useful when developing applications that use this +package or when debugging this package. + +%package libs +Summary: Libraries for OceanBase +Group: System Environment/Libraries +%description libs +This package contains libraries for OceanBase. + +%package libs-debuginfo +Summary: Debug information for OceanBase Libs +Group: Development/Debug +%description libs-debuginfo +This package provides debug information for package oceanbase-ce-libs. +Debug information is useful when developing applications that use this +package or when debugging this package. + +%package sql-parser +Summary: Sql Parser Libraries for OceanBase +Group: System Environment/Libraries +%description sql-parser +This package contains sql pareser libraries for OceanBase. + +%package utils +Summary: Tools for OceanBase +Group: Development/Tools +%description utils +This package contains tools for OceanBase. + +%package utils-debuginfo +Summary: Debug information for OceanBase Utils +Group: Development/Debug +%description utils-debuginfo +This package provides debug information for package oceanbase-ce-utils. +Debug information is useful when developing applications that use this +package or when debugging this package. + +%prep +%setup -q +%patch0 -p1 + +%build +chmod u+x build.sh +bash build.sh clean +bash build.sh release -DOB_BUILD_RPM=ON -DENABLE_FATAL_ERROR_HANG=OFF -DENABLE_AUTO_FDO=ON -DENABLE_THIN_LTO=ON \ + -DOB_STATIC_LINK_LGPL_DEPS=OFF -DCMAKE_INSTALL_PREFIX=%{_prefix} -DLTO_JOBS=%{lto_jobs} --init +cd build_release + +make observer ob_sql_proxy_parser_static obtable obtable_static ob_admin ob_error -j16; +make install DESTDIR=$RPM_BUILD_ROOT + +mv %{_buildrootdir}/%{_buildsubdir}/%{_prefix}/bin/obshell %{_builddir}/obshell +%{_rpmconfigdir}/find-debuginfo.sh %{?_find_debuginfo_opts} %{_builddir}/%{_buildsubdir}; %{nil} +mv %{_builddir}/obshell %{_buildrootdir}/%{_buildsubdir}/%{_prefix}/bin/obshell + +echo "/usr/lib/debug/%{_prefix}/bin/observer.debug" > %{buildroot}/debuginfo_filelist + +echo "/usr/lib/debug/%{_prefix}/lib/libaio.so.debug" > %{buildroot}/libs_debuginfo_filelist +echo "/usr/lib/debug/%{_prefix}/lib/libaio.so.1.debug" >> %{buildroot}/libs_debuginfo_filelist +echo "/usr/lib/debug/%{_prefix}/lib/libaio.so.1.0.1.debug" >> %{buildroot}/libs_debuginfo_filelist +echo "/usr/lib/debug/%{_prefix}/lib/libmariadb.so.debug" >> %{buildroot}/libs_debuginfo_filelist +echo "/usr/lib/debug/%{_prefix}/lib/libmariadb.so.3.debug" >> %{buildroot}/libs_debuginfo_filelist + +echo "/usr/lib/debug/usr/bin/ob_admin.debug" > %{buildroot}/utils_debuginfo_filelist +echo "/usr/lib/debug/usr/bin/ob_error.debug" >> %{buildroot}/utils_debuginfo_filelist + +# package infomation +%files +%defattr(-,root,root,0777) +%{_prefix}/admin +%{_prefix}/bin/import_srs_data.py +%{_prefix}/bin/import_time_zone_info.py +%{_prefix}/bin/observer +%{_prefix}/bin/obshell +%{_prefix}/etc/default_srs_data_mysql.sql +%{_prefix}/etc/fill_help_tables-ob.sql +%{_prefix}/etc/oceanbase_upgrade_dep.yml +%{_prefix}/etc/timezone_V1.log +%{_prefix}/etc/upgrade_checker.py +%{_prefix}/etc/upgrade_health_checker.py +%{_prefix}/etc/upgrade_post.py +%{_prefix}/etc/upgrade_pre.py +%{_prefix}/profile + +%files debuginfo -f %{buildroot}/debuginfo_filelist +%defattr(-,root,root,0777) + +%files libs +%defattr(-,root,root,0777) +%{_prefix}/lib/libaio.so +%{_prefix}/lib/libaio.so.1 +%{_prefix}/lib/libaio.so.1.0.1 +%{_prefix}/lib/libmariadb.so +%{_prefix}/lib/libmariadb.so.3 + +%files libs-debuginfo -f %{buildroot}/libs_debuginfo_filelist +%defattr(-,root,root,0777) + +%files sql-parser +%defattr(-,root,root,0777) +%{_prefix}/include/ob_item_type.h +%{_prefix}/include/ob_sql_mode.h +%{_prefix}/include/ob_sql_parser.h +%{_prefix}/include/parse_malloc.h +%{_prefix}/include/parse_node.h +%{_prefix}/include/parser_proxy_func.h +%{_prefix}/lib/libob_sql_proxy_parser_static.a + +%files utils +%defattr(-,root,root,0777) +/usr/bin/ob_admin +/usr/bin/ob_error + +%files utils-debuginfo -f %{buildroot}/utils_debuginfo_filelist +%defattr(-,root,root,0777) + +%pre +echo "execute pre install script" +version=%{version} + +if [ "$1" -gt 1 ]; then + parent_name=$(cat /proc/$PPID/comm) + if [[ "$parent_name" != "ocp_mgragent" ]]; then + echo "The upgrade of the oceanbase $version is not allowed." >&2 + exit 1 + fi +fi + +%post +echo "execute post install script" +cp -f %{_prefix}/profile/oceanbase.service /etc/systemd/system/oceanbase.service +chmod 644 /etc/systemd/system/oceanbase.service +chmod +x %{_prefix}/profile/oceanbase-service.sh +cp -f %{_prefix}/profile/oceanbase.cnf /etc/oceanbase.cnf +systemctl daemon-reload + +# telemetry +/bin/bash %{_prefix}/profile/telemetry.sh $1 >/dev/null 2>&1 + +GREEN='\033[32m' +NC="\033[0m" +echo -e "${GREEN}To configure OceanBase${NC} : edit /etc/oceanbase.cnf" +echo -e "${GREEN}To start OceanBase${NC} : systemctl start oceanbase" +echo -e "${GREEN}To enable OceanBase auto reboot ${NC} : systemctl enable oceanbase" +echo -e "${GREEN}To get more infomation${NC} : https://www.oceanbase.com/docs/common-oceanbase-database-cn-1000000000640297" + +%preun +echo "execute pre uninstall script" +systemctl stop %{daemon_name} +systemctl disable %{daemon_name} +/bin/bash %{_prefix}/profile/oceanbase-service.sh destroy +rm -f /etc/systemd/system/oceanbase.service /etc/oceanbase.cnf +systemctl daemon-reload + +# telemetry +/bin/bash %{_prefix}/profile/telemetry.sh $1 >/dev/null 2>&1 + +%postun +echo "execute post uninstall script" +json_file=%{_prefix}/profile/oceanbase.json +GREEN='\033[32m' +NC="\033[0m" + +if [ $1 -eq 0 ]; then + rm -rf %{_prefix}/.meta %{_prefix}/log_obshell + + # prepare clean script + echo "find %{_prefix}/ -mindepth 1 -maxdepth 1 ! -name lib -exec rm -rf {} +" > %{_prefix}/oceanbase_clean.sh + + if [ -f "$json_file" ] && [ -s "$json_file" ]; then + redo_dir=$(cat "$json_file" | jq -r '.oceanbase_ce.server.observerConfig.redoDir') + echo "rm -rf $redo_dir" >> %{_prefix}/oceanbase_clean.sh + data_dir=$(cat "$json_file" | jq -r '.oceanbase_ce.server.observerConfig.dataDir') + echo "rm -rf $data_dir" >> %{_prefix}/oceanbase_clean.sh + echo "echo OK" >>%{_prefix}/oceanbase_clean.sh + fi + + echo "Clean oceanbase script can clean ob all configuration files and all data files." + echo -e "${GREEN}To clean OceanBase${NC} : bash %{_prefix}/oceanbase_clean.sh" +fi + +%changelog +* Thu Apr 25 2024 wangzelin - 4.2.1.4-104000052024022918 +- new features: optimize systemd +- fix bugs: update license + +* Mon Mar 18 2024 wangzelin - 4.2.1.4-104000052024022918 +- new features: support for packaging with spec files +- new features: support for packaging on euler