#!/bin/bash
#
# slackbuild for kile, by Rudson R. Alves
# requires: none
# tested: kile-1.9.2

CWD=`pwd`

# ----  Inicializa vari�veis com o slackbuild  ------------
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="kile-1.9.2.tar.bz2"
MD5_ORIG="2f4fa752595c9011fd9292d7ff99d124"
PACKAGE_ORIG=`echo $SRC_ORIG | sed -r 's/(.*)-(.*)\.(.*\..*)$/\1/'`
VERSION_ORIG=`echo $SRC_ORIG | sed -r 's/(.*)-(.*)\.(.*\..*)$/\2/'`
   EXTENSION=`echo $SRC_ORIG | sed -r 's/(.*)-(.*)\.(.*\..*)$/\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.$EXTENSION
BUILD=${BUILD:=1rud}
TMP=${TMP:=/tmp}
REPOS=${REPOS:=$TMP}
PREFIX=${PREFIX:=/opt/kde}
OPTCONF=${OPTCONF:=""}
MD5=${MD5:=$MD5_ORIG}
URL=${URL:="http://ufpr.dl.sourceforge.net/sourceforge/kile/$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
    echo -e "\n\n\033[01;32m Download $PACKAGE \n\033[m"
    wget "$URL" -P "$SRC_DIR/$PACKAGE"
    # Verifica se o
    if [ $? -ne 0 ]; then
        echo -e "\n\n\033[01;31m No such source file in $URL\n\033[m"
        exit $ERROR_WGET
    fi
fi

# ------------------  Checa md5sum  -----------------------
if [ "$SRC_ORIG" = "$SRC" -o "$MD5" != "$MD5_ORIG" -a "$MD5" != "no" ]; then
    SUM=`md5sum $SOURCE | awk '{print $1}'`
    if [ "$SUM" != "$MD5" ]; then
        echo -e "\n\n\033[01;31m MD5SUM error: run Slackbuild again \n\033[m"
        echo -e "\033[01;31m Remove $PACKAGE from $SRC_DIR and start Slackbuild again or use MD5=\"no\" \n\033[m"
        exit 0
    fi
    echo -e "\n\n\033[01;32m Md5sum Ok \n\033[m"
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 PKG_SRC=$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
if [ $? -ne 0 ]; then
    echo -e "\n\n\033[01;31m $SOURCE file error \n\033[m"
    exit $ERROR_TAR
fi
# 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
echo -e "\n\n\033[01;32m CFLAGS=\"$SLKCFLAGS\" ./configure --prefix=$PREFIX --libdir=$LIBDIR $OPTCONF \n\033[m"
CFLAGS="$SLKCFLAGS" ./configure --prefix=$PREFIX --libdir=$LIBDIR $OPTCONF
if [ $? -ne 0 -o "$OPTCONF" = "--help" ]; then
    echo -e "\n\n\033[01;31m Configure error \n\033[m"
    exit $ERROR_CONF
fi

# ----------------  Compila programa  ---------------------
echo -e "\n\n\033[01;32m make -j3 \n\033[m"
make -j3
if [ $? -ne 0 ]; then
    echo -e "\n\n\033[01;31m Build error \n\033[m"
    exit $ERROR_MAKE
fi

# -------------  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
echo -e "\n\n\033[01;32m make install DESTDIR=$PKG \n\033[m"
make install DESTDIR=$PKG
if [ $? -ne 0 ]; then
    echo -e "\n\n\033[01;31m Install error \n\033[m"
    exit $ERROR_INSTALL
fi

# -----------------  Stripa c�digo  -----------------------
cd $PKG
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 > 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------------------------------------------------------|
kile: Kile is an integrated LATEX environment for the KDE desktop. Kile gives
kile: you the ability to use all the functionalities of LATEX in a graphical
kile: interface, giving you easy, immediate, and customized access to all
kile: programs for LATEX compiling, postprocessing, debugging, conversion and
kile: viewing tools; you also get very handy wizards, a LATEX reference,
kile: interfaces with GnuPlot and XFig, and project management.
kile:
kile:
kile:
kile:
EOF

# -----------------  Documenta��es  -----------------------
# Criar diret�rio de documenta��o
PKG_DOC=$PKG/usr/doc/$PACKAGE-$VERSION
mkdir -p $PKG_DOC
cp $PKG_DIR/{API,COPYING,ChangeLog,DEFINES,HACKING,INSTALL,LICENSE,README,README.WINGTK,STYLEGUIDE,TODO,USAGE} $PKG_DOC

# ---------------  Constroi o pacote  ---------------------
echo -e "\n\n\033[01;32m makepkg -c y -l y $REPOS/$PACKAGE-$VERSION-$ARCH-$BUILD.tgz \n\033[m"
makepkg -c y -l y $REPOS/$PACKAGE-$VERSION-$ARCH-$BUILD.tgz
if [ $? -ne 0 ]; then
    exit $ERROR_MKPKG
fi

# -----------  Remove arquivos tempor�rios  ---------------
if [ "$CLEANUP" = "yes" ]; then
    echo -e "\n\n\033[01;32m Remove files... \n\033[m"
    rm -rf $PKG $PKG_SRC
fi