Bug #13510
closedProblems with dependency resolution - Molinillo algo
Description
This is the gemspec defined for the azure ruby gem (https://github.com/Azure/azure-sdk-for-ruby/blob/asm/azure.gemspec#L39)
if RUBY_VERSION < "2.1.0"
s.add_runtime_dependency('nokogiri', '~> 1.6.0')
else
s.add_runtime_dependency('nokogiri', '~> 1.7')
end
Now, with ruby version 2.0.0, I get the following error:
ERROR: Error installing azure:
nokogiri requires Ruby version >= 2.1.0.
which should never happen because for ruby 2.0.0, the nokogiri version of 1.6.8.1 must be installed and not 1.7.1 (which needs Ruby version >= 2.1.0)
On debugging, I ended up with this code: (in resolver.rb)
def resolve
locking_dg = Molinillo::DependencyGraph.new
puts locking_dg
Molinillo::Resolver.new(self, self).resolve(@needed.map { |d| DependencyRequest.new d, nil }, locking_dg).tsort.map(&:payload).compact
rescue Molinillo::VersionConflict => e
conflict = e.conflicts.values.first
raise Gem::DependencyResolutionError, Conflict.new(conflict.requirement_trees.first.first, conflict.existing, conflict.requirement)
ensure
@output.close if defined?(@output) and !debug?
end
The output of this module is:
{
:name=>"azure",
:number=>"0.7.9",
:platform=>"ruby",
:dependencies=>[
["thor", "~> 0.19"],
["systemu", "~> 2.6"],
["nokogiri", "~> 1.7"],
["mime-types", "< 4.0, >= 1"],
["faraday_middleware", "~> 0.10"],
["faraday", "~> 0.9"],
["azure-core", "~> 0.1"],
["addressable", "~> 2.3"]
]
}
I am surprised at this return value. Why is this happening? The Molinillo algorithms reports incorrect version of nokogiri.
Updated by shyouhei (Shyouhei Urabe) over 8 years ago
- Status changed from Open to Third Party's Issue
- go to https://rubygems.org/gems/azure and click download button.
tar xfp azure-0.7.9.gem- look at metadata.gz
So the gem is built that way.
Updated by sarangan12 (Sarangan Rajamanickam) over 8 years ago
- Status changed from Third Party's Issue to Closed
Updated by usa (Usaku NAKAMURA) over 8 years ago
- Status changed from Closed to Third Party's Issue
Updated by nobu (Nobuyoshi Nakada) over 8 years ago
- Description updated (diff)
The current rubygems does not provide support for multiple versions, or branches at installation time.
All dependencies are resolved at the gem building time, and gem files contain static values only.
Rubygems needs improvements.