summaryrefslogtreecommitdiff
path: root/numpy/distutils
diff options
context:
space:
mode:
authorHector Martin <marcan@marcan.st>2021-10-14 14:58:52 +0900
committerHector Martin <marcan@marcan.st>2021-10-14 15:02:27 +0900
commit7dcf62379f41407d8f9583d1c2016e3d8ec48384 (patch)
treeda5da87c3bc7eaa04e7e48058b0e06b711652630 /numpy/distutils
parente8692223ffb675dca714bf13bb8f19e73b273095 (diff)
downloadnumpy-7dcf62379f41407d8f9583d1c2016e3d8ec48384.tar.gz
MAINT: Fix issue with C compiler args containing spaces
Instead of doing a dumb string split, use shlex to make sure args containing spaces are handled properly.
Diffstat (limited to 'numpy/distutils')
-rw-r--r--numpy/distutils/unixccompiler.py13
1 files changed, 7 insertions, 6 deletions
diff --git a/numpy/distutils/unixccompiler.py b/numpy/distutils/unixccompiler.py
index 733a9fc50..4884960fd 100644
--- a/numpy/distutils/unixccompiler.py
+++ b/numpy/distutils/unixccompiler.py
@@ -5,6 +5,7 @@ unixccompiler - can handle very long argument lists for ar.
import os
import sys
import subprocess
+import shlex
from distutils.errors import CompileError, DistutilsExecError, LibError
from distutils.unixccompiler import UnixCCompiler
@@ -30,15 +31,15 @@ def UnixCCompiler__compile(self, obj, src, ext, cc_args, extra_postargs, pp_opts
if 'OPT' in os.environ:
# XXX who uses this?
from sysconfig import get_config_vars
- opt = " ".join(os.environ['OPT'].split())
- gcv_opt = " ".join(get_config_vars('OPT')[0].split())
- ccomp_s = " ".join(self.compiler_so)
+ opt = shlex.join(shlex.split(os.environ['OPT']))
+ gcv_opt = shlex.join(shlex.split(get_config_vars('OPT')[0]))
+ ccomp_s = shlex.join(self.compiler_so)
if opt not in ccomp_s:
ccomp_s = ccomp_s.replace(gcv_opt, opt)
- self.compiler_so = ccomp_s.split()
- llink_s = " ".join(self.linker_so)
+ self.compiler_so = shlex.split(ccomp_s)
+ llink_s = shlex.join(self.linker_so)
if opt not in llink_s:
- self.linker_so = llink_s.split() + opt.split()
+ self.linker_so = self.linker_so + shlex.split(opt)
display = '%s: %s' % (os.path.basename(self.compiler_so[0]), src)