diff --git a/Library/Homebrew/cmd/info.rb b/Library/Homebrew/cmd/info.rb index ee5cc8e887..b9de91dbdf 100644 --- a/Library/Homebrew/cmd/info.rb +++ b/Library/Homebrew/cmd/info.rb @@ -63,7 +63,7 @@ module Homebrew extend self if f.keg_only? puts puts "This formula is keg-only." - puts f.keg_only? + puts f.keg_only_reason puts end diff --git a/Library/Homebrew/formula.rb b/Library/Homebrew/formula.rb index 710a084c1f..b61bb999ae 100644 --- a/Library/Homebrew/formula.rb +++ b/Library/Homebrew/formula.rb @@ -174,7 +174,12 @@ class Formula # rarely, you don't want your library symlinked into the main prefix # see gettext.rb for an example def keg_only? - self.class.keg_only_reason || false + kor = self.class.keg_only_reason + not kor.nil? and kor.valid? + end + + def keg_only_reason + self.class.keg_only_reason end def fails_with? cc diff --git a/Library/Homebrew/formula_installer.rb b/Library/Homebrew/formula_installer.rb index bb9b7e2306..949fbdcc49 100644 --- a/Library/Homebrew/formula_installer.rb +++ b/Library/Homebrew/formula_installer.rb @@ -425,7 +425,7 @@ end class Formula def keg_only_text # Add indent into reason so undent won't truncate the beginnings of lines - reason = self.keg_only?.to_s.gsub(/[\n]/, "\n ") + reason = self.keg_only_reason.to_s.gsub(/[\n]/, "\n ") return <<-EOS.undent This formula is keg-only, so it was not symlinked into #{HOMEBREW_PREFIX}. diff --git a/Library/Homebrew/formula_support.rb b/Library/Homebrew/formula_support.rb index c0b920b2cf..2119fbd116 100644 --- a/Library/Homebrew/formula_support.rb +++ b/Library/Homebrew/formula_support.rb @@ -136,19 +136,32 @@ class KegOnlyReason def initialize reason, explanation=nil @reason = reason @explanation = explanation + @valid = case @reason + when :when_xquartz_installed then MacOS::XQuartz.installed? + else true + end + end + + def valid? + @valid end def to_s - if @reason == :provided_by_osx - <<-EOS.strip -Mac OS X already provides this program and installing another version in -parallel can cause all kinds of trouble. + case @reason + when :provided_by_osx then <<-EOS.undent + Mac OS X already provides this software and installing another version in + parallel can cause all kinds of trouble. -#{@explanation} -EOS + #{@explanation} + EOS + when :when_xquartz_installed then <<-EOS.undent + XQuartz provides this software. + + #{@explanation} + EOS else - @reason.strip - end + @reason + end.strip end end