#!/bin/sh

# Copyright 2008, 2009  Patrick J. Volkerding, Sebeka, MN, USA
# All rights reserved.
#
# Redistribution and use of this script, with or without modification, is
# permitted provided that the following conditions are met:
#
# 1. Redistributions of this script must retain the above copyright
#    notice, this list of conditions and the following disclaimer.
#
#  THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS 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 AUTHOR 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.

PKGNAM=gtk+2
VERSION=2.14.7
BUILD=${BUILD:-2}

. /etc/pkghelpers
pkghelpers_env


rm -rf $PKG
mkdir -p $TMP $PKG/usr
cd $TMP
rm -rf gtk+-$VERSION
tar xvf $CWD/gtk+-$VERSION.tar.bz2 || exit 1
cd gtk+-$VERSION

# There's been this long standing debate about PNG and -lz
# and this patch is the workaround.  ;-)
zcat $CWD/gtk.pnglz.diff.gz | patch -p1 --verbose || exit 1
# Fix Flash in Konquoror:
zcat $CWD/gtk.nsplugin.diff.gz | patch -p1 --verbose || exit 1
# Fix for x86_64 (does not hurt the other archs but note that we will start
# using /etc/gtk-2.0/$host instead of /etc/gtk-2.0/ now):
zcat $CWD/gtk.etc.host.location.diff.gz | patch -p1 --verbose || exit 1

# The original config.{guess,sub} do not work on x86_64
cp -p /usr/share/libtool/config.{guess,sub} .

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 {} \;

libtoolize --force
autoreconf -vif

# Autoconf changes linux to linux-gnu.
# Our host is $ARCH-slackware-linux not $ARCH-slackware-linux-gnu:
sed -i -e 's#linux|linux-gnu|#linux|linux|#' config.sub

CFLAGS="$SLKCFLAGS" \
./configure \
  --prefix=/usr \
  --libdir=/usr/lib${LIBSUFFIX} \
  --sysconfdir=/etc \
  --mandir=/usr/man \
  --with-xinput=yes \
  --build=$ARCH-$DISTRO-linux

make $NUMJOBS || make || exit 1

# Check the host value that is passed to the compile to the one in this script:
host="$ARCH-$DISTRO-linux"
compile_host=$(grep 'host_triplet =' gtk/Makefile | sed -e "s/.* = //")
if [ "x$compile_host" != "x$host" ]; then
  echo "Host mismatch: compile='$compile_host', SlackBuild='$host'" && exit 1
fi

make install DESTDIR=$PKG \
  RUN_QUERY_IMMODULES_TEST=false RUN_QUERY_LOADER_TEST=false \
  || exit 1

# I'm spamming your root partition because /etc/gtk-2.0 won't install to $DESTDIR
make install || exit 1
cp -a /etc/gtk-2.0/* $PKG/etc/gtk-2.0/ || exit 1
rm -rf $PKG/etc/gtk-2.0/$host
mkdir -p $PKG/etc/gtk-2.0/$host
mv $PKG/etc/gtk-2.0/* $PKG/etc/gtk-2.0/$host/

mv $PKG/etc/gtk-2.0/$host/im-multipress.conf $PKG/etc/gtk-2.0/$host/im-multipress.conf.new || exit 1

# We need to have separate 32-bit and 64-bit binaries
# for places where we have two copies of the GTK+ package installed.
# (we might have x86_64 and i486 packages on the same system, for example.)
case "$host" in
  s390x*|x86_64*)
   mv $PKG/usr/bin/gtk-query-immodules-2.0{,-64}
   mv $PKG/usr/bin/gdk-pixbuf-query-loaders{,-64}
   ( cd $PKG/usr/bin
     ln -sf gtk-query-immodules-2.0-64 gtk-query-immodules-2.0
     ln -sf gdk-pixbuf-query-loaders-64 gdk-pixbuf-query-loaders
   )
   ;;
  *)
   mv $PKG/usr/bin/gtk-query-immodules-2.0{,-32}
   mv $PKG/usr/bin/gdk-pixbuf-query-loaders{,-32}
   ( cd $PKG/usr/bin
     ln -sf gtk-query-immodules-2.0-32 gtk-query-immodules-2.0
     ln -sf gdk-pixbuf-query-loaders-32 gdk-pixbuf-query-loaders
   )
   ;;
esac

# Install wrappers for the binaries:
cp $CWD/update-gdk-pixbuf-loaders $PKG/usr/bin/update-gdk-pixbuf-loaders-$ARCH
cp $CWD/update-gtk-immodules $PKG/usr/bin/update-gtk-immodules-$ARCH
cp $CWD/update-gdk-pixbuf-loaders-wrapper $PKG/usr/bin/update-gdk-pixbuf-loaders
cp $CWD/update-gtk-immodules-wrapper $PKG/usr/bin/update-gtk-immodules
chmod 0755 $PKG/usr/bin/update-*

mkdir -p $PKG/usr/doc/gtk+-$VERSION
cp -a \
  AUTHORS COPYING NEWS README TODO \
  $PKG/usr/doc/gtk+-$VERSION
( cd $PKG/usr/doc/gtk+-$VERSION
  ln -s /usr/share/gtk-doc/html/gail-libgail-util .
  ln -s /usr/share/gtk-doc/html/gdk .
  ln -s /usr/share/gtk-doc/html/gdk-pixbuf .
  ln -s /usr/share/gtk-doc/html/gtk .
)

# I'm almost inclined to think this stuff is obsolete but I don't know for sure.
# I do know that leaving it in doesn't hurt (aside from a few wasted bytes, but
# probably less than the comments here waste ;-)
mkdir -p $PKG/etc/profile.d
install -m755 -oroot -groot cp -a $CWD/profile.d/* $PKG/etc/profile.d

mkdir -p $PKG/install
cat $CWD/slack-desc > $PKG/install/slack-desc
zcat $CWD/doinst.sh.gz | sed "s,slackware,$DISTRO,g" > $PKG/install/doinst.sh

cd $PKG
pkghelpers_fixup
pkghelpers_makepkg
