diff options
| author | Mike McQuaid | 2017-12-07 16:19:23 +0000 |
|---|---|---|
| committer | GitHub | 2017-12-07 16:19:23 +0000 |
| commit | 360d7bc6f4cdea996b55c14d885a8b78da5dd7ad (patch) | |
| tree | 49545521a6a2ca6a11afc9aff3cd59878b18a64f | |
| parent | 34b03dea52b4f5134484eba1fcf277dca935a633 (diff) | |
| parent | b9cf7b2bbc9439080ad397574381b1e8bf1e1f9a (diff) | |
| download | brew-360d7bc6f4cdea996b55c14d885a8b78da5dd7ad.tar.bz2 | |
Merge pull request #3537 from MikeMcQuaid/avoid-irrelevant-build-deps
formula_installer: avoid irrelevant build deps.
| -rw-r--r-- | Library/Homebrew/formula_installer.rb | 7 | ||||
| -rw-r--r-- | Library/Homebrew/test/formula_installer_spec.rb | 16 |
2 files changed, 20 insertions, 3 deletions
diff --git a/Library/Homebrew/formula_installer.rb b/Library/Homebrew/formula_installer.rb index 77e0ab29b..10b0ae9cf 100644 --- a/Library/Homebrew/formula_installer.rb +++ b/Library/Homebrew/formula_installer.rb @@ -417,8 +417,9 @@ class FormulaInstaller raise UnsatisfiedRequirements, fatals end - def install_requirement_formula?(req_dependency, req, install_bottle_for_dependent) + def install_requirement_formula?(req_dependency, req, dependent, install_bottle_for_dependent) return false unless req_dependency + return false if req.build? && dependent.installed? return true unless req.satisfied? return false if req.run? return true if build_bottle? @@ -451,7 +452,7 @@ class FormulaInstaller Requirement.prune elsif req.build? && use_default_formula && req_dependency.installed? Requirement.prune - elsif install_requirement_formula?(req_dependency, req, install_bottle_for_dependent) + elsif install_requirement_formula?(req_dependency, req, dependent, install_bottle_for_dependent) deps.unshift(req_dependency) formulae.unshift(req_dependency.to_formula) Requirement.prune @@ -485,6 +486,8 @@ class FormulaInstaller Dependency.prune elsif dep.build? && install_bottle_for?(dependent, build) Dependency.prune + elsif dep.build? && dependent.installed? + Dependency.prune elsif dep.satisfied?(inherited_options[dep.name]) Dependency.skip end diff --git a/Library/Homebrew/test/formula_installer_spec.rb b/Library/Homebrew/test/formula_installer_spec.rb index 1e3c04b68..b85e75b81 100644 --- a/Library/Homebrew/test/formula_installer_spec.rb +++ b/Library/Homebrew/test/formula_installer_spec.rb @@ -140,19 +140,22 @@ describe FormulaInstaller do @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(@requirement).to receive(:build?).and_return(build?) @dependent = formula do url "foo" version "0.1" depends_on :python3 end + allow(@dependent).to receive(:installed?).and_return(installed?) @fi = FormulaInstaller.new(@dependent) end - subject { @fi.install_requirement_formula?(@requirement_dependency, @requirement, @install_bottle_for_dependent) } + subject { @fi.install_requirement_formula?(@requirement_dependency, @requirement, @dependent, @install_bottle_for_dependent) } context "it returns false when requirement is satisfied" do let(:satisfied?) { true } let(:satisfied_by_formula?) { false } + let(:build?) { false } let(:installed?) { false } it { is_expected.to be false } end @@ -160,6 +163,15 @@ describe FormulaInstaller do context "it returns false when requirement is satisfied but default formula is installed" do let(:satisfied?) { true } let(:satisfied_by_formula?) { false } + let(:build?) { false } + let(:installed?) { false } + it { is_expected.to be false } + end + + context "it returns false when requirement is :build and dependent is installed" do + let(:satisfied?) { false } + let(:satisfied_by_formula?) { false } + let(:build?) { true } let(:installed?) { true } it { is_expected.to be false } end @@ -167,6 +179,7 @@ describe FormulaInstaller do context "it returns true when requirement isn't satisfied" do let(:satisfied?) { false } let(:satisfied_by_formula?) { false } + let(:build?) { false } let(:installed?) { false } it { is_expected.to be true } end @@ -174,6 +187,7 @@ describe FormulaInstaller do context "it returns true when requirement is satisfied by a formula" do let(:satisfied?) { true } let(:satisfied_by_formula?) { true } + let(:build?) { false } let(:installed?) { false } it { is_expected.to be true } end |
