summaryrefslogtreecommitdiff
path: root/morphlib/util.py
diff options
context:
space:
mode:
authorAdam Coldrick <adam.coldrick@codethink.co.uk>2015-05-05 12:14:46 +0000
committerBaserock Gerrit <gerrit@baserock.org>2015-05-12 12:25:57 +0000
commit2d19611ace78aec071607fafd0e2798412cc4286 (patch)
treec9370d7e1b4b334fdc90118581f74e7db43d610b /morphlib/util.py
parent1c45305237674b71bfe3c896a9a14238d30ac9aa (diff)
downloadmorph-2d19611ace78aec071607fafd0e2798412cc4286.tar.gz
Move duplicate fix_chunk_build_mode function to a common location
Change-Id: I11b4dbeb50d67068701f269ef6ac7cfbd89f6aed
Diffstat (limited to 'morphlib/util.py')
-rw-r--r--morphlib/util.py28
1 files changed, 28 insertions, 0 deletions
diff --git a/morphlib/util.py b/morphlib/util.py
index ab774dd5..9668bac5 100644
--- a/morphlib/util.py
+++ b/morphlib/util.py
@@ -702,3 +702,31 @@ def word_join_list(l): # pragma: no cover
else:
commasep = ', '.join(l[:-1])
return ' and '.join((commasep, l[-1]))
+
+
+def fix_chunk_build_mode(system_artifact): # pragma: no cover
+ """Give each chunk's in-memory morphology the correct build-mode.
+
+ This function gives each chunk contained in `system_artifact` the
+ correct build-mode, rather than having them all be 'staging'.
+
+ Currently, our definitions define build-mode in the entries in the
+ chunk list in a given stratum. However, morph expects it to be in
+ the chunk morphology when loading, and sets the in-memory
+ build-mode to 'staging' by default.
+
+ """
+ # This should probably be fixed in morphloader, but I held off on
+ # doing that following a discussion on #baserock.
+ #
+ # https://irclogs.baserock.org/%23baserock.2015-04-21.log.html
+ # (at 9:02)
+ strata = set(a for a in system_artifact.walk()
+ if a.source.morphology['kind'] == 'stratum')
+ chunks = set(a for a in system_artifact.walk()
+ if a.source.morphology['kind'] == 'chunk')
+ for chunk, stratum in itertools.product(chunks, strata):
+ for spec in stratum.source.morphology['chunks']:
+ if chunk.source.morphology['name'] == spec['name']:
+ chunk.source.morphology['build-mode'] = \
+ spec['build-mode']