mirror of
https://github.com/galaxyproject/galaxy.git
synced 2026-09-21 13:50:20 +08:00
Avoid duplicate dependency installation
The previous commit changed the resolver logic to try all resolvers, so that when building an environment fails, the next resolver can be tried. Since dependency resolution and installation are coupled it would be possible to install dependencies multiple times for different resolvers (e.g for Conda and Conda versionless). To avoid this we stop installation once a set of dependencies has been resolved.
This commit is contained in:
@@ -159,6 +159,9 @@ class DependencyManager(object):
|
||||
|
||||
# Shortcut - resolution complete for this resolver.
|
||||
resolver_requirements.append(requirement_to_dependency)
|
||||
# We have a complete set of dependencies, don't install
|
||||
# via lower-ranked resolvers
|
||||
kwds['install'] = False
|
||||
continue
|
||||
|
||||
# Check individual requirements
|
||||
@@ -178,6 +181,11 @@ class DependencyManager(object):
|
||||
requirement_to_dependency[requirement] = dependency
|
||||
if requirement_to_dependency:
|
||||
resolver_requirements.append(requirement_to_dependency)
|
||||
if (len(requirement_to_dependency) == len(resolvable_requirements) and
|
||||
all(True for d in requirement_to_dependency if not isinstance(d, NullDependency))):
|
||||
# We resolved all individual requirements, no need to further install dependencies
|
||||
# resolved by subsequent resolvers.
|
||||
kwds['install'] = False
|
||||
if not resolver_requirements:
|
||||
# Have at least a single empty dict
|
||||
resolver_requirements.append(OrderedDict())
|
||||
|
||||
Reference in New Issue
Block a user