From: nobu@... Date: 2017-05-01T08:03:39+00:00 Subject: [ruby-core:80951] [Ruby trunk Bug#13510] Problems with dependency resolution - Molinillo algo Issue #13510 has been updated by nobu (Nobuyoshi Nakada). Description updated 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. ---------------------------------------- Bug #13510: Problems with dependency resolution - Molinillo algo https://bugs.ruby-lang.org/issues/13510#change-64617 * Author: sarangan12 (Sarangan Rajamanickam) * Status: Third Party's Issue * Priority: Normal * Assignee: * Target version: * ruby -v: ruby 2.0.0p648 (2015-12-16 revision 53162) [x86_64-darwin16.3.0] * Backport: 2.2: UNKNOWN, 2.3: UNKNOWN, 2.4: UNKNOWN ---------------------------------------- This is the gemspec defined for the azure ruby gem (https://github.com/Azure/azure-sdk-for-ruby/blob/asm/azure.gemspec#L39) ```ruby 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) ```ruby 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: ```ruby { :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. -- https://bugs.ruby-lang.org/ Unsubscribe: