homebrew-core/Formula/wxmac.rb
2012-06-27 11:16:23 -07:00

189 lines
5.5 KiB
Ruby

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-std_string",
"--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