diff options
author | Sam Thursfield <sam.thursfield@codethink.co.uk> | 2014-12-01 12:55:13 +0000 |
---|---|---|
committer | Sam Thursfield <sam.thursfield@codethink.co.uk> | 2014-12-01 12:55:13 +0000 |
commit | 31facb65e836be5edfa2f1dba70df1f823e3a079 (patch) | |
tree | e9d55370740a2b10d012511cca147f1c29f959f4 /baserockimport | |
parent | a91acad94c602ff8a4fbfbd609856100f7e1e1ee (diff) | |
download | import-31facb65e836be5edfa2f1dba70df1f823e3a079.tar.gz |
Don't re-enqueue packages that already failed
Diffstat (limited to 'baserockimport')
-rw-r--r-- | baserockimport/mainloop.py | 17 |
1 files changed, 12 insertions, 5 deletions
diff --git a/baserockimport/mainloop.py b/baserockimport/mainloop.py index 4ca677d..32dbf24 100644 --- a/baserockimport/mainloop.py +++ b/baserockimport/mainloop.py @@ -180,7 +180,7 @@ class ImportLoop(object): if not error: self._update_queue_and_graph( current_item, current_item.dependencies, to_process, - processed) + processed, errors) self._maybe_generate_stratum(processed, errors, self.goal_name) @@ -237,7 +237,7 @@ class ImportLoop(object): package.set_dependencies(dependencies) def _update_queue_and_graph(self, current_item, dependencies, to_process, - processed): + processed, errors): '''Mark current_item as processed and enqueue any new dependencies.''' processed.add_node(current_item) @@ -248,17 +248,24 @@ class ImportLoop(object): for name, version in build_deps.iteritems(): self._update_queue_and_graph_with_dependency( current_item, kind, name, version, True, to_process, - processed) + processed, errors) runtime_deps = kind_deps['runtime-dependencies'] for name, version in runtime_deps.iteritems(): self._update_queue_and_graph_with_dependency( current_item, kind, name, version, False, to_process, - processed) + processed, errors) def _update_queue_and_graph_with_dependency(self, current_item, kind, name, version, is_build_dep, - to_process, processed): + to_process, processed, errors): + failed_dep_package = find( + errors, lambda i: i.match(name, version)) + if failed_dep_package: + logging.debug( + "Ignoring %s as it failed earlier.", failed_dep_package) + return + dep_package = find( processed, lambda i: i.match(name, version)) |