#!/bin/bash # # Script for updating vim sources by patches from Bram # # This script is OBSOLETE, but you can check new version in # vimconfig project HERE: # # http://www.platon.sk/projects/vimconfig/ # # Developed by Lubomir Host 'rajo' # Copyright (c) 2003 Platon SDG # Licensed under terms of GNU General Public License. # All rights reserved. # # $Platon$ # Define vim versions: VIM_VER="vim61b" VIM_VER_LONG="vim-6.1b" VIM_VER_EGREP="^6\.1b\." # Web site where patches are located #URL="ftp://ftp.vim.org/pub/vim/patches" URL="ftp://ftp.vim.org/pub/vim/unstable/patches/" # Directory where Vim sources are located #SRC_DIR="/opt/scratch/rajo/src/vim" SRC_DIR="/opt/scratch/rajo/src/vim/unstable" # Where save tar-bziped archiv DIST_DIR="$HOME/public_html/vim/dist" # '6.0.0.099' --> '98' # for version 6.0.001 return empty string old_version() { # if [ "x$1" = "x6.0.001" ]; then # if [ "x$1" = "x6.1a.001" ]; then # echo; # return; # fi # echo $1 | awk 'BEGIN {FS="."} { print "." $3 - 1 }' # echo $1 | awk 'BEGIN {FS="."} { print ".0" $3 - 1 }' echo $1 | awk ' BEGIN {FS="."} { if ($3 < 11) { print ".00" $3 - 1 ; next; } if ($3 < 101) { print ".0" $3 - 1 ; next; } print "." $3 - 1 ; }' } # '6.0.099' --> '99' new_version() { # echo $1 | awk 'BEGIN {FS="."} { print "." $3 - 1 + 1 }' echo $1 | awk 'BEGIN {FS="."} { print "." $3 }' } download_patch() { DIR=`pwd`; cd $SRC_DIR/patches && \ wget -nH -nd $URL/$1 || \ ( sleep 100; wget -nH -nd $URL/$1 ) || return 1 ; cd $DIR } patch_sources() { DIR=`pwd`; cd $SRC_DIR/patches && \ patch -p0 < $1 && \ cd $SRC_DIR && \ mv "$VIM_VER"`old_version $1` "$VIM_VER"`new_version $1` || return 1 cd $DIR } make_distribution() { DIR=`pwd`; DIST_FILE="$DIST_DIR/$VIM_VER_LONG`new_version $1`-all.tar.bz2" OLD_DIST_FILE="$DIST_DIR/$VIM_VER_LONG`old_version $1`-all.tar.bz2" cd $SRC_DIR && \ tar cIf $DIST_FILE "$VIM_VER"`new_version $1` && \ chmod a+r $DIST_FILE && \ rm -f $OLD_DIST_FILE || return 1 cd $DIR } # Analyze mail from Bram (thanks to Bram for patch :-) ) # Look for version of patch. # Check for write lock and make it! while [ -f "$SRC_DIR/update_vim.lock" ]; do echo "Waiting for pid `cat $SRC_DIR/update_vim.lock`"; sleep 60 done echo $PID > $SRC_DIR/update_vim.lock || exit 1 TMP_FILE=`tempfile -p update_vim || mktemp /tmp/update_vimXXXXXX || echo /tmp/update_vim$$` ## Save mail to TMP_FILE #cat > $TMP_FILE # Save mail to /dev/null cat > /dev/null # XXX: OBSOLETE!!! #NEW_PATCH=`egrep '^Patch 6\.1a\.' $TMP_FILE | awk '{print $2}'` #if [ -z "$NEW_PATCH" ]; then # echo "Can't found patch number!" # rm -f $SRC_DIR/update_vim.lock # exit 1 #fi # #download_patch $NEW_PATCH && \ #patch_sources $NEW_PATCH && \ #make_distribution $NEW_PATCH && \ #xtell `id -nu` "New distribution $NEW_PATCH succeesfully created" # Download list of avalaible patches and download it wget -O - $URL | awk 'BEGIN { FS=">" } {print $2}' | \ egrep "$VIM_VER_EGREP" | sed 's/<.*//g;' > $TMP_FILE cd $SRC_DIR/patches && \ ( NEW_PATCHES="`ls -1| egrep \"$VIM_VER_EGREP\" | diff - $TMP_FILE | awk '{ print $2 }'`" if [ -z "$NEW_PATCHES" ]; then echo "No new patches..." else for i in `echo $NEW_PATCHES` do download_patch $i && patch_sources $i || exit 1 done # cd $SRC_DIR/vim61a && make && make install make_distribution $i && \ xtell `id -nu` "New distribution $i -- $NEW_PATCHES succeesfully created" fi ) rm -f $TMP_FILE rm -f $TMP_FILE #remove lock rm -f $SRC_DIR/update_vim.lock # vim: ts=4