#!/bin/bash
#
# slackbuild for lame, by Rudson R. Alves
# requires: none
# tested: scilab-4.0

CWD=`pwd`

if [ -e ~/.slackbuildrc ]; then
  source ~/.slackbuildrc
elif [ -e /etc/slackbuildrc ]; then
  source /etc/slackbuildrc
fi

# --------  Vari�veis de controle de vers�o  --------------
# Nome da fonte para a qual o slackbuild foi constru�do e
# o seu md5sum
SRC_ORIG="scilab-4.0-src.tar.gz"
MD5_ORIG="26e1c1480453bb1021bcea3ac412ad19"
PACKAGE_ORIG=`echo $SRC_ORIG | sed -r 's/(.*)-(.*)-src\.(.*\..*)$/\1/'`
VERSION_ORIG=`echo $SRC_ORIG | sed -r 's/(.*)-(.*)-src\.(.*\..*)$/\2/'`
   EXTENSION=`echo $SRC_ORIG | sed -r 's/(.*)-(.*)-src\.(.*\..*)$/\3/'`

# -------  C�digos de erro para o createpkg  --------------
ERROR_WGET=31;      ERROR_MAKE=32;      ERROR_INSTALL=33
ERROR_MD5=34;       ERROR_CONF=35;      ERROR_HELP=36
ERROR_TAR=37;       ERROR_MKPKG=38;     ERROR_GPG=39
ERROR_PATCH=40;     ERROR_VCS=41

# ---------  Inicializa vari�veis de entrada  -------------
PACKAGE=$PACKAGE_ORIG
ARCH=${ARCH:=i486}
SRC_DIR=${SRC:=$CWD}
VERSION=${VERSION:=$VERSION_ORIG}
SRC=$PACKAGE-$VERSION-src.$EXTENSION
BUILD=${BUILD:=1rud}
TMP=${TMP:=/tmp}
REPOS=${REPOS:=$TMP}
PREFIX=${PREFIX:=/usr}
OPTCONF=${OPTCONF:=""}
MD5=${MD5:=$MD5_ORIG}
URL=${URL:="http://www.scilab.org/download/stable/$SRC"}

# ----------------  Download fontes  ----------------------
# Fonte a ser compilada, com o path
SOURCE=$SRC_DIR/$PACKAGE/$SRC
# Verifica exist�ncia do pacote em $SRC em $SRC_DIR
if [ ! -e $SOURCE ]; then
    wget "$URL" -P "$SRC_DIR/$PACKAGE/" || exit $ERROR_WGET
fi

# ------------------  Checa md5sum  -----------------------
if [ "$SRC_ORIG" = "$SRC" -o "$MD5" != "$MD5_ORIG" -a "$MD5" != "no" ]; then
    SUM=`md5sum $SOURCE | awk '{print $1}'`
    [ "$SUM" != "$MD5" ] && exit $ERROR_MD5
fi

# -----------------  ARCH e LIBDIR  -----------------------
# Libdir, para arch x86_64
LIBDIR=$PREFIX/lib
# Seleciona flags para o compilador
if [ "$ARCH" = "i386" ]; then
    SLKCFLAGS="-O2 -march=i386 -mcpu=i686"
elif [ "$ARCH" = "i486" ]; then
    SLKCFLAGS="-O2 -march=i486 -mcpu=i686"
elif [ "$ARCH" = "i686" ]; then
    SLKCFLAGS="-O2 -march=i686"
elif [ "$ARCH" = "s390" ]; then
    SLKCFLAGS="-O2"
elif [ "$ARCH" = "x86_64" ]; then
    SLKCFLAGS="-O2"
    LIBDIR="$PREFIX/lib64"
fi

# --------------  Desempacota fontes  ---------------------
# Desempacota fontes em $TMP/$PACKAGE-source
PKG_SRC=$TMP/$PACKAGE-source
rm -rf $PKG_SRC 2>/dev/null
mkdir -p $PKG_SRC
# Desempacota $SOURCE em $TMP/$PACKAGE-source
tar xvf $SOURCE -C $PKG_SRC || exit $ERROR_TAR

# Pega o nome do diret�rio das fontes independente de sua
# estrutura (package-version...)
PKG_DIR="$PKG_SRC/$( ls $PKG_SRC/ )"
cd $PKG_DIR

# --------------  Configura programa  ---------------------
# Configura programa
CFLAGS="$SLKCFLAGS" ./configure --prefix=$PREFIX --libdir=$LIBDIR $OPTCONF || exit $ERROR_CONF

# ----------------  Compila programa  ---------------------
make all || exit $ERROR_MAKE

# -------------  Diret�rio Tempor�rio  --------------------
# Cria diret�rio tempor�rio para constru��o do pacote
PKG=$TMP/$PACKAGE
rm -rf $PKG
mkdir -p $PKG

