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