Gentoo Websites Logo
Go to: Gentoo Home Documentation Forums Lists Bugs Planet Store Wiki Get Gentoo!
Bug 739484 - net-p2p/qbittorrent-4.2.5 with libtorrent-rasterbar-1.2.9 - ld: tracker.o: in function `BitTorrent::Tracker::prepareAnnounceResponse(BitTorrent::Tracker::TrackerAnnounceRequest const&)': tracker.cpp:(.text+0x1cbd): undefined reference to `libtorrent::...
Summary: net-p2p/qbittorrent-4.2.5 with libtorrent-rasterbar-1.2.9 - ld: tracker.o: in...
Status: RESOLVED FIXED
Alias: None
Product: Gentoo Linux
Classification: Unclassified
Component: Current packages (show other bugs)
Hardware: All Linux
: Normal normal (vote)
Assignee: Mikle Kolyada (RETIRED)
URL:
Whiteboard:
Keywords:
: 739646 740758 (view as bug list)
Depends on:
Blocks:
 
Reported: 2020-08-29 07:41 UTC by Opportunist
Modified: 2020-09-09 12:04 UTC (History)
7 users (show)

See Also:
Package list:
Runtime testing required: ---


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description Opportunist 2020-08-29 07:41:58 UTC
amd64

linking qbittorrent                                                                                                           
/usr/lib/gcc/x86_64-pc-linux-gnu/9.3.0/../../../../x86_64-pc-linux-gnu/bin/ld: resumedatasavingmanager.o: in function `int lib
torrent::detail::bencode_recursive<Utils::IO::FileDeviceOutputIterator>(Utils::IO::FileDeviceOutputIterator&, libtorrent::entr
y const&)':                                                                                                                   
resumedatasavingmanager.cpp:(.text._ZN10libtorrent6detail17bencode_recursiveIN5Utils2IO24FileDeviceOutputIteratorEEEiRT_RKNS_5
entryE[_ZN10libtorrent6detail17bencode_recursiveIN5Utils2IO24FileDeviceOutputIteratorEEEiRT_RKNS_5entryE]+0x459): undefined re
ference to `libtorrent::entry::dict[abi:cxx11]() const'                                                                       
/usr/lib/gcc/x86_64-pc-linux-gnu/9.3.0/../../../../x86_64-pc-linux-gnu/bin/ld: tracker.o: in function `BitTorrent::Tracker::pr
epareAnnounceResponse(BitTorrent::Tracker::TrackerAnnounceRequest const&)':                                                   
tracker.cpp:(.text+0x1cbd): undefined reference to `libtorrent::entry::entry(std::map<std::__cxx11::basic_string<char, std::ch
ar_traits<char>, std::allocator<char> >, libtorrent::entry, libtorrent::aux::strview_less, std::allocator<std::pair<std::__cxx
11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, libtorrent::entry> > >)'                         
/usr/lib/gcc/x86_64-pc-linux-gnu/9.3.0/../../../../x86_64-pc-linux-gnu/bin/ld: tracker.cpp:(.text+0x22f8): undefined reference
 to `libtorrent::entry::entry(std::map<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, libtor
rent::entry, libtorrent::aux::strview_less, std::allocator<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, 
std::allocator<char> > const, libtorrent::entry> > >)'                                                                        
/usr/lib/gcc/x86_64-pc-linux-gnu/9.3.0/../../../../x86_64-pc-linux-gnu/bin/ld: tracker.o: in function `BitTorrent::Tracker::pr
ocessRequest(Http::Request const&, Http::Environment const&) [clone .cold]':                                                  
tracker.cpp:(.text.unlikely+0xb34): undefined reference to `libtorrent::entry::entry(std::map<std::__cxx11::basic_string<char,
 std::char_traits<char>, std::allocator<char> >, libtorrent::entry, libtorrent::aux::strview_less, std::allocator<std::pair<st
d::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, libtorrent::entry> > >)'                 
/usr/lib/gcc/x86_64-pc-linux-gnu/9.3.0/../../../../x86_64-pc-linux-gnu/bin/ld: tracker.o: in function `int libtorrent::detail:
:bencode_recursive<std::back_insert_iterator<QByteArray> >(std::back_insert_iterator<QByteArray>&, libtorrent::entry const&)':
tracker.cpp:(.text._ZN10libtorrent6detail17bencode_recursiveISt20back_insert_iteratorI10QByteArrayEEEiRT_RKNS_5entryE[_ZN10lib
torrent6detail17bencode_recursiveISt20back_insert_iteratorI10QByteArrayEEEiRT_RKNS_5entryE]+0x23a): undefined reference to `li
btorrent::entry::dict[abi:cxx11]() const'                                                                                     
/usr/lib/gcc/x86_64-pc-linux-gnu/9.3.0/../../../../x86_64-pc-linux-gnu/bin/ld: tracker.o: in function `void std::vector<libtor
rent::entry, std::allocator<libtorrent::entry> >::_M_realloc_insert<std::map<std::__cxx11::basic_string<char, std::char_traits
<char>, std::allocator<char> >, libtorrent::entry, libtorrent::aux::strview_less, std::allocator<std::pair<std::__cxx11::basic
_string<char, std::char_traits<char>, std::allocator<char> > const, libtorrent::entry> > >&>(__gnu_cxx::__normal_iterator<libt
orrent::entry*, std::vector<libtorrent::entry, std::allocator<libtorrent::entry> > >, std::map<std::__cxx11::basic_string<char
, std::char_traits<char>, std::allocator<char> >, libtorrent::entry, libtorrent::aux::strview_less, std::allocator<std::pair<s
td::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, libtorrent::entry> > >&)':
tracker.cpp:(.text._ZNSt6vectorIN10libtorrent5entryESaIS1_EE17_M_realloc_insertIJRSt3mapINSt7__cxx1112basic_stringIcSt11char_t
raitsIcESaIcEEES1_NS0_3aux12strview_lessESaISt4pairIKSB_S1_EEEEEEvN9__gnu_cxx17__normal_iteratorIPS1_S3_EEDpOT_[_ZNSt6vectorIN
10libtorrent5entryESaIS1_EE17_M_realloc_insertIJRSt3mapINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES1_NS0_3aux12strvi
ew_lessESaISt4pairIKSB_S1_EEEEEEvN9__gnu_cxx17__normal_iteratorIPS1_S3_EEDpOT_]+0x148): undefined reference to `libtorrent::en
try::entry(std::map<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, libtorrent::entry, libtor
rent::aux::strview_less, std::allocator<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char
> > const, libtorrent::entry> > >)'
collect2: error: ld returned 1 exit status

Reproducible: Always
Comment 1 Nikos Chantziaras 2020-08-29 08:11:19 UTC
And trying to run qbittorrent if it was already built with libtorrent-rasterbar-1.2.8 results in an abort:

qbittorrent: symbol lookup error: qbittorrent: undefined symbol: _ZNK10libtorrent5entry4dictB5cxx11Ev
Comment 2 wbrana 2020-08-29 14:57:41 UTC
something is probably compiled with wrong -std= value
Comment 3 Jouni Kosonen 2020-08-29 23:27:04 UTC
(In reply to wbrana from comment #2)
> something is probably compiled with wrong -std= value

Yes, looks like using autotools adds -std=c++11 to the command line by default but clients compiled with c++14 using version 1.2.9 of the library then need some additional compilation flag to have access to that ABI.
Comment 4 Vladimir Smirnov 2020-08-30 00:02:56 UTC
It seems that autotools configuration is deprecated in favor of CMake as if you just switch to cmake - it will work fine without any problems. However I struggle to find exact commit that cuases the problem here as there were numerous that introduced new CMake flags related to C++11/14 ABI but none of those touched autotools build system.

Any reasons why Gentoo still goes for autotools instead of CMake for this package?
Comment 5 Larry the Git Cow gentoo-dev 2020-08-30 11:09:28 UTC
The bug has been referenced in the following commit(s):

https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=1ca8c2a8a1415a7e6701157ff6ccb6b06537edca

commit 1ca8c2a8a1415a7e6701157ff6ccb6b06537edca
Author:     Mikle Kolyada <zlogene@gentoo.org>
AuthorDate: 2020-08-30 11:08:45 +0000
Commit:     Mikle Kolyada <zlogene@gentoo.org>
CommitDate: 2020-08-30 11:09:28 +0000

    net-p2p/qbittorrent: workaround libtorrent-rasterbar dependency
    
    * qbitorrent applies -std=c++14
    * liboterrent-rasterbar applies -std=c++11
    
    Bug: https://bugs.gentoo.org/739484
    Package-Manager: Portage-2.3.103, Repoman-2.3.23
    Signed-off-by: Mikle Kolyada <zlogene@gentoo.org>

 .../{qbittorrent-4.2.5.ebuild => qbittorrent-4.2.5-r1.ebuild}           | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)
Comment 6 Larry the Git Cow gentoo-dev 2020-08-30 12:04:16 UTC
The bug has been closed via the following commit(s):

https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=563614dcae25370b7b6196166250035d1d699afa

commit 563614dcae25370b7b6196166250035d1d699afa
Author:     Mikle Kolyada <zlogene@gentoo.org>
AuthorDate: 2020-08-30 12:00:15 +0000
Commit:     Mikle Kolyada <zlogene@gentoo.org>
CommitDate: 2020-08-30 12:04:16 +0000

    net-p2p/qbittorrent: remove libtorrent restriction
    
    Closes: https://bugs.gentoo.org/739484
    Package-Manager: Portage-2.3.103, Repoman-2.3.23
    Signed-off-by: Mikle Kolyada <zlogene@gentoo.org>

 .../{qbittorrent-4.2.5-r1.ebuild => qbittorrent-4.2.5-r2.ebuild}       | 3 +--
 1 file changed, 1 insertion(+), 2 deletions(-)
Comment 7 Jeroen Roovers (RETIRED) gentoo-dev 2020-08-31 08:00:21 UTC
*** Bug 739646 has been marked as a duplicate of this bug. ***
Comment 8 Mikle Kolyada (RETIRED) archtester Gentoo Infrastructure gentoo-dev Security 2020-09-07 17:58:48 UTC
*** Bug 740758 has been marked as a duplicate of this bug. ***
Comment 9 Mikle Kolyada (RETIRED) archtester Gentoo Infrastructure gentoo-dev Security 2020-09-07 19:26:33 UTC
*** Bug 740758 has been marked as a duplicate of this bug. ***
Comment 10 Mikle Kolyada (RETIRED) archtester Gentoo Infrastructure gentoo-dev Security 2020-09-09 12:04:29 UTC
*** Bug 740758 has been marked as a duplicate of this bug. ***