Hi All,


I have withdrawn the pull request after useful comments from Nicola Soranzo and John Chilton and upon finding a bug that results in a worse error in testing

I have had another go at adding this feature.
This time as a new resolver to be plugged in.

Adding at John Chilton suggestion ranking in cases where more that one possible revision of the same dependency can be found.

I have the code in a fork:
https://github.com/Christian-B/galaxy/blob/dev/lib/galaxy/tools/deps/resolvers/unlinked_tool_shed_packages.py

If I want to submit a pull request is this best done against master or dev?
Also should I submit a Jira(ish) ticket for this as well? If so where?

Christian

From: galaxy-dev [galaxy-dev-bounces@lists.galaxyproject.org] on behalf of Christian Brenninkmeijer [christian.brenninkmeijer@manchester.ac.uk]
Sent: Wednesday, July 01, 2015 1:17 PM
To: galaxy-dev@lists.galaxyproject.org
Subject: [galaxy-dev] Problem finding depency for none toolshed tools

Hi,
I have been testing tools not yet ready for a tool-shed but had trouble finding the dependencies as there was no database entries to load these.

The code in lib/galaxy/tools/deps/resolvers/galaxy_packages.py assumes that the env.sh or bin directory will be in dependency_dir/package/version when in fact it is often in dependency_dir/
package/version/owner/package_name/revision.


I have created a pull request with some code to find the dependency in the sub directory

https://github.com/galaxyproject/galaxy/pull/413

As I am relatively new to galaxy I have probably broken lots of rules/agreements on how I did the pull request. If so please let me know where I went wrong so I can redo it properly.

Christian

PS.
This is my proposed change to lib/galaxy/tools/deps/resolvers/galaxy_packages.py:
    def _find_dep_versioned( self, name, version, type='package', **kwds ):
        #First try the way without owner/name/revision
        path = join( self.base_path, name, version )
        package = self._galaxy_package_dep(path, version)
        if package != INDETERMINATE_DEPENDENCY:
            return package
        #now try with an owner/name/revision
        for owner in listdir(path):
            owner_path = path + "/" + owner
            for package_name in listdir(owner_path):
                if package_name.startswith("package_"+name):
                    package_path = owner_path + "/" + package_name
                    for revision in listdir(package_path):
                        revision_path = package_path + "/" + revision
                        package = self._galaxy_package_dep(revision_path, version)
                        if package != INDETERMINATE_DEPENDENCY:
                            return package
        return INDETERMINATE_DEPENDENCY