Source: galera-4
Version: 26.4.7-1
Tags: patch upstream
User: debian-cr...@lists.debian.org
Usertags: ftcbfs

galera-4 fails to cross build from source, because it runs the build
architecture objdump on a host architecture ELF object. This is due to
hard coding the build architecture objdump in galera/src/CMakeLists.txt.
The solution here is to use ${CMAKE_OBJDUMP}, which refers to the
correctly detected objdump for the host architecture. Beyond this, it
also uses ldd, which is bound to fail during cross compilation. Almost
the same effect can be achieved with objdump -x though, so I propose
using it here as well. Please consider applying the attached patch as it
makes galera-4 cross buildable.

Helmut
--- galera-4-26.4.7.orig/galera/src/CMakeLists.txt
+++ galera-4-26.4.7/galera/src/CMakeLists.txt
@@ -116,14 +116,14 @@
     -Wl,--version-script=${CMAKE_CURRENT_SOURCE_DIR}/galera-sym.map)
   add_custom_command(TARGET galera_smm POST_BUILD
     COMMAND
-    sh -c "! objdump -T ${CMAKE_BINARY_DIR}/libgalera_smm.so | grep asio 1> /dev/null"
+    sh -c "! ${CMAKE_OBJDUMP} -T ${CMAKE_BINARY_DIR}/libgalera_smm.so | grep asio 1> /dev/null"
     COMMENT "Checking library symbol visibility (hidden)"
     VERBATIM)
 else()
   set(GALERA_LINK_OPTIONS "")
   add_custom_command(TARGET galera_smm POST_BUILD
     COMMAND
-    sh -c "objdump -T ${CMAKE_BINARY_DIR}/libgalera_smm.so | grep asio 1> /dev/null"
+    sh -c "${CMAKE_OBJDUMP} -T ${CMAKE_BINARY_DIR}/libgalera_smm.so | grep asio 1> /dev/null"
     COMMENT "Checking library symbol visibility (not hidden)"
     VERBATIM)
 endif()
@@ -132,7 +132,7 @@
   message(STATUS "Building Galera without SSL")
   add_custom_command(TARGET galera_smm POST_BUILD
     COMMAND
-    sh -c "! (ldd ${CMAKE_BINARY_DIR}/libgalera_smm.so | grep crypto 1> /dev/null) && ! (ldd ${CMAKE_BINARY_DIR}/libgalera_smm.so | grep ssl 1> /dev/null)"
+    sh -c "! (${CMAKE_OBJDUMP} -x ${CMAKE_BINARY_DIR}/libgalera_smm.so | grep NEEDED.*crypto 1> /dev/null) && ! (${CMAKE_OBJDUMP} -x ${CMAKE_BINARY_DIR}/libgalera_smm.so | grep NEEDED.*ssl 1> /dev/null)"
     COMMENT "Verifying that library is not linked with SSL"
     VERBATIM)
 else()
@@ -140,14 +140,14 @@
     message(STATUS "Building Galera with static SSL")
     add_custom_command(TARGET galera_smm POST_BUILD
       COMMAND
-      sh -c "(objdump -t ${CMAKE_BINARY_DIR}/libgalera_smm.so | grep OPENSSL 1> /dev/null) && (objdump -t ${CMAKE_BINARY_DIR}/libgalera_smm.so | grep CRYPTO 1> /dev/null)"
+      sh -c "(${CMAKE_OBJDUMP} -t ${CMAKE_BINARY_DIR}/libgalera_smm.so | grep OPENSSL 1> /dev/null) && (${CMAKE_OBJDUMP} -t ${CMAKE_BINARY_DIR}/libgalera_smm.so | grep CRYPTO 1> /dev/null)"
       COMMENT "Verifying that library has OpenSSL linked statically"
       VERBATIM)
   else()
     message(STATUS "Building Galera with SSL")
     add_custom_command(TARGET galera_smm POST_BUILD
       COMMAND
-      sh -c "(ldd ${CMAKE_BINARY_DIR}/libgalera_smm.so | grep crypto 1> /dev/null) && (ldd ${CMAKE_BINARY_DIR}/libgalera_smm.so | grep ssl 1> /dev/null)"
+      sh -c "(${CMAKE_OBJDUMP} -x ${CMAKE_BINARY_DIR}/libgalera_smm.so | grep NEEDED.*crypto 1> /dev/null) && (${CMAKE_OBJDUMP} -x ${CMAKE_BINARY_DIR}/libgalera_smm.so | grep NEEDED.*ssl 1> /dev/null)"
       COMMENT "Verifying that library is linked with SSL"
       VERBATIM)
   endif()

Reply via email to