diff --git a/databases/clickhouse/Makefile b/databases/clickhouse/Makefile index e443c0544ed0..24a07784d476 100644 --- a/databases/clickhouse/Makefile +++ b/databases/clickhouse/Makefile @@ -1,241 +1,242 @@ # Created by: proler@gmail.com PORTNAME= clickhouse PORTVERSION= 21.7.4.18 DISTVERSIONPREFIX= v DISTVERSIONSUFFIX=-stable CATEGORIES= databases MAINTAINER= olevole@olevole.ru COMMENT= Fast open-source OLAP database management system LICENSE= APACHE20 -ONLY_FOR_ARCHS= amd64 -ONLY_FOR_ARCHS_REASON= only supported on amd64 +ONLY_FOR_ARCHS= aarch64 amd64 +ONLY_FOR_ARCHS_REASON= only supported on aarch64 and amd64 BUILD_DEPENDS= bash:shells/bash RUN_DEPENDS= bash:shells/bash USES= cmake:insource cpe localbase python shebangfix CPE_VENDOR= yandex USE_GITHUB= yes GH_ACCOUNT= yandex GH_PROJECT= ClickHouse GH_TUPLE= \ ClickHouse-Extras:AMQP-CPP:03781aa:ClickHouse_Extras_AMQP_CPP/contrib/AMQP-CPP \ ClickHouse-Extras:NuRaft:976874b:ClickHouse_Extras_NuRaft/contrib/NuRaft \ ClickHouse-Extras:abseil-cpp:4f3b686:ClickHouse_Extras_abseil_cpp/contrib/abseil-cpp \ ClickHouse-Extras:antlr4-runtime:672643e:ClickHouse_Extras_antlr4_runtime/contrib/antlr4-runtime \ ClickHouse-Extras:arrow:debf751:ClickHouse_Extras_arrow/contrib/arrow \ ClickHouse-Extras:avro:e43c46e:ClickHouse_Extras_avro/contrib/avro \ ClickHouse-Extras:aws-sdk-cpp:7d48b2c:ClickHouse_Extras_aws_sdk_cpp/contrib/aws \ ClickHouse-Extras:aws-c-common:736a82d:ClickHouse_Extras_aws_c_common/contrib/aws-c-common \ ClickHouse-Extras:aws-c-event-stream:3bc3366:ClickHouse_Extras_aws_c_event_stream/contrib/aws-c-event-stream \ ClickHouse-Extras:aws-checksums:519d6d9:ClickHouse_Extras_aws_checksums/contrib/aws-checksums \ ClickHouse-Extras:Turbo-Base64:af9b331:ClickHouse_Extras_Turbo_Base64/contrib/base64 \ ClickHouse-Extras:boost:1ccbb5a:ClickHouse_Extras_boost/contrib/boost \ ClickHouse-Extras:boringssl:a6a2e2a:ClickHouse_Extras_boringssl/contrib/boringssl \ google:brotli:63be8a9:google_brotli/contrib/brotli \ capnproto:capnproto:a00ccd9:capnproto_capnproto/contrib/capnproto \ ClickHouse-Extras:cpp-driver:eb9b68d:ClickHouse_Extras_cpp_driver/contrib/cassandra \ ClickHouse-Extras:cctz:c0f1bcb:ClickHouse_Extras_cctz/contrib/cctz \ mfontanini:cppkafka:5a119f6:mfontanini_cppkafka/contrib/cppkafka \ RoaringBitmap:CRoaring:2c867e9:RoaringBitmap_CRoaring/contrib/croaring \ curl:curl:3b8bbbb:curl_curl/contrib/curl \ ClickHouse-Extras:cyrus-sasl:e6466ed:ClickHouse_Extras_cyrus_sasl/contrib/cyrus-sasl \ google:double-conversion:cf2f0f3:google_double_conversion/contrib/double-conversion \ apache:datasketches-cpp:7d73d76:contrib/datasketches-cpp \ google:double-conversion:cf2f0f3:contrib/double-conversion \ ClickHouse-Extras:dragonbox:923705a:ClickHouse_Extras_dragonbox/contrib/dragonbox \ fastfloat:fast_float:7eae925:fastfloat_fast_float/contrib/fast_float \ ClickHouse-Extras:fastops:88752a5:ClickHouse_Extras_fastops/contrib/fastops \ google:flatbuffers:eb3f827:google_flatbuffers/contrib/flatbuffers \ fmtlib:fmt:c108ee1:fmtlib_fmt/contrib/fmtlib \ kthohr:gcem:8d4f1b5:kthohr_gcem/contrib/gcem \ google:googletest:e7e5917:google_googletest/contrib/googletest \ ClickHouse-Extras:grpc:60c986e:ClickHouse_Extras_grpc/contrib/grpc \ ClickHouse-Extras:h3:e209086:ClickHouse_Extras_h3/contrib/h3 \ ClickHouse-Extras:hyperscan:e9f08df:ClickHouse_Extras_hyperscan/contrib/hyperscan \ unicode-org:icu:faa2f9f:unicode_org_icu/contrib/icu \ ClickHouse-Extras:icudata:f020820:ClickHouse_Extras_icudata/contrib/icudata \ ClickHouse-Extras:jemalloc:e6891d9:ClickHouse_Extras_jemalloc/contrib/jemalloc \ ClickHouse-Extras:krb5:5149dea:ClickHouse_Extras_krb5/contrib/krb5 \ ClickHouse-Extras:libc-headers:a720b71:ClickHouse_Extras_libc_headers/contrib/libc-headers \ ClickHouse-Extras:libcpuid:8db3b8d:ClickHouse_Extras_libcpuid/contrib/libcpuid \ ClickHouse-Extras:libcxx:2fa892f:ClickHouse_Extras_libcxx/contrib/libcxx \ ClickHouse-Extras:libcxxabi:df8f1e7:ClickHouse_Extras_libcxxabi/contrib/libcxxabi \ ClickHouse-Extras:libgsasl:383ee28:ClickHouse_Extras_libgsasl/contrib/libgsasl \ ClickHouse-Extras:libhdfs3:095b9d4:ClickHouse_Extras_libhdfs3/contrib/libhdfs3 \ ClickHouse-Extras:libpq:c762458:ClickHouse_Extras_libpq/contrib/libpq \ jtv:libpqxx:357608d:jtv_libpqxx/contrib/libpqxx \ ClickHouse-Extras:librdkafka:43491d3:ClickHouse_Extras_librdkafka/contrib/librdkafka \ ClickHouse-Extras:libunwind:6b816d2:ClickHouse_Extras_libunwind/contrib/libunwind \ ClickHouse-Extras:libuv:e2e9b7e:ClickHouse_Extras_libuv/contrib/libuv \ GNOME:libxml2:18890f4:GNOME_libxml2/contrib/libxml2 \ ClickHouse-Extras:llvm:e575145:ClickHouse_Extras_llvm/contrib/llvm \ lz4:lz4:f39b79f:lz4_lz4/contrib/lz4 \ ClickHouse-Extras:mariadb-connector-c:5f4034a:ClickHouse_Extras_mariadb_connector_c/contrib/mariadb-connector-c \ danlark1:miniselect:be0af6b:danlark1_miniselect/contrib/miniselect \ msgpack:msgpack-c:4668426:msgpack_msgpack_c/contrib/msgpack-c \ nanodbc:nanodbc:9fc4596:contrib/nanodbc \ ClickHouse-Extras:openldap:0208811:ClickHouse_Extras_openldap/contrib/openldap \ apache:orc:0a936f6:apache_orc/contrib/orc \ ClickHouse-Extras:poco:5994506:ClickHouse_Extras_poco/contrib/poco \ ClickHouse-Extras:protobuf:73b1281:ClickHouse_Extras_protobuf/contrib/protobuf \ ClickHouse-Extras:rapidjson:c4ef90c:ClickHouse_Extras_rapidjson/contrib/rapidjson \ google:re2:13ebb37:google_re2/contrib/re2 \ ClickHouse-Extras:replxx:c81be6c:ClickHouse_Extras_replxx/contrib/replxx \ ClickHouse-Extras:rocksdb:07c7754:ClickHouse_Extras_rocksdb/contrib/rocksdb \ ClickHouse-Extras:sentry-native:94644e9:ClickHouse_Extras_sentry_native/contrib/sentry-native \ ClickHouse-Extras:simdjson:8df32ce:ClickHouse_Extras_simdjson/contrib/simdjson \ google:snappy:3f194ac:google_snappy/contrib/snappy \ sparsehash:sparsehash-c11:cf0bffa:sparsehash_sparsehash_c11/contrib/sparsehash-c11 \ kthohr:stats:b6dd459:kthohr_stats/contrib/stats \ apache:thrift:010ccf0:apache_thrift/contrib/thrift \ ClickHouse-Extras:UnixODBC:b0ad30f:ClickHouse_Extras_UnixODBC/contrib/unixodbc \ xz-mirror:xz:869b9d1:xz_mirror_xz/contrib/xz \ ClickHouse-Extras:yaml-cpp:0c86ada:ClickHouse_Extras_yaml_cpp/contrib/yaml-cpp \ ClickHouse-Extras:zlib-ng:db232d3:ClickHouse_Extras_zlib_ng/contrib/zlib-ng \ facebook:zstd:a488ba1:facebook_zstd/contrib/zstd \ c-ares:c-ares:e982924:c_ares_c_ares/contrib/grpc/third_party/cares/cares USE_RC_SUBR= ${PORTNAME} SHEBANG_FILES= src/Storages/System/StorageSystemLicenses.sh \ tests/clickhouse-test tests/config/install.sh \ tests/queries/0_stateless/00960_live_view_watch_events_live.py \ tests/queries/0_stateless/00962_live_view_periodic_refresh.py \ tests/queries/0_stateless/00962_live_view_periodic_refresh_and_timeout.py \ tests/queries/0_stateless/00962_live_view_periodic_refresh_dictionary.py \ tests/queries/0_stateless/00962_temporary_live_view_watch_live.py \ tests/queries/0_stateless/00963_temporary_live_view_watch_live_timeout.py.disabled \ tests/queries/0_stateless/00964_live_view_watch_events_heartbeat.py \ tests/queries/0_stateless/00965_live_view_watch_heartbeat.py \ tests/queries/0_stateless/00966_live_view_watch_events_http.py \ tests/queries/0_stateless/00967_live_view_watch_http.py \ tests/queries/0_stateless/00970_live_view_watch_events_http_heartbeat.py \ tests/queries/0_stateless/00971_live_view_watch_http_heartbeat.py \ tests/queries/0_stateless/00979_live_view_watch_continuous_aggregates.py \ tests/queries/0_stateless/00979_live_view_watch_live.py \ tests/queries/0_stateless/00979_live_view_watch_live_moving_avg.py.disabled \ tests/queries/0_stateless/00979_live_view_watch_live_with_subquery.py \ tests/queries/0_stateless/00991_live_view_watch_http.python \ tests/queries/0_stateless/01176_mysql_client_interactive.expect \ tests/queries/0_stateless/01179_insert_values_semicolon.expect \ tests/queries/0_stateless/01180_client_syntax_errors.expect \ tests/queries/0_stateless/01246_insert_into_watch_live_view.py \ tests/queries/0_stateless/01293_client_interactive_vertical_multiline_long.expect \ tests/queries/0_stateless/01293_client_interactive_vertical_singleline.expect \ tests/queries/0_stateless/01300_client_save_history_when_terminated_long.expect \ tests/queries/0_stateless/01370_client_autocomplete_word_break_characters.expect \ tests/queries/0_stateless/01520_client_print_query_id.expect \ tests/queries/0_stateless/01526_client_start_and_exit.expect-not-a-test-case \ tests/queries/0_stateless/01565_reconnect_after_client_error.expect \ tests/queries/0_stateless/01599_multiline_input_and_singleline_comments.sh \ tests/queries/0_stateless/01610_client_spawn_editor.sh \ tests/queries/0_stateless/01755_client_highlight_multi_line_comment_regression.expect \ tests/queries/0_stateless/01910_client_replxx_container_overflow_long.expect \ tests/queries/0_stateless/01921_test_progress_bar.py \ tests/queries/0_stateless/helpers/00900_parquet_create_table_columns.py \ tests/queries/0_stateless/helpers/client.py \ tests/queries/0_stateless/helpers/httpclient.py \ tests/queries/0_stateless/helpers/httpexpect.py \ tests/queries/0_stateless/helpers/protobuf_length_delimited_encoder.py \ tests/queries/0_stateless/helpers/pure_http_client.py \ tests/queries/0_stateless/helpers/shell.py \ tests/queries/0_stateless/helpers/uexpect.py \ utils/build/build_debian.sh utils/build/build_debian_shared.sh \ utils/build/build_freebsd.sh utils/build/build_macos.sh \ utils/build/build_minimal.sh utils/build/build_no_submodules.sh \ utils/check-style/check-duplicate-includes.sh \ utils/check-style/check-ungrouped-includes.sh \ utils/check-style/format.sh utils/check-style/shellcheck-run.sh \ utils/ci/build-clang-from-sources.sh \ utils/ci/build-debian-packages.sh \ utils/ci/build-gcc-from-sources.sh utils/ci/build-normal.sh \ utils/ci/check-docker.sh utils/ci/check-syntax.sh \ utils/ci/check-tzdata-updates.sh \ utils/ci/create-sources-tarball.sh \ utils/ci/docker-multiarch/update.sh utils/ci/get-sources.sh \ utils/ci/install-compiler-from-packages.sh \ utils/ci/install-compiler-from-sources.sh \ utils/ci/install-libraries.sh utils/ci/install-os-packages.sh \ utils/ci/jobs/quick-build/run.sh \ utils/ci/prepare-docker-image-ubuntu.sh \ utils/ci/prepare-toolchain.sh \ utils/ci/prepare-vagrant-image-freebsd.sh \ utils/ci/run-clickhouse-from-binaries.sh \ utils/ci/run-with-docker.sh utils/ci/run-with-vagrant.sh \ utils/clickhouse-docker utils/compressor/test.sh \ utils/durability-test/durability-test.sh \ utils/durability-test/install.sh \ utils/generate-ya-make/generate-ya-make.sh \ utils/link-validate/link-validate.sh \ utils/list-licenses/list-licenses.sh \ utils/list-versions/list-versions.sh SHEBANG_LANG= expect expect_OLD_CMD= /usr/bin/expect expect_CMD= ${LOCALBASE}/bin/expect CMAKE_ARGS= -DCMAKE_CXX_STANDARD=20 \ -DENABLE_EMBEDDED_COMPILER=OFF \ -DENABLE_PARQUET=OFF \ -DENABLE_UTILS=ON \ -DNO_WERROR=1 USERS= clickhouse GROUPS= clickhouse # The version stamp of libclickhouse.so doesn't always match ${PORTVERSION} PLIST_SUB= SOVERSION=${SOVERSION} OPTIONS_DEFINE= TEST TEST_RUN_DEPENDS+= expect>0:lang/expect TEST_CMAKE_BOOL= ENABLE_TESTS .include .if ${OSVERSION} < 1300000 CC= clang11 CXX= clang++11 BUILD_DEPENDS+= clang++11:devel/llvm11 .else CC= clang CXX= clang++ .endif SOVERSION= ${PORTVERSION} .include post-patch: @${REINPLACE_CMD} -e 's|/var/lib/clickhouse|/var/db/clickhouse|;s|/var/log/clickhouse-server|/var/log/clickhouse|;s|/etc/clickhouse-server|${PREFIX}/etc/clickhouse-server|' ${WRKSRC}/programs/server/config.xml + cd ${WRKSRC}/contrib/openldap-cmake && ${LN} -s freebsd_x86_64 freebsd_aarch64 post-install: @${RM} ${STAGEDIR}${PREFIX}/bin/config-processor @${RM} ${STAGEDIR}${PREFIX}/bin/corrector_utf8 @${RM} -r ${STAGEDIR}${PREFIX}/include/gtest @${RM} ${STAGEDIR}${PREFIX}/lib/libgtest* @${RM} ${STAGEDIR}${PREFIX}/lib/libcxx.a @${RM} ${STAGEDIR}${PREFIX}/lib/libcxxabi.a @${RM} ${STAGEDIR}${PREFIX}/lib/libunwind.a ${MV} ${STAGEDIR}${PREFIX}/etc/clickhouse-client/config.xml \ ${STAGEDIR}${PREFIX}/etc/clickhouse-client/config.xml.sample ${MV} ${STAGEDIR}${PREFIX}/etc/clickhouse-server/config.xml \ ${STAGEDIR}${PREFIX}/etc/clickhouse-server/config.xml.sample ${MV} ${STAGEDIR}${PREFIX}/etc/clickhouse-server/users.xml \ ${STAGEDIR}${PREFIX}/etc/clickhouse-server/users.xml.sample @${MKDIR} ${STAGEDIR}/var/db/clickhouse @${MKDIR} ${STAGEDIR}/var/log/clickhouse @${MKDIR} ${STAGEDIR}/var/run/clickhouse do-test-TEST-on: cd ${WRKSRC} && ctest -j4 -V .include diff --git a/databases/clickhouse/files/patch-cmake_find_ldap.cmake b/databases/clickhouse/files/patch-cmake_find_ldap.cmake new file mode 100644 index 000000000000..4ccad4821cf7 --- /dev/null +++ b/databases/clickhouse/files/patch-cmake_find_ldap.cmake @@ -0,0 +1,10 @@ +--- cmake/find/ldap.cmake.orig 2021-09-13 15:27:47.655692000 +0200 ++++ cmake/find/ldap.cmake 2021-09-13 15:28:02.970539000 +0200 +@@ -64,6 +64,7 @@ if (NOT OPENLDAP_FOUND AND NOT MISSING_INTERNAL_LDAP_L + ( "${_system_name}" STREQUAL "linux" AND "${_system_processor}" STREQUAL "aarch64" ) OR + ( "${_system_name}" STREQUAL "linux" AND "${_system_processor}" STREQUAL "ppc64le" ) OR + ( "${_system_name}" STREQUAL "freebsd" AND "${_system_processor}" STREQUAL "x86_64" ) OR ++ ( "${_system_name}" STREQUAL "freebsd" AND "${_system_processor}" STREQUAL "aarch64" ) OR + ( "${_system_name}" STREQUAL "darwin" AND "${_system_processor}" STREQUAL "x86_64" ) OR + ( "${_system_name}" STREQUAL "darwin" AND "${_system_processor}" STREQUAL "aarch64" ) + ) diff --git a/databases/clickhouse/files/patch-contrib_boringssl_crypto_cpu-aarch64-linux.c b/databases/clickhouse/files/patch-contrib_boringssl_crypto_cpu-aarch64-linux.c new file mode 100644 index 000000000000..50e88deb39e0 --- /dev/null +++ b/databases/clickhouse/files/patch-contrib_boringssl_crypto_cpu-aarch64-linux.c @@ -0,0 +1,75 @@ +--- contrib/boringssl/crypto/cpu-aarch64-linux.c.orig 2019-10-21 10:14:54 UTC ++++ contrib/boringssl/crypto/cpu-aarch64-linux.c +@@ -14,49 +14,47 @@ + + #include + +-#if defined(OPENSSL_AARCH64) && defined(OPENSSL_LINUX) && \ +- !defined(OPENSSL_STATIC_ARMCAP) ++#if defined(OPENSSL_AARCH64) + +-#include +- + #include + + #include "internal.h" + +- + extern uint32_t OPENSSL_armcap_P; + +-void OPENSSL_cpuid_setup(void) { +- unsigned long hwcap = getauxval(AT_HWCAP); ++#include + +- // See /usr/include/asm/hwcap.h on an aarch64 installation for the source of +- // these values. +- static const unsigned long kNEON = 1 << 1; +- static const unsigned long kAES = 1 << 3; +- static const unsigned long kPMULL = 1 << 4; +- static const unsigned long kSHA1 = 1 << 5; +- static const unsigned long kSHA256 = 1 << 6; ++#ifndef ID_AA64ISAR0_AES_VAL ++#define ID_AA64ISAR0_AES_VAL ID_AA64ISAR0_AES ++#endif ++#ifndef ID_AA64ISAR0_AES_VAL ++#define ID_AA64ISAR0_AES_VAL ID_AA64ISAR0_AES ++#endif ++#ifndef ID_AA64ISAR0_SHA1_VAL ++#define ID_AA64ISAR0_SHA1_VAL ID_AA64ISAR0_SHA1 ++#endif ++#ifndef ID_AA64ISAR0_SHA2_VAL ++#define ID_AA64ISAR0_SHA2_VAL ID_AA64ISAR0_SHA2 ++#endif + +- if ((hwcap & kNEON) == 0) { +- // Matching OpenSSL, if NEON is missing, don't report other features +- // either. +- return; +- } ++void OPENSSL_cpuid_setup(void) { ++ uint64_t id_aa64isar0; + ++ id_aa64isar0 = READ_SPECIALREG(id_aa64isar0_el1); ++ + OPENSSL_armcap_P |= ARMV7_NEON; + +- if (hwcap & kAES) { ++ if (ID_AA64ISAR0_AES_VAL(id_aa64isar0) >= ID_AA64ISAR0_AES_BASE) { + OPENSSL_armcap_P |= ARMV8_AES; + } +- if (hwcap & kPMULL) { ++ if (ID_AA64ISAR0_AES_VAL(id_aa64isar0) == ID_AA64ISAR0_AES_PMULL) { + OPENSSL_armcap_P |= ARMV8_PMULL; + } +- if (hwcap & kSHA1) { ++ if (ID_AA64ISAR0_SHA1_VAL(id_aa64isar0) == ID_AA64ISAR0_SHA1_BASE) { + OPENSSL_armcap_P |= ARMV8_SHA1; + } +- if (hwcap & kSHA256) { ++ if(ID_AA64ISAR0_SHA2_VAL(id_aa64isar0) >= ID_AA64ISAR0_SHA2_BASE) { + OPENSSL_armcap_P |= ARMV8_SHA256; + } + } +- +-#endif // OPENSSL_AARCH64 && !OPENSSL_STATIC_ARMCAP ++#endif // OPENSSL_AARCH64 diff --git a/databases/clickhouse/files/patch-contrib_jemalloc-cmake_include__freebsd__aarch64_jemalloc_internal_jemalloc__internal__defs.h.in b/databases/clickhouse/files/patch-contrib_jemalloc-cmake_include__freebsd__aarch64_jemalloc_internal_jemalloc__internal__defs.h.in new file mode 100644 index 000000000000..388d9bdec34a --- /dev/null +++ b/databases/clickhouse/files/patch-contrib_jemalloc-cmake_include__freebsd__aarch64_jemalloc_internal_jemalloc__internal__defs.h.in @@ -0,0 +1,11 @@ +--- contrib/jemalloc-cmake/include_freebsd_aarch64/jemalloc/internal/jemalloc_internal_defs.h.in.orig 2021-07-22 13:50:06.073516000 +0200 ++++ contrib/jemalloc-cmake/include_freebsd_aarch64/jemalloc/internal/jemalloc_internal_defs.h.in 2021-07-22 13:50:28.909237000 +0200 +@@ -161,7 +161,7 @@ + * JEMALLOC_DSS enables use of sbrk(2) to allocate extents from the data storage + * segment (DSS). + */ +-#define JEMALLOC_DSS ++/* #undef JEMALLOC_DSS */ + + /* Support memory filling (junk/zero). */ + #define JEMALLOC_FILL diff --git a/databases/clickhouse/files/patch-contrib_rocksdb-cmake_CMakeLists.txt b/databases/clickhouse/files/patch-contrib_rocksdb-cmake_CMakeLists.txt new file mode 100644 index 000000000000..6db0e41ea70d --- /dev/null +++ b/databases/clickhouse/files/patch-contrib_rocksdb-cmake_CMakeLists.txt @@ -0,0 +1,14 @@ +--- contrib/rocksdb-cmake/CMakeLists.txt.orig 2021-09-13 16:50:13.827707000 +0200 ++++ contrib/rocksdb-cmake/CMakeLists.txt 2021-09-13 16:51:37.118209000 +0200 +@@ -233,6 +233,11 @@ if(HAVE_AUXV_GETAUXVAL) + add_definitions(-DROCKSDB_AUXV_GETAUXVAL_PRESENT) + endif() + ++check_cxx_symbol_exists(elf_aux_info sys/auxv.h HAVE_ELF_AUX_INFO) ++if(HAVE_ELF_AUX_INFO) ++ add_definitions(-DROCKSDB_AUXV_GETAUXVAL_PRESENT) ++endif() ++ + include_directories(${ROCKSDB_SOURCE_DIR}) + include_directories("${ROCKSDB_SOURCE_DIR}/include") + if(WITH_FOLLY_DISTRIBUTED_MUTEX) diff --git a/databases/clickhouse/files/patch-contrib_rocksdb_CMakeLists.txt b/databases/clickhouse/files/patch-contrib_rocksdb_CMakeLists.txt new file mode 100644 index 000000000000..67a092844f6f --- /dev/null +++ b/databases/clickhouse/files/patch-contrib_rocksdb_CMakeLists.txt @@ -0,0 +1,13 @@ +--- contrib/rocksdb/CMakeLists.txt.orig 2021-09-13 16:40:55.686967000 +0200 ++++ contrib/rocksdb/CMakeLists.txt 2021-09-13 16:44:42.046383000 +0200 +@@ -553,6 +553,10 @@ check_cxx_symbol_exists(getauxval auvx.h HAVE_AUXV_GET + if(HAVE_AUXV_GETAUXVAL) + add_definitions(-DROCKSDB_AUXV_GETAUXVAL_PRESENT) + endif() ++check_cxx_symbol_exists(elf_aux_info sys/auxv.h HAVE_AUXV_ELF_AUX_INFO) ++if(HAVE_AUXV_ELF_AUX_INFO) ++ add_definitions(-DROCKSDB_AUXV_GETAUXVAL_PRESENT) ++endif() + + include_directories(${PROJECT_SOURCE_DIR}) + include_directories(${PROJECT_SOURCE_DIR}/include) diff --git a/databases/clickhouse/files/patch-contrib_rocksdb_util_crc32c.cc b/databases/clickhouse/files/patch-contrib_rocksdb_util_crc32c.cc new file mode 100644 index 000000000000..1c4a8699b3d2 --- /dev/null +++ b/databases/clickhouse/files/patch-contrib_rocksdb_util_crc32c.cc @@ -0,0 +1,38 @@ +--- contrib/rocksdb/util/crc32c.cc.orig 2021-07-21 16:35:20.404459000 +0200 ++++ contrib/rocksdb/util/crc32c.cc 2021-07-22 09:48:10.980923000 +0200 +@@ -41,7 +41,7 @@ + + #endif + +-#if defined(__linux__) && defined(HAVE_ARM64_CRC) ++#if (defined(__FreeBSD__) || defined(__linux__)) && defined(HAVE_ARM64_CRC) + bool pmull_runtime_flag = false; + #endif + +@@ -474,7 +474,7 @@ static bool isAltiVec() { + } + #endif + +-#if defined(__linux__) && defined(HAVE_ARM64_CRC) ++#if (defined(__FreeBSD__) || defined(__linux__)) && defined(HAVE_ARM64_CRC) + uint32_t ExtendARMImpl(uint32_t crc, const char *buf, size_t size) { + return crc32c_arm64(crc, (const unsigned char *)buf, size); + } +@@ -494,7 +494,7 @@ std::string IsFastCrc32Supported() { + has_fast_crc = false; + arch = "PPC"; + #endif +-#elif defined(__linux__) && defined(HAVE_ARM64_CRC) ++#elif (defined(__FreeBSD__) || defined(__linux__)) && defined(HAVE_ARM64_CRC) + if (crc32c_runtime_check()) { + has_fast_crc = true; + arch = "Arm64"; +@@ -1227,7 +1227,7 @@ uint32_t crc32c_3way(uint32_t crc, const char* buf, si + static inline Function Choose_Extend() { + #ifdef HAVE_POWER8 + return isAltiVec() ? ExtendPPCImpl : ExtendImpl; +-#elif defined(__linux__) && defined(HAVE_ARM64_CRC) ++#elif (defined(__FreeBSD__) || defined(__linux__)) && defined(HAVE_ARM64_CRC) + if(crc32c_runtime_check()) { + pmull_runtime_flag = crc32c_pmull_runtime_check(); + return ExtendARMImpl; diff --git a/databases/clickhouse/files/patch-contrib_rocksdb_util_crc32c__arm64.cc b/databases/clickhouse/files/patch-contrib_rocksdb_util_crc32c__arm64.cc new file mode 100644 index 000000000000..1b37e82527ef --- /dev/null +++ b/databases/clickhouse/files/patch-contrib_rocksdb_util_crc32c__arm64.cc @@ -0,0 +1,45 @@ +--- contrib/rocksdb/util/crc32c_arm64.cc.orig 2021-05-13 00:21:57.000000000 +0200 ++++ contrib/rocksdb/util/crc32c_arm64.cc 2000-01-01 02:32:56.500264000 +0100 +@@ -5,9 +5,11 @@ + + #include "util/crc32c_arm64.h" + +-#if defined(__linux__) && defined(HAVE_ARM64_CRC) ++#if (defined(__FreeBSD__) || defined(__linux__)) && defined(HAVE_ARM64_CRC) + ++#if defined(__linux__) + #include ++#endif // linux + #ifdef ROCKSDB_AUXV_GETAUXVAL_PRESENT + #include + #endif +@@ -42,7 +44,14 @@ extern bool pmull_runtime_flag; + + uint32_t crc32c_runtime_check(void) { + #ifdef ROCKSDB_AUXV_GETAUXVAL_PRESENT ++#if defined(__FreeBSD__) ++ uint64_t auxv; ++ int result = elf_aux_info(AT_HWCAP, &auxv, sizeof auxv); ++ if (result != 0) ++ return 0; ++#else + uint64_t auxv = getauxval(AT_HWCAP); ++#endif + return (auxv & HWCAP_CRC32) != 0; + #else + return 0; +@@ -51,7 +60,14 @@ uint32_t crc32c_runtime_check(void) { + + bool crc32c_pmull_runtime_check(void) { + #ifdef ROCKSDB_AUXV_GETAUXVAL_PRESENT ++#if defined(__FreeBSD__) ++ uint64_t auxv; ++ int result = elf_aux_info(AT_HWCAP, &auxv, sizeof auxv); ++ if (result != 0) ++ return 0; ++#else + uint64_t auxv = getauxval(AT_HWCAP); ++#endif + return (auxv & HWCAP_PMULL) != 0; + #else + return false; diff --git a/databases/clickhouse/files/patch-src_Common_StackTrace.cpp b/databases/clickhouse/files/patch-src_Common_StackTrace.cpp new file mode 100644 index 000000000000..bac5c5e25a8d --- /dev/null +++ b/databases/clickhouse/files/patch-src_Common_StackTrace.cpp @@ -0,0 +1,11 @@ +--- src/Common/StackTrace.cpp.orig 2021-09-13 15:30:01.608345000 +0200 ++++ src/Common/StackTrace.cpp 2021-09-13 15:30:10.009331000 +0200 +@@ -186,6 +186,8 @@ static void * getCallerAddress(const ucontext_t & context) + #elif defined(__APPLE__) && defined(__aarch64__) + return reinterpret_cast(context.uc_mcontext->__ss.__pc); + ++#elif defined(__FreeBSD__) && defined(__aarch64__) ++ return reinterpret_cast(context.uc_mcontext.mc_gpregs.gp_elr); + #elif defined(__aarch64__) + return reinterpret_cast(context.uc_mcontext.pc); + #elif defined(__powerpc64__)