Tags give the ability to mark specific points in history as being important
-
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"
-
3.1.0
f9bca7cf · ·Release 3.1.0 This relaese allows using pmbootstrap with Alpine 3.21 / pmOS v24.12, adds support for ppc64le, adds code to install keyboard configuration based on chosen locale and has a bunch of fixes. Thanks to everybody who contributed! Features: * pmb.config.apk_tools_min_version: add v3.21 * core: arch: Add ppc64le as a supported architecture (MR 2476) * core: arch: Add ppc64le qemu mapping (MR 2476) * qemu: run: Add support for ppc64le (MR 2476) * pmb.helpers.repo.update: support PMB_APK_FORCE_MISSING_REPOSITORIES (MR 2505) * pmb.helpers.locale: new module (MR 2497) * pmb.helpers.locale: add unit tests (MR 2497) * pmb.install._install: add setup_locale() (MR 2497) Fixes: * pmb.config.init: Call pmb.helpers.cli.confirm() correctly (MR 2489) * helpers: git: ignore case in get_upstream_remote() * pmb.helpers.git: fix get_upstream_remote() (MR 2496) * pmb/aportgen: lookup package in APKINDEX with correct arch (MR 2493) * build: newapkbuild: initialize chroot before use (MR 2495) * helpers: pmaports: Fix package detection for cross g++ and musl-dev (MR 2476) * helpers: pmaports: Always fall back to parsing all APKBUILDS (MR 2476) * qemu: run: Invoke the correct qemu command (MR 2476) * pmb.core.arch: Handle unsupported arches in from_machine_type() better (MR 2498) * Fix apkbuild parsing in edge cases (MR 2503) * pmb.aportgen.device: fix skipping when analyzing boot image (MR 2507) Other: * pmb: Add more type hints (MR 2489) * build: envkernel: cleanup behaviour (MR 2491) * .ci/docs.sh: add py3-sphinxcontrib-jquery to fix the failing search (MR 2500) * tests: Assert that riscv64 is supported (MR 2476) * core: chroot: Deduplicate supported arch list (MR 2476) * pmb.core.arch: Use match statement instead of mappings (MR 2498) * pmb.core.arch: Use annotations from future instead of quoted Arch type (MR 2498) * Revert "CI: Add bootimg analysis integration test (MR 2467)" (MR 2483) * test: conftest: adjust pmaports fixture (MR 2477) (MR 2483) * test: parse: add tests for bootimg parsing (MR 2477) (MR 2483) * test: aportgen: test deviceinfo fastboot content (MR 2477) (MR 2483) * test: conftest: require_programs() automatically (MR 2483) * build: envkernel: default to .output again (MR 2504) * docs/api/pmb.commands: fix "failed to import" (MR 2506) * docs: fix 'WARNING: Title underline too short' (MR 2506) * CI: docs: fail on warning (MR 2506) * docs: add env vars page with PMB_SUDO (MR 2506) * docs: document PMB_APK_FORCE_MISSING_REPOSITORIES (MR 2506) * .gitignore: add note for missing text editors (MR 2501)
-
3.0.0
79c6e4c3 · ·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/
-
2.3.3
4080d603 · ·Release 2.3.3 Folks using pmb v2 on Fedora and other distros that disabled sha1 in openssl will need this in order to run pmb successfully. Fixes: * pmb.chroot.apk_static: use sha256 sig for verification (MR 2465)
-
2.3.2
a86b7a30 · ·Release 2.3.2 Most importantly, this release migrates the pmaports.git URLs from gitlab.com to gitlab.postmarketos.org. Thanks to everybody who contributed! Related: https://postmarketos.org/blog/2024/10/14/gitlab-migration/ Fixes: * pmb: install: unbreak rsync option (MR 2311) * Correct btrfs subvolume creation in install step (MR 2319) * pkgrel_bump --auto: ignore -service depends (MR 2321) * pmb.config: Adjust pmaports URLs to postmarketOS GitLab (MR 2427) (MR 2445) * Replace gitlab.com with gitlab.postmarketos.org (MR 2445) * pmb.helpers: Automatically migrate fetch and push URL (MR 2429) (MR 2445) * git.get_upstream_remote: add fallback code path (MR 2429) (MR 2445) Other: * kconfigcheck: add NLS_ASCII for efi check (MR 2310) * PMB_APK_FORCE_MISSING_REPOSITORIES: new env var (MR 2318) * CI: Use latest (stable) Alpine instead of Edge (MR 2317) * CI: correct yaml indentation (MR 2316) * CI: Add docs deployment job (MR 2316)
-
2.3.1
92524002 · ·Release 2.3.1 This is a small release that prepares for postmarketOS v24.06 and fixes an issue where installing pmbootstrap as a Python package would install a package called "docs" into the global namespace, which was not intentional. Fixes: * pmb.config.apk_tools_min_version: update * pmb.config.apk_tools_min_version: add v3.20 * pyproject.toml: add docs to the parts to be excluded (MR 2312)
-
2.3.0
6dce8464 · ·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)