wxmac: Add 2.9.x as --devel option
- 64bit and cocoa is only possible in the 2.9 series. - Using the bundle wxPython+wxWidgets for 2.9.x. - Better caveats telling about all issues based on the actual options to guide the users with options/problems. - Building gizmos, sec and ogl only for 2.8 (because 2.9 does not have these subduers) - Python bindings for 2.8 are now built with MacOS 10.6 sdk on Lion explicitly for i386. This fixes the error of "Cursor" not found during build time in current wxmac formula. - Added head for wxPython (may be of use later on) - Set right home pages. - Removed --system-python. Not needed, since the policy is to take whichever python is upfront in the path. - Fixed bug that "gizmos", "stc" and "ogl" were not built because "$c" is not a variable expansion expression in ruby. "#{c}" was meant. Closes Homebrew/homebrew#8639. Closes Homebrew/homebrew#10149. Signed-off-by: Charlie Sharpsteen <source@sharpsteen.net>
This commit is contained in:
parent
f3ccf4706d
commit
64310618c9
1 changed files with 126 additions and 69 deletions
195
Formula/wxmac.rb
195
Formula/wxmac.rb
|
@ -1,48 +1,53 @@
|
|||
require 'formula'
|
||||
|
||||
def build_python?; ARGV.include? "--python"; end
|
||||
|
||||
def which_python
|
||||
if ARGV.include? '--system-python'
|
||||
'/usr/bin/python'
|
||||
else
|
||||
'python'
|
||||
end
|
||||
end
|
||||
|
||||
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'
|
||||
homepage 'http://www.wxwidgets.org'
|
||||
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'],
|
||||
['--system-python', 'Build against the OS X Python instead of whatever is in the path.']
|
||||
['--devel', 'Using unstable 2.9.x series (But 64-bit & cocoa support!)']
|
||||
]
|
||||
end
|
||||
|
||||
def test_python_arch
|
||||
system "arch -i386 #{which_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:
|
||||
# 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
|
||||
brew install python --universal --framework
|
||||
|
||||
EOS
|
||||
exit 99
|
||||
EOS
|
||||
exit 99
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
def install_wx_python
|
||||
def install_wx_python
|
||||
opts = [
|
||||
# Reference our wx-config
|
||||
"WX_CONFIG=#{bin}/wx-config",
|
||||
|
@ -50,37 +55,47 @@ class Wxmac < Formula
|
|||
"UNICODE=1",
|
||||
# And thus we have no need for multiversion support
|
||||
"INSTALL_MULTIVERSION=0",
|
||||
# TODO: see if --with-opengl can work on the wxmac build
|
||||
# OpenGL and stuff
|
||||
"BUILD_GLCANVAS=1",
|
||||
# Contribs that I'm not sure anyone cares about, but
|
||||
# wxPython tries to build them by default
|
||||
"BUILD_STC=1",
|
||||
"BUILD_GIZMOS=1"
|
||||
"BUILD_GIZMOS=1",
|
||||
"BUILD_STC=1"
|
||||
]
|
||||
Dir.chdir "wxPython" do
|
||||
system "arch", "-i386",
|
||||
which_python,
|
||||
"setup.py",
|
||||
"build_ext",
|
||||
*opts
|
||||
if ARGV.build_devel?
|
||||
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:
|
||||
%w{ CFLAGS CXXFLAGS LDFLAGS }.each do |compiler_flag|
|
||||
ENV.remove compiler_flag, "-arch x86_64"
|
||||
ENV.append compiler_flag, "-arch i386"
|
||||
# The python extension for wx2.8 has to be built with the 10.6 sdk, but we have no configure step, so:
|
||||
ENV.append compiler_flag, "-isysroot /Developer/SDKs/MacOSX10.6.sdk -mmacosx-version-min=10.6"
|
||||
end
|
||||
system "arch", "-i386",
|
||||
"python",
|
||||
"setup.py",
|
||||
"build_ext",
|
||||
*opts
|
||||
|
||||
system "arch", "-i386",
|
||||
which_python,
|
||||
"setup.py",
|
||||
"install",
|
||||
"--prefix=#{prefix}",
|
||||
*opts
|
||||
system "arch", "-i386",
|
||||
"python",
|
||||
"setup.py",
|
||||
"install",
|
||||
"--prefix=#{prefix}",
|
||||
*opts
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
def install
|
||||
test_python_arch if build_python?
|
||||
|
||||
# Force i386
|
||||
%w{ CFLAGS CXXFLAGS LDFLAGS OBJCFLAGS OBJCXXFLAGS }.each do |compiler_flag|
|
||||
ENV.remove compiler_flag, "-arch x86_64"
|
||||
ENV.append compiler_flag, "-arch i386"
|
||||
end
|
||||
test_python_arch if ARGV.include? "--python"
|
||||
|
||||
args = [
|
||||
"--disable-debug",
|
||||
|
@ -90,46 +105,88 @@ class Wxmac < Formula
|
|||
"--with-opengl"
|
||||
]
|
||||
|
||||
# build will fail on Lion unless we use the 10.6 sdk
|
||||
if MacOS.lion?
|
||||
args << "--with-macosx-sdk=/Developer/SDKs/MacOSX10.6.sdk"
|
||||
args << "--with-macosx-version-min=10.6"
|
||||
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
|
||||
%w{ CFLAGS CXXFLAGS LDFLAGS OBJCFLAGS OBJCXXFLAGS }.each do |compiler_flag|
|
||||
ENV.remove compiler_flag, "-arch x86_64"
|
||||
ENV.append compiler_flag, "-arch i386"
|
||||
end
|
||||
# build will fail on Lion unless we use the 10.6 sdk (note wx 2.9 does fine)
|
||||
if MacOS.lion?
|
||||
args << "--with-macosx-sdk=/Developer/SDKs/MacOSX10.6.sdk"
|
||||
args << "--with-macosx-version-min=10.6"
|
||||
end
|
||||
end
|
||||
|
||||
system "./configure", *args
|
||||
system "make install"
|
||||
|
||||
# erlang needs contrib/stc during configure phase.
|
||||
%w{ gizmos stc ogl }.each do |c|
|
||||
system "make -C contrib/src/$c 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 build_python?
|
||||
if ARGV.include? "--python"
|
||||
ENV['WXWIN'] = Dir.getwd
|
||||
Wxpython.new.brew { install_wx_python }
|
||||
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 = <<-EOS.undent
|
||||
wxWidgets 2.8.x builds 32-bit only, so you probably won't be able to use it
|
||||
for other Homebrew-installed softare on Snow Leopard.
|
||||
|
||||
EOS
|
||||
|
||||
if build_python?
|
||||
s = ''
|
||||
unless ARGV.build_devel?
|
||||
s += <<-EOS.undent
|
||||
Python bindings require that Python be built as a Framework; this is the
|
||||
default for Mac OS provided Python but not for Homebrew python (compile
|
||||
using the --framework option).
|
||||
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.
|
||||
|
||||
You will also need 32-bit support for Python. If you are on a 64-bit
|
||||
platform, you will need to run Python in 32-bit mode:
|
||||
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 (compile using the
|
||||
--universal option)
|
||||
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
|
||||
|
||||
|
|
Loading…
Reference in a new issue