forked from codedreality/homebrew-python
-
Notifications
You must be signed in to change notification settings - Fork 0
/
matplotlib.rb
194 lines (159 loc) · 6.54 KB
/
matplotlib.rb
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
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
class DvipngRequirement < Requirement
fatal false
cask "matctex"
satisfy { which("dvipng") }
def message
s = <<-EOS.undent
`dvipng` not found. This is optional for Matplotlib.
EOS
s += super
s
end
end
class NoExternalPyCXXPackage < Requirement
fatal false
satisfy do
!quiet_system "python", "-c", "import CXX"
end
def message; <<-EOS.undent
*** Warning, PyCXX detected! ***
On your system, there is already a PyCXX version installed, that will
probably make the build of Matplotlib fail. In python you can test if that
package is available with `import CXX`. To get a hint where that package
is installed, you can:
python -c "import os; import CXX; print(os.path.dirname(CXX.__file__))"
See also: https://github.com/Homebrew/homebrew-python/issues/56
EOS
end
end
class Matplotlib < Formula
homepage "http://matplotlib.org"
url "https://pypi.python.org/packages/source/m/matplotlib/matplotlib-1.5.1.tar.gz"
sha256 "3ab8d968eac602145642d0db63dd8d67c85e9a5444ce0e2ecb2a8fedc7224d40"
head "https://github.com/matplotlib/matplotlib.git"
bottle do
cellar :any
sha256 "fa747d84f30a2b26a521cbed69560cb2d9fc3dd7065dbc51c274d08a45c7a5f4" => :el_capitan
sha256 "ad73376dfce7109311af0d82b1b1c3a099df83e1deae5152fd5f739dea064144" => :yosemite
sha256 "71de274749145c379780e6941aaa30f1aec0ac4254156b25e7b32dde5d969d0b" => :mavericks
end
option "without-python", "Build without python2 support"
depends_on :python => :recommended if MacOS.version <= :snow_leopard
depends_on :python3 => :optional
requires_py2 = []
requires_py2 << "with-python" if build.with? "python"
requires_py3 = []
requires_py3 << "with-python3" if build.with? "python3"
option "with-cairo", "Build with cairo backend support"
option "with-pygtk", "Build with pygtk backend support (python2 only)"
deprecated_option "with-gtk3" => "with-gtk+3"
depends_on NoExternalPyCXXPackage => :build
depends_on "pkg-config" => :build
depends_on "freetype"
depends_on "libpng"
depends_on "gnubila-france/python/numpy" => requires_py3
depends_on "ghostscript" => :optional
depends_on "homebrew/dupes/tcl-tk" => :optional
if build.with? "cairo"
depends_on "py2cairo" if build.with? "python"
depends_on "py3cairo" if build.with? "python3"
end
depends_on "gtk+3" => :optional
depends_on "pygobject3" => requires_py3 if build.with? "gtk+3"
depends_on "pygtk" => :optional
depends_on "pygobject" if build.with? "pygtk"
depends_on "pyside" => [:optional] + requires_py3
depends_on "pyqt" => [:optional] + requires_py3
depends_on "pyqt5" => [:optional] + requires_py2
depends_on :tex => :optional
depends_on DvipngRequirement if build.with? "tex"
cxxstdlib_check :skip
resource "setuptools" do
url "https://pypi.python.org/packages/source/s/setuptools/setuptools-18.6.1.tar.gz"
sha256 "ddb0f4bdd1ac0ceb41abfe561d6196a840abb76371551dbf0c3e59d8d5cde99a"
end
resource "Cycler" do
url "https://pypi.python.org/packages/source/C/Cycler/cycler-0.9.0.tar.gz"
sha256 "96dc4ddf27ef62c09990c6196ac1167685e89168042ec0ae4db586de023355bc"
end
resource "funcsigs" do
url "https://pypi.python.org/packages/source/f/funcsigs/funcsigs-0.4.tar.gz"
sha256 "d83ce6df0b0ea6618700fe1db353526391a8a3ada1b7aba52fed7a61da772033"
end
resource "nose" do
url "https://pypi.python.org/packages/source/n/nose/nose-1.3.7.tar.gz"
sha256 "f1bffef9cbc82628f6e7d7b40d7e255aefaa1adb6a1b1d26c69a8b79e6208a98"
end
resource "mock" do
url "https://pypi.python.org/packages/source/m/mock/mock-1.3.0.tar.gz"
sha256 "1e247dbecc6ce057299eb7ee019ad68314bb93152e81d9a6110d35f4d5eca0f6"
end
resource "pbr" do
url "https://pypi.python.org/packages/source/p/pbr/pbr-1.8.1.tar.gz"
sha256 "e2127626a91e6c885db89668976db31020f0af2da728924b56480fc7ccf09649"
end
resource "pyparsing" do
url "https://pypi.python.org/packages/source/p/pyparsing/pyparsing-2.0.6.tar.gz"
sha256 "aea69042752ad7e9c436eea6ae5d40e73642e27f50edb6da4a2532030ef532da"
end
resource "python-dateutil" do
url "https://pypi.python.org/packages/source/p/python-dateutil/python-dateutil-2.4.2.tar.gz"
sha256 "3e95445c1db500a344079a47b171c45ef18f57d188dffdb0e4165c71bea8eb3d"
end
resource "pytz" do
url "https://pypi.python.org/packages/source/p/pytz/pytz-2015.7.tar.bz2"
sha256 "fbd26746772c24cb93c8b97cbdad5cb9e46c86bbdb1b9d8a743ee00e2fb1fc5d"
end
resource "six" do
url "https://pypi.python.org/packages/source/s/six/six-1.10.0.tar.gz"
sha256 "105f8d68616f8248e24bf0e9372ef04d3cc10104f1980f54d57b2ce73a5ad56a"
end
def install
inreplace "setupext.py",
"'darwin': ['/usr/local/'",
"'darwin': ['#{HOMEBREW_PREFIX}'"
# Apple has the Frameworks (esp. Tk.Framework) in a different place
unless MacOS::CLT.installed?
inreplace "setupext.py",
"'/System/Library/Frameworks/',",
"'#{MacOS.sdk_path}/System/Library/Frameworks',"
end
Language::Python.each_python(build) do |python, version|
bundle_path = libexec/"lib/python#{version}/site-packages"
bundle_path.mkpath
ENV.prepend_path "PYTHONPATH", bundle_path
resources.each do |r|
r.stage do
system python, *Language::Python.setup_install_args(libexec)
end
end
(lib/"python#{version}/site-packages/homebrew-matplotlib-bundle.pth").write "#{bundle_path}\n"
system python, *Language::Python.setup_install_args(prefix)
end
end
def caveats
s = <<-EOS.undent
If you want to use the `wxagg` backend, do `brew install wxpython`.
This can be done even after the matplotlib install.
EOS
if build.with?("python") && !Formula["python"].installed?
homebrew_site_packages = Language::Python.homebrew_site_packages
user_site_packages = Language::Python.user_site_packages "python"
s += <<-EOS.undent
If you use system python (that comes - depending on the OS X version -
with older versions of numpy, scipy and matplotlib), you may need to
ensure that the brewed packages come earlier in Python's sys.path with:
mkdir -p #{user_site_packages}
echo 'import sys; sys.path.insert(1, "#{homebrew_site_packages}")' >> #{user_site_packages}/homebrew.pth
EOS
end
s
end
test do
ENV["PYTHONDONTWRITEBYTECODE"] = "1"
ohai "This test takes quite a while. Use --verbose to see progress."
Language::Python.each_python(build) do |python, _|
system python, "-c", "import matplotlib as m; m.test()"
end
end
end