#!/bin/sh
# Set initial variables:
CWD=`pwd`
if [ "$TMP" = "" ]; then
  TMP=/tmp
fi

VIMVER=6.3
CTAGSVER=5.5.2
# This is the directory in the VIM source archive to cd into.
DIRVER=63
ARCH=${ARCH:-i486}
BUILD=1

PKG=$TMP/package-xvim
rm -rf $PKG
mkdir -p $PKG

# Determine VIM patchlevel:
PATCHLEVEL=`ls $CWD/patches/* | tail -1 | cut -f 3 -d . 2> /dev/null`
if [ "$PATCHLEVEL" = "" ]; then
  PATCHLEVEL=0
fi

# ctags was once a part of vim,
# but now we have to bundle it in
cd $TMP
rm -rf ctags-$CTAGSVER
tar xzvf $CWD/ctags-$CTAGSVER.tar.gz
cd ctags-$CTAGSVER
chown -R root.root .
CFLAGS=-O2 \
./configure \
  --prefix=/usr \
  $ARCH-slackware-linux
make
mkdir -p $PKG/usr/bin
cat ctags > $PKG/usr/bin/ctags
chmod 755 $PKG/usr/bin/ctags
mkdir -p $PKG/usr/man/man1
cat ctags.1 | gzip -9c > $PKG/usr/man/man1/ctags.1.gz
mkdir -p $PKG/usr/doc/ctags-$CTAGSVER
cp -a \
  COPYING EXTENDING.html FAQ INSTALL INSTALL.oth NEWS README \
  $PKG/usr/doc/ctags-$CTAGSVER
chmod 644 $PKG/usr/doc/ctags-$CTAGSVER/*

echo "+=========================+"
echo "| vim-$VIMVER (X/GTK version) |"
echo "+=========================+"
cd $TMP
rm -rf vim$DIRVER
tar xjvf $CWD/vim-$VIMVER.tar.bz2
tar xjvf $CWD/vim-$VIMVER-lang.tar.bz2

# build the X version of vim with Gtk toolkit
cd $TMP/vim$DIRVER
chown -R root.root .
# Ignore any error if patches do not exist...
for file in $CWD/patches/* ; do
  ( zcat $file | patch -p0 --verbose --batch )
done
CFLAGS=-O2 \
./configure \
  --prefix=/usr \
  --with-x \
  --enable-gui=gtk2 \
  --with-features=big \
  $ARCH-slackware-linux
make
make install DESTDIR=$PKG
rm -rf $PKG/usr/man/man1/{etags,ex,rview,rvim,view}.1
( cd $PKG/usr/man/man1 ; ln -sf vim.1.gz ex.1.gz )
( cd $PKG/usr/man/man1 ; ln -sf vim.1.gz rview.1.gz )
( cd $PKG/usr/man/man1 ; ln -sf vim.1.gz rvim.1.gz )
( cd $PKG/usr/man/man1 ; ln -sf vim.1.gz view.1.gz )
gzip -9 $PKG/usr/man/man1/*.1
( cd $PKG/usr/bin ; rm -rf ex )
( cd $PKG/usr/bin ; ln -sf vim ex )
( cd $PKG/usr/bin ; rm -rf rview )
( cd $PKG/usr/bin ; ln -sf vim rview )
( cd $PKG/usr/bin ; rm -rf rvim )
( cd $PKG/usr/bin ; ln -sf vim rvim )
( cd $PKG/usr/bin ; rm -rf view )
( cd $PKG/usr/bin ; ln -sf vim view )
( cd $PKG/usr/bin ; rm -rf eview )
( cd $PKG/usr/bin ; ln -sf vim eview )
( cd $PKG/usr/bin ; rm -rf evim )
( cd $PKG/usr/bin ; ln -sf vim evim )

# Clean up those manpage links:
( cd $PKG/usr/man/man1 ; rm -rf ex.1.gz )
( cd $PKG/usr/man/man1 ; ln -sf vim.1.gz ex.1.gz )
( cd $PKG/usr/man/man1 ; rm -rf eview.1.gz )
( cd $PKG/usr/man/man1 ; ln -sf evim.1.gz eview.1.gz )
( cd $PKG/usr/man/man1 ; rm -rf gview.1.gz )
( cd $PKG/usr/man/man1 ; ln -sf vim.1.gz gview.1.gz )
( cd $PKG/usr/man/man1 ; rm -rf gvim.1.gz )
( cd $PKG/usr/man/man1 ; ln -sf vim.1.gz gvim.1.gz )
( cd $PKG/usr/man/man1 ; rm -rf gvimdiff.1.gz )
( cd $PKG/usr/man/man1 ; ln -sf vimdiff.1.gz gvimdiff.1.gz )
( cd $PKG/usr/man/man1 ; rm -rf rview.1.gz )
( cd $PKG/usr/man/man1 ; ln -sf vim.1.gz rview.1.gz )
( cd $PKG/usr/man/man1 ; rm -rf rvim.1.gz )
( cd $PKG/usr/man/man1 ; ln -sf vim.1.gz rvim.1.gz )
( cd $PKG/usr/man/man1 ; rm -rf view.1.gz )
( cd $PKG/usr/man/man1 ; ln -sf vim.1.gz view.1.gz )
( cd $PKG/usr/man/man1 ; rm -rf rgview.1.gz )
( cd $PKG/usr/man/man1 ; ln -sf vim.1.gz rgview.1.gz )
( cd $PKG/usr/man/man1 ; rm -rf rgvim.1.gz )
( cd $PKG/usr/man/man1 ; ln -sf vim.1.gz rgvim.1.gz )
# Nuke any bunk links:
rm -f $PKG/usr/man/man1/*.1
# Endclean :)

mkdir -p $PKG/usr/doc/vim-$VIMVER
cp -a README.txt $PKG/usr/doc/vim-$VIMVER
find $PKG/usr/doc/vim-$VIMVER -type f | xargs chmod 644
( cd $PKG/usr/doc/vim-$VIMVER ; rm -rf doc )
( cd $PKG/usr/doc/vim-$VIMVER ; ln -sf /usr/share/vim/vim$DIRVER doc )
mkdir -p $PKG/install
cat $CWD/slack-desc.xvim > $PKG/install/slack-desc
zcat $CWD/doinst.sh.gz > $PKG/install/doinst.sh

chown -R root.bin $PKG/usr/bin
( cd $PKG
  find . | xargs file | grep "executable" | grep ELF | cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null
  find . | xargs file | grep "shared object" | grep ELF | cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null
)

cd $PKG
makepkg -l y -c n $TMP/xvim-$VIMVER.$PATCHLEVEL-$ARCH-$BUILD.tgz