diff options
| author | Mike McQuaid | 2017-07-30 18:41:10 +0100 |
|---|---|---|
| committer | GitHub | 2017-07-30 18:41:10 +0100 |
| commit | e755505c70c52d707c83130c17ab37dd2b2e8d48 (patch) | |
| tree | b6793c7382a2ac52af66c6ecedb5b166cbed18cb /Library | |
| parent | ae9d36b2dd9018d6e0f8a73b8cc38b2b3890d244 (diff) | |
| parent | a83baba8b50e29e680b89588ca19347ac0133608 (diff) | |
| download | brew-e755505c70c52d707c83130c17ab37dd2b2e8d48.tar.bz2 | |
Merge pull request #2969 from MikeMcQuaid/default-formula-bottles
formula_installer: use default_formula for bottles
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 9af8976bc..f2100a908 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 49bb5d564..c3573ae94 100644 --- a/Library/Homebrew/test/formula_installer_spec.rb +++ b/Library/Homebrew/test/formula_installer_spec.rb @@ -133,22 +133,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 } |
