Skip pouring from a bottle if --cc is passed
A formula should be built from source by default if the --cc option is passed to specify a particular compiler. Added a test to test_formula_installer: test_not_poured_from_bottle_when_compiler_specified Modified test_formula_installer to assert that the formula was not poured from a bottle. Similarly modified test_formula_installer_bottle to assert that the formula *was* installed from a bottle. Added an install method to the TestballBottle formula (the same as the Testball formula's install method) so that the TestballBottle formula can be "built from source". Fixes Homebrew/homebrew#46046 - Build from source should be the default behavior if --cc option is passed Closes Homebrew/homebrew#46162. Signed-off-by: Mike McQuaid <mike@mikemcquaid.com>
This commit is contained in:
		
							parent
							
								
									1855dd1da8
								
							
						
					
					
						commit
						af10515f81
					
				@ -80,6 +80,7 @@ class FormulaInstaller
 | 
			
		||||
    bottle = formula.bottle
 | 
			
		||||
    return true  if force_bottle? && bottle
 | 
			
		||||
    return false if build_from_source? || build_bottle? || interactive?
 | 
			
		||||
    return false if ARGV.cc
 | 
			
		||||
    return false unless options.empty?
 | 
			
		||||
    return false if formula.bottle_disabled?
 | 
			
		||||
    return true  if formula.local_bottle_path
 | 
			
		||||
 | 
			
		||||
@ -3,7 +3,9 @@ require "formula"
 | 
			
		||||
require "compat/formula_specialties"
 | 
			
		||||
require "formula_installer"
 | 
			
		||||
require "keg"
 | 
			
		||||
require "tab"
 | 
			
		||||
require "testball"
 | 
			
		||||
require "testball_bottle"
 | 
			
		||||
 | 
			
		||||
class InstallTests < Homebrew::TestCase
 | 
			
		||||
  def temporary_install(formula)
 | 
			
		||||
@ -18,6 +20,8 @@ class InstallTests < Homebrew::TestCase
 | 
			
		||||
    assert_predicate formula, :installed?
 | 
			
		||||
 | 
			
		||||
    begin
 | 
			
		||||
      refute_predicate Tab.for_keg(keg), :poured_from_bottle
 | 
			
		||||
 | 
			
		||||
      yield formula
 | 
			
		||||
    ensure
 | 
			
		||||
      keg.unlink
 | 
			
		||||
@ -67,4 +71,19 @@ class InstallTests < Homebrew::TestCase
 | 
			
		||||
      assert_predicate f, :installed?
 | 
			
		||||
    end
 | 
			
		||||
  end
 | 
			
		||||
 | 
			
		||||
  def test_not_poured_from_bottle_when_compiler_specified
 | 
			
		||||
    assert_nil ARGV.cc
 | 
			
		||||
 | 
			
		||||
    cc_arg = "--cc=llvm-gcc"
 | 
			
		||||
    ARGV << cc_arg
 | 
			
		||||
    begin
 | 
			
		||||
      temporary_install(TestballBottle.new) do |f|
 | 
			
		||||
        tab = Tab.for_formula(f)
 | 
			
		||||
        assert_equal "llvm", tab.compiler
 | 
			
		||||
      end
 | 
			
		||||
    ensure
 | 
			
		||||
      ARGV.delete_if { |x| x == cc_arg }
 | 
			
		||||
    end
 | 
			
		||||
  end
 | 
			
		||||
end
 | 
			
		||||
 | 
			
		||||
@ -3,8 +3,9 @@ require "formula"
 | 
			
		||||
require "compat/formula_specialties"
 | 
			
		||||
require "formula_installer"
 | 
			
		||||
require "keg"
 | 
			
		||||
require "testball_bottle"
 | 
			
		||||
require "tab"
 | 
			
		||||
require "testball"
 | 
			
		||||
require "testball_bottle"
 | 
			
		||||
 | 
			
		||||
class InstallBottleTests < Homebrew::TestCase
 | 
			
		||||
  def temporary_bottle_install(formula)
 | 
			
		||||
@ -21,6 +22,8 @@ class InstallBottleTests < Homebrew::TestCase
 | 
			
		||||
    assert_predicate formula, :installed?
 | 
			
		||||
 | 
			
		||||
    begin
 | 
			
		||||
      assert_predicate Tab.for_keg(keg), :poured_from_bottle
 | 
			
		||||
 | 
			
		||||
      yield formula
 | 
			
		||||
    ensure
 | 
			
		||||
      keg.unlink
 | 
			
		||||
 | 
			
		||||
@ -1,3 +1,4 @@
 | 
			
		||||
require "bundler"
 | 
			
		||||
require "testing_env"
 | 
			
		||||
 | 
			
		||||
class IntegrationCommandTests < Homebrew::TestCase
 | 
			
		||||
 | 
			
		||||
@ -12,4 +12,9 @@ class TestballBottle < Formula
 | 
			
		||||
    end
 | 
			
		||||
    super
 | 
			
		||||
  end
 | 
			
		||||
 | 
			
		||||
  def install
 | 
			
		||||
    prefix.install "bin"
 | 
			
		||||
    prefix.install "libexec"
 | 
			
		||||
  end
 | 
			
		||||
end
 | 
			
		||||
 | 
			
		||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user