Skip to content
Release 2.3.0

It's been a while since the last release, so this is a big one! While
the usual shortlog-style list will be below, I'll summarise the
highlights first:

 - We've migrated from setup.py to pyproject.toml. If you're packaging
   pmbootstrap, you may have to adjust the build recipe.

 - The output from pmbootstrap has been cleaned up in many cases and
   should be easier to understand. For example, $ pmbootstrap status has
   been simplified greatly and the warnings are now printed when they're
   actually relevant. We also no longer print a stacktrace when a build
   fails, which should help make it more clear what went wrong. The
   stacktrace didn't actually contain say anything about why the build
   failed, so it was just distracting information.

 - We now have documentation both describing pmbootstrap's internal
   "API" and how to use it as a user, generated via Sphinx. However, we
   haven't figured out where to host it yet, but if you're really
   curious you can poke around the CI pipelines and maybe find it :)

 - systemd support has been worked on. I don't know much about this
   though :(

 - Compatibility when running pmbootstrap on an aarch64 (64-bit ARM)
   system has been improved.

 - Support for Python 3.7 and 3.8 has been removed to allow for using
   more modern features and type hints.

And here goes the shortlog!

Features:
* Add "pmbootstrap repo_bootstrap" (MR 2273)
* APKBUILD parser: recognize all top-level variables (MR 2300)
* aportgen: Allow retaining current branch when forking Alpine (MR 2271)
* aportgen: Add short forms of arguments (MR 2271)
* aportgen: Set pkgver for devices to 1 by default (MR 2275)
* docs: add new configuration for generating docs using sphinx (MR 2266)
* init: ask whether to install systemd (MR 2273)
* install: add pmos-base-systemd if systemd enabled (MR 2273)
* logging: print text between *** in green (MR 2263)
* Migrate from setup.py to pyproject.toml (MR 2265)
* pmbootstrap init: remove text about daily zapping (MR 2293)
* pmbootstrap status: rework (MR 2294)
* pmb: Only log error if NonBugError is caught (MR 2279)
* pmb: Handle BuildFailedError (MR 2288)
* pmb.aportgen: add deviceinfo_bootimg_qcdt_type (MR 2276)
* pmb.build._package: Raise BuildFailedError when build fails (MR 2288)
* pmb.chroot.init: add postmarketos_mirror argument (MR 2273)
* pmb.chroot.init: upgrade pkgs at the end (MR 2273)
* pmb.chroot.init: warn about outdated chroots (MR 2293)
* pmb.config: do not prompt for nonfree fw/userland (MR 2255)
* pmb: install: allow to mount fat{16,32} /boot from /etc/fstab (MR 2304)
* pmb: install: add some sane mount options to default /boot in /etc/fstab (MR 2304)
* pmb: install: add options for default charset in vfat /boot partitions (MR 2304)
* pmb.parse: add get_parser for returning ArgumentParser obj (MR 2266)
* pmb.parse.bootimg: implement detection of QCDT types (MR 2276)
* pmb.parse.kconfig: Raise NonBugError on invalid kernel config (MR 2279)
* pmb.sideload: Query architecture from foreign device (MR 2282)
* pmb.sideload: Run apk incantation in a subshell (MR 2283)
* systemd installs: merge /usr on chroot init (MR 2273)
* Support pmb:systemd-never option (MR 2273)

Fixes:
* aportgen: shorten hasatrr checks with getattr (MR 2271)
* b4-config: Remove (MR 2257)
* build: fix !pmb:crossdirect (MR 2291)
* logging: reset style at the end of log line (MR 2272)
* pmb: correct link after moving sources back to gitlab (MR 2270)
* pmb.*: various comment reformatting to assist with generating docs (MR 2266)
* pmb.chroot.apk: Use unl0kr instead of osk-sdl in example (MR 2289)
* pmb.config: kconfig check: mark some EFI config as specific to ARM (MR 2269)
* pmb.config: kconfig check: add vfat to uefi check (MR 2269)
* pmb.config: kconfig check: add USB mass storage devices to community (MR 2281)
* pmb.config: kconfig check: turn off RT_GROUP_SCHED in 'community' (MR 2305)
* pmb.config.apkbuild_attributes: add sha512sums (MR 2296)
* pmb/config: s/für/for/
* pmb.flasher: fix C0303: Trailing whitespace (trailing-whitespace) (MR 2280)
* pmb.flasher.frontend: Replace osk-sdl with Unl0kr in FDE reminder (MR 2289)
* pmb.helpers.aportupgrade: Import urllib.parse explicitly (MR 2258)
* pmb.helpers.aportupgrade: Check for none pkgver_match in upgrade_git_package (MR 2258)
* pmb.helpers.aportupgrade: Don't return any value from upgrade (MR 2258)
* pmb.helpers.aportupgrade: Remove unused return values (MR 2258)
* pmb.helpers.exceptions: Add licence header (MR 2284)
* pmb.helpers.frontend: Add some type hints (MR 2262)
* pmb.helpers.repo_missing: Replace osk-sdl with unl0kr in example (MR 2289)
* pmb.helpers.run: Add some type hints (MR 2262)
* pmb.helpers.status: Add type hints (MR 2262)
* pmb.install: discover selected providers in dependencies too (MR 2261)
* pmb.install: fall back to a valid hostname if none set (MR 2260)
* pmb.install._install: Replace osk-sdl with unl0kr in nofde explanation (MR 2289)
* pmb.install…get_selected_providers: tweak comment (MR 2261)
* pmb.parse.arch: add armv8l -> armv7 mapping (MR 2259)
* pmb.parse.arch: use qemu for running armhf on aarch64 (MR 2285)
* pmb.parse.arch: Import pmb.config instead of pmb.parse.arch (MR 2282)
* pmb.parse.arguments: Check for argcomplete in sys.modules instead (MR 2258)
* pmb.parse._apkbuild: Disable attr-defined for entire module (MR 2258)
* pmb.parse._apkbuild: Fix subpackages with set arch but no custom function (MR 2267)
* pmb.sideload: Remove irrelevant output when querying architecture (MR 2286)
* pyproject.toml: Fix deprecation warning (MR 2262)
* Print ERROR: infront of {NonBug,BuildFailed}Error (MR 2298)
* require_bootstrap: ensure apkindex exists (MR 2287)
* README.md: mention parted bug in kernels between 5.8 and 6.0 (MR 2264)
* README: Replace osk-sdl with tinydm in newapkbuild example (MR 2289)
* test: Test subpackages which set a different architecture (MR 2267)
* test.test_apk: Replace osk-sdl with unl0kr in apk install test (MR 2289)
* test/test_parse_apkbuild: fix running standalone (MR 2300)
* CI: mypy: make compatible with "pmbootstrap ci" (MR 2258)
* CI: ruff: fix "ruff <path>" warning (MR 2274)
* Remove unnecessary setup.cfg, non-universal is the default (MR 2265)

Other:
* Add sanity check for "systemd" config values (MR 2273)
* config: add note on why mirrors are http and not https (MR 2256)
* config: organize defaults matching config_keys and order alphabetically (MR 2256)
* is_systemd_selected: check for branch support (MR 2273)
* pmb.build.is_necessary: replace version_{new,old} (MR 2295)
* pmb.build.is_necessary: tweak comments (MR 2295)
* pmb.build.is_necessary: tweak log msgs (MR 2295)
* pmb.helpers.exceptions: Introduce (MR 2279)
* pmb.helpers.exceptions: Add BuildFailedError (MR 2288)
* pmb.parse.arch: Break out marchine type to arch into separate function (MR 2282)
* pmbootstrap build, install: require repo_bootstrap (MR 2273)
* treewide: Rename unmaintained to archived (MR 2308)
* gitignore: Ignore KDevelop files and folder (MR 2302)
* test: disable cross compile test (MR 2307)
* test: Test pmb.parse.arch.machine_type_to_alpine (MR 2282)
* testdata/APKBUILD.var-replacements: add custom var (MR 2300)
* Drop support for python3.7 and python3.8 (MR 2265)
* CI: add Mypy check (MR 2258)
* CI: Always update packages (MR 2297)
* CI: Use yaml anchor for global before_script (MR 2297)
* CI: Stop adding testing repository in before_script (MR 2297)
* ci: add job to generate docs (MR 2266)