#!/bin/sh
# Heavily based on the Slackware 13.37 SlackBuild
# http://rsachetto.googlepages.com
# Packager Andrea Sciucca Gohanz ( gohanz at infinito.it)
# http://www.slacky.eu
#
# 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.
# 
#
# Required: dcraw
#
# Exit on most errors
set -e

# Set variables:
CWD=`pwd`
OUTPUT=${OUTPUT:-$CWD}
PKGNAME=sir
TMP=${TMP:-/tmp/buildpkgs/$PKGNAME}
PKG=$TMP/package
VERSION=${VERSION:-2.3}
ARCH=${ARCH:-x86_64}
JOBS=${JOBS:--j2}
BUILD=${BUILD:-1}
TAG=${TAG:-dj}

# Download sorce tarball if still not present
SOURCE=http://sir.googlecode.com/files/$PKGNAME'_'$VERSION.tar.gz

if [ ! -e $CWD/$PKGNAME'_'$VERSION.tar.gz ]; then
 wget $SOURCE
fi


# Set compiling FLAGS
if [ "$ARCH" = "i486" ]; then
  SLKCFLAGS="-O2 -march=i486 -mtune=i686"; SLKLDFLAGS=""; LIBDIRSUFFIX=""; CHOST="i486"
elif [ "$ARCH" = "i686" ]; then
  SLKCFLAGS="-O2 -march=i686 -mtune=i686"; SLKLDFLAGS=""; LIBDIRSUFFIX=""; CHOST="i686"
elif [ "$ARCH" = "x86_64" ]; then
  SLKCFLAGS="-O2 -fPIC"; SLKLDFLAGS="-L/usr/lib64"; LIBDIRSUFFIX="64"; CHOST="x86_64"
fi

# Create building directory
rm -rf $PKG
mkdir -p $TMP $PKG $OUTPUT


# Decompress the source tarball
cd $TMP
tar xvzf $CWD/$PKGNAME'_'$VERSION.tar.gz

echo -e "\E[0;32m+----------------------+\E[0;0m"
echo -e "\E[0;32m| Start SlackBuild SIR |\E[0;0m"
echo -e "\E[0;32m+----------------------+\E[0;0m"

# Adjust permissions and ownerships
cd $PKGNAME'_'$VERSION'_'source
chown -R root:root .
chmod -R u+w,go+r-w,a-s .


# Building SIR  package
mkdir -p $PKG/usr/bin
cat << EOF > $PKG/usr/bin/sir
#!/bin/bash
cd /usr/share/sir
exec /usr/share/sir/sir
EOF

chmod 755 $PKG/usr/bin/*


# Configure:
qmake  PREFIX=/usr QMAKE_LIBS="$SLKLDFLAGS" QMAKE_CFLAGS="$SLKCFLAGS" QMAKE_CXXFLAGS="$SLKCFLAGS" -o Makefile sir.pro


# Build and install:
LDFLAGS="$SLKLDFLAGS" \
CFLAGS="$SLKCFLAGS" \
CXXFLAGS="$SLKCFLAGS" \
make $JOBS


install -m 755 -p -D sir $PKG/usr/share/sir/sir

cp -a -r {images,translations} $PKG/usr/share/sir

mkdir -p $PKG/usr/share/applications
cat << EOF > $PKG/usr/share/applications/$PKGNAME.desktop
[Desktop Entry]
Type=Application
Encoding=UTF-8
Name=SIR
Name[it]=SIR
GenericName=Simple Image Resizer
GenericName[it]=Convertitore di formati grafici
Comment=A simple application for resizing image
Comment[it]=Programma per la conversione di formati grafici
Icon=sir
Exec=sir
Terminal=false
StartupNotify=true
MimeType=image/jpeg;image/png;image/bmp;image/ppm;image/xbm;image/jpg;image/xpm;
Categories=Qt;Application;Graphics
EOF

mkdir -p $PKG/usr/share/kde4/services/ServiceMenus 
cat << EOF > $PKG/usr/share/kde4/services/ServiceMenus/sir_service.desktop
[Desktop Entry]
Version=1.0
Encoding=UTF-8
Type=Service
ServiceTypes=KonqPopupMenu/Plugin,image/*
Actions=openWithSir
Name=openWithSir
Icon=sir
X-KDE-Priority=TopLevel

[Desktop Action openWithSir]
Name=Open with SIR
Name[it]=Apri con SIR
Name[pl]=Zmień rozmiar obrazka z SIR
Name[pt]=Abrir com SIR
Exec=sir %U
Icon=sir
EOF

# Installing icons directory
cd images
for res in 32 64 128 ;do
  dir=${PKG}/usr/share/icons/hicolor/${res}x${res}/apps
  mkdir -p ${dir}
  install -m0644 sir-${res}x${res}.png \
                 ${dir}/${PKGNAME}.png || exit 1 
done
cd ..

# Add documentation files: readme, changelog and so on
mkdir -p $PKG/usr/doc/$PKGNAME-$VERSION/SlackBuild
cp -a INSTALL LICENSE TODO $PKG/usr/doc/$PKGNAME-$VERSION
chmod 755 $PKG/usr/doc/$PKGNAME-$VERSION/
chmod 644 $PKG/usr/doc/$PKGNAME-$VERSION/*


# Also add the slack-desk file and this slackbuild to the package
mkdir -p $PKG/install
cat $CWD/slack-desc > $PKG/install/slack-desc
cat $CWD/slack-desc > $PKG/usr/doc/$PKGNAME-$VERSION/SlackBuild/slack-desc
cat $CWD/$PKGNAME.SlackBuild > $PKG/usr/doc/$PKGNAME-$VERSION/SlackBuild/$PKGNAME.SlackBuild
chmod 755 $PKG/usr/doc/$PKGNAME-$VERSION/SlackBuild/
chmod 644 $PKG/usr/doc/$PKGNAME-$VERSION/SlackBuild/*

# Building some post-install execution script 	
	echo "if [ -x /usr/bin/update-mime-database ]; then
  /usr/bin/update-mime-database /usr/share/mime &> /dev/null
fi" >> $PKG/install/doinst.sh
	echo "" >> $PKG/install/doinst.sh
	echo "if [ -x /usr/bin/update-desktop-database ]; then
  /usr/bin/update-desktop-database 1> /dev/null 2> /dev/null
fi" >> $PKG/install/doinst.sh
	echo "" >> $PKG/install/doinst.sh
	echo "if [ -x /usr/bin/gtk-update-icon-cache ]; then
  /usr/bin/gtk-update-icon-cache  -f -q /usr/share/icons/hicolor 1> /dev/null 2> /dev/null
fi" >> $PKG/install/doinst.sh
	echo "" >> $PKG/install/doinst.sh


# Strip binary
strip --strip-unneeded $PKG/usr/share/sir/sir
cd $PKG

# Create txz package
/sbin/makepkg -l y -c n $OUTPUT/$PKGNAME-$VERSION-$ARCH-$BUILD$TAG.${PKGTYPE:-txz}

cd $CWD
md5sum $OUTPUT/$PKGNAME-$VERSION-$ARCH-$BUILD$TAG.txz > $OUTPUT/$PKGNAME-$VERSION-$ARCH-$BUILD$TAG.md5
rm -rf $TMP