aboutsummaryrefslogtreecommitdiffstats
path: root/Library
diff options
context:
space:
mode:
authorMike McQuaid2016-09-17 18:58:00 +0100
committerGitHub2016-09-17 18:58:00 +0100
commit5b8329b1c1d3189d8cbbdab848e5f7b0719661ad (patch)
treeeb78a259bad6060f436b071b2a62eae40194491e /Library
parent390bcf413bd3bfa69b1663a37f71665b190da0eb (diff)
parent241d7b991bd9e830748e35f81b8738e1b069e43d (diff)
downloadbrew-5b8329b1c1d3189d8cbbdab848e5f7b0719661ad.tar.bz2
Merge pull request #992 from MikeMcQuaid/migrate-legacy-symlinks-harder
Improve legacy symlink migration.
Diffstat (limited to 'Library')
-rw-r--r--Library/Homebrew/utils.rb28
1 files changed, 18 insertions, 10 deletions
diff --git a/Library/Homebrew/utils.rb b/Library/Homebrew/utils.rb
index b3520a7ec..0c36da2e1 100644
--- a/Library/Homebrew/utils.rb
+++ b/Library/Homebrew/utils.rb
@@ -625,22 +625,30 @@ def migrate_legacy_keg_symlinks_if_necessary
legacy_linked_kegs = HOMEBREW_LIBRARY/"LinkedKegs"
return unless legacy_linked_kegs.directory?
- legacy_linked_kegs.children.each do |f|
- keg = Keg.new(f.realpath)
- keg.unlink
- keg.link
+ legacy_linked_kegs.children.each do |link|
+ name = link.basename
+ src = begin
+ link.realpath
+ rescue Errno::ENOENT
+ begin
+ (HOMEBREW_PREFIX/"opt/#{name}").realpath
+ rescue Errno::ENOENT
+ Formulary.factory(name).installed_prefix
+ end
+ end
+ dst = HOMEBREW_LINKED_KEGS/name
+ FileUtils.ln_sf(src.relative_path_from(dst.parent), dst)
end
FileUtils.rm_rf legacy_linked_kegs
legacy_pinned_kegs = HOMEBREW_LIBRARY/"PinnedKegs"
return unless legacy_pinned_kegs.directory?
- legacy_pinned_kegs.children.each do |f|
- pin_version = Keg.new(f.realpath).version
- formula = Formulary.factory(f.basename.to_s)
- pin = FormulaPin.new(formula)
- pin.unpin
- pin.pin_at(pin_version)
+ legacy_pinned_kegs.children.each do |link|
+ name = link.basename
+ src = link.realpath
+ dst = HOMEBREW_PINNED_KEGS/name
+ FileUtils.ln_sf(src.relative_path_from(dst.parent), dst)
end
FileUtils.rm_rf legacy_pinned_kegs
end