#!/bin/bash
#
# slackbuild for latex2html, by Rudson R. Alves
# requires: tetex, perl >=5.1, espgs, netpbm
# tested: latex2html-2002
CWD=`pwd`
# ---- Inicializa variáveis com o slackbuild ------------
if [ -f ~/.slackbuildrc ]; then
source ~/.slackbuildrc
elif [ -f /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="latex2html-2002.tar.gz"
MD5_ORIG="72c2cb20526639cbf6ee2a66223c5cc2"
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:=/usr}
OPTCONF=${OPTCONF:=""}
MD5=${MD5:=$MD5_ORIG}
URL=${URL:="http://saftsack.fs.uni-bayreuth.de/~latex2ht/current/$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
[ ! -e /usr/share/texmf/tex/latex/html ] && REMOVE=1 || REMOVE=0
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
# --------------- Algumas correções ---------------------
mkdir -p $PKG/usr/share/lib/latex2html
mv $PKG/usr/lib/* $PKG/usr/share/lib/latex2html/
rm -rf $PKG/usr/lib/
# Instala estilos
mkdir -p $PKG/usr/share/texmf/tex/latex/html
cp $PKG_DIR/texinputs/* $PKG/usr/share/texmf/tex/latex/html/
[ $REMOVE -eq 1 ] && rm -rf /usr/share/texmf/tex/latex/html
# ----------------- 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------------------------------------------------------|
latex2html: latex2html.SlackBuild by Rudson R. Alves
latex2html:
latex2html: LATEX2HTML is a convertor written in Perl that converts LATEX
latex2html: documents to HTML. This way e.g. scientific papers - primarily
latex2html: typeset for printing - can be put on the Web for online viewing.
latex2html:
latex2html: LATEX2HTML does also a good job in rapid web site deployment. These
latex2html: pages are generated from a single LATEX source.
latex2html:
latex2html: It is designed to run on UNIX-like systems as well as Windows.
EOF
# ----------------- Documentações -----------------------
# Criar diretório de documentação
PKG_DOC=$PKG/usr/doc/$PACKAGE-$VERSION
mkdir -p $PKG_DOC
cp $PKG_DIR/{BUGS,Changes,FAQ,INSTALL,LICENSE,MANIFEST,README,TODO,readme.hthtml} $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