Merge pull request #2969 from MikeMcQuaid/default-formula-bottles
formula_installer: use default_formula for bottles
This commit is contained in:
commit
e755505c70
@ -402,14 +402,13 @@ class FormulaInstaller
|
|||||||
raise UnsatisfiedRequirements, fatals
|
raise UnsatisfiedRequirements, fatals
|
||||||
end
|
end
|
||||||
|
|
||||||
def install_requirement_formula?(req, dependent, build)
|
def install_requirement_formula?(req_dependency, req, install_bottle_for_dependent)
|
||||||
req_dependency = req.to_dependency
|
|
||||||
return false unless req_dependency
|
return false unless req_dependency
|
||||||
return true unless req.satisfied?
|
return true unless req.satisfied?
|
||||||
return false if req.run?
|
return false if req.run?
|
||||||
return true if build_bottle?
|
return true if build_bottle?
|
||||||
return true if req.satisfied_by_formula?
|
return true if req.satisfied_by_formula?
|
||||||
install_bottle_for?(dependent, build)
|
install_bottle_for_dependent
|
||||||
end
|
end
|
||||||
|
|
||||||
def runtime_requirements(formula)
|
def runtime_requirements(formula)
|
||||||
@ -429,19 +428,21 @@ class FormulaInstaller
|
|||||||
runtime_requirements = runtime_requirements(f)
|
runtime_requirements = runtime_requirements(f)
|
||||||
f.recursive_requirements do |dependent, req|
|
f.recursive_requirements do |dependent, req|
|
||||||
build = effective_build_options_for(dependent)
|
build = effective_build_options_for(dependent)
|
||||||
|
install_bottle_for_dependent = install_bottle_for?(dependent, build)
|
||||||
|
use_default_formula = install_bottle_for_dependent || build_bottle?
|
||||||
|
req_dependency = req.to_dependency(use_default_formula: use_default_formula)
|
||||||
|
|
||||||
if (req.optional? || req.recommended?) && build.without?(req)
|
if (req.optional? || req.recommended?) && build.without?(req)
|
||||||
Requirement.prune
|
Requirement.prune
|
||||||
elsif req.build? && install_bottle_for?(dependent, build)
|
elsif req.build? && install_bottle_for_dependent
|
||||||
Requirement.prune
|
Requirement.prune
|
||||||
elsif install_requirement_formula?(req, dependent, build)
|
elsif install_requirement_formula?(req_dependency, req, install_bottle_for_dependent)
|
||||||
dep = req.to_dependency
|
deps.unshift(req_dependency)
|
||||||
deps.unshift(dep)
|
formulae.unshift(req_dependency.to_formula)
|
||||||
formulae.unshift(dep.to_formula)
|
|
||||||
Requirement.prune
|
Requirement.prune
|
||||||
elsif req.satisfied?
|
elsif req.satisfied?
|
||||||
Requirement.prune
|
Requirement.prune
|
||||||
elsif !runtime_requirements.include?(req) && install_bottle_for?(dependent, build)
|
elsif !runtime_requirements.include?(req) && install_bottle_for_dependent
|
||||||
Requirement.prune
|
Requirement.prune
|
||||||
else
|
else
|
||||||
unsatisfied_reqs[dependent] << req
|
unsatisfied_reqs[dependent] << req
|
||||||
|
|||||||
@ -129,8 +129,10 @@ class Requirement
|
|||||||
!@formula.nil?
|
!@formula.nil?
|
||||||
end
|
end
|
||||||
|
|
||||||
def to_dependency
|
def to_dependency(use_default_formula: false)
|
||||||
if formula =~ HOMEBREW_TAP_FORMULA_REGEX
|
if use_default_formula && default_formula?
|
||||||
|
Dependency.new(self.class.default_formula, tags, method(:modify_build_environment), name)
|
||||||
|
elsif formula =~ HOMEBREW_TAP_FORMULA_REGEX
|
||||||
TapDependency.new(formula, tags, method(:modify_build_environment), name)
|
TapDependency.new(formula, tags, method(:modify_build_environment), name)
|
||||||
elsif formula
|
elsif formula
|
||||||
Dependency.new(formula, tags, method(:modify_build_environment), name)
|
Dependency.new(formula, tags, method(:modify_build_environment), name)
|
||||||
|
|||||||
@ -133,22 +133,22 @@ describe FormulaInstaller do
|
|||||||
}.to raise_error(CannotInstallFormulaError)
|
}.to raise_error(CannotInstallFormulaError)
|
||||||
end
|
end
|
||||||
|
|
||||||
describe "#install_requirement_formula?" do
|
describe "#install_requirement_formula?", :focus do
|
||||||
before do
|
before do
|
||||||
@requirement = Python3Requirement.new
|
@requirement = Python3Requirement.new
|
||||||
|
@requirement_dependency = @requirement.to_dependency
|
||||||
|
@install_bottle_for_dependent = false
|
||||||
allow(@requirement).to receive(:satisfied?).and_return(satisfied?)
|
allow(@requirement).to receive(:satisfied?).and_return(satisfied?)
|
||||||
allow(@requirement).to receive(:satisfied_by_formula?).and_return(satisfied_by_formula?)
|
allow(@requirement).to receive(:satisfied_by_formula?).and_return(satisfied_by_formula?)
|
||||||
allow_any_instance_of(Dependency).to receive(:installed?).and_return(installed?)
|
|
||||||
@dependent = formula do
|
@dependent = formula do
|
||||||
url "foo"
|
url "foo"
|
||||||
version "0.1"
|
version "0.1"
|
||||||
depends_on :python3
|
depends_on :python3
|
||||||
end
|
end
|
||||||
@build = BuildOptions.new [], []
|
|
||||||
@fi = FormulaInstaller.new(@dependent)
|
@fi = FormulaInstaller.new(@dependent)
|
||||||
end
|
end
|
||||||
|
|
||||||
subject { @fi.install_requirement_formula?(@requirement, @dependent, @build) }
|
subject { @fi.install_requirement_formula?(@requirement_dependency, @requirement, @install_bottle_for_dependent) }
|
||||||
|
|
||||||
context "it returns false when requirement is satisfied" do
|
context "it returns false when requirement is satisfied" do
|
||||||
let(:satisfied?) { true }
|
let(:satisfied?) { true }
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user