| 1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
 | require "dependency_collector"
class DependencyCollector
  module Compat
    # Define the languages that we can handle as external dependencies.
    LANGUAGE_MODULES = Set[
      :lua, :lua51, :perl, :python, :python3, :ruby
    ].freeze
    def parse_string_spec(spec, tags)
      if (tag = tags.first) && LANGUAGE_MODULES.include?(tag)
        odeprecated "'depends_on ... => #{tag.inspect}'"
        LanguageModuleRequirement.new(tag, spec, tags[1])
      else
        super
      end
    end
    def parse_symbol_spec(spec, tags)
      case spec
      when :clt
        odeprecated "'depends_on :clt'"
      when :tex
        odeprecated "'depends_on :tex'"
        TeXRequirement.new(tags)
      when :autoconf, :automake, :bsdmake, :libtool
        output_deprecation(spec)
        autotools_dep(spec, tags)
      when :cairo, :fontconfig, :freetype, :libpng, :pixman
        output_deprecation(spec)
        Dependency.new(spec.to_s, tags)
      when :ant, :expat
        output_deprecation(spec)
        Dependency.new(spec.to_s, tags)
      when :libltdl
        tags << :run
        output_deprecation("libtool")
        Dependency.new("libtool", tags)
      when :apr
        output_deprecation(spec, "apr-util")
        Dependency.new("apr-util", tags)
      when :fortran
        output_deprecation(spec, "gcc")
        Dependency.new("gcc", tags)
      when :gpg
        output_deprecation(spec, "gnupg")
        Dependency.new("gnupg", tags)
      when :hg
        output_deprecation(spec, "mercurial")
        Dependency.new("mercurial", tags)
      when :mpi
        output_deprecation(spec, "open-mpi")
        Dependency.new("open-mpi", tags)
      when :python, :python2
        output_deprecation(spec, "python")
        Dependency.new("python", tags)
      when :python3
        output_deprecation(spec, "python3")
        Dependency.new("python3", tags)
      when :emacs, :mysql, :perl, :postgresql, :rbenv, :ruby
        output_deprecation(spec)
        Dependency.new(spec, tags)
      else
        super
      end
    end
    private
    def autotools_dep(spec, tags)
      tags << :build unless tags.include? :run
      Dependency.new(spec.to_s, tags)
    end
    def output_deprecation(dependency, new_dependency = dependency)
      odeprecated "'depends_on :#{dependency}'",
                  "'depends_on \"#{new_dependency}\"'"
    end
  end
  prepend Compat
end
 |