summaryrefslogtreecommitdiff
path: root/numpy
diff options
context:
space:
mode:
authorPearu Peterson <pearu.peterson@gmail.com>2006-01-24 18:29:48 +0000
committerPearu Peterson <pearu.peterson@gmail.com>2006-01-24 18:29:48 +0000
commit16c544e58ff095cad64b9a57c2f7406b2e768409 (patch)
tree69f39162dd3ed34e897727473eef7806a682dcc1 /numpy
parentb1b17f10d24a62112d843bc1b99aab977f3c6680 (diff)
downloadnumpy-16c544e58ff095cad64b9a57c2f7406b2e768409.tar.gz
__config__.py files are generated through py_modules list. Added get_info method to Configuration.
Diffstat (limited to 'numpy')
-rw-r--r--numpy/distutils/command/build_py.py3
-rw-r--r--numpy/distutils/command/build_src.py37
-rw-r--r--numpy/distutils/misc_util.py28
-rw-r--r--numpy/doc/DISTUTILS.txt2
4 files changed, 53 insertions, 17 deletions
diff --git a/numpy/distutils/command/build_py.py b/numpy/distutils/command/build_py.py
index ab5bd8531..8db743542 100644
--- a/numpy/distutils/command/build_py.py
+++ b/numpy/distutils/command/build_py.py
@@ -8,6 +8,7 @@ class build_py(old_build_py):
# Find build_src generated *.py files.
build_src = self.get_finalized_command('build_src')
- modules += build_src.py_modules.get(package,[])
+ modules += build_src.py_modules_dict.get(package,[])
return modules
+
diff --git a/numpy/distutils/command/build_src.py b/numpy/distutils/command/build_src.py
index 84cf88b96..368cfdf77 100644
--- a/numpy/distutils/command/build_src.py
+++ b/numpy/distutils/command/build_src.py
@@ -40,6 +40,7 @@ class build_src(build_ext.build_ext):
self.extensions = None
self.package = None
self.py_modules = None
+ self.py_modules_dict = None
self.build_src = None
self.build_lib = None
self.build_base = None
@@ -59,15 +60,16 @@ class build_src(build_ext.build_ext):
self.package = self.distribution.ext_package
self.extensions = self.distribution.ext_modules
self.libraries = self.distribution.libraries or []
- self.py_modules = self.distribution.py_modules
+ self.py_modules = self.distribution.py_modules or []
+
if self.build_src is None:
self.build_src = os.path.join(self.build_base, 'src')
if self.inplace is None:
build_ext = self.get_finalized_command('build_ext')
self.inplace = build_ext.inplace
- # py_modules is used in build_py.find_package_modules
- self.py_modules = {}
+ # py_modules_dict is used in build_py.find_package_modules
+ self.py_modules_dict = {}
if self.f2pyflags is None:
self.f2pyflags = []
@@ -89,6 +91,8 @@ class build_src(build_ext.build_ext):
def build_sources(self):
+ self.build_py_modules_sources()
+
for libname_info in self.libraries:
self.build_library_sources(*libname_info)
@@ -100,6 +104,27 @@ class build_src(build_ext.build_ext):
return
+ def build_py_modules_sources(self):
+ new_py_modules = []
+ for source in self.py_modules:
+ if type(source) is type(()) and len(source)==3:
+ package, module_base, source = source
+ if callable(source):
+ target = os.path.join(*([self.build_src]+\
+ package.split('.')+\
+ [module_base + '.py']))
+ source = source(target)
+ if source is None:
+ continue
+ modules = [(package, module_base, source)]
+ if not self.py_modules_dict.has_key(package):
+ self.py_modules_dict[package] = []
+ self.py_modules_dict[package] += modules
+ else:
+ new_py_modules.append(source)
+ self.py_modules[:] = new_py_modules
+ return
+
def build_library_sources(self, lib_name, build_info):
sources = list(build_info.get('sources',[]))
@@ -150,13 +175,13 @@ class build_src(build_ext.build_ext):
sources, py_files = self.filter_py_files(sources)
- if not self.py_modules.has_key(package):
- self.py_modules[package] = []
+ if not self.py_modules_dict.has_key(package):
+ self.py_modules_dict[package] = []
modules = []
for f in py_files:
module = os.path.splitext(os.path.basename(f))[0]
modules.append((package, module, f))
- self.py_modules[package] += modules
+ self.py_modules_dict[package] += modules
sources, h_files = self.filter_h_files(sources)
diff --git a/numpy/distutils/misc_util.py b/numpy/distutils/misc_util.py
index b0119c4ab..3f646d8fb 100644
--- a/numpy/distutils/misc_util.py
+++ b/numpy/distutils/misc_util.py
@@ -280,7 +280,7 @@ def get_frame(level=0):
class Configuration:
_list_keys = ['packages','ext_modules','data_files','include_dirs',
- 'libraries','headers','scripts']
+ 'libraries','headers','scripts','py_modules']
_dict_keys = ['package_dir']
numpy_include_dirs = []
@@ -509,6 +509,8 @@ class Configuration:
else:
self.data_files.extend(data_dict.items())
return
+
+ ### XXX Implement add_py_modules
def add_include_dirs(self,*paths):
""" Add paths to configuration include directories.
@@ -848,16 +850,25 @@ class Configuration:
return target
d = os.path.join(*(self.name.split('.')))
- self.add_data_files((d,generate_svn_version_py()))
+ self.add_data_files((d, generate_svn_version_py()))
return
def make_config_py(self,name='__config__'):
""" Generate package __config__.py file containing system_info
information used during building the package.
"""
- self.add_extension(name,[generate_config_py])
+ self.py_modules.append((self.name,name,generate_config_py))
return
+ def get_info(self,*names):
+ """ Get resources information.
+ """
+ from system_info import get_info, dict_append
+ info_dict = {}
+ for a in names:
+ dict_append(info_dict,**get_info(a))
+ return info_dict
+
def get_cmd(cmdname,_cache={}):
if not _cache.has_key(cmdname):
import distutils.core
@@ -930,18 +941,15 @@ def appendpath(prefix,path):
subpath = path
return os.path.normpath(os.path.join(drive + prefix, subpath))
-def generate_config_py(extension, build_dir):
- """ Generate <package>/config.py file containing system_info
- information used during building the package.
+def generate_config_py(target):
+ """ Generate config.py file containing system_info information
+ used during building the package.
Usage:\
- ext = Extension(dot_join(config['name'],'config'),
- sources=[generate_config_py])
- config['ext_modules'].append(ext)
+ config['py_modules'].append((packagename, '__config__',generate_config_py))
"""
from numpy.distutils.system_info import system_info
from distutils.dir_util import mkpath
- target = os.path.join(*([build_dir]+extension.name.split('.'))) + '.py'
mkpath(os.path.dirname(target))
f = open(target,'w')
f.write('# This file is generated by %s\n' % (os.path.abspath(sys.argv[0])))
diff --git a/numpy/doc/DISTUTILS.txt b/numpy/doc/DISTUTILS.txt
index a77248c8a..bd1bf281b 100644
--- a/numpy/doc/DISTUTILS.txt
+++ b/numpy/doc/DISTUTILS.txt
@@ -293,6 +293,8 @@ in writing setup scripts:
+ ``config.get_config_cmd()`` --- returns ``numpy.distutils`` config
command instance.
++ ``config.get_info(*names)`` ---
+
Template files
--------------