# Contributor: Valery Kartel <valery.kartel@gmail.com>
# Contributor: Ɓukasz Jendrysik <scadu@yandex.com>
# Maintainer: Natanael Copa <ncopa@alpinelinux.org>
setvar pkgname = 'postfix'
setvar pkgver = '3.2.3'
setvar pkgrel = '0'
setvar pkgdesc = ""Secure and fast drop-in replacement for Sendmail (MTA)""
setvar url = ""http://www.postfix.org/""
setvar arch = ""all""
setvar license = ""IPL-1""
setvar depends = ''
setvar makedepends = ""db-dev pcre-dev libressl-dev postgresql-dev mariadb-dev openldap-dev
	cyrus-sasl-dev perl file sqlite-dev linux-headers coreutils""
setvar install = ""$pkgname.pre-install""
setvar subpackages = ""$pkgname-doc $pkgname-ldap $pkgname-mysql $pkgname-pcre
	$pkgname-pgsql $pkgname-sqlite $pkgname-stone""
setvar options = ""suid""
setvar pkgusers = ""postfix""
setvar pkggroups = ""postfix postdrop""
setvar source = ""ftp://ftp.porcupine.org/mirrors/$pkgname-release/official/$pkgname-$pkgver.tar.gz
	$pkgname.initd
	no-glibc.patch
	postfix-install.patch
	libressl.patch
	""

proc _shared_libs {
	file --mime-type @ARGV | \
		awk -F: '$2 ~ /sharedlib/ {print $1}'
}

setvar builddir = ""$srcdir"/$pkgname-$pkgver"
proc prepare {
	cd $builddir
	default_prepare

	sed -i -e "s|#define HAS_NIS|//#define HAS_NIS|g" \
		-e "/^#define ALIAS_DB_MAP/s|:/etc/aliases|:/etc/postfix/aliases|" \
		src/util/sys_defs.h
	sed -i -e "s:/usr/local/:/usr/:g" conf/master.cf
}

proc build {
	cd $builddir
	# needed for dynamic maps.
	local ccargs="-DHAS_SHL_LOAD -DDEF_DAEMON_DIR=\\\"/usr/lib/postfix\\\""
	local auxlibs="$LDFLAGS"

	# pcre
	setvar ccargs = ""$ccargs -DHAS_PCRE $(pkg-config --cflags libpcre)""

	# ssl
	setvar ccargs = ""$ccargs -DUSE_TLS""
	setvar auxlibs = ""$auxlibs -lssl -lcrypto""

	# dovecot-sasl
	setvar ccargs = ""$ccargs -DUSE_SASL_AUTH -DDEF_SASL_SERVER=\\\"dovecot\\"\""

	# cyrus sasl
	setvar ccargs = ""$ccargs -DUSE_SASL_AUTH -DUSE_CYRUS_SASL -I/usr/include/sasl""
	setvar auxlibs = ""$auxlibs -lsasl2""

	# postgresql
	setvar ccargs = ""$ccargs -DHAS_PGSQL $(pkg-config --cflags libpq)""

	# mysql
	setvar ccargs = ""$ccargs -DHAS_MYSQL $(mysql_config --include)""

	# ldap
	setvar ccargs = ""$ccargs -DHAS_LDAP -DUSE_LDAP_SASL""

	# sqlite
	setvar ccargs = ""$ccargs -DHAS_SQLITE $(pkg-config --cflags sqlite3)""

	#
	#	AUXLIBS_CDB="$cdb_libs" \
	#	AUXLIBS_LMDB="$lmdb_libs" \

	# compile
	make DEBUG="" \
		OPT="$CFLAGS" \
		CCARGS="$ccargs" \
		AUXLIBS="$auxlibs" \
		AUXLIBS_LDAP="-lldap -llber" \
		AUXLIBS_MYSQL="$(mysql_config --libs)" \
		AUXLIBS_PCRE="$(pkg-config --libs libpcre)" \
		AUXLIBS_PGSQL="$(pkg-config --libs libpq)" \
		AUXLIBS_SQLITE="$(pkg-config --libs sqlite3)" \
		dynamicmaps=yes \
		shared=yes \
		makefiles

	make OPT="$CFLAGS"
}

