Commit 5409958b authored by Stefan Behnel's avatar Stefan Behnel

find .pxd include directories automatically during installation

parent 8a0ab027
...@@ -37,32 +37,35 @@ if sys.version_info[0] >= 3: ...@@ -37,32 +37,35 @@ if sys.version_info[0] >= 3:
build_py.fixer_names = fixers build_py.fixer_names = fixers
add_command_class("build_py", build_py) add_command_class("build_py", build_py)
pxd_packages = ['cpython', 'libc', 'libcpp'] pxd_include_dirs = [
directory for directory, dirs, files in os.walk('Cython/Includes')
if '__init__.pyx' in files or '__init__.pxd' in files
or directory == 'Cython/Includes' ]
pxd_include_patterns = [
p+'/*.pxd' for p in pxd_include_dirs ] + [
p+'/*.pyx' for p in pxd_include_dirs ]
if sys.version_info < (2,4): if sys.version_info < (2,4):
install_base_dir = get_python_lib(prefix='') install_base_dir = get_python_lib(prefix='')
import glob import glob
patterns = ['Cython/Includes/*.pxd', patterns = pxd_include_patterns + [
'Cython/Plex/*.pxd', 'Cython/Plex/*.pxd',
'Cython/Compiler/*.pxd', 'Cython/Compiler/*.pxd',
'Cython/Runtime/*.pyx'] 'Cython/Runtime/*.pyx'
for p in pxd_packages: ]
patterns.append('Cython/Includes/%s/*.pxd' % p)
patterns.append('Cython/Includes/%s/__init__.pyx' % p)
setup_args['data_files'] = [ setup_args['data_files'] = [
(os.path.dirname(os.path.join(install_base_dir, pattern)), (os.path.dirname(os.path.join(install_base_dir, pattern)),
[ f for f in glob.glob(pattern) ]) [ f for f in glob.glob(pattern) ])
for pattern in patterns for pattern in patterns
] ]
else: else:
patterns = ['Includes/*.pxd', setup_args['package_data'] = {
'Plex/*.pxd', 'Cython.Plex' : ['*.pxd'],
'Compiler/*.pxd', 'Cython.Compiler' : ['*.pxd'],
'Runtime/*.pyx'] 'Cython.Runtime' : ['*.pyx', '*.pxd'],
for p in pxd_packages: 'Cython' : [ p[7:] for p in pxd_include_patterns ],
patterns.append('Includes/%s/*.pxd' % p) }
patterns.append('Includes/%s/__init__.pyx' % p)
setup_args['package_data'] = {'Cython' : patterns}
# This dict is used for passing extra arguments that are setuptools # This dict is used for passing extra arguments that are setuptools
# specific to setup # specific to setup
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment