Attempt to fix opt link if absent

This is mainly to prevent errors when users for the transitionary period where most installed kegs do not have an opt link.
This commit is contained in:
Max Howell 2012-08-27 12:02:57 -04:00
parent d89b3272f4
commit 0efd1b9efe

View File

@ -67,10 +67,7 @@ def install f
keg_only_deps.each do |dep| keg_only_deps.each do |dep|
opt = HOMEBREW_PREFIX/:opt/dep.name opt = HOMEBREW_PREFIX/:opt/dep.name
fixopt(dep) unless opt.directory?
#TODO try to fix, if only one key, easy, otherwise check formula.version
raise "#{opt} not present\nReinstall #{dep}. Sorry :(" unless opt.directory?
if not superenv? if not superenv?
ENV.prepend_path 'PATH', "#{opt}/bin" ENV.prepend_path 'PATH', "#{opt}/bin"
ENV.prepend_path 'PKG_CONFIG_PATH', "#{opt}/lib/pkgconfig" ENV.prepend_path 'PKG_CONFIG_PATH', "#{opt}/lib/pkgconfig"
@ -128,3 +125,18 @@ def install f
end end
end end
end end
def fixopt f
path = if f.linked_keg.directory? and f.linked_keg.symlink?
f.linked_keg.readlink
elsif f.prefix.directory?
f.prefix
elsif (kids = f.rack.children).size == 1
kids.first
else
raise
end
Keg.new(path).optlink
rescue StandardError
"#{opt} not present or broken\nPlease reinstall #{dep}. Sorry :("
end