scanbuild: Split SCANBUILD using shlex
This allows invocations like SCANBUILD="scan-build --status-bugs" ninja scan-build Closes: #4334
This commit is contained in:
parent
ce2eed32bc
commit
1e7aea65e6
|
@ -13,16 +13,17 @@
|
||||||
# limitations under the License.
|
# limitations under the License.
|
||||||
|
|
||||||
import os
|
import os
|
||||||
|
import shlex
|
||||||
import subprocess
|
import subprocess
|
||||||
import shutil
|
import shutil
|
||||||
import tempfile
|
import tempfile
|
||||||
from ..environment import detect_ninja
|
from ..environment import detect_ninja
|
||||||
from ..mesonlib import Popen_safe
|
from ..mesonlib import Popen_safe
|
||||||
|
|
||||||
def scanbuild(exename, srcdir, blddir, privdir, logdir, args):
|
def scanbuild(exelist, srcdir, blddir, privdir, logdir, args):
|
||||||
with tempfile.TemporaryDirectory(dir=privdir) as scandir:
|
with tempfile.TemporaryDirectory(dir=privdir) as scandir:
|
||||||
meson_cmd = [exename] + args
|
meson_cmd = exelist + args
|
||||||
build_cmd = [exename, '-o', logdir, detect_ninja(), '-C', scandir]
|
build_cmd = exelist + ['-o', logdir, detect_ninja(), '-C', scandir]
|
||||||
rc = subprocess.call(meson_cmd + [srcdir, scandir])
|
rc = subprocess.call(meson_cmd + [srcdir, scandir])
|
||||||
if rc != 0:
|
if rc != 0:
|
||||||
return rc
|
return rc
|
||||||
|
@ -58,8 +59,14 @@ def run(args):
|
||||||
toolname = tool
|
toolname = tool
|
||||||
break
|
break
|
||||||
|
|
||||||
exename = os.environ.get('SCANBUILD', toolname)
|
if 'SCANBUILD' in os.environ:
|
||||||
if not shutil.which(exename):
|
exelist = shlex.split(os.environ['SCANBUILD'])
|
||||||
print('Scan-build not installed.')
|
else:
|
||||||
|
exelist = [toolname]
|
||||||
|
|
||||||
|
try:
|
||||||
|
Popen_safe(exelist + ['--help'])
|
||||||
|
except OSError:
|
||||||
|
print('Could not execute scan-build "%s"' % ' '.join(exelist))
|
||||||
return 1
|
return 1
|
||||||
return scanbuild(exename, srcdir, blddir, privdir, logdir, meson_cmd)
|
return scanbuild(exelist, srcdir, blddir, privdir, logdir, meson_cmd)
|
||||||
|
|
Loading…
Reference in New Issue