From c516cf033fa4cd34d7a3d60860fd369e7cc0e3c0 Mon Sep 17 00:00:00 2001 From: James Taylor Date: Mon, 27 Sep 2010 13:01:35 -0400 Subject: [PATCH] When source dependency injection scripts, set the environment variable PACKAGE_BASE to the root of the package, allowing package dirs to be relocatable --- lib/galaxy/tools/__init__.py | 4 ++-- lib/galaxy/tools/deps/__init__.py | 10 ++++++---- 2 files changed, 8 insertions(+), 6 deletions(-) diff --git a/lib/galaxy/tools/__init__.py b/lib/galaxy/tools/__init__.py index b1315caf6fa..4649035777c 100644 --- a/lib/galaxy/tools/__init__.py +++ b/lib/galaxy/tools/__init__.py @@ -1533,11 +1533,11 @@ class Tool: # back to packages log.debug( "Dependency %s", requirement.name ) if requirement.type == 'package': - script_file, version = self.app.toolbox.dependency_manager.find_dep( requirement.name, requirement.version ) + script_file, base_path, version = self.app.toolbox.dependency_manager.find_dep( requirement.name, requirement.version ) if script_file is None: log.warn( "Failed to resolve dependency on '%s', ignoring", requirement.name ) else: - commands.append( 'source ' + script_file ) + commands.append( 'PACKAGE_BASE=%s source %s' % ( base_path, script_file ) ) return commands def build_redirect_url_params( self, param_dict ): diff --git a/lib/galaxy/tools/deps/__init__.py b/lib/galaxy/tools/deps/__init__.py index 2d889d3145a..cb6904d0ba3 100644 --- a/lib/galaxy/tools/deps/__init__.py +++ b/lib/galaxy/tools/deps/__init__.py @@ -36,7 +36,8 @@ class DependencyManager( object ): """ Attempt to find a dependency named `name` at version `version`. If version is None, return the "default" version as determined using a - symbolic link (if found). + symbolic link (if found). Returns a triple of: + env_script, base_path, real_version """ if version is None: return self._find_dep_default( name ) @@ -45,9 +46,10 @@ class DependencyManager( object ): def _find_dep_versioned( self, name, version ): for base_path in self.base_paths: - script = os.path.join( base_path, name, version, 'env.sh' ) + path = os.path.join( base_path, name, version ) + script = os.path.join( path, 'env.sh' ) if os.path.exists( script ): - return script, version + return script, path, version else: return None, None @@ -60,7 +62,7 @@ class DependencyManager( object ): real_version = os.path.basename( real_path ) script = os.path.join( real_path, 'env.sh' ) if os.path.exists( script ): - return script, real_version + return script, real_path, real_version else: return None, None