diff options
-rw-r--r-- | abs/extra-testing/vim/PKGBUILD | 63 | ||||
-rw-r--r-- | abs/extra-testing/vim/fetch_patches.sh | 60 | ||||
-rw-r--r-- | abs/extra-testing/vim/vim.install | 38 |
3 files changed, 161 insertions, 0 deletions
diff --git a/abs/extra-testing/vim/PKGBUILD b/abs/extra-testing/vim/PKGBUILD new file mode 100644 index 0000000..ba20f79 --- /dev/null +++ b/abs/extra-testing/vim/PKGBUILD @@ -0,0 +1,63 @@ +# $Id: PKGBUILD 17696 2008-10-31 17:28:10Z allan $ +# Maintainer: tobias [ tobias at archlinux org ] + +pkgname=vim +_srcver=7.2 +_patchlevel=30 +pkgver=${_srcver}.${_patchlevel} +pkgrel=1.2 +pkgdesc="a highly configurable, improved version of the vi text editor" +arch=(i686 x86_64) +license=('custom:vim') +url="http://www.vim.org" +depends=("vi>=${pkgver}" 'perl' 'python' 'acl' 'gpm>=1.20.4' 'libxt') +makedepends=('wget' 'sed' 'grep') +backup=(etc/vimrc) +install=${pkgname}.install +# we need the extra-stuff to get all patches applied smoothly +source=(ftp://ftp.vim.org/pub/vim/unix/vim-${_srcver}.tar.bz2 \ + ftp://ftp.vim.org/pub/vim/extra/vim-${_srcver}-extra.tar.gz \ + ftp://ftp.vim.org/pub/vim/extra/vim-${_srcver}-lang.tar.gz \ + fetch_patches.sh) +md5sums=('f0901284b338e448bfd79ccca0041254' '35e04482f07c57221c9a751aaa3b8dac' \ + 'd8884786979e0e520c112faf2e176f05' 'a3b03cd44b8ed78a99850d4cbfaafe55') + +build() +{ + # pull in patches from vim.org (or the src cache alternatively) + . ${startdir}/src/fetch_patches.sh + get_patches || return 1 + cd ${startdir}/src/vim$(echo ${_srcver} | sed "s/\.//") + sed -i 's|^.*\(#define SYS_.*VIMRC_FILE.*"\) .*$|\1|' src/feature.h + # build party + ./configure --prefix=/usr --localstatedir=/var/lib/vim --mandir=/usr/share/man \ + --with-compiledby=ArchLinux --with-features=big \ + --with-x=yes --disable-gui \ + --with-global-runtime=/usr/share/vim --with-vim-name=vim \ + --enable-multibyte --enable-cscope \ + --enable-perlinterp --enable-pythoninterp - + make || return 1 + make VIMRCLOC=/etc DESTDIR=${startdir}/pkg VIMRTDIR= install + cd ${startdir}/pkg/usr/bin + rm -f ex view rview xxd vimtutor + ln -s vitutor vimtutor + + # delete the manpages/symlinks provided by vi package + find ${startdir}/pkg/usr/share/man -type d -name 'man1' 2> /dev/null | \ + while read mandir; do + cd ${mandir} + mv vimdiff.1 vimdiff.org + rm -f *.1 + ln -s rvi.1.gz rvim.1.gz + ln -s vi.1.gz vim.1.gz + ln -s vitutor.1.gz vimtutor.1.gz + mv vimdiff.org vimdiff.1 + done + + # kill the nobackup parts + sed -i '/vms/,+4 d' ${startdir}/pkg/usr/share/vim/vimrc_example.vim + install -Dm644 ${startdir}/pkg/usr/share/vim/vimrc_example.vim \ + ${startdir}/pkg/etc/vimrc + # clean all settings and controls - served by vi package + rm -rf ${startdir}/pkg/usr/share/vim +} diff --git a/abs/extra-testing/vim/fetch_patches.sh b/abs/extra-testing/vim/fetch_patches.sh new file mode 100644 index 0000000..03e16e2 --- /dev/null +++ b/abs/extra-testing/vim/fetch_patches.sh @@ -0,0 +1,60 @@ +# the external logic for pulling in patches + +get_patches() { + _patchdir=${startdir}/src/patches + cd ${startdir}/src/vim$(echo ${_srcver} | sed "s/\.//") + if [ -d ${_patchdir} ]; then + rm -rf ${_patchdir} + echo -e "\tremove patches from old build" + fi + mkdir ${_patchdir} && cd ${_patchdir} + _rpath=ftp://ftp.vim.org/pub/vim/patches/${_srcver} + + # change IFS to loop line-by-line + _OLDIFS=$IFS + IFS=" +" + echo -e "\tfetching checksumfile for patches" + wget ${_rpath}/MD5SUMS >/dev/null 2>&1 + + downloads=0 + for _line in $(/bin/cat MD5SUMS); do + downloads=$((${downloads} + 1)) + _md5=$(echo $_line | cut -d ' ' -f1) + _file=$(echo $_line | cut -d ' ' -f3) + if [ -f ${SRCDEST}/vim-${_srcver}/${_file} ]; then + echo -e "\thaving patch file:${_file}" + cp ${SRCDEST}/vim-${_srcver}/${_file} ./ + else + echo -n -e "\t... fetching patch file: ${_file} ..." + wget ${_rpath}/${_file} >/dev/null 2>&1 + if [ -w ${SRCDEST} ]; then + if [ ! -d ${SRCDEST}/vim-${_srcver} ]; then + mkdir -p ${SRCDEST}/vim-${_srcver} + fi + cp ${_file} ${SRCDEST}/vim-${_srcver}/ + echo " done!" + fi + fi + + if [ $(echo "${_md5} ${_file}" | md5sum --status -c -) ]; then + echo ${_file} md5sums do not match + return 1 + fi + done + + ######## + + if [ ${downloads} != ${_patchlevel} ]; then + echo -e "Number of patches does not match the patchlevel!\nEdit the PKGBUILD accordingly!" + return 1 + fi + IFS=$_OLDIFS + rm MD5SUMS + cd ${startdir}/src/vim$(echo ${_srcver} | sed "s/\.//") + for _patch in $(/bin/ls ${_patchdir}); do + patch -Np0 -i ${_patchdir}/${_patch} || return 1 + done + rm -rf ${_patchdir} + return 0 +} diff --git a/abs/extra-testing/vim/vim.install b/abs/extra-testing/vim/vim.install new file mode 100644 index 0000000..1d46e19 --- /dev/null +++ b/abs/extra-testing/vim/vim.install @@ -0,0 +1,38 @@ +post_install() { + # if we have an existing gvim installation - relocate binaries and symlinks + if [ -f usr/bin/vim ] ; then + cd usr/bin + rm -f view rview + ln -s vim view + ln -s vim rview + cd ${OLDPWD} + echo "Create vim related symlinks..." + fi + echo -n "Updating vim help tags..." + usr/bin/vim --noplugins -u NONE -U NONE \ + --cmd ":helptags usr/share/vim/doc" --cmd ":q" > /dev/null 2>&1 + echo "done." +} + +pre_remove() { + cd usr/bin + rm -f view rview + if [ -f usr/bin/vi ] ; then + ln -s vi view + ln -s vi rview + echo "Create vi related symlinks..." + fi + cd ${OLDPWD} +} + +post_upgrade() { + post_install $1 +} + +pre_upgrade() { + pre_remove $2 +} + +op=$1 +shift +[ "$(type -t "$op")" = "function" ] && $op "$@" |