pmb: Make RunOutputTypeDefault and RunOutputTypePopen enums

This allows us to get rid of some of the validation in sanity_checks()
as mypy handles this validation at "build time", and any typos in the
enum instantiation would be a runtime error rather than a silent
failure.

Additionally, it allows us to encode some of the behaviour of the
different output types into the type definition itself by using methods.

Part-of: https://gitlab.postmarketos.org/postmarketOS/pmbootstrap/-/merge_requests/2642
This commit is contained in:
Newbyte 2025-07-07 17:00:58 +02:00 committed by Oliver Smith
parent 77b2717d66
commit 7d2f055bcb
No known key found for this signature in database
GPG key ID: 5AE7F5513E0885CB
20 changed files with 167 additions and 84 deletions

View file

@ -11,7 +11,7 @@ from pmb.core import Context
from pmb.core.arch import Arch
from pmb.core.chroot import Chroot
from pmb.helpers import logging
from pmb.types import Apkbuild, CrossCompile, Env
from pmb.types import Apkbuild, CrossCompile, Env, RunOutputTypeDefault
class BootstrapStage(enum.IntEnum):
@ -316,4 +316,6 @@ def run_abuild(
finally:
handle_csum_failure(apkbuild, buildchroot)
pmb.helpers.run.root(["umount", buildchroot / "/mnt/sysroot"], output="null", check=False)
pmb.helpers.run.root(
["umount", buildchroot / "/mnt/sysroot"], output=RunOutputTypeDefault.NULL, check=False
)