diff options
author | Adam Coldrick <adam.coldrick@codethink.co.uk> | 2015-03-10 10:17:33 +0000 |
---|---|---|
committer | Adam Coldrick <adam.coldrick@codethink.co.uk> | 2015-03-10 15:13:34 +0000 |
commit | 55af38e2e47212b3ccf4c027c4fc95bbbb097169 (patch) | |
tree | eab75d0fa8ad2d5ec58432e162e607c66c44c29b | |
parent | 302ad6d43515ff73e9ae329d88e31a1c9792680f (diff) | |
download | morph-55af38e2e47212b3ccf4c027c4fc95bbbb097169.tar.gz |
WIP: Changes to distbuild plugin
-rw-r--r-- | morphlib/plugins/distbuild_plugin.py | 25 |
1 files changed, 20 insertions, 5 deletions
diff --git a/morphlib/plugins/distbuild_plugin.py b/morphlib/plugins/distbuild_plugin.py index a7d69472..38639efa 100644 --- a/morphlib/plugins/distbuild_plugin.py +++ b/morphlib/plugins/distbuild_plugin.py @@ -72,7 +72,9 @@ class SerialiseArtifactPlugin(cliapp.Plugin): srcpool = build_command.create_source_pool( repo_name, ref, filename, original_ref=original_ref) artifact = build_command.resolve_artifacts(srcpool) - self.app.output.write(distbuild.serialise_artifact(artifact)) + self.app.output.write(distbuild.serialise_artifact(artifact, + repo_name, + ref)) self.app.output.write('\n') @@ -96,9 +98,14 @@ class WorkerBuild(cliapp.Plugin): distbuild.add_crash_conditions(self.app.settings['crash-condition']) serialized = sys.stdin.readline() - artifact = distbuild.deserialise_artifact(serialized) - + artifact_reference = distbuild.deserialise_artifact(serialized) + bc = morphlib.buildcommand.BuildCommand(self.app) + source_pool = bc.create_source_pool(artifact_reference.repo, + artifact_reference.ref, + artifact_reference.root_filename) + + root = bc.resolve_artifacts(source_pool) # Now, before we start the build, we garbage collect the caches # to ensure we have room. First we remove all system artifacts @@ -111,8 +118,16 @@ class WorkerBuild(cliapp.Plugin): self.app.subcommands['gc']([]) - arch = artifact.arch - bc.build_source(artifact.source, bc.new_build_env(arch)) + source = self.find_source(source_pool, artifact_reference) + build_env = bc.new_build_env(artifact_reference.arch) + bc.build_source(source, build_env) + + def find_source(self, source_pool, artifact_reference): + for s in source_pool.lookup(artifact_reference.source_repo, + artifact_reference.source_ref, + artifact_reference.filename): + if s.cache_key == artifact_reference.cache_key: + return s def is_system_artifact(self, filename): return re.match(r'^[0-9a-fA-F]{64}\.system\.', filename) |