Skip to content
Release 3.0.0

After roughly a half year of working on it, we are happy to announce the 3.0.0
release of pmbootstrap. Usually we have a detailed list of every merge request,
but this time it is too much effort and here are just the highlights.

Important changes affecting users:
* pmbootstrap now requires kpartx and losetup (with --json argument, not the
  busybox one) to be installed. We used to call these from the Alpine chroot,
  but requiring them to be installed on the host made our code much more
  maintainable.
* the "aports" symlink does not get created anymore in the pmbootstrap dir (it
  was confusing as it pointed at our pmaports.git which is not the same as
  Alpine's aports.git)
* pmbootstrap uses a new config file called "pmbootstrap_v3.cfg". This decision
  was made so users could switch back and forth between 2.3.x and 3.0.0
  (requires using a different work path), if they see a regression with 3.0.0.

Features:
* pmbootstrap is faster: always using "apk.static" with native arch instead of
  sometimes using apk through QEMU and many caching improvements for
  parsing APKBUILDs etc.
* Packages to build are now calulated and shown ahead of time
* Incremental builds with "pmbootstrap build --src"
* "pmbootstrap chroot --image"
* GPT instead of MBR partition tables
* Implementing the Discoverable Partitions Specification
* "doas" support in "pmbootstrap sideload"
* "pmbootstrap config -r" to reset config values, and in general pmbootstrap's
  config file handling has been rewritten and greatly improved
* Supporting a second binary repository for systemd packages (that will get
  enabled/disabled based on user's and as fallback the selected UI's preference
  for OpenRC/systemd)

Huge maintenance improvements:
* A lot of the code has type annotations now
* The "args" parameter that had to be used with almost every function in
  pmbootstrap 2.x has been removed from almost all functions
* Tests were rewritten: tests that were very specific to the previous, hard to
  maintain codebase have been removed; new tests have been added; integration
  tests have been added too for just running various "pmbootstrap" commands
* CI now runs for python 3.10 and 3.12

If you hit any bugs, please report them here:
https://gitlab.postmarketos.org/postmarketOS/pmbootstrap/-/issues

Thanks to everybody who contributed, especially Caleb who made the base for
this release with a big rewrite of a lot of hard to maintain old code:
https://connolly.tech/posts/2024_06_15-pmbootstrap-v3/