Complex Repository Dependencies
Complex repository dependencies allow many Tool Shed repository installations into a single Galaxy instance where any number of the contained tools across installed repositories can all reference a single installation of a specific tool dependency package (e.g. bwa version 0.5.9).
Describing how this works is tricky, so let's see if we can state it in a way that can be understood: tool dependency definitions that contain repository dependency definitions define a relationship to a tool dependency that will be installed using the instructions in the required repository's tool_dependencies.xml file, where the relationship to the required repository is defined by the contained repository dependency definition. Hmmm...okay, let's try to clarify this a bit...
To demonstrate how this works, we'll refer to 2 repositories in the test Galaxy Tool Shed: bwa_059 and complex_repository_dependency_on_bwa_059.
The bwa_059 repository has type Tool dependency definition and contains only a single file named tool_dependencies.xml which looks like the following. This definition will download and compile version 0.5.9 of the bwa package.
<?xml version="1.0"?>
<tool_dependency>
<package name="bwa" version="0.5.9">
<install version="1.0">
<actions>
<action type="download_by_url">http://downloads.sourceforge.net/project/bio-bwa/bwa-0.5.9.tar.bz2</action>
<action type="shell_command">make clean</action>
<action type="shell_command">make</action>
<action type="move_file">
<source>bwa</source>
<destination>$INSTALL_DIR/bin</destination>
</action>
<action type="set_environment">
<environment_variable name="PATH" action="prepend_to">$INSTALL_DIR/bin</environment_variable>
</action>
</actions>
</install>
<readme>
Compiling BWA requires zlib and libpthread to be present on your system.
</readme>
</package>
</tool_dependency>
To demonstrate how the bwa_059 repository can be used, let's take a look at the tool_dependencies.xml file contained in the complex_repository_dependency_on_bwa_059 repository, which looks like the following.
<?xml version="1.0"?>
<tool_dependency>
<package name="bwa" version="0.5.9">
<repository toolshed="http://testtoolshed.g2.bx.psu.edu" name="bwa_059" owner="greg" changeset_revision="a347750db1d1" />
</package>
</tool_dependency>
The above tool dependency definition is associated with the entry in the <requirements>
tag set defined in the bwa_wrapper.xml Galaxy tool configuration file contained in the same repository. The bwa_wrapper.xml <requirements>
tag set looks like the following. Notice that the type package, version 0.5.9 and name bwa match the definition in the above tool_dependencies.xml file.
<requirements>
<requirement type="package" version="0.5.9">bwa</requirement>
</requirements>
Visiting the repository's main page displays various containers. There are two dependencies defined for this repository, both of which are defined in the simple tool_dependencies.xml file above. The repository dependency on revision a347750db1d1 of the repository named bwa_059 owned by greg is defined by the repository
tag, while the tool dependency on version 0.5.9 of the bwa package is defined by the <package>
tag set.
For more technical details on this XML file, see the supported tool_dependencies.xml tag sets.