Bug#1060164: libxeus9 incompatible with nlohmann::json_abi_v3_11_3

Bill Allombert ballombe at debian.org
Sat Jan 6 17:29:01 GMT 2024


Package: xeus-dev
Version: 3.1.3-1
Severity: serious

Dear Debian Science maintainers,

I have trouble with linking with libxeus9 since I upgraded
nlohmann-json3-dev to 3.11.3-1.

It seems to me nlohmann-json3-dev 3.11.3-1. is changing the API of libxeus9 in 
an incompatible way.

/lib/x86_64-linux-gnu/libxeus.so.9 defines 

xeus::make_null_debugger(xeus::xcontext&, xeus::xconfiguration const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, nlohmann::json_abi_v3_11_2::basic_json<std::map, std::vector, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, bool, long, unsigned
long, double, std::allocator, nlohmann::json_abi_v3_11_2::adl_serializer, std::vector<unsigned char, std::allocator<unsigned char> > > const&)

while programs compiled with xeus-dev and nlohmann-json3-dev require

xeus::make_null_debugger(xeus::xcontext&, xeus::xconfiguration const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, nlohmann::json_abi_v3_11_3::basic_json<std::map, std::vector, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, bool, long, unsigned
long, double, std::allocator, nlohmann::json_abi_v3_11_3::adl_serializer, std::vector<unsigned char, std::allocator<unsigned char> >, void> const&)'

That is 'nlohmann::json_abi_v3_11_3' instead of 'nlohmann::json_abi_v3_11_2'

This causes xeus-based kernels to fail to link.

main.cpp:(.text+0x58b): undefined reference to `xeus::make_null_debugger(xeus::xcontext&, xeus::xconfiguration const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, nlohmann::json_abi_v3_11_3::basic_json<std::map, std::vector, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, bool, long, unsigned long, double, std::allocator, nlohmann::json_abi_v3_11_3::adl_serializer, std::vector<unsigned char, std::allocator<unsigned char> >, void> const&)'

Downgrading nlohmann-json3-dev to 3.11.2-2 fixes this issue.

binNMUing libxeus9 might fix this issue, but will probably silently change the ABI of libxeus9 without
updating the shlibs. This is worrysome. I hope I am wrong about that.

Cheers,
-- 
Bill. <ballombe at debian.org>

Imagine a large red swirl here. 



More information about the debian-science-maintainers mailing list