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