Merge pull request #992 from MikeMcQuaid/migrate-legacy-symlinks-harder

Improve legacy symlink migration.
This commit is contained in:
Mike McQuaid 2016-09-17 18:58:00 +01:00 committed by GitHub
commit 5b8329b1c1

View File

@ -625,22 +625,30 @@ def migrate_legacy_keg_symlinks_if_necessary
legacy_linked_kegs = HOMEBREW_LIBRARY/"LinkedKegs" legacy_linked_kegs = HOMEBREW_LIBRARY/"LinkedKegs"
return unless legacy_linked_kegs.directory? return unless legacy_linked_kegs.directory?
legacy_linked_kegs.children.each do |f| legacy_linked_kegs.children.each do |link|
keg = Keg.new(f.realpath) name = link.basename
keg.unlink src = begin
keg.link 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 end
FileUtils.rm_rf legacy_linked_kegs FileUtils.rm_rf legacy_linked_kegs
legacy_pinned_kegs = HOMEBREW_LIBRARY/"PinnedKegs" legacy_pinned_kegs = HOMEBREW_LIBRARY/"PinnedKegs"
return unless legacy_pinned_kegs.directory? return unless legacy_pinned_kegs.directory?
legacy_pinned_kegs.children.each do |f| legacy_pinned_kegs.children.each do |link|
pin_version = Keg.new(f.realpath).version name = link.basename
formula = Formulary.factory(f.basename.to_s) src = link.realpath
pin = FormulaPin.new(formula) dst = HOMEBREW_PINNED_KEGS/name
pin.unpin FileUtils.ln_sf(src.relative_path_from(dst.parent), dst)
pin.pin_at(pin_version)
end end
FileUtils.rm_rf legacy_pinned_kegs FileUtils.rm_rf legacy_pinned_kegs
end end