#!/bin/bash
#
# original script from http://www.slacky.it/download/network/tool/postfix/2.2.10/src/postfix.SlackBuild
# changes by rhatto at riseup.net
#

if [ -s "slack-required" ]; then
  echo Recomended and required packages for building postfix are:
  cat slack-required | sed -e 's/^/\t/'
  if [ "$INTERACT" != "no" ]; then
    echo If you dont have those installed, press Ctrl-C. Otherwise, hit ENTER.
    read crap
#  else
#    echo Sleeping 3 seconds...
#    sleep 3
  fi
fi

CWD=`pwd`

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

# default settings
PACKAGE=postfix
ARCH=${ARCH:=i486}
VERSION=${VERSION:=2.4.6}
BUILD=${BUILD:=1rha}
SRC_DIR=${SRC:=$CWD}
TMP=${TMP:=/tmp}
REPOS=${REPOS:=$TMP}

# -------  error codes for 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

if [ "$ARCH" == "x86_64" ]; then
  LIBDIR=/usr/lib64
else
  LIBDIR=/usr/lib
fi

# general definitions
PACKAGE_EXT="gz"
NAME=$PACKAGE
DOCDIR=/usr/doc/${NAME}-${VERSION}
READMEDIR=${DOCDIR}/README_FILES
HTMLDIR=${DOCDIR}/HTML
MANDIR=/usr/man
TMP="$TMP/$PACKAGE"
PKGDIR=${TMP}/package-${NAME}
SOURCEDIR=${TMP}/${NAME}-${VERSION}
RTOOL="wget"
SRC="$PACKAGE-$VERSION.tar.$PACKAGE_EXT"

# url definitions
VDA="$PACKAGE-$VERSION-vda.patch.gz"
VDA_URL="http://web.onda.com.br/nadal/postfix/VDA/$VDA"
ANON="postfix-anon-$VERSION.diff"
#URL="ftp://ftp.pucpr.br/$PACKAGE/official/$SRC"
URL="http://ftp.unicamp.br/pub/postfix/official/$SRC"

SRC_DIR="$SRC_DIR/$PACKAGE"
mkdir -p $SRC_DIR

# download sources
if [ "$RTOOL" == "wget" ]; then
 if [ ! -f "$SRC_DIR/$SRC" ]; then
   wget "$URL" -O "$SRC_DIR/$SRC" || exit $ERROR_WGET
 fi
# if [ ! -f "$SRC_DIR/$VDA" ]; then
#   wget "$VDA_URL" -O "$SRC_DIR/$VDA" # || exit $ERROR_WGET
# fi
 if [ ! -f "$SRC_DIR/$SRC.sig" ]; then
   wget "$URL.sig" -O "$SRC_DIR/$SRC.sig" || exit $ERROR_WGET
 fi
fi

