summaryrefslogtreecommitdiff
path: root/setupinfo.py
diff options
context:
space:
mode:
authorStefan Behnel <stefan_ml@behnel.de>2015-02-14 11:13:32 +0100
committerStefan Behnel <stefan_ml@behnel.de>2015-02-14 11:13:32 +0100
commita024dd22019e82356c6695caa7d2ee10138f05b8 (patch)
tree2b01fe3a2f92c0253730667ce1b63698c9b6e69d /setupinfo.py
parent420f7eabba66a010f44a9b1657aea8ddc6dc5249 (diff)
downloadpython-lxml-a024dd22019e82356c6695caa7d2ee10138f05b8.tar.gz
setup.py: use relative directories for dependencies and include directories
Diffstat (limited to 'setupinfo.py')
-rw-r--r--setupinfo.py42
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 = []