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

Bug#1017965: telegram-desktop: ftbfs on riscv64 ("undefined reference to `__atomic_compare_exchange_1'")



Source: telegram-desktop
Version: 4.1.1+ds-1 
Severity: normal
Tags: ftbfs, patch
User: debian-riscv@lists.debian.org
Usertags: riscv64
X-Debbugs-Cc: debian-riscv@lists.debian.org

Dear telegram-desktop Maintainer,

The package has a ftbfs on riscv64 due to:

```
[ 18%] Linking CXX executable codegen_style
cd /<<PKGBUILDDIR>>/obj-riscv64-linux-gnu/Telegram/codegen/codegen/style && /usr/bin/cmake -E cmake_link_script CMakeFiles/codegen_style.dir/link.txt --verbose=1
/usr/bin/c++ -g -O2 -ffile-prefix-map=/<<PKGBUILDDIR>>=. -fstack-protector-strong -Wformat -Werror=format-security -ftemplate-backtrace-limit=0 -Wdate-time -D_FORTIFY_SOURCE=2 -Werror=invalid-pch -Wl,-z,relro -Wl,-z,now -Wl,--as-needed CMakeFiles/codegen_style.dir/generator.cpp.o CMakeFiles/codegen_style.dir/main.cpp.o CMakeFiles/codegen_style.dir/module.cpp.o CMakeFiles/codegen_style.dir/options.cpp.o CMakeFiles/codegen_style.dir/parsed_file.cpp.o CMakeFiles/codegen_style.dir/processor.cpp.o CMakeFiles/codegen_style.dir/structure_types.cpp.o ../common/CMakeFiles/codegen_common.dir/basic_tokenized_file.cpp.o ../common/CMakeFiles/codegen_common.dir/checked_utf8_string.cpp.o ../common/CMakeFiles/codegen_common.dir/clean_file.cpp.o ../common/CMakeFiles/codegen_common.dir/cpp_file.cpp.o ../common/CMakeFiles/codegen_common.dir/logging.cpp.o ../../../lib_crl/CMakeFiles/lib_crl.dir/crl/common/crl_common_fp_exceptions.cpp.o ../../../lib_crl/CMakeFiles/lib_crl.dir/crl/common/crl_common_list.cpp.o ../../../lib_crl/CMakeFiles/lib_crl.dir/crl/common/crl_common_on_main.cpp.o ../../../lib_crl/CMakeFiles/lib_crl.dir/crl/common/crl_common_queue.cpp.o ../../../lib_crl/CMakeFiles/lib_crl.dir/crl/dispatch/crl_dispatch_async.cpp.o ../../../lib_crl/CMakeFiles/lib_crl.dir/crl/dispatch/crl_dispatch_queue.cpp.o ../../../lib_crl/CMakeFiles/lib_crl.dir/crl/dispatch/crl_dispatch_semaphore.cpp.o ../../../lib_crl/CMakeFiles/lib_crl.dir/crl/linux/crl_linux_time.cpp.o ../../../lib_crl/CMakeFiles/lib_crl.dir/crl/qt/crl_qt_async.cpp.o ../../../lib_crl/CMakeFiles/lib_crl.dir/crl/qt/crl_qt_semaphore.cpp.o ../../../lib_crl/CMakeFiles/lib_crl.dir/crl/winapi/crl_winapi_async.cpp.o ../../../lib_crl/CMakeFiles/lib_crl.dir/crl/winapi/crl_winapi_fp_exceptions.cpp.o ../../../lib_crl/CMakeFiles/lib_crl.dir/crl/winapi/crl_winapi_list.cpp.o ../../../lib_crl/CMakeFiles/lib_crl.dir/crl/winapi/crl_winapi_semaphore.cpp.o ../../../lib_crl/CMakeFiles/lib_crl.dir/crl/winapi/crl_winapi_time.cpp.o ../../../lib_crl/CMakeFiles/lib_crl.dir/crl/crl_object_on_thread.cpp.o ../../../lib_crl/CMakeFiles/lib_crl.dir/crl/crl_time.cpp.o -o codegen_style  ../../../../cmake/linux_jemalloc_helper/CMakeFiles/linux_jemalloc_helper.dir/linux_jemalloc_helper.cpp.o ../../../lib_base/liblib_base.a -ldl /usr/lib/riscv64-linux-gnu/libQt5Network.so.5.15.4 /usr/lib/riscv64-linux-gnu/libQt5Svg.so.5.15.4 /usr/lib/riscv64-linux-gnu/libQt5Widgets.so.5.15.4 /usr/lib/riscv64-linux-gnu/libQt5XkbCommonSupport.a /usr/lib/riscv64-linux-gnu//libQt5Gui.so /usr/lib/riscv64-linux-gnu//libQt5Core.so /usr/lib/riscv64-linux-gnu/libxkbcommon.so /usr/lib/riscv64-linux-gnu/libGL.so /usr/lib/riscv64-linux-gnu/libQt5WaylandClient.so.5.15.4 /usr/lib/riscv64-linux-gnu/libQt5Gui.so.5.15.4 /usr/lib/riscv64-linux-gnu/libQt5Core.so.5.15.4 /usr/lib/riscv64-linux-gnu/libssl.so /usr/lib/riscv64-linux-gnu/libcrypto.so /usr/lib/riscv64-linux-gnu/libcrypto.so /usr/lib/riscv64-linux-gnu/libxxhash.so /usr/lib/riscv64-linux-gnu/libgiomm-2.4.so /usr/lib/riscv64-linux-gnu/libglibmm-2.4.so /usr/lib/riscv64-linux-gnu/libsigc-2.0.so /usr/lib/riscv64-linux-gnu/libgio-2.0.so /usr/lib/riscv64-linux-gnu/libgobject-2.0.so /usr/lib/riscv64-linux-gnu/libglib-2.0.so /usr/lib/riscv64-linux-gnu/libxcb-keysyms.so /usr/lib/riscv64-linux-gnu/libxcb-record.so /usr/lib/riscv64-linux-gnu/libxcb-screensaver.so /usr/lib/riscv64-linux-gnu/libxcb.so /usr/lib/riscv64-linux-gnu/libwayland-client.so
/usr/bin/ld: ../../../lib_crl/CMakeFiles/lib_crl.dir/crl/common/crl_common_queue.cpp.o: in function `std::__atomic_base<bool>::compare_exchange_strong(bool&, bool, std::memory_order, std::memory_order)':
/usr/include/c++/12/bits/atomic_base.h:560: undefined reference to `__atomic_compare_exchange_1'
/usr/bin/ld: ../../../lib_crl/CMakeFiles/lib_crl.dir/crl/crl_object_on_thread.cpp.o: in function `std::unique_lock<std::mutex>::unlock()':
/usr/include/c++/12/bits/unique_lock.h:193: undefined reference to `__atomic_compare_exchange_1'
collect2: error: ld returned 1 exit status
make[3]: *** [Telegram/codegen/codegen/style/CMakeFiles/codegen_style.dir/build.make:268: Telegram/codegen/codegen/style/codegen_style] Error 1
make[3]: Leaving directory '/<<PKGBUILDDIR>>/obj-riscv64-linux-gnu'
make[2]: *** [CMakeFiles/Makefile2:2224: Telegram/codegen/codegen/style/CMakeFiles/codegen_style.dir/all] Error 2
make[2]: *** Waiting for unfinished jobs....
```

The patch attached is trying to fix the issue and it can be built
successfully on my local real riscv64 hardware, so could you apply 
it in the next time. thanks.

-- 
Regards,
--
  Bo YU

diff -Nru telegram-desktop-4.1.1+ds/debian/rules telegram-desktop-4.1.1+ds/debian/rules
--- telegram-desktop-4.1.1+ds/debian/rules	2022-07-03 12:44:08.000000000 +0000
+++ telegram-desktop-4.1.1+ds/debian/rules	2022-08-17 17:16:12.000000000 +0000
@@ -65,6 +65,11 @@
  DEB_CXXFLAGS_MAINT_PREPEND += -gsplit-dwarf
 endif
 
+# Link with libatomic on riscv64
+ifeq ($(DEB_HOST_ARCH),riscv64)
+	export DEB_LDFLAGS_MAINT_APPEND += -Wl,--no-as-needed -latomic -Wl,--as-needed
+endif
+
 ifeq ($(filter pkg.$(DEB_SOURCE).hugeopt,$(DEB_BUILD_PROFILES)),)
  ifeq ($(DEB_VENDOR),Ubuntu)
   # Link time optimizations require more than 8 GB of RAM.

Attachment: signature.asc
Description: PGP signature


Reply to: