From fa06dfa5575841bb60dd83bc46426f1a7d737b9b Mon Sep 17 00:00:00 2001 From: Helmut Grohne Date: Tue, 6 Jul 2021 14:02:29 +0200 Subject: pbuilder: use an ExitStack Doing so bears three advantages: * Adding more context managers - especially conditional ones - becomes easier. * Context managers can be delayed until the point where they're actually needed without adding to indentation. * We get rid of two local variables. Less state in your head. --- mdbp/pbuilder.py | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) (limited to 'mdbp/pbuilder.py') diff --git a/mdbp/pbuilder.py b/mdbp/pbuilder.py index fb5c4fe..052dce8 100644 --- a/mdbp/pbuilder.py +++ b/mdbp/pbuilder.py @@ -3,6 +3,7 @@ """mdbp backend using pbuilder""" import argparse +import contextlib import os import pathlib import shlex @@ -78,8 +79,9 @@ def main() -> None: if not enablelog: cmd.extend(["--loglevel", "E"]) apt_get = ["apt-get", "-oAPT::Keep-Downloaded-Path=false", "--yes"] - with tempfile.TemporaryDirectory() as hookdirn, get_dsc(build) as dscpath: - hookdir = pathlib.Path(hookdirn) + with contextlib.ExitStack() as stack: + hookdir = pathlib.Path( + stack.enter_context(tempfile.TemporaryDirectory())) hook = hookdir / "D50aptupdate" hook.write_text("""#/bin/sh set -e @@ -95,7 +97,8 @@ set -e runuser -u pbuilder -- lintian %s "${BUILDDIR:-/tmp/buildd}"/*.changes """ % (shlex.join(apt_get), shlex.join(build["lintian"].get("options", [])))) hook.chmod(0o755) - cmd.extend(["--hookdir", hookdirn, *args.pbuilderopts, str(dscpath)]) + cmd.extend(["--hookdir", str(hookdir), *args.pbuilderopts, + str(stack.enter_context(get_dsc(build)))]) ret = subprocess.call(cmd, env=compute_env(build), stdout=None if enablelog else subprocess.DEVNULL, -- cgit v1.2.3