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
commita7e6e71405cfd86dcf7e943308d4b173b0867761 (patch)
tree3c89ffbb5501b80c7efd6936ba0d20bdc2642e7a /Library
parent612ff57894e35f7872a86913f338be5f6d539887 (diff)
downloadbrew-a7e6e71405cfd86dcf7e943308d4b173b0867761.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