#!/bin/sh
#
# scipy.SlackBuild
# 2014-03-30
#
# SciPy: Scientific Tools for Python

PRGNAM=scipy
VERSION=0.13.3

# automatically determine the architecture
if [ -z "$ARCH" ]; then
  case "$(uname -m)" in
    i686) ARCH=i686 ;;
    i?86) ARCH=i486 ;;
    x86_64) ARCH=x86_64 ;;
    arm*) ARCH=arm ;;
       *) ARCH=$(uname -m) ;;
  esac
fi

BUILD=${BUILD:-1}
TAG=${TAG:-scr}

HOMEPAGE="http://www.scipy.org/"
SOURCE="${PRGNAM}-${VERSION}.tar.gz"
DOWNLOAD="http://downloads.sourceforge.net/project/scipy/scipy/${VERSION}/${SOURCE}"
MD5SUM="0547c1f8e8afad4009cc9b5ef17a2d4d"

REFERENCE="scipy-reference.pdf"
REFERENCE_DOWNLOAD="http://downloads.sourceforge.net/project/scipy/scipy/${VERSION}/reference.pdf"
REFERENCE_MD5SUM="6801b4c89edfa04a32ef9c2946c82675"

REQUIRES="python numpy blas lapack"

MAINTAINER="Gernot WALZL"
EMAIL="gernot.walzl@gmx.at"

DESC="SciPy: Scientific Tools for Python

SciPy is package of tools for science and engineering for Python.
It includes modules for statistics, optimization, integration,
linear algebra, Fourier transforms, signal and image processing,
ODE solvers, and more.

${HOMEPAGE}"

DOCS="$(pwd)/$0 $(pwd)/${REFERENCE} *.txt"

# EOF info


# set initial variables
CWD=$(pwd)
TMP=${TMP:-/tmp}
PKG=$TMP/package-$PRGNAM
OUTPUT=${OUTPUT:-/tmp}

# exit on error
set -e

# download the source if needed
if [ ! -f $CWD/$SOURCE ]; then
  wget -O $CWD/$SOURCE $DOWNLOAD || exit 1
fi
if [ ! -f $CWD/$REFERENCE ]; then
  wget -O $CWD/$REFERENCE $REFERENCE_DOWNLOAD || exit 1
fi

# check for correct source file
if [ "$(md5sum $CWD/$SOURCE | cut -f 1 -d ' ')" != "$MD5SUM" ]; then
  exit 1
fi
if [ "$(md5sum $CWD/$REFERENCE | cut -f 1 -d ' ')" != "$REFERENCE_MD5SUM" ]; then
  exit 1
fi

# extract the application source
cd $TMP || exit 1
tar xvf $CWD/$SOURCE || exit 1

# change to the application source directory
cd $PRGNAM-$VERSION || exit 1

# fix permissions
chown -R root:root .
chmod -R u+w,go+r-w,a-s .

# set configure options
if [ "$ARCH" = "i486" ]; then
  SLKCFLAGS="-O2 -march=i486 -mtune=i686"
  LIBDIRSUFFIX=""
 elif [ "$ARCH" = "i686" ]; then
  SLKCFLAGS="-O2 -march=i686 -mtune=i686"
  LIBDIRSUFFIX=""
 elif [ "$ARCH" = "x86_64" ]; then
  SLKCFLAGS="-O2 -fPIC"
  LIBDIRSUFFIX="64"
 else
  SLKCFLAGS="-O2"
  LIBDIRSUFFIX=""
fi

# compile the source
CFLAGS="$SLKCFLAGS" \
python setup.py build

# install everything into the package directory
rm -rf $PKG
mkdir -p $PKG/install
python setup.py install --root=$PKG --prefix=/usr

# add documentation
if [ "$DOCS" != "" ]; then
  mkdir -p $PKG/usr/doc/$PRGNAM-$VERSION
  cp -a $DOCS $PKG/usr/doc/$PRGNAM-$VERSION
  find $PKG/usr/doc/$PRGNAM-$VERSION -type f -exec chmod 644 {} \;
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 some description to the package
if [ "$DESC" != "" ]; then
  echo "$DESC" | sed 's/^/'$PRGNAM': /g' > $PKG/install/slack-desc
fi

# append dependency information to the package
if [ "$REQUIRES" != "" ]; then
  for REQ in $REQUIRES; do
    echo "$REQ" >> $PKG/install/slack-required
  done
fi

# build the package
cd $PKG
makepkg -l y -c n \
  $OUTPUT/$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.${PKGTYPE:-tgz} \
  || exit 1

# make everything clean
cd $CWD
rm -rf $PKG
rm -rf $TMP/$PRGNAM-$VERSION
