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:
parent
f13ac9b0c8
commit
1e86730289
@ -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)
|
||||
|
||||
@ -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
|
||||
|
||||
|
||||
@ -4,4 +4,5 @@ require 'compat/formula_specialties'
|
||||
require 'compat/hardware'
|
||||
require 'compat/macos'
|
||||
require 'compat/md5'
|
||||
require 'compat/requirements'
|
||||
require 'compat/version'
|
||||
|
||||
20
Library/Homebrew/compat/requirements.rb
Normal file
20
Library/Homebrew/compat/requirements.rb
Normal 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
|
||||
@ -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
|
||||
|
||||
@ -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
|
||||
|
||||
@ -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') }
|
||||
|
||||
@ -1,6 +1,6 @@
|
||||
require "requirement"
|
||||
|
||||
class AprDependency < Requirement
|
||||
class AprRequirement < Requirement
|
||||
fatal true
|
||||
default_formula "apr-util"
|
||||
|
||||
@ -1,6 +1,6 @@
|
||||
require 'requirement'
|
||||
|
||||
class FortranDependency < Requirement
|
||||
class FortranRequirement < Requirement
|
||||
fatal true
|
||||
|
||||
default_formula 'gcc'
|
||||
@ -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"
|
||||
@ -1,6 +1,6 @@
|
||||
require 'requirement'
|
||||
|
||||
class LanguageModuleDependency < Requirement
|
||||
class LanguageModuleRequirement < Requirement
|
||||
fatal true
|
||||
|
||||
def initialize language, module_name, import_name=nil
|
||||
@ -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
|
||||
|
||||
@ -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
|
||||
@ -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"
|
||||
@ -1,6 +1,6 @@
|
||||
require "requirement"
|
||||
|
||||
class TuntapDependency < Requirement
|
||||
class TuntapRequirement < Requirement
|
||||
fatal true
|
||||
default_formula "tuntap"
|
||||
cask "tuntap"
|
||||
@ -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
|
||||
|
||||
@ -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
|
||||
|
||||
@ -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
|
||||
|
||||
@ -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
|
||||
@ -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
|
||||
@ -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
|
||||
Loading…
x
Reference in New Issue
Block a user