usr-merge preparations

This MR is designed to prepare for the testing of /usr merge. This MR has several distinct parts that could potentially be merged independently:

The introduction of postmarketos-base-init provider

(This is the first 4 commits)

This is necessary so that postmarketos-base-openrc no longer is installed through an install_if, but through an "init" provider. This is what later allows the removal of the openrc dependency from postmarketos-base

Tests (upgrade tests after first rework was not done for this intermediate step):

  • openrc upgrades: the postmarketos-base-openrc remains installed, moves from being an "install_if", to be there because it fulfills the postmarketos-base-init requirements.
  • systemd upgrades: postmarketos-base-systemd is still in /etc/apk/world, and it fulfills the new dependency in postmarketos-base. Nothing happens.
  • openrc installs: pmbootstrap will choose postmarketos-base-openrc as it's the only thing that is in the repository that fulfills the condition. If both postmarketos-base-openrc and postmarketos-base-systemd where there, I'm not 100% sure of which would be selected. The one with the higher version?
  • systemd installs: postmarketos-base-systemd is installed before anything else is. That means, postmarketos-base-init will already be satisfied when postmarketos-base gets installed, and openrc will not be installed

The removal of alpine-base dependency

And thus the hard-coding of openrc generally for postmarketOS. When there is no systemd, openrc is still pulled, but the dependency chain changes:

  • From pmos-base->alpine-base->openrc
  • To pmos-base->pmos-base-init->pmos-base-openrc->openrc

This part can be helped with pmbootstrap!2580 (merged)

Tests:

  • openrc upgrades: if people have alpine-base in their /etc/apk/world, it will remain installed. This is not an issue. I had it from the thousand tests I've run for this for several months
  • systemd upgrades: Minor issue: due to alpine-base being installed in every chroot from pmbootstrap, the forked alpine-base version won't be removed. I've tried adding !alpine-base to postmarketos-base dependencies, but that doesn't work . Ideas:
    • Ask everybody to remove manually in an edge blog post, and release notes, once we have a release with /usr merge
    • Just keep it there forever? Does it hurt?
  • openrc installs: nothing unexpected
  • systemd installs: alpine base does not get install, all goes perfect!
Edited by Clayton Craft

Merge request reports

Loading