From a7e6e71405cfd86dcf7e943308d4b173b0867761 Mon Sep 17 00:00:00 2001 From: Adam Vandenberg <flangy@gmail.com> Date: Mon, 9 Aug 2010 21:58:47 -0700 Subject: [PATCH] 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. --- Library/Homebrew/brew_doctor.rb | 44 +++++++++++++++++++++++++++++++++ 1 file changed, 44 insertions(+) diff --git a/Library/Homebrew/brew_doctor.rb b/Library/Homebrew/brew_doctor.rb index f38bdcb54b..204337754d 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 -- GitLab