diff options
author | Pearu Peterson <pearu.peterson@gmail.com> | 2006-01-24 18:29:48 +0000 |
---|---|---|
committer | Pearu Peterson <pearu.peterson@gmail.com> | 2006-01-24 18:29:48 +0000 |
commit | 16c544e58ff095cad64b9a57c2f7406b2e768409 (patch) | |
tree | 69f39162dd3ed34e897727473eef7806a682dcc1 /numpy | |
parent | b1b17f10d24a62112d843bc1b99aab977f3c6680 (diff) | |
download | numpy-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.py | 3 | ||||
-rw-r--r-- | numpy/distutils/command/build_src.py | 37 | ||||
-rw-r--r-- | numpy/distutils/misc_util.py | 28 | ||||
-rw-r--r-- | numpy/doc/DISTUTILS.txt | 2 |
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 -------------- |