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
|
require 'formula'
class Wxpython < Formula
# For 2.8, we use this separate formula for wxPython. For 2.9 we use the combined one.
url 'http://downloads.sourceforge.net/wxpython/wxPython-src-2.8.12.1.tar.bz2'
md5 '8c06c5941477beee213b4f2fa78be620'
head 'http://svn.wxwidgets.org/svn/wx/wxPython/trunk/', :using => StrictSubversionDownloadStrategy
homepage 'http://www.wxpython.org'
end
class Wxmac < Formula
url 'http://downloads.sourceforge.net/project/wxwindows/2.8.12/wxMac-2.8.12.tar.bz2'
md5 '876000a9a9742c3c75a2597afbcb8856'
devel do
# wxPython 2.9 with 64bit and cocoa support ships a (patched) wxmac:
url 'http://sourceforge.net/projects/wxpython/files/wxPython/2.9.3.1/wxPython-src-2.9.3.1.tar.bz2'
md5 '11f5a423c05c43b4ff8c9f11f1986f04'
end
homepage 'http://www.wxwidgets.org'
def options
[
['--python', 'Build Python bindings'],
['--devel', 'Using unstable 2.9.x series (But 64-bit & cocoa support!)']
]
end
def test_python_arch
# wxPython 2.8 does not yet support 64bit. But 2.9 with (--devel) does!
unless ARGV.build_devel?
begin
system "arch -i386 python --version"
rescue
onoe "No python on path or default python does not support 32-bit."
puts <<-EOS.undent
Your default python (if any) does not support 32-bit execution, which is
required for the wxmac python bindings. You can install the Homebrew
python with 32-bit support by running:
brew install python --universal --framework
EOS
exit 99
end
end
end
def install_wx_python
opts = [
# Reference our wx-config
"WX_CONFIG=#{bin}/wx-config",
# At this time Wxmac is installed Unicode only
"UNICODE=1",
# And thus we have no need for multiversion support
"INSTALL_MULTIVERSION=0",
# OpenGL and stuff
"BUILD_GLCANVAS=1",
"BUILD_GIZMOS=1",
"BUILD_STC=1"
]
cd "wxPython" do
if ARGV.build_devel?
ENV.append_to_cflags '-arch x86_64' if MacOS.prefer_64_bit?
system "python", "setup.py",
"build_ext",
"WXPORT=osx_cocoa",
*opts
system "python", "setup.py",
"install",
"--prefix=#{prefix}",
"WXPORT=osx_cocoa",
*opts
else # for wx 2.8 force 32-bit install with the 10.6 sdk:
ENV.append_to_cflags '-arch i386'
system "arch", "-i386",
"python",
"setup.py",
"build_ext",
*opts
system "arch", "-i386",
"python",
"setup.py",
"install",
"--prefix=#{prefix}",
*opts
end
end
end
def install
test_python_arch if ARGV.include? "--python"
args = [
"--disable-debug",
"--prefix=#{prefix}",
"--enable-unicode",
"--enable-display",
"--with-opengl"
]
if ARGV.build_devel?
args += [
"--with-osx_cocoa",
"--with-libjpeg",
"--with-libtiff",
"--with-libpng",
"--with-zlib",
"--enable-dnd",
"--enable-clipboard",
"--enable-webkit",
"--enable-svg",
"--with-expat"
]
end
unless ARGV.build_devel?
# Force i386 wor wx 2.8
ENV.m32
# build will fail on Lion unless we use the 10.6 sdk (note wx 2.9 does fine)
ENV.append_to_cflags '-isysroot /Developer/SDKs/MacOSX10.6.sdk -mmacosx-version-min=10.6' if MacOS.lion?
end
system "./configure", *args
system "make install"
unless ARGV.build_devel?
# erlang needs contrib/stc during configure phase.
%w{ gizmos stc ogl }.each do |c|
system "make -C contrib/src/#{c} install"
end
end
if ARGV.include? "--python"
ENV['WXWIN'] = Dir.getwd
if ARGV.build_devel?
# We have already downloaded wxPython in a bundle with wxWidgets
install_wx_python
else
# We need to download wxPython separately (see formula at top)
Wxpython.new.brew { install_wx_python }
end
end
end
def caveats
s = ''
unless ARGV.build_devel?
s += <<-EOS.undent
wxWidgets 2.8.x builds 32-bit only, so you probably won't be able to use it
for other Homebrew-installed software. You can try to build with --devel to
get the wxWidgets 2.9.x (unstable) for 64-bit and cocoa support.
EOS
if ARGV.include? '--python'
s += <<-EOS.undent
You will also need run python in 32-bit mode for wx. If you are on a 64-bit
platform, you will need to run Python in 32-bit mode:
arch -i386 python [args]
Homebrew Python does not support this by default. So, homebrew Python must
be built with --universal --framework.
Alternative, you can try brew wxmac --python --devel for wx 2.9 in 64-bit.
EOS
end
else
s += "wx 2.9.x is the unstable (--devel) release. Some things *may* be broken.\n\n"
end
if ARGV.include? '--python'
s += <<-EOS.undent
Python bindings require that Python be built as a Framework; this is the
default for Mac OS provided Python but not (yet) for Homebrew Python.
Build python with `--framework`.
EOS
end
return s
end
end
|