From 4e4e12b6b9cb68a66214b950a82970be7cc55078 Mon Sep 17 00:00:00 2001 From: InsanePrawn Date: Tue, 16 Aug 2022 17:52:38 +0200 Subject: [PATCH] chroot.run_cmd(): don't blindly import outer env into chroot, avoiding a bunch of spam. --- chroot/abstract.py | 16 ++++++++++------ 1 file changed, 10 insertions(+), 6 deletions(-) diff --git a/chroot/abstract.py b/chroot/abstract.py index 2703510..990d4a7 100644 --- a/chroot/abstract.py +++ b/chroot/abstract.py @@ -7,11 +7,11 @@ from shlex import quote as shell_quote from typing import Protocol, Union, Optional, Mapping from uuid import uuid4 +from config import config +from constants import Arch, CHROOT_PATHS, GCC_HOSTSPECS +from distro.distro import get_base_distro, get_kupfer_local, RepoInfo from exec.cmd import run_root_cmd, generate_env_cmd, flatten_shell_script, wrap_in_bash from exec.file import makedir, root_makedir, root_write_file, write_file -from config import config -from constants import Arch, CHROOT_PATHS -from distro.distro import get_base_distro, get_kupfer_local, RepoInfo from generator import generate_makepkg_conf from utils import mount, umount, check_findmnt, log_or_exception @@ -217,7 +217,7 @@ class Chroot(AbstractChroot): self, script: Union[str, list[str]], inner_env: dict[str, str] = {}, - outer_env: dict[str, str] = os.environ.copy() | {'QEMU_LD_PREFIX': '/usr/aarch64-linux-gnu'}, + outer_env: dict[str, str] = {}, attach_tty: bool = False, capture_output: bool = False, cwd: Optional[str] = None, @@ -227,8 +227,12 @@ class Chroot(AbstractChroot): if not self.active and fail_inactive: raise Exception(f'Chroot {self.name} is inactive, not running command! Hint: pass `fail_inactive=False`') if outer_env is None: - outer_env = os.environ.copy() - env_cmd = generate_env_cmd(inner_env) + outer_env = {} + native = config.runtime['arch'] + if self.arch != native and 'QEMU_LD_PREFIX' not in outer_env: + outer_env = dict(outer_env) # copy dict for modification + outer_env |= {'QEMU_LD_PREFIX': f'/usr/{GCC_HOSTSPECS[native][self.arch]}'} + env_cmd = generate_env_cmd(inner_env) if inner_env else [] if not isinstance(script, str) and isinstance(script, list): script = flatten_shell_script(script, shell_quote_items=False, wrap_in_shell_quote=False)