Release 3.7.0 Features: * envkernel: Add --llvm flag to use LLVM * kconfig: Reintroduce command line argument to check for categories * pmb.install: Support PowerPC PReP boot partitions * pmb.qemu: Support booting with OpenFirmware * pmb.helpers.run_core: Better handle invalid timeout values * pmb.build.kconfig: Use LLVM for kconfig where applicable * setup_keymap: support systemd * kconfig: print option value pref. in warning about missing config * pmb.shutdown: Add timeout to kill request sockets * pmb: Make command timeout opt-in * pmb.build.kconfig: add a "generate" cmd to build kconfig from fragments * pmb.build.kconfig: edit: add kernel fragment support * pmb.aportgen: Add empty maintainer fields to generated APKBUILDS * pmb.aportgen.device: Add postmarketos-base-downstream by default if relevant * pmb.config.init: Automatically switch to Edge if creating a new port * envkernel: Add support for RISC-V * pmb.build: Support architecture-specific fragments * pmb.qemu: Add UEFI support on RISC-V * envkernel: Make LLVM the default * pmb: Parse supported binary architectures from pmaports.cfg * pmb: Default PMB_APK_FORCE_MISSING_REPOSITORIES=1 on unsupported binary architectures * pmb.config.init: Rewrite message for new port creation * pmb.aportgen.linux: Add mainline kernel aport generation * pmb.config: add provider select prompting for pmos-usb-moded * pmb.parse._apkbuild: Add support for parsing maintainer fields * envkernel: Install required packages for Rust * pmb.parse.kconfigcheck: check correctness of arches Fixes: * Honor version constraints in makedepends * kconfig: strip quotes when checking string values * kconfig: refactor tristate value checking * pmb.config.init: Gracefully handle there not being any providrs for _pmb_select * pmb: Remove execute bit from config file mode * pmb.install: Fix `Unable to find the first partition of /dev/loop0` * pmb.parse.bootimg: Fix crash with non-default Exynos QCDT values * pmb.aportgen: Use NonBugError to inform that there is no generator * pmb.config.init: Use NonBugError for nonexistent devices * pmb.parse.deviceinfo: Use NonBugError for nonexistent devices * envkernel: enable word splitting for zsh * pmb: Fix kernel architecture logic * pmb.build: arch=all is not a single architecture * pmb.build.kconfig: Hardcode native chroot even more * pmb.helpers.git: Make upstream remote finding more robust * sideload: skip unnecessary apkindex updates * pmb.build: Fix bootstrap of systemd repo * pmb.parse: Don't prefer exact package match over other providers * pmb.chroot.apk: Reduce repetition in apk package check * pmb.build.envkernel: Use NonBugError for invalid package count * pmb.helpers.repo: Skip nonexistent APK indexes * pmb.core.context: Re-enable ccache by default * pmb.aportgen: Use NonBugError for cancelling an overwrite * pmb.build.init: Initialise chroot when initialising compiler * pmb.config.workdir: Use NonBugError for channel mismatch message Other: * pmb.arch: Differentiate between qemu-user and qemu-system names * pmb.parse.cpuinfo: Allow overriding cpuinfo path * test.parse.test_cpuinfo: New test * pmb: Remove unused imports * kconfig: soften the INFO msg for preferred kconfig option values * pmb: Clean up some instances of type:ignore * kconfig: Rename components_list to categories * kconfig: Take base kconfig categories from function argument for check * pmb.install: Remove mentions of ondev-prepare-internal-storage.sh * docs: use new docs.postmarketos.org theme * docs: rework index page * docs: tweak headlines * gitlab-ci: deploy: trigger docs.postmarketos.org * docs: remove sphinxext.opengraph * docs: remove requirments.txt file * gitlab-ci: fix trigger on changes in docs dir * docs: remove the version number * docs: remove initial comments, duplicated info from theme * docs.conf: re-add extensions * .gitignore: Add mypyc section * pmb: Enable C4 checks * docs: use postmarketOS contributors in copyright, remove author * pmb.build: package: replace map() with generator expression * pmb.build: package: rewrite list literal as set literal * docs.conf: Reformat with Ruff * pmb.parse.bootimg: Improve type hints * test/pytest.ini: Remove * README.md: Add note about /tmp with noexec causing problems * pmb.aportgen: Get rid of AportGenEntry * pmb.aportgen: Clean up a string * pmb.aportgen: Use f-string for "no generator" error message * pmb.build.envkernel: Clean up some strings * test.build.test_envkernel: New test * pyproject.toml: Override default norecursedirs for Pytest * pmb.build.kconfig: allow bypassing .config check in get_outputdir * pmb.build.kconfig: allow passing outputdir into _make * pmb.build.kconfig: _make: accept a list of make commands * pmb.config: add _defconfig as valid apkbuild var * pmb.parse.kconfig: add function to generate a fragment from kccheck.toml * test.parse.test_kconfig_generation: new test * test.build.test_kconfig_fragments: new test * pmb.aportgen.device: Clean up some strings * pmb.qemu.run: Make sigterm_handler() private * pmb.config.pmaports: Add DEVELOPMENT_CHANNEL constant * pmb.parse.deviceinfo: Clean up nonexistent device string * pmb.config.init: Replace manual induction variable handling * test.helpers.test_git: Add test for remote_to_name_and_clean_url() * tests: add missing type annotation * ci: check all scripts with mypy * pmb/config: update apk_tools_min_version * pmb: Remove more instances of args * pmb.helpers.apk: Use Sequence instead of list in inputs * pmb.helpers.pmaports.find: simplify condition * pmb.aportgen.linux: Do not require kernel package name to match existing device * COMMITSTYLE.md: New file * pmb.helpers.apk: Remove action_msg argument from check_outdated() * test.parse.test_apkbuild_private: New test * pmb.aportgen.core: Skip maintainer fields too, not just comments * pmb.aportgen: Don't specify # Maintainer and # Contributor in rewrite() call * test: add check kconfigcheck sanity_check