summaryrefslogtreecommitdiff
path: root/numpy/distutils/command/build_src.py
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 /numpy/distutils/command/build_src.py
parentb7cc1f63d4bd51ea8df16305d8213a10d7493f3a (diff)
downloadnumpy-6bf1820ba23583a96331dedc07338dc2ee78564b.tar.gz
Added data_files generator support - removed a piece of core.setup function.
Diffstat (limited to 'numpy/distutils/command/build_src.py')
-rw-r--r--numpy/distutils/command/build_src.py38
1 files changed, 38 insertions, 0 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: