mirror of
https://github.com/ClickHouse/ClickHouse.git
synced 2024-11-21 15:12:02 +00:00
Revert glibc compatibility (via .symver) in favor of hermetic build (bundled libc)
This patch reverts glibc compatibility (via .symver) #29594, in favor of hermetic build (that provides bundled libc version) #30011 Signed-off-by: Azat Khuzhin <a.khuzhin@semrush.com>
This commit is contained in:
parent
0e37e8b4a0
commit
37dbff7587
@ -208,14 +208,6 @@ elseif(GLIBC_COMPATIBILITY)
|
||||
message (${RECONFIGURE_MESSAGE_LEVEL} "Glibc compatibility cannot be enabled in current configuration")
|
||||
endif ()
|
||||
|
||||
if (GLIBC_COMPATIBILITY)
|
||||
# NOTE: we may also want to check glibc version and add -include only for 2.32+
|
||||
# however this is extra complexity, especially for cross compiling.
|
||||
# And anyway it should not break anything for <2.32.
|
||||
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -include ${CMAKE_CURRENT_SOURCE_DIR}/base/glibc-compatibility/glibc-compat-2.32.h")
|
||||
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -include ${CMAKE_CURRENT_SOURCE_DIR}/base/glibc-compatibility/glibc-compat-2.32.h")
|
||||
endif()
|
||||
|
||||
# Make sure the final executable has symbols exported
|
||||
set (CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -rdynamic")
|
||||
|
||||
|
@ -1,50 +0,0 @@
|
||||
/// In glibc 2.32 new version of some symbols had been added [1]:
|
||||
///
|
||||
/// $ nm -D clickhouse | fgrep -e @GLIBC_2.32
|
||||
/// U pthread_getattr_np@GLIBC_2.32
|
||||
/// U pthread_sigmask@GLIBC_2.32
|
||||
///
|
||||
/// [1]: https://www.spinics.net/lists/fedora-devel/msg273044.html
|
||||
///
|
||||
/// Right now ubuntu 20.04 is used as official image for building
|
||||
/// ClickHouse, however once it will be switched someone may not be happy
|
||||
/// with that fact that he/she cannot use official binaries anymore because
|
||||
/// they have glibc < 2.32.
|
||||
///
|
||||
/// To avoid this dependency, let's force previous version of those
|
||||
/// symbols from glibc.
|
||||
///
|
||||
/// Also note, that the following approach had been tested:
|
||||
/// a) -Wl,--wrap -- but it goes into endless recursion whey you try to do
|
||||
/// something like this:
|
||||
///
|
||||
/// int __pthread_getattr_np_compact(pthread_t thread, pthread_attr_t *attr);
|
||||
/// GLIBC_COMPAT_SYMBOL(__pthread_getattr_np_compact, pthread_getattr_np)
|
||||
/// int __pthread_getattr_np_compact(pthread_t thread, pthread_attr_t *attr);
|
||||
/// int __wrap_pthread_getattr_np(pthread_t thread, pthread_attr_t *attr)
|
||||
/// {
|
||||
/// return __pthread_getattr_np_compact(thread, attr);
|
||||
/// }
|
||||
///
|
||||
/// int __pthread_sigmask_compact(int how, const sigset_t *set, sigset_t *oldset);
|
||||
/// GLIBC_COMPAT_SYMBOL(__pthread_sigmask_compact, pthread_sigmask)
|
||||
/// int __pthread_sigmask_compact(int how, const sigset_t *set, sigset_t *oldset);
|
||||
/// int __wrap_pthread_sigmask(int how, const sigset_t *set, sigset_t *oldset)
|
||||
/// {
|
||||
/// return __pthread_sigmask_compact(how, set, oldset);
|
||||
/// }
|
||||
///
|
||||
/// b) -Wl,--defsym -- same problems (and you cannot use version of symbol with
|
||||
/// version in the expression)
|
||||
/// c) this approach -- simply add this file with -include directive.
|
||||
|
||||
#if defined(__amd64__)
|
||||
#define GLIBC_COMPAT_SYMBOL(func) __asm__(".symver " #func "," #func "@GLIBC_2.2.5");
|
||||
#elif defined(__aarch64__)
|
||||
#define GLIBC_COMPAT_SYMBOL(func) __asm__(".symver " #func "," #func "@GLIBC_2.17");
|
||||
#else
|
||||
#error Your platform is not supported.
|
||||
#endif
|
||||
|
||||
GLIBC_COMPAT_SYMBOL(pthread_sigmask)
|
||||
GLIBC_COMPAT_SYMBOL(pthread_getattr_np)
|
Loading…
Reference in New Issue
Block a user