diff options
| -rw-r--r-- | Library/Homebrew/dependency.rb | 4 | ||||
| -rw-r--r-- | Library/Homebrew/dependency_collector.rb | 74 | ||||
| -rw-r--r-- | Library/Homebrew/requirement.rb | 4 | ||||
| -rw-r--r-- | Library/Homebrew/requirements/language_module_dependency.rb | 2 | ||||
| -rw-r--r-- | Library/Homebrew/requirements/x11_dependency.rb | 9 | ||||
| -rw-r--r-- | Library/Homebrew/test/test_comparableset.rb | 12 | ||||
| -rw-r--r-- | Library/Homebrew/test/test_dependency.rb | 4 | ||||
| -rw-r--r-- | Library/Homebrew/test/test_dependency_collector.rb | 2 | ||||
| -rw-r--r-- | Library/Homebrew/test/test_requirement.rb | 8 | 
9 files changed, 58 insertions, 61 deletions
diff --git a/Library/Homebrew/dependency.rb b/Library/Homebrew/dependency.rb index 34320a31b..6c78e10ac 100644 --- a/Library/Homebrew/dependency.rb +++ b/Library/Homebrew/dependency.rb @@ -6,9 +6,9 @@ class Dependency    attr_reader :name, :tags -  def initialize(name, *tags) +  def initialize(name, tags=[])      @name = name -    @tags = tags.flatten.compact +    @tags = tags    end    def to_s diff --git a/Library/Homebrew/dependency_collector.rb b/Library/Homebrew/dependency_collector.rb index 0487697c2..3de385fbf 100644 --- a/Library/Homebrew/dependency_collector.rb +++ b/Library/Homebrew/dependency_collector.rb @@ -38,87 +38,89 @@ class DependencyCollector    end    def build(spec) -    spec, tag = case spec -                when Hash then spec.shift -                else spec -                end +    spec, tags = case spec +                 when Hash then spec.shift +                 else spec +                 end -    parse_spec(spec, tag) +    parse_spec(spec, Array(tags))    end    private -  def parse_spec spec, tag +  def parse_spec(spec, tags)      case spec      when String -      parse_string_spec(spec, tag) +      parse_string_spec(spec, tags)      when Symbol -      parse_symbol_spec(spec, tag) +      parse_symbol_spec(spec, tags)      when Requirement, Dependency        spec      when Class -      parse_class_spec(spec, tag) +      parse_class_spec(spec, tags)      else        raise TypeError, "Unsupported type #{spec.class} for #{spec}"      end    end -  def parse_string_spec(spec, tag) -    if tag && LANGUAGE_MODULES.include?(tag) +  def parse_string_spec(spec, tags) +    if tags.empty? +      Dependency.new(spec, tags) +    elsif (tag = tags.first) && LANGUAGE_MODULES.include?(tag)        LanguageModuleDependency.new(tag, spec)      else -      Dependency.new(spec, tag) +      Dependency.new(spec, tags)      end    end -  def parse_symbol_spec spec, tag +  def parse_symbol_spec(spec, tags)      case spec      when :autoconf, :automake, :bsdmake, :libtool, :libltdl        # Xcode no longer provides autotools or some other build tools -      autotools_dep(spec, tag) -    when :x11        then X11Dependency.new(spec.to_s, tag) +      autotools_dep(spec, tags) +    when :x11        then X11Dependency.new(spec.to_s, tags)      when *X11Dependency::Proxy::PACKAGES -      x11_dep(spec, tag) +      x11_dep(spec, tags)      when :cairo, :pixman        # We no longer use X11 psuedo-deps for cairo or pixman,        # so just return a standard formula dependency. -      Dependency.new(spec.to_s, tag) -    when :xcode      then XcodeDependency.new(tag) -    when :mysql      then MysqlDependency.new(tag) -    when :postgresql then PostgresqlDependency.new(tag) -    when :tex        then TeXDependency.new(tag) -    when :clt        then CLTDependency.new(tag) -    when :arch       then ArchRequirement.new(tag) -    when :hg         then MercurialDependency.new(tag) +      Dependency.new(spec.to_s, tags) +    when :xcode      then XcodeDependency.new(tags) +    when :mysql      then MysqlDependency.new(tags) +    when :postgresql then PostgresqlDependency.new(tags) +    when :tex        then TeXDependency.new(tags) +    when :clt        then CLTDependency.new(tags) +    when :arch       then ArchRequirement.new(tags) +    when :hg         then MercurialDependency.new(tags)      else        raise "Unsupported special dependency #{spec}"      end    end -  def parse_class_spec(spec, tag) +  def parse_class_spec(spec, tags)      if spec < Requirement -      spec.new(tag) +      spec.new(tags)      else        raise TypeError, "#{spec} is not a Requirement subclass"      end    end -  def x11_dep(spec, tag) +  def x11_dep(spec, tags)      if MacOS.version >= :mountain_lion -      Dependency.new(spec.to_s, tag) +      Dependency.new(spec.to_s, tags)      else -      X11Dependency::Proxy.for(spec.to_s, tag) +      X11Dependency::Proxy.for(spec.to_s, tags)      end    end -  def autotools_dep(spec, tag) -    case spec -    when :libltdl then spec, tag = :libtool, Array(tag) -    else tag = Array(tag) << :build -    end - +  def autotools_dep(spec, tags)      unless MacOS::Xcode.provides_autotools? -      Dependency.new(spec.to_s, tag) +      case spec +      when :libltdl then spec = :libtool +      else tags << :build +      end + +      Dependency.new(spec.to_s, tags)      end    end  end diff --git a/Library/Homebrew/requirement.rb b/Library/Homebrew/requirement.rb index 42e4467bc..c20273895 100644 --- a/Library/Homebrew/requirement.rb +++ b/Library/Homebrew/requirement.rb @@ -10,8 +10,8 @@ class Requirement    attr_reader :tags, :name -  def initialize(*tags) -    @tags = tags.flatten.compact +  def initialize(tags=[]) +    @tags = tags      @tags << :build if self.class.build      @name ||= infer_name    end diff --git a/Library/Homebrew/requirements/language_module_dependency.rb b/Library/Homebrew/requirements/language_module_dependency.rb index 0c5908a00..7c293e0c5 100644 --- a/Library/Homebrew/requirements/language_module_dependency.rb +++ b/Library/Homebrew/requirements/language_module_dependency.rb @@ -7,7 +7,7 @@ class LanguageModuleDependency < Requirement      @language = language      @module_name = module_name      @import_name = import_name -    super +    super([language, module_name, import_name])    end    satisfy { quiet_system(*the_test) } diff --git a/Library/Homebrew/requirements/x11_dependency.rb b/Library/Homebrew/requirements/x11_dependency.rb index c669384c6..5eb14354d 100644 --- a/Library/Homebrew/requirements/x11_dependency.rb +++ b/Library/Homebrew/requirements/x11_dependency.rb @@ -9,8 +9,7 @@ class X11Dependency < Requirement    env { ENV.x11 } -  def initialize(name="x11", *tags) -    tags.flatten! +  def initialize(name="x11", tags=[])      @name = name      @min_version = tags.shift if /(\d\.)+\d/ === tags.first      super(tags) @@ -66,19 +65,19 @@ class X11Dependency < Requirement          end        end -      def for(name, *tags) +      def for(name, tags=[])          constant = name.capitalize          if defines_const?(constant)            klass = const_get(constant)          else            klass = Class.new(self) do -            def initialize(name, *tags) super end +            def initialize(name, tags) super end            end            const_set(constant, klass)          end -        klass.new(name, *tags) +        klass.new(name, tags)        end      end    end diff --git a/Library/Homebrew/test/test_comparableset.rb b/Library/Homebrew/test/test_comparableset.rb index ee3f46f93..3e823597c 100644 --- a/Library/Homebrew/test/test_comparableset.rb +++ b/Library/Homebrew/test/test_comparableset.rb @@ -17,25 +17,25 @@ class ComparableSetTests < Test::Unit::TestCase    def test_comparison_prefers_larger      @set << X11Dependency.new -    @set << X11Dependency.new('x11', '2.6') +    @set << X11Dependency.new('x11', %w{2.6})      assert_equal 1, @set.count -    assert_equal [X11Dependency.new('x11', '2.6')], @set.to_a +    assert_equal [X11Dependency.new('x11', %w{2.6})], @set.to_a    end    def test_comparison_does_not_merge_smaller -    @set << X11Dependency.new('x11', '2.6') +    @set << X11Dependency.new('x11', %w{2.6})      @set << X11Dependency.new      assert_equal 1, @set.count -    assert_equal [X11Dependency.new('x11', '2.6')], @set.to_a +    assert_equal [X11Dependency.new('x11', %w{2.6})], @set.to_a    end    def test_merging_sets      @set << X11Dependency.new      @set << Requirement.new -    reqs = Set.new [X11Dependency.new('x11', '2.6'), Requirement.new] +    reqs = Set.new [X11Dependency.new('x11', %w{2.6}), Requirement.new]      assert_same @set, @set.merge(reqs)      assert_equal 2, @set.count -    assert_equal X11Dependency.new('x11', '2.6'), @set.find {|r| r.is_a? X11Dependency} +    assert_equal X11Dependency.new('x11', %w{2.6}), @set.find {|r| r.is_a? X11Dependency}    end  end diff --git a/Library/Homebrew/test/test_dependency.rb b/Library/Homebrew/test/test_dependency.rb index 2eac358e6..0f030afd6 100644 --- a/Library/Homebrew/test/test_dependency.rb +++ b/Library/Homebrew/test/test_dependency.rb @@ -20,7 +20,7 @@ end  class DependencyTests < Test::Unit::TestCase    def test_accepts_single_tag -    dep = Dependency.new("foo", "bar") +    dep = Dependency.new("foo", %w{bar})      assert_equal %w{bar}, dep.tags    end @@ -30,7 +30,7 @@ class DependencyTests < Test::Unit::TestCase    end    def test_preserves_symbol_tags -    dep = Dependency.new("foo", :build) +    dep = Dependency.new("foo", [:build])      assert_equal [:build], dep.tags    end diff --git a/Library/Homebrew/test/test_dependency_collector.rb b/Library/Homebrew/test/test_dependency_collector.rb index bf2612cfe..e780ed5a3 100644 --- a/Library/Homebrew/test/test_dependency_collector.rb +++ b/Library/Homebrew/test/test_dependency_collector.rb @@ -30,7 +30,7 @@ class DependencyCollectorTests < Test::Unit::TestCase    end    def test_dependency_tags -    assert Dependency.new('foo', :build).build? +    assert Dependency.new('foo', [:build]).build?      assert Dependency.new('foo', [:build, :optional]).optional?      assert Dependency.new('foo', [:universal]).options.include? '--universal'      assert_empty Dependency.new('foo').tags diff --git a/Library/Homebrew/test/test_requirement.rb b/Library/Homebrew/test/test_requirement.rb index 682ee432e..ccf137e4d 100644 --- a/Library/Homebrew/test/test_requirement.rb +++ b/Library/Homebrew/test/test_requirement.rb @@ -3,27 +3,23 @@ require 'requirement'  class RequirementTests < Test::Unit::TestCase    def test_accepts_single_tag -    dep = Requirement.new("bar") +    dep = Requirement.new(%w{bar})      assert_equal %w{bar}, dep.tags    end    def test_accepts_multiple_tags      dep = Requirement.new(%w{bar baz})      assert_equal %w{bar baz}.sort, dep.tags.sort -    dep = Requirement.new(*%w{bar baz}) -    assert_equal %w{bar baz}.sort, dep.tags.sort    end    def test_preserves_symbol_tags -    dep = Requirement.new(:build) +    dep = Requirement.new([:build])      assert_equal [:build], dep.tags    end    def test_accepts_symbol_and_string_tags      dep = Requirement.new([:build, "bar"])      assert_equal [:build, "bar"], dep.tags -    dep = Requirement.new(:build, "bar") -    assert_equal [:build, "bar"], dep.tags    end    def test_dsl_fatal  | 
