diff --git a/Library/Homebrew/build.rb b/Library/Homebrew/build.rb index 6d22c8f1f4..8d7d553eca 100755 --- a/Library/Homebrew/build.rb +++ b/Library/Homebrew/build.rb @@ -114,11 +114,7 @@ def install f end end - if f.fails_with? ENV.compiler - cs = CompilerSelector.new f - cs.select_compiler - cs.advise - end + CompilerSelector.new(f).select_compiler if f.fails_with? ENV.compiler f.brew do if ARGV.flag? '--git' diff --git a/Library/Homebrew/compilers.rb b/Library/Homebrew/compilers.rb index ae3d7590e0..f9ed8bcde0 100644 --- a/Library/Homebrew/compilers.rb +++ b/Library/Homebrew/compilers.rb @@ -68,6 +68,7 @@ class CompilerFailure def initialize compiler, &block @compiler = compiler instance_eval(&block) if block_given? + @build ||= 9999 end def build val=nil @@ -100,8 +101,7 @@ class CompilerSelector # the failing build is >= the currently installed version of foo. @compilers = @compilers.reject do |cc| failure = @f.fails_with? cc - next unless failure - failure.build >= cc.build or not ARGV.homebrew_developer? + failure && failure.build >= cc.build end return if @compilers.empty? or @compilers.include? ENV.compiler @@ -126,37 +126,4 @@ class CompilerSelector end end end - - def advise - failure = @f.fails_with? @old_compiler - return unless failure - - # If we're still using the original ENV.compiler, then the formula did not - # declare a specific failing build, so we continue and print some advice. - # Otherwise, tell the user that we're switching compilers. - if @old_compiler == ENV.compiler - cc = Compiler.new(ENV.compiler) - subject = "#{@f.name}-#{@f.version}: builds with #{NAMES[cc.name]}-#{cc.build}-#{MACOS_VERSION}" - warning = "Using #{NAMES[cc.name]}, but this formula is reported to fail with #{NAMES[cc.name]}." - warning += "\n\n#{failure.cause.strip}\n" unless failure.cause.nil? - warning += <<-EOS.undent - - We are continuing anyway so if the build succeeds, please open a ticket with - the subject - - #{subject} - - so that we can update the formula accordingly. Thanks! - EOS - - viable = @compilers.reject { |c| @f.fails_with? c } - unless viable.empty? - warning += "\nIf it fails you can use " - options = viable.map { |c| "--use-#{c.name}" } - warning += "#{options*' or '} to try a different compiler." - end - - opoo warning - end - end end diff --git a/Library/Homebrew/formula.rb b/Library/Homebrew/formula.rb index 2186b4a749..9234b45df5 100644 --- a/Library/Homebrew/formula.rb +++ b/Library/Homebrew/formula.rb @@ -200,10 +200,8 @@ class Formula def fails_with? cc return false if self.class.cc_failures.nil? cc = Compiler.new(cc) unless cc.is_a? Compiler - return self.class.cc_failures.find do |failure| - next unless failure.compiler == cc.name - failure.build.zero? or \ - (failure.build >= cc.build or not ARGV.homebrew_developer?) + self.class.cc_failures.find do |failure| + failure.compiler == cc.name && failure.build >= cc.build end end diff --git a/Library/Homebrew/test/test_compilers.rb b/Library/Homebrew/test/test_compilers.rb index 19eb694349..a30311611a 100644 --- a/Library/Homebrew/test/test_compilers.rb +++ b/Library/Homebrew/test/test_compilers.rb @@ -94,9 +94,9 @@ class CompilerTests < Test::Unit::TestCase cs.select_compiler - assert_equal case MacOS.clang_build_version - when 0..210 then :gcc - else :clang + assert_equal case MacOS.gcc_42_build_version + when nil then :llvm + else :gcc end, ENV.compiler end @@ -110,6 +110,6 @@ class CompilerTests < Test::Unit::TestCase cs.select_compiler - assert_equal MacOS.default_compiler, ENV.compiler + assert_not_equal :clang, ENV.compiler end end