summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRichard Ipsum <richard.ipsum@codethink.co.uk>2014-02-28 17:34:15 +0000
committerRichard Ipsum <richard.ipsum@codethink.co.uk>2014-02-28 17:34:15 +0000
commitb4bcfd85065363584340fcb04429094656600928 (patch)
tree0e6766e44f043bc089e4bf3340ae2f3288bf8920
parent4d08237fda5b0c58d735bee95c5009ce27f14240 (diff)
downloadmorph-b4bcfd85065363584340fcb04429094656600928.tar.gz
Deserialise (separate dicts for artifacts and sources)
-rw-r--r--distbuild/serialise.py18
1 files changed, 10 insertions, 8 deletions
diff --git a/distbuild/serialise.py b/distbuild/serialise.py
index ecb88d22..3b764c37 100644
--- a/distbuild/serialise.py
+++ b/distbuild/serialise.py
@@ -61,25 +61,24 @@ def serialise_artifact(artifact):
'tree': source.tree,
'morphology': encode_morphology(source.morphology),
'filename': source.filename,
- 'artifacts': encode_artifacts(source.artifacts, encoded),
}
+
if source.morphology['kind'] == 'chunk':
source_dic['build_mode'] = source.build_mode
source_dic['prefix'] = source.prefix
return source_dic
- def encode_single_artifact(a, encoded):
+ def encode_single_artifact(a, artifacts, source_id):
if artifact.source.morphology['kind'] == 'system':
arch = artifact.source.morphology['arch']
else:
arch = artifact.arch
return {
- 'source': encode_source(a.source, encoded),
+ 'source': source_id,
'name': a.name,
'cache_id': a.cache_id,
'cache_key': a.cache_key,
- 'dependencies': [encoded[d.cache_key]['cache_key']
- for d in a.dependencies],
+ 'dependencies': [id(artifacts[id(d)]) for d in a.dependencies],
'arch': arch,
'bacon': 'chunky',
}
@@ -95,11 +94,14 @@ def serialise_artifact(artifact):
yield a
encoded = {}
+ sources = {}
+ artifacts = {}
for a in traverse(artifact):
- if a.cache_key not in encoded:
- encoded[a.cache_key] = encode_single_artifact(a, encoded)
+ source_id = id(a.source)
+ sources[source_id] = a.source
+ artifacts[(id(a))] = encode_single_artifact(a, source_id)
- encoded['_root'] = artifact.cache_key
+ artifacts['_root'] = id(artifact)
logging.debug('in serialise_artifact(): encoded: %s' %
json.dumps(encoded))