Virtual PIM
Virtual PIM
Technical assessment
Summary
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: https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=942415
Example: libkf5gravatar and kmail
- kmail build depends on libkf5gravatar-dev (src: libkf5gravatar)
- change in libkf5gravatar providing the virtual package and the proper shlibs file:
- changes in kmail:
- delete Breaks/Replaces against reverse depends: https://salsa.debian.org/qt-kde-team/kde/kmail/commit/5d62d9fd789560bf01ef6baa02575a4eeef6ee9a
- bump build dependencies to build against the virtual package based library packages: https://salsa.debian.org/qt-kde-team/kde/kmail/commit/456b2d1957b922f033b3fe3093881f9298d2fc54
IRC conversations
- https://irclogs.ubuntu.com/2019/11/17/%23kubuntu-devel.html#t17:20
- https://irclogs.ubuntu.com/2019/11/20/%23kubuntu-devel.html#t20:33
What we need
- This pkg-kde-tools change (already available in focal): https://salsa.debian.org/qt-kde-team/pkg-kde-tools/commit/74235691f8fb9194dea361a88ffd73b1b8c5ff41
- Change our kdepim packages to match debian package names.
- Change our kdepim packages to implement the new ABI handling strategy.
- 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/pkg-info.mk
- 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))) override_dh_makeshlibs: 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}"; \ done
PPA and branches to push/upload the changes mentioned above
- We will use separate dedicated branches to push our WIP packaging changes, name: kubuntu_focal_virtualpim
- We will use this PPA to upload our WIP packages: https://launchpad.net/~kubuntu-ppa/+archive/ubuntu/experimental
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.