diff options
author | Jannis Pohlmann <jannis.pohlmann@codethink.co.uk> | 2012-01-24 14:23:34 +0000 |
---|---|---|
committer | Jannis Pohlmann <jannis.pohlmann@codethink.co.uk> | 2012-01-24 14:40:08 +0000 |
commit | 14e768ce2e5693ebf6418e7a6e94fe4fb9a71844 (patch) | |
tree | 6c629c56aa6e32092a5745bc6de3b50d5c86fbc5 /morph | |
parent | 10122174305ac5c6040212a8b526a77ee473577b (diff) | |
download | morph-14e768ce2e5693ebf6418e7a6e94fe4fb9a71844.tar.gz |
Share functionality in BuildWorker, implement SSH, add name/ident concept.
All BuildWorker subclasses are likely to make use of the multiprocessing
library anyway, so most of the functionality can be shared.
All workers now have an ident (e.g. "user@hostname" or "local") which
is used by the BuildController to generate enumerated names for them
(e.g. "user@hostname-1", "user@hostname-2" or "local-1" and "local-2"),
which makes it easier to identify who does what.
The RemoteBuildWorker now runs "ssh HOSTNAME fakeroot morph" for
building stuff remotely.
Diffstat (limited to 'morph')
-rwxr-xr-x | morph | 16 |
1 files changed, 10 insertions, 6 deletions
@@ -24,6 +24,8 @@ import logging import os import morphlib +from morphlib import buildworker +from morphlib import buildcontroller from morphlib.morphologyloader import MorphologyLoader from morphlib.builddependencygraph import BuildDependencyGraph @@ -226,17 +228,19 @@ class Morph(cliapp.Application): source_manager = morphlib.sourcemanager.SourceManager(self) # create a build controller - controller = morphlib.buildcontroller.BuildController(self, tempdir) + controller = buildcontroller.BuildController(self, tempdir) # create and add the build workers if len(self.settings['worker']) == 0: - worker = morphlib.buildworker.LocalBuildWorker("local-1", self) - controller.add_worker(worker) - worker = morphlib.buildworker.LocalBuildWorker("local-2", self) - controller.add_worker(worker) + num_workers = morphlib.util.make_concurrency() + for i in range(num_workers): + name = controller.generate_worker_name('local') + worker = buildworker.LocalBuildWorker(name, 'local', self) + controller.add_worker(worker) else: for worker in self.settings['worker']: - worker = morphlib.buildworker.RemoteBuildWorker(self) + name = controller.generate_worker_name(worker) + worker = buildworker.RemoteBuildWorker(name, worker, self) controller.add_worker(worker) result = [] |