Show a warning about Circular Dependencies

This commit is contained in:
Ivan Kravets
2016-07-28 17:29:53 +03:00
parent 339acab917
commit 3a7032ec9c

View File

@@ -203,11 +203,13 @@ class LibBuilderBase(object):
result += (inc, ) result += (inc, )
return result return result
def depends_on(self, lb, lib_builders, search_paths=None): def depends_on(self, lb):
assert isinstance(lb, LibBuilderBase) assert isinstance(lb, LibBuilderBase)
if lb not in self._deps: if self in lb.dependencies:
sys.stderr.write("Warning! Circular dependencies detected "
"between `%s` and `%s`\n" % (self.path, lb.path))
elif lb not in self._deps:
self._deps += (lb, ) self._deps += (lb, )
lb.search_dependencies(lib_builders, search_paths)
def search_dependencies(self, lib_builders, search_paths=None): def search_dependencies(self, lib_builders, search_paths=None):
self._is_dependent = True self._is_dependent = True
@@ -222,7 +224,8 @@ class LibBuilderBase(object):
for lb, lb_src_files in lib_inc_map.items(): for lb, lb_src_files in lib_inc_map.items():
if lb != self and lb not in self.dependencies: if lb != self and lb not in self.dependencies:
self.depends_on(lb, lib_builders, lb_src_files) self.depends_on(lb)
lb.search_dependencies(lib_builders, lb_src_files)
def build(self): def build(self):
libs = [] libs = []
@@ -262,7 +265,8 @@ class ProjectAsLibBuilder(LibBuilderBase):
for lib_name in self.env.get("LIB_FORCE", []): for lib_name in self.env.get("LIB_FORCE", []):
for lb in lib_builders: for lb in lib_builders:
if lb.name == lib_name and lb not in self.dependencies: if lb.name == lib_name and lb not in self.dependencies:
self.depends_on(lb, lib_builders) self.depends_on(lb)
lb.search_dependencies(lib_builders)
break break
return LibBuilderBase.search_dependencies(self, lib_builders, return LibBuilderBase.search_dependencies(self, lib_builders,
search_paths) search_paths)