Project

General

Profile

Bug #13510

Updated by nobu (Nobuyoshi Nakada) over 8 years ago

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 
 ``` 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.  

Back