You're probably going to want a new item about this [1] as it scared me: resolving dependencies... looking for inter-conflicts... warning: removing 'vim' from target list because it conflicts with 'gvim' :: gvim and vim are in conflict. Remove vim? [y/N] y
-Dan [1] http://bugs.archlinux.org/task/19087 On Sun, Apr 18, 2010 at 2:37 AM, Daniel Griffiths <[email protected]> wrote: > Date: Sunday, April 18, 2010 @ 03:37:23 > Author: dgriffiths > Revision: 77810 > > FS#19087 > > Added: > vim/trunk/gvim.desktop > vim/trunk/gvim.install > Modified: > vim/trunk/PKGBUILD > Deleted: > vim/trunk/fetch_patches.sh > vim/trunk/fetch_runtime.sh > vim/trunk/vim.install > > ------------------+ > PKGBUILD | 245 +++++++++++++++++++++++++++++++++++++++-------------- > fetch_patches.sh | 28 ------ > fetch_runtime.sh | 117 ------------------------- > gvim.desktop | 42 +++++++++ > gvim.install | 13 ++ > vim.install | 37 -------- > 6 files changed, 236 insertions(+), 246 deletions(-) > > Modified: PKGBUILD > =================================================================== > --- PKGBUILD 2010-04-18 04:30:29 UTC (rev 77809) > +++ PKGBUILD 2010-04-18 07:37:23 UTC (rev 77810) > @@ -1,84 +1,201 @@ > -# $Id$ > +# Contributor: Jan "heftig" Steffens <[email protected]> > # Maintainer: tobias [ tobias at archlinux org ] > +# Maintainer: Daniel J Griffiths <[email protected]> > > -pkgname=vim > +pkgbase=('vim') > +pkgname=('vim' 'gvim' 'vim-runtime') > _srcver=7.2 > -_patchlevel=385 > +_patchlevel=411 > pkgver=${_srcver}.${_patchlevel} > pkgrel=1 > -pkgdesc='Vi Improved, a highly configurable, improved version of the vi text > editor' > arch=('i686' 'x86_64') > license=('custom:vim') > url="http://www.vim.org" > -depends=('gpm' 'coreutils' 'perl') > -makedepends=('wget' 'sed' 'grep' 'gettext' 'curl' 'rsync') > -backup=(etc/vimrc) > -install=${pkgname}.install > -# we need the extra-stuff to get all patches applied smoothly > +makedepends=('gpm' 'coreutils' 'perl' 'python' 'ruby' 'libxt' \ > + 'desktop-file-utils' 'gtk2' 'wget' 'sed' 'grep' \ > + 'gettext' 'curl' 'rsync' 'pkgconfig') > 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 vimrc archlinux.vim) > -md5sums=('f0901284b338e448bfd79ccca0041254' > '35e04482f07c57221c9a751aaa3b8dac' \ > - 'd8884786979e0e520c112faf2e176f05' > '9c8f6b302fc3f343962686b8cf4a0350' \ > - '45c1c3c6aff7de0d8fc2a9d8cd5cec7d' > 'e57777374891063b9ca48a1fe392ac05' \ > - '10353a61aadc3f276692d0e17db1478e') > + vimrc archlinux.vim gvim.desktop) > +md5sums=('f0901284b338e448bfd79ccca0041254' > '35e04482f07c57221c9a751aaa3b8dac' > + 'd8884786979e0e520c112faf2e176f05' > 'e57777374891063b9ca48a1fe392ac05' > + '10353a61aadc3f276692d0e17db1478e' > '2be104c0372dd6dae19cb7968c03cd4f') > > -build() > -{ > - _versiondir="vim"$(echo ${_srcver} | sed "s/\.//") > - # pull in patches from vim.org (or the src cache alternatively) > - . ${srcdir}/fetch_patches.sh > - get_patches || return 1 > +_versiondir="vim$(echo ${_srcver} | sed "s/\.//")" > > - cd ${srcdir}/${_versiondir} > - sed -i 's|^.*\(#define SYS_.*VIMRC_FILE.*"\) .*$|\1|' src/feature.h > - sed -i 's|^.*\(#define 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 \ > - --enable-gpm --enable-acl --with-x=no --disable-gui \ > - --enable-multibyte --enable-cscope \ > - --enable-perlinterp > - #--with-global-runtime=/usr/share/vim --with-vim-name=vim \ > - make || return 1 > +##### Build ##### > + > +_get_patches() { > + curl ftp://ftp.vim.org/pub/vim/patches/${_srcver}/MD5SUMS | sed -e > '/.gz$/d' > MD5SUMS > + _currpatch=$(cat MD5SUMS | wc -l) > + > + rsync -avzcP --exclude '*.gz' > "ftp.nluug.nl::Vim/patches/${_srcver}/${_srcver}.*" . > + md5sum -c MD5SUMS > /dev/null || return 1 > + > + > vim.full.patch.log > + for _file in $(cat MD5SUMS | awk '{ print $2 }'); do > + patch -d ${_versiondir} -p0 < ${_file} >> vim.full.patch.log > || return 1 > + done > + > + if [ ${_patchlevel} -lt ${_currpatch} ]; then > + echo '' > + echo -e '\t\tWARNING!' > + echo 'You are not building the latest available version! A > newer patchlevel' > + echo 'seems to be available. Please edit the PKGBUILD and add > the latest' > + echo "${_currpatch} as pkgrel number!" > + echo '' > + sleep 10 > + fi > + return 0 > } > > -package() > -{ > - . ${srcdir}/fetch_runtime.sh > - _versiondir="vim"$(echo ${_srcver} | sed "s/\.//") > - cd ${srcdir}/${_versiondir} > +_get_runtime() { > + # Get a copy of the runtime from the archive if we don't already have > one > + if [ ! -d runtime ]; then > + cp -r "${_versiondir}/runtime" . || return 1 > + fi > > - make VIMRCLOC=/etc DESTDIR=${pkgdir} install > - cd ${pkgdir}/usr/bin > - rm ex view # provided by (n)vi in core > - mv vim vim-normal # we create a vim-symlink on post_install > - ln -sf vim-normal vim > - # ... make g* related symlinks point directly to the actual binary > - ln -sf vim-normal rview > - ln -sf vim-normal rvim > - ln -sf vim-normal vimdiff > + # Update our runtime to the newest version > + # --delete assures we won't overwrite any non-runtime files > + # with old, cached versions in the next step > + rsync -avzcP --delete --exclude 'dos' --exclude 'spell' \ > + 'ftp.nluug.nl::Vim/runtime/' "${srcdir}/runtime" || return 1 > > - # delete some manpages > - find ${pkgdir}/usr/share/man -type d -name 'man1' 2> /dev/null | \ > - while read mandir; do > - cd ${mandir} > - rm -f ex.1 view.1 # provided by (n)vi > - rm -f evim.1 # this does not make sense in the console version > - done > + # Install our new runtime into the source > + cp -r runtime "${_versiondir}" > +} > > - # fix FS#17216 > - sed -i 's|messages,/var|messages,/var/log/messages.log,/var|' \ > - ${pkgdir}/usr/share/vim/vim72/filetype.vim > +build() { > + cd ${srcdir} > > - _runtimedir="${pkgdir}/usr/share/vim/${_versiondir}/" > - update_runtime > - cd ${srcdir}/${_versiondir} > - install -Dm644 ${srcdir}/vimrc ${pkgdir}/etc/vimrc > - install -Dm644 ${srcdir}/archlinux.vim \ > - ${pkgdir}/usr/share/vim/vimfiles/archlinux.vim > - install -dm755 ${pkgdir}/usr/share/licenses/vim > - cd ${pkgdir}/usr/share/licenses/vim > - ln -s ../../vim/${_versiondir}/doc/uganda.txt license.txt > + # pull in patches from vim.org > + _get_patches || return 1 > + > + # pull in runtime from vim.org > + _get_runtime || return 1 > + > + # define the place for the global (g)vimrc file (set to /etc/vimrc) > + sed -i 's|^.*\(#define SYS_.*VIMRC_FILE.*"\) .*$|\1|' \ > + "${_versiondir}/src/feature.h" || return 1 > + sed -i 's|^.*\(#define VIMRC_FILE.*"\) .*$|\1|' \ > + "${_versiondir}/src/feature.h" || return 1 > + > + # build party > + rm -rf vim-build gvim-build > + mv ${_versiondir} vim-build > + cp -r vim-build gvim-build > + > + cd ${srcdir}/vim-build > + > + ./configure --prefix=/usr --localstatedir=/var/lib/vim \ > + --mandir=/usr/share/man --with-compiledby=ArchLinux \ > + --with-features=big --enable-gpm --enable-acl --with-x=no \ > + --disable-gui --enable-multibyte --enable-cscope \ > + --disable-netbeans --enable-perlinterp --disable-pythoninterp \ > + --disable-rubyinterp > + > + make || return 1 > + > + cd ${srcdir}/gvim-build > + > + ./configure --prefix=/usr --localstatedir=/var/lib/vim \ > + --mandir=/usr/share/man --with-compiledby=ArchLinux \ > + --with-features=big --enable-gpm --enable-acl --with-x=yes \ > + --enable-gui=gtk2 --enable-multibyte --enable-cscope \ > + --enable-netbeans --enable-perlinterp --enable-pythoninterp \ > + --enable-rubyinterp > + > + make || return 1 > } > + > +##### Packaging ##### > + > +package_vim() { > + depends=("vim-runtime=${pkgver}" 'gpm' 'coreutils' 'perl') > + conflicts=('gvim') > + > + cd ${srcdir}/vim-build > + make -j1 VIMRCLOC=/etc DESTDIR=${pkgdir} install || return 1 > + > + # provided by (n)vi in core > + rm ${pkgdir}/usr/bin/{ex,view} > + > + # delete some manpages > + find ${pkgdir}/usr/share/man -type d -name 'man1' 2>/dev/null | \ > + while read _mandir; do > + cd ${_mandir} > + rm -f ex.1 view.1 # provided by (n)vi > + rm -f evim.1 # this does not make sense if we have no GUI > + done > + > + # Runtime provided by runtime package > + rm -r ${pkgdir}/usr/share/vim > + > + # license > + install -dm755 ${pkgdir}/usr/share/licenses/vim > + ln -s /usr/share/vim/${_versiondir}/doc/uganda.txt \ > + ${pkgdir}/usr/share/licenses/vim/license.txt > +} > + > +package_gvim() { > + pkgdesc='Vi Improved, a highly configurable, improved version of the > vi text editor (with advanced features, such as a GUI)' > + depends=("vim-runtime=${pkgver}" 'gpm' 'coreutils' 'perl' > + 'python' 'ruby' 'libxt' 'desktop-file-utils' 'gtk2') > + provides=("vim=${pkgver}") > + conflicts=('vim') > + install=gvim.install > + > + cd ${srcdir}/gvim-build > + make -j1 VIMRCLOC=/etc DESTDIR=${pkgdir} install || return 1 > + > + # provided by (n)vi in core > + rm ${pkgdir}/usr/bin/{ex,view} > + > + # delete some manpages > + find ${pkgdir}/usr/share/man -type d -name 'man1' 2>/dev/null | \ > + while read _mandir; do > + cd ${_mandir} > + rm -f ex.1 view.1 # provided by (n)vi > + done > + > + # Move the runtime for later packaging > + mv ${pkgdir}/usr/share/vim ${srcdir}/runtime-install > + > + # freedesktop links > + install -Dm644 ${srcdir}/gvim.desktop \ > + ${pkgdir}/usr/share/applications/gvim.desktop > + install -Dm644 runtime/vim48x48.png > ${pkgdir}/usr/share/pixmaps/gvim.png > + > + # license > + install -dm755 ${pkgdir}/usr/share/licenses/gvim > + ln -s /usr/share/vim/${_versiondir}/doc/uganda.txt \ > + ${pkgdir}/usr/share/licenses/gvim/license.txt > +} > + > +package_vim-runtime() { > + pkgdesc='Runtime for vim and gvim' > + backup=(etc/vimrc) > + > + # Install the runtime split from gvim > + install -dm755 ${pkgdir}/usr/share > + mv ${srcdir}/runtime-install ${pkgdir}/usr/share/vim > + > + # Don't forget logtalk.dict > + install -Dm644 ${srcdir}/gvim-build/runtime/ftplugin/logtalk.dict \ > + ${pkgdir}/usr/share/vim/${_versiondir}/ftplugin/logtalk.dict || > return 1 > + > + # fix FS#17216 > + sed -i 's|messages,/var|messages,/var/log/messages.log,/var|' \ > + ${pkgdir}/usr/share/vim/vim72/filetype.vim > + > + # rc files > + install -Dm644 ${srcdir}/vimrc ${pkgdir}/etc/vimrc > + install -Dm644 ${srcdir}/archlinux.vim \ > + ${pkgdir}/usr/share/vim/vimfiles/archlinux.vim > + > + # license > + install -dm755 ${pkgdir}/usr/share/licenses/vim-runtime > + ln -s /usr/share/vim/${_versiondir}/doc/uganda.txt \ > + ${pkgdir}/usr/share/licenses/vim-runtime/license.txt > +} > > Deleted: fetch_patches.sh > =================================================================== > --- fetch_patches.sh 2010-04-18 04:30:29 UTC (rev 77809) > +++ fetch_patches.sh 2010-04-18 07:37:23 UTC (rev 77810) > @@ -1,28 +0,0 @@ > -# the external logic for pulling in patches > - > -get_patches() { > - > - curl ftp://ftp.vim.org/pub/vim/patches/${_srcver}/MD5SUMS | sed -e \ > - '/.gz$/d' > MD5SUMS > - let _patchlevel=$_patchlevel+1 > - _currpatch=$(cat MD5SUMS | wc -l) > - sed -i "${_patchlevel},\$d" MD5SUMS > - rsync -avzcP "ftp.nluug.nl::Vim/patches/${_srcver}/${_srcver}.*" . > - md5sum -c MD5SUMS > /dev/null || return 1 > - > vim.full.patch.log > - for file in $(cat MD5SUMS | awk '{ print $2 }') > - do patch -d ${_versiondir} -p0 < $file >> vim.full.patch.log || return > 1; done > - > - ######## > - > - if [ ${_patchlevel} -le ${_currpatch} ]; then > - echo "" > - echo -e "\t\tWARNING!" > - echo "You are not building the latest available version! A newer > patchlevel" > - echo "seems to be available. Please edit the PKGBUILD and add the latest" > - echo "${_currpatch} as pkgrel number!" > - echo "" > - sleep 10 > - fi > - return 0 > -} > > Deleted: fetch_runtime.sh > =================================================================== > --- fetch_runtime.sh 2010-04-18 04:30:29 UTC (rev 77809) > +++ fetch_runtime.sh 2010-04-18 07:37:23 UTC (rev 77810) > @@ -1,117 +0,0 @@ > -# 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 ${srcdir} > - [ -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 = " "${srcdir}/${_recipe}"); do > - _file=$(echo ${_file} | sed "s|.*file = \(.*\)|\1|") > - _md5=$(grep -A2 "file = ${_file} *$" "${srcdir}/${_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=${srcdir}/${_versiondir}/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=10872 \ > - -O autoload/pythoncomplete.vim > - cd "${_OLDDIR}" > - return 0 > -} > > Added: gvim.desktop > =================================================================== > --- gvim.desktop (rev 0) > +++ gvim.desktop 2010-04-18 07:37:23 UTC (rev 77810) > @@ -0,0 +1,42 @@ > +[Desktop Entry] > +Encoding=UTF-8 > +Version=1.0 > +Name=gVim > +Name[eo]=VIM-fasado > +Name[sv]=gVim > +Name[xx]=xx > +Comment=GTK2 enhanced vim text editor > +Comment[ar]=محرر نصوص > +Comment[bg]=Текст Редактор > +Comment[de]=Texteditor > +Comment[el]=Διορθωτής Κειμένου > +Comment[eo]=Tekstredaktilo > +Comment[et]=Tekstiredaktor > +Comment[eu]=Testu Editorea > +Comment[fi]=Tekstieditori > +Comment[he]=עורך טקסט > +Comment[is]=Textaritill > +Comment[ja]=テキストエディタ > +Comment[lt]=Teksto redaktorius > +Comment[mt]=Editur tat-test > +Comment[pt_BR]=Editor de Texto > +Comment[ro]=Editor de text > +Comment[ru]=редактор > +Comment[sk]=Textový editor > +Comment[sl]=Urejevalnik besedil > +Comment[ta]=¯¨Ã ¦¾¡ÌôÀ¡Ç÷ > +Comment[tr]=Metin Düzenleyici > +Comment[uk]=Редактор текстів > +Comment[vi]=Trình soạn văn bản > +Comment[xx]=xx > +Comment[zh_CN]=文本编辑器 > +Comment[zh_TW]=文字編輯器 > +GenericName=Text Editor > +Type=Application > +TryExec=gvim > +Exec=gvim > +Icon=gvim > +Terminal=false > +X-MultipleArgs=false > +Categories=GTK;Application;Utility;TextEditor; > +MimeType=application/mathml+xml;application/xhtml+xml;application/x-perl;application/x-python;application/x-shellscript;audio/x-mpegurl;audio/x-scpls;image/svg+xml;message/news;message/rfc822;text/calendar;text/css;text/english;text/html;text/mrml;text/plain;text/rdf;text/rss;text/rtf;text/sgml;text/vnd.wap.wml;text/x-adasrc;text/x-bibtex;text/x-chdr;text/x-c++hdr;text/x-csrc;text/x-c++src;text/x-c;text/x-objc;text/x-csv;text/x-diff;text/x-java;text/x-katefilelist;text/x-latex;text/x-log;text/x-lyx;text/x-makefile;text/xmcd;text/xml;text/x-moc;text/x-mswinurl;text/x-objcsrc;text/x-pascal;text/x-perl;text/x-php;text/x-php-source;text/x-python;text/x-tcl;text/x-tex;text/x-vcalendar;text/x-vcard;text/x-xslfo;text/x-xslt; > > Added: gvim.install > =================================================================== > --- gvim.install (rev 0) > +++ gvim.install 2010-04-18 07:37:23 UTC (rev 77810) > @@ -0,0 +1,13 @@ > +post_install() { > + echo -n "Updating desktop and mime database..." > + update-desktop-database -q > + echo "done." > +} > + > +post_upgrade() { > + post_install $1 > +} > + > +post_remove() { > + post_install $1 > +} > > Deleted: vim.install > =================================================================== > --- vim.install 2010-04-18 04:30:29 UTC (rev 77809) > +++ vim.install 2010-04-18 07:37:23 UTC (rev 77810) > @@ -1,37 +0,0 @@ > -post_install() { > - # if gvim is installed make vim a symlink to vim-big > - if [ -f usr/bin/vim-big ] ; then > - cd usr/bin > - rm -f vim > - ln -sf vim-big vim > - cd ${OLDPWD} > - echo "Create gvim 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." > -} > - > -post_remove() { > - # By all dependencies in the world, that shall never happen, because > - # gvim depends on vim ... but then there is always pacman -Rd ... > - > - # if gvim is installed make vim a symlink to vim-big > - if [ -f usr/bin/vim-big ] ; then > - cd usr/bin > - rm -f vim > - ln -sf vim-big vim > - cd ${OLDPWD} > - echo "Create gvim related symlinks..." > - fi > -} > - > -post_upgrade() { > - post_install $1 > -} > - > - > -op=$1 > -shift > -[ "$(type -t "$op")" = "function" ] && $op "$@" > >

