Tags give the ability to mark specific points in history as being important
-
3.11.0
ba9ddd21 · ·Release 3.11.0 Thanks to everybody who contributed to this release! Aelin (23): pmb.config: Set correct permissions on /dev/random and /dev/urandom pmb.core: Default to 512MB for /boot envkernel: Run envkernel.sh with bash envkernel: Strip alias prefix from aliases pmb.commands.qemu: Allow booting any device package in QEMU pmb.core.arch: 32-bit capable aarch64 CPUs can run armhf pmb.core.arch: Fix-up armhf emulation logic pmb.build: Make strict the default behavior pmb.build: Use the best provider to resolve a dependency pmb.build: Set PMB_CROSS when building a package pmb.build: Don't traverse subpackage depends pmb.build.other: Check enabled architectures before binary repo envkernel: Install pahole pmb.parse.kconfig: Support integer values pmb.install: Re-initialize native chroot if zapped by package builds pmb.chroot.shutdown: Don't remove in-pmbootstrap marker from rootfs when zapping buildroots pmb.commands.build: Don't zap chroots when packaging with envkernel pmb.build: Improve and fix Rust cross compilation pmb.build.kconfig: Always pass defconfig if _defconfig is unset pmb.chroot.shutdown: Fix the check for the rootfs marker pmb.helpers.pmaports: Remove legacy channel translation pmb.parse.deviceinfo: Add deviceinfo schema parsing helpers pmb.install: Get default boot filesystem from deviceinfo schema Aster Boese (11): pmb.aportgen: generate gcc packages with the "toolchain" option pmb.config: don't install build-base pmb.build: fix installing native compilers Revert "pmb.config: don't install build-base" pmb.build: set HOSTLDFLAGS when building with LLVM pmb.aportgen: make device APKBUILD match output of newapkbuild and cleanup pmb.config: remove pmb:systemd-never support pmb: explicitly support systemd and openrc pmb.config: support legacy pmb:systemd option pmb.helpers: add function to validate UI package options pmb.helpers: remove reference to pmb:systemd Clayton Craft (4): pmb.helpers.run_core: fix fd leak in foreground_pipe() pmb.aportgen: gcc: support multiple host archs for cross compilers pmb.chroot.apk: fix locally built pkgs causing conflicts during install test.chroot.test_apk: add regression test for locally built pkg provider conflict Jakob Hauser (1): pmb.commands.qemu: Remove function "create_gdk_loader_cache" Oliver Smith (18): pmb.config.apk_tools_min_version: update for v26.06 pmb.helpers.args: Pmbootstrap -> pmbootstrap pmb.helpers.logging: fix duplicate pmb in argv log pmb.build.package: use NonBugError for --src error pmb.build.package: move --no-depends check pmb.helpers.args: fix build --no-depends CI: add no_depends_build integration test pmb.commands.repo_missing: remove --built argument pmb.build.package: better msg for --no-depends err pmb.build: tweak zapping buildroots message Revert "pmb.build: fix installing native compilers" pmb.install.format: set bytes-per-inode to 8192 pmb.build: run linux32 where needed pmb.install: wait for each loop subpartition pmb.helpers.file.wait_until_exists: wait for 15s pmb.commands.qemu: fix mypy error Update Casey's name pmb.config.other.is_systemd_selected: remove Cache Pablo Correa Gómez (18): pmb.parse.apkindex: mark "parse_next_block" as private pmb.parse.apkindex: don't use elif not when we have a boolean pmb.parse.apkindex: replace alias variable with provide pmb.install._install: remove unused "cat" invocation pmb.helpers.apk: remove recursive call to "update_repository_list" pmb.helpers.apk: remove unused argument from "update_repository_list" pmb.helpers.repo: reorder some logic to simplify understanding pmb.helpers: rename repo.urls to repo.get_repos_from_config pmb.helpers.repo: fix type in get_repos_from_config pmb.chroot.apk: don't add repositories pmb.helpers.apk: don't write repo outside hierarchy to repositories file pmb.helpers.apk: don't cache update_repository_list pmb.helpers.package: remove unused replace_subpkgnames option pmb.helpers.package: don't check for recursive dependencies in other arches pmb.helpers.package: remove unused try_other_arches option pmb.helpers.ui: only check for arches enabled in pmaports pmb.helpers.package: remove check_arch pmb.helpers.package: simplify get logic Paul Adam (12): pmb: Migrate install away from legacy frontend pmb: Remove args from create_zip pmb: Remove args from install_recovery_zip pmb: Remove args from install_system_image pmb: Remove args from _install pmb: Remove args from install pmb: move _parse_suffix to commands/__init__ pmb: Remove deprecated command format logic pmb: Remove args from _parse_suffix pmb: Use getattr more sensibly in _parse_suffix pmb.parse: Fix parsed arguments being typecasted pmb: Use getattr more sensibly in flasher Radnos (1): pmb.flasher.frontend: fix header_version error msg Sicelo A. Mhlongo (1): pmb.install._install: Make setup-keymap step succeed Sonya Sireneva (1): aportgen/gcc: provide cmd:$CTARGET-gcc Stefan Hansson (66): pmb.flasher: Update deviceinfo reference links pmb.commands: Clean up imports pmb.flasher.variables: Fix fastboot variable used in mtkclient block pmb.flasher.variables: Default to "vendor_boot" in mtkclient too pmb.aportgen.device: Catch RuntimeError in ask_for_bootimg() pmb.config.init: Only catch exceptions that mkdir() normally raise pyproject.toml: Remove blanket ignore for BLE001 pmb: Replace multiple print statements with single one pmb.flasher.run: Reformat strings pmb.helpers.apk_static: Use pathlib for sigkey_path pmb: Use NonBugError for "don't run pmbootstrap as root" pmb.chroot.initfs: Remove unreachable code pmb.aportgen: Remove os import from __init__.py pmb.helpers.device: Remove unnecessary _ matches pmb.aportgen: Return generated aport path pmb.config.init: Rework device handling pmb.config.init: Avoid device_category possibly being undefined pmb.build.kconfig: Be less clever about avoiding repetition pyproject.toml: Enable "possibly-undefined" error code for mypy pmb.config.init: Use NamedTuple for ask_for_device() CI: Build lk2nd for cross-native test pmb.helpers.git: Also consider "master" to be an official branch pmb.parse.apkindex: Remove redundant cast pyproject.toml: Set warn_redundant_casts = true for mypy pyproject.toml: Set warn_unused_ignores = true for mypy test.helpers.test_git: Add test for branch_looks_official() envkernel: Warn if building U-Boot with LLVM pmb.helpers: Mark uses of hashlib with usedforsecurity=False pyproject.toml: Enable S3 rules pmb: Replace assertions with exceptions pyproject.toml: Enable all S (Bandit) rules pmb.parse.deviceinfo: Add FIXME about test-specific code pmb.parse.cpuinfo: Use open() method from pathlib pmb.commands.qemu: Remove broken code pmb.helpers.run: Add overloads for user() pmb.helpers.run: Remove unnecessary assertion pmb.helpers.git: Remove dead code from get_topdir() pmb.build: Remove unused BootstrapStage re-export pmb, test: Refer to canonical ApkindexBlock module pmb.commands.stats: Refer to canonical Arch module pmb.helpers.run_core: Explicitly import which_sudo() pmb.parse.kconfigcheck: Improt load_toml_file from canonical path pyproject.toml: Set no_implicit_reexport = true for mypy pmb: Remove dead code pmb.parse.apkindex: Add overload for package() pmb.commands.sideload: Allow installing local apks pmb: Make WithExtraRepos an enum pyproject.toml: Ignore RUF076 in conftest files pmb.install._install: Inline setup_timezone() pmb.commands.install: Validate that password is not empty pmb.install.partition: Remove extra "M" pmb.commands.sideload: Use SSH multiplexing pmb.commands.status: Move all related functions into module pmb.helpers.git: Improve channels.cfg typing pmb.commands.status: Add missing call to print_status() treewide: Format all shellscripts with shfmt CI: Add shfmt check pmb.helpers.file: Use pathlib pmb, test: Mark unused arguments as such for signature restrictions pmb.install._install: Remove unused arch argument from print_firewall_info() pmb.helpers: Fix --quiet not working pmb.commands.status: Remove unused config argument from print_channel() pmb: Remove references to qemu_video pmb: Remove --cmdline argument from qemu subcommand pyproject.toml: Enable "ARG" checks pmb: Remove --efi argument dabao1955 (1): pmb: Suggest --as-root when pmbootstrap is run as root -
3.10.3
845cda03 · ·Release 3.10.3 Aelin (2): envkernel: Run envkernel.sh with bash envkernel: Strip alias prefix from aliases Oliver Smith (1): pmb.config.apk_tools_min_version: update for v26.06 Pablo Correa Gómez (1): pmb.install._install: remove unused "cat" invocation Stefan Hansson (4): pmb: Use NonBugError for "don't run pmbootstrap as root" CI: Build lk2nd for cross-native test pmb.helpers.git: Also consider "master" to be an official branch Prepare 3.10.3 release dabao1955 (1): pmb: Suggest --as-root when pmbootstrap is run as root -
3.10.2
021ed2f5 · ·Release 3.10.2 Aelin (1): pmb.config: Set correct permissions on /dev/random and /dev/urandom Aster Boese (1): pmb.aportgen: generate gcc packages with the "toolchain" option Clayton Craft (1): pmb.helpers.run_core: fix fd leak in foreground_pipe() Stefan Hansson (4): pmb.flasher: Update deviceinfo reference links pmb.flasher.variables: Fix fastboot variable used in mtkclient block pmb.flasher.variables: Default to "vendor_boot" in mtkclient too Prepare 3.10.2 release -
3.10.1
a72d80ee · ·Release 3.10.1 Casey Connolly (1): aportgen: correct carch string when generating kernel package Max Harmathy (1): pmb.qemu.run: Install efi image unconditionally for qemu Stefan Hansson (13): pmb.parse.arguments: Add missing choices parameter for sideload arch pmb.types: Properly type action_kconfig pmb: Make match statements exhaustive pmb: Add error code to all type error ignores pyproject.toml: Enable various mypy error codes CI: Add newapkbuild test pmb: Add additional overload for root() pmb: Remove pigz zombie code CI: Run mypy if any Python file has changed pmb.commands.qemu: Clean up host executable not found error pmb.commands.qemu: Log that postmarketOS is running after installing EFI pmb.build.autodetect: Remove arch from deviceinfo logic Prepare 3.10.1 release -
3.10.0
6ccc1cb9 · ·Release 3.10.0 Aelin (4): pmb.qemu: Remove support for direct kernel boot pmb.build: If clang is used, don't install GCC pmb.qemu: Remove QEMU dep handling for Alpine 3.12 pmb.sideload: Fix sudo detection Anri Dellal (1): pmb.helpers.ui: Do not fail if UI APKBUILD is missing Aster Boese (5): pmb.chroot.init: bootstrap the bin-merge by creating symlinks gitlab-ci: change ci-common pull from master to main pmb: add run0 support docs: add run0 support to documentation treewide: replace 'master' strings with 'main' Casey Connolly (2): remove ondev support pmb.build.autodetect: Use cross-native2 for noarch packages Clayton Craft (1): pmb.helpers.run_core: fix 100% cpu busy loop Gregory Kietzman (2): pmb.install: Fix broken parameters pmb.parse, pmb.helpers: Fix docstrings Hugo Osvaldo Barrera (2): pmb.helpers.aportupgrade: remove obsolete command docs: explain how to install keys for mirrors Hugo Posnic (5): pmb: Migrate status away from legacy frontend pmb: Migrate update away from legacy frontend pmb: Migrate initfs away from legacy frontend pmb: Migrate work_migrate away from legacy frontend pmb: Migrate repo_missing away from legacy frontend Newbyte (1): pmb: Remove lint subcommand Pablo Correa Gómez (9): pmb.helpers.package: do not add packages to the queue that are already there pmb.helpers.package: use sets for queue and ret in depends_recurse pmb.helpers.package: do not queue providers of packages we have seen test.helpers.test_package: add test for remove_operators pmb.helpers.pmaports: make check_version_constraints more generic pmb.helpers: move check_version_constraints from pmaports to package pmb.helpers.package: also track the original names of the packages pmb.helpers.package: remove unused import pmb.parse.apkindex: only select provider if it matches constraints Paul Adam (7): docs: fix order of command modules pmb: Migrate stats away from legacy frontend pmb: Migrate build_init away from legacy frontend pmb: Migrate newapkbuild away from legacy frontend pmb: Migrate apkindex_parse away from legacy frontend pmb: Migrate bootimg_analyze away from legacy frontend pmb: Migrate chroot away from legacy frontend Rakshit Kumar Singh (1): pmb: Migrate apkbuild_parse away from legacy frontend Rudraksha Gupta (1): pmb.qemu.run: Add armv7 display support Stefan Hansson (143): pmb.helpers.pkgrel_bump: Remove unnecessary type check pmb.parse.kconfigcheck: Simplify get_path() pmb.config.init: Simpify ask_for_work_path() using is_relative_to() pmb.config.init: Avoid unnecessary string concatenation in get_locales() pmb.config.pmaports: Modernise check_version_pmbootstrap() using pathlib pmb.parse._apkbuild: Remove attr-defined disable pmb.chroot.initfs_hooks: Rename list_aports() to list_hook_packages() pmb.chroot.initfs_hooks: Use NonBugError envkernel: Add better hint if installing build dependencies fails pmb.helpers: Raise CommandFailedError on failed command pmb.helpers.frontend: Handle CommandFailedError in chroot() pmb.install._install: Use NonBugError for nonexistent kernel pmb: Introduce PackagingError pmb.chroot.initfs: Use PackagingError if mkinitfs fails pmb: Guess checksum package based on cwd if none is specified pmb.chroot.apk: Replace Sequence and list with Collection in inputs pmb.build._package: Don't needlessly turn set into list pmb.chroot.initfs_hooks: Print hook descriptions when listing them pmb.aportgen.core: Try to be more helpful on nonexistent aport pmb.install._install: Remove args from setup_login_chpasswd_user_from_arg() pmb.install._install: Remove args from setup_login() pmb.install._install: Remove args from print_sshd_info() pmb.install._install: Remove args from generate_binary_list() pmb.install._install: Remove args from embed_firmware() pmb.install._install: Remove args from write_cgpt_kpart() pmb.install._install: Remove args from sanity_check_disk() pmb.install._install: Remove args from sanity_check_disk_size() pmb.install._install: Remove args from get_ondev_pkgver() pmb.install._install: Remove args from sanity_check_ondev_version() pmb.install._install: Remove args from create_fstab() pmb.install.format: Remove args from format() pmb.install._install: Remove args from get_selected_providers() pmb.install._install: Remove args from get_recommends() pmb.install._install: Remove args from create_device_rootfs() pmb.qemu.run: Remove args from create_second_storage() pmb.qemu.run: Remove args from install_depends() pmb.qemu.run: Remove args from create_gdk_loader_cache() pmb.types: Remove qemu_redir_stdio from PmbArgs pmb.types: Make PmbArgs.port an int pmb.types: Add memory to PmbArgs pmb.args: Make some arguments optional pmb.qemu.run: Remove PmbArgs pmb.export.frontend: Remove PmbArgs from frontend() pmb.sideload: Remove PmbArgs from ssh_install_apks() pmb.sideload: Remove PmbArgs from ssh_find_arch() pmb.sideload: Remove PmbArgs from scp_abuild_key() pmb.sideload: Remove PmbArgs from sideload() pmb.chroot.initfs: Refactor frontend() pmb.helpers.repo_missing: Simplify generate() pmb.commands: Use functions intead of classes for most commands pmb.build._package: Catch CommandFailedError when build fails pmb: Migrate sideload away from legacy frontend pmb.meta: Simplify build_key() slightly pmb.build._package: Fix instance of cross compile literal pmb.helpers.mount: Fix str being compared to Path pmb.install.format: Fix sector_size comparison pyproject.toml: Set strict_equality = true pmb.parse.deviceinfo: Remove validation code pmb, test: Remove references to deviceinfo_external_storage pmb: Migrate export away from legacy backend pmb.parse.deviceinfo: Trim down Deviceinfo class docstring pmb: Migrate netboot away from legacy frontend pmb.aportgen.core: Properly type replace_simple in rewrite() pmb: Migrate build away from legacy frontend pmb.helpers.git: Fix infinite loop in get_changed_packages() pmb.build.autodetect: Remove dead code pmb.helpers.git: Fix always False expression pmb.types: Mark disk as optional in PmbArgs pmb.install._install: Ignore truthy-bool error in setup_appstream() pmb.commands.export: Fix rootfs export hint never appearing pyproject.toml: Enable "truthy-bool" error code for mypy pmb.build.autodetect: Fix automatic arch detection pmb: Migrate checksum away from legacy frontend pmb.helpers.logging: Avoid undocumented logging.WARN pmb.chroot.test_apk: Remove unnecessary return statement pmb.commands.test: Use from keyword to import logging pmb.parse.arguments: Simplify package_completer() pmb.parse.kconfig: Avoid redundant exception naming pmb.parse.arguments: Simplify arguments_status() pmb.install.losetup: Avoid redundant exception naming pmb.build._package: Simplify get_depends() pmb.build._package: Remove unncessary global declaration pmb.build.envkernel: Avoid redundant exception naming pmb: Use sys.exit() instead of exit() pmb.commands.netboot: Avoid redundant exception naming pmb.commands.sideload: Simplify ssh_find_arch() pmb.core.arch: Remove unncessary global declaration pmb.core.chroot: Use dict to avoid repeated equality comparison pmb.core.context: Remove unncessary global declaration pmb.helpers.other: Simplify folder_size() pmb.helpers.pmaports: Simplify _find_apkbuilds() pmb.helpers.repo: Avoid redefining "arch" variable pmb.helpers.repo_missing: Simplify generate() pmb.install._install: Replace if ... else with match pmb.install.format: Use dict to avoid repeated equality comparison pyproject.toml: Ignore more rules pmb.parse.apkindex: Don't bother checking if provides is None pmb.build.kernel: Don't bother checking if Match.groups() is None pmb.types: Mark name in PmbArgs as optional pmb.parse.deviceinfo: Update name validation comment pmb.parse.deviceinfo: Make InitfsCompression.from_str() never return None pmb.parse.deviceinfo: Reduce setattr() use in Deviceinfo.__init__() pmb: Migrate zap away from legacy frontend pmb: Migrate qemu away from legacy frontend pmb.parse.kconfig: Error on kconfig option not being set correctly pmb.commands.kconfig: Raise NonBugError on failed validation pmb.core.package_metadata: Use annotations from __future__ pyproject.toml: Set pretty = true for mypy pyproject.toml: Set strict_bytes = true for mypy pmb.types: Mark sparse in PmbArgs as optional pmb.install._install: Don't bother checking if config.keymap is None pmb.types: Mark value in PmbArgs as optional pmb.config.other: Don't bother checking if check_option() returns None pmb.install.recovery: Remove flavoured initfs compatiblity pmb.build._package: Explicitly annotate cross and prev_cross test.core.test_arch: Generalise alpine_triple() assert test.config.test_config_serde: Generalise config.mirrors assertion pmb.core.chroot: Ignore comparison overlap for deviceinfo arch pmb.install: Refactor args.split pyproject.toml: Set strict_equality_for_none = true for mypy pmb.commands.build: Clean up some strings pmb.commands.config: Fix type hint pmb.install.blockdevice: Use Path.replace() pmb.helpers.frontend: Ask for password early with getpass() pmb.install: Mount disk early pmb.install._install: Simplify setup_timezone() pmb.helpers.args: Replace constant attribute delattr() with del keyword pmb.chroot.zap: Improve error message if a chroot fails to umount pmb.parse.apkindex: Improve overloads for parse() pmb.config.init: Remove unreachable return statement pmb: Fix apkindex_parse command pyproject.toml: Set warn_unreachable = true for mypy pmb.commands: Mark newapkbuild as migrated pmb.commands: Use args.package for apkindex_parse CI: Add APKINDEX parsing integration test pmb.install._install: Re-add disk argument to install_system_image() pmb.commands.apkindex_parse: Remove redundant type check pyproject.toml: Set local_partial_types = true for mypy pmb.helpers.ui: Actually skip UI directories without APKBUILDs pmb.parse.kconfig: Don't bother catching RuntimeError for read_categories() pmb.install._install: Avoid using undefined variable in exception handler pmb.helpers.git: Fix MissingSectionHeaderError handling Prepare 3.10.0 release Yohan Boniface (1): pmb: migrate config command away from legacy frontend kersnazzle kersnazzle (1): pmb: Migrate ci away from legacy frontend -
3.9.0
888d8b4a · ·Release 3.9.0 Headline features: * pmb.aportgen.device: Don't require chassis * pmb.export.symlinks: add "*.dtb" glob symlinks * pmb.install: add XFS filesystem support * pmb.kconfig: Allow matching on multiple categories for entries * pmb.kconfig: Generate generic kconfig fragment from kconfig-generic.toml * pmb.parse.deviceinfo: Don't require chassis * pmb: Add --changed argument to checksum subcommand Features: * maintainers.txt: add Aelin * maintainers.txt: move from Projects wiki table * pmb.commands.kconfig: Use Path instead of string for self.file * pmb.helpers.git: Add utilities for getting changed packages and files Fixes: * Added changes rule to deploy-docs * flasher/frontend.py: fix "The recovery zip has not been generated yet" * pmb, test: Format docstrings consistently with D2 Ruff rules * pmb.aportgen.core: Add empty maintainer variable * pmb.aportgen.core: Remove empty lines in header * pmb.commands.kconfig: Conditionally construct path from args.file * pmb.helpers.args: make `--no-ccache` actually work * pmb.helpers.other: Check for 0-character hostnames in validate_hostname() * pmb.install.format: fix xfs mkfs command * pmb.parse.deviceinfo: Fix deviceinfo_drm being a str rather than a bool * pmb.types: Fix type hint for PmbArgs.file * pmb/install/format: f2fs: Add recommended robustness options * pmb: Fix whitespace in docstrings * pyproject.toml: Don't ignore FURB101 * pyproject.toml: Don't ignore FURB103 * pyproject.toml: Use ignore instead of extend-ignore Other: * pmb.build.kconfig: Modernise using pathlib * pmb.config.init: Clean up a string * pmb.config.init: Modernise ask_for_mirror() using pathlib * pmb.config.init: Modernise ask_for_work_path() with pathlib * pmb.export.symlinks: rename target directory to "target" * pmb.helpers.other: Clean up some strings * pmb.helpers.other: Modernise migrate_success() using pathlib * pmb.helpers.other: Modernise migrate_work_folder() using pathlib * pmb.helpers: Remove __init__.py * pmb.install._install: Modernise sanity_check_disk(), sanity_check_disk_size() using pathlib * pmb.install._install: Modernise setup_locale() using pathlib * pmb.install._install: Modernise setup_login_chpasswd_user_from_arg() using pathlib * pmb.install.format: consolidate mkfs formatting into a function * pmb.install.format: Modernise format_luks_root() using pathlib * pmb.parse.bootimg: Modernise bootimg() using pathlib * pmb.parse.kconfig: Modernise check_config(), extract_arch() using pathlib * pmb.parse.test_apkbuild: Modernise using pathlib * pmb: Enable B checks * pmb: Enable I checks * pyproject.toml: Ignore RUF067 for now * test.helpers.test_other: New test * test.parse.test_bootimg: Modernise using pathlib
-
3.8.0
747951d7 · ·Release 3.8.0 Features: * pmb.chroot: set up PTY support and std I/O nodes * pmb.qemu.run: Add armv7 support Fixes: * kconfigcheck: fix x64_64 typo * pmb.helpers.pmaports: skip provider search when subpkg definition is empty Other: * README.md: Document required git version * pmb.config.pmaports: automatically switch pmaports branch from master to main
-
3.7.0
da52a5d6 · ·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
-
3.6.0
e847f1a4 · ·Release 3.6.0 Features: * pmb: Only disable metadata_csum for ext4 on downstream ports * bootimg: exynos: extract platform and subtype from dt.img header * aportgen: device: set bootimg_qcdt_exynos_{platform,subtype} * pmb.core.pkgrepo:pkgrepo_iter_package_dirs: speed up finding pkg dirs * pmb.config.init: Add warning for kernels supposedly not supported by systemd * pmb.config.init: Add check for recommended kernel version * pmb.parse.arguments: Default to 8 GB for --second-storage * chroot: make sure that we bootstrap the chroot /usr-merged * pmb: support bootimg v3/v4 and `vendor_boot` * envkernel: install gnutls-dev as well (for u-boot) * Add ppc64le to machine type mapping * pmb.ci: Add new "with-dot-git" option * pmb.arch: Check whether CPU is 32-bit capable * pmb.chroot.init: bootstrap the /usr-merge by creating symlinks * kconfig: support tristate values for options * Add PMB_CHANNELS_CFG environment variable * pmb: Add --shallow-initial-clone argument to init * pmb.parse.deviceinfo: Handle deviceinfo_initfs_compression * pmb.chroot.initfs: Support more compression formats * pmb, test: Use git switch instead of git checkout * pmb.aportgen: Ask whether a new device port is upstream or downstream * pmb: Add support for loongarch64 * pmb.qemu: Allow using EFI on non-native architectures * pmb.qemu: Add support for loongarch64 Fixes: * treewide: switch back to bootimg_qcdt{,_type} * aportgen: re-add bootimg_qcdt variable * Fix crash in "zap -a" and "zap -o" with apk3 * Don't set esp flag for msdos boot partitions * pmb.parse._apkbuild: Use NonBugError for all errors * pmb: Also apply ext4 metadata_csum workaround for archived ports * pmb.chroot.mount: Fix pmb chroot --image for single-partition rootfs * pmb.chroot.initfs: Fix initfs commands * pmb.core.pkgrepo:pkgrepo_iter_package_dirs: allow following symlinks * package.get_depends: use makedepends_{build,host} * aportgen/gcc: don't remove cross prefix in package * aportgen/gcc: don't use tracedeps * test.core.test_chroot: fix on aarch64 hosts * pmb.build.kconfig: test cross type in conditions * pmb.flasher.variables: fix typo * Use SPDX identifier for busybox-static-* packages * pmb.build.package: re-run init_compiler in strict mode * Only do the usr merge for supported binary architectures * Revert "pmb.qemu: set default image size of 4G (!1886)" * pmb.helpers.frontend: Initialise chroot in stats() * fix(flasher): Support vendor boot for devices flashed with rkdeveloptool * pmb.install._install: Initialise chroot in install_recovery_zip() * pmb.flasher.init: Explicitly initialise chroot when installing depends * Fix /usr merge breaking stable branches * pmb: checksum: fail if verification fails * pmb.parse.deviceinfo: Correctly convert header_version to an int Other: * Revert "pmb.helpers.repo: Always update APKINDEX if it doesn't exist" * CI: Only run most pipelines when they actually are necessary * test: Move test_devices to where it should be * pmb.helpers.devices: Use get_device_category_by_directory_path() * CI: fix running deploy job on master * pmb.core.context: Properly type get_context() * docs: Add automodule for pmb.commands.test * CI: Skip removing files that start with test in docs check * Revert "pmb.config: add the full hexdump to the list of installed build packages (MR 2454)" * pmb: Make RunOutputTypeDefault and RunOutputTypePopen enums * test: aportgen: device: add tests for boot img with exynos qcdt * pmb: Use inspect.get_annotations() * pmb.helpers.locale: Mark XkbLayout.primary_locales as Final * CI: Add basic chroot test * CI: Only build packages on install in bump_autobuild job * initfs: drop support for initramfs flavor * export: drop support for initramfs flavor * pmb.config.init: Change warning texts * pmb/helpers/repo_missing: skip device/archived * Use standard `requires-python` field * pmb: Remove exception for RUF021 * pmb: Remove exception for RUF052 * aportgen/gcc: disable libsanitizer * pmb.chroot: drop custom usr-merge implementation * config.apkbuild_attributes: add _pkgrel * CI: run docs job with alpine stable * pmb: Use Arch type instead of str * docs: add POSIX-shell requirement * ci: trigger also on changes in docs * pmb: Enable Simplify checks * doc: link to rules for merging * .ci/pytest.sh: do not exit on first error or failed test * pmb: Make header_version an int in Bootimg and Deviceinfo * pmb, test: Add missing type annotations * pmb: Enable Perflint checks * pmb, tests: Enable Refurb checks * pmb.config.pmaports: Fix typo * pmb.helpers.args: Implement simplification found by SIM118 * pmb.helpers.frontend: Deprecate 'pmbootstrap lint' * kconfig: Allow printing non-fatal warnings * pmb.chroot.initfs: Improve error handling and clean up code * CI: Add initramfs inspection test * pmb.parse.deviceinfo: Use __annotations__ from future instead of quoted type * pmb.parse.deviceinfo: Convert if ... else block to match * CONTRIBUTING.md: Suggest git switch instead of git checkout * aportgen: Move target folder handling logic from config to aportgen -
3.5.2
799140da · ·Release 3.5.2 I forgot to bump the version in the code, so pmbootstrap 3.5.1 would still report itself as version 3.5.0. This release fixes that and only that. Fixes: * Prepare 3.5.2 release
-
3.5.1
3f09e873 · ·Release 3.5.1 Emergency release to fix compatibility with apk v3! Fixes: * pmb: drop unused import * pmb.helpers.apk: fix crash computing progress from apk3 * pmb.helpers.apk_static: fix version check for apk3 * pmb.helpers.repo: Always update APKINDEX if it doesn't exist * pmb.helpers.apk_static: Update "malicious server" message * export: allow to export vmlinuz files which have any suffix Other: * export: drop support for flavor in export Tests: * test: add small test for argument parsing
-
3.5.0
562e6519 · ·Release 3.5.0 Features: * pmb: Split devices by category during codename selection * pmb: Warn users about downstream ports Fixes: * pmb.helpers.logging: Fix type for args * pmb.qemu.run: fix x86_64 CPU check for EFI support * init: systemd: fix always switching pma to edge * pmb.aportgen.core: Initialize chroot properly Other: * pmb.helpers.pmaports: Clean up some strings * pmb.config.__init__: Add escape sequence for magenta text * pmb.config.apk_tools_min_version: add v3.22 * pmb/helpers/other: fix typo found by codespell * Remove "pmbootstrap repo_bootstrap" * pmb.aportgen: Match aportgen prefixes explicitly * pmb.aportgen: Add default value to fork_alpine parameter
-
3.4.2
0c6de7ab · ·Release 3.4.2 This release only fixes a minor bug introduced in 3.4.1 that broke QEMU EFI boot for x86-64. Fixes: * pmb.qemu.run: fix x86_64 CPU check for EFI support
-
3.4.1
5783d1c5 · ·Release 3.4.1 This release primarily fixes an important bug related to cache handling for the find() function inside of pmb/helpers/pmaports.py. This bug could cause strange an unexpected behaviour in some circumstances. Fixes: * CONTRIBUTING.md, README.md: Use descriptive links * Revert "CI: ruff: use 0.11.0 (Cannot use star annotation)" * CI: fix coverage regex * pmb.arch: Add support for s390x * pmb.config.init: Use heapq for sorting timings * pmb.helpers.apk: Avoid concatenation * pmb.helpers.pmaports: Add must_exist to cache signature for find() * pmb.qemu.run: Use NonBugError for invalid device selection error Other: * ci: add test coverage to the GitLab UI * ci: only run integration tests when there are code changes * ci: only run markdown lint if markdown files are changed * pmb.qemu.run: use virgl on aarch64 hosts * pmb.qemu.run: add support for EFI on aarch64 * pmb.qemu.run: command_qemu: refactor applying arch-specific options Docs: * docs/index: introduce local deploy example * docs/index: update local deploy example with pmb.ci * docs/mirrors: mention env variables example
-
3.4.0
aebf99e9 · ·Release 3.4.0 Notably, this release adds cross-native2, a new way to cross-compile packages. See the new Cross Compiling documentation page for more information about it. Features: * pmb.ci: choose multiple scripts at once interactively * build: add pmb:cross-native2 (MR 2474) * config: add pigz to build_packages (MR 2561) * pmb.install.format: add support for setting FDE passphrase * Add option to auto-select the best mirror * pmb.helpers.apk: support PMB_APK_NO_CACHE * pmb/install: Add option to create single combined boot/root partition Fixes: * Log only if config was really changed * install: Do not fail on invalid SSH key * install: remove redundant package musl-locales * core: Arch: define supported arches as a set (MR 2474) * build: backend: remove trailing spaces (MR 2474) * build: envkernel: build for the correct channel * build: package: install rsync even when package has no makedepends * build: fix cross-compile without CPU emulation * build: fix duplicate install messages * pmb.build: install checkdepends when building (MR 2563) * pmb.build: fix internal cross compiling names * pmb.build.package: fix strict mode * cross-native2: set CGO_CFLAGS, CGO_LDFLAGS (MR 2565) * pmb.netboot: Initialize chroot before checking path in chroot * pmb.netboot: Only attempt to install nbd after rootfs existance check (MR 2540) * pmb.netboot: Use NonBugError for nonexistent rootfs code path (MR 2540) * pmb.flasher: fix "flasher boot" crash if cmdline is empty * pmb.flasher.frontend: Use NonBugError for nonexistent rootfs code path (MR 2540) * pmb.qemu.run: Use NonBugError for nonexistent rootfs code path (MR 2540) * pmb.lint: Don't try to lint apkbuild paths that are empty * sideload: get channel from package not from global pmaports (MR 2569) * pmb.core.config: remove +1 from nproc defaults * pmb.config: Add pmb:cross-native2 to custom valid options (MR 2564) * pmb.parse.apkindex: account for provider_priority when locating packages * init: fix currently checked out channel detection * chroot: don't depende on alpine-base Other: * pmb: Rename pmb:gpu-accel and deviceinfo_gpu_accelerated * core: Arch: add .supported_binary() (MR 2474) * core: Arch: add method to map to Go arch (MR 2474) * core: small typing improvement * FIXUP: build: abstract CrossCompile type logic * build: print !tracedeps warning for cross-native 1 * build.package: makedeps warning only for c-n2 * pmb/build/autodetect: remove deprecated comment * pmb.build.backend.run_abuild: remove cross default * pmb.types.CrossCompileType: split up None * pmb.build.package: log the cross compile type * CI: test different cross compilation methods * CI: ruff: use 0.11.0 (Cannot use star annotation) * CI: test build for x86 pkg on x86_64 machine * pmb.install._install: remove installation of lang * pmb.install._install: write lang configuration to /etc/locale.conf * pmb.install._install: install locale config on default lang aswell * lint: adjust comment for empty apkbuild_paths Docs: * docs/cross_compiling: new page (MR 2562) * docs/cross_compiling: fix makedeps host/build desc * docs/env_variables: document PMB_FDE_PASSWORD
-
3.3.2
86ca58f1 · ·Release 3.3.2 Usually we follow semver and don't put features in releases. But current master could use some more testing before tagging a new release, so it was decided to backport the feature that adds support for setting FDE passphrases via env var to the last stable version. This is required for making the os-installer work with FDE (see pmaports MR 6320). Features: * pmb.install.format: add support for setting FDE passphrase via env var Other: * CI: ruff: use 0.11.0 (Cannot use star annotation) * docs/env_variables: document PMB_FDE_PASSWORD
-
3.3.0
60a4ed7f · ·Release 3.3.0 Features: * chroot: add --usb flag to make usb devices available (MR 2554) * install: log space/inodes used in image (MR 2558) * pmb.config.init: prompt for pmaports path (MR 2502) * pmb.config.init: Improve message when "Archived:" header is missing (MR 2535) Fixes: * helpers.cli: Fix regex validation (MR 2557) * pmbootstrap chroot: fix --image bugs (MR 2556) * pmb.install.format: set bytes-per-inode to 16384 (MR 2558) (MR 2555) (MR 2552) * ci/markdown: fix shellcheck errors (MR 2485) * pmbootstrap config: Fix setting attribute value to False (MR 2546) * test: move all tests into separate module (MR 2551) * pmb.flasher: Fix passing command line flags (MR 2543) * install: create_device_rootfs: check if ui extras package exists (MR 2534) Other: * pmb.parse.apkindex: Improve parse_add_block() type hint (MR 2515) * pmb.chroot.run: Add another overload for root() (MR 2515) * pyproject.toml: Remove ignore for F401 in __init__.py files (MR 2545) * pmb.chroot: Rename exists() to user_exists() (MR 2545) * pmb: Use explicit re-exports (MR 2545) * pmb: Remove unused imports (MR 2545) * ci/markdown: don't run "npm install" as root (MR 2485) * add pre-commit hook for ruff (MR 2485) * CONTRIBUTING: document markdown linting (MR 2485) * treewide: lint markdown files (MR 2485) * CI: add markdown lint (MR 2485) * pmb.config.init: resolve double-negation (MR 2502) * pmb.config.init: Reformat some strings (MR 2535) * CI: use new runner where necessary (MR 2548) * pyproject.toml: Enable all N checks (MR 2537) * pmb.helpers.logging: Use PEP 8-compliant naming (MR 2537) * pmb.conftest: Use PEP 8-compliant naming (MR 2537) * pyproject.toml: Enable all PIE checks (MR 2537) * pmb.install.losetup: Remove unnecessary range start (MR 2537) * pmb: Remove unnecessary pass statements (MR 2537) * pmb.aportgen.core: Combine startswith(...) calls into one (MR 2537)
-
3.2.0
afecbb15 · ·Release 3.2.0 This release or newer is required for postmarketOS + systemd, now that it has been merged into master: https://postmarketos.org/edge/2025/01/09/systemd-soon/ Besides systemd related changes, notably "pmbootstrap flasher boot" now works for fastboot-bootpart. Also the android recovery zip and aportgen features have been fixed, along with some smaller fixes and a LOT of code quality improvements that will make future maintenance easier. Huge thanks to everybody who has contributed to this release! <3 Features: * install: support systemd for disabling services (MR 2529) * pmb.config.pmaports: Make pmbootstrap automatically switch away from master_staging_systemd (MR 2528) * Rewrite repo_missing for bpo + systemd split repo (MR 2410) * pmb/config: enable "flasher boot" for fastboot-bootpart (MR 2508) Fixes: * pmb.chroot.binfmt: Initialise chroot before installing packages in register() (MR 2526) * pmb.parse.bootimg: Initialise chroot before installing packages in bootimg() (MR 2526) * pmb.config.other: Don't require selected UI package to exist (MR 2530) * Fix pmbootstrap install --android-recovery-zip (MR 2527) * helpers.run.core.add_proxy_env_vars: fix variables (MR 2525) * pmb.build.other: Fix broken f-string (MR 2525) * repo_missing: if abuild is forked, add it as dep (MR 2410) * pmb.aportgen: Update APKINDEX for relevant arch before parsing it (MR 2509) * pmb.flasher.frontend: detect lk2nd as subpackage dependency (MR 2511) Other: * pmb.helpers.ui: Add must_exist argument to check_option() (MR 2530) * pmb.qemu.run: Remove FIXME and type ignore stuff from command_qemu() (MR 2522) * pmb.types: Fix type for PmbArgs.output (MR 2522) * pmb.build.autodetect: Remove FIXME about type hinting arch (MR 2522) * CI: Install Ruff from PyPi instead of Alpine (MR 2525) * pmb: Reformat with Ruff 0.9 (MR 2525) * pmb.install: Remove unnecessary calls to round() (MR 2525) * pmb.config.init: Simplify removal of select from providers_cfg (MR 2525) * pmb.helpers.aportupgrade: Remove unnecessary regex (MR 2525) * pmb: Use raw strings for regexes (MR 2525) * pmb.chroot.apk: Use unpacking operator to create command in install_run_apk() (MR 2525) * pyproject.toml: Enable most RUF checks (MR 2525) * pmb: Use unpacking operator to concatenate collections (MR 2525) * pmb.core.config: Add note about aports variable being class variable (MR 2525) * pmb.core.config: Mark mirrors and providers as class variables (MR 2525) * pmb.helpers.locale: Use frozenset for primary_layouts (MR 2525) * pmb.build._package: Replace sum() with functools.reduce() (MR 2525) * pmb.commands.repo_bootstrap: Remove unnecessary noqa comment (MR 2525) * pmb.helpers.run_core: Remove unnecessary str(...) (MR 2525) * pmb: Replace list(...)[0] with next(iter(...)) (MR 2525) * install: merge disable_sshd(), disable_firewall() (MR 2529) * Cosmetic: pmb/install/_install.py: tweak strings (MR 2529) * Update systemd repo URL * pmb.core.test_pkgrepo: Remove reference to master_staging_systemd (MR 2528) * docs: use pmOS green color in html output (MR 2520) * editorconfig: new file (MR 2520) * pyproject.toml: Enable Ruff preview (MR 2516) * pyproject.toml: Add CPY001 to Ruff linting (MR 2516) * docs, pmb: Add missing copyright headers (MR 2516) * pmb.parse.version: Use _ for "value" variable in validate() (MR 2516) * CI: Simplify Ruff check (MR 2517) * pmb.parse.version: Replace token_value() with Token enum (MR 2518) * pmb.config.pmaports: Get rid of cast hack for SectionProxy (MR 2519) * pyproject.toml: Set disallow_untyped_calls = true (MR 2514) * pyproject.toml: Set disallow_untyped_defs = true (MR 2514) * pmb: Add more types and fix type errors (MR 2514) * pmb.parse.arguments: Type hint and remove unused arguments from add_kernel_arg() (MR 2514) * pmb.parse.arguments: Ignore attr-defined on arg.completer (MR 2514) * pmb.parse.test_version: Add unit tests for version.py (MR 2514) * pmb.parse.version: Convert rest[0] to integer before storing it in value (MR 2514) * pmb.parse.version: Link to older apk-tools (MR 2514) * pmb: Add more type hints (MR 2513) * pmb.qemu.run: Fix odd strings (MR 2513) * docs: fix typos (MR 2510) * pmb.aportgen: Unify tempdir preparation and checksum generation (MR 2509) * pmb: Add more type hints (MR 2490) * pmb.aportgen: Annotate <options> as AportGenEntry in generate() (MR 2490) * pmb.helpers.repo_missing: Use f-string in get_relevant_packages() (MR 2490) * pmb/helpers/repo_missing: Remove <arch> from filter_aport_packages() docstring (MR 2490) * pmb.commands.pull: Remove bool return type from run() (MR 2490) * pmb.config.init: Use separate answer variable for sudo timer (MR 2490) * pmb.config.init: Explicitly convert string to int for config.extra_space (MR 2490) * pmb.config.init: Fix types in ask_for_systemd() (MR 2490) * pmb.config.init: Fix types in ask_for_work_path() (MR 2490) * pmb.parse.kconfig: Rename options to arch_options in check_config_options_set (MR 2490) * pmb.parse.kconfig.check_config_options_set: Update docstring (MR 2490) * pmb.helpers.http: Simplify retrieve_json() (MR 2490) * Fix spelling "infront" -> "in front"