diff options
author | Sam Thursfield <sam.thursfield@codethink.co.uk> | 2014-09-26 17:10:47 +0100 |
---|---|---|
committer | Sam Thursfield <sam.thursfield@codethink.co.uk> | 2014-09-26 17:10:47 +0100 |
commit | 8229cfb750223a7f98229300396cec96fa31ae4f (patch) | |
tree | 6aab2dc78689283583251675a195567b370a3660 /distbuild/serialise.py | |
parent | 68c222588dd415d3e55385bea9563434f8243329 (diff) | |
download | morph-8229cfb750223a7f98229300396cec96fa31ae4f.tar.gz |
Serialise morphologies in a new waysam/distbuild-fixes
Diffstat (limited to 'distbuild/serialise.py')
-rw-r--r-- | distbuild/serialise.py | 45 |
1 files changed, 6 insertions, 39 deletions
diff --git a/distbuild/serialise.py b/distbuild/serialise.py index 9b38c84f..4c3dfb31 100644 --- a/distbuild/serialise.py +++ b/distbuild/serialise.py @@ -22,22 +22,12 @@ import morphlib import logging -morphology_attributes = [ - 'needs_artifact_metadata_cached', -] - - def serialise_artifact(artifact): '''Serialise an Artifact object and its dependencies into string form.''' def encode_morphology(morphology): - result = {} - for key in morphology.keys(): - result[key] = morphology[key] - for x in morphology_attributes: - result['__%s' % x] = getattr(morphology, x) - return result - + return morphology.data + def encode_source(source, artifacts): source_dic = { 'name': source.name, @@ -119,30 +109,7 @@ def deserialise_artifact(encoded): ''' def decode_morphology(le_dict): - '''Convert a dict into something that kinda acts like a Morphology. - - As it happens, we don't need the full Morphology so we cheat. - Cheating is good. - - ''' - - class FakeMorphology(dict): - - def get_commands(self, which): - '''Get commands to run from a morphology or build system''' - if self[which] is None: - attr = '_'.join(which.split('-')) - bs = morphlib.buildsystem.lookup_build_system( - self['build-system']) - return getattr(bs, attr) - else: - return self[which] - - morphology = FakeMorphology(le_dict) - for x in morphology_attributes: - setattr(morphology, x, le_dict['__%s' % x]) - del morphology['__%s' % x] - return morphology + return morphlib.morphology.Morphology(le_dict) def decode_source(le_dict): '''Convert a dict into a Source object. @@ -167,8 +134,8 @@ def deserialise_artifact(encoded): break else: raise ValueError( - "Didn't find source %s in %s sources generated for %s." % - le_dict['name']. len(sources), le_dict['filename']) + "Didn't find source %s for %s." % (le_dict['name'], + le_dict['filename'])) source.cache_id = le_dict['cache_id'] source.cache_key = le_dict['cache_key'] @@ -215,7 +182,7 @@ def deserialise_artifact(encoded): key = artifacts[artifact_id].name sources[source_id].artifacts[key] = artifacts[artifact_id] - sources[source_id].dependencies = [artifacts[aid] for aid in + sources[source_id].dependencies = [artifacts_dict[aid] for aid in source_dict['dependencies']] return artifacts[artifacts_dict['_root']] |