aboutsummaryrefslogtreecommitdiffstats
path: root/Library
diff options
context:
space:
mode:
Diffstat (limited to 'Library')
-rw-r--r--Library/Homebrew/cmd/uninstall.rb13
-rw-r--r--Library/Homebrew/keg.rb22
2 files changed, 22 insertions, 13 deletions
diff --git a/Library/Homebrew/cmd/uninstall.rb b/Library/Homebrew/cmd/uninstall.rb
index aa4c0d919..875c3ced7 100644
--- a/Library/Homebrew/cmd/uninstall.rb
+++ b/Library/Homebrew/cmd/uninstall.rb
@@ -18,15 +18,9 @@ module Homebrew
# Remove every symlink that links to keg, because it can
# be left by migrator
links.each do |link|
- old_opt = HOMEBREW_PREFIX/"opt/#{link.basename}"
if link.exist? && link.realpath == keg.rack.realpath
old_cellars << link
end
-
- if old_opt.symlink? && old_opt.realpath.to_s == keg.to_s
- old_opt.unlink
- old_opt.parent.rmdir_if_possible
- end
end
keg.unlink
@@ -52,13 +46,6 @@ module Homebrew
name = rack.basename
links.each do |link|
- old_opt = HOMEBREW_PREFIX/"opt/#{link.basename}"
- if old_opt.symlink? && old_opt.exist? \
- && old_opt.realpath.parent == rack.realpath
- old_opt.unlink
- old_opt.parent.rmdir_if_possible
- end
-
link.unlink if link.exist? && link.realpath == rack.realpath
end
diff --git a/Library/Homebrew/keg.rb b/Library/Homebrew/keg.rb
index 85b130517..007d7bcfa 100644
--- a/Library/Homebrew/keg.rb
+++ b/Library/Homebrew/keg.rb
@@ -183,6 +183,7 @@ class Keg
path.rmtree
path.parent.rmdir_if_possible
remove_opt_record if optlinked?
+ remove_oldname_opt_record
end
def unlink
@@ -256,6 +257,14 @@ class Keg
path.find(*args, &block)
end
+ def oldname_opt_record
+ @oldname_opt_record ||= if (opt_dir = HOMEBREW_PREFIX/"opt").directory?
+ opt_dir.subdirs.detect do |dir|
+ dir.symlink? && dir != opt_record && path.parent == dir.resolved_path.parent
+ end
+ end
+ end
+
def link(mode = OpenStruct.new)
raise AlreadyLinkedError.new(self) if linked_keg_record.directory?
@@ -330,9 +339,22 @@ class Keg
ObserverPathnameExtension.total
end
+ def remove_oldname_opt_record
+ return unless oldname_opt_record
+ return unless oldname_opt_record.resolved_path == path
+ @oldname_opt_record.unlink
+ @oldname_opt_record.parent.rmdir_if_possible
+ @oldname_opt_record = nil
+ end
+
def optlink(mode = OpenStruct.new)
opt_record.delete if opt_record.symlink? || opt_record.exist?
make_relative_symlink(opt_record, path, mode)
+
+ if oldname_opt_record
+ oldname_opt_record.delete
+ make_relative_symlink(oldname_opt_record, path, mode)
+ end
end
def delete_pyc_files!