From a46986a8f388f548e057f0c2a2e976beab9bbcc7 Mon Sep 17 00:00:00 2001 From: jg0 Date: Tue, 1 Mar 2022 15:45:48 +0800 Subject: [PATCH] fix libunwind coredump under arm os --- deps/3rd/oceanbase.el7.aarch64.deps | 2 +- deps/3rd/oceanbase.el7.x86_64.deps | 2 +- deps/3rd/oceanbase.el8.x86_64.deps | 2 +- deps/oblib/src/lib/CMakeLists.txt | 3 +- deps/oblib/src/lib/signal/ob_libunwind.c | 107 +++++++++++++ deps/oblib/src/lib/signal/ob_libunwind.h | 23 +++ .../src/lib/signal/ob_signal_handlers.cpp | 3 +- .../src/lib/signal/ob_signal_processor.cpp | 4 +- deps/oblib/src/lib/signal/ob_signal_utils.cpp | 89 +---------- deps/oblib/src/lib/signal/ob_signal_utils.h | 4 - .../{safe_snprintf.cpp => safe_snprintf.c} | 47 ++---- deps/oblib/src/lib/signal/safe_snprintf.h | 10 +- rpm/oceanbase.deps | 141 ++++++++++++++++++ 13 files changed, 298 insertions(+), 139 deletions(-) create mode 100644 deps/oblib/src/lib/signal/ob_libunwind.c create mode 100644 deps/oblib/src/lib/signal/ob_libunwind.h rename deps/oblib/src/lib/signal/{safe_snprintf.cpp => safe_snprintf.c} (70%) create mode 100644 rpm/oceanbase.deps diff --git a/deps/3rd/oceanbase.el7.aarch64.deps b/deps/3rd/oceanbase.el7.aarch64.deps index a74c07ec5..2bf560355 100644 --- a/deps/3rd/oceanbase.el7.aarch64.deps +++ b/deps/3rd/oceanbase.el7.aarch64.deps @@ -7,7 +7,7 @@ repo=http://mirrors.aliyun.com/oceanbase/development-kit/el/7/aarch64/ devdeps-gtest-1.8.0-3.el7.aarch64.rpm devdeps-isa-l-static-2.22.0-3.el7.aarch64.rpm devdeps-libcurl-static-7.29.0-3.el7.aarch64.rpm -devdeps-libunwind-static-1.5.0-3.el7.aarch64.rpm +devdeps-libunwind-static-1.6.2-11.el7.aarch64.rpm devdeps-mariadb-connector-c-3.1.12-3.el7.aarch64.rpm devdeps-openssl-static-1.0.1e-3.el7.aarch64.rpm devdeps-libaio-0.3.112-3.el7.aarch64.rpm diff --git a/deps/3rd/oceanbase.el7.x86_64.deps b/deps/3rd/oceanbase.el7.x86_64.deps index 2df3e5d93..58f69f5f8 100644 --- a/deps/3rd/oceanbase.el7.x86_64.deps +++ b/deps/3rd/oceanbase.el7.x86_64.deps @@ -7,7 +7,7 @@ repo=http://mirrors.aliyun.com/oceanbase/development-kit/el/7/x86_64/ devdeps-gtest-1.8.0-3.el7.x86_64.rpm devdeps-isa-l-static-2.22.0-3.el7.x86_64.rpm devdeps-libcurl-static-7.29.0-3.el7.x86_64.rpm -devdeps-libunwind-static-1.5.0-3.el7.x86_64.rpm +devdeps-libunwind-static-1.6.2-11.el7.x86_64.rpm devdeps-mariadb-connector-c-3.1.12-3.el7.x86_64.rpm devdeps-openssl-static-1.0.1e-3.el7.x86_64.rpm devdeps-libaio-0.3.112-3.el7.x86_64.rpm diff --git a/deps/3rd/oceanbase.el8.x86_64.deps b/deps/3rd/oceanbase.el8.x86_64.deps index 2f025d5d8..ce824ec98 100644 --- a/deps/3rd/oceanbase.el8.x86_64.deps +++ b/deps/3rd/oceanbase.el8.x86_64.deps @@ -7,7 +7,7 @@ repo=http://mirrors.aliyun.com/oceanbase/development-kit/el/8/x86_64/ devdeps-gtest-1.8.0-3.el8.x86_64.rpm devdeps-isa-l-static-2.22.0-3.el8.x86_64.rpm devdeps-libcurl-static-7.29.0-3.el8.x86_64.rpm -devdeps-libunwind-static-1.5.0-3.el8.x86_64.rpm +devdeps-libunwind-static-1.6.2-11.el8.x86_64.rpm devdeps-mariadb-connector-c-3.1.12-3.el8.x86_64.rpm devdeps-openssl-static-1.0.1e-3.el8.x86_64.rpm devdeps-libaio-0.3.112-3.el8.x86_64.rpm diff --git a/deps/oblib/src/lib/CMakeLists.txt b/deps/oblib/src/lib/CMakeLists.txt index 60e87d983..49f49144b 100644 --- a/deps/oblib/src/lib/CMakeLists.txt +++ b/deps/oblib/src/lib/CMakeLists.txt @@ -11,6 +11,8 @@ ob_lib_add_target(oblib_lib_charset charset/ob_ctype_utf8.c charset/ob_dtoa.c hash/xxhash.c + signal/safe_snprintf.c + signal/ob_libunwind.c ) disable_pch(oblib_lib_charset) @@ -209,7 +211,6 @@ ob_set_subtarget(oblib_lib common word_segment/ob_word_segment.cpp encode/ob_base64_encode.cpp signal/ob_memory_cutter.cpp - signal/safe_snprintf.cpp signal/ob_signal_struct.cpp signal/ob_signal_utils.cpp signal/ob_signal_handlers.cpp diff --git a/deps/oblib/src/lib/signal/ob_libunwind.c b/deps/oblib/src/lib/signal/ob_libunwind.c new file mode 100644 index 000000000..c08b88957 --- /dev/null +++ b/deps/oblib/src/lib/signal/ob_libunwind.c @@ -0,0 +1,107 @@ +/** + * Copyright (c) 2021 OceanBase + * OceanBase CE is licensed under Mulan PubL v2. + * You can use this software according to the terms and conditions of the Mulan PubL v2. + * You may obtain a copy of Mulan PubL v2 at: + * http://license.coscl.org.cn/MulanPubL-2.0 + * THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND, + * EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT, + * MERCHANTABILITY OR FIT FOR A PARTICULAR PURPOSE. + * See the Mulan PubL v2 for more details. + */ + +#include "lib/signal/ob_libunwind.h" +#include "lib/signal/safe_snprintf.h" +#define UNW_LOCAL_ONLY +#include + +static const int MAX_BT_ADDRESS_CNT = 100; +static int safe_backtrace_(unw_context_t *context, char *buf, int64_t len, int64_t *pos); +static ssize_t get_stack_trace_inplace( + unw_context_t *context, unw_cursor_t *cursor, uintptr_t *addresses, size_t max_addresses); +static int8_t get_frame_info(unw_cursor_t *cursor, uintptr_t *ip); + +int safe_backtrace(char *buf, int64_t len, int64_t *pos) +{ + int ret = 0; + unw_context_t context; + if (unw_getcontext(&context) < 0) { + ret = -1; + } else { + ret = safe_backtrace_(&context, buf, len, pos); + } + return ret; +} + +static int safe_backtrace_(unw_context_t *context, char *buf, int64_t len, int64_t *pos) +{ + int ret = 0; + unw_cursor_t cursor; + uintptr_t addrs[MAX_BT_ADDRESS_CNT]; + int n = get_stack_trace_inplace(context, &cursor, addrs, sizeof(addrs) / sizeof(addrs[0])); + *pos = 0; + if (n < 0) { + ret = -1; + } else { + for (int i = 0; i < n; i++) { + int count = safe_snprintf(buf + *pos, len - *pos, "0x%lx", addrs[i]); + count++; // for space + if (count > 0 && *pos + count < len) { + *pos += count; + buf[*pos - 1] = ' '; + } else { + // buf not enough + break; + } + } + --*pos; + } + buf[*pos] = '\0'; + return ret; +} + +ssize_t get_stack_trace_inplace( + unw_context_t *context, unw_cursor_t *cursor, uintptr_t *addresses, size_t max_addresses) +{ + if (max_addresses == 0) { + return 0; + } + if (unw_init_local(cursor, context) < 0) { + return -1; + } + if (!get_frame_info(cursor, addresses)) { + return -1; + } + ++addresses; + size_t count = 1; + for (; count != max_addresses; ++count, ++addresses) { + int r = unw_step(cursor); + if (r < 0) { + return -1; + } + if (r == 0) { + break; + } + if (!get_frame_info(cursor, addresses)) { + return -1; + } + } + return count; +} + +int8_t get_frame_info(unw_cursor_t *cursor, uintptr_t *ip) +{ + unw_word_t uip; + if (unw_get_reg(cursor, UNW_REG_IP, &uip) < 0) { + return 0; + } + int r = unw_is_signal_frame(cursor); + if (r < 0) { + return 0; + } + // Use previous instruction in normal (call) frames (because the + // return address might not be in the same function for noreturn functions) + // but not in signal frames. + *ip = uip - (r == 0); + return 1; +} diff --git a/deps/oblib/src/lib/signal/ob_libunwind.h b/deps/oblib/src/lib/signal/ob_libunwind.h new file mode 100644 index 000000000..57538df71 --- /dev/null +++ b/deps/oblib/src/lib/signal/ob_libunwind.h @@ -0,0 +1,23 @@ +/** + * Copyright (c) 2021 OceanBase + * OceanBase CE is licensed under Mulan PubL v2. + * You can use this software according to the terms and conditions of the Mulan PubL v2. + * You may obtain a copy of Mulan PubL v2 at: + * http://license.coscl.org.cn/MulanPubL-2.0 + * THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND, + * EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT, + * MERCHANTABILITY OR FIT FOR A PARTICULAR PURPOSE. + * See the Mulan PubL v2 for more details. + */ + +#ifndef OCEANBASE_LIBUNWIND_BT_H_ +#define OCEANBASE_LIBUNWIND_BT_H_ + +#include +#include "lib/utility/ob_macro_utils.h" + +EXTERN_C_BEGIN +extern int safe_backtrace(char *buf, int64_t len, int64_t *pos); +EXTERN_C_END + +#endif diff --git a/deps/oblib/src/lib/signal/ob_signal_handlers.cpp b/deps/oblib/src/lib/signal/ob_signal_handlers.cpp index a90d0173e..97b94f391 100644 --- a/deps/oblib/src/lib/signal/ob_signal_handlers.cpp +++ b/deps/oblib/src/lib/signal/ob_signal_handlers.cpp @@ -16,6 +16,7 @@ #include #include "lib/profile/ob_trace_id.h" #include "lib/utility/utility.h" +#include "lib/signal/ob_libunwind.h" #include "lib/signal/ob_signal_struct.h" #include "lib/signal/ob_signal_utils.h" #include "lib/signal/ob_memory_cutter.h" @@ -80,7 +81,7 @@ void coredump_cb(int sig, siginfo_t* si) // backtrace char bt[256]; int64_t len = 0; - safe_backtrace(bt, sizeof(bt) - 1, len); + safe_backtrace(bt, sizeof(bt) - 1, &len); bt[len++] = '\0'; // trace_id const uint64_t* trace_id = ObCurTraceId::get(); diff --git a/deps/oblib/src/lib/signal/ob_signal_processor.cpp b/deps/oblib/src/lib/signal/ob_signal_processor.cpp index 6f816cece..faf13fef2 100644 --- a/deps/oblib/src/lib/signal/ob_signal_processor.cpp +++ b/deps/oblib/src/lib/signal/ob_signal_processor.cpp @@ -50,12 +50,10 @@ int ObSigBTOnlyProcessor::prepare() int64_t tid = syscall(SYS_gettid); char tname[16]; prctl(PR_GET_NAME, tname); - unw_context_t uctx; - unw_getcontext(&uctx); int64_t count = 0; count = safe_snprintf(buf_ + pos_, len - pos_, "tid: %ld, tname: %s, lbt: ", tid, tname); pos_ += count; - safe_backtrace(uctx, buf_ + pos_, len - pos_, count); + safe_backtrace(buf_ + pos_, len - pos_, &count); pos_ += count; buf_[pos_++] = '\n'; return ret; diff --git a/deps/oblib/src/lib/signal/ob_signal_utils.cpp b/deps/oblib/src/lib/signal/ob_signal_utils.cpp index f4f8d2396..15ea3689d 100644 --- a/deps/oblib/src/lib/signal/ob_signal_utils.cpp +++ b/deps/oblib/src/lib/signal/ob_signal_utils.cpp @@ -18,6 +18,7 @@ #include "lib/ob_errno.h" #include "lib/utility/ob_macro_utils.h" #include "lib/charset/ob_mysql_global.h" +#include "lib/signal/ob_libunwind.h" namespace oceanbase { namespace common { @@ -33,94 +34,6 @@ void safe_sleep_micros(int64_t usec) nanosleep(&ts, nullptr); } -bool get_frame_info(unw_cursor_t* cursor, uintptr_t& ip) -{ - unw_word_t uip; - if (unw_get_reg(cursor, UNW_REG_IP, &uip) < 0) { - return false; - } - int r = unw_is_signal_frame(cursor); - if (r < 0) { - return false; - } - // Use previous instruction in normal (call) frames (because the - // return address might not be in the same function for noreturn functions) - // but not in signal frames. - ip = uip - (r == 0); - return true; -} - -/* From facebook-folly */ -ssize_t get_stack_trace_inplace( - unw_context_t& context, unw_cursor_t& cursor, uintptr_t* addresses, size_t max_addresses) -{ - if (max_addresses == 0) { - return 0; - } - if (unw_init_local(&cursor, &context) < 0) { - return -1; - } - if (!get_frame_info(&cursor, *addresses)) { - return -1; - } - ++addresses; - size_t count = 1; - for (; count != max_addresses; ++count, ++addresses) { - int r = unw_step(&cursor); - if (r < 0) { - return -1; - } - if (r == 0) { - break; - } - if (!get_frame_info(&cursor, *addresses)) { - return -1; - } - } - return count; -} - -int safe_backtrace(char* buf, int64_t len, int64_t& pos) -{ - int ret = OB_SUCCESS; - unw_context_t context; - if (unw_getcontext(&context) < 0) { - ret = OB_ERROR; - } else { - ret = safe_backtrace(context, buf, len, pos); - } - return ret; -} - -static const int MAX_BT_ADDRESS_CNT = 100; - -int safe_backtrace(unw_context_t& context, char* buf, int64_t len, int64_t& pos) -{ - int ret = OB_SUCCESS; - unw_cursor_t cursor; - uintptr_t addrs[MAX_BT_ADDRESS_CNT]; - int n = get_stack_trace_inplace(context, cursor, addrs, ARRAYSIZEOF(addrs)); - pos = 0; - if (n < 0) { - ret = OB_ERROR; - } else { - for (int i = 0; i < n; i++) { - int count = safe_snprintf(buf + pos, len - pos, "0x%lx", addrs[i]); - count++; // for space - if (count > 0 && pos + count < len) { - pos += count; - buf[pos - 1] = ' '; - } else { - // buf not enough - break; - } - } - pos--; - } - buf[pos] = '\0'; - return ret; -} - __thread ObJumpBuf* g_jmp = nullptr; void crash_restore_handler(int sig, siginfo_t* s, void* p) diff --git a/deps/oblib/src/lib/signal/ob_signal_utils.h b/deps/oblib/src/lib/signal/ob_signal_utils.h index bb9cd8367..c9ba13bd9 100644 --- a/deps/oblib/src/lib/signal/ob_signal_utils.h +++ b/deps/oblib/src/lib/signal/ob_signal_utils.h @@ -21,8 +21,6 @@ #include #include #include -#define UNW_LOCAL_ONLY -#include #include "lib/signal/ob_signal_struct.h" #include "lib/signal/safe_snprintf.h" #include "lib/utility/ob_macro_utils.h" @@ -33,8 +31,6 @@ namespace oceanbase { namespace common { void safe_sleep_micros(int64_t usec); -int safe_backtrace(unw_context_t& context, char* buf, int64_t len, int64_t& pos); -int safe_backtrace(char* buf, int64_t len, int64_t& pos); struct DLogLevel { enum DLogLevelEnum { DEBUG, INFO, WARN, ERROR }; diff --git a/deps/oblib/src/lib/signal/safe_snprintf.cpp b/deps/oblib/src/lib/signal/safe_snprintf.c similarity index 70% rename from deps/oblib/src/lib/signal/safe_snprintf.cpp rename to deps/oblib/src/lib/signal/safe_snprintf.c index f4b60dc40..01de0e6fb 100644 --- a/deps/oblib/src/lib/signal/safe_snprintf.cpp +++ b/deps/oblib/src/lib/signal/safe_snprintf.c @@ -1,35 +1,16 @@ -/* - * twemcache - Twitter memcached. - * Copyright (c) 2012, Twitter, Inc. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * * Neither the name of the Twitter nor the names of its contributors - * may be used to endorse or promote products derived from this software - * without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" - * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL BE LIABLE FOR ANY - * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF - * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +/** + * Copyright (c) 2021 OceanBase + * OceanBase CE is licensed under Mulan PubL v2. + * You can use this software according to the terms and conditions of the Mulan PubL v2. + * You may obtain a copy of Mulan PubL v2 at: + * http://license.coscl.org.cn/MulanPubL-2.0 + * THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND, + * EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT, + * MERCHANTABILITY OR FIT FOR A PARTICULAR PURPOSE. + * See the Mulan PubL v2 for more details. */ #include "lib/signal/safe_snprintf.h" -namespace oceanbase { -namespace common { static const char HEX[] = "0123456789abcdef"; static char* safe_utoa(int _base, uint64_t val, char* buf) @@ -129,14 +110,14 @@ static char* safe_itoa(int base, int64_t val, char* buf) static const char* safe_check_longlong(const char* fmt, int32_t* have_longlong) { - *have_longlong = false; + *have_longlong = 0; if (*fmt == 'l') { fmt++; if (*fmt != 'l') { *have_longlong = (sizeof(long) == sizeof(int64_t)); } else { fmt++; - *have_longlong = true; + *have_longlong = 1; } } return fmt; @@ -147,7 +128,7 @@ int _safe_vsnprintf(char* to, size_t size, const char* format, va_list ap) char* start = to; char* end = start + size - 1; for (; *format; ++format) { - int32_t have_longlong = false; + int32_t have_longlong = 0; if (*format != '%') { if (to == end) { /* end of buffer */ break; @@ -228,5 +209,3 @@ int _safe_snprintf(char* to, size_t n, const char* fmt, ...) va_end(args); return result; } -} // namespace common -} // namespace oceanbase diff --git a/deps/oblib/src/lib/signal/safe_snprintf.h b/deps/oblib/src/lib/signal/safe_snprintf.h index fa8e8dca3..0bba29293 100644 --- a/deps/oblib/src/lib/signal/safe_snprintf.h +++ b/deps/oblib/src/lib/signal/safe_snprintf.h @@ -17,11 +17,11 @@ #include #include #include - -namespace oceanbase { -namespace common { #include #include +#include "lib/utility/ob_macro_utils.h" + +EXTERN_C_BEGIN /** A (very) limited version of snprintf. @@ -41,6 +41,6 @@ int _safe_snprintf(char* to, size_t n, const char* fmt, ...); #define safe_vsnprintf(_s, _n, _f, _a) _safe_vsnprintf((char*)(_s), (size_t)(_n), _f, _a) -} // namespace common -} // namespace oceanbase +EXTERN_C_END + #endif // OCEANBASE_SAFE_SNPRINTF_H_ diff --git a/rpm/oceanbase.deps b/rpm/oceanbase.deps new file mode 100644 index 000000000..ef8bec632 --- /dev/null +++ b/rpm/oceanbase.deps @@ -0,0 +1,141 @@ +[target] +os=7 +arch=aarch64 +[deps] +ob-lua-5.4.3-20210419222527.alios7.aarch64.rpm=current +ob-ncurses-6.2-20200624000532.alios7.aarch64.rpm=test +ob-elfutils-0.181-20201030224029.alios7.aarch64.rpm +keyutils-libs-devel-1.5.8-3.3.alios7.aarch64 +libcom_err-devel-1.42.9-7.2.alios7.aarch64 +libselinux-devel-2.2.2-6.3.alios7.aarch64 +libsepol-devel-2.1.9-3.3.alios7.aarch64 +libverto-devel-0.2.5-4.3.alios7.aarch64 +pcre-devel-8.32-15.2.alios7.aarch64 +krb5-devel-1.13.2-10.2.alios7.aarch64 +babassl-ob-8.1.3-1900607.alios7.aarch64.rpm=test +libcurl-devel-7.29.0-25.2.alios7.aarch64.rpm +libcurl-7.29.0-25.2.alios7.aarch64.rpm +openldap-devel-2.4.40-8.2.alios7.aarch64.rpm +openldap-2.4.40-8.2.alios7.aarch64.rpm +libaio-devel-0.3.109-13.2.alios7.aarch64.rpm +t-ant-light-drcmessage-for-bt-1.0.0-20210712071538.alios7.aarch64.rpm=test +ob-rocksdb-6.22.1-20210805175734.alios7.aarch64.rpm +obclient-1.2.3-20210701163349.el7.alios7.aarch64.rpm +ob-apr-1.6.5-20200217230442.alios7.aarch64.rpm=test +ob-mxml-2.12.0-20200219103712.alios7.aarch64.rpm=test +ob-oss-c-sdk-3.9.2-20200729160751.alios7.aarch64.rpm=test +gcc52-5.2.0-1.alios7.aarch64.rpm +expat-2.1.0-8.3.alios7.aarch64.rpm +expat-devel-2.1.0-8.3.alios7.aarch64.rpm +ali-dds-aliws-1.4.0.2-1862830.alios7.aarch64.rpm=test +t-midware-vipserver-c-client-arm-1.0.14.3-20191125213454.alios7.aarch64.rpm +ob-boost-1.53.0-20200218205728.alios7.aarch64.rpm=test +zlib-devel-1.2.7-15.2.alios7.aarch64.rpm +zlib-1.2.7-15.2.alios7.aarch64.rpm +ob-rapidjson-1.1.0-20211015163659.alios7.aarch64.rpm +#second level requires analysis: +binutils-2.27-9.base.alios7.aarch64.rpm +binutils-devel-2.27-9.base.alios7.aarch64.rpm +isal-2.22.0-20200623101955.alios7.aarch64.rpm=test +ob-llvm2-6.0.1-20200220185349.alios7.aarch64.rpm=test +obs-libunwind-1.0.3-20220121155402.alios7.aarch64.rpm=test +# compatible with el6 +ob-cmake3-3.22.1-20211230145243.alios7.aarch64=test +ob-clang11-11.1.0-20220110114534.alios7.aarch64=test +ob-lld11-11.0.0-20210106153627.alios7.aarch64.rpm +ob-gtest-1.8.2-20200214192053.alios7.aarch64.rpm=test +# ofs +ob-ofs-devel-1.1.0-20210812171031.el7.aarch64.rpm=current +ob-libevent-2.1.10-20200303195414.alios7.aarch64.rpm=test +ob-jemalloc-5.2.1-20201013165401.alios7.aarch64.rpm=test + + +[target] +os=7 +arch=x86_64 +[deps] +ob-lua-5.4.3-20210419222527.alios7.x86_64.rpm=current +ob-ncurses-6.2-20200624000532.alios7.x86_64.rpm=test +ob-elfutils-0.181-20201030224029.alios7.x86_64.rpm +keyutils-libs-devel-1.5.8-3.1.alios7.x86_64 +libcom_err-devel-1.42.9-7.1.alios7.x86_64 +libselinux-devel-2.2.2-6.1.alios7.x86_64 +libsepol-devel-2.1.9-3.1.alios7.x86_64 +libverto-devel-0.2.5-4.1.alios7.x86_64 +pcre-devel-8.32-15.1.alios7.x86_64 +krb5-devel-1.13.2-10.1.alios7.x86_64 +babassl-ob-8.1.3-1900407.alios7.x86_64.rpm=test +libcurl-devel-7.29.0-25.1.alios7.x86_64.rpm +libcurl-7.29.0-25.1.alios7.x86_64.rpm +openldap-devel-2.4.40-8.1.alios7.x86_64.rpm +openldap-2.4.40-8.1.alios7.x86_64.rpm +libaio-devel-0.3.109-13.1.alios7.x86_64.rpm +t-ant-light-drcmessage-for-bt-1.0.0-20210712071538.alios7.x86_64.rpm=test +ob-rocksdb-6.22.1-20210805175734.alios7.x86_64.rpm +obclient-1.2.3-20210701163349.el7.alios7.x86_64.rpm +ob-apr-1.6.5-20200217230442.alios7.x86_64.rpm=test +ob-mxml-2.12.0-20200219103712.alios7.x86_64.rpm=test +ob-oss-c-sdk-3.9.2-20200729160751.alios7.x86_64.rpm=test +gcc52-5.2.0-445134.el7.x86_64.rpm=current +expat-2.1.0-8.1.alios7.x86_64.rpm +expat-devel-2.1.0-8.1.alios7.x86_64.rpm +ali-dds-aliws-1.4.0.1-638651.el7.x86_64 +t-midware-vipserver-cpp-client-1.0.14.6-20210304162233.alios7.x86_64 +ob-boost-1.53.0-20210225114205.alios7.x86_64.rpm=test +zlib-devel-1.2.7-16.2.alios7.x86_64.rpm +zlib-1.2.7-16.2.alios7.x86_64.rpm +ob-rapidjson-1.1.0-20211015163659.alios7.x86_64.rpm +#second level requires analysis: +binutils-2.30-20180325160334.alios7.x86_64 +ob-binutils-devel2-2.29.1-20200218233710.alios7.x86_64.rpm=test +isal-2.22.0-20200623101955.alios7.x86_64.rpm=test +ob-llvm-6.0.1-5.x86_64.rpm=test +obs-libunwind-1.0.3-20220121155402.alios7.x86_64.rpm=test +# compatible with el6 +ob-cmake3-3.22.1-20211230145243.alios7.x86_64.rpm=test +ob-clang11-11.1.0-20220110114534.alios7.x86_64.rpm=test +ob-lld11-11.0.0-20210106153627.alios7.x86_64.rpm +ob-gtest-1.8.0-1.x86_64 +# ofs +ob-ofs-devel-1.1.0-20210812171031.el7.x86_64.rpm=current +ob-libevent-2.1.10-20190605211727.alios7.x86_64.rpm=test +ob-jemalloc-5.2.1-20201013165401.alios7.x86_64.rpm=test + +[target] +os=6 +arch=x86_64 +[deps] +ob-lua-5.4.3-20210419222527.alios6.x86_64.rpm=current +ob-ncurses-6.2-20200624000532.alios6.x86_64.rpm=test +libaio-devel-0.3.107-10.1.alios6.x86_64 +babassl-ob-8.1.3-1900407.alios6.x86_64.rpm=test +isal-2.22.0-20200623101955.alios6.x86_64.rpm=test +t-ant-light-drcmessage-for-bt-1.0.0-20210611161024.alios6.x86_64.rpm=test +ob-rocksdb-6.22.1-20210805175734.alios6.x86_64.rpm +curl-7.29.0-1.el6.x86_64 +obclient-1.2.3-20210701163349.el6.alios6.x86_64.rpm +ob-apr-1.6.5-20200217230442.alios6.x86_64.rpm=test +ob-mxml-2.12.0-20200219103712.alios6.x86_64.rpm=test +ob-oss-c-sdk-3.9.2-20200729160751.alios6.x86_64.rpm=test +gcc52-5.2.0-224921.alios6.x86_64.rpm=current +expat-2.0.1-9.1.1.alios6.x86_64 +expat-devel-2.0.1-9.1.1.alios6.x86_64 +ali-dds-aliws-1.4.0.0-563776.alios6.x86_64 +binutils-2.29.1-20180327141620.alios6.x86_64 +ob-binutils-devel2-2.29.1-20200218233710.alios6.x86_64.rpm=test +obs-libunwind-1.0.3-20220121155402.alios6.x86_64.rpm=test +ob-rapidjson-1.1.0-20211015163659.alios6.x86_64.rpm +# follows used by jit +ob-llvm-6.0.1-3.el6.x86_64 +ob-cmake3-3.22.1-20211230145243.alios6.x86_64=test +ob-clang11-11.1.0-20220110114534.alios6.x86_64.rpm=test +ob-lld-7.1.0-2.el6.x86_64 +ob-gtest-1.8.1-2.el6.x86_64 +# ofs +ob-ofs-devel-1.1.0-20210812171031.el6.x86_64.rpm=current +ob-libevent-2.1.10-20190605211727.alios6.x86_64.rpm=test +ob-jemalloc-5.2.1-20201013165401.alios6.x86_64.rpm=test + +t-midware-vipserver-cpp-client-1.0.14.6-20210304162233.alios6.x86_64 +ob-boost-1.53.0-20210225114205.alios6.x86_64.rpm=test +#second level requires analysis: -- GitLab