diff options
| author | Mike McQuaid | 2017-07-30 16:56:24 +0100 |
|---|---|---|
| committer | Mike McQuaid | 2017-07-30 16:56:24 +0100 |
| commit | a83baba8b50e29e680b89588ca19347ac0133608 (patch) | |
| tree | 4566834d29ee6d553cc9d5367f7e6592bc2ac7f3 /Library | |
| parent | ac2cbd2137006ebfe84d8584ccdcb5d78c1130d9 (diff) | |
| download | brew-a83baba8b50e29e680b89588ca19347ac0133608.tar.bz2 | |
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.
Diffstat (limited to 'Library')
| -rw-r--r-- | Library/Homebrew/formula_installer.rb | 19 | ||||
| -rw-r--r-- | Library/Homebrew/requirement.rb | 6 | ||||
| -rw-r--r-- | Library/Homebrew/test/formula_installer_spec.rb | 8 |
3 files changed, 18 insertions, 15 deletions
diff --git a/Library/Homebrew/formula_installer.rb b/Library/Homebrew/formula_installer.rb index a0c091e7f..d1c2bd08d 100644 --- a/Library/Homebrew/formula_installer.rb +++ b/Library/Homebrew/formula_installer.rb @@ -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 diff --git a/Library/Homebrew/requirement.rb b/Library/Homebrew/requirement.rb index cfb925b49..1ec8580c4 100644 --- a/Library/Homebrew/requirement.rb +++ b/Library/Homebrew/requirement.rb @@ -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) diff --git a/Library/Homebrew/test/formula_installer_spec.rb b/Library/Homebrew/test/formula_installer_spec.rb index d309a17da..852677b07 100644 --- a/Library/Homebrew/test/formula_installer_spec.rb +++ b/Library/Homebrew/test/formula_installer_spec.rb @@ -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 } |