#gpg --import << EOGPG
#-----BEGIN PGP PUBLIC KEY BLOCK-----
#Version: GnuPG v1.4.5 (GNU/Linux)
#
#mQENA0Ije1oAAAEIALlEqB1UICFF3dfwDij9LHtBhtiEfGnv0PL5rRmSJ4rA9pqs
#oM3oc0nfgnB502XpeCkT1RW5ymQggEx7+8fXnWhNUAmNGPrbmWzymvrdr4XnPOoB
#ODlnVYkc9Gt5BLRNSfuLbc1G3nH+FDzhpuJ5zqtb8RrYm5FOPU7eC9QnVoC2nXPW
#fPfTWVXQoCOEuQQ3zZHEculWQYhRVgxI+CFZjWzWgwZq3wWi/nGGZcFYRtCfodH4
#UiP0lvj8tOEhD8vUGQKiQGwiw/BBbiCm5ZPcCkSOWxXbZTUrkfTzwse9Ka2blmgH
#AhlySLtSD/tCX2ykzQEK9JJDw4++By9g8MErzZkABRG0JFdpZXRzZSBWZW5lbWEg
#PHdpZXRzZUBwb3JjdXBpbmUub3JnPokBFQMFEEIje1oHL2DwwSvNmQEBA8oIALG7
#Un8SRtlQ+EXMSK/MyJLD9+T/tS1vq2Z6BwN6oZ0G21VvbMdhXvOEjPUFXhJPIFs8
#pNIYtUV/uQMiMZsATOlJObe3ZkXazdbpGcGAekO0G158CYy2mH50hqYLewTYCt3T
#TNf6fSu+bVFrrQ8S/89QDceN0M+WFECgjlYHMTMqB2Ye2KZRWAQG1S8hLLFG42HV
#QaWAVG4yR4xZEC0sYuMBZQTJlJXWb/CnhdlcdS2y5DRq/UYZ5oM/ZilKnIxnWzvf
#zZM/5+5d7DA0YLjY2uIiSGWs9MfQv1MwvAPjTs/Aiz0j3y5lCa3lVObGskroUhN6
#Pf14rTC6p585H3mQBRs=
#=uI0x
#-----END PGP PUBLIC KEY BLOCK-----
#-----BEGIN PGP PUBLIC KEY BLOCK-----
#Version: GnuPG v1.4.5 (GNU/Linux)
#
#mQCNAirDhV8AAAED/i4LrhQ/mwOgam8ZfQpEcxYoE9kru5oRDGtoVeKae/4bUver
#aGX7qVtskD6vwPwr2FF6JW2c+z2oY4JGPGUArORiigoT82/q6vqT0Wm1jIPsXQSB
#ZCkBoyvBcmXEi+J7eDBbWLPDxeDimgrORbAIQ4uikRafs8KlpNyA8qbVMny5AAUR
#tCR3aWV0c2UgdmVuZW1hIDx3aWV0c2VAcG9yY3VwaW5lLm9yZz6JAJUDBRA02Qb0
#3IDyptUyfLkBAaETA/0ZI0+GLRf5bQTflXgi79u9qcWaN/CSWRBsloOEEx12EO2s
#lXNtkS970CxDESEr2Z75eqXtlDM4CPIzhzVoU7b6yrr0fzP576k6RX/JadEohf2V
#VXhgmkpktRKMqdXZO+qj0QpekXCOm079hTU9kUSpd7+LeIhF5xI4skuoq83dm7Ql
#d2lldHNlIHZlbmVtYSA8d2lldHNlQHd6di53aW4udHVlLm5sPokAlQMFEC99Gmfc
#gPKm1TJ8uQEBJzsD+waYQmJKG0btGU0+GUTg+bRMSfCGwb9p9vbwnXQIPlQrsF8B
#ozm8IyFGWxsfKT8dRljqmAEwKLhaFgYdFrnliuYfmVMw+nSpdpTDVE0N4d7hd8mT
#N+WCvY0g6x9rv1uBPKK6lPgWoZHskbzNLwiDXZ5vPKdoSCCIi3aQkCQd+6qx
#=FFWq
#-----END PGP PUBLIC KEY BLOCK-----
#EOGPG 
#
#gpg --verify $SRC_DIR/$SRC.sig $SRC_DIR/$SRC || exit $ERROR_GPG

rm -rf ${PKGDIR}
mkdir -p ${PKGDIR}

cd  ${PKGDIR}
# install scripts

if [ -e ${CWD}/script_${NAME}.tgz ]; then
  tar zxvf ${CWD}/script_${NAME}.tgz || exit $ERROR_TAR
else
  mkdir -v install
fi
sleep 1
if [ -e ${CWD}/slack-desc ];then
  cat ${CWD}/slack-desc | grep ^${NAME} > ${PKGDIR}/install/slack-desc
fi

# Extract

cd  ${TMP}
rm -rf ${NAME}-${VERSION}  ${SOURCEDIR}
tar xzvf $SRC_DIR/${NAME}-$VERSION.tar.gz || exit $ERROR_TAR
# Patch

if [ -s "$SRC_DIR/$VDA" ]; then
  gzip -dc $SRC_DIR/$VDA | patch -p0
fi

if [ -f "$CWD/$ANON" ]; then
  patch -p0 < $CWD/$ANON
