Script 'mail_helper' called by obssrc Hello community, here is the log from the commit of package pmbootstrap for openSUSE:Factory checked in at 2026-04-09 16:09:20 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/pmbootstrap (Old) and /work/SRC/openSUSE:Factory/.pmbootstrap.new.21863 (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "pmbootstrap" Thu Apr 9 16:09:20 2026 rev:5 rq:1345265 version:3.10.1 Changes: -------- --- /work/SRC/openSUSE:Factory/pmbootstrap/pmbootstrap.changes 2026-04-05 18:24:41.719244289 +0200 +++ /work/SRC/openSUSE:Factory/.pmbootstrap.new.21863/pmbootstrap.changes 2026-04-09 16:22:09.100116164 +0200 @@ -1,0 +2,19 @@ +Tue Apr 7 19:15:29 UTC 2026 - Martin Hauke <[email protected]> + +- Update to version 3.10.1 + * aportgen: correct carch string when generating kernel package. + * pmb.qemu.run: Install efi image unconditionally for qemu. + * 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. + * pmb: Add additional overload for root(). + * pmb: Remove pigz zombie code. + * pmb.commands.qemu: Clean up host executable not found error. + * pmb.commands.qemu: Log that postmarketOS is running after + nstalling EFI. + * pmb.build.autodetect: Remove arch from deviceinfo logic. + +------------------------------------------------------------------- Old: ---- pmbootstrap-3.10.0.tar.gz New: ---- pmbootstrap-3.10.1.tar.gz ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ pmbootstrap.spec ++++++ --- /var/tmp/diff_new_pack.SNj2n4/_old 2026-04-09 16:22:09.640138322 +0200 +++ /var/tmp/diff_new_pack.SNj2n4/_new 2026-04-09 16:22:09.644138486 +0200 @@ -21,9 +21,9 @@ %define pythons %{primary_python} -%define commit 6ccc1cb9b134ea5c2751ac60a3319328cc76f348 +%define commit a72d80ee0101e7fe7b9361b63f3b2f4046ef40a6 Name: pmbootstrap -Version: 3.10.0 +Version: 3.10.1 Release: 0 Summary: Sophisticated chroot/build/flash tool to develop and install postmarketOS License: GPL-3.0-or-later ++++++ pmbootstrap-3.10.0.tar.gz -> pmbootstrap-3.10.1.tar.gz ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pmbootstrap-3.10.0-6ccc1cb9b134ea5c2751ac60a3319328cc76f348/.ci/integration.sh new/pmbootstrap-3.10.1-a72d80ee0101e7fe7b9361b63f3b2f4046ef40a6/.ci/integration.sh --- old/pmbootstrap-3.10.0-6ccc1cb9b134ea5c2751ac60a3319328cc76f348/.ci/integration.sh 2026-04-04 00:33:24.000000000 +0200 +++ new/pmbootstrap-3.10.1-a72d80ee0101e7fe7b9361b63f3b2f4046ef40a6/.ci/integration.sh 2026-04-07 17:52:19.000000000 +0200 @@ -128,6 +128,11 @@ pmbootstrap initfs extract } +newapkbuild() { + pmbootstrap newapkbuild something-that-would-not-exist + [ -e ~/.local/var/pmbootstrap/cache_git/pmaports/main/something-that-would-not-exist/APKBUILD ] +} + parse_apkindex() { wget https://dl-cdn.alpinelinux.org/alpine/latest-stable/main/x86_64/APKINDEX.tar.gz pmbootstrap apkindex_parse APKINDEX.tar.gz diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pmbootstrap-3.10.0-6ccc1cb9b134ea5c2751ac60a3319328cc76f348/.ci/integration_tests/newapkbuild new/pmbootstrap-3.10.1-a72d80ee0101e7fe7b9361b63f3b2f4046ef40a6/.ci/integration_tests/newapkbuild --- old/pmbootstrap-3.10.0-6ccc1cb9b134ea5c2751ac60a3319328cc76f348/.ci/integration_tests/newapkbuild 1970-01-01 01:00:00.000000000 +0100 +++ new/pmbootstrap-3.10.1-a72d80ee0101e7fe7b9361b63f3b2f4046ef40a6/.ci/integration_tests/newapkbuild 2026-04-09 16:22:09.968151781 +0200 @@ -0,0 +1 @@ +symbolic link to ../integration.sh diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pmbootstrap-3.10.0-6ccc1cb9b134ea5c2751ac60a3319328cc76f348/.gitlab-ci.yml new/pmbootstrap-3.10.1-a72d80ee0101e7fe7b9361b63f3b2f4046ef40a6/.gitlab-ci.yml --- old/pmbootstrap-3.10.0-6ccc1cb9b134ea5c2751ac60a3319328cc76f348/.gitlab-ci.yml 2026-04-04 00:33:24.000000000 +0200 +++ new/pmbootstrap-3.10.1-a72d80ee0101e7fe7b9361b63f3b2f4046ef40a6/.gitlab-ci.yml 2026-04-07 17:52:19.000000000 +0200 @@ -124,10 +124,9 @@ rules: - if: $CI_PIPELINE_SOURCE == 'merge_request_event' changes: - # We don't run mypy on tests, so no need to include test/**/*.py here. + - "**/*.py" - .ci/mypy.sh - .gitlab-ci.yml - - "pmb/**/*.py" - pmbootstrap.py - pyproject.toml script: @@ -284,6 +283,11 @@ script: - .ci/integration_tests/inspect_initramfs +newapkbuild: + extends: .integration + script: + - .ci/integration_tests/newapkbuild + parse APKINDEX: extends: .integration script: diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pmbootstrap-3.10.0-6ccc1cb9b134ea5c2751ac60a3319328cc76f348/pmb/__init__.py new/pmbootstrap-3.10.1-a72d80ee0101e7fe7b9361b63f3b2f4046ef40a6/pmb/__init__.py --- old/pmbootstrap-3.10.0-6ccc1cb9b134ea5c2751ac60a3319328cc76f348/pmb/__init__.py 2026-04-04 00:33:24.000000000 +0200 +++ new/pmbootstrap-3.10.1-a72d80ee0101e7fe7b9361b63f3b2f4046ef40a6/pmb/__init__.py 2026-04-07 17:52:19.000000000 +0200 @@ -23,7 +23,7 @@ from .helpers import logging, mount, other, status # pmbootstrap version -__version__ = "3.10.0" +__version__ = "3.10.1" # Python version check # === CHECKLIST FOR UPGRADING THE REQUIRED PYTHON VERSION === diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pmbootstrap-3.10.0-6ccc1cb9b134ea5c2751ac60a3319328cc76f348/pmb/aportgen/__init__.py new/pmbootstrap-3.10.1-a72d80ee0101e7fe7b9361b63f3b2f4046ef40a6/pmb/aportgen/__init__.py --- old/pmbootstrap-3.10.0-6ccc1cb9b134ea5c2751ac60a3319328cc76f348/pmb/aportgen/__init__.py 2026-04-04 00:33:24.000000000 +0200 +++ new/pmbootstrap-3.10.1-a72d80ee0101e7fe7b9361b63f3b2f4046ef40a6/pmb/aportgen/__init__.py 2026-04-07 17:52:19.000000000 +0200 @@ -117,7 +117,7 @@ # "DeviceCategory | None"; expected "DeviceCategory". # The check on the top of the page already ensures device_category is not # None in this case. - pmb.aportgen.device.generate(pkgname, device_category) # type: ignore + pmb.aportgen.device.generate(pkgname, device_category) # type: ignore[arg-type] case "gcc": pmb.aportgen.gcc.generate(pkgname) case "grub-efi": diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pmbootstrap-3.10.0-6ccc1cb9b134ea5c2751ac60a3319328cc76f348/pmb/aportgen/device.py new/pmbootstrap-3.10.1-a72d80ee0101e7fe7b9361b63f3b2f4046ef40a6/pmb/aportgen/device.py --- old/pmbootstrap-3.10.0-6ccc1cb9b134ea5c2751ac60a3319328cc76f348/pmb/aportgen/device.py 2026-04-04 00:33:24.000000000 +0200 +++ new/pmbootstrap-3.10.1-a72d80ee0101e7fe7b9361b63f3b2f4046ef40a6/pmb/aportgen/device.py 2026-04-07 17:52:19.000000000 +0200 @@ -145,7 +145,7 @@ "mtk_label_ramdisk", "header_version", ]: - v = bootimg[k] # type: ignore + v = bootimg[k] # type: ignore[literal-required] if v: content += f"""\ deviceinfo_{k}="{v}" diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pmbootstrap-3.10.0-6ccc1cb9b134ea5c2751ac60a3319328cc76f348/pmb/aportgen/linux.py new/pmbootstrap-3.10.1-a72d80ee0101e7fe7b9361b63f3b2f4046ef40a6/pmb/aportgen/linux.py --- old/pmbootstrap-3.10.0-6ccc1cb9b134ea5c2751ac60a3319328cc76f348/pmb/aportgen/linux.py 2026-04-04 00:33:24.000000000 +0200 +++ new/pmbootstrap-3.10.1-a72d80ee0101e7fe7b9361b63f3b2f4046ef40a6/pmb/aportgen/linux.py 2026-04-07 17:52:19.000000000 +0200 @@ -16,7 +16,7 @@ ) -> None: device = "-".join(pkgname.split("-")[1:]) arch = deviceinfo.arch if deviceinfo else ask_for_architecture() - carch = arch.kernel_dir() + carch = arch.kernel_arch() makedepends = [ "bash", diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pmbootstrap-3.10.0-6ccc1cb9b134ea5c2751ac60a3319328cc76f348/pmb/build/autodetect.py new/pmbootstrap-3.10.1-a72d80ee0101e7fe7b9361b63f3b2f4046ef40a6/pmb/build/autodetect.py --- old/pmbootstrap-3.10.0-6ccc1cb9b134ea5c2751ac60a3319328cc76f348/pmb/build/autodetect.py 2026-04-04 00:33:24.000000000 +0200 +++ new/pmbootstrap-3.10.1-a72d80ee0101e7fe7b9361b63f3b2f4046ef40a6/pmb/build/autodetect.py 2026-04-07 17:52:19.000000000 +0200 @@ -1,39 +1,13 @@ # Copyright 2023 Oliver Smith # SPDX-License-Identifier: GPL-3.0-or-later -from pathlib import Path - import pmb.config import pmb.helpers.pmaports from pmb.core.arch import Arch from pmb.core.context import get_context -from pmb.helpers import logging from pmb.meta import Cache from pmb.types import Apkbuild, CrossCompile -def arch_from_deviceinfo(pkgname: str, aport: Path) -> Arch | None: - """ - The device- packages are noarch packages. But it only makes sense to build - them for the device's architecture, which is specified in the deviceinfo - file. - - :returns: None (no deviceinfo file) - arch from the deviceinfo (e.g. "armhf") - """ - # Require a deviceinfo file in the aport - if not pkgname.startswith("device-"): - return None - deviceinfo = aport / "deviceinfo" - if not deviceinfo.exists(): - return None - - # Return its arch - device = pkgname.split("-", 1)[1] - arch = pmb.parse.deviceinfo(device).arch - logging.verbose(f"{pkgname}: arch from deviceinfo: {arch}") - return arch - - @Cache("package") def arch(package: str | Apkbuild) -> Arch: """ @@ -50,9 +24,6 @@ """ pkgname = package["pkgname"] if isinstance(package, dict) else package aport = pmb.helpers.pmaports.find(pkgname) - ret = arch_from_deviceinfo(pkgname, aport) - if ret: - return ret apkbuild = pmb.parse.apkbuild(aport) if isinstance(package, str) else package arches = apkbuild["arch"] diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pmbootstrap-3.10.0-6ccc1cb9b134ea5c2751ac60a3319328cc76f348/pmb/build/init.py new/pmbootstrap-3.10.1-a72d80ee0101e7fe7b9361b63f3b2f4046ef40a6/pmb/build/init.py --- old/pmbootstrap-3.10.0-6ccc1cb9b134ea5c2751ac60a3319328cc76f348/pmb/build/init.py 2026-04-04 00:33:24.000000000 +0200 +++ new/pmbootstrap-3.10.1-a72d80ee0101e7fe7b9361b63f3b2f4046ef40a6/pmb/build/init.py 2026-04-07 17:52:19.000000000 +0200 @@ -22,9 +22,6 @@ if not build_pkgs: build_pkgs = pmb.config.build_packages - # pigz is multithreaded and makes compression must faster, we install it in the native - # chroot and then symlink it into the buildroot so we aren't running it through QEMU. - # pmb.chroot.apk.install(["pigz"], Chroot.native(), build=False) pmb.chroot.apk.install(build_pkgs, chroot, build=False) # Fix permissions diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pmbootstrap-3.10.0-6ccc1cb9b134ea5c2751ac60a3319328cc76f348/pmb/chroot/mount.py new/pmbootstrap-3.10.1-a72d80ee0101e7fe7b9361b63f3b2f4046ef40a6/pmb/chroot/mount.py --- old/pmbootstrap-3.10.0-6ccc1cb9b134ea5c2751ac60a3319328cc76f348/pmb/chroot/mount.py 2026-04-04 00:33:24.000000000 +0200 +++ new/pmbootstrap-3.10.1-a72d80ee0101e7fe7b9361b63f3b2f4046ef40a6/pmb/chroot/mount.py 2026-04-07 17:52:19.000000000 +0200 @@ -176,7 +176,6 @@ musl_link = chroot / "lib" / musl if not musl_link.is_symlink(): pmb.helpers.run.root(["ln", "-s", "/native/lib/" + musl, musl_link]) - # pmb.helpers.run.root(["ln", "-sf", "/native/usr/bin/pigz", "/usr/local/bin/pigz"]) def remove_mnt_pmbootstrap(chroot: Chroot) -> None: diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pmbootstrap-3.10.0-6ccc1cb9b134ea5c2751ac60a3319328cc76f348/pmb/chroot/run.py new/pmbootstrap-3.10.1-a72d80ee0101e7fe7b9361b63f3b2f4046ef40a6/pmb/chroot/run.py --- old/pmbootstrap-3.10.0-6ccc1cb9b134ea5c2751ac60a3319328cc76f348/pmb/chroot/run.py 2026-04-04 00:33:24.000000000 +0200 +++ new/pmbootstrap-3.10.1-a72d80ee0101e7fe7b9361b63f3b2f4046ef40a6/pmb/chroot/run.py 2026-04-07 17:52:19.000000000 +0200 @@ -102,6 +102,15 @@ def root( cmds: Sequence[PathString], chroot: Chroot = ..., + *, + check: bool = ..., +) -> int: ... + + +@overload +def root( + cmds: Sequence[PathString], + chroot: Chroot = ..., working_dir: PurePath = ..., output: RunOutputTypePopen = ..., output_return: Literal[False] = ..., diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pmbootstrap-3.10.0-6ccc1cb9b134ea5c2751ac60a3319328cc76f348/pmb/commands/config.py new/pmbootstrap-3.10.1-a72d80ee0101e7fe7b9361b63f3b2f4046ef40a6/pmb/commands/config.py --- old/pmbootstrap-3.10.0-6ccc1cb9b134ea5c2751ac60a3319328cc76f348/pmb/commands/config.py 2026-04-04 00:33:24.000000000 +0200 +++ new/pmbootstrap-3.10.1-a72d80ee0101e7fe7b9361b63f3b2f4046ef40a6/pmb/commands/config.py 2026-04-07 17:52:19.000000000 +0200 @@ -29,8 +29,8 @@ mirror = name.split(".", 1)[1] # Ignore mypy 'error: TypedDict name must be a string literal'. # Argparse already ensures 'mirror' is a valid Config.Mirrors key. - if value_changed := (config.mirrors[mirror] != value): # type: ignore - config.mirrors[mirror] = value # type: ignore + if value_changed := (config.mirrors[mirror] != value): # type: ignore[literal-required] + config.mirrors[mirror] = value # type: ignore[literal-required] elif isinstance(getattr(Config, name), list): new_list = value.split(",") if value_changed := (getattr(config, name, None) != new_list): diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pmbootstrap-3.10.0-6ccc1cb9b134ea5c2751ac60a3319328cc76f348/pmb/commands/qemu.py new/pmbootstrap-3.10.1-a72d80ee0101e7fe7b9361b63f3b2f4046ef40a6/pmb/commands/qemu.py --- old/pmbootstrap-3.10.0-6ccc1cb9b134ea5c2751ac60a3319328cc76f348/pmb/commands/qemu.py 2026-04-04 00:33:24.000000000 +0200 +++ new/pmbootstrap-3.10.1-a72d80ee0101e7fe7b9361b63f3b2f4046ef40a6/pmb/commands/qemu.py 2026-04-07 17:52:19.000000000 +0200 @@ -57,10 +57,9 @@ if shutil.which(executable): return executable else: - raise RuntimeError( - "Could not find the '" + executable + "' executable" - " in your PATH. Please install it in order to" - " run qemu." + raise NonBugError( + f"Could not find the '{executable}' executable in your PATH." + " Please install it in order to run qemu." ) @@ -231,6 +230,8 @@ command += ["-M", "pseries"] case Arch.loongarch64: command += ["-M", "virt"] + case _: + pass # Configure display if qemu_display != "none": @@ -368,6 +369,12 @@ "qemu-ui-sdl", ] + chroot = Chroot.native() + pmb.chroot.init(chroot) + pmb.chroot.apk.install(depends, chroot) + + +def install_efi_image(arch: Arch) -> None: edk2_pkg = None # EDK2 builds are only available for the target architecture @@ -380,7 +387,7 @@ edk2_pkg = "edk2-loongarch64" case Arch.ppc64le: # ppc64le uses SLOF included in QEMU instead of EFI - pass + return case Arch.riscv64: edk2_pkg = "ovmf" case _: @@ -388,16 +395,9 @@ # If we're running natively, install it to the native chroot, otherwise we need to # install it in the target chroot - if edk2_pkg is not None and arch == Arch.native(): - depends.append(edk2_pkg) - elif edk2_pkg is not None: - target_chroot = Chroot.buildroot(arch) - pmb.chroot.init(target_chroot) - pmb.chroot.apk.install([edk2_pkg], target_chroot) - - chroot = Chroot.native() - pmb.chroot.init(chroot) - pmb.chroot.apk.install(depends, chroot) + target_chroot = Chroot.native() if arch == Arch.native() else Chroot.buildroot(arch) + pmb.chroot.init(target_chroot) + pmb.chroot.apk.install([edk2_pkg], target_chroot) def qemu( @@ -442,6 +442,8 @@ if not use_host_qemu: install_depends(arch) + install_efi_image(arch) + logging.info("Running postmarketOS in QEMU VM (" + arch.qemu_system() + ")") qemu, env = command_qemu( diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pmbootstrap-3.10.0-6ccc1cb9b134ea5c2751ac60a3319328cc76f348/pmb/helpers/locale.py new/pmbootstrap-3.10.1-a72d80ee0101e7fe7b9361b63f3b2f4046ef40a6/pmb/helpers/locale.py --- old/pmbootstrap-3.10.0-6ccc1cb9b134ea5c2751ac60a3319328cc76f348/pmb/helpers/locale.py 2026-04-04 00:33:24.000000000 +0200 +++ new/pmbootstrap-3.10.1-a72d80ee0101e7fe7b9361b63f3b2f4046ef40a6/pmb/helpers/locale.py 2026-04-07 17:52:19.000000000 +0200 @@ -274,6 +274,8 @@ return XkbLayout("pak", "urd-nla") case "yo": return XkbLayout("ng", "yoruba") + case _: + pass if language not in locales_without_layout: logging.warning(f'Language "{language}" not found in language list') return XkbLayout() # return default layout if no layout was found diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pmbootstrap-3.10.0-6ccc1cb9b134ea5c2751ac60a3319328cc76f348/pmb/install/_install.py new/pmbootstrap-3.10.1-a72d80ee0101e7fe7b9361b63f3b2f4046ef40a6/pmb/install/_install.py --- old/pmbootstrap-3.10.0-6ccc1cb9b134ea5c2751ac60a3319328cc76f348/pmb/install/_install.py 2026-04-04 00:33:24.000000000 +0200 +++ new/pmbootstrap-3.10.1-a72d80ee0101e7fe7b9361b63f3b2f4046ef40a6/pmb/install/_install.py 2026-04-07 17:52:19.000000000 +0200 @@ -363,6 +363,8 @@ layout = "dano" case "rx51_pt" | "rx51_es": layout = "ptes" + case _: + pass # Multiple files can contain the keyboard layout, take last xconfig = xconfig.splitlines()[-1] old_text = 'Option *\\"XkbLayout\\" *\\".*\\"' @@ -444,9 +446,7 @@ if "alpine-appstream-downloader" not in installed_pkgs or offline: return - # FIXME: mypy infers root() to return Popen here, but it should be inferring int. Broken - # overloads. - if not pmb.chroot.root( # type: ignore[truthy-bool] + if not pmb.chroot.root( ["alpine-appstream-downloader", "/mnt/appstream-data"], chroot, check=False ): pmb.chroot.root(["mkdir", "-p", "/var/lib/swcatalog"], chroot) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pmbootstrap-3.10.0-6ccc1cb9b134ea5c2751ac60a3319328cc76f348/pmb/parse/arguments.py new/pmbootstrap-3.10.1-a72d80ee0101e7fe7b9361b63f3b2f4046ef40a6/pmb/parse/arguments.py --- old/pmbootstrap-3.10.0-6ccc1cb9b134ea5c2751ac60a3319328cc76f348/pmb/parse/arguments.py 2026-04-04 00:33:24.000000000 +0200 +++ new/pmbootstrap-3.10.1-a72d80ee0101e7fe7b9361b63f3b2f4046ef40a6/pmb/parse/arguments.py 2026-04-07 17:52:19.000000000 +0200 @@ -273,6 +273,7 @@ ret.add_argument("--user", help="use a different username than the one set in init") ret.add_argument( "--arch", + choices=Arch.supported(), help="skip automatic architecture deduction and use the given value", type=lambda x: Arch.from_str(x), ) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pmbootstrap-3.10.0-6ccc1cb9b134ea5c2751ac60a3319328cc76f348/pmb/types.py new/pmbootstrap-3.10.1-a72d80ee0101e7fe7b9361b63f3b2f4046ef40a6/pmb/types.py --- old/pmbootstrap-3.10.0-6ccc1cb9b134ea5c2751ac60a3319328cc76f348/pmb/types.py 2026-04-04 00:33:24.000000000 +0200 +++ new/pmbootstrap-3.10.1-a72d80ee0101e7fe7b9361b63f3b2f4046ef40a6/pmb/types.py 2026-04-07 17:52:19.000000000 +0200 @@ -135,6 +135,7 @@ PathString = Path | str Env = dict[str, PathString] Apkbuild = dict[str, Any] +ActionKConfig = Literal["check", "edit", "migrate", "generate"] WithExtraRepos = Literal["default", "enabled", "disabled"] # These types are not definitive / API, they exist to describe the current @@ -174,7 +175,7 @@ class PmbArgs(Namespace): action_flasher: str action_initfs: str - action_kconfig: str + action_kconfig: ActionKConfig action_netboot: str action_test: str add: str diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pmbootstrap-3.10.0-6ccc1cb9b134ea5c2751ac60a3319328cc76f348/pyproject.toml new/pmbootstrap-3.10.1-a72d80ee0101e7fe7b9361b63f3b2f4046ef40a6/pyproject.toml --- old/pmbootstrap-3.10.0-6ccc1cb9b134ea5c2751ac60a3319328cc76f348/pyproject.toml 2026-04-04 00:33:24.000000000 +0200 +++ new/pmbootstrap-3.10.1-a72d80ee0101e7fe7b9361b63f3b2f4046ef40a6/pyproject.toml 2026-04-07 17:52:19.000000000 +0200 @@ -86,4 +86,15 @@ strict_equality = true strict_equality_for_none = true warn_unreachable = true -enable_error_code = "truthy-bool" +enable_error_code = [ + "exhaustive-match", + "ignore-without-code", + "redundant-expr", + "redundant-self", + "mutable-override", + "truthy-bool", + "truthy-iterable", + "unimported-reveal", + "unused-awaitable", + "unused-ignore", +]
