Rename requirements named *Dependency.

Dependency is another similar, related class and it's super confusing
to have some Requirements that are named *Dependency.

Closes Homebrew/homebrew#38891.

Signed-off-by: Mike McQuaid <mike@mikemcquaid.com>
This commit is contained in:
Mike McQuaid 2015-06-15 09:56:04 +01:00
parent f13ac9b0c8
commit 1e86730289
22 changed files with 109 additions and 88 deletions

View File

@ -81,7 +81,7 @@ class Build
if superenv?
ENV.keg_only_deps = keg_only_deps.map(&:name)
ENV.deps = deps.map { |d| d.to_formula.name }
ENV.x11 = reqs.any? { |rq| rq.kind_of?(X11Dependency) }
ENV.x11 = reqs.any? { |rq| rq.kind_of?(X11Requirement) }
ENV.setup_build_environment(formula)
post_superenv_hacks
reqs.each(&:modify_build_environment)

View File

@ -275,7 +275,7 @@ class FormulaAuditor
problem "Use `depends_on :fortran` instead of `depends_on 'gfortran'`"
when "open-mpi", "mpich2"
problem <<-EOS.undent
There are multiple conflicting ways to install MPI. Use an MPIDependency:
There are multiple conflicting ways to install MPI. Use an MPIRequirement:
depends_on :mpi => [<lang list>]
Where <lang list> is a comma delimited list that can include:
:cc, :cxx, :f77, :f90
@ -698,11 +698,11 @@ class FormulaAuditor
problem "Define method #{$1.inspect} in the class body, not at the top-level"
end
if line =~ /ENV.fortran/ && !formula.requirements.map(&:class).include?(FortranDependency)
if line =~ /ENV.fortran/ && !formula.requirements.map(&:class).include?(FortranRequirement)
problem "Use `depends_on :fortran` instead of `ENV.fortran`"
end
if line =~ /JAVA_HOME/i && !formula.requirements.map(&:class).include?(JavaDependency)
if line =~ /JAVA_HOME/i && !formula.requirements.map(&:class).include?(JavaRequirement)
problem "Use `depends_on :java` to set JAVA_HOME"
end

View File

@ -4,4 +4,5 @@ require 'compat/formula_specialties'
require 'compat/hardware'
require 'compat/macos'
require 'compat/md5'
require 'compat/requirements'
require 'compat/version'

View File

@ -0,0 +1,20 @@
require "requirements"
XcodeDependency = XcodeRequirement
MysqlDependency = MysqlRequirement
PostgresqlDependency = PostgresqlRequirement
GPGDependency = GPGRequirement
TeXDependency = TeXRequirement
MercurialDependency = MercurialRequirement
GitDependency = GitRequirement
AprDependency = AprRequirement
FortranDependency = FortranRequirement
JavaDependency = JavaRequirement
JavaRequirement = JavaRequirement
LanguageModuleDependency = LanguageModuleRequirement
MPIDependency = MPIRequirement
OsxfuseDependency = OsxfuseRequirement
PythonDependency = PythonRequirement
TuntapDependency = TuntapRequirement
X11Dependency = X11Requirement
ConflictsWithBinaryOsxfuse = NonBinaryOsxfuseRequirement

View File

