Source: opentracing-cpp
Version: 1.6.0-2
Severity: normal
Tags: ftbfs patch
Justification: fails to build from source (but built successfully in the past)
X-Debbugs-Cc: i...@hack3r.moe

Dear maintainer,

opentracing-cpp failed to build on riscv64 due to not linking libatomic:

```
[ 81%] Linking CXX executable ../../output/mocktracer_propagation_test
cd /<<PKGBUILDDIR>>/obj-riscv64-linux-gnu/mocktracer/test && /usr/bin/cmake -E 
cmake_link_script CMakeFiles/mocktracer_propagation_test.dir/link.txt 
--verbose=1
/usr/bin/c++ -g -O2 -ffile-prefix-map=/<<PKGBUILDDIR>>=. 
-fstack-protector-strong -Wformat -Werror=format-security -Wdate-time 
-D_FORTIFY_SOURCE=2 -Wall -Wextra -Wl,-z,relro -Wl,-z,now -rdynamic 
CMakeFiles/mocktracer_propagation_test.dir/propagation_test.cpp.o -o 
../../output/mocktracer_propagation_test  
-Wl,-rpath,/<<PKGBUILDDIR>>/obj-riscv64-linux-gnu/output 
../../output/libopentracing_mocktracer.so.1.6.0 
../../output/libopentracing.so.1.6.0 -ldl 
/usr/bin/ld: ../../output/libopentracing_mocktracer.so.1.6.0: undefined 
reference to `__atomic_exchange_1'
collect2: error: ld returned 1 exit status
make[3]: *** 
[mocktracer/test/CMakeFiles/mocktracer_tracer_factory_test.dir/build.make:102: 
output/mocktracer_tracer_factory_test] Error 1
make[3]: Leaving directory '/<<PKGBUILDDIR>>/obj-riscv64-linux-gnu'
make[2]: *** [CMakeFiles/Makefile2:1097: 
mocktracer/test/CMakeFiles/mocktracer_tracer_factory_test.dir/all] Error 2
make[2]: *** Waiting for unfinished jobs....
/usr/bin/ld: ../../output/libopentracing_mocktracer.so.1.6.0: undefined 
reference to `__atomic_exchange_1'
collect2: error: ld returned 1 exit status
make[3]: *** 
[mocktracer/test/CMakeFiles/mocktracer_json_test.dir/build.make:102: 
output/mocktracer_json_test] Error 1
make[3]: Leaving directory '/<<PKGBUILDDIR>>/obj-riscv64-linux-gnu'
make[2]: *** [CMakeFiles/Makefile2:1151: 
mocktracer/test/CMakeFiles/mocktracer_json_test.dir/all] Error 2
/usr/bin/ld: ../../output/libopentracing_mocktracer.so.1.6.0: undefined 
reference to `__atomic_exchange_1'
collect2: error: ld returned 1 exit status
make[3]: *** 
[mocktracer/test/CMakeFiles/mocktracer_tracer_test.dir/build.make:102: 
output/mocktracer_tracer_test] Error 1
make[3]: Leaving directory '/<<PKGBUILDDIR>>/obj-riscv64-linux-gnu'
make[2]: *** [CMakeFiles/Makefile2:1070: 
mocktracer/test/CMakeFiles/mocktracer_tracer_test.dir/all] Error 2
/usr/bin/ld: ../../output/libopentracing_mocktracer.so.1.6.0: undefined 
reference to `__atomic_exchange_1'
collect2: error: ld returned 1 exit status
make[3]: *** 
[mocktracer/test/CMakeFiles/mocktracer_propagation_test.dir/build.make:102: 
output/mocktracer_propagation_test] Error 1
make[3]: Leaving directory '/<<PKGBUILDDIR>>/obj-riscv64-linux-gnu'
make[2]: *** [CMakeFiles/Makefile2:1124: 
mocktracer/test/CMakeFiles/mocktracer_propagation_test.dir/all] Error 2
make[2]: Leaving directory '/<<PKGBUILDDIR>>/obj-riscv64-linux-gnu'
make[1]: *** [Makefile:169: all] Error 2
make[1]: Leaving directory '/<<PKGBUILDDIR>>/obj-riscv64-linux-gnu'
dh_auto_build: error: cd obj-riscv64-linux-gnu && make -j4 "INSTALL=install 
--strip-program=true" VERBOSE=1 returned exit code 2
make: *** [debian/rules:6: binary-arch] Error 25
dpkg-buildpackage: error: debian/rules binary-arch subprocess returned exit 
status 2
```

Full buildd log: 
https://buildd.debian.org/status/fetch.php?pkg=opentracing-cpp&arch=riscv64&ver=1.6.0-3&stamp=1661892134&raw=0

I've attached a patch that fixes FTBFS on riscv64. Please let me know if I
missed anything.

Cheers,
Eric

-- System Information:
Debian Release: bookworm/sid
  APT prefers unstable
  APT policy: (500, 'unstable')
Architecture: amd64 (x86_64)

Kernel: Linux 5.18.0-4-amd64 (SMP w/8 CPU threads; PREEMPT)
Locale: LANG=en_US.UTF-8, LC_CTYPE=en_US.UTF-8 (charmap=UTF-8), 
LANGUAGE=en_US:en
Shell: /bin/sh linked to /usr/bin/dash
Init: systemd (via /run/systemd/system)
LSM: AppArmor: enabled
Description: Link libatomic on riscv64 and fix FTBFS
Author: Eric Long <i...@hack3r.moe>
Last-Update: 2022-09-03
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -155,6 +155,9 @@
   list(APPEND LIBRARIES ${CMAKE_DL_LIBS})
 endif()
 
+if (${CMAKE_SYSTEM_PROCESSOR} STREQUAL "riscv64")
+  list(APPEND LIBRARIES atomic)
+endif()
 
 if (BUILD_SHARED_LIBS)
   add_library(opentracing SHARED ${SRCS})

Reply via email to