On 04/18/10 at 09:01pm, Dan McGee wrote:
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 <dgriffiths@archlinux.org> 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 <uocll@stud.uni-karlsruhe.de> # Maintainer: tobias [ tobias at archlinux org ] +# Maintainer: Daniel J Griffiths <ghost1227@archlinux.us>
-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 "$@"
Good call, posting now --