Created
December 11, 2014 14:50
-
-
Save airblade/2542bb3739ce6b80b11a to your computer and use it in GitHub Desktop.
Homebrew formula for MacVim with patches to bring MacVim's patchlevel up to 542.
This file contains 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' | |
# Reference: https://github.com/b4winckler/macvim/wiki/building | |
class Macvim < Formula | |
homepage 'http://code.google.com/p/macvim/' | |
url 'https://github.com/b4winckler/macvim/archive/snapshot-73.tar.gz' | |
version '7.4-73' | |
sha1 'b87e37fecb305a99bc268becca39f8854e3ff9f0' | |
revision 1 | |
head 'https://github.com/b4winckler/macvim.git' | |
option "custom-icons", "Try to generate custom document icons" | |
option "override-system-vim", "Override system vim" | |
depends_on :xcode => :build | |
depends_on 'cscope' => :recommended | |
depends_on 'lua' => :optional | |
depends_on 'luajit' => :optional | |
depends_on :python => :recommended | |
depends_on :python3 => :optional | |
env :std if MacOS.version <= :snow_leopard | |
# Help us! We'd like to use superenv in these environments too | |
head do | |
patch do | |
url 'file:///Users/andy/code/buildingvim/a-clean.diff' | |
sha1 '2086b634bb7a2d3c5a079830e66d50184a1c7eb3' | |
end | |
patch do | |
url 'file:///Users/andy/code/buildingvim/b-clean.diff' | |
sha1 '8c696f81903ed910db637fd30a25dea00b95438f' | |
end | |
end | |
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.) | |
ENV['ARCHFLAGS'] = "-arch #{MacOS.preferred_arch}" | |
# If building for 10.7 or up, make sure that CC is set to "clang". | |
ENV.clang if MacOS.version >= :lion | |
# --enable-perlinterp | |
# --enable-tclinterp | |
args = %W[ | |
--with-features=huge | |
--enable-multibyte | |
--with-macarchs=#{MacOS.preferred_arch} | |
--enable-rubyinterp | |
--with-tlib=ncurses | |
--with-compiledby=Homebrew | |
--with-local-dir=#{HOMEBREW_PREFIX} | |
] | |
args << "--enable-cscope" if build.with? "cscope" | |
if build.with? "lua" | |
args << "--enable-luainterp" | |
args << "--with-lua-prefix=#{HOMEBREW_PREFIX}" | |
end | |
if build.with? "luajit" | |
args << "--enable-luainterp" | |
args << "--with-lua-prefix=#{HOMEBREW_PREFIX}" | |
args << "--with-luajit" | |
end | |
# only allow either python or python3; if the optional | |
# python3 is chosen, default to it, otherwise use python2 | |
if build.with? "python3" | |
args << "--enable-python3interp" | |
elsif build.with? "python" | |
ENV.prepend "LDFLAGS", `python-config --ldflags`.chomp | |
ENV.prepend "CFLAGS", `python-config --cflags`.chomp | |
args << "--enable-pythoninterp" | |
end | |
# configure appends "SDKS/..." to the value of `xcode-select -print-path`, | |
# but this isn't correct on recent Xcode, so we need to set it manually. | |
# FIXME this is a bug, and it should be fixed upstream. | |
unless MacOS::CLT.installed? | |
args << "--with-developer-dir=#{MacOS::Xcode.prefix}/Platforms/MacOSX.platform/Developer" | |
args << "--with-macsdk=#{MacOS.version}" | |
end | |
system "./configure", *args | |
if build.include? "custom-icons" | |
# Get the custom font used by the icons | |
system "make", "-C", "src/MacVim/icons", "getenvy" | |
else | |
# Building custom icons fails for many users, so off by default. | |
inreplace "src/MacVim/icons/Makefile", "$(MAKE) -C makeicns", "" | |
inreplace "src/MacVim/icons/make_icons.py", "dont_create = False", "dont_create = True" | |
end | |
system "make" | |
prefix.install "src/MacVim/build/Release/MacVim.app" | |
inreplace "src/MacVim/mvim", /^# VIM_APP_DIR=\/Applications$/, | |
"VIM_APP_DIR=#{prefix}" | |
bin.install "src/MacVim/mvim" | |
# Create MacVim vimdiff, view, ex equivalents | |
executables = %w[mvimdiff mview mvimex gvim gvimdiff gview gvimex] | |
executables += %w[vi vim vimdiff view vimex] if build.include? "override-system-vim" | |
executables.each { |e| bin.install_symlink "mvim" => e } | |
end | |
def caveats | |
if build.with? "python" and build.with? "python3" | |
<<-EOS.undent | |
MacVim can no longer be brewed with dynamic support for both Python versions. | |
Only Python 3 support has been provided. | |
EOS | |
end | |
end | |
test do | |
# Simple test to check if MacVim was linked to Python version in $PATH | |
if build.with? "python" | |
vim_path = prefix/"MacVim.app/Contents/MacOS/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