#!/bin/bash
# Version: 1.7 GSB Package SlackBuild.
# Copyright (c) 2007,2008,2009 Darren 'Tadgy' Austin <darren (at) gnomeslackbuild.org>
# Copyright (c) 2007,2008,2009 Steve Kennedy <steve (at) gnomeslackbuild.org>
# All rights reserved.
#
# Licenced under the terms of the GNU General Public Licence version 3.
#
# 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.

# Package variables.
BUILD=3
VERSION=1.0

# List any packages here that are required to build this package.
# The list is space seperated and case sensitive.
REQUIRED_PACKAGES="gtk+2 gtk-engines cabextract"

# Build variables.
TAG=${TAG:-gsb}
ARCH=noarch
TUNE=${TUNE:-i486}
DISTRO=${DISTRO:-slackware}
TMP=${TMP:-/tmp}
PKGDEST=${PKGDEST:-$TMP}

# Script variables.
PKGNAME=$(basename $0 .SlackBuild)
PKG=$TMP/package-$PKGNAME
CWD=$(pwd)
NOCLEANUP=0
FORCEBUILD=0

# Usage.
function usage() {
  cat << EOF
Usage: ${0##*/} [options]

Options:  --force       The package will not be built if a package of the same
                        name is already installed, or any of the packages
                        required to build are missing.  This option over-rides
                        these checks and attempts a build anyway.
          --no-cleanup  By default any temporary source, build and package
                        directories will be deleted once the package is built.
                        This option prevents those files from being removed.
          --help        Show this help screen.
EOF
}

# Parse command line arguments.
while [ $# -gt 0 ]; do
  if [ "$1" = "-force" ] || [ "$1" = "--force" ]; then
    FORCEBUILD=1
    shift
  elif [ "$1" = "-no-cleanup" ] || [ "$1" = "--no-cleanup" ]; then
    NOCLEANUP=1
    shift
  elif [ "$1" = "-help" ] || [ "$1" = "--help" ]; then
    usage
    exit 0
  else
    echo "${0##*/}: Unknown option: $1"
    exit 1
  fi
done

# Package requirements and installation checks.
[ "$FORCEBUILD" = "0" ] && {
  function check_installed() {
    ls -1 /var/log/packages | grep "^${1}-[^-]*-[^-]*-[^-]*$" >/dev/null 2>&1
    return $?
  }

  check_installed "$PKGNAME" && {
    echo "${0##*/}: Remove installed '$PKGNAME' package before build."
    exit 1
  }

  for REQ in $REQUIRED_PACKAGES; do
    check_installed "$REQ" || {
      echo "${0##*/}: Required package '$REQ' not installed."
      exit 1
    }
  done
}

# Temporary space and package storage.
mkdir -p $TMP
rm -rf $PKG
mkdir -p $PKG
mkdir -p $PKG/install
mkdir -p $PKGDEST

# Decompress archive.
mkdir -p $TMP/mac4lin &&
cd $TMP/mac4lin &&
unzip $CWD/Mac4Lin_Install_v1.0.zip &&
rm -fr __MACOS &&
cd Mac4Lin_Install_v1.0 || exit 1

# Fix permissions for building.
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 {} \;

# Install
mkdir -p $PKG/usr/share/icons
mkdir -p $PKG/usr/share/themes
mkdir -p $PKG/usr/share/emerald/themes
mkdir -p $PKG/usr/share/backgrounds
mkdir -p $PKG/usr/share/gdm/themes
mkdir -p $PKG/usr/share/splash
mkdir -p $PKG/usr/share/sounds
mkdir -p $PKG/usr/share/fonts/TTF

# unpack gtk theme
tar -C $PKG/usr/share/themes -xzf GTK/Mac4Lin_GTK_Aqua_v1.0.tar.gz &&
tar -C $PKG/usr/share/themes -xzf GTK/Mac4Lin_GTK_Graphite_v1.0.tar.gz &&
tar -C $PKG/usr/share/themes -xzf GTK/Mac4Lin_Meta_v1.0.tar.gz || exit 1
# unpack icon theme
tar -C $PKG/usr/share/icons -xzf Icons/Mac4Lin_Icons_v1.0.tar.gz &&
tar -C $PKG/usr/share/icons -xzf Cursor/Mac4Lin_Cursors_v1.0.tar.gz || exit 1
# unpack emerald theme
tar -C $PKG/usr/share/emerald/themes -xzf Emerald/Mac4Lin_Emerald_Aqua_v1.0.tar.gz &&
tar -C $PKG/usr/share/emerald/themes -xzf Emerald/Mac4Lin_Emerald_Graphite_v1.0.tar.gz &&
tar -C $PKG/usr/share/emerald/themes -xzf Emerald/Mac4Lin_Emerald_Aqua_v1.0.tar.gz || exit 1
# unpack gdm theme
tar -C $PKG/usr/share/gdm/themes -xzf GDM/Mac4Lin_GDM_v1.0.tar.gz || exit 1
# Unpack sounds
tar -C $PKG/usr/share/sounds -xzf Sounds/Mac4Lin_Sounds_v1.0.tar.gz &&
tar -C $PKG/usr/share/sounds -xzf Sounds/Mac4Lin_Pidgin-Sounds_v1.0.tar.gz || exit 1
# Wallpapers
cp Wallpapers/* $PKG/usr/share/backgrounds || exit 1
# Fix names
( cd $PKG/usr/share/backgrounds ;
for filename in * ;
do
     echo "$filename" | grep -q " "  ;
     if [ $? -eq 0 ]                  
     then
       fname=$filename ;
       n=$(echo $fname | sed -e "s/ /_/g" | tr 'A-Z' 'a-z' ) ;
       mv "$fname" "$n" || exit 1
       chmod 644 $n
     fi
done)
# Clean up backup files
find $PKG -name "*~" -exec rm {} \;

# Font directory location depends on the X build prefix:
# Determine what X we're running (the modular X returns the prefix
# in the next command, while older versions stay silent):
XPREF=`pkg-config --variable=prefix x11` || true
if [ "$XPREF" == "" ]; then
  XPREF='/usr/X11R6'
  FONTDIR="$XPREF/lib/X11/fonts/TTF"
else
  FONTDIR="/usr/share/fonts/TTF"
fi;
tar -C $PKG/$FONTDIR -xzf Fonts/fonts.tar.gz || exit 1
# These msfonts are in mscorefont package
rm $PKG/$FONTDIR/[a-z]*ttf

# Set permissions
find $PKG/usr -type f -exec chmod 644 {} \;

# Package meta files
for FILE in doinst.sh slack-desc slack-required slack-conflicts slack-suggests
do
  [ -e $CWD/$FILE ] && {
    cat $CWD/$FILE >>$PKG/install/$FILE
  }
done

# Create the package
cd $PKG
makepkg -p -l y -c n $PKGDEST/$PKGNAME-${VERSION//-/_}-$ARCH-${BUILD}${TAG}.txz

# Cleanup
[ "$NOCLEANUP" = "0" ] && {
  rm -rf $PKG $TMP/mac4lin
}