From 11a9abbb2d7276208beed66bd153ba0fe7881d2b Mon Sep 17 00:00:00 2001 From: mvdbeek Date: Sun, 5 Nov 2017 10:18:30 +0100 Subject: [PATCH] Return an OrderedSet of dependencies instead of a list This avoids activating mulled dependencies multiple times and fixes https://github.com/galaxyproject/galaxy/issues/4821. We use OrderedSet because the order of activation may matter for toolshed dependencies. --- lib/galaxy/tools/deps/__init__.py | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/lib/galaxy/tools/deps/__init__.py b/lib/galaxy/tools/deps/__init__.py index acc2867b32d..1c173aa1333 100644 --- a/lib/galaxy/tools/deps/__init__.py +++ b/lib/galaxy/tools/deps/__init__.py @@ -13,6 +13,7 @@ from galaxy.util import ( hash_util, plugin_config ) +from galaxy.util.oset import OrderedSet from .requirements import ( ToolRequirement, @@ -109,8 +110,9 @@ class DependencyManager(object): return value def dependency_shell_commands(self, requirements, **kwds): - requirement_to_dependency = self.requirements_to_dependencies(requirements, **kwds) - return [dependency.shell_commands() for dependency in requirement_to_dependency.values()] + requirements_to_dependencies = self.requirements_to_dependencies(requirements, **kwds) + ordered_dependencies = OrderedSet(requirements_to_dependencies.values()) + return [dependency.shell_commands() for dependency in ordered_dependencies] def requirements_to_dependencies(self, requirements, **kwds): """