summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPearu Peterson <pearu.peterson@gmail.com>2006-01-27 12:21:07 +0000
committerPearu Peterson <pearu.peterson@gmail.com>2006-01-27 12:21:07 +0000
commit6bf1820ba23583a96331dedc07338dc2ee78564b (patch)
treed4793bf8f81721644d0e0ebeddaba208bf85e954
parentb7cc1f63d4bd51ea8df16305d8213a10d7493f3a (diff)
downloadnumpy-6bf1820ba23583a96331dedc07338dc2ee78564b.tar.gz
Added data_files generator support - removed a piece of core.setup function.
-rw-r--r--numpy/distutils/command/build_src.py38
-rw-r--r--numpy/distutils/core.py10
-rw-r--r--numpy/distutils/misc_util.py4
3 files changed, 39 insertions, 13 deletions
diff --git a/numpy/distutils/command/build_src.py b/numpy/distutils/command/build_src.py
index 368cfdf77..13548452f 100644
--- a/numpy/distutils/command/build_src.py
+++ b/numpy/distutils/command/build_src.py
@@ -61,6 +61,7 @@ class build_src(build_ext.build_ext):
self.extensions = self.distribution.ext_modules
self.libraries = self.distribution.libraries or []
self.py_modules = self.distribution.py_modules or []
+ self.data_files = self.distribution.data_files or []
if self.build_src is None:
self.build_src = os.path.join(self.build_base, 'src')
@@ -102,9 +103,46 @@ class build_src(build_ext.build_ext):
for ext in self.extensions:
self.build_extension_sources(ext)
+ self.build_data_files_sources()
+
+ return
+
+ def build_data_files_sources(self):
+ if not self.data_files:
+ return
+ log.info('building data_files sources')
+ from numpy.distutils.misc_util import get_data_files
+ new_data_files = []
+ for data in self.data_files:
+ if isinstance(data,str):
+ new_data_files.append(data)
+ elif isinstance(data,tuple):
+ d,files = data
+ funcs = filter(callable,files)
+ files = filter(lambda f:not callable(f), files)
+ for f in funcs:
+ if f.func_code.co_argcount==1:
+ s = f(os.path.join(self.build_src,d))
+ else:
+ s = f()
+ if s is not None:
+ if isinstance(s,list):
+ files.extend(s)
+ elif isinstance(s,str):
+ files.append(s)
+ else:
+ raise TypeError,`s`
+ filenames = get_data_files((d,files))
+ new_data_files.append((d, filenames))
+ else:
+ raise
+ self.data_files[:] = new_data_files
return
def build_py_modules_sources(self):
+ if not self.py_modules:
+ return
+ log.info('building py_modules sources')
new_py_modules = []
for source in self.py_modules:
if type(source) is type(()) and len(source)==3:
diff --git a/numpy/distutils/core.py b/numpy/distutils/core.py
index 724e1517f..d246448ed 100644
--- a/numpy/distutils/core.py
+++ b/numpy/distutils/core.py
@@ -80,16 +80,6 @@ def setup(**attr):
and not new_attr.has_key('headers'):
new_attr['headers'] = []
- # Expand directories in data_files to files
- if new_attr.has_key('data_files'):
- new_data_files = []
- for data in new_attr['data_files']:
- if type(data) is types.StringType:
- new_data_files.append(get_data_files(data)[0])
- else:
- new_data_files.append((data[0],get_data_files(data)))
- new_attr['data_files'] = new_data_files
-
return old_setup(**new_attr)
def _check_append_library(libraries, item):
diff --git a/numpy/distutils/misc_util.py b/numpy/distutils/misc_util.py
index d17a31c6d..dd2a11d2a 100644
--- a/numpy/distutils/misc_util.py
+++ b/numpy/distutils/misc_util.py
@@ -249,9 +249,7 @@ def get_data_files(data):
filenames = []
for s in sources:
if callable(s):
- s = s()
- if s is None:
- continue
+ continue
if is_local_src_dir(s):
os.path.walk(s,_gsf_visit_func,filenames)
elif type(s) is type(''):