Avoid realpath where it is not necessary
Symlinks in opt and LinkedKegs point directly at a keg in the cellar, so only resolving one symlink should suffice, and make it clear what path we are actually interested in.
This commit is contained in:
parent
a44f725c8b
commit
ce1f598e98
@ -213,7 +213,7 @@ end
|
||||
|
||||
def fixopt f
|
||||
path = if f.linked_keg.directory? and f.linked_keg.symlink?
|
||||
f.linked_keg.realpath
|
||||
f.linked_keg.resolved_path
|
||||
elsif f.prefix.directory?
|
||||
f.prefix
|
||||
elsif (kids = f.rack.children).size == 1 and kids.first.directory?
|
||||
|
||||
@ -25,7 +25,7 @@ class Caveats
|
||||
|
||||
def keg
|
||||
@keg ||= [f.prefix, f.opt_prefix, f.linked_keg].map do |d|
|
||||
Keg.new(d.realpath) rescue nil
|
||||
Keg.new(d.resolved_path) rescue nil
|
||||
end.compact.first
|
||||
end
|
||||
|
||||
|
||||
@ -13,8 +13,8 @@ module Homebrew extend self
|
||||
notice += " with #{options * ", "}" unless options.empty?
|
||||
oh1 notice
|
||||
|
||||
if (opt_link = f.opt_prefix).exist?
|
||||
keg = Keg.new(opt_link.realpath)
|
||||
if f.opt_prefix.directory?
|
||||
keg = Keg.new(f.opt_prefix.resolved_path)
|
||||
backup keg
|
||||
end
|
||||
|
||||
|
||||
@ -54,7 +54,7 @@ module Homebrew extend self
|
||||
end
|
||||
|
||||
def upgrade_formula f
|
||||
outdated_keg = Keg.new(f.linked_keg.realpath) if f.linked_keg.directory?
|
||||
outdated_keg = Keg.new(f.linked_keg.resolved_path) if f.linked_keg.directory?
|
||||
|
||||
fi = FormulaInstaller.new(f)
|
||||
fi.options = Tab.for_formula(f).used_options
|
||||
|
||||
@ -35,9 +35,9 @@ module HomebrewArgvExtension
|
||||
opt_prefix = HOMEBREW_PREFIX/"opt"/name
|
||||
|
||||
if opt_prefix.symlink? && opt_prefix.directory?
|
||||
Keg.new(opt_prefix.realpath)
|
||||
Keg.new(opt_prefix.resolved_path)
|
||||
elsif linked_keg_ref.symlink? && linked_keg_ref.directory?
|
||||
Keg.new(linked_keg_ref.realpath)
|
||||
Keg.new(linked_keg_ref.resolved_path)
|
||||
elsif dirs.length == 1
|
||||
Keg.new(dirs.first)
|
||||
elsif (prefix = Formula.factory(canonical_name).prefix).directory?
|
||||
|
||||
@ -493,7 +493,7 @@ class Formula
|
||||
},
|
||||
"revision" => revision,
|
||||
"installed" => [],
|
||||
"linked_keg" => (linked_keg.realpath.basename.to_s if linked_keg.exist?),
|
||||
"linked_keg" => (linked_keg.resolved_path.basename.to_s if linked_keg.exist?),
|
||||
"keg_only" => keg_only?,
|
||||
"dependencies" => deps.map(&:name),
|
||||
"conflicts_with" => conflicts.map(&:name),
|
||||
|
||||
@ -147,7 +147,7 @@ class FormulaInstaller
|
||||
if f.linked_keg.directory?
|
||||
# some other version is already installed *and* linked
|
||||
raise CannotInstallFormulaError, <<-EOS.undent
|
||||
#{f}-#{f.linked_keg.realpath.basename} already installed
|
||||
#{f}-#{f.linked_keg.resolved_path.basename} already installed
|
||||
To install this version, first `brew unlink #{f}'
|
||||
EOS
|
||||
end
|
||||
@ -360,7 +360,7 @@ class FormulaInstaller
|
||||
tab = Tab.for_formula(df)
|
||||
|
||||
if df.linked_keg.directory?
|
||||
linked_keg = Keg.new(df.linked_keg.realpath)
|
||||
linked_keg = Keg.new(df.linked_keg.resolved_path)
|
||||
linked_keg.unlink
|
||||
end
|
||||
|
||||
@ -545,7 +545,7 @@ class FormulaInstaller
|
||||
end
|
||||
|
||||
def link
|
||||
if f.linked_keg.directory? and f.linked_keg.realpath == f.prefix
|
||||
if f.linked_keg.directory? and f.linked_keg.resolved_path == f.prefix
|
||||
opoo "This keg was marked linked already, continuing anyway"
|
||||
# otherwise Keg.link will bail
|
||||
f.linked_keg.unlink
|
||||
|
||||
@ -87,7 +87,7 @@ class Keg < Pathname
|
||||
end
|
||||
|
||||
def linked?
|
||||
linked_keg_record.directory? and self == linked_keg_record.realpath
|
||||
linked_keg_record.directory? && self == linked_keg_record.resolved_path
|
||||
end
|
||||
|
||||
def completion_installed? shell
|
||||
@ -125,7 +125,7 @@ class Keg < Pathname
|
||||
end
|
||||
|
||||
def link mode=OpenStruct.new
|
||||
raise "Cannot link #{fname}\nAnother version is already linked: #{linked_keg_record.realpath}" if linked_keg_record.directory?
|
||||
raise "Cannot link #{fname}\nAnother version is already linked: #{linked_keg_record.resolved_path}" if linked_keg_record.directory?
|
||||
|
||||
ObserverPathnameExtension.reset_counts!
|
||||
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user