a project to simplify installation of open source software
on Mac OS X and Darwin
# $Id: Portfile 23119 2007-03-25 18:32:59Z pipping@macports.org $
PortSystem 1.0
name vim
set vim_version 7.0
set vim_patchlevel 220
version ${vim_version}.${vim_patchlevel}
revision 0
categories editors
maintainers pipping@macports.org
description Vi "workalike" with many additional features
long_description Vim is a virtually compatible, extremely \
enhanced version of the vi editor.
homepage http://www.vim.org/
platforms darwin freebsd
distfiles ${name}-${vim_version}.tar.bz2:vim \
${name}-${vim_version}-extra.tar.gz:extra \
${name}-${vim_version}-lang.tar.gz:extra
use_bzip2 yes
set serverList {
ftp://ftp.vim.org/pub/vim/ \
http://ftp.vim.org/pub/vim/ \
ftp://ftp.us.vim.org/pub/vim/ \
ftp://ftp.ca.vim.org/pub/vim/ \
ftp://ftp.nl.vim.org/pub/vim/ \
ftp://ftp.uk.vim.org/pub/vim/ \
ftp://ftp.ie.vim.org/pub/vim/ \
ftp://ftp.is.vim.org/pub/vim/ \
ftp://ftp.pl.vim.org/pub/vim/ \
ftp://ftp.ro.vim.org/pub/vim/ \
ftp://ftp.cz.vim.org/pub/vim/ \
ftp://ftp.sk.vim.org/pub/vim/ \
ftp://ftp.jp.vim.org/pub/vim/ \
ftp://ftp.kr.vim.org/pub/vim/ \
ftp://ftp2.us.vim.org/pub/vim/ \
ftp://ftp9.us.vim.org/pub/vim/ \
ftp://ftp2.nl.vim.org/pub/vim/ \
ftp://ftp3.nl.vim.org/pub/vim/ \
ftp://ftp3.de.vim.org/pub/vim/ \
ftp://ftp2.tw.vim.org/pub/vim/ \
ftp://miroir-francais.fr/pub/vim/ \
ftp://ftp.tw.vim.org/pub/Unix/Editors/Vim/
}
# create list of locations for source, extras, patches from serverList
foreach server ${serverList} {
lappend master_sites ${server}unix/:vim
lappend master_sites ${server}extra/:extra
lappend patch_sites ${server}patches/${vim_version}
}
patchfiles patch-if_ruby.c
dist_subdir vim
distname vim[strsed ${vim_version} {g/[.]//}]
eval {
set low 1
while {$low <= $vim_patchlevel} {
set high [expr $low + 99];
if {$high < $vim_patchlevel} {
patchfiles-append \
[format "%s.%03d-%03d.gz" $vim_version $low $high]
incr low 100
} else {
patchfiles-append [format "%s.%03d" $vim_version $low]
incr low 1
}
}
}
depends_lib port:gettext port:ncurses
configure.args --enable-gui=no --without-x --disable-gpm \
--mandir=${prefix}/share/man --with-tlib=ncurses
configure.env CPPFLAGS="-I${prefix}/include" \
LDFLAGS="-L${prefix}/lib"
extract.only ${name}-${vim_version}${extract.suffix}
post-extract {
system "gnutar xvfz ${distpath}/${name}-${vim_version}-extra.tar.gz -C \
${workpath}"
system "gnutar xvfz ${distpath}/${name}-${vim_version}-lang.tar.gz -C \
${workpath}"
}
test.run yes
variant aqua conflicts athena gtk1 gtk2 motif {
master_sites-append \
http://www.douglas.stebila.ca/files/code/vim/app/:app_aqua \
http://www.douglas.stebila.ca/files/code/vim/doc/:doc_aqua
distfiles-append app-bm.tar.gz:app_aqua \
doc.tar.gz:doc_aqua
set appPath "/Applications/MacPorts/"
configure.pre_args --prefix=${appPath}/Vim
configure.args-delete --enable-gui=no
configure.args-append --enable-gui=carbon
post-extract {
system "gnutar xvfz ${distpath}/app-bm.tar.gz -C ${workpath}"
system "gnutar xvfz ${distpath}/doc.tar.gz -C ${workpath}"
}
destroot {
set appPath "/Applications/MacPorts/"
# create the required directories
xinstall -d -m 755 ${destroot}${appPath}Vim
xinstall -d -m 755 ${destroot}${prefix}/bin
# copy Vim.app
file copy ${worksrcpath}/src/Vim.app ${destroot}${appPath}Vim
xinstall -m 644 ${filespath}/vimrc ${filespath}/gvimrc \
${destroot}${appPath}Vim/Vim.app
xinstall -m 644 ${workpath}/doc-txt.icns \
${destroot}${appPath}Vim/Vim.app/Contents/Resources
xinstall -m 644 ${workpath}/app.icns \
${destroot}${appPath}Vim/Vim.app/Contents/Resources/gui_mac.icns
# remove the broken link to 'runtime', copy the folder instead
set runtimePath \
"${destroot}${appPath}Vim/Vim.app/Contents/Resources/vim/runtime"
file delete ${runtimePath}
file copy ${worksrcpath}/runtime ${runtimePath}
# fix permissions
foreach f [glob ${runtimePath}/autoload/*.vim] {
file attributes ${f} -permissions 0644
}
# create a link to the executable
file link -hard ${destroot}${prefix}/bin/vim \
${destroot}${appPath}Vim/Vim.app/Contents/MacOS/Vim
# copy vimtutor
xinstall -m 755 ${worksrcpath}/src/vimtutor \
${destroot}${prefix}/bin/
# install documentation
xinstall -d ${destroot}/${prefix}/share/man/man1
cd ${destroot}${appPath}Vim/Vim.app/Contents/Resources/vim/runtime/doc
foreach manPage [glob *.1] {
file link -hard ${destroot}${prefix}/share/man/man1/${manPage} \
./${manPage}
}
# install launchscript
xinstall -m 755 ${filespath}/gvim.sh \
${destroot}/${prefix}/bin/gvim
# allow for Vim.App to open .nfo, .vim, .latex, .tex, .diff files
cd ${destroot}${appPath}Vim/Vim.app/Contents/
system "patch -p0 < ${filespath}/patch-Info.plist"
# copy GVim.app (ppc only)
if {![variant_isset darwin_i386]} {
system "gnutar xvfz ${filespath}/GVim_app.tar.gz -C \
${destroot}${appPath}"
xinstall -m 644 ${workpath}/app.icns \
${destroot}${appPath}GVim.app/Contents/Resources/appIcon.icns
}
}
}
variant athena conflicts aqua gtk1 gtk2 motif {
configure.args-delete --enable-gui=no --without-x
configure.args-append --enable-gui=athena --with-x --disable-darwin
depends_lib-append lib:libX11:XFree86
}
variant gtk1 conflicts aqua athena gtk2 motif {
configure.args-delete --enable-gui=no --without-x
configure.args-append --enable-gui=gtk --with-x --disable-darwin
depends_lib-append lib:libgtk.1:gtk1
}
variant gtk2 conflicts aqua athena gtk1 motif {
configure.args-delete --enable-gui=no --without-x
configure.args-append --enable-gui=gtk2 --with-x --disable-darwin
depends_lib-append lib:libgtk.2:gtk2
}
variant motif conflicts aqua athena gtk1 gtk2 {
configure.args-delete --enable-gui=no --without-x
configure.args-append --enable-gui=motif --with-x --disable-darwin
depends_lib-append lib:libXm:openmotif
}
#variant gnome {
# configure.args-delete --enable-gui=no --without-x
# configure.args-append --enable-gui=gnome --with-x --disable-darwin
# What for depends?
#}
#variant gnome2 {
# configure.args-delete --enable-gui=no --without-x
# configure.args-append --enable-gui=gnome2 --with-x --disable-darwin
# What for depends?
#}
variant tiny conflicts aqua { configure.args-append --with-features=tiny }
variant small conflicts aqua { configure.args-append --with-features=small }
variant big { configure.args-append --with-features=big }
variant huge { configure.args-append --with-features=huge }
variant multibyte { configure.args-append --enable-multibyte }
variant xim { configure.args-append --with-xim }
variant perl {
configure.args-append --enable-perlinterp
depends_lib-append bin:perl:perl5.8
}
variant python {
configure.args-append --enable-pythoninterp
depends_lib-append bin:python:python23
}
variant ruby {
configure.args-append --enable-rubyinterp
depends_lib-append bin:ruby:ruby
}
variant tcl {
configure.args-append --enable-tclinterp
depends_lib-append bin:tclsh:tcl
}
variant cscope {
configure.args-append --enable-cscope
}
# merely a proof-of-concept:
# gettext - not linked at all
# ncurses - incorrectly linked from /usr/lib
variant universal {
configure.args-append --with-mac-arch=both
configure.env-delete CPPFLAGS="-I${prefix}/include" \
LDFLAGS="-L${prefix}/lib"
}
platform darwin i386 {
}
include checksums_dist
include checksums_patch