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)