Virtual PIM
Updated 222 Days AgoPublic

Technical assessment


Kdepim libraries break their ABI without SONAME bump. This forces us to use the debian ABI manager which increases our delta with Debian.

They are implementing in Debian a new strategy to deal with these ABI unstable libraries. While this change is meant to bundle kdepim so it gets migrated by britney as a single piece, it would reduce our delta with Debian as a good side effect.

The new strategy

It's explained in this transition bug:

Example: libkf5gravatar and kmail

IRC conversations

What we need

  1. This pkg-kde-tools change (already available in focal):
  2. Change our kdepim packages to match debian package names.
  3. Change our kdepim packages to implement the new ABI handling strategy.
  4. Make a list of packages needing rebuild after a kdepim transition. We will need to rebuild this list of packages for each new major kdepim release.

Planned actions (DRAFT)

Modifications to kdepim packages

For each kdepim package make the following 3 commits:

  • Commit #1: remove all symbols files
  • Commit #2: Check its current package name differences with debian with check-binpkg-names. Rename the packages with different *abiX names to match Debian's.
  • Commit #3: Add suport for virtual packages:
    • add Provides: ${ABI:VirtualPackage} to each library binary package
    • add this include to debian/rules: include /usr/share/dpkg/
    • add this code to debian/rules:
AbiVirtualPackageVersion = $(call dpkg_late_eval,AbiVirtualPackageVersion,echo '${DEB_VERSION_UPSTREAM}' | sed -e 's/\.[0-9]\+$$//')
pkgs_lib = $(filter-out %-dev %-doc %-dbg %-data %-bin %-plugins,$(filter lib%,$(shell dh_listpackages)))

	for pkg in $(pkgs_lib); do \
		name=$$( echo "$${pkg}" | sed -e 's/abi[0-9]\+\s*//'); \
		echo "ABI:VirtualPackage=$${name}-${AbiVirtualPackageVersion}" >> debian/$${pkg}.substvars; \
		$(overridden_command) -p$${pkg} -V "$${pkg} (>= $(DEB_VERSION_EPOCH_UPSTREAM)), $${name}-${AbiVirtualPackageVersion}"; \

PPA and branches to push/upload the changes mentioned above

Building order

  • To build these changes properly we need to make sure they are built following the build dependecies graph order, we can't do it in random order.
  • To get proper build graphs we agreed to make a virtualpim branch in ka-metadata providing the needed data to get ka-graph and friends working right.

Find out the 3rd party packages affected by the kdepim transition

Make a KA command named kdepim-transition-3rdparty which would give us a list of all the packages affected by the transition which are not part of kdepim itself.

Last Author