From f3794f939e4ede099400fb0c02e9bd9b63c94dac Mon Sep 17 00:00:00 2001 From: InsanePrawn Date: Wed, 29 Sep 2021 23:18:12 +0200 Subject: [PATCH] Move enforce_wrapper() into appropiate CMDs. This speeds up --help as a side effect! --- boot.py | 2 ++ cache.py | 13 ++++++++----- chroot.py | 1 - config.py | 1 + flash.py | 2 ++ forwarding.py | 2 ++ image.py | 11 +++++------ main.py | 6 +++--- packages.py | 17 ++++++++--------- telnet.py | 2 ++ wrapper.py | 2 +- 11 files changed, 34 insertions(+), 25 deletions(-) diff --git a/boot.py b/boot.py index 5823bee..988a194 100644 --- a/boot.py +++ b/boot.py @@ -4,6 +4,7 @@ from image import get_device_and_flavour, get_image_name, dump_bootimg, dump_lk2 from fastboot import fastboot_boot, fastboot_erase_dtbo from constants import BOOT_STRATEGIES, FLASH_PARTS, FASTBOOT, JUMPDRIVE, JUMPDRIVE_VERSION import click +from wrapper import enforce_wrap LK2ND = FLASH_PARTS['LK2ND'] BOOTIMG = FLASH_PARTS['BOOTIMG'] @@ -15,6 +16,7 @@ TYPES = [LK2ND, JUMPDRIVE, BOOTIMG] @click.argument('type', required=False, default=BOOTIMG) def cmd_boot(type): f"""Flash one of {', '.join(TYPES)}""" + enforce_wrap() device, flavour = get_device_and_flavour() image_name = get_image_name(device, flavour) strategy = BOOT_STRATEGIES[device] diff --git a/cache.py b/cache.py index 03734e8..5050e9f 100644 --- a/cache.py +++ b/cache.py @@ -1,6 +1,9 @@ import shutil import click import os +from config import config +from wrapper import enforce_wrap +import logging @click.group(name='cache') @@ -8,15 +11,15 @@ def cmd_cache(): pass -@click.command(name='clean') +@cmd_cache.command(name='clean') def cmd_clean(): - for dir in ['/chroot', '/var/cache/pacman/pkg', '/var/cache/jumpdrive']: + enforce_wrap() + for path_name in ['chroots', 'pacman', 'jumpdrive']: + dir = config.file['paths'][path_name] for file in os.listdir(dir): path = os.path.join(dir, file) + logging.debug('Removing "{path}"') if os.path.isdir(path): shutil.rmtree(path) else: os.unlink(path) - - -cmd_cache.add_command(cmd_clean) diff --git a/chroot.py b/chroot.py index 96d4a7a..9c400a0 100644 --- a/chroot.py +++ b/chroot.py @@ -1,7 +1,6 @@ import logging import subprocess import os -import shutil from config import config from distro import get_base_distros, RepoInfo diff --git a/config.py b/config.py index 0f611bd..2acd4d3 100644 --- a/config.py +++ b/config.py @@ -42,6 +42,7 @@ CONFIG_RUNTIME_DEFAULTS = { 'verbose': False, 'config_file': None, 'arch': None, + 'no_wrap': False, } diff --git a/flash.py b/flash.py index fc92dba..316c44e 100644 --- a/flash.py +++ b/flash.py @@ -7,6 +7,7 @@ import os import subprocess import click import tempfile +from wrapper import enforce_wrap BOOTIMG = FLASH_PARTS['BOOTIMG'] LK2ND = FLASH_PARTS['LK2ND'] @@ -18,6 +19,7 @@ ROOTFS = FLASH_PARTS['ROOTFS'] @click.argument('what') @click.argument('location', required=False) def cmd_flash(what, location): + enforce_wrap() device, flavour = get_device_and_flavour() image_name = get_image_name(device, flavour) diff --git a/forwarding.py b/forwarding.py index 7ba7aaa..6ec5b09 100644 --- a/forwarding.py +++ b/forwarding.py @@ -2,10 +2,12 @@ import click import subprocess from logger import logging from ssh import cmd_ssh +from wrapper import enforce_wrap @click.command(name='forwarding') def cmd_forwarding(): + enforce_wrap() result = subprocess.run([ 'sysctl', 'net.ipv4.ip_forward=1', diff --git a/image.py b/image.py index bbb6c29..dc16788 100644 --- a/image.py +++ b/image.py @@ -4,9 +4,10 @@ import subprocess import click from logger import logging from chroot import create_chroot, create_chroot_user, get_chroot_path, run_chroot_cmd -from constants import DEVICES, FLAVOURS, REPOSITORIES +from constants import DEVICES, FLAVOURS from config import config from distro import get_kupfer_https, get_kupfer_local +from wrapper import enforce_wrap def get_device_and_flavour(profile=None) -> tuple[str, str]: @@ -102,8 +103,9 @@ def cmd_image(): pass -@click.command(name='build') +@cmd_image.command(name='build') def cmd_build(): + enforce_wrap() profile = config.get_profile() device, flavour = get_device_and_flavour() post_cmds = FLAVOURS[flavour].get('post_cmds', []) @@ -159,7 +161,7 @@ def cmd_build(): This doesn't work, because the mount isn't passed through to the real host """ """ -@click.command(name='inspect') +@cmd_image.command(name='inspect') def cmd_inspect(): device, flavour = get_device_and_flavour() image_name = get_image_name(device, flavour) @@ -171,6 +173,3 @@ def cmd_inspect(): signal.pause() """ - -cmd_image.add_command(cmd_build) -# cmd_image.add_command(cmd_inspect) diff --git a/main.py b/main.py index 49a3f3e..234b935 100644 --- a/main.py +++ b/main.py @@ -9,7 +9,7 @@ from telnet import cmd_telnet from logger import logging, setup_logging, verbose_option import click from config import config, config_option, cmd_config -from wrapper import enforce_wrap, nowrapper_option +from wrapper import nowrapper_option from traceback import format_exc as get_trace @@ -20,9 +20,8 @@ from traceback import format_exc as get_trace def cli(verbose: bool = False, config_file: str = None, no_wrapper: bool = False): setup_logging(verbose) config.runtime['verbose'] = verbose + config.runtime['no_wrap'] = no_wrapper config.try_load_file(config_file) - # TODO: move this only to CMDs where it's needed - enforce_wrap(no_wrapper=no_wrapper) def main(): @@ -32,6 +31,7 @@ def main(): logging.fatal(get_trace()) exit(1) + cli.add_command(cmd_config) cli.add_command(cmd_cache) cli.add_command(cmd_packages) diff --git a/packages.py b/packages.py index dc7783b..f545fd2 100644 --- a/packages.py +++ b/packages.py @@ -9,7 +9,8 @@ from constants import REPOSITORIES from config import config from chroot import create_chroot from joblib import Parallel, delayed -from distro import RepoInfo, get_kupfer_local +from distro import get_kupfer_local +from wrapper import enforce_wrap makepkg_env = os.environ.copy() | { 'LANG': 'C', @@ -496,10 +497,11 @@ def cmd_packages(): pass -@click.command(name='build') +@cmd_packages.command(name='build') @click.option('--force', is_flag=True, default=False) @click.argument('paths', nargs=-1) def cmd_build(paths: list[str], force=False, arch='aarch64'): + enforce_wrap() check_prebuilts() paths = list(paths) @@ -535,8 +537,9 @@ def cmd_build(paths: list[str], force=False, arch='aarch64'): add_package_to_repo(package) -@click.command(name='clean') +@cmd_packages.command(name='clean') def cmd_clean(): + enforce_wrap() result = subprocess.run([ 'git', 'clean', @@ -547,9 +550,10 @@ def cmd_clean(): exit(1) -@click.command(name='check') +@cmd_packages.command(name='check') @click.argument('paths', nargs=-1) def cmd_check(paths): + enforce_wrap() paths = list(paths) packages = filter_packages_by_paths(discover_packages(), paths) @@ -690,8 +694,3 @@ def cmd_check(paths): line_index += 1 logging.info(f'{package.path} nicely formatted!') - - -cmd_packages.add_command(cmd_build) -cmd_packages.add_command(cmd_clean) -cmd_packages.add_command(cmd_check) diff --git a/telnet.py b/telnet.py index 46d012a..23d13cc 100644 --- a/telnet.py +++ b/telnet.py @@ -1,9 +1,11 @@ import subprocess import click +from wrapper import enforce_wrap @click.command(name='telnet') def cmd_telnet(hostname: str = '172.16.42.1'): + enforce_wrap() subprocess.run([ 'telnet', hostname, diff --git a/wrapper.py b/wrapper.py index 7708c7d..ca5e572 100644 --- a/wrapper.py +++ b/wrapper.py @@ -103,7 +103,7 @@ def wrap_docker(): def enforce_wrap(no_wrapper=False): - if os.getenv('KUPFERBOOTSTRAP_DOCKER') != '1' and not no_wrapper: + if os.getenv('KUPFERBOOTSTRAP_DOCKER') != '1' and not config.runtime['no_wrap'] and not no_wrapper: wrap_docker()