diff options
author | Jussi Pakkanen <jpakkane@gmail.com> | 2021-06-02 17:13:04 +0300 |
---|---|---|
committer | Jussi Pakkanen <jpakkane@gmail.com> | 2021-06-02 17:13:04 +0300 |
commit | 489bb45e0d99ca4c49a8515b2c526b91f42939e6 (patch) | |
tree | 1eb3a9b32fe00dc0152b0c763129cce08b775927 | |
parent | 16c3f033943206b4b90532a9656f64678e87a7ec (diff) | |
download | meson-scanbuildtempdir.zip meson-scanbuildtempdir.tar.gz meson-scanbuildtempdir.tar.bz2 |
Do not delete workdir in case scan-build fails.scanbuildtempdir
-rw-r--r-- | mesonbuild/scripts/scanbuild.py | 21 |
1 files changed, 13 insertions, 8 deletions
diff --git a/mesonbuild/scripts/scanbuild.py b/mesonbuild/scripts/scanbuild.py index 0736b3f..bb8e30c 100644 --- a/mesonbuild/scripts/scanbuild.py +++ b/mesonbuild/scripts/scanbuild.py @@ -17,20 +17,25 @@ import shutil import tempfile from ..environment import detect_ninja, detect_scanbuild from ..coredata import get_cmd_line_file, CmdLineFileParser +from ..mesonlib import windows_proof_rmtree from pathlib import Path import typing as T from ast import literal_eval import os def scanbuild(exelist: T.List[str], srcdir: Path, blddir: Path, privdir: Path, logdir: Path, args: T.List[str]) -> int: - with tempfile.TemporaryDirectory(dir=str(privdir)) as scandir: - meson_cmd = exelist + args - build_cmd = exelist + ['-o', str(logdir)] + detect_ninja() + ['-C', scandir] - rc = subprocess.call(meson_cmd + [str(srcdir), scandir]) - if rc != 0: - return rc - return subprocess.call(build_cmd) - + # In case of problems leave the temp directory around + # so it can be debugged. + scandir = tempfile.mkdtemp(dir=str(privdir)) + meson_cmd = exelist + args + build_cmd = exelist + ['-o', str(logdir)] + detect_ninja() + ['-C', scandir] + rc = subprocess.call(meson_cmd + [str(srcdir), scandir]) + if rc != 0: + return rc + rc = subprocess.call(build_cmd) + if rc == 0: + windows_proof_rmtree(scandir) + return rc def run(args: T.List[str]) -> int: srcdir = Path(args[0]) |