aboutsummaryrefslogtreecommitdiffstats
path: root/build_scripts
diff options
context:
space:
mode:
authorFriedemann Kleint <Friedemann.Kleint@qt.io>2022-12-05 14:52:54 +0100
committerFriedemann Kleint <Friedemann.Kleint@qt.io>2022-12-05 16:19:49 +0100
commite77bfd58a8f1103574fe8a5496334d97196e9b5a (patch)
treee363499115e8736a40a8e1e2c0696cad7229b882 /build_scripts
parent014cbfa6916f99e75667f636cb6834063de0551b (diff)
build system: Refactor helper backtick()
Use a context manager to dispose of the process properly and remove Python2 code path. Pick-to: 6.4 6.2 Change-Id: Ibad035078433a75a944dc10f49f404e9e63614af Reviewed-by: Shyamnath Premnadh <Shyamnath.Premnadh@qt.io> Reviewed-by: Christian Tismer <tismer@stackless.com>
Diffstat (limited to 'build_scripts')
-rw-r--r--build_scripts/utils.py30
1 files changed, 14 insertions, 16 deletions
diff --git a/build_scripts/utils.py b/build_scripts/utils.py
index 23723dc96..b79c2294f 100644
--- a/build_scripts/utils.py
+++ b/build_scripts/utils.py
@@ -486,8 +486,8 @@ def get_environment_from_batch_command(env_cmd, initial=None):
def back_tick(cmd, ret_err=False):
"""
- Run command `cmd`, return stdout, or stdout, stderr,
- return_code if `ret_err` is True.
+ Run command `cmd`, return stdout, or (stdout, stderr,
+ return_code) if `ret_err` is True.
Parameters
----------
@@ -511,22 +511,20 @@ def back_tick(cmd, ret_err=False):
Raises RuntimeError if command returns non-zero exit code when ret_err
isn't set.
"""
- proc = subprocess.Popen(cmd, stdout=subprocess.PIPE, stderr=subprocess.PIPE, shell=True)
- out, err = proc.communicate()
- if not isinstance(out, str):
- # python 3
- out = out.decode()
- err = err.decode()
- retcode = proc.returncode
- if retcode is None and not ret_err:
- proc.terminate()
- raise RuntimeError(f"{cmd} process did not terminate")
- if retcode != 0 and not ret_err:
- raise RuntimeError(f"{cmd} process returned code {retcode}\n*** {err}")
- out = out.strip()
+ with subprocess.Popen(cmd, stdout=subprocess.PIPE,
+ stderr=subprocess.PIPE, shell=True) as proc:
+ out_bytes, err_bytes = proc.communicate()
+ out = out_bytes.decode().strip()
+ err = err_bytes.decode().strip()
+ retcode = proc.returncode
+ if retcode is None and not ret_err:
+ proc.terminate()
+ raise RuntimeError(f"{cmd} process did not terminate")
+ if retcode != 0 and not ret_err:
+ raise RuntimeError(f"{cmd} process returned code {retcode}\n*** {err}")
if not ret_err:
return out
- return out, err.strip(), retcode
+ return out, err, retcode
MACOS_OUTNAME_RE = re.compile(r'\(compatibility version [\d.]+, current version [\d.]+\)')