# ---------------  Instala programa  ----------------------
# Instala programa em diret�rio tempor�rio
mkdir -p $PKG/$LIBDIR
cp -pr $PKG_SRC/* $PKG/$LIBDIR/
rm -rf $PKG/$LIBDIR/$PACKAGE-$VERSION/Perl
rm -rf $PKG/$LIBDIR/$PACKAGE-$VERSION/Win-util
rm -rf $PKG/$LIBDIR/$PACKAGE-$VERSION/intersci
rm -rf $PKG/$LIBDIR/$PACKAGE-$VERSION/lcc
rm -rf $PKG/$LIBDIR/$PACKAGE-$VERSION/libs
rm -rf $PKG/$LIBDIR/$PACKAGE-$VERSION/m4
rm -rf $PKG/$LIBDIR/$PACKAGE-$VERSION/ocaml

# Refazendo links
mkdir -p $PKG/$PREFIX/bin 2>/dev/null
ln -s $LIBDIR/$PACKAGE-$VERSION/bin/intersci-n $PKG/$PREFIX/bin/intersci-n 2>/dev/null
ln -s $LIBDIR/$PACKAGE-$VERSION/bin/scilab $PKG/$PREFIX/bin/scilab 2>/dev/null
ln -s $LIBDIR/$PACKAGE-$VERSION/bin/intersci $PKG/$PREFIX/bin/intersci 2>/dev/null

# Corre��o no index.html
(
    cd $PKG/$LIBDIR/$PACKAGE-$VERSION/man/eng/
    eval "sed 's,${PKG_SRC},${PREFIX}/lib,g' index.htm > index.htm.new"
    mv index.htm.new index.htm
    cd ../fr
    eval "sed 's,${PKG_SRC},${PREFIX}/lib,g' index.htm > index.htm.new"
    mv index.htm.new index.htm
)

# Corre��o do script scilab
(
    pwd
    cd $PKG/$LIBDIR/$PACKAGE-$VERSION/bin/
    eval "sed 's,^SCI=\\\".*$,SCI=\\\"/usr/lib/$PACKAGE-$VERSION\\\",' scilab > scilab.new"
    cp scilab.new scilab
)

# Cria Scilab.desktop
mkdir -p $PKG/usr/share/applications/ 2>/dev/null
cat << EOF_KDE > $PKG/usr/share/applications/Scilab.desktop
[Desktop Entry]
Encoding=UTF-8
Categories=Education;Math;
Exec=scilab
Icon=/usr/lib/scilab-4.0/X11_defaults/scilab.xpm
StartupNotify=true
Terminal=false
Type=Application
Name=Scilab
GenericName=Scilab
Comment=
EOF_KDE
# ---------------------------------------------------------

# -----------------  Stripa c�digo  -----------------------
cd $PKG
echo -e "\n\n\033[01;32m Striping code \n\033[m"
find . | xargs file | grep "executable" | grep ELF | cut -f 1 -d : | xargs strip --strip-unneeded 2>/dev/null
find . | xargs file | grep "shared object" | grep ELF | cut -f 1 -d : | xargs strip --strip-unneeded 2>/dev/null

# ----------------  Cria slack-desc  ----------------------
mkdir $PKG/install
cat << EOF > $PKG/install/slack-desc
# HOW TO EDIT THIS FILE:
# The "handy ruler" below makes it easier to edit a package description.  Line
# up the first '|' above the ':' following the base package name, and the '|' on
# the right side marks the last column you can put a character in.  You must make
# exactly 11 lines for the formatting to be correct.  It's also customary to
# leave one space after the ':'.

     |--------handy-ruler-----------------------------------------------------|
scilab: Scilab package by Rudson R. Alves <rudsonalves[a]yahoo.com.br>
scilab:
scilab:   Scilab is a scientific software package for numerical computations
scilab: providing a powerful open computing enviroanment for engineering and
scilab: scientific applications. Developed since 1990 by researchers from
scilab: INRIA and ENPC, it is now maintained and developed by Scilab
scilab: Consortium since its creation in May 2003.
scilab:   Distributed freely and open source (see the license and the
scilab: trademark license) via the Internet since 1994, Scilab is currently
scilab: being used in educational and industrial environments around the
scilab: world.
EOF

# -----------------  Documenta��es  -----------------------
# Criar diret�rio de documenta��o
PKG_DOC=usr/doc/$PACKAGE-$VERSION
mkdir -p $PKG_DOC
cp $PKG_DIR/{ACKNOWLEDGEMENTS,CHANGES,README_Unix,README_Windows.txt,RELEASE_NOTES,Readme_Visual.txt,licence.txt,release_notes.txt} $PKG_DOC

# ---------------  Constroi o pacote  ---------------------
makepkg -c y -l y $REPOS/$PACKAGE-$VERSION-$ARCH-$BUILD.tgz || exit $ERROR_MKPKG

# -----------  Remove arquivos tempor�rios  ---------------
if [ "$CLEANUP" == "yes" ]; then
    rm -rf $PKG $PKG_SRC
fi