aboutsummaryrefslogtreecommitdiff
path: root/mesonbuild/dependencies
diff options
context:
space:
mode:
authorAleksey Gurtovoy <agurtovoy@acm.org>2019-08-09 16:06:47 -0500
committerJussi Pakkanen <jpakkane@gmail.com>2019-09-05 23:42:47 +0300
commit75daed27bc4e363696157617c7461414fc4e707b (patch)
tree2863934de82e0a7cc6a3dcd9ee23b4c4e378c550 /mesonbuild/dependencies
parentcaec875fe1922b40037e1fd9229433ede64f9f25 (diff)
downloadmeson-75daed27bc4e363696157617c7461414fc4e707b.zip
meson-75daed27bc4e363696157617c7461414fc4e707b.tar.gz
meson-75daed27bc4e363696157617c7461414fc4e707b.tar.bz2
mesonlib.split_args/quote_arg/join_args
Diffstat (limited to 'mesonbuild/dependencies')
-rw-r--r--mesonbuild/dependencies/base.py18
-rw-r--r--mesonbuild/dependencies/misc.py8
2 files changed, 14 insertions, 12 deletions
diff --git a/mesonbuild/dependencies/base.py b/mesonbuild/dependencies/base.py
index e517fea..b0f24c8 100644
--- a/mesonbuild/dependencies/base.py
+++ b/mesonbuild/dependencies/base.py
@@ -34,7 +34,7 @@ from ..compilers import clib_langs
from ..environment import BinaryTable, Environment, MachineInfo
from ..cmake import CMakeExecutor, CMakeTraceParser, CMakeException
from ..mesonlib import MachineChoice, MesonException, OrderedSet, PerMachine
-from ..mesonlib import Popen_safe, version_compare_many, version_compare, listify, stringlistify, extract_as_list
+from ..mesonlib import Popen_safe, version_compare_many, version_compare, listify, stringlistify, extract_as_list, split_args
from ..mesonlib import Version, LibType
# These must be defined in this file to avoid cyclical references.
@@ -490,16 +490,13 @@ class ConfigToolDependency(ExternalDependency):
def get_config_value(self, args, stage):
p, out, err = Popen_safe(self.config + args)
- # This is required to keep shlex from stripping path separators on
- # Windows. Also, don't put escape sequences in config values, okay?
- out = out.replace('\\', '\\\\')
if p.returncode != 0:
if self.required:
raise DependencyException(
'Could not generate {} for {}.\n{}'.format(
stage, self.name, err))
return []
- return shlex.split(out)
+ return split_args(out)
@staticmethod
def get_methods():
@@ -697,6 +694,11 @@ class PkgConfigDependency(ExternalDependency):
converted.append(arg)
return converted
+ def _split_args(self, cmd):
+ # pkg-config paths follow Unix conventions, even on Windows; split the
+ # output using shlex.split rather than mesonlib.split_args
+ return shlex.split(cmd)
+
def _set_cargs(self):
env = None
if self.language == 'fortran':
@@ -708,7 +710,7 @@ class PkgConfigDependency(ExternalDependency):
if ret != 0:
raise DependencyException('Could not generate cargs for %s:\n\n%s' %
(self.name, out))
- self.compile_args = self._convert_mingw_paths(shlex.split(out))
+ self.compile_args = self._convert_mingw_paths(self._split_args(out))
def _search_libs(self, out, out_raw):
'''
@@ -737,7 +739,7 @@ class PkgConfigDependency(ExternalDependency):
# always searched first.
prefix_libpaths = OrderedSet()
# We also store this raw_link_args on the object later
- raw_link_args = self._convert_mingw_paths(shlex.split(out_raw))
+ raw_link_args = self._convert_mingw_paths(self._split_args(out_raw))
for arg in raw_link_args:
if arg.startswith('-L') and not arg.startswith(('-L-l', '-L-L')):
path = arg[2:]
@@ -746,7 +748,7 @@ class PkgConfigDependency(ExternalDependency):
path = os.path.join(self.env.get_build_dir(), path)
prefix_libpaths.add(path)
system_libpaths = OrderedSet()
- full_args = self._convert_mingw_paths(shlex.split(out))
+ full_args = self._convert_mingw_paths(self._split_args(out))
for arg in full_args:
if arg.startswith(('-L-l', '-L-L')):
# These are D language arguments, not library paths
diff --git a/mesonbuild/dependencies/misc.py b/mesonbuild/dependencies/misc.py
index 53c3747..23a283f 100644
--- a/mesonbuild/dependencies/misc.py
+++ b/mesonbuild/dependencies/misc.py
@@ -18,11 +18,11 @@ from pathlib import Path
import functools
import os
import re
-import shlex
import sysconfig
from .. import mlog
from .. import mesonlib
+from ..mesonlib import split_args
from ..environment import detect_cpu_family
from .base import (
@@ -277,7 +277,7 @@ class MPIDependency(ExternalDependency):
mlog.debug(mlog.bold('Standard output\n'), o)
mlog.debug(mlog.bold('Standard error\n'), e)
return
- cargs = shlex.split(o)
+ cargs = split_args(o)
cmd = prog.get_command() + ['--showme:link']
p, o, e = mesonlib.Popen_safe(cmd)
@@ -287,7 +287,7 @@ class MPIDependency(ExternalDependency):
mlog.debug(mlog.bold('Standard output\n'), o)
mlog.debug(mlog.bold('Standard error\n'), e)
return
- libs = shlex.split(o)
+ libs = split_args(o)
cmd = prog.get_command() + ['--showme:version']
p, o, e = mesonlib.Popen_safe(cmd)
@@ -316,7 +316,7 @@ class MPIDependency(ExternalDependency):
mlog.debug(mlog.bold('Standard output\n'), o)
mlog.debug(mlog.bold('Standard error\n'), e)
return
- args = shlex.split(o)
+ args = split_args(o)
version = None