formula: use names for formula comparison
* Causes a bug in Formula#installed_alias_target_changed? when Formula#superseds_an_installed_formula? returns true because Formula#old_installed_formulae includes f for some Formula f. * Causes a bug when foo@2.4 with alias foo has HEAD or devel version and we try to `brew upgrade foo --devel|--HEAD` from stable. The upgrade fails while since we installing formula to the same prefix it's alredy installed. The reason for that is that we use `formula_to_install = outdated.map(&:latest_formula)` in cmd/upgrade before calling upgrade_formula on foo. ```ruby def latest_formula installed_alias_target_changed? ? current_installed_alias_target : self end ``` Formula#installed_alias_target_changed? compares formulae using Formula#==, which is wrong for this case, thus Formula#latest_formula doesn't return self and returns Formula#current_installed_alias_target with spec foo was initially installed instead of devel or HEAD, causing the error.
This commit is contained in:
		
							parent
							
								
									fb29a31c72
								
							
						
					
					
						commit
						0ae1785703
					
				@ -1167,7 +1167,7 @@ class Formula
 | 
			
		||||
  # Returns false if the formula wasn't installed with an alias.
 | 
			
		||||
  def installed_alias_target_changed?
 | 
			
		||||
    target = current_installed_alias_target
 | 
			
		||||
    target && target != self
 | 
			
		||||
    target && target.name != name
 | 
			
		||||
  end
 | 
			
		||||
 | 
			
		||||
  # Is this formula the target of an alias used to install an old formula?
 | 
			
		||||
@ -1192,7 +1192,7 @@ class Formula
 | 
			
		||||
    # it doesn't make sense to say that other formulae are older versions of it
 | 
			
		||||
    # because we don't know which came first.
 | 
			
		||||
    return [] if alias_path.nil? || installed_alias_target_changed?
 | 
			
		||||
    self.class.installed_with_alias_path(alias_path) - [self]
 | 
			
		||||
    self.class.installed_with_alias_path(alias_path).reject { |f| f.name == name }
 | 
			
		||||
  end
 | 
			
		||||
 | 
			
		||||
  # @private
 | 
			
		||||
 | 
			
		||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user