7c648d9732
When interpolating in strings passed to Formula#system, it should be done in such a way that if any interpolated variables contain spaces, they are either (a) passed as part of a list or (b) protected by quotes if they are part of a long string (which is subject to shell expansion). Otherwise, they will be split on the space when expanded by the shell and passed as multiple arguments to whatever process is being executed. Signed-off-by: Jack Nagel <jacknagel@gmail.com>
188 lines
5.5 KiB
Ruby
188 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-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
|