Bug#1103637: libeckit0d: Exception constructor ABI break affecting at least odc, magics++ and python-xarray

Martin Hostettler textshell at uchuujin.de
Sat Apr 19 21:34:29 BST 2025


Package: libeckit0d
X-Debbugs-Cc: ghisvail at gmail.com
Version: 1.29.1-1
Severity: serious
Justification: Policy 8.1
Control: affects -1 odc magics++ python-xarray
Control: block 1100293 by -1

While investigating a build failure in magics++ [1] i noticed that
eckit upstream changed their exception constructors extensively in the 1.29
upstream release

https://github.com/ecmwf/eckit/commit/76990068c35a8cd3d9573585a762ae1a2d2454d5#diff-9b7bfdb8788cc84e5099d6294707382018383d212a4bb93d5b84994771cd71f7

This of course breaks abi (and API when not using default arguement values).

In the build of python-xarray this manifests in these errors:

/usr/bin/ld: /usr/lib/x86_64-linux-gnu/libodccore.so.0d: undefined reference to `eckit::UserError::UserError(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)'
/usr/bin/ld: /usr/lib/x86_64-linux-gnu/libodccore.so.0d: undefined reference to `eckit::SeriousBug::SeriousBug(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)'
/usr/bin/ld: /usr/lib/x86_64-linux-gnu/libodccore.so.0d: undefined reference to `eckit::Exception::Exception(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)'
/usr/bin/ld: /usr/lib/x86_64-linux-gnu/libodccore.so.0d: undefined reference to `eckit::UserError::UserError(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)'
/usr/bin/ld: /usr/lib/x86_64-linux-gnu/libodccore.so.0d: undefined reference to `eckit::SeriousBug::SeriousBug(char const*, eckit::CodeLocation const&)'
/usr/bin/ld: /usr/lib/x86_64-linux-gnu/libodccore.so.0d: undefined reference to `eckit::NotImplemented::NotImplemented(eckit::CodeLocation const&)'
/usr/bin/ld: /usr/lib/x86_64-linux-gnu/libodccore.so.0d: undefined reference to `eckit::Exception::Exception(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)'
/usr/bin/ld: /usr/lib/x86_64-linux-gnu/libodccore.so.0d: undefined reference to `eckit::CantOpenFile::CantOpenFile(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, eckit::CodeLocation const&, bool)'
/usr/bin/ld: /usr/lib/x86_64-linux-gnu/libodccore.so.0d: undefined reference to `eckit::FailedSystemCall::FailedSystemCall(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)'
collect2: error: ld returned 1 exit status

Which actually show that libodccore.so.0d uses symbols no longer included
in libeckit0d thus failing the link of any library or application linking
to libodccore.so.0d.

As the soname is a debian downstream patch, this might be that upstream
doesn't consider the abi stable across releases. But in debian we need
some kind of fix.

As debian is long past transition freeze, bumping the soname might
no longer be an option.

I locally got the broken magics++ build to work by using locally
rebuild odc packages.

I might also be possible to restore the old exception constructors in a
local patch.

The build failure blocks builds migrating to testing which causes a
autorm cascade of 140 packages.

Due to the current freeze status, removal of these packages from trixie
will likely be permanent if it is going through.

According to the release team packages failing to migrate is itself a
RC bug.

I set severity to serious in part to avoid this break migrating to testing
while there is not yet a plan how to fix this.

Regards,
 - Martin Hostettler


[1] https://buildd.debian.org/status/fetch.php?pkg=magics%2B%2B&arch=amd64&ver=4.16.0-1&stamp=1744757609&raw=0

-- System Information:
Debian Release: trixie/sid
  APT prefers unstable
  APT policy: (500, 'unstable')
Architecture: amd64 (x86_64)

Kernel: Linux 6.12.21-amd64 (SMP w/16 CPU threads; PREEMPT)
Locale: LANG=en_US.UTF-8, LC_CTYPE=en_US.UTF-8 (charmap=UTF-8) (ignored: LC_ALL set to C.UTF-8), LANGUAGE not set
Shell: /bin/sh linked to /usr/bin/dash
Init: unable to detect

Versions of packages libeckit0d depends on:
ii  libaec0             1.1.3-1+b1
ii  libbz2-1.0          1.0.8-6
ii  libc6               2.41-7
ii  libcurl3t64-gnutls  8.13.0-2
ii  libgcc-s1           14.2.0-19
ii  libgomp1            14.2.0-19
ii  liblz4-1            1.10.0-4
ii  libopenblas0        0.3.29+ds-3
ii  libopenmpi40        5.0.7-1
ii  libproj25           9.6.0-1
ii  libqhull-r8.0       2020.2-6+b2
ii  libqhullcpp8.0      2020.2-6+b2
ii  librados2           18.2.4+ds-13+b1
ii  librsync2t64        2.3.4-1.1+b1
ii  libsnappy1v5        1.2.2-1
ii  libssl3t64          3.5.0-1
ii  libstdc++6          14.2.0-19
ii  libtinfo6           6.5+20250216-2

libeckit0d recommends no packages.

libeckit0d suggests no packages.

-- no debconf information



More information about the debian-science-maintainers mailing list