forked from platformio/platformio-core
Show a warning about Circular Dependencies
This commit is contained in:
@ -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)
|
||||||
|
Reference in New Issue
Block a user