Source: tiledb
Version: 2.14.1-1
Severity: serious
Tags: ftbfs patch
Control: affects -1 src:tiledb-py

Hi Dirk

TileDB uses atomic operations but it is not linked to libatomic on the
architectures that need it.  This can be seen in recent build logs for
armel[1], mipsel[2], powerpc[3], riscv64[4] and sh4[5], where warnings
like the following are emitted:

dpkg-shlibdeps: warning: symbol __atomic_fetch_add_8 used by
debian/libtiledb2.13/usr/lib/arm-linux-gnueabi/libtiledb.so.2.14 found
in none of the libraries

and

dpkg-shlibdeps: warning: symbol __atomic_compare_exchange_1 used by
debian/libtiledb2.13/usr/lib/riscv64-linux-gnu/libtiledb.so.2.14 found
in none of the libraries

This causes at least tiledb-py to FTBFS on riscv64[6].  I have tested
the patch below on riscv64 and was able to build tiledb-py
successfully.  It should do the right thing on the other architectures
as well.

Regards
Graham


[1] 
https://buildd.debian.org/status/fetch.php?pkg=tiledb&arch=armel&ver=2.14.1-1&stamp=1676252451&raw=0
[2] 
https://buildd.debian.org/status/fetch.php?pkg=tiledb&arch=mipsel&ver=2.14.1-1&stamp=1676341362&raw=0
[3] 
https://buildd.debian.org/status/fetch.php?pkg=tiledb&arch=powerpc&ver=2.14.1-1&stamp=1676251162&raw=0
[4] 
https://buildd.debian.org/status/fetch.php?pkg=tiledb&arch=riscv64&ver=2.14.1-1&stamp=1676255427&raw=0
[5] 
https://buildd.debian.org/status/fetch.php?pkg=tiledb&arch=sh4&ver=2.14.1-1&stamp=1676262874&raw=0
[6] https://buildd.debian.org/status/logs.php?pkg=tiledb-py&arch=riscv64


--- a/debian/rules
+++ b/debian/rules
@@ -9,6 +9,11 @@
 # Workaround until
https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=953855 is fixed
 #export DEB_CXXFLAGS_MAINT_APPEND = -DSPDLOG_FMT_EXTERNAL -DFMT_HEADER_ONLY

+# Link with -latomic on architectures that need it
+ifneq (,$(filter $(DEB_HOST_ARCH), armel mipsel powerpc riscv64 sh4))
+  export DEB_LDFLAGS_MAINT_APPEND += -Wl,--no-as-needed -latomic
-Wl,--as-needed
+endif
+
 #PKG_SHORT_DESC := $(shell grep 'Description:' debian/control | tail
-n 1 | cut -d':' -f2 | sed 's/^\s//')

 #ifeq ($(filter nocheck,$(DEB_BUILD_PROFILES)),)

Reply via email to