proc _mvline {
	local regex="$1"
	local outfile="$3.d/$2"
	local infile="$3"
	sed -i -E -e "\|$regex|{
w $outfile
d
}" $infile
}

proc package {
	cd $builddir

	make non-interactive-package \
		install_root="$pkgdir" \
		readme_directory=/usr/share/doc/$pkgname/readme \
		manpage_directory=/usr/share/man \
		shlib_directory=/usr/lib/postfix

	for i in postdrop postqueue {
		chgrp postdrop "$pkgdir"/usr/sbin/$i
		chmod g+s "$pkgdir"/usr/sbin/$i
	}

	mkdir -p "$pkgdir"/usr/share/doc/postfix/defaults/ \
		"$pkgdir"/usr/share/licenses/${pkgname}/
	mv "$pkgdir"/etc/postfix/*.default "$pkgdir"/etc/postfix/*.proto \
		"$pkgdir"/usr/share/doc/postfix/defaults/
	mv "$pkgdir"/etc/postfix/*LICENSE* \
		"$pkgdir"/usr/share/licenses/${pkgname}/

	chown postfix:postfix "$pkgdir"/var/spool/postfix
	install -Dm755 "$srcdir"/$pkgname.initd "$pkgdir"/etc/init.d/$pkgname
	chown postfix "$pkgdir"/var/spool/postfix/* "$pkgdir"/var/lib/postfix
	chgrp postdrop "$pkgdir"/var/spool/postfix/maildrop \
		"$pkgdir"/var/spool/postfix/public

	cd "$pkgdir"/etc/postfix/
	for map in ldap mysql pcre pgsql sqlite {
		msg "split $map"
		_mvline "^\s*$map" $map dynamicmaps.cf
	}
	rm makedefs.out
}

proc _mv_dict {
	local m=$1
	shift
	setvar pkgdesc = ""$m map support for postfix""
	setvar depends = ''
	mkdir -p "$subpkgdir"/usr/lib/postfix \
		"$subpkgdir"/etc/postfix/dynamicmaps.cf.d
	mv "$pkgdir"/usr/lib/postfix/postfix-${m}.so \
		"$subpkgdir"/usr/lib/postfix/
	mv "$pkgdir"/etc/postfix/dynamicmaps.cf.d/${m} \
		"$subpkgdir"/etc/postfix/dynamicmaps.cf.d/
}

proc ldap { _mv_dict ldap ; }
proc mysql { _mv_dict mysql ;}
proc pcre { _mv_dict pcre ; }
proc pgsql { _mv_dict pgsql ; }
proc sqlite { _mv_dict sqlite ; }

proc stone {
	cd $builddir
	setvar pkgdesc = ""Postfix simulation and testing tools""
	install -Dm755 src/fsstone/fsstone "$subpkgdir"/usr/bin/fsstone
	find src/smtpstone -perm 0755 -exec cp {} "$subpkgdir"/usr/bin ';'
}

setvar sha512sums = ""99ea74a5a0620e739668e55d620a0370b72c4802983a8a4cf4d6c51c6f8f5573128f2d6869386cedadba66b3f741df2f18867a059facd94092ac95f6da3a600c  postfix-3.2.3.tar.gz
2752e69c4e1857bdcf29444ffb458bca818bc60b9c77c20823c5f5b87c36cb5e0f3217a625a7fe5788d5bfcef7570a1f2149e1233fcd23ccf7ee14190aff47a2  postfix.initd
cf9ef0d07e54011107da57e2855cbda10047c100047e2cc2fdede072ace1fc6c060a6b1cfc8c277417a28a23ecd3c6ffdc061da1673e8f61d2ed11899f1efb25  no-glibc.patch
25cd34f23ca909d4e33aaf3239d1e397260abc7796d9a4456dee4f005682fd3a58aab8106126e5218c95bdddae415a3ef7e2223cd3b0d7b1e2bd76158bb7eaf8  postfix-install.patch
7d43dc0d4e44bb3c62b28b4c6dfb9dc49e4d95e948a27e309dc7d7ea6b7fe844f433d908fe87d0fee3e236a32b2e94d37804dba2a4d17cf0c44ab3a8c2d44e62  libressl.patch""