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

Re: nlohmann-json3-dev need to be reverted to trixie version



On Mon, Sep 15, 2025 at 05:00:11PM +0000, Gianfranco Costamagna wrote:
> >Should I do another NMU with version 3.12.0.really.3.12.0.really.3.11.3-0.1 to
> >fix this issue ? 
> 
> please no :)

I do not see much alternative.
 
> the fact that build-dependencies have a strong dependency on the abi is not
> sufficient? I thought it was enough to make sure they were picking up the new
> abi...

We tried to explain this four times already.  If you were unsure, you could
have discussed your plan in the bug report #1106511 in advance, and please
remember to always CC the submitter when posting to a bug, otherwise the
submitter does not get a copy, only the maintainer.

libxeus11 is a shared library and so has a _fixed_ ABI that _cannot_ be changed.
However its ABI incorporates nlohmann-json3 ABI so it needs to be build always with the same nlohmann-json3 ABI.
However nlohmann-json3 upstream has set up nlohmann-json3 so that its ABI include the version number, so
that means that libxeus11 must always be built with the exact same version of nlohmann-json3, which is 3.11.3.
When libxeus12 is released, it will incorporate a newer nlohmann-json3 version, and so we will be able to move to
that new version, but not before.

Rebuilding libxeus11 with 3.12.0 with lead to a libxeus11 package with a wrong ABI.

You can check that by doing
nm -D /usr/lib/x86_64-linux-gnu/libxeus.so.11.1.1|grep nlohmann

00000000000205e0 T _ZNK4xeus7xtarget15publish_messageERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEN8nlohmann16json_abi_v3_11_310basic_jsonISt3mapSt6vectorS6_blmdSaNSA_14adl_serializerESD_IhSaIhEEvEESH_SD_ISD_IcS5_ESaISI_EE

when build with nlohmann-json3 3.12.0 one will get a different symbol

00000000000205e0 T _ZNK4xeus7xtarget15publish_messageERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEN8nlohmann16json_abi_v3_12_010basic_jsonISt3mapSt6vectorS6_blmdSaNSA_14adl_serializerESD_IhSaIhEEvEESH_SD_ISD_IcS5_ESaISI_EE

so the library is incompatible.

This is the issue that happened last time with 3.11.2->3.11.3, see #1060164.
This issue was worked around because libxeus9 was going to be replaced by libxeus10.
But so far I see no plan for a libxeus12, so we cannot afford to break libxeus11.

And of course there are other libraries using nlohmann-json3 that might have the same issue.
Debian takes library ABI seriously.

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

Imagine a large red swirl here. 


Reply to: