#!/bin/sh
#
# numpy.SlackBuild
# 2014-09-08
#
# NumPy is the fundamental package needed for scientific computing
# with Python.

PRGNAM=numpy
VERSION=1.8.2

# 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.numpy.org/"
SOURCE="${PRGNAM}-${VERSION}.tar.gz"
DOWNLOAD="http://downloads.sourceforge.net/project/numpy/NumPy/${VERSION}/${SOURCE}"
MD5SUM="dd8eece8f6fda3a13836de4adbafb0cb"

REFERENCE="numpy-reference.pdf"
REFERENCE_DOWNLOAD="http://downloads.sourceforge.net/project/numpy/NumPy/${VERSION}/reference.pdf"
REFERENCE_MD5SUM="359a9ddf40f6694e01a38dc38ff385aa"
USERGUIDE="numpy-userguide.pdf"
USERGUIDE_DOWNLOAD="http://downloads.sourceforge.net/project/numpy/NumPy/${VERSION}/userguide.pdf"
USERGUIDE_MD5SUM="3ff1074828982f469d567d7118b83d52"

REQUIRES="python"

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

DESC="NumPy

is the fundamental package needed for scientific computing
with Python.

${HOMEPAGE}"

DOCS="$(pwd)/$0 $(pwd)/${REFERENCE} $(pwd)/${USERGUIDE}
COMPATIBILITY *.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
if [ ! -f $CWD/$USERGUIDE ]; then
  wget -O $CWD/$USERGUIDE $USERGUIDE_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
if [ "$(md5sum $CWD/$USERGUIDE | cut -f 1 -d ' ')" != "$USERGUIDE_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
