From c86ce577d14ad86d887082940f221990aab78249 Mon Sep 17 00:00:00 2001 From: InsanePrawn Date: Thu, 22 Dec 2022 02:14:56 +0100 Subject: [PATCH] binfmt: move to own module, add cmd_register(), cmd_unregister() to cli --- binfmt/__init__.py | 0 binfmt.py => binfmt/binfmt.py | 0 binfmt/cli.py | 21 +++++++++++++++++++++ docs/source/cmd.md | 1 + main.py | 2 ++ packages/build.py | 2 +- 6 files changed, 25 insertions(+), 1 deletion(-) create mode 100644 binfmt/__init__.py rename binfmt.py => binfmt/binfmt.py (100%) create mode 100644 binfmt/cli.py diff --git a/binfmt/__init__.py b/binfmt/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/binfmt.py b/binfmt/binfmt.py similarity index 100% rename from binfmt.py rename to binfmt/binfmt.py diff --git a/binfmt/cli.py b/binfmt/cli.py new file mode 100644 index 0000000..7188d66 --- /dev/null +++ b/binfmt/cli.py @@ -0,0 +1,21 @@ +import click + +from constants import Arch, ARCHES + +from .binfmt import binfmt_unregister + +cmd_binfmt = click.Group('binfmt', help='Manage qemu binfmt for executing foreign architecture binaries') +arch_arg = click.argument('arch', type=click.Choice(ARCHES)) + + +@cmd_binfmt.command('register', help='Register a binfmt handler with the kernel') +@arch_arg +def cmd_register(arch: Arch, disable_chroot: bool = False): + from packages.build import build_enable_qemu_binfmt + build_enable_qemu_binfmt(arch) + + +@cmd_binfmt.command('unregister', help='Unregister a binfmt handler from the kernel') +@arch_arg +def cmd_unregister(arch: Arch): + binfmt_unregister(arch) diff --git a/docs/source/cmd.md b/docs/source/cmd.md index a892022..646372d 100644 --- a/docs/source/cmd.md +++ b/docs/source/cmd.md @@ -11,6 +11,7 @@ only used to trigger builds of the submodule docs! :template: command.rst :recursive: + binfmt cache chroot config diff --git a/main.py b/main.py index 46e51c0..f212197 100755 --- a/main.py +++ b/main.py @@ -11,6 +11,7 @@ from logger import color_option, logging, quiet_option, setup_logging, verbose_o from wrapper import get_wrapper_type, enforce_wrap, nowrapper_option from progressbar import progress_bars_option +from binfmt.cli import cmd_binfmt from config.cli import config, config_option, cmd_config from packages.cli import cmd_packages from flavours.cli import cmd_flavours @@ -77,6 +78,7 @@ def main(): exit(1) +cli.add_command(cmd_binfmt) cli.add_command(cmd_cache) cli.add_command(cmd_chroot) cli.add_command(cmd_config) diff --git a/packages/build.py b/packages/build.py index a7a2fe9..2fb9ccd 100644 --- a/packages/build.py +++ b/packages/build.py @@ -9,7 +9,7 @@ from copy import deepcopy from urllib.error import HTTPError from typing import Iterable, Iterator, Optional -from binfmt import register as binfmt_register +from binfmt.binfmt import binfmt_register from constants import CROSSDIRECT_PKGS, QEMU_BINFMT_PKGS, GCC_HOSTSPECS, ARCHES, Arch, CHROOT_PATHS, MAKEPKG_CMD from config.state import config from exec.cmd import run_cmd, run_root_cmd