Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Commit dfcf45c

Browse files
committed
Added f2py2e as scipy.f2py, improved scipy.distutils, fixed setup.py files, etc
1 parent 615d814 commit dfcf45c

12 files changed

Lines changed: 410 additions & 148 deletions

File tree

MANIFEST.in

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,13 @@
11
recursive-include . *.txt
22
include MANIFEST.in
3-
include scipy/f2py2e/f2py.1
4-
recursive-include scipy/f2py2e *.cfg
5-
recursive-include scipy/f2py2e *.py
6-
recursive-include scipy/f2py2e/src fortranobject.c fortranobject.h
7-
recursive-include scipy/f2py2e/tests *.py
8-
recursive-include scipy/f2py2e/tests/mixed *.f *.f90
9-
#recursive-include scipy/f2py2e/doc *.py *.txt *.tex *.html Makefile
10-
recursive-include scipy/f2py2e/docs *.txt *.html *.dat *.f *.f90 *.pyf setup_example.py f2py_style.css
3+
#include scipy/f2py2e/f2py.1
4+
#recursive-include scipy/f2py2e *.cfg
5+
#recursive-include scipy/f2py2e *.py
6+
#recursive-include scipy/f2py2e/src fortranobject.c fortranobject.h
7+
#recursive-include scipy/f2py2e/tests *.py
8+
#recursive-include scipy/f2py2e/tests/mixed *.f *.f90
9+
##recursive-include scipy/f2py2e/doc *.py *.txt *.tex *.html Makefile
10+
#recursive-include scipy/f2py2e/docs *.txt *.html *.dat *.f *.f90 *.pyf setup_example.py f2py_style.css
1111
recursive-include scipy/corelib/mtrand *.c *.h *.pyx *.pxi
1212
prune scipy/base/include/scipy
1313
recursive-include scipy/base/include/scipy *object.h

scipy/base/setup.py

Lines changed: 24 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -20,11 +20,8 @@ def configuration(parent_package='',top_path=None):
2020
open(generate_umath_py,'U'),generate_umath_py,
2121
('.py','U',1))
2222

23-
package_include = join(local_dir, 'include', 'scipy')
24-
2523
def generate_config_h(ext, build_dir):
26-
#target = join(build_dir,'config.h')
27-
target = join(package_include, 'config.h')
24+
target = join(build_dir,'config.h')
2825
if newer(__file__,target):
2926
config_cmd = config.get_config_cmd()
3027
print 'Generating',target
@@ -83,34 +80,37 @@ def generate_config_h(ext, build_dir):
8380
target_f.close()
8481

8582
ext.libraries.extend(mathlibs)
86-
ext.include_dirs.append(os.path.dirname(target))
83+
84+
incl_dir = os.path.dirname(target)
85+
if incl_dir not in config.scipy_include_dirs:
86+
config.scipy_include_dirs.append(incl_dir)
87+
88+
#if incl_dir not in ext.include_dirs:
89+
# ext.include_dirs.append(incl_dir)
90+
8791
config.add_data_files(target)
8892
return target
8993

9094
def generate_array_api(ext,build_dir):
91-
#target = join(build_dir,'__multiarray_api.h')
92-
target = join(package_include, '__multiarray_api.h')
95+
target = join(build_dir,'__multiarray_api.h')
9396
script = join(codegen_dir,'generate_array_api.py')
9497
if newer(script,target):
9598
script = os.path.abspath(script)
9699
old_cwd = os.getcwd()
97-
#os.chdir(build_dir)
98-
os.chdir(package_include)
100+
os.chdir(build_dir)
99101
print 'executing',script
100102
execfile(script,{},{})
101103
os.chdir(old_cwd)
102104
config.add_data_files(target)
103105
return target
104106

105107
def generate_ufunc_api(ext,build_dir):
106-
#target = join(build_dir,'__ufunc_api.h')
107-
target = join(package_include, '__ufunc_api.h')
108+
target = join(build_dir,'__ufunc_api.h')
108109
script = join(codegen_dir,'generate_ufunc_api.py')
109110
if newer(script,target):
110111
script = os.path.abspath(script)
111112
old_cwd = os.getcwd()
112-
#os.chdir(build_dir)
113-
os.chdir(package_include)
113+
os.chdir(build_dir)
114114
print 'executing',script
115115
execfile(script,{},{})
116116
os.chdir(old_cwd)
@@ -127,12 +127,10 @@ def generate_umath_c(ext,build_dir):
127127
f.close()
128128
return []
129129