fi

cd  ${SOURCEDIR}
sleep 1

# Build

# make -f Makefile.init makefiles \
#    'CCARGS=-DUSE_TLS -DHAS_SSL -I/usr/include/openssl -DHAS_MYSQL -I/usr/include/mysql' \
#    'AUXLIBS=-L/usr/lib -lssl -lcrypto -L/usr/lib/mysql -lmysqlclient -lz -lm'

# db3 explicit
# make -f Makefile.init makefiles CCARGS="-DUSE_SASL_AUTH -I/usr/include/sasl/ -DHAS_MYSQL -I/usr/include/mysql/ -I/usr/include -DHAS_LDAP -DUSE_TLS -I/usr/include/gnutls/ -DHAS_PCRE -I/usr/include -DHAS_DB -I/usr/include/db3" AUXLIBS="-L/usr/lib -lsasl2 -L/usr/lib/mysql/ -lmysqlclient -lz -lm -L/usr/lib -lssl -lcrypto -L/usr/lib -lpcre -L/usr/lib -lldap -L/usr/lib -llber -L/usr/include/db3 -ldb3"

make -f Makefile.init makefiles CCARGS="-DUSE_SASL_AUTH -DUSE_CYRUS_SASL -I/usr/include/sasl/ -DHAS_MYSQL -I/usr/include/mysql/ -I/usr/include -DHAS_LDAP -DUSE_TLS -I/usr/include/gnutls/ -DHAS_PCRE -I/usr/include" AUXLIBS="-L/usr/lib -lsasl2 -L/usr/lib/mysql/ -lmysqlclient -lz -lm -L/usr/lib -lssl -lcrypto -L/usr/lib -lpcre -L/usr/lib -lldap -L/usr/lib -llber" || exit $ERROR_CONF

make || exit $ERROR_MAKE
sleep 1

sh postfix-install						\
 install_root=${PKGDIR}						\
 tempdir=${SOURCE}						\
 manpage_directory=${MANDIR}					\
 readme_directory=${READMEDIR}					\
 html_directory=${HTMLDIR}					\
 config_directory=/etc/postfix					\
 sample_directory=/etc/postfix/sample				\
 daemon_directory=/usr/libexec/postfix				\
 command_directory=/usr/sbin/					\
 queue_directory=/var/spool/postfix				\
 sendmail_path=/usr/sbin/sendmail				\
 newaliases_path=/usr/sbin/newaliases				\
 mailq_path=/usr/sbin/mailq					\
 mail_owner=postfix						\
 setgid_group=postdrop						\
 -non-interactive || exit $ERROR_INSTALL

cd  ${PKGDIR}/etc/postfix 

for a in access aliases canonical header_checks main.cf makedefs.out master.cf postfix-files relocated transport virtual; do
   mv ${a} ${a}.new
done

sleep 2

mkdir -p ${PKGDIR}/${DOCDIR}

for file in AUTHORS COPYING HACKING NEWS README TODO INSTALL AAAREADME COMPATIBILITY COPYRIGHT HISTORY LICENSE RELEASE_NOTES* TLS_* US_PATENT_6321267; do
  if [ -e "${SOURCEDIR}/${file}" ]; then
    cp -v ${SOURCEDIR}/${file} ${PKGDIR}/${DOCDIR}/
  fi
done

( cd $PKGDIR
  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
)

find ${PKGDIR}/${DOCDIR} ${PKGDIR}/${MANDIR} -type f | xargs gzip -v

find ${PKGDIR}/bin ${PKGDIR}/sbin ${PKGDIR}/usr/bin ${PKGDIR}/usr/sbin -type f | xargs chown -v root.bin
# Build the package:
cd $PKGDIR
#requiredbuilder -v -y -s $CWD $PKGDIR
/sbin/makepkg -l n -c n --prepend $REPOS/${NAME}-${VERSION}-${ARCH}-${BUILD}.tgz || exit $ERROR_MKPKG

# Clean up the extra stuff:
if [ "$CLEANUP" == "yes" ]; then
  rm -rf $TMP
fi