@ -1,8 +1,8 @@
require 'dependency'
require 'dependencies'
require 'ld64_dependency'
require 'requirement'
require 'requirements'
require 'requirements/ld64_dependency'
require 'set'
## A dependency is a formula that another formula needs to install.
@ -94,7 +94,7 @@ class DependencyCollector
elsif tags.empty?
Dependency.new(spec, tags)
elsif (tag = tags.first) && LANGUAGE_MODULES.include?(tag)
LanguageModuleDependency.new(tag, spec, tags[1])
LanguageModuleRequirement.new(tag, spec, tags[1])
else
Dependency.new(spec, tags)
end
@ -102,25 +102,25 @@ class DependencyCollector
def parse_symbol_spec(spec, tags)
case spec
when :x11 then X11Dependency.new(spec.to_s, tags)
when :xcode then XcodeDependency.new(tags)
when :x11 then X11Requirement.new(spec.to_s, tags)
when :xcode then XcodeRequirement.new(tags)
when :macos then MinimumMacOSRequirement.new(tags)
when :mysql then MysqlDependency.new(tags)
when :postgresql then PostgresqlDependency.new(tags)
when :gpg then GPGDependency.new(tags)
when :fortran then FortranDependency.new(tags)
when :mpi then MPIDependency.new(*tags)
when :tex then TeXDependency.new(tags)
when :mysql then MysqlRequirement.new(tags)
when :postgresql then PostgresqlRequirement.new(tags)
when :gpg then GPGRequirement.new(tags)
when :fortran then FortranRequirement.new(tags)
when :mpi then MPIRequirement.new(*tags)
when :tex then TeXRequirement.new(tags)
when :arch then ArchRequirement.new(tags)
when :hg then MercurialDependency.new(tags)
when :python then PythonDependency.new(tags)
when :python3 then Python3Dependency.new(tags)
when :java then JavaDependency.new(tags)
when :hg then MercurialRequirement.new(tags)
when :python then PythonRequirement.new(tags)
when :python3 then Python3Requirement.new(tags)
when :java then JavaRequirement.new(tags)
when :ruby then RubyRequirement.new(tags)
when :osxfuse then OsxfuseDependency.new(tags)
when :tuntap then TuntapDependency.new(tags)
when :osxfuse then OsxfuseRequirement.new(tags)
when :tuntap then TuntapRequirement.new(tags)
when :ant then ant_dep(spec, tags)
when :apr then AprDependency.new(tags)
when :apr then AprRequirement.new(tags)
when :emacs then EmacsRequirement.new(tags)
# Tiger's ld is too old to properly link some software
when :ld64 then LD64Dependency.new if MacOS.version < :leopard
@ -133,7 +133,7 @@ class DependencyCollector
tags << :run
Dependency.new("libtool", tags)
when :python2
PythonDependency.new(tags)
PythonRequirement.new(tags)
else
raise ArgumentError, "Unsupported special dependency #{spec.inspect}"
end
@ -166,9 +166,9 @@ class DependencyCollector
when strategy <= CurlDownloadStrategy
parse_url_spec(spec.url, tags)
when strategy <= GitDownloadStrategy
GitDependency.new(tags)
GitRequirement.new(tags)
when strategy <= MercurialDownloadStrategy
MercurialDependency.new(tags)
MercurialRequirement.new(tags)
when strategy <= FossilDownloadStrategy
Dependency.new("fossil", tags)
when strategy <= BazaarDownloadStrategy

View File

@ -616,7 +616,7 @@ class Formula
def python(options={}, &block)
opoo 'Formula#python is deprecated and will go away shortly.'
block.call if block_given?
PythonDependency.new
PythonRequirement.new
end
alias_method :python2, :python
alias_method :python3, :python

View File

@ -1,20 +1,20 @@
require 'requirement'
require 'requirements/apr_dependency'
require 'requirements/fortran_dependency'
require 'requirements/language_module_dependency'
require 'requirements/apr_requirement'
require 'requirements/fortran_requirement'
require 'requirements/language_module_requirement'
require 'requirements/minimum_macos_requirement'
require 'requirements/maximum_macos_requirement'
require 'requirements/mpi_dependency'
require 'requirements/osxfuse_dependency'
require 'requirements/python_dependency'
require 'requirements/java_dependency'
require 'requirements/mpi_requirement'
require 'requirements/osxfuse_requirement'
require 'requirements/python_requirement'
require 'requirements/java_requirement'
require 'requirements/ruby_requirement'
require 'requirements/tuntap_dependency'
require 'requirements/tuntap_requirement'
require 'requirements/unsigned_kext_requirement'
require 'requirements/x11_dependency'
require 'requirements/x11_requirement'
require 'requirements/emacs_requirement'
class XcodeDependency < Requirement
class XcodeRequirement < Requirement
fatal true
satisfy(:build_env => false) { xcode_installed_version }
@ -52,28 +52,28 @@ class XcodeDependency < Requirement
end
end
class MysqlDependency < Requirement
class MysqlRequirement < Requirement
fatal true
default_formula 'mysql'
satisfy { which 'mysql_config' }
end
class PostgresqlDependency < Requirement
class PostgresqlRequirement < Requirement
fatal true
default_formula 'postgresql'
satisfy { which 'pg_config' }
end
class GPGDependency < Requirement
class GPGRequirement < Requirement
fatal true
default_formula "gpg"
satisfy { which("gpg") || which("gpg2") }
end
class TeXDependency < Requirement
class TeXRequirement < Requirement
fatal true
cask "mactex"
download "https://www.tug.org/mactex/"
@ -112,14 +112,14 @@ class ArchRequirement < Requirement
end
end
class MercurialDependency < Requirement
class MercurialRequirement < Requirement
fatal true
default_formula 'mercurial'
satisfy { which('hg') }
end
class GitDependency < Requirement
class GitRequirement < Requirement
fatal true
default_formula 'git'
satisfy { !!which('git') }

View File

@ -1,6 +1,6 @@
require "requirement"
class AprDependency < Requirement
class AprRequirement < Requirement
fatal true
default_formula "apr-util"

View File

@ -1,6 +1,6 @@
require 'requirement'
class FortranDependency < Requirement
class FortranRequirement < Requirement
fatal true
default_formula 'gcc'