130-
config.add_include_dirs('include','src')
131-
#config.add_headers(join('include','scipy','*.h'),name='scipy')
132-
config.add_data_dir(join('include', 'scipy'))
133-
from scipy.distutils.command.build_src import appendpath
134-
print "****%s****" % config.local_path
135-
config.add_include_dirs(appendpath('build/src',join(config.local_path,'Src')))
130+
config.add_headers(('scipy',join('include','scipy','*.h')))
131+
config.add_include_dirs('src')
132+
133+
config.scipy_include_dirs.extend(config.paths('include'))
136134

137135
deps = [join('src','arrayobject.c'),
138136
join('src','arraymethods.c'),
@@ -149,7 +147,7 @@ def generate_umath_c(ext,build_dir):
149147
join(codegen_dir,'generate_array_api.py'),
150148
join('*.py')
151149
],
152-
depends = deps
150+
depends = deps,
153151
)
154152

155153
config.add_extension('umath',
@@ -165,10 +163,14 @@ def generate_umath_c(ext,build_dir):
165163
join(codegen_dir,'generate_ufunc_api.py')
166164
]+deps,
167165
)
168-
config.add_include_dirs(appendpath('build/src',config.local_path))
166+
169167
config.add_extension('_compiled_base',
170-
sources=[join('src','_compiled_base.c')],
168+
sources=[join('src','_compiled_base.c'),
169+
generate_config_h,
170+
generate_array_api,
171+
],
171172
)
173+
172174
config.add_data_dir('tests')
173175

174176
return config

scipy/distutils/command/__init__.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,6 @@
66
__revision__ = "$Id: __init__.py,v 1.3 2005/05/16 11:08:49 pearu Exp $"
77

