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: