diff options
author | Stefan Behnel <stefan_ml@behnel.de> | 2015-02-14 11:13:32 +0100 |
---|---|---|
committer | Stefan Behnel <stefan_ml@behnel.de> | 2015-02-14 11:13:32 +0100 |
commit | a024dd22019e82356c6695caa7d2ee10138f05b8 (patch) | |
tree | 2b01fe3a2f92c0253730667ce1b63698c9b6e69d /setupinfo.py | |
parent | 420f7eabba66a010f44a9b1657aea8ddc6dc5249 (diff) | |
download | python-lxml-a024dd22019e82356c6695caa7d2ee10138f05b8.tar.gz |
setup.py: use relative directories for dependencies and include directories
Diffstat (limited to 'setupinfo.py')
-rw-r--r-- | setupinfo.py | 42 |
1 files changed, 28 insertions, 14 deletions
diff --git a/setupinfo.py b/setupinfo.py index 2832f697..f26632ea 100644 --- a/setupinfo.py +++ b/setupinfo.py @@ -38,6 +38,13 @@ def env_var(name): else: return [] + +def _prefer_reldirs(base_dir, dirs): + return [ + os.path.relpath(path) if path.startswith(base_dir) else path + for path in dirs + ] + def ext_modules(static_include_dirs, static_library_dirs, static_cflags, static_binaries): global XML2_CONFIG, XSLT_CONFIG @@ -100,14 +107,14 @@ def ext_modules(static_include_dirs, static_library_dirs, if not versions_ok: raise RuntimeError("Dependency missing") - _include_dirs = include_dirs(static_include_dirs) - _library_dirs = library_dirs(static_library_dirs) + base_dir = get_base_dir() + _include_dirs = _prefer_reldirs( + base_dir, include_dirs(static_include_dirs) + [INCLUDE_PACKAGE_PATH]) + _library_dirs = _prefer_reldirs(base_dir, library_dirs(static_library_dirs)) _cflags = cflags(static_cflags) _define_macros = define_macros() _libraries = libraries() - _include_dirs.append(os.path.join(get_base_dir(), INCLUDE_PACKAGE_PATH)) - if _library_dirs: message = "Building against libxml2/libxslt in " if len(_library_dirs) > 1: @@ -154,25 +161,32 @@ def ext_modules(static_include_dirs, static_library_dirs, return result + def find_dependencies(module): if not CYTHON_INSTALLED: return [] base_dir = get_base_dir() package_dir = os.path.join(base_dir, PACKAGE_PATH) includes_dir = os.path.join(base_dir, INCLUDE_PACKAGE_PATH) - pxd_files = [ os.path.join(includes_dir, filename) - for filename in os.listdir(includes_dir) - if filename.endswith('.pxd') ] + + pxd_files = [ + os.path.join(INCLUDE_PACKAGE_PATH, filename) + for filename in os.listdir(includes_dir) + if filename.endswith('.pxd') + ] if 'etree' in module: - pxi_files = [ os.path.join(PACKAGE_PATH, filename) - for filename in os.listdir(package_dir) - if filename.endswith('.pxi') - and 'objectpath' not in filename ] - pxd_files = [ filename for filename in pxd_files - if 'etreepublic' not in filename ] + pxi_files = [ + os.path.join(PACKAGE_PATH, filename) + for filename in os.listdir(package_dir) + if filename.endswith('.pxi') and 'objectpath' not in filename + ] + pxd_files = [ + filename for filename in pxd_files + if 'etreepublic' not in filename + ] elif 'objectify' in module: - pxi_files = [ os.path.join(PACKAGE_PATH, 'objectpath.pxi') ] + pxi_files = [os.path.join(PACKAGE_PATH, 'objectpath.pxi')] else: pxi_files = [] |