View File

@ -1,6 +1,6 @@
require "language/java"
class JavaDependency < Requirement
class JavaRequirement < Requirement
fatal true
cask "java"
download "http://www.oracle.com/technetwork/java/javase/downloads/index.html"

View File

@ -1,6 +1,6 @@
require 'requirement'
class LanguageModuleDependency < Requirement
class LanguageModuleRequirement < Requirement
fatal true
def initialize language, module_name, import_name=nil

View File

@ -3,7 +3,7 @@ require 'requirement'
# There are multiple implementations of MPI-2 available.
# http://www.mpi-forum.org/
# This requirement is used to find an appropriate one.
class MPIDependency < Requirement
class MPIRequirement < Requirement
attr_reader :lang_list

View File

@ -1,6 +1,6 @@
require "requirement"
class OsxfuseDependency < Requirement
class OsxfuseRequirement < Requirement
fatal true
default_formula "osxfuse"
cask "osxfuse"
@ -17,9 +17,9 @@ class OsxfuseDependency < Requirement
end
end
class ConflictsWithBinaryOsxfuse < Requirement
class NonBinaryOsxfuseRequirement < Requirement
fatal true
satisfy { HOMEBREW_PREFIX.to_s != "/usr/local" || !OsxfuseDependency.binary_osxfuse_installed? }
satisfy { HOMEBREW_PREFIX.to_s != "/usr/local" || !OsxfuseRequirement.binary_osxfuse_installed? }
def message
<<-EOS.undent

View File

@ -1,6 +1,6 @@
require "language/python"
class PythonDependency < Requirement
class PythonRequirement < Requirement
fatal true
default_formula "python"
cask "python"
@ -47,7 +47,7 @@ class PythonDependency < Requirement
alias_method :to_s, :python_binary
end
class Python3Dependency < PythonDependency
class Python3Requirement < PythonRequirement
fatal true
default_formula "python3"
cask "python3"

View File

@ -1,6 +1,6 @@
require "requirement"
class TuntapDependency < Requirement
class TuntapRequirement < Requirement
fatal true
default_formula "tuntap"
cask "tuntap"

View File

@ -1,6 +1,6 @@
require "requirement"
class X11Dependency < Requirement
class X11Requirement < Requirement
include Comparable
attr_reader :min_version
@ -33,7 +33,7 @@ class X11Dependency < Requirement
end
def <=> other
return unless X11Dependency === other
return unless X11Requirement === other
min_version <=> other.min_version
end

View File

@ -83,19 +83,19 @@ class RequirementsTests < Homebrew::TestCase
end
def test_merging_multiple_dependencies
@reqs << X11Dependency.new << X11Dependency.new
@reqs << X11Requirement.new << X11Requirement.new
assert_equal 1, @reqs.count
@reqs << Requirement.new
assert_equal 2, @reqs.count
end
def test_comparison_prefers_larger
@reqs << X11Dependency.new << X11Dependency.new("x11", %w[2.6])
assert_equal [X11Dependency.new("x11", %w[2.6])], @reqs.to_a
@reqs << X11Requirement.new << X11Requirement.new("x11", %w[2.6])
assert_equal [X11Requirement.new("x11", %w[2.6])], @reqs.to_a
end
def test_comparison_does_not_merge_smaller
@reqs << X11Dependency.new("x11", %w{2.6}) << X11Dependency.new
assert_equal [X11Dependency.new("x11", %w[2.6])], @reqs.to_a
@reqs << X11Requirement.new("x11", %w{2.6}) << X11Requirement.new
assert_equal [X11Requirement.new("x11", %w[2.6])], @reqs.to_a
end
end

View File

@ -39,7 +39,7 @@ class DependencyCollectorTests < Homebrew::TestCase
def test_requirement_creation
@d.add :x11
assert_instance_of X11Dependency, find_requirement(X11Dependency)
assert_instance_of X11Requirement, find_requirement(X11Requirement)
end
def test_no_duplicate_requirements
@ -50,28 +50,28 @@ class DependencyCollectorTests < Homebrew::TestCase
def test_requirement_tags
@d.add :x11 => '2.5.1'
@d.add :xcode => :build
assert_empty find_requirement(X11Dependency).tags
assert_predicate find_requirement(XcodeDependency), :build?
assert_empty find_requirement(X11Requirement).tags
assert_predicate find_requirement(XcodeRequirement), :build?
end
def test_x11_no_tag
@d.add :x11
assert_empty find_requirement(X11Dependency).tags
assert_empty find_requirement(X11Requirement).tags
end
def test_x11_min_version
@d.add :x11 => '2.5.1'
assert_equal "2.5.1", find_requirement(X11Dependency).min_version.to_s
assert_equal "2.5.1", find_requirement(X11Requirement).min_version.to_s
end
def test_x11_tag
@d.add :x11 => :optional
assert_predicate find_requirement(X11Dependency), :optional?
assert_predicate find_requirement(X11Requirement), :optional?
end
def test_x11_min_version_and_tag
@d.add :x11 => ['2.5.1', :optional]
dep = find_requirement(X11Dependency)
dep = find_requirement(X11Requirement)
assert_equal '2.5.1', dep.min_version.to_s
assert_predicate dep, :optional?
end
@ -104,7 +104,7 @@ class DependencyCollectorTests < Homebrew::TestCase
def test_resource_dep_git_url
resource = Resource.new
resource.url("git://example.com/foo/bar.git")
assert_instance_of GitDependency, @d.add(resource)
assert_instance_of GitRequirement, @d.add(resource)
end
def test_resource_dep_gzip_url

