Package: release.debian.org Severity: normal User: release.debian....@packages.debian.org Usertags: transition
Hi, I recently realized that libpapi5 (5.7.0-1) is not compatible with applications built against papi 5.6 (or any other mismatching major.minor version) due to the runtime checks performed in PAPI_library_init() and the way this is to be called from applications. Applications will abort after PAPI_library_init() returned an error and require recompilation against the current version. (I ran into this incompatibility myself.) #928367 Upstream confirmed that they only intend to maintain ABI compatibility for major.minor.*.* releases, but not between different minor versions. The soname therefore should have never been libpapi.so.major but rather libpapi.so.major.minor Patching out the check completely is non-trivial since it is some kind of handshake beween caller and callee (app and lib). I'm pretty sure the ABI has not changed between 5.5 (stretch) and 5.7, but I wouldn't put my hand into the fire for it. And upstream has no way to track ABI independently of major.minor version, given that the runtime check exists for a long time already. While I could patch papi to use version 5.6.99.99 internally instead of 5.7.0.0 to restore compatibility with the snapshot we had in buster previously (only major.minor are being compared), this would still be incompatible with programs built on stretch which had libpapi5 5.5.* Given the limited amount of packages involved, I'd prefer to perform a late but proper transition libpapi5 -> libpapi5.7 for buster. # Depends: eztrace: libeztrace0 [amd64 arm64 armel armhf i386 mips mips64el mipsel ppc64el] # Build-Depends: eztrace: libpapi-dev eztrace-contrib/contrib: libpapi-dev mpqc3: libpapi-dev Only one binNMU is needed. mpqc3 links statically (will fix post buster) and eztrace-contrib probably shares the packaging with eztrace, and IIRC only builds some addon modules. If I had seen this coming, I would have done the transition in time for the 5.6 snapshot we previously had and left 5.7 for bullseye. Ben file: title = "papi"; is_affected = .depends ~ "libpapi5" | .depends ~ "libpapi5.7"; is_good = .depends ~ "libpapi5.7"; is_bad = .depends ~ "libpapi5";