[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

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: