Re: Bug#915046: mariadb-10.3: Please build with -latomic where necessary
Hi!
Attaching a proof-of-concept patch which fixes the issue for me.
The patch shouldn't be used as-is as it links against libatomic
unconditionally while it should only link against it when necessary.
A possible mechanism for conditional linking can be found in the hhvm
package [1].
Adrian
> [1] https://sources.debian.org/src/hhvm/3.24.7+dfsg-2/hphp/hhvm/CMakeLists.txt/?hl=69#L54
--
.''`. John Paul Adrian Glaubitz
: :' : Debian Developer - glaubitz@debian.org
`. `' Freie Universitaet Berlin - glaubitz@physik.fu-berlin.de
`- GPG: 62FF 8A75 84E0 2956 9546 0006 7426 3B37 F5B5 F913
Description: Link mysql components against libatomic
Author: John Paul Adrian Glaubitz <glaubitz@physik.fu-berlin.de>
Last-Update: 2018-11-30
Index: mariadb-10.3-10.3.0/configure.cmake
===================================================================
--- mariadb-10.3-10.3.0.orig/configure.cmake
+++ mariadb-10.3-10.3.0/configure.cmake
@@ -931,6 +931,7 @@ int main()
return 0;
}"
HAVE_GCC_ATOMIC_BUILTINS)
+SET(CMAKE_REQUIRED_LIBRARIES atomic)
CHECK_CXX_SOURCE_COMPILES("
int main()
{
Index: mariadb-10.3-10.3.0/unittest/mysys/CMakeLists.txt
===================================================================
--- mariadb-10.3-10.3.0.orig/unittest/mysys/CMakeLists.txt
+++ mariadb-10.3-10.3.0/unittest/mysys/CMakeLists.txt
@@ -15,7 +15,7 @@
MY_ADD_TESTS(bitmap base64 my_atomic my_rdtsc lf my_malloc my_getopt dynstring
aes
- LINK_LIBRARIES mysys)
+ LINK_LIBRARIES mysys atomic)
MY_ADD_TESTS(my_vsnprintf LINK_LIBRARIES strings mysys)
ADD_DEFINITIONS(${SSL_DEFINES})
Index: mariadb-10.3-10.3.0/storage/perfschema/unittest/CMakeLists.txt
===================================================================
--- mariadb-10.3-10.3.0.orig/storage/perfschema/unittest/CMakeLists.txt
+++ mariadb-10.3-10.3.0/storage/perfschema/unittest/CMakeLists.txt
@@ -29,4 +29,4 @@ ADD_DEPENDENCIES(pfs_server_stubs GenErr
MY_ADD_TESTS(pfs_instr_class pfs_instr_class-oom pfs_instr pfs_instr-oom
pfs_account-oom pfs_host-oom pfs_timer pfs_user-oom pfs pfs_misc
- EXT "cc" LINK_LIBRARIES perfschema mysys pfs_server_stubs)
+ EXT "cc" LINK_LIBRARIES perfschema mysys pfs_server_stubs atomic)
Index: mariadb-10.3-10.3.0/unittest/sql/CMakeLists.txt
===================================================================
--- mariadb-10.3-10.3.0.orig/unittest/sql/CMakeLists.txt
+++ mariadb-10.3-10.3.0/unittest/sql/CMakeLists.txt
@@ -27,7 +27,7 @@ ELSE()
ADD_EXECUTABLE(explain_filename-t explain_filename-t.cc)
ENDIF()
-TARGET_LINK_LIBRARIES(explain_filename-t sql mytap)
+TARGET_LINK_LIBRARIES(explain_filename-t sql mytap atomic)
MY_ADD_TEST(explain_filename)
ADD_EXECUTABLE(mf_iocache-t mf_iocache-t.cc ../../sql/mf_iocache_encr.cc)
Index: mariadb-10.3-10.3.0/sql/CMakeLists.txt
===================================================================
--- mariadb-10.3-10.3.0.orig/sql/CMakeLists.txt
+++ mariadb-10.3-10.3.0/sql/CMakeLists.txt
@@ -174,7 +174,7 @@ ADD_DEPENDENCIES(sql GenServerSource)
ADD_DEPENDENCIES(sql GenDigestServerSource)
DTRACE_INSTRUMENT(sql)
TARGET_LINK_LIBRARIES(sql ${MYSQLD_STATIC_PLUGIN_LIBS}
- mysys mysys_ssl dbug strings vio pcre
+ mysys mysys_ssl dbug strings vio pcre atomic
${LIBWRAP} ${LIBCRYPT} ${LIBDL} ${CMAKE_THREAD_LIBS_INIT}
${WSREP_LIB}
${SSL_LIBRARIES}
Index: mariadb-10.3-10.3.0/libmysqld/CMakeLists.txt
===================================================================
--- mariadb-10.3-10.3.0.orig/libmysqld/CMakeLists.txt
+++ mariadb-10.3-10.3.0/libmysqld/CMakeLists.txt
@@ -140,7 +140,7 @@ ENDIF()
SET(LIBS
- dbug strings mysys mysys_ssl pcre vio
+ dbug strings mysys mysys_ssl pcre vio atomic
${ZLIB_LIBRARY} ${SSL_LIBRARIES}
${LIBWRAP} ${LIBCRYPT} ${LIBDL}
${MYSQLD_STATIC_PLUGIN_LIBS}
Reply to: