Package: libre2-dev Version: 20240702-3 Severity: normal X-Debbugs-Cc: abs...@packages.debian.org
Hi! At work we just noticed that as part of the abseil transition, libabsl-dev had migrated to trixie, before re2 had been rebuilt against the newer version, and that was causing ABI issues, due to missing symbols. For most other packages that would be fine, because the old libabsl shared library was present, but for libre2 this is problematic, because libre2-dev itself exposes the libabsl-dev API (and ABI), so the problem is that for a while in testing there was a libre2-dev and libre2 that was linked against libabsl20230802, with its own libre2 symbols encoding the ABI for libabsl20230802, while libabsl-dev was encoding the ABI for the libabsl20240722 library. So linking code against libre2 would produce libre2 symbols with the new libabsl20240722 ABI, which would not be present in the installed libre2. I think this should not happen, and should be protected by the dependency system, but for that libabsl-dev would need to provide its ABI information in some way so that src:re2 could get it and then add it into its libre2-dev binary package dependency. The way I think this could be solved is for libabsl-dev to expose its ABI via a virtual package, containing both the value of ABSL_LTS_RELEASE_VERSION and ABSL_OPTION_INLINE_NAMESPACE_NAME (for example currently that could be «libabsl-dev-abi (= 20240722-debian7)», or maybe libabsl-abi instead of libabsl-dev-abi). Then this same information could also be exposed via one of the .pc files (the version is already exposed «pkgconf --modversion absl_config», but not the inline namespace), or alternatively could already be fetched via the macros, say with: version=$( echo -e '#include <absl/base/config.h>\nABSL_LTS_RELEASE_VERSION' \ | cpp -P - ) namespace=$( echo -e '#include <absl/base/options.h>\nABSL_OPTION_INLINE_NAMESPACE_NAME' \ | cpp -P - ) Then src:re2 could query that information via pkgconf and add this into its own libre2-dev binary packages dependency as in: Package: libre2-dev Depends: libabsl-dev, libabsl-dev-abi (= ${absl:libabsl-dev-abi}), ... Or something along those lines. If you, agree with the problem, then we could file a report against libabsl-dev and mark it as blocking for this one. (I've CCed the abseil maintainer for context and input.) Thanks, Guillem