diff options
Diffstat (limited to 'Library/Formula/vim.rb')
| -rw-r--r-- | Library/Formula/vim.rb | 56 |
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__ |
