aboutsummaryrefslogtreecommitdiffstats
path: root/Library/Formula
diff options
context:
space:
mode:
Diffstat (limited to 'Library/Formula')
-rw-r--r--Library/Formula/macvim.rb72
-rw-r--r--Library/Formula/vim.rb56
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__