From dc30e941e782f551f9710df7d9088f08523dfc51 Mon Sep 17 00:00:00 2001 From: Max Howell Date: Sat, 27 Feb 2010 17:29:23 +0000 Subject: [PATCH] `brew doctor` --- Library/Homebrew/brew.h.rb | 50 ++++++++++++++++++++++++++++++++++++++ bin/brew | 3 +++ 2 files changed, 53 insertions(+) diff --git a/Library/Homebrew/brew.h.rb b/Library/Homebrew/brew.h.rb index 78f84119f2..8ac1162c86 100644 --- a/Library/Homebrew/brew.h.rb +++ b/Library/Homebrew/brew.h.rb @@ -1,5 +1,6 @@ FORMULA_META_FILES = %w[README README.md ChangeLog COPYING LICENSE LICENCE COPYRIGHT AUTHORS] PLEASE_REPORT_BUG = "#{Tty.white}Please report this bug at #{Tty.em}http://github.com/mxcl/homebrew/issues#{Tty.reset}" +HOMEBREW_RECOMMENDED_GCC = 5577 def check_for_blacklisted_formula names return if ARGV.force? @@ -24,6 +25,55 @@ Mercurial can be install thusly: end end +def brew_doctor + read, write = IO.pipe + + if fork == nil + read.close + $stdout.reopen write + + bad_dylibs = Dir['/usr/local/lib/*.dylib'].select { |f| File.file? f and not File.symlink? f } + if bad_dylibs.count > 0 + puts "You have unbrewed dylibs in /usr/local/lib. These could cause build problems" + puts "when building Homebrew formula. If you no longer need them, delete them:" + puts + puts *bad_dylibs.collect { |f| " #{f}" } + puts + end + + if gcc_build < HOMEBREW_RECOMMENDED_GCC + puts "Your GCC version is older than the recommended version. It may be advisable" + puts "to upgrade to the latest release of Xcode." + puts + end + + if macports_or_fink_installed? + puts "You have Macports or Fink installed. This can cause trouble." + puts "You don't have to uninstall them, but you may like to try temporarily" + puts "moving them away, eg." + puts + puts " sudo mv /opt/local ~/macports" + puts + end + + unless File.exists? '/usr/X11/lib/libpng.dylib' + puts "You don't have X11 installed as part of your Xcode installation." + puts "This isn't required for all formula. But it is expected by some." + end + + exit! 0 + else + write.close + + unless (out = read.read).chomp.empty? + puts out + else + puts "Your OS X is ripe for brewing. Any troubles you may be experiencing are" + puts "likely purely psychosomatic." + end + end +end + def __make url, name require 'formula' require 'digest' diff --git a/bin/brew b/bin/brew index 527a8d39e4..06960f44d4 100755 --- a/bin/brew +++ b/bin/brew @@ -365,6 +365,9 @@ begin when 'branch', 'checkout', 'pull', 'push', 'rebase', 'reset' onoe "Unknown command: #{arg} (did you mean 'git #{arg}'?)" + when 'doctor' + brew_doctor + else onoe "Unknown command: #{arg}" end