View File

@ -1,20 +1,20 @@
require 'testing_env'
require 'requirements/language_module_dependency'
require 'requirements/language_module_requirement'
class LanguageModuleDependencyTests < Homebrew::TestCase
class LanguageModuleRequirementTests < Homebrew::TestCase
parallelize_me!
def assert_deps_fail(spec)
refute_predicate LanguageModuleDependency.new(*spec.shift.reverse), :satisfied?
refute_predicate LanguageModuleRequirement.new(*spec.shift.reverse), :satisfied?
end
def assert_deps_pass(spec)
assert_predicate LanguageModuleDependency.new(*spec.shift.reverse), :satisfied?
assert_predicate LanguageModuleRequirement.new(*spec.shift.reverse), :satisfied?
end
def test_unique_deps_are_not_eql
x = LanguageModuleDependency.new(:node, "less")
y = LanguageModuleDependency.new(:node, "coffee-script")
x = LanguageModuleRequirement.new(:node, "less")
y = LanguageModuleRequirement.new(:node, "coffee-script")
refute_eql x, y
refute_equal x.hash, y.hash
end
@ -22,7 +22,7 @@ class LanguageModuleDependencyTests < Homebrew::TestCase
def test_differing_module_and_import_name
mod_name = "foo"
import_name = "bar"
l = LanguageModuleDependency.new(:python, mod_name, import_name)
l = LanguageModuleRequirement.new(:python, mod_name, import_name)
assert_includes l.message, mod_name
assert_includes l.the_test, "import #{import_name}"
end

View File

@ -1,11 +1,11 @@
require 'testing_env'
require 'requirements/mpi_dependency'
require 'requirements/mpi_requirement'
class MPIDependencyTests < Homebrew::TestCase
class MPIRequirementTests < Homebrew::TestCase
def test_initialize_untangles_tags_and_wrapper_symbols
wrappers = [:cc, :cxx, :f77]
tags = [:optional, 'some-other-tag']
dep = MPIDependency.new(*wrappers + tags)
dep = MPIRequirement.new(*wrappers + tags)
assert_equal wrappers, dep.lang_list
assert_equal tags, dep.tags
end

View File

@ -1,29 +1,29 @@
require 'testing_env'
require 'requirements/x11_dependency'
require 'requirements/x11_requirement'
class X11DependencyTests < Homebrew::TestCase
class X11RequirementTests < Homebrew::TestCase
def test_eql_instances_are_eql
x = X11Dependency.new
y = X11Dependency.new
x = X11Requirement.new
y = X11Requirement.new
assert_eql x, y
assert_equal x.hash, y.hash
end
def test_not_eql_when_hashes_differ
x = X11Dependency.new("foo")
y = X11Dependency.new
x = X11Requirement.new("foo")
y = X11Requirement.new
refute_eql x, y
refute_equal x.hash, y.hash
end
def test_different_min_version
x = X11Dependency.new
y = X11Dependency.new("x11", %w[2.5])
x = X11Requirement.new
y = X11Requirement.new("x11", %w[2.5])
refute_eql x, y
end
def test_x_env
x = X11Dependency.new
x = X11Requirement.new
x.stubs(:satisfied?).returns(true)
ENV.expects(:x11)
x.modify_build_environment
@ -32,9 +32,9 @@ class X11DependencyTests < Homebrew::TestCase
def test_satisfied
MacOS::XQuartz.stubs(:version).returns("2.7.5")
MacOS::XQuartz.stubs(:installed?).returns(true)
assert_predicate X11Dependency.new, :satisfied?
assert_predicate X11Requirement.new, :satisfied?
MacOS::XQuartz.stubs(:installed?).returns(false)
refute_predicate X11Dependency.new, :satisfied?
refute_predicate X11Requirement.new, :satisfied?
end
end