Permalink
Browse files

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 #8639.
Closes #10149.

Signed-off-by: Charlie Sharpsteen <source@sharpsteen.net>
  • Loading branch information...
1 parent a831770 commit c15bf392060aebf87edc5b367672cd781084f209 @samueljohn samueljohn committed with Sharpie Feb 15, 2012
Showing with 129 additions and 72 deletions.
  1. +129 −72 Library/Formula/wxmac.rb
@@ -1,86 +1,101 @@
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!)']
@adamv
adamv Feb 17, 2012 Contributor

This line causes an audit warning; perhaps we should special-case audit handling of --devel in my reworked options branch.

]
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:
-
- brew install python --universal --framework
-
- EOS
- exit 99
+ # 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
+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",
- # 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
-
- system "arch", "-i386",
- which_python,
- "setup.py",
- "install",
- "--prefix=#{prefix}",
- *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",
+ "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 @@ def install
"--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

0 comments on commit c15bf39

Please sign in to comment.