Skip to content

Commit 4750ea2

Browse files
committed
setup: Do not invoke sed with os.system, use re.sub() instead
1 parent 697e267 commit 4750ea2

File tree

1 file changed

+14
-7
lines changed

1 file changed

+14
-7
lines changed

setup.py

Lines changed: 14 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,6 @@
33
import os
44
import sys
55
import re
6-
import shutil
76
import platform
87
import sysconfig
98
from distutils import ccompiler
@@ -78,12 +77,20 @@ def generate_extensions(fftwlibs):
7877
if d == 'double':
7978
continue
8079
p = 'fftw'+prec_map[d]+'_'
81-
for fl in ('fftw_planxfftn.h', 'fftw_planxfftn.c', 'fftw_xfftn.pyx', 'fftw_xfftn.pxd'):
82-
fp = fl.replace('fftw_', p)
83-
shutil.copy(os.path.join(fftwdir, fl), os.path.join(fftwdir, fp))
84-
sedcmd = "sed -i ''" if sys.platform == 'darwin' else "sed -i''"
85-
os.system(sedcmd + " 's/fftw_/{0}/g' {1}".format(p, os.path.join(fftwdir, fp)))
86-
os.system(sedcmd + " 's/double/{0}/g' {1}".format(d, os.path.join(fftwdir, fp)))
80+
for fname in (
81+
'fftw_planxfftn.h',
82+
'fftw_planxfftn.c',
83+
'fftw_xfftn.pyx',
84+
'fftw_xfftn.pxd',
85+
):
86+
src = os.path.join(fftwdir, fname)
87+
dst = os.path.join(fftwdir, fname.replace('fftw_', p))
88+
with open(src, 'r') as fin:
89+
code = fin.read()
90+
code = re.sub('fftw_', p, code)
91+
code = re.sub('double', d, code)
92+
with open(dst, 'w') as fout:
93+
fout.write(code)
8794

8895
def get_extensions(fftwlibs):
8996
"""Return list of extension modules"""

0 commit comments

Comments
 (0)