# Contributor: Valery Kartel <valery.kartel@gmail.com>
# Contributor: Łukasz Jendrysik <scadu@yandex.com>
# Contributor: Michael Mason <ms13sp@gmail.com>
# Maintainer: Natanael Copa <ncopa@alpinelinux.org>
pkgname=dovecot
pkgver=2.2.27
pkgrel=0
_pigeonholever=0.4.16
_pluginextdataver=39
_pkgvermajor=${pkgver%.*}
_pigeonholevermajor=${_pigeonholever%.*}
pkgdesc="IMAP and POP3 server"
url="http://www.dovecot.org/"
arch="all"
license="LGPL2+"
depends="libressl"
pkgusers="dovecot dovenull"
pkggroups="dovecot dovenull"
makedepends="libcap-dev zlib-dev libressl-dev bzip2-dev postgresql-dev
	mariadb-dev sqlite-dev heimdal-dev openldap-dev linux-headers autoconf
	automake libtool"
install="dovecot.pre-install dovecot.post-install"
subpackages="$pkgname-doc $pkgname-dev
	$pkgname-sql $pkgname-pgsql $pkgname-mysql $pkgname-sqlite
	$pkgname-gssapi $pkgname-ldap $pkgname-pigeonhole-plugin:pigeonhole
	$pkgname-pigeonhole-plugin-extdata:pigeonhole_extdata
	"
source="http://www.dovecot.org/releases/$_pkgvermajor/$pkgname-$pkgver.tar.gz
	http://pigeonhole.dovecot.org/releases/$_pkgvermajor/$pkgname-$_pkgvermajor-pigeonhole-$_pigeonholever.tar.gz
	http://hg.rename-it.nl/pigeonhole-${_pigeonholevermajor}-sieve-extdata/archive/$_pluginextdataver.tar.gz
	dovecot.logrotate
	dovecot.initd
	extdata.conf
	libressl.patch
	"
options="libtool"
builddir="$srcdir"/$pkgname-$pkgver
_builddirpigeonhole="$srcdir"/$pkgname-${_pkgvermajor}-pigeonhole-$_pigeonholever
_builddirpluginextdata="$srcdir"/pigeonhole-${_pigeonholevermajor/./-}-sieve-extdata-$_pluginextdataver

build() {
	cd "$builddir"
	./configure \
		--build=$CBUILD \
		--host=$CHOST \
		--prefix=/usr \
		--localstatedir=/var \
		--sysconfdir=/etc \
		--mandir=/usr/share/man \
		--infodir=/usr/share/info \
		--with-gssapi=plugin \
		--with-ldap=plugin \
		--with-sql=plugin \
		--with-mysql \
		--with-sqlite \
		--with-pgsql \
		--with-ssl=openssl \
		--with-ssldir=/etc/ssl/dovecot \
		--with-rundir=/run/dovecot \
		|| return 1
	make || return 1

	# Build pigeonhole plugin
	cd "$_builddirpigeonhole"
	./configure \
		--build=$CBUILD \
		--host=$CHOST \
		--prefix=/usr \
		--localstatedir=/var \
		--sysconfdir=/etc \
		--mandir=/usr/share/man \
		--infodir=/usr/share/info \
		--with-dovecot="$builddir" \
		--disable-static \
		|| return 1
	make || return 1

	# Build the extdata plugin
	cd "$_builddirpluginextdata"
	./autogen.sh || return 1
	./configure \
		--prefix=/usr \
		--localstatedir=/var \
		--sysconfdir=/etc \
		--mandir=/usr/share/man \
		--infodir=/usr/share/info \
		--with-dovecot="$builddir" \
		--with-pigeonhole="$_builddirpigeonhole" \
		|| return 1
	make || return 1
}

