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