* fix 5492 with cleaner code

* remove argparse import

* replace list(map( with list comprehension

* pass str rather than Path to get_cmd_line_file
pull/7914/merge
Elliot 4 years ago committed by GitHub
parent 505b5b2391
commit ff50f724bb
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
  1. 4
      mesonbuild/coredata.py
  2. 24
      mesonbuild/scripts/scanbuild.py

@ -970,9 +970,9 @@ def write_cmd_line_file(build_dir: str, options: argparse.Namespace) -> None:
properties = OrderedDict()
if options.cross_file:
properties['cross_file'] = options.cross_file
properties['cross_file'] = [os.path.abspath(f) for f in options.cross_file]
if options.native_file:
properties['native_file'] = options.native_file
properties['native_file'] = [os.path.abspath(f) for f in options.native_file]
config['options'] = cmd_line_options_to_string(options)
config['properties'] = properties

@ -16,9 +16,11 @@ import subprocess
import shutil
import tempfile
from ..environment import detect_ninja, detect_scanbuild
from ..coredata import get_cmd_line_file, CmdLineFileParser
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:
@ -32,15 +34,27 @@ def scanbuild(exelist: T.List[str], srcdir: Path, blddir: Path, privdir: Path, l
def run(args: T.List[str]) -> int:
srcdir = Path(args[0])
blddir = Path(args[1])
bldpath = Path(args[1])
blddir = args[1]
meson_cmd = args[2:]
privdir = blddir / 'meson-private'
logdir = blddir / 'meson-logs' / 'scanbuild'
privdir = bldpath / 'meson-private'
logdir = bldpath / 'meson-logs' / 'scanbuild'
shutil.rmtree(str(logdir), ignore_errors=True)
# if any cross or native files are specified we should use them
cmd = get_cmd_line_file(blddir)
data = CmdLineFileParser()
data.read(cmd)
if 'cross_file' in data['properties']:
meson_cmd.extend([f'--cross-file={os.path.abspath(f)}' for f in literal_eval(data['properties']['cross_file'])])
if 'native_file' in data['properties']:
meson_cmd.extend([f'--native-file={os.path.abspath(f)}' for f in literal_eval(data['properties']['native_file'])])
exelist = detect_scanbuild()
if not exelist:
print('Could not execute scan-build "%s"' % ' '.join(exelist))
return 1
return scanbuild(exelist, srcdir, blddir, privdir, logdir, meson_cmd)
return scanbuild(exelist, srcdir, bldpath, privdir, logdir, meson_cmd)

Loading…
Cancel
Save