package() {
	cd "$builddir"
	make DESTDIR="$pkgdir" install || return 1

	install -d "$pkgdir"/etc/ssl/dovecot
	install -Dm755 "$srcdir"/dovecot.initd "$pkgdir"/etc/init.d/dovecot
	install -Dm644 "$srcdir"/dovecot.logrotate "$pkgdir"/etc/logrotate.d/dovecot

	# default config
	rm "$pkgdir"/etc/dovecot/*
	rm "$pkgdir"/usr/share/doc/dovecot/mkcert.sh
	mv "$pkgdir"/usr/share/doc/dovecot/dovecot-openssl.cnf "$pkgdir"/etc/dovecot/
	mv "$pkgdir"/usr/share/doc/dovecot/example-config/dovecot* \
		"$pkgdir"/usr/share/doc/dovecot/example-config/conf.d \
		"$pkgdir"/etc/dovecot/ || return 1
	rm -fr "$pkgdir"/usr/share/doc/dovecot/example-config

	# fix ssl dirs in default config
	sed -i -e 's,^ssl_cert =.*,ssl_cert = </etc/ssl/dovecot/server.pem,' \
		-e 's,^ssl_key =.*,ssl_key = </etc/ssl/dovecot/server.key,' \
		"$pkgdir"/etc/dovecot/conf.d/10-ssl.conf || return 1
	# set default passdb to passwd and create appropriate 'users' file
	install -m 640 -o dovecot -g mail /dev/null "$pkgdir"/etc/dovecot/users
	sed -i -e 's,!include auth-system.conf.ext,!include auth-passwdfile.conf.ext,' \
		-e 's,#!include auth-passwdfile.conf.ext,#!include auth-system.conf.ext,' \
		"$pkgdir"/etc/dovecot/conf.d/10-auth.conf || return 1


	# Installing pigeonhole plugin
	cd "$_builddirpigeonhole"
	make install DESTDIR="$pkgdir" || return 1

	# Installing extdata plugin
	cd "$_builddirpluginextdata"
	make install DESTDIR="$pkgdir" || return 1

	# Moving config in the correct place
	mv "$pkgdir"/usr/share/doc/dovecot/example-config/conf.d/* \
		"$pkgdir"/etc/dovecot/conf.d || return 1
}

_mv() {
	local i
	while [ $# -gt 0 ]; do
		local dir=${1%/*}
		mkdir -p "$subpkgdir"/$dir
		mv "$pkgdir/$1" "$subpkgdir/$dir/"
		[ "$(ls -A $pkgdir/$dir)" ] || rmdir "$pkgdir"/$dir
		shift
	done
}

dev() {
	default_dev
	mv "$pkgdir"/usr/lib/dovecot/dovecot-config \
		"$subpkgdir"/usr/lib/dovecot/
}

pigeonhole() {
	pkgdesc="Sieve plugin for dovecot"
	depends="$pkgname"
	_mv $(cd "$pkgdir" && find usr -name '*sieve_extprograms*')
	_mv $(cd "$pkgdir" && find usr -name '*sieve_imapsieve*')
	_mv $(cd "$pkgdir" && find usr -name '*pigeonhole*')
	_mv $(cd "$pkgdir" && find etc/dovecot -name '*sieve*')
}

pigeonhole_extdata() {
	pkgdesc="Pigeonhole Sieve Extdata Plugin"
	depends="$pkgname-pigeonhole-plugin"
	_mv $(cd "$pkgdir" && find usr -name '*sieve_extdata*')
	install -Dm644 "$srcdir"/extdata.conf "$subpkgdir"/etc/dovecot/conf.d/90-sieve-extdata.conf
	install -Dm644 /dev/null "$subpkgdir"/etc/dovecot/sieve-extdata.dict
}

pgsql() {
	pkgdesc="postgresql driver for dovecot"
	depends="$pkgname-sql"
	_mv $(cd "$pkgdir" && find usr -name '*_pgsql*')
}

mysql() {
	pkgdesc="mysql driver for dovecot"
	depends="$pkgname-sql"
	_mv $(cd "$pkgdir" && find usr -name '*_mysql*')
}

sqlite() {
	pkgdesc="sqlite driver for dovecot"
	depends="$pkgname-sql"
	_mv $(cd "$pkgdir" && find usr -name '*_sqlite*')
}

gssapi() {
	pkgdesc="GSSAPI auth plugin for dovecot"
	depends="$pkgname"
	_mv $(cd "$pkgdir" && find usr -name '*_gssapi*')
}

ldap() {
	pkgdesc="LDAP auth plugin for dovecot"
	depends="$pkgname"
	_mv $(cd "$pkgdir" && find usr -name '*_ldap*')
	_mv $(cd "$pkgdir" && find etc/dovecot -name '*-ldap.conf*')
}

sql() {
	pkgdesc="SQL plugin for dovecot"
	depends="$pkgname"
	_mv $(cd "$pkgdir" && find usr -name '*-sql.*')
	_mv $(cd "$pkgdir" && find etc/dovecot -name '*-sql.conf*')
}
md5sums="20133518f5bc0e64dd07ce55b83df2fb  dovecot-2.2.27.tar.gz
e03eed707b39cffc4b2a82867de45d9c  dovecot-2.2-pigeonhole-0.4.16.tar.gz
5d26d326856d00ce04c620b549d58f79  39.tar.gz
df6d43508a82903a97e3a2a5b8436d3d  dovecot.logrotate
f0c227ab4e2593f6d410440b82103de1  dovecot.initd
e085d2bafae8c9d657c4a85a91eb35f6  extdata.conf
ca86aa10f8f963c7f08c50c12c2dbe45  libressl.patch"
sha256sums="897f92a87cda4b27b243f8149ce0ba7b7e71a2be8fb7994eb0a025e54cde18e9  dovecot-2.2.27.tar.gz
8f0b98f18062d6e241eef74ebe16cc167cd246361cbe6657d94f0ecc5d7d3234  dovecot-2.2-pigeonhole-0.4.16.tar.gz
da70fb0ce0424e9cad2c03834bd826a3685deb5a986ec5b87ae7c525055256d5  39.tar.gz
d0fef8cd8200549877d7594cf458d6b33f05b31f95f1fd9a8368e8471c082735  dovecot.logrotate
1a3c845c216bb6f9633d27a8c1c0d01b591942c463bddb5ae835f162bd7fb4bf  dovecot.initd
1e7b6a42f07add59af8a031d24525bdda28a6d904acefa6e4f48b005d07213e6  extdata.conf
27ce75e878fbea1038417b2629626cb6c96e078e8af97cb76641489448c0e88f  libressl.patch"
sha512sums="faab441bb2afa1e6de3e6ec6207c92a333773941bbc10c4761483ef6ccc193d3a4983de1acc73325122c22b197ea25c1e54886cccfb6b060ede90936a69b71f2  dovecot-2.2.27.tar.gz
5f59fb35dbe638f8ddd19c0fd0f3fbd6fec1fa238f3781b94c50a8f7ce72a53ac1381a6f8ad9bcc90df1edfa2b263a6dfba88521578e55ce4b3d840bed022b79  dovecot-2.2-pigeonhole-0.4.16.tar.gz
832a80264fb9bd3021c4e192eb7594c203100783df547aff35acf4dc4d8de5eddfd676fcc5a07a0691d9bb6eb884c9497a692b72a2af5bf9e9bb7a2d3f38923e  39.tar.gz
9f19698ab45969f1f94dc4bddf6de59317daee93c9421c81f2dbf8a7efe6acf89689f1d30f60f536737bb9526c315215d2bce694db27e7b8d7896036a59c31f0  dovecot.logrotate
6ec75a8396f4d826390e69aa8177593573eaf0e0ab537b2a4720573e04c92ff615f39e1559b48313b2cd2f03704cd977bb594a568ecc5dd22e38926c12f3c48c  dovecot.initd
7aa66cbd2a520d863fc8ff2ec48520c6fe4629ec345545b362e16c3072843f5315c6e12513ed86200d66b7c55e17f5bb21c7a12d86721968a9e03cc595dc5bcd  extdata.conf
c58abae05c69fa01f2547c4a10e1b49a8b04f7311b7f0397eb2be9bd574d711f6a75203c3764b67205fe4000dd018c2e7dfe4a23399e3d8a3e7b2f201b7c745e  libressl.patch"
