aboutsummaryrefslogtreecommitdiffstats
path: root/Library
diff options
context:
space:
mode:
authorMike McQuaid2018-01-18 15:30:56 +0000
committerGitHub2018-01-18 15:30:56 +0000
commit8a45467ad9c61d50db86614730e54c59e804acd8 (patch)
tree380d9ed4e0a0a295940accbf53f8179d4360f4f8 /Library
parent1aa8aff84ae732c95827c21dd00b8ac377ede713 (diff)
parentb70b5429d09d13526ccc08c67fd6a6373b471409 (diff)
downloadbrew-8a45467ad9c61d50db86614730e54c59e804acd8.tar.bz2
Merge pull request #3661 from MikeMcQuaid/deprecate-default-formula
Deprecate default_formula Requirement DSL
Diffstat (limited to 'Library')
-rw-r--r--Library/Homebrew/build.rb3
-rw-r--r--Library/Homebrew/cmd/deps.rb21
-rw-r--r--Library/Homebrew/cmd/uses.rb4
-rw-r--r--Library/Homebrew/formula.rb8
-rw-r--r--Library/Homebrew/formula_installer.rb18
-rw-r--r--Library/Homebrew/os/mac/linkage_checker.rb3
-rw-r--r--Library/Homebrew/requirement.rb39
-rw-r--r--Library/Homebrew/test/requirement_spec.rb55
8 files changed, 12 insertions, 139 deletions
diff --git a/Library/Homebrew/build.rb b/Library/Homebrew/build.rb
index 836b360da..d61c3672a 100644
--- a/Library/Homebrew/build.rb
+++ b/Library/Homebrew/build.rb
@@ -48,9 +48,6 @@ class Build
Requirement.prune
elsif req.build? && dependent != formula
Requirement.prune
- elsif req.satisfied? && (dep = req.to_dependency) && dep.installed?
- deps << dep
- Requirement.prune
end
end
end
diff --git a/Library/Homebrew/cmd/deps.rb b/Library/Homebrew/cmd/deps.rb
index ae758e143..0627e84bd 100644
--- a/Library/Homebrew/cmd/deps.rb
+++ b/Library/Homebrew/cmd/deps.rb
@@ -94,26 +94,14 @@ module Homebrew
if ARGV.include?("--include-requirements")
deps
else
- deps.map do |dep|
- if dep.is_a? Dependency
- dep
- elsif dep.default_formula?
- dep.to_dependency
- end
- end.compact
+ deps.select { |dep| dep.is_a? Dependency }
end
end
def dep_display_name(dep)
str = if dep.is_a? Requirement
if ARGV.include?("--include-requirements")
- if dep.default_formula?
- ":#{dep.display_s} (#{dep_display_name(dep.to_dependency)})"
- else
- ":#{dep.display_s}"
- end
- elsif dep.default_formula?
- dep_display_name(dep.to_dependency)
+ ":#{dep.display_s}"
else
# This shouldn't happen, but we'll put something here to help debugging
"::#{dep.name}"
@@ -207,7 +195,7 @@ module Homebrew
max = dependables.length - 1
@dep_stack.push f.name
dependables.each_with_index do |dep, i|
- next if !ARGV.include?("--include-requirements") && dep.is_a?(Requirement) && !dep.default_formula?
+ next if !ARGV.include?("--include-requirements") && dep.is_a?(Requirement)
tree_lines = if i == max
"└──"
else
@@ -223,9 +211,6 @@ module Homebrew
else
"│ "
end
- if dep.is_a?(Requirement) && dep.default_formula?
- recursive_deps_tree(Formulary.factory(dep.to_dependency.name), prefix + prefix_addition, true)
- end
if dep.is_a? Dependency
recursive_deps_tree(Formulary.factory(dep.name), prefix + prefix_addition, true)
end
diff --git a/Library/Homebrew/cmd/uses.rb b/Library/Homebrew/cmd/uses.rb
index 1688899f9..d5c9210f6 100644
--- a/Library/Homebrew/cmd/uses.rb
+++ b/Library/Homebrew/cmd/uses.rb
@@ -113,9 +113,7 @@ module Homebrew
end
end
- reqs.any? do |req|
- req.name == ff.name || [ff.name, ff.full_name].include?(req.default_formula)
- end
+ reqs.any? { |req| req.name == ff.name }
rescue FormulaUnavailableError
# Silently ignore this case as we don't care about things used in
# taps that aren't currently tapped.
diff --git a/Library/Homebrew/formula.rb b/Library/Homebrew/formula.rb
index 2b7460408..ad7e28a2e 100644
--- a/Library/Homebrew/formula.rb
+++ b/Library/Homebrew/formula.rb
@@ -1487,15 +1487,10 @@ class Formula
# Returns a list of Dependency objects that are required at runtime.
# @private
def runtime_dependencies
- runtime_dependencies = recursive_dependencies do |_, dependency|
+ recursive_dependencies do |_, dependency|
Dependency.prune if dependency.build?
Dependency.prune if !dependency.required? && build.without?(dependency)
end
- runtime_requirement_deps = recursive_requirements do |_, requirement|
- Requirement.prune if requirement.build?
- Requirement.prune if !requirement.required? && build.without?(requirement)
- end.map(&:to_dependency).compact
- runtime_dependencies + runtime_requirement_deps
end
# Returns a list of formulae depended on by this formula that aren't
@@ -1553,7 +1548,6 @@ class Formula
hsh["requirements"] = requirements.map do |req|
{
"name" => req.name,
- "default_formula" => req.default_formula,
"cask" => req.cask,
"download" => req.download,
}
diff --git a/Library/Homebrew/formula_installer.rb b/Library/Homebrew/formula_installer.rb
index 4f8708a4d..2105b9d71 100644
--- a/Library/Homebrew/formula_installer.rb
+++ b/Library/Homebrew/formula_installer.rb
@@ -415,16 +415,6 @@ class FormulaInstaller
raise UnsatisfiedRequirements, fatals
end
- 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?
- return true if req.satisfied_by_formula?
- install_bottle_for_dependent
- end
-
def runtime_requirements(formula)
runtime_deps = formula.runtime_dependencies.map(&:to_formula)
recursive_requirements = formula.recursive_requirements do |dependent, _|
@@ -443,17 +433,9 @@ class FormulaInstaller
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? && use_default_formula && req_dependency&.installed?
- Requirement.prune
- elsif install_requirement_formula?(req_dependency, req, dependent, 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
diff --git a/Library/Homebrew/os/mac/linkage_checker.rb b/Library/Homebrew/os/mac/linkage_checker.rb
index 941a5a847..e1709d1b4 100644
--- a/Library/Homebrew/os/mac/linkage_checker.rb
+++ b/Library/Homebrew/os/mac/linkage_checker.rb
@@ -62,8 +62,7 @@ class LinkageChecker
formula.build.without?(dep)
end
declared_deps = formula.deps.reject { |dep| filter_out.call(dep) }.map(&:name)
- declared_requirement_deps = formula.requirements.reject { |req| filter_out.call(req) }.map(&:default_formula).compact
- declared_dep_names = (declared_deps + declared_requirement_deps).map { |dep| dep.split("/").last }
+ declared_dep_names = declared_deps.map { |dep| dep.split("/").last }
undeclared_deps = @brewed_dylibs.keys.reject do |full_name|
name = full_name.split("/").last
next true if name == formula.name
diff --git a/Library/Homebrew/requirement.rb b/Library/Homebrew/requirement.rb
index 91f84157e..e2b1afbb9 100644
--- a/Library/Homebrew/requirement.rb
+++ b/Library/Homebrew/requirement.rb
@@ -9,13 +9,11 @@ require "build_environment"
class Requirement
include Dependable
- attr_reader :tags, :name, :cask, :download, :default_formula
+ attr_reader :tags, :name, :cask, :download
def initialize(tags = [])
- @default_formula = self.class.default_formula
@cask ||= self.class.cask
@download ||= self.class.download
- @formula = nil
tags.each do |tag|
next unless tag.is_a? Hash
@cask ||= tag[:cask]
@@ -56,12 +54,6 @@ class Requirement
result = self.class.satisfy.yielder { |p| instance_eval(&p) }
@satisfied_result = result
return false unless result
-
- if parent = satisfied_result_parent
- parent.to_s =~ %r{(#{Regexp.escape(HOMEBREW_CELLAR)}|#{Regexp.escape(HOMEBREW_PREFIX)}/opt)/([\w+-.@]+)}
- @formula = Regexp.last_match(2)
- end
-
true
end
@@ -71,10 +63,6 @@ class Requirement
self.class.fatal || false
end
- def default_formula?
- self.class.default_formula || false
- end
-
def satisfied_result_parent
return unless @satisfied_result.is_a?(Pathname)
parent = @satisfied_result.resolved_path.parent
@@ -124,24 +112,6 @@ class Requirement
"#<#{self.class.name}: #{name.inspect} #{tags.inspect}>"
end
- def formula
- @formula || self.class.default_formula
- end
-
- def satisfied_by_formula?
- !@formula.nil?
- end
-
- 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)
- end
- end
-
def display_s
name
end
@@ -167,8 +137,11 @@ class Requirement
include BuildEnvironment::DSL
attr_reader :env_proc, :build
- attr_rw :fatal, :default_formula
- attr_rw :cask, :download
+ attr_rw :fatal, :cask, :download
+
+ def default_formula(val = nil)
+ # odeprecated "Requirement.default_formula"
+ end
def satisfy(options = nil, &block)
return @satisfied if options.nil? && !block_given?
diff --git a/Library/Homebrew/test/requirement_spec.rb b/Library/Homebrew/test/requirement_spec.rb
index 2d0d86c86..1f3d872f3 100644
--- a/Library/Homebrew/test/requirement_spec.rb
+++ b/Library/Homebrew/test/requirement_spec.rb
@@ -2,7 +2,6 @@ require "extend/ENV"
require "requirement"
describe Requirement do
- alias_matcher :have_a_default_formula, :be_a_default_formula
alias_matcher :be_a_build_requirement, :be_a_build
subject { klass.new }
@@ -173,60 +172,6 @@ describe Requirement do
its(:option_names) { are_expected.to eq(["foo"]) }
end
- describe "#default_formula?" do
- context "#default_formula specified" do
- let(:klass) do
- Class.new(described_class) do
- default_formula "foo"
- end
- end
-
- it { is_expected.to have_a_default_formula }
- end
-
- context "#default_formula omitted" do
- it { is_expected.not_to have_a_default_formula }
- end
- end
-
- describe "#to_dependency" do
- let(:klass) do
- Class.new(described_class) do
- default_formula "foo"
- end
- end
-
- it "returns a Dependency for its default Formula" do
- expect(subject.to_dependency).to eq(Dependency.new("foo"))
- end
-
- context "#modify_build_environment" do
- context "with error" do
- let(:klass) do
- Class.new(described_class) do
- class ModifyBuildEnvironmentError < StandardError; end
-
- default_formula "foo"
-
- satisfy do
- true
- end
-
- env do
- raise ModifyBuildEnvironmentError
- end
- end
- end
-
- it "raises an error" do
- expect {
- subject.to_dependency.modify_build_environment
- }.to raise_error(klass.const_get(:ModifyBuildEnvironmentError))
- end
- end
- end
- end
-
describe "#modify_build_environment" do
context "without env proc" do
let(:klass) { Class.new(described_class) }