blob: b2206fd7e9cc84063b4013cec25ecd41d3de58ba (
plain)
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
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
  | 
require 'requirement'
require 'requirements/fortran_dependency'
require 'requirements/language_module_dependency'
require 'requirements/minimum_macos_requirement'
require 'requirements/maximum_macos_requirement'
require 'requirements/mpi_dependency'
require 'requirements/osxfuse_dependency'
require 'requirements/python_dependency'
require 'requirements/tuntap_dependency'
require 'requirements/unsigned_kext_requirement'
require 'requirements/x11_dependency'
class XcodeDependency < Requirement
  fatal true
  satisfy(:build_env => false) { xcode_installed_version }
  def initialize(tags)
    @version = tags.find { |t| tags.delete(t) if /(\d\.)+\d/ === t }
    super
  end
  def xcode_installed_version
    return false unless MacOS::Xcode.installed?
    return true unless @version
    MacOS::Xcode.version >= @version
  end
  def message
    version = " #{@version}" if @version
    message = <<-EOS.undent
      A full installation of Xcode.app#{version} is required to compile this software.
      Installing just the Command Line Tools is not sufficient.
    EOS
    if MacOS.version >= :lion
      message += <<-EOS.undent
        Xcode can be installed from the App Store.
      EOS
    else
      message += <<-EOS.undent
        Xcode can be installed from https://developer.apple.com/downloads/
      EOS
    end
  end
end
class MysqlDependency < Requirement
  fatal true
  default_formula 'mysql'
  satisfy { which 'mysql_config' }
end
class PostgresqlDependency < Requirement
  fatal true
  default_formula 'postgresql'
  satisfy { which 'pg_config' }
end
class TeXDependency < Requirement
  fatal true
  satisfy { which('tex') || which('latex') }
  def message;
    if File.exist?("/usr/texbin")
      texbin_path = "/usr/texbin"
    else
      texbin_path = "its bin directory"
    end
    <<-EOS.undent
    A LaTeX distribution is required for Homebrew to install this formula.
    You can install MacTeX distribution from:
      http://www.tug.org/mactex/
    Make sure that "/usr/texbin", or the location you installed it to, is in
    your PATH before proceeding.
    EOS
  end
end
class ArchRequirement < Requirement
  fatal true
  def initialize(arch)
    @arch = arch.pop
    super
  end
  satisfy do
    case @arch
    when :x86_64 then MacOS.prefer_64_bit?
    when :intel, :ppc then Hardware::CPU.type == @arch
    end
  end
  def message
    "This formula requires an #{@arch} architecture."
  end
end
class MercurialDependency < Requirement
  fatal true
  default_formula 'mercurial'
  satisfy { which('hg') }
end
class GitDependency < Requirement
  fatal true
  default_formula 'git'
  satisfy { !!which('git') }
end
class JavaDependency < Requirement
  fatal true
  satisfy { java_version }
  def initialize(tags)
    @version = tags.pop
    super
  end
  def java_version
    args = %w[/usr/libexec/java_home --failfast]
    args << "--version" << "#{@version}+" if @version
    quiet_system(*args)
  end
  def message
    version_string = " #{@version}" if @version
    <<-EOS.undent
      Java#{version_string} is required to install this formula.
      You can install Java from:
        http://www.oracle.com/technetwork/java/javase/downloads/index.html
      Make sure you install both the JRE and JDK.
    EOS
  end
end
class AprDependency < Requirement
  fatal true
  satisfy(:build_env => false) { MacOS::CLT.installed? }
  def message
    message = <<-EOS.undent
      Due to packaging problems on Apple's part, software that compiles
      against APR requires the standalone Command Line Tools.
    EOS
    if MacOS.version >= :mavericks
      message += <<-EOS.undent
        Run `xcode-select --install` to install them.
      EOS
    else
      message += <<-EOS.undent
        The standalone package can be obtained from
        https://developer.apple.com/downloads/,
        or it can be installed via Xcode's preferences.
      EOS
    end
  end
end
  |