summaryrefslogtreecommitdiffstats
path: root/abs/core/vi
diff options
context:
space:
mode:
Diffstat (limited to 'abs/core/vi')
-rw-r--r--abs/core/vi/PKGBUILD62
-rw-r--r--abs/core/vi/fetch_patches.sh63
-rw-r--r--abs/core/vi/fetch_runtime.sh117
-rw-r--r--abs/core/vi/vi.install37
4 files changed, 279 insertions, 0 deletions
diff --git a/abs/core/vi/PKGBUILD b/abs/core/vi/PKGBUILD
new file mode 100644
index 0000000..1165431
--- /dev/null
+++ b/abs/core/vi/PKGBUILD
@@ -0,0 +1,62 @@
+# $Id: PKGBUILD 3026 2008-06-18 02:38:15Z eric $
+# Maintainer: tobias [ tobias at archlinux org ]
+
+pkgname=vi
+_srcver=7.1
+_patchlevel=330
+pkgver=${_srcver}.${_patchlevel}
+pkgrel=10
+pkgdesc="a highly configurable, improved version of the vi text editor (basic version)"
+arch=(i686 x86_64)
+license=('custom:vim')
+url="http://www.vim.org"
+groups=('base')
+depends=('glibc' 'ncurses' 'coreutils')
+makedepends=('wget' 'sed' 'grep')
+backup=(etc/virc)
+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 fetch_runtime.sh)
+md5sums=('44c6b4914f38d6f9aa959640b89da329' '605cc7ae31bcc9d7864bb0bb6025f55d' \
+ '144aa049ba70621acf4247f0459f3ee7' '0fbebfbf8464b1e65fb6a9ca4bddefe1' \
+ '92e3dc8844d446c1ecd28e7257a47cb7')
+
+build()
+{
+ # pull in patches from vim.org (or the src cache alternatively)
+ . ${startdir}/src/fetch_patches.sh
+ . ${startdir}/src/fetch_runtime.sh
+ get_patches || return 1
+ cd ${startdir}/src/vim$(echo ${_srcver} | sed "s/\.//")
+ # set the virc different from vimrc
+ sed -i 's|^.*\(#define SYS_VIMRC_FILE.*"\) .*$|\1|' src/feature.h
+ sed -i 's|^.*\(#define VIMRC_FILE.*"\) .*$|\1|' src/feature.h
+ sed -i 's|^.*\(#define USR_VIMRC_FILE\t"\).*$|\1$HOME/.virc"|' src/feature.h
+ sed -i 's|/etc/vimrc|/etc/virc|' src/feature.h
+ sed -i 's|\.vimrc|.virc|' src/feature.h
+ # build party
+ ./configure --prefix=/usr --localstatedir=/var/lib/vim --mandir=/usr/share/man \
+ --with-compiledby=ArchLinux --with-features=normal \
+ --with-global-runtime=/usr/share/vim --with-vim-name=vi \
+ --disable-gpm --disable-acl --with-x=no --disable-gui --enable-multibyte
+ make || return 1
+ make VIMRCLOC=/etc DESTDIR=${startdir}/pkg VIMRTDIR= install
+ cd ${startdir}/pkg/usr/bin
+ rm -f vim rvim view rview
+ ln -s vi evi
+
+ _runtimedir="${startdir}/pkg/usr/share/vim/"
+ update_runtime
+ # kill vim and x specific stuff
+ sed -i '/vms/,+4 d;/Convenient command/,+3 d;/mouse work/,+2 d'\
+ ${startdir}/pkg/usr/share/vim/vimrc_example.vim
+ install -Dm644 ${startdir}/pkg/usr/share/vim/vimrc_example.vim \
+ ${startdir}/pkg/etc/virc
+ rm -f ${startdir}/pkg/usr/share/vim/gvimrc_example.vim
+ install -dm755 ${startdir}/pkg/usr/share/licenses/vim
+ cd ${startdir}/pkg/usr/share/licenses/vim
+ ln -s ../../vim/doc/uganda.txt license.txt
+}
diff --git a/abs/core/vi/fetch_patches.sh b/abs/core/vi/fetch_patches.sh
new file mode 100644
index 0000000..1f38e42
--- /dev/null
+++ b/abs/core/vi/fetch_patches.sh
@@ -0,0 +1,63 @@
+# 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
+
+ ## TEMPFIX stupid fuckup upstream
+ mv ./7.1.126ne ./7.1.126
+ downloads=$((${downloads} - 1))
+ ########
+
+ 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/core/vi/fetch_runtime.sh b/abs/core/vi/fetch_runtime.sh
new file mode 100644
index 0000000..f244ea5
--- /dev/null
+++ b/abs/core/vi/fetch_runtime.sh
@@ -0,0 +1,117 @@
+# the purpose of this magic is to pull in the latest runtime files for vim
+# we start withe theruntime provoded by the tarballs and compare MD5s against
+# the latest runtime
+# if this fails we look in the local source cache if they have been fetched
+# for an earlier build and compare those MD5 files
+# if this fails, we fetch the stuff from online and store it in the local src
+# cache.
+# The local cache has to be set (makepkg.conf) AND it has to be writable
+
+update_runtime() {
+ _OLDDIR=$(pwd) #get absolute path
+ _errors=0
+ _ftp="ftp://ftp.vim.org/pub/vim/runtime"
+
+ # we're gonna be sneaky and grok the A-A-P recipe for the files we need
+ _recipe="getunix.aap"
+ _srccache="${SRCDEST}/vim-${_srcver}/"
+
+ echo "getting runtime recipe"
+ cd ${startdir}/src
+ [ -f "${_recipe}" ] && rm "${_recipe}"
+ wget "${_ftp}/${_recipe}" >/dev/null 2>&1
+
+ cd "${_runtimedir}"
+ _runtimedir=$(pwd) #get absolute path
+
+ # change IFS to loop line-by-line
+ _OLDIFS=$IFS
+ IFS="
+"
+ echo "begin fetching updated runtime files..."
+ for _file in $(grep "file = " "${startdir}/src/${_recipe}"); do
+ _file=$(echo ${_file} | sed "s|.*file = \(.*\)|\1|")
+ _md5=$(grep -A2 "file = ${_file} *$" "${startdir}/src/${_recipe}" | \
+ grep "get_md5" | \
+ sed 's|@if get_md5(file) != "\(.*\)":|\1|g')
+ _dir=$(dirname "${_file}")
+
+ mkdir -p "${_dir}"
+
+ echo -e "\t${_file}"
+ _havefile=0
+ # if we have the file and the MD5sum fails, we technically don't have the file
+ if [ -f ${_file} ]; then
+ # MD5 fails ? ... we don't have the file
+ if [ $(echo "${_md5} ${_file}" | md5sum --status -c -) ]; then
+ rm ${_file}
+ else
+ _havefile=1
+ fi
+ fi
+ # look files that were not copied from the unzipped sources
+ _cachefile=${startdir}/src/vim$(echo ${_srcver} | sed "s/\.//")/runtime/${_file}
+ if [ ${_havefile} -ne 1 -a -f ${_cachefile} ]; then
+ # MD5 fails ? ... we lookup if we downloaded another version earlier
+ if [ $(echo "${_md5} ${_cachefile}" | md5sum --status -c -) ]; then
+ _cachefile=${_srccache}/${_file}
+ if [ -f ${_cachefile} ]; then
+ if [ $(echo "${_md5} ${_cachefile}" | md5sum --status -c -) ]; then
+ rm ${_cachefile}
+ else
+ cp ${_cachefile} ${_dir}
+ _havefile=1
+ fi
+ fi
+ else
+ cp ${_cachefile} ${_dir}
+ _havefile=1
+ fi
+ fi
+ # look up the local $SRCDEST
+ _cachefile=${_srccache}/${_file}
+ if [ ${_havefile} -ne 1 -a -f ${_cachefile} ]; then
+ # MD5 fails ? ... we don't have the file
+ if [ $(echo "${_md5} ${_cachefile}" | md5sum --status -c -) ]; then
+ rm ${_cachefile}
+ else
+ cp ${_cachefile} ${_dir}
+ _havefile=1
+ fi
+ fi
+ # so we finally have to fetch it and store it to $SRCDEST (cache)
+ if [ ${_havefile} -ne 1 ]; then
+ echo -n -e "\t ... fetching file ${_file} ..."
+ cd "${_dir}"
+ wget "${_ftp}/${_file}" >/dev/null 2>&1
+ cd "${_runtimedir}"
+ # store freshly downloaded file in SRCDEST
+ mkdir -p ${_srccache}/${_dir}
+ cp ${_file} ${_srccache}/${_dir}
+ echo -e " done!"
+ fi
+
+ # check the MD5 sum finally
+ if [ $(echo "${_md5} ${_file}" | md5sum --status -c -) ]; then
+ echo "!!!! md5sum check for ${_file} failed !!!!"
+ errors=$((${_errors} + 1))
+ fi
+ done
+ IFS=${_OLDIFS}
+
+ echo "vim runtime got updated"
+
+ if [ ${_errors} -gt 0 ]; then
+ echo "${_errors} failed MD5 checks while updating runtime files -> build can't be completed"
+ return 1
+ else
+ echo -e "\tpatching filetype.vim for better handling of pacman related files ..."
+ sed -i "s/rpmsave/pacsave/;s/rpmnew/pacnew/;s/,\*\.ebuild/\0,PKGBUILD*,*.install/" filetype.vim
+ sed -i "/find the end/,+3{s/changelog_date_entry_search/changelog_date_end_entry_search/}" ftplugin/changelog.vim
+ fi
+ # make Aaron happy
+ wget http://www.vim.org/scripts/download_script.php\?src_id=7766 \
+ -O autoload/pythoncomplete.vim
+ cd "${_OLDDIR}"
+ return 0
+}
diff --git a/abs/core/vi/vi.install b/abs/core/vi/vi.install
new file mode 100644
index 0000000..ebb73c0
--- /dev/null
+++ b/abs/core/vi/vi.install
@@ -0,0 +1,37 @@
+post_install() {
+ # if we have vim installed create view/rview symlinks to vim
+ if [ ! -f usr/bin/vim ] ; then
+ cd usr/bin
+ ln -s vi view
+ ln -s vi rview
+ cd ${OLDPWD}
+ echo "Create vi related symlinks..."
+ fi
+ echo -n "Updating vi help tags..."
+ usr/bin/vi --noplugins -u NONE -U NONE \
+ --cmd ":helptags usr/share/vim/doc" --cmd ":q" > /dev/null 2>&1
+ echo "done."
+}
+
+pre_remove() {
+ # if vi is a binary instead of a symlink we have an intact gvim installation
+ # with a different binary/symlink structure
+ # we recover what pacmans database knows about Vim
+ if [ ! -f usr/bin/vim ] ; then
+ rm -f usr/bin/view usr/bin/rview
+ echo "Remove vi related symlinks ..."
+ fi
+}
+
+post_upgrade() {
+ post_install $1
+}
+
+pre_upgrade() {
+ pre_remove $2
+}
+
+
+op=$1
+shift
+[ "$(type -t "$op")" = "function" ] && $op "$@"