formula: look harder for a linked keg.
Add and use a `possible_names` method to find a linked keg based on an old name or alias. Use this both for `link_overwrite` and for `linked_keg` (which is what `brew upgrade` uses to find outdated kegs).
This commit is contained in:
parent
50d12ce900
commit
82e249b92f
@ -495,6 +495,10 @@ class Formula
|
||||
# The link status symlink directory for this {Formula}.
|
||||
# You probably want {#opt_prefix} instead.
|
||||
def linked_keg
|
||||
linked_keg = possible_names.map { |name| HOMEBREW_LINKED_KEGS/name }
|
||||
.find(&:directory?)
|
||||
return linked_keg if linked_keg.present?
|
||||
|
||||
HOMEBREW_LINKED_KEGS/name
|
||||
end
|
||||
|
||||
@ -598,16 +602,10 @@ class Formula
|
||||
# All currently installed prefix directories.
|
||||
# @private
|
||||
def installed_prefixes
|
||||
prefixes = rack.directory? ? rack.subdirs : []
|
||||
|
||||
prefixes += (aliases + Array(oldname)).flat_map do |alias_name|
|
||||
rack_alias = HOMEBREW_CELLAR/alias_name
|
||||
next unless rack_alias.directory?
|
||||
|
||||
rack_alias.subdirs
|
||||
end.compact
|
||||
|
||||
prefixes.sort_by(&:basename)
|
||||
possible_names.map { |name| HOMEBREW_CELLAR/name }
|
||||
.select(&:directory?)
|
||||
.flat_map(&:subdirs)
|
||||
.sort_by(&:basename)
|
||||
end
|
||||
|
||||
# All currently installed kegs.
|
||||
@ -1128,7 +1126,7 @@ class Formula
|
||||
return false # this keg belongs to another formula
|
||||
else
|
||||
# this keg belongs to another unrelated formula
|
||||
return false unless (Array(f.aliases) + Array(f.oldname)).include?(keg.name)
|
||||
return false unless f.possible_names.include?(keg.name)
|
||||
end
|
||||
end
|
||||
to_check = path.relative_path_from(HOMEBREW_PREFIX).to_s
|
||||
@ -1358,6 +1356,11 @@ class Formula
|
||||
name <=> other.name
|
||||
end
|
||||
|
||||
# @private
|
||||
def possible_names
|
||||
[name, oldname, *aliases].compact
|
||||
end
|
||||
|
||||
def to_s
|
||||
name
|
||||
end
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user