#!/bin/sh
# Copyright 2007-2009  Eric Hameleers, Eindhoven, NL
# All rights reserved.
#
#   Permission to use, copy, modify, and distribute this software for
#   any purpose with or without fee is hereby granted, provided that
#   the above copyright notice and this permission notice appear in all
#   copies.
#
#   THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
#   WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
#   MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
#   IN NO EVENT SHALL THE AUTHORS AND COPYRIGHT HOLDERS AND THEIR
#   CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
#   SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
#   LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
#   USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
#   ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
#   OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
#   OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
#   SUCH DAMAGE.
# -----------------------------------------------------------------------------
#
# Slackware SlackBuild script 
# ===========================
# By:        Eric Hameleers <alien@slackware.com>
# For:       tightvnc
# Descr:     remote control software
# URL:       http://www.tightvnc.com/
# -----------------------------------------------------------------------------

# Set initial variables:

NAME=tightvnc
VERSION=${VERSION:-1.3.10}
ARCH=${ARCH:-i586}
BUILDNUM=${BUILDNUM:-"1"}
VL_VERSION=${VL_VERSION:-"$(ls /var/log/packages/|grep vlconfig2|cut -d "-" -f4|cut -c 2-5)"}
BUILD=${BUILD:-"$BUILDNUM""$VL_VERSION"}
ADDRB=${ADDRB:-""} #Add deps that need to be added to the slack-required file here
EXRB=${EXRB:-""} #Add deps that need to be excluded from the slack-required file here

CWD=$(pwd)
cd ../
RELEASEDIR=$(pwd)
cd $CWD
mkdir -p $RELEASEDIR/tmp
TMP=$RELEASEDIR/tmp
PKG=$TMP/package-$NAME

case "$ARCH" in
  i486)   SLKCFLAGS="-O2 -march=i486 -mtune=i686"
          SLKLDFLAGS=""; LIBDIRSUFFIX=""
          ;;
  s390)   SLKCFLAGS="-O2"
          SLKLDFLAGS=""; LIBDIRSUFFIX=""
          ;;
  x86_64) SLKCFLAGS="-O2 -fPIC"
          SLKLDFLAGS="-L/usr/lib64"; LIBDIRSUFFIX="64"
          ;;
esac

# Explode the package framework:
cd $PKG
  explodepkg $CWD/_$NAME.tar.gz
cd -

cd $TMP
rm -rf vnc_unixsrc
tar xvf $CWD/${NAME}-${VERSION}_unixsrc.tar.?z* || exit 1
cd vnc_unixsrc || exit 1

# Make sure ownerships and permissions are sane:
chown -R root:root .
find . \
  \( -perm 777 -o -perm 775 -o -perm 711 -o -perm 555 -o -perm 511 \) \
  -exec chmod 755 {} \; -o \
  \( -perm 666 -o -perm 664 -o -perm 600 -o -perm 444 -o -perm 440 -o -perm 400 \) \
  -exec chmod 644 {} \;

# Make vncserver use sane pathnames and executable permissions:
zcat $CWD/tightvnc.paths-and-perms.diff.gz | patch -p1 --verbose || exit 1

# Use xinit's Xclients script to start the session:
cat vnc-xclients.patch | sed -e 's/Red Hat /Slackware /' | patch || exit 1

xmkmf -a
make CDEBUGFLAGS="$SLKCFLAGS" World || exit 1

cd Xvnc
  LDFLAGS="$SLKLDFLAGS" \
  CFLAGS="$SLKCFLAGS" \
  CXXFLAGS="$SLKCFLAGS" \
  ./configure
  make EXTRA_LIBRARIES="-lwrap -lnss_nis" CDEBUGFLAGS="$SLKCFLAGS" \
    EXTRA_DEFINES="-DUSE_LIBWRAP=1"
cd -  # end 'cd Xvnc'

# Manually install files:
mkdir -p $PKG/usr/bin $PKG/usr/man/man1
./vncinstall $PKG/usr/bin $PKG/usr/man

mkdir -p $PKG/usr/share/tightvnc
cp -aR classes $PKG/usr/share/tightvnc/

mkdir $PKG/etc
cp -a tightvncserver.conf $PKG/etc/tightvncserver.conf.new

# Add documentation:
mkdir -p $PKG/usr/doc/$NAME-$VERSION
cp -a \
  LICENCE.TXT README WhatsNew ChangeLog \
  $PKG/usr/doc/$NAME-$VERSION
mv $PKG/install/README.1st $PKG/usr/doc/$NAME-$VERSION

# Compress the man page(s):
if [ -d $PKG/usr/man ]; then
  find $PKG/usr/man -type f -name "*.?" -exec gzip -9f {} \;
  for i in $(find $PKG/usr/man -type l -name "*.?") ; do ln -s $( readlink $i ).gz $i.gz ; rm $i ; done
fi

# Strip binaries:
find $PKG | xargs file | grep -e "executable" -e "shared object" \
  | grep ELF | cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null

# Add a package description:
mkdir -p $PKG/install
cat $CWD/slack-desc > $PKG/install/slack-desc
zcat $CWD/doinst.sh.gz > $PKG/install/doinst.sh

#STRIPPING
#------------------------------------------------------------------------------------------------------------------
cd $PKG
echo " "
echo "Stripping...."
echo " "
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
#------------------------------------------------------------------------------------------------------------------


#FINISH PACKAGE
#--------------------------------------------------------------
echo "Finding dependencies..."
ADD="$ADDRB" EXCLUDE="$EXRB" requiredbuilder -v -y -s $RELEASEDIR $PKG
echo "Creating package $NAME-$VERSION-$ARCH-$BUILD.txz"
makepkg -l y -c n $RELEASEDIR/$NAME-$VERSION-$ARCH-$BUILD.txz

cd $CWD
echo "Cleaning up temp files..." && rm -rf $TMP
echo "Package Complete"
#--------------------------------------------------------------

# vim: set tabstop=4 shiftwidth=4 foldmethod=marker : ##
