mirror of
https://github.com/hanzoai/datastore.git
synced 2026-09-26 13:55:07 +00:00
13,838 upstream commits, forward from the 26.6.1.1 fork point. 129 conflicts: 37 resolved mechanically (take upstream's file, re-apply the brand sweep) and 92 by hand where our fork and upstream had both changed the same code. The rule throughout: upstream owns the engine, we own the naming and a small set of deliberate deviations. Never resolve by discarding an upstream change — a dropped rename or a missed new parameter becomes a compile error a thousand files away. Deviations verified intact after the merge: ENABLE_XRAY still defaults OFF (CMakeLists.txt:105) X-Datastore-User read by the server (authenticateUserByHTTP.cpp) X-ClickHouse-* in src/ 0 hanzo/research present system.*_log retention bound present ArrowFlight rip held against upstream re-adding it Two things worth naming, because neither shows up as a conflict: src/CMakeLists.txt gained an UNGUARDED `add_object_library(datastore_storages_arrowflight Storages/ArrowFlight)` from upstream, for a directory our gRPC rip deleted. It sat outside every conflict hunk, so a resolver reading only the markers would sail straight past it into a CMake configure error. Removed; the Server/ArrowFlight sibling at line 474 stays because it is inside `if (TARGET ch_contrib::arrow_flight)`. The brand sweep had rewritten github.com/ClickHouse/ClickHouse issue links to github.com/Datastore/Datastore — a dead host. Those point at upstream's own tracker and are restored, alongside the contributors list, sql.clickhouse.com and the ClickHouse Inc copyright: attribution is theirs, not ours to rename. base/glibc-compatibility/memcpy/memcpy.h is deleted, not kept: upstream dropped it for LLVM-libc's, and our only change to it was a comment rebrand.
51 lines
2.3 KiB
CMake
51 lines
2.3 KiB
CMake
if (GLIBC_COMPATIBILITY)
|
|
enable_language(ASM)
|
|
|
|
add_headers_and_sources(glibc_compatibility .)
|
|
add_headers_and_sources(glibc_compatibility musl)
|
|
if (ARCH_AARCH64)
|
|
list (APPEND glibc_compatibility_sources musl/aarch64/syscall.s musl/aarch64/longjmp.s)
|
|
set (musl_arch_include_dir musl/aarch64)
|
|
# Disable getauxval in aarch64. ARM glibc minimum requirement for the project is 2.18 and getauxval is present
|
|
# in 2.16. Having a custom one introduces issues with sanitizers
|
|
list (REMOVE_ITEM glibc_compatibility_sources musl/getauxval.c)
|
|
elseif (ARCH_AMD64)
|
|
list (APPEND glibc_compatibility_sources musl/x86_64/syscall.s musl/x86_64/longjmp.s)
|
|
set (musl_arch_include_dir musl/x86_64)
|
|
else ()
|
|
message (FATAL_ERROR "glibc_compatibility can only be used on x86_64 or aarch64.")
|
|
endif ()
|
|
|
|
if (SANITIZE STREQUAL thread AND ARCH_AMD64)
|
|
# Disable TSAN instrumentation that conflicts with re-exec due to high ASLR entropy using getauxval
|
|
# See longer comment in __auxv_init_procfs
|
|
# In the case of tsan we need to make sure getauxval is not instrumented as that would introduce tsan
|
|
# internal calls to functions that depend on a state that isn't initialized yet
|
|
set_source_files_properties(
|
|
musl/getauxval.c
|
|
PROPERTIES COMPILE_FLAGS "-mllvm -tsan-instrument-func-entry-exit=false")
|
|
endif()
|
|
|
|
# Need to omit frame pointers to match the performance of glibc
|
|
set (CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fomit-frame-pointer")
|
|
|
|
add_library(glibc-compatibility STATIC ${glibc_compatibility_sources})
|
|
|
|
target_no_warning(glibc-compatibility unused-command-line-argument)
|
|
target_no_warning(glibc-compatibility unused-but-set-variable)
|
|
target_no_warning(glibc-compatibility builtin-requires-header)
|
|
|
|
target_include_directories(glibc-compatibility PRIVATE libcxxabi ${musl_arch_include_dir})
|
|
|
|
if (ENABLE_OPENSSL_DYNAMIC)
|
|
target_compile_options(glibc-compatibility PRIVATE -fPIC)
|
|
endif ()
|
|
|
|
target_link_libraries(global-libs INTERFACE glibc-compatibility)
|
|
|
|
message (STATUS "Some symbols from glibc will be replaced for compatibility")
|
|
|
|
elseif (DATASTORE_OFFICIAL_BUILD)
|
|
message (WARNING "Option GLIBC_COMPATIBILITY must be turned on for production builds.")
|
|
endif ()
|