summaryrefslogtreecommitdiff
path: root/baserockimport/mainloop.py
diff options
context:
space:
mode:
Diffstat (limited to 'baserockimport/mainloop.py')
-rw-r--r--baserockimport/mainloop.py42
1 files changed, 26 insertions, 16 deletions
diff --git a/baserockimport/mainloop.py b/baserockimport/mainloop.py
index 5574796..9c6e08b 100644
--- a/baserockimport/mainloop.py
+++ b/baserockimport/mainloop.py
@@ -182,14 +182,7 @@ class ImportLoop(object):
current_item, current_item.dependencies, to_process,
processed)
- if len(errors) > 0:
- self.app.status(
- '\nErrors encountered, not generating a stratum morphology.')
- self.app.status(
- 'See the README files for guidance.')
- else:
- self._generate_stratum_morph_if_none_exists(
- processed, self.goal_name)
+ self._maybe_generate_stratum(processed, errors, self.goal_name)
duration = time.time() - start_time
end_displaytime = time.strftime('%x %X %Z', time.localtime())
@@ -520,26 +513,43 @@ class ImportLoop(object):
'One or more cycles detected in build graph: %s' %
(', '.join(all_loops_str)))
- def _generate_stratum_morph_if_none_exists(self, graph, goal_name):
+ def _maybe_generate_stratum(self, graph, errors, goal_name):
filename = os.path.join(
self.app.settings['definitions-dir'], 'strata', '%s.morph' %
goal_name)
+ update_existing = self.app.settings['update-existing']
- if os.path.exists(filename):
- if not self.app.settings['update-existing']:
- self.app.status(
- msg='Found stratum morph for %s at %s, not overwriting' %
- (goal_name, filename))
- return
+ if self.app.settings['force-stratum-generation']:
+ self._generate_stratum(
+ graph, goal_name, filename, ignore_errors=True)
+ elif len(errors) > 0:
+ self.app.status(
+ '\nErrors encountered, not generating a stratum morphology.')
+ self.app.status(
+ 'See the README files for guidance.')
+ elif os.path.exists(filename) and not update_existing:
+ self.app.status(
+ msg='Found stratum morph for %s at %s, not overwriting' %
+ (goal_name, filename))
+ else:
+ self._generate_stratum(graph, goal_name, filename)
+ def _generate_stratum(self, graph, goal_name, filename,
+ ignore_errors=False):
self.app.status(msg='Generating stratum morph for %s' % goal_name)
chunk_entries = []
for package in self._sort_chunks_by_build_order(graph):
m = package.morphology
+
if m is None:
- raise cliapp.AppException('No morphology for %s' % package)
+ if ignore_errors:
+ logging.warn(
+ 'Ignoring %s because there is no chunk morphology.')
+ continue
+ else:
+ raise cliapp.AppException('No morphology for %s' % package)
def format_build_dep(name, version):
dep_package = find(graph, lambda p: p.match(name, version))