aboutsummaryrefslogtreecommitdiffstats
path: root/Library/Formula/vim.rb
diff options
context:
space:
mode:
Diffstat (limited to 'Library/Formula/vim.rb')
-rw-r--r--Library/Formula/vim.rb56
1 files changed, 53 insertions, 3 deletions
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__