aboutsummaryrefslogtreecommitdiffstats
path: root/Library
diff options
context:
space:
mode:
authorAdam Vandenberg2010-08-09 21:58:47 -0700
committerAdam Vandenberg2010-08-09 21:58:47 -0700
commit5615f9d0a95c09cc53e8270ca7dd64237663f3ff (patch)
treec27be5e05a437c69c49dda10bb342b8e25abd3b1 /Library
parent0ee5096a2b0d9677ebf64d0f9e88ff954f7465a7 (diff)
downloadhomebrew-5615f9d0a95c09cc53e8270ca7dd64237663f3ff.tar.bz2
brew doctor - check all keg_only brews
Add a check to see if any keg_only brews are installed and linked into the Cellar. Doing this can cause installs of other formulae to fail.
Diffstat (limited to 'Library')
-rw-r--r--Library/Homebrew/brew_doctor.rb44
1 files changed, 44 insertions, 0 deletions
diff --git a/Library/Homebrew/brew_doctor.rb b/Library/Homebrew/brew_doctor.rb
index f38bdcb54..204337754 100644
--- a/Library/Homebrew/brew_doctor.rb
+++ b/Library/Homebrew/brew_doctor.rb
@@ -445,6 +445,49 @@ def check_for_autoconf
end
end
+def __check_linked_brew f
+ links_found = []
+
+ Pathname.new(f.prefix).find do |src|
+ dst=HOMEBREW_PREFIX+src.relative_path_from(f.prefix)
+ next unless dst.symlink?
+ links_found << dst unless src.directory?
+ Find.prune if src.directory?
+ end
+
+ return links_found
+end
+
+def check_for_linked_kegonly_brews
+ require 'formula'
+
+ warnings = Hash.new
+
+ Formula.all.each do |f|
+ next unless f.keg_only? and f.installed?
+ links = __check_linked_brew f
+ warnings[f.name] = links unless links.empty?
+ end
+
+ unless warnings.empty?
+ puts <<-EOS.undent
+ Some keg-only formula are linked into the Cellar.
+
+ Linking a keg-only formula, such as gettext, into the cellar with
+ `brew link f` will cause other formulae to detect them during the
+ `./configure` step. This may cause problems when compiling those
+ other formulae.
+
+ Binaries provided by keg-only formulae may override system binaries
+ with other strange results.
+
+ You may wish to `brew unlink` these brews:
+ EOS
+
+ puts *warnings.keys.collect { |f| " #{f}" }
+ end
+end
+
def brew_doctor
read, write = IO.pipe
@@ -473,6 +516,7 @@ def brew_doctor
check_for_multiple_volumes
check_for_git
check_for_autoconf
+ check_for_linked_kegonly_brews
exit! 0
else