Commit 43c49c7c authored by Robert Bradshaw's avatar Robert Bradshaw

Resolve depends attribute with respect to include_dirs.

parent dba22361
...@@ -288,12 +288,32 @@ def normalize_existing(base_path, rel_paths): ...@@ -288,12 +288,32 @@ def normalize_existing(base_path, rel_paths):
@cached_function @cached_function
def normalize_existing0(base_dir, rel_paths): def normalize_existing0(base_dir, rel_paths):
filtered = [] normalized = []
for rel in rel_paths: for rel in rel_paths:
path = join_path(base_dir, rel) path = join_path(base_dir, rel)
if os.path.exists(path): if path_exists(path):
filtered.append(os.path.normpath(path)) normalized.append(os.path.normpath(path))
return filtered else:
normalized.append(path)
return normalized
def resolve_depends(depends, include_dirs):
include_dirs = tuple(include_dirs)
resolved = []
for depend in depends:
path = resolve_depend(depend, include_dirs)
if path is not None:
resolved.append(path)
return resolved
@cached_function
def resolve_depend(depend, include_dirs):
if depend[0] == '<' and depend[-1] == '>':
return
for dir in include_dirs:
path = join_path(dir, depend)
if path_exists(path):
return os.path.normpath(path)
@cached_function @cached_function
def parse_dependencies(source_filename): def parse_dependencies(source_filename):
...@@ -515,6 +535,8 @@ def create_dependency_tree(ctx=None, quiet=False): ...@@ -515,6 +535,8 @@ def create_dependency_tree(ctx=None, quiet=False):
# This may be useful for advanced users? # This may be useful for advanced users?
def create_extension_list(patterns, exclude=[], ctx=None, aliases=None, quiet=False, exclude_failures=False): def create_extension_list(patterns, exclude=[], ctx=None, aliases=None, quiet=False, exclude_failures=False):
if not isinstance(patterns, list):
patterns = [patterns]
explicit_modules = set([m.name for m in patterns if isinstance(m, Extension)]) explicit_modules = set([m.name for m in patterns if isinstance(m, Extension)])
seen = set() seen = set()
deps = create_dependency_tree(ctx, quiet=quiet) deps = create_dependency_tree(ctx, quiet=quiet)
...@@ -523,8 +545,6 @@ def create_extension_list(patterns, exclude=[], ctx=None, aliases=None, quiet=Fa ...@@ -523,8 +545,6 @@ def create_extension_list(patterns, exclude=[], ctx=None, aliases=None, quiet=Fa
exclude = [exclude] exclude = [exclude]
for pattern in exclude: for pattern in exclude:
to_exclude.update(extended_iglob(pattern)) to_exclude.update(extended_iglob(pattern))
if not isinstance(patterns, list):
patterns = [patterns]
module_list = [] module_list = []
for pattern in patterns: for pattern in patterns:
if isinstance(pattern, str): if isinstance(pattern, str):
...@@ -576,6 +596,12 @@ def create_extension_list(patterns, exclude=[], ctx=None, aliases=None, quiet=Fa ...@@ -576,6 +596,12 @@ def create_extension_list(patterns, exclude=[], ctx=None, aliases=None, quiet=Fa
if source not in sources: if source not in sources:
sources.append(source) sources.append(source)
del kwds['sources'] del kwds['sources']
if 'depends' in kwds:
depends = resolve_depends(kwds['depends'], kwds.get('include_dirs') or [])
if template is not None:
# Always include everything from the template.
depends = list(set(template.depends).union(set(depends)))
kwds['depends'] = depends
module_list.append(exn_type( module_list.append(exn_type(
name=module_name, name=module_name,
sources=sources, sources=sources,
......
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