migrator: don't link newname if oldname isn't linked
- link newname only if oldname used to be linked - optlink newname only if oldname used to be optlinked.
This commit is contained in:
parent
2c1d8bcf65
commit
9736159c03
@ -131,7 +131,7 @@ class Migrator
|
|||||||
unlink_oldname
|
unlink_oldname
|
||||||
move_to_new_directory
|
move_to_new_directory
|
||||||
repin
|
repin
|
||||||
link_newname
|
link_newname if oldkeg_linked?
|
||||||
link_oldname_opt
|
link_oldname_opt
|
||||||
link_oldname_cellar
|
link_oldname_cellar
|
||||||
update_tabs
|
update_tabs
|
||||||
@ -182,7 +182,10 @@ class Migrator
|
|||||||
oh1 "Linking #{Tty.green}#{newname}#{Tty.reset}"
|
oh1 "Linking #{Tty.green}#{newname}#{Tty.reset}"
|
||||||
keg = Keg.new(formula.installed_prefix)
|
keg = Keg.new(formula.installed_prefix)
|
||||||
|
|
||||||
if formula.keg_only?
|
# If old_keg wasn't linked then we just optlink a keg.
|
||||||
|
# If old keg wasn't optlinked and linked, we don't call this method at all.
|
||||||
|
# If formula is keg-only we also optlink it.
|
||||||
|
if formula.keg_only? || !old_linked_keg_record
|
||||||
begin
|
begin
|
||||||
keg.optlink
|
keg.optlink
|
||||||
rescue Keg::LinkError => e
|
rescue Keg::LinkError => e
|
||||||
@ -241,7 +244,7 @@ class Migrator
|
|||||||
# Remove opt/oldname link if it belongs to newname.
|
# Remove opt/oldname link if it belongs to newname.
|
||||||
def unlink_oldname_opt
|
def unlink_oldname_opt
|
||||||
return unless old_opt_record
|
return unless old_opt_record
|
||||||
if (old_opt_record.symlink? && old_opt_record.exist?) \
|
if old_opt_record.symlink? && old_opt_record.exist? \
|
||||||
&& formula.installed_prefix.exist? \
|
&& formula.installed_prefix.exist? \
|
||||||
&& formula.installed_prefix.realpath == old_opt_record.realpath
|
&& formula.installed_prefix.realpath == old_opt_record.realpath
|
||||||
old_opt_record.unlink
|
old_opt_record.unlink
|
||||||
@ -285,18 +288,27 @@ class Migrator
|
|||||||
end
|
end
|
||||||
|
|
||||||
if oldkeg_linked?
|
if oldkeg_linked?
|
||||||
begin
|
# The keg used to be linked and when we backup everything we restore
|
||||||
# The keg used to be linked and when we backup everything we restore
|
# Cellar/oldname, the target also gets restored, so we are able to
|
||||||
# Cellar/oldname, the target also gets restored, so we are able to
|
# create a keg using its old path
|
||||||
# create a keg using its old path
|
if old_linked_keg_record
|
||||||
keg = Keg.new(Pathname.new(oldkeg.to_s))
|
begin
|
||||||
keg.link
|
oldkeg.link
|
||||||
rescue Keg::LinkError
|
rescue Keg::LinkError
|
||||||
keg.unlink
|
oldkeg.unlink
|
||||||
raise
|
raise
|
||||||
rescue Keg::AlreadyLinkedError
|
rescue Keg::AlreadyLinkedError
|
||||||
keg.unlink
|
oldkeg.unlink
|
||||||
retry
|
retry
|
||||||
|
end
|
||||||
|
else
|
||||||
|
begin
|
||||||
|
oldkeg.optlink
|
||||||
|
rescue Keg::LinkError => e
|
||||||
|
onoe "Failed to create #{formula.opt_prefix}"
|
||||||
|
puts e
|
||||||
|
raise
|
||||||
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user