diff options
Diffstat (limited to 'Library/Formula')
| -rw-r--r-- | Library/Formula/macvim.rb | 72 | ||||
| -rw-r--r-- | Library/Formula/vim.rb | 56 |
2 files changed, 115 insertions, 13 deletions
diff --git a/Library/Formula/macvim.rb b/Library/Formula/macvim.rb index 888142f05..931eb67c5 100644 --- a/Library/Formula/macvim.rb +++ b/Library/Formula/macvim.rb @@ -17,12 +17,15 @@ class Macvim < Formula depends_on 'lua' => :optional depends_on 'luajit' => :optional depends_on :python => :recommended - # Help us! :python3 in MacVim makes the window disappear, so only 2.x bindings! + depends_on :python3 => :optional env :std if MacOS.version <= :snow_leopard # Help us! We'd like to use superenv in these environments too def install + # MacVim doesn't have and required any Python package, unset PYTHONPATH. + ENV.delete('PYTHONPATH') + # Set ARCHFLAGS so the Python app (with C extension) that is # used to create the custom icons will not try to compile in # PPC support (which isn't needed in Homebrew-supported systems.) @@ -61,7 +64,12 @@ class Macvim < Formula args << "--with-luajit" end - args << "--enable-pythoninterp=yes" if build.with? 'python' + if build.with? "python" and build.with? "python3" + args << "--enable-pythoninterp=dynamic" << "--enable-python3interp=dynamic" + else + args << "--enable-pythoninterp" if build.with? "python" + args << "--enable-python3interp" if build.with? "python3" + end # MacVim seems to link Python by `-framework Python` (instead of # `python-config --ldflags`) and so we have to pass the -F to point to @@ -71,7 +79,9 @@ class Macvim < Formula # on the Mac. Note configure detects brewed python correctly, but that # is ignored. # See https://github.com/mxcl/homebrew/issues/17908 - ENV.prepend 'LDFLAGS', "-L#{python2.libdir} -F#{python2.framework}" if python && python.brewed? + if python2 and python2.framework? and not build.with? "python3" + ENV.prepend 'LDFLAGS', "-L#{python2.libdir} -F#{python2.framework}" + end unless MacOS::CLT.installed? # On Xcode-only systems: @@ -84,6 +94,35 @@ class Macvim < Formula system "./configure", *args + if build.with? "python" and build.with? "python3" + # On 64-bit systems, we need to avoid a 32-bit Framework Python. + # MacVim doesn't check Python while compiling. + python do + if MacOS.prefer_64_bit? and python.framework? and not archs_for_command("#{python.prefix}/Python").include? :x86_64 + opoo "Detected a framework Python that does not have 64-bit support in:" + puts <<-EOS.undent + #{python.prefix} + + Dynamic loading Python library required the same architecture. + + Note that a framework Python in /Library/Frameworks/Python.framework is + the "MacPython" version, and not the system-provided version which is in: + /System/Library/Frameworks/Python.framework + EOS + end + end + # Help vim find Python's library as absolute path. + python do + inreplace 'src/auto/config.mk', /-DDYNAMIC_PYTHON#{python.if3then3}_DLL=\\".*\\"/, %Q[-DDYNAMIC_PYTHON#{python.if3then3}_DLL=\'\"#{python.prefix}/Python\"\'] if python.framework? + end + # Force vim loading different Python on same time, may cause vim crash. + unless python.brewed? + opoo "Your python isn't comes from Homebrew, you may see warning massage during brewing. That's OK. Because we can't detect what your Python is. We will force replace the string." + inreplace 'src/auto/config.h', "/* #undef PY_NO_RTLD_GLOBAL */", "#define PY_NO_RTLD_GLOBAL 1" + inreplace 'src/auto/config.h', "/* #undef PY3_NO_RTLD_GLOBAL */", "#define PY3_NO_RTLD_GLOBAL 1" + end + end + if build.include? "custom-icons" # Get the custom font used by the icons cd 'src/MacVim/icons' do @@ -108,14 +147,27 @@ class Macvim < Formula executables.each {|f| ln_s bin+'mvim', bin+f} end - def caveats; <<-EOS.undent - MacVim.app installed to: - #{prefix} + def caveats + s = '' + s += <<-EOS.undent + MacVim.app installed to: + #{prefix} - To link the application to a normal Mac OS X location: - brew linkapps - or: - ln -s #{prefix}/MacVim.app /Applications + To link the application to a normal Mac OS X location: + brew linkapps + or: + brew linkapps --local EOS + if build.with? "python" and build.with? "python3" + s += <<-EOS.undent + + This MacVim build with dynamic library Python 2 & 3. + + Note that MacVim load dynamic Python 2 & 3 library with the same time + may crash MacVim. For more information, see: + http://vimdoc.sourceforge.net/htmldoc/if_pyth.html#python3 + EOS + end + return s end end diff --git a/Library/Formula/vim.rb b/Library/Formula/vim.rb index 431c21adc..947a24a0d 100644 --- a/Library/Formula/vim.rb +++ b/Library/Formula/vim.rb @@ -17,7 +17,7 @@ class Vim < Formula option "disable-nls", "Build vim without National Language Support (translated messages, keymaps)" option "with-client-server", "Enable client/server mode" - LANGUAGES_OPTIONAL = %w(lua mzscheme perl tcl) + LANGUAGES_OPTIONAL = %w(lua mzscheme perl python3 tcl) LANGUAGES_DEFAULT = %w(ruby python) LANGUAGES_OPTIONAL.each do |language| @@ -28,6 +28,7 @@ class Vim < Formula end depends_on :python => :recommended + depends_on :python3 => :optional depends_on 'lua' => :optional depends_on 'gtk+' if build.with? 'client-server' @@ -42,6 +43,9 @@ class Vim < Formula def install ENV['LUA_PREFIX'] = HOMEBREW_PREFIX if build.with?('lua') + # vim doesn't have and required any Python package, unset PYTHONPATH. + ENV.delete('PYTHONPATH') + opts = [] opts += LANGUAGES_OPTIONAL.map do |language| "--enable-#{language}interp" if build.with? language @@ -49,11 +53,14 @@ class Vim < Formula opts += LANGUAGES_DEFAULT.map do |language| "--enable-#{language}interp" unless build.without? language end + if opts.include? "--enable-pythoninterp" and opts.include? "--enable-python3interp" + opts = opts - %W[--enable-pythoninterp --enable-python3interp] + %W[--enable-pythoninterp=dynamic --enable-python3interp=dynamic] + end opts << "--disable-nls" if build.include? "disable-nls" - if python - if python.brewed? + if python2 and not build.with? "python3" + if !python.from_osx? && python.framework? # Avoid that vim always links System's Python even if configure tells us # it has found a brewed Python. Verify with `otool -L`. ENV.prepend 'LDFLAGS', "-F#{python.framework}" @@ -88,6 +95,36 @@ class Vim < Formula "--with-features=huge", "--with-compiledby=Homebrew", *opts + + if build.with? "python" and build.with? "python3" + # On 64-bit systems, we need to avoid a 32-bit Framework Python. + # vim doesn't check Python while compiling. + python do + if MacOS.prefer_64_bit? and python.framework? and not archs_for_command("#{python.prefix}/Python").include? :x86_64 + opoo "Detected a framework Python that does not have 64-bit support in:" + puts <<-EOS.undent + #{python.prefix} + + Dynamic loading Python library required the same architecture. + + Note that a framework Python in /Library/Frameworks/Python.framework is + the "MacPython" version, and not the system-provided version which is in: + /System/Library/Frameworks/Python.framework + EOS + end + end + # Help vim find Python's library as absolute path. + python do + inreplace 'src/auto/config.mk', /-DDYNAMIC_PYTHON#{python.if3then3}_DLL=\\".*\\"/, %Q[-DDYNAMIC_PYTHON#{python.if3then3}_DLL=\'\"#{python.prefix}/Python\"\'] if python.framework? + end + # Force vim loading different Python on same time, may cause vim crash. + unless python.brewed? + opoo "Your Python isn't comes from Homebrew, you may see warning massage during brewing. That's OK. Because we can't detect what your Python is. We will force replace the string." + inreplace 'src/auto/config.h', "/* #undef PY_NO_RTLD_GLOBAL */", "#define PY_NO_RTLD_GLOBAL 1" + inreplace 'src/auto/config.h', "/* #undef PY3_NO_RTLD_GLOBAL */", "#define PY3_NO_RTLD_GLOBAL 1" + end + end + system "make" # If stripping the binaries is not enabled, vim will segfault with # statically-linked interpreters like ruby @@ -95,6 +132,19 @@ class Vim < Formula system "make", "install", "prefix=#{prefix}", "STRIP=/usr/bin/true" ln_s bin+'vim', bin+'vi' if build.include? 'override-system-vi' end + + def caveats + s = '' + if build.with? "python" and build.with? "python3" + s += <<-EOS.undent + This vim build with dynamic library Python 2 & 3. + + Note that vim load dynamic Python 2 & 3 library with the same time + may crash vim. For more information, see: + http://vimdoc.sourceforge.net/htmldoc/if_pyth.html#python3 + EOS + end + end end __END__ |
