aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rwxr-xr-xLibrary/Homebrew/build.rb6
-rw-r--r--Library/Homebrew/compilers.rb37
-rw-r--r--Library/Homebrew/formula.rb6
-rw-r--r--Library/Homebrew/test/test_compilers.rb8
4 files changed, 9 insertions, 48 deletions
diff --git a/Library/Homebrew/build.rb b/Library/Homebrew/build.rb
index 6d22c8f1f..8d7d553ec 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 ae3d7590e..f9ed8bcde 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 2186b4a74..9234b45df 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 19eb69434..a30311611 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