formula_installer: use default_formula for bottles
This was the original, intended functionality before this was broken in fe117bf79b244c42b7e4049d353c3c003eae4880. Fixes https://github.com/Homebrew/homebrew-core/issues/13680.
This commit is contained in:
parent
ac2cbd2137
commit
a83baba8b5
@ -402,14 +402,13 @@ class FormulaInstaller
|
||||
raise UnsatisfiedRequirements, fatals
|
||||
end
|
||||
|
||||
def install_requirement_formula?(req, dependent, build)
|
||||
req_dependency = req.to_dependency
|
||||
def install_requirement_formula?(req_dependency, req, install_bottle_for_dependent)
|
||||
return false unless req_dependency
|
||||
return true unless req.satisfied?
|
||||
return false if req.run?
|
||||
return true if build_bottle?
|
||||
return true if req.satisfied_by_formula?
|
||||
install_bottle_for?(dependent, build)
|
||||
install_bottle_for_dependent
|
||||
end
|
||||
|
||||
def runtime_requirements(formula)
|
||||
@ -429,19 +428,21 @@ class FormulaInstaller
|
||||
runtime_requirements = runtime_requirements(f)
|
||||
f.recursive_requirements do |dependent, req|
|
||||
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)
|
||||
Requirement.prune
|
||||
elsif req.build? && install_bottle_for?(dependent, build)
|
||||
elsif req.build? && install_bottle_for_dependent
|
||||
Requirement.prune
|
||||
elsif install_requirement_formula?(req, dependent, build)
|
||||
dep = req.to_dependency
|
||||
deps.unshift(dep)
|
||||
formulae.unshift(dep.to_formula)
|
||||
elsif install_requirement_formula?(req_dependency, req, install_bottle_for_dependent)
|
||||
deps.unshift(req_dependency)
|
||||
formulae.unshift(req_dependency.to_formula)
|
||||
Requirement.prune
|
||||
elsif req.satisfied?
|
||||
Requirement.prune
|
||||
elsif !runtime_requirements.include?(req) && install_bottle_for?(dependent, build)
|
||||
elsif !runtime_requirements.include?(req) && install_bottle_for_dependent
|
||||
Requirement.prune
|
||||
else
|
||||
unsatisfied_reqs[dependent] << req
|
||||
|
||||
@ -129,8 +129,10 @@ class Requirement
|
||||
!@formula.nil?
|
||||
end
|
||||
|
||||
def to_dependency
|
||||
if formula =~ HOMEBREW_TAP_FORMULA_REGEX
|
||||
def to_dependency(use_default_formula: false)
|
||||
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)
|
||||
elsif formula
|
||||
Dependency.new(formula, tags, method(:modify_build_environment), name)
|
||||
|
||||
@ -135,22 +135,22 @@ describe FormulaInstaller do
|
||||
}.to raise_error(CannotInstallFormulaError)
|
||||
end
|
||||
|
||||
describe "#install_requirement_formula?" do
|
||||
describe "#install_requirement_formula?", :focus do
|
||||
before do
|
||||
@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_by_formula?).and_return(satisfied_by_formula?)
|
||||
allow_any_instance_of(Dependency).to receive(:installed?).and_return(installed?)
|
||||
@dependent = formula do
|
||||
url "foo"
|
||||
version "0.1"
|
||||
depends_on :python3
|
||||
end
|
||||
@build = BuildOptions.new [], []
|
||||
@fi = FormulaInstaller.new(@dependent)
|
||||
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
|
||||
let(:satisfied?) { true }
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user