Upstream compatibility with Alpine

From postmarketOS Wiki

This article explains how to do maintenance in pmaports.git, to make sure it stays compatible with Alpine edge. Upstream compatibility checks are running hourly in the monitoring repository, and the badge of upstream compatibility is visible in the pmaports gitlab project. Information might be incomplete (as of writing, this was just started to document how to fix python breakage), please extend what is missing for future reference.

To simply bump the pkgrel of a package, use pmbootstrap pkgrel_bump name-of-pkg.

If there is noticeable fallout for users, make a post for the edge blog.

cross / aportgen

Most of the packages in the cross dir of pmaports are automatically generated from Alpine. If Alpine has a new version, and the upstream compat check complains about it, do this (example with binutils-* packages):

$ cd cross
$ pmbootstrap aportgen binutils-*
$ git diff # look through it, make sure everything looks good!
$ git commit -m "cross/binutils-*: upgrade to 1337"

If you are confident that this will work, then push it directly to pmaports.git. This makes sense for gcc especially, because it needs to be updated right after gcc is updated in Alpine - or else cross compilation is broken. Other packages are usually not as urgent. If you are unsure, better make a merge request and wait until CI confirms that this builds.

Python upgrade

If python was upgraded in Alpine to a new version (e.g. 3.8 to 3.9), all packages need to be rebuilt, which:

  • Depend on libpython (e.g. so:libpython3.8.so.1.0).
    • Monitoring will warn about these.
  • Install files to /usr/lib/python3.8/ (or other version).

Bump relevant pkgrels and make a MR. This should be trivial, so you can merge it once everything builds.