88
distutils_all = [ 'build_py',
9-
'build_scripts',
109
'clean',
1110
'install_lib',
1211
'install_scripts',
@@ -23,6 +22,7 @@
2322
'build_src',
2423
'build_ext',
2524
'build_clib',
25+
'build_scripts',
2626
'install',
2727
'install_data',
2828
'install_headers',

scipy/distutils/command/build_ext.py

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,8 @@
1212

1313
from scipy.distutils import log
1414
from scipy.distutils.misc_util import filter_sources, has_f_sources, \
15-
has_cxx_sources, get_ext_source_files, all_strings
15+
has_cxx_sources, get_ext_source_files, all_strings, \
16+
get_scipy_include_dirs
1617
from distutils.errors import DistutilsFileError
1718

1819
class build_ext (old_build_ext):
@@ -168,13 +169,15 @@ def build_extension(self, ext):
168169
kws = {'depends':ext.depends}
169170
output_dir = self.build_temp
170171

172+
include_dirs = ext.include_dirs + get_scipy_include_dirs()
173+
171174
c_objects = []
172175
if c_sources:
173176
log.info("compiling C sources")
174177
c_objects = self.compiler.compile(c_sources,
175178
output_dir=output_dir,
176179
macros=macros,
177-
include_dirs=ext.include_dirs,
180+
include_dirs=include_dirs,
178181
debug=self.debug,
179182
extra_postargs=extra_args,
180183
**kws)
@@ -187,7 +190,7 @@ def build_extension(self, ext):
187190
c_objects += self.compiler.compile(cxx_sources,
188191
output_dir=output_dir,
189192
macros=macros,
190-
include_dirs=ext.include_dirs,
193+
include_dirs=include_dirs,
191194
debug=self.debug,
192195
extra_postargs=extra_args,
193196
**kws)
@@ -197,7 +200,6 @@ def build_extension(self, ext):
197200

198201
if f_sources or fmodule_sources:
199202
extra_postargs = []
200-
include_dirs = ext.include_dirs[:]
201203
module_dirs = ext.module_dirs[:]
202204

203205
#if self.fcompiler.compiler_type=='ibm':
Lines changed: 44 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,44 @@
1+
""" Modified version of build_scripts that handles building scripts from functions.
2+
"""
3+
4+
from distutils.command.build_scripts import build_scripts as old_build_scripts
5+
from scipy.distutils import log
6+
7+
class build_scripts(old_build_scripts):
8+
9+
def generate_scripts(self, scripts):
10+
new_scripts = []
11+
func_scripts = []
12+
for script in scripts:
13+
if type(script) is type(''):
14+
new_scripts.append(script)
15+
else:
16+
func_scripts.append(script)
17+
if not func_scripts:
18+
return new_scripts
19+
20+
build_dir = self.build_dir
21+
self.mkpath(build_dir)
22+
for func in func_scripts:
23+
script = func(build_dir)
24+
if not script:
25+
continue
26+
if type(script) is type([]):
27+
[log.info(" adding '%s' to scripts" % (s)) for s in script]
28+
new_scripts.extend(script)
29+
else:
30+
log.info(" adding '%s' to scripts" % (script))
31+
new_scripts.append(script)
32+
return new_scripts
33+
34+
def run (self):
35+
if not self.scripts:
36+
return
37+
38+
self.scripts = self.generate_scripts(self.scripts)
39+
40+
return old_build_scripts.run(self)
41+
42+
def get_source_files(self):
43+
from scipy.distutils.misc_util import get_script_files
44+
return get_script_files(self.scripts)

scipy/distutils/command/build_src.py

Lines changed: 10 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -179,14 +179,14 @@ def generate_sources(self, sources, extension):
179179
else:
180180
if type(extension) is type(()):
181181
name = extension[0]
182-
if not extension[1].has_key('include_dirs'):
183-
extension[1]['include_dirs'] = []
184-
incl_dirs = extension[1]['include_dirs']
182+
# if not extension[1].has_key('include_dirs'):
183+
# extension[1]['include_dirs'] = []
184+
# incl_dirs = extension[1]['include_dirs']
185185
else:
186186
name = extension.name
187-
incl_dirs = extension.include_dirs
188-
if self.build_src not in incl_dirs:
189-
incl_dirs.append(self.build_src)
187+
# incl_dirs = extension.include_dirs
188+
#if self.build_src not in incl_dirs:
189+
# incl_dirs.append(self.build_src)
190190
build_dir = os.path.join(*([self.build_src]\
191191
+name.split('.')[:-1]))
192192
self.mkpath(build_dir)
@@ -250,6 +250,7 @@ def template_sources(self, sources, extension):
250250
if _header_ext_match(target_file):
251251
d = os.path.dirname(target_file)
252252
if d not in include_dirs:
253+
log.info(" adding '%s' to include_dirs." % (d))
253254
include_dirs.append(d)
254255
new_sources.append(target_file)
255256
else:
@@ -328,7 +329,7 @@ def f2py_sources(self, sources, extension):
328329
if (self.force or newer_group(depends, target_file,'newer')) \
329330
and not skip_f2py:
330331
log.info("f2py: %s" % (source))
331-
import f2py2e
332+
import scipy.f2py as f2py2e
332333
f2py2e.run_main(f2py_options + ['--build-dir',target_dir,source])
333334
else:
334335
log.debug(" skipping '%s' f2py interface (up-to-date)" % (source))
@@ -343,7 +344,7 @@ def f2py_sources(self, sources, extension):
343344
depends = f_sources + extension.depends
344345
if (self.force or newer_group(depends, target_file, 'newer')) \
345346
and not skip_f2py:
346-
import f2py2e
347+
import scipy.f2py as f2py2e
347348
log.info("f2py:> %s" % (target_file))
348349
self.mkpath(target_dir)
349350
f2py2e.run_main(f2py_options + ['--lower',
@@ -365,7 +366,7 @@ def f2py_sources(self, sources, extension):
365366
extension.include_dirs.append(self.build_src)
366367

367368
if not skip_f2py:
368-
import f2py2e
369+
import scipy.f2py as f2py2e
369370
d = os.path.dirname(f2py2e.__file__)
370371
source_c = os.path.join(d,'src','fortranobject.c')
371372
source_h = os.path.join(d,'src','fortranobject.h')

scipy/distutils/core.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@
1111
from scipy.distutils.command import build_ext
1212
from scipy.distutils.command import build_clib
1313
from scipy.distutils.command import build_src
14+
from scipy.distutils.command import build_scripts
1415
from scipy.distutils.command import sdist
1516
from scipy.distutils.command import install_data
1617
from scipy.distutils.command import install_headers
@@ -20,6 +21,7 @@
2021

2122
scipy_cmdclass = {'build': build.build,
2223
'build_src': build_src.build_src,
24+
'build_scripts': build_scripts.build_scripts,
2325
'config_fc': config_compiler.config_fc,
2426
'config': config.config,
2527
'build_ext': build_ext.build_ext,

0 commit comments

Comments
 (0)