-
-
Save gonzaloserrano/0fa8346bc7b343ca043e to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
require "formula" | |
class Vim < Formula | |
homepage "http://www.vim.org/" | |
url 'https://vim.googlecode.com/hg/', :revision => 'cd5eff09c1ae' | |
version '7.4.622' | |
# We only have special support for finding depends_on :python, but not yet for | |
# :ruby, :perl etc., so we use the standard environment that leaves the | |
# PATH as the user has set it right now. | |
env :std | |
option "override-system-vi", "Override system vi" | |
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 python3 tcl) | |
LANGUAGES_DEFAULT = %w(perl python ruby) | |
option "with-python3", "Build vim with python3 instead of python[2] support" | |
LANGUAGES_OPTIONAL.each do |language| | |
option "with-#{language}", "Build vim with #{language} support" | |
end | |
LANGUAGES_DEFAULT.each do |language| | |
option "without-#{language}", "Build vim without #{language} support" | |
end | |
depends_on :python => :recommended | |
depends_on :python3 => :optional | |
depends_on "lua" => :optional | |
depends_on "luajit" => :optional | |
depends_on "gtk+" if build.with? "client-server" | |
conflicts_with "ex-vi", | |
:because => "vim and ex-vi both install bin/ex and bin/view" | |
def install | |
ENV["LUA_PREFIX"] = HOMEBREW_PREFIX if build.with?("lua") || build.with?("luajit") | |
# vim doesn't require any Python package, unset PYTHONPATH. | |
ENV.delete("PYTHONPATH") | |
opts = [] | |
opts += LANGUAGES_OPTIONAL.map do |language| | |
"--enable-#{language}interp" if build.with? language | |
end | |
opts += LANGUAGES_DEFAULT.map do |language| | |
"--enable-#{language}interp" if build.with? language | |
end | |
if opts.include? "--enable-pythoninterp" and opts.include? "--enable-python3interp" | |
# only compile with either python or python3 support, but not both | |
# (if vim74 is compiled with +python3/dyn, the Python[3] library lookup segfaults | |
# in other words, a command like ":py3 import sys" leads to a SEGV) | |
opts = opts - %W[--enable-pythoninterp] | |
end | |
opts << "--disable-nls" if build.include? "disable-nls" | |
if build.with? "client-server" | |
opts << "--enable-gui=gtk2" | |
else | |
opts << "--enable-gui=no" | |
opts << "--without-x" | |
end | |
if build.with? "luajit" | |
opts << "--with-luajit" | |
opts << "--enable-luainterp" | |
end | |
# XXX: Please do not submit a pull request that hardcodes the path | |
# to ruby: vim can be compiled against 1.8.x or 1.9.3-p385 and up. | |
# If you have problems with vim because of ruby, ensure a compatible | |
# version is first in your PATH when building vim. | |
# We specify HOMEBREW_PREFIX as the prefix to make vim look in the | |
# the right place (HOMEBREW_PREFIX/share/vim/{vimrc,vimfiles}) for | |
# system vimscript files. We specify the normal installation prefix | |
# when calling "make install". | |
system "./configure", "--prefix=#{HOMEBREW_PREFIX}", | |
"--mandir=#{man}", | |
"--enable-multibyte", | |
"--with-tlib=ncurses", | |
"--enable-cscope", | |
"--with-features=huge", | |
"--with-compiledby=Homebrew", | |
*opts | |
system "make" | |
# If stripping the binaries is not enabled, vim will segfault with | |
# statically-linked interpreters like ruby | |
# http://code.google.com/p/vim/issues/detail?id=114&thanks=114&ts=1361483471 | |
system "make", "install", "prefix=#{prefix}", "STRIP=true" | |
bin.install_symlink "vim" => "vi" if build.include? "override-system-vi" | |
end | |
test do | |
# Simple test to check if Vim was linked to Python version in $PATH | |
if build.with? "python" | |
vim_path = bin/"vim" | |
# Get linked framework using otool | |
otool_output = `otool -L #{vim_path} | grep -m 1 Python`.gsub(/\(.*\)/, "").strip.chomp | |
# Expand the link and get the python exec path | |
vim_framework_path = Pathname.new(otool_output).realpath.dirname.to_s.chomp | |
system_framework_path = `python-config --exec-prefix`.chomp | |
assert_equal system_framework_path, vim_framework_path | |
end | |
end | |
end |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment