From 49e6bf740f94654118a408769d8e32c71d649d40 Mon Sep 17 00:00:00 2001 From: InsanePrawn Date: Sat, 23 Oct 2021 21:10:54 +0200 Subject: [PATCH] Chroot.run_cmd(): add `cwd` param, convert packages.setup_sources() to use run_cmd() for makepkg --- chroot.py | 3 +++ packages.py | 12 +++--------- 2 files changed, 6 insertions(+), 9 deletions(-) diff --git a/chroot.py b/chroot.py index 1282688..49b43dd 100644 --- a/chroot.py +++ b/chroot.py @@ -311,6 +311,7 @@ class Chroot: outer_env: dict[str, str] = os.environ.copy() | {'QEMU_LD_PREFIX': '/usr/aarch64-linux-gnu'}, attach_tty: str = False, capture_output: str = False, + cwd: str = None, fail_inactive: bool = True) -> subprocess.CompletedProcess: if not self.active and fail_inactive: raise Exception(f'Chroot {self.name} is inactive, not running command! Hint: pass `fail_inactive=False`') @@ -326,6 +327,8 @@ class Chroot: if not isinstance(script, str) and isinstance(script, list): script = ' '.join(script) + if cwd: + script = f"cd {shell_quote(cwd)} && ( {script} )" cmd = ['chroot', self.path] + env_cmd + [ '/bin/bash', '-c', diff --git a/packages.py b/packages.py index 46e64a8..759ce0d 100644 --- a/packages.py +++ b/packages.py @@ -414,19 +414,13 @@ def setup_build_chroot(arch: Arch, extra_packages: list[str] = [], clean_chroot: def setup_sources(package: Package, chroot: Chroot, pkgbuilds_dir: str = None): pkgbuilds_dir = pkgbuilds_dir if pkgbuilds_dir else config.get_path('pkgbuilds') makepkg_setup_args = [ - '--config', - os.path.join(chroot.path, 'etc/makepkg.conf'), '--nobuild', '--holdver', '--nodeps', ] logging.info(f'Setting up sources for {package.path} in {chroot.name}') - result = subprocess.run( - [os.path.join(chroot.path, 'usr/bin/makepkg')] + makepkg_cmd[1:] + makepkg_setup_args, - env=makepkg_cross_env | {'PACMAN_CHROOT': chroot.path}, - cwd=os.path.join(pkgbuilds_dir, package.path), - ) + result = chroot.run_cmd(makepkg_cmd + makepkg_setup_args, cwd=package.path) if result.returncode != 0: raise Exception(f'Failed to check sources for {package.path}') @@ -493,9 +487,9 @@ def build_package( setup_sources(package, build_root) makepkg_conf_absolute = os.path.join('/', makepkg_conf_path) - build_cmd = f'cd {package.path} && makepkg --config {makepkg_conf_absolute} --needed --noconfirm --ignorearch {" ".join(makepkg_compile_opts)}' + build_cmd = f'makepkg --config {makepkg_conf_absolute} --needed --noconfirm --ignorearch {" ".join(makepkg_compile_opts)}' logging.debug(f'Building: Running {build_cmd}') - result = build_root.run_cmd(build_cmd, inner_env=env) + result = build_root.run_cmd(build_cmd, inner_env=env, cwd=package.path) if result.returncode != 0: raise Exception(f'Failed to compile package {package.path}')