Implement 'cloudbiolinux_install' tool shed package install action.

CloudBioLinux contains custom fabric install procedures for dozens of bioinformatics packages and new ones are added all the time. It also contains code used to automatically setup Galaxy env.sh files to support multiple versions of given software. While it started off as a way to configure a particular distribution of Linux, it now supports many distributions and these custom install procedures in particular are not tied to any particular varaint of Linux or even Linux itself.

This changeset adds the ability for Tool Shed tools to quickly and easily leverage this wealth of Galaxy module ready software.

In particular it adds a new action type - 'cloudbiolinux_install'. I have created the repository ngscbltest on the Test Tool Shed to demonstrate/test this functionality.

A full example:

<tool_dependency>
    <package name="tophat2" version="2.0.8b">
        <install version="1.0">
            <actions>
              <action type="cloudbiolinux_install"
                      cbl_revision="4bd005355991a5c8b855ea790ae75e8178ede8c1"
                      tool_name="tophat2"
                      tool_version="2.0.8b" />
            </actions>
        </install>
        <readme>Tophat 2.</readme>
    </package>
    ...
</tool_dependency>

This example will explicitly pass the version '2.0.8b' to the 'install_tophat2' procedure in CloudBioLinux and configure it to install into the install directory expected by the Tool Shed client code and setup an env.sh file. All of this will be installed as a 'tophat2' package.

In this example, we specified a particulr revision of CloudBioLinux to be used for the sake of reproducibility. But that attribute will default to master. Likewise, the attributes tool_name and tool_version can be inferred from context. As a demonstration, the following package would install Tophat 1.3.3 as package 'tophat'.

    <package name="tophat" version="1.3.3">
        <install version="1.0">
            <actions>
              <action type="cloudbiolinux_install"/>
            </actions>
        </install>
        <readme>Tophat 1.3.3.</readme>
    </package>

The name of install method doesn't have to match for instance the install_cufflinks function in CloudBioLinux can be used to install Cufflinks 1 or 2.

    <package name="cufflinks2" version="2.1.1">
        <install version="1.0">
            <actions>
              <action type="cloudbiolinux_install"
                      cbl_url="https://github.com/jmchilton/cloudbiolinux.git"
                      tool_name="cufflinks" />
            </actions>
        </install>
        <readme>Cufflinks2.</readme>
    </package>

This final example also demonstrates how to target a customized fork of CloudBioLinux.

Implementation: On the Galaxy side of this equation, the implementation is fairly straight forward. fabric_util.py has been updated with a '__install_cloudbiolinux_tool' function which implements this action entirely. This function clones clodubiolinux to a temporary directory (optionally checking out a particular revision), and uses the CloudBioLinux deployer functionality to configure a local, no-ssh install of the specified software.

Requirements: The core framework for obtaining and running CloudBioLinux requires only bash, wget, git, and python-dev/python-devel. These are likely a subset of packages the IUC has already agreed will need to be present. Individual install procedures may have additonal OS level requirements, but the same could be true of any Make file compiled with the existing Tool Shed infrastructure. If particular modules are isolated as being useful, I am happy to work with the tool developers to ensure the CloudBioLinux install procedure can work with minimal prerequisites.