summaryrefslogtreecommitdiff
path: root/morphlib
diff options
context:
space:
mode:
authorAdam Coldrick <adam.coldrick@codethink.co.uk>2015-06-05 12:21:51 +0000
committerRichard Maw <richard.maw@codethink.co.uk>2015-06-12 08:58:05 +0000
commitc80c6767915b086fb41f6c81fbc6161e2b30ece1 (patch)
tree741b1b6c7b31bc119dde6bbbc0649e8ce67db831 /morphlib
parentd95bd9ec7cdf78ee74c69ebe9df07d418bb1e5db (diff)
downloadmorph-c80c6767915b086fb41f6c81fbc6161e2b30ece1.tar.gz
Set PYTHONPATH when running deployment extensions
After moving deployment extensions into the definitions repository, but they need access to shared code, so deployment extensions need to import code which lives in definitions. However morph runs a copy of them in a temporary directory. Version 5 will allow deployment extensions to depend only on code which is also in definitions and the Python standard library, though they may also include code from elsewhere as described in PYTHONPATH. Change-Id: I998f01830656a5118bba1e579f649ec98f5f82c6
Diffstat (limited to 'morphlib')
-rw-r--r--morphlib/plugins/deploy_plugin.py8
1 files changed, 8 insertions, 0 deletions
diff --git a/morphlib/plugins/deploy_plugin.py b/morphlib/plugins/deploy_plugin.py
index c0018edd..42d27ff3 100644
--- a/morphlib/plugins/deploy_plugin.py
+++ b/morphlib/plugins/deploy_plugin.py
@@ -507,6 +507,14 @@ class DeployPlugin(cliapp.Plugin):
deployment_type, location = deployment_type_and_location(
system_id, final_env, is_upgrade)
+ extensions_dir = os.path.join(
+ root_repo_dir.dirname,
+ os.path.dirname(deployment_type))
+ if 'PYTHONPATH' in final_env:
+ final_env['PYTHONPATH'] += ':%s' % extensions_dir
+ else:
+ final_env['PYTHONPATH'] = extensions_dir
+
components = self._sanitise_morphology_paths(
deploy_params.get('partial-deploy-components', []), sb)
if self.app.settings['partial']: