[arch-commits] CVS update of arch/build/base/vi (4 files)

Tobias Kieslich tobias at archlinux.org
Tue Jul 10 00:26:30 UTC 2007


    Date: Monday, July 9, 2007 @ 20:26:30
  Author: tobias
    Path: /home/cvs-arch/arch/build/base/vi

   Added: PKGBUILD (1.1) fetch_patches.sh (1.1) fetch_runtime.sh (1.1)
          vi.install (1.1)

innitial checkin fro new vim layout based on

 vi   -> the very base but comes with a complete runtime
 vim  -> x capabilities, but NO GUI!, supports all script languages (except mzScheme wich we don't have)
 gvim -> everuthing including a gui


------------------+
 PKGBUILD         |   63 ++++++++++++++++++++++++++++
 fetch_patches.sh |   52 +++++++++++++++++++++++
 fetch_runtime.sh |  118 +++++++++++++++++++++++++++++++++++++++++++++++++++++
 vi.install       |   39 +++++++++++++++++
 4 files changed, 272 insertions(+)


Index: arch/build/base/vi/PKGBUILD
diff -u /dev/null arch/build/base/vi/PKGBUILD:1.1
--- /dev/null	Mon Jul  9 20:26:30 2007
+++ arch/build/base/vi/PKGBUILD	Mon Jul  9 20:26:29 2007
@@ -0,0 +1,63 @@
+# $Id: PKGBUILD,v 1.1 2007/07/10 00:26:29 tobias Exp $
+# Maintainer: tobias [ tobias at archlinux org ]
+
+pkgname=vi
+_srcver=7.1
+_patchlevel=22
+pkgver=${_srcver}.${_patchlevel}
+pkgrel=1
+pkgdesc="a highly configurable, improved version of the vi text editor (basic version)"
+arch=(i686 x86_64)
+license=(CUSTOUM)
+url="http://www.vim.org"
+depends=('glibc' 'ncurses')
+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'
+         'fba5e33a451066494c7203d13cf0be3d'
+         '0c75e1c272188ac71ce49923fa29b70c')
+
+build()
+{
+  # pull in patches from vim.org (or the src cache alternatively)
+  . ${startdir}/fetch_patches.sh
+  . ${startdir}/fetch_runtime.sh
+  get_patches
+  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.*"\) .*$|\1|' 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 \
+    --with-compiledby=ArchLinux --with-features=small \
+    --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
+}
Index: arch/build/base/vi/fetch_patches.sh
diff -u /dev/null arch/build/base/vi/fetch_patches.sh:1.1
--- /dev/null	Mon Jul  9 20:26:30 2007
+++ arch/build/base/vi/fetch_patches.sh	Mon Jul  9 20:26:29 2007
@@ -0,0 +1,52 @@
+# 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
+
+  for _line in $(/bin/cat MD5SUMS); do
+    _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
+
+    echo "${_md5}  ${_file}" | md5sum -c - >/dev/null 2>&1
+    if [ ${?} -ne 0 ]; then
+      echo ${_file} md5sums do not match
+      return 1
+    fi
+  done
+  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
+}
Index: arch/build/base/vi/fetch_runtime.sh
diff -u /dev/null arch/build/base/vi/fetch_runtime.sh:1.1
--- /dev/null	Mon Jul  9 20:26:30 2007
+++ arch/build/base/vi/fetch_runtime.sh	Mon Jul  9 20:26:29 2007
@@ -0,0 +1,118 @@
+# 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
+      echo "${_md5}  ${_file}" | md5sum -c - >/dev/null 2>&1
+      # MD5 fails ? ... we don't have the file
+      if [ ${?} -ne 0 ]; 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
+      echo "${_md5}  ${_cachefile}" | md5sum -c - >/dev/null 2>&1
+      # MD5 fails ? ... we lookup if we downloaded another version earlier
+      if [ ${?} -ne 0 ]; then
+        _cachefile=${_srccache}/${_file}
+        if [ -f ${_cachefile} ]; then
+          echo "${_md5}  ${_cachefile}" | md5sum -c - >/dev/null 2>&1
+          if [ ${?} -ne 0 ]; 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
+      echo "${_md5}  ${_cachefile}" | md5sum -c - >/dev/null 2>&1
+      # MD5 fails ? ... we don't have the file
+      if [ ${?} -ne 0 ]; 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
+    echo "${_md5}  ${_file}" | md5sum -c - >/dev/null 2>&1
+    if [ $? -ne 0 ]; 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*/" filetype.vim
+  fi
+  cd "${_OLDDIR}"
+  return 0
+}
Index: arch/build/base/vi/vi.install
diff -u /dev/null arch/build/base/vi/vi.install:1.1
--- /dev/null	Mon Jul  9 20:26:30 2007
+++ arch/build/base/vi/vi.install	Mon Jul  9 20:26:29 2007
@@ -0,0 +1,39 @@
+post_install() {
+  # if we have vim installed create view/rview symlinks to vim
+  if [ ! -f /usr/bin/vim ] ; then
+    OLDDIR=$(pwd)
+    cd /usr/bin
+    ln -s vi view
+    ln -s vi rview
+    cd ${OLDDIR}
+    echo "create vi relate 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 $1
+}
+
+
+op=$1
+shift
+
+$op $*




More information about the arch-commits mailing list