summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSam Thursfield <sam.thursfield@codethink.co.uk>2014-12-01 12:55:13 +0000
committerSam Thursfield <sam.thursfield@codethink.co.uk>2014-12-01 12:55:13 +0000
commit31facb65e836be5edfa2f1dba70df1f823e3a079 (patch)
treee9d55370740a2b10d012511cca147f1c29f959f4
parenta91acad94c602ff8a4fbfbd609856100f7e1e1ee (diff)
downloadimport-31facb65e836be5edfa2f1dba70df1f823e3a079.tar.gz
Don't re-enqueue packages that already failed
-rw-r--r--baserockimport/mainloop.py17
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))