From fdf9881735f867b6a5ea9e8b69346dd4fc872338 Mon Sep 17 00:00:00 2001
From: Jakub Jirutka <jakub@jirutka.cz>
Date: Thu, 26 Oct 2017 22:19:57 +0200
Subject: [PATCH] main/openldap: move overlays to subpackages

---
 main/openldap/APKBUILD              | 31 ++++++++++++++++++++++++++++-
 main/openldap/openldap.post-install |  5 ++++-
 main/openldap/openldap.post-upgrade |  9 +++++++++
 3 files changed, 43 insertions(+), 2 deletions(-)

diff --git a/main/openldap/APKBUILD b/main/openldap/APKBUILD
index 2e5c7a2c352f..688a265f72d4 100644
--- a/main/openldap/APKBUILD
+++ b/main/openldap/APKBUILD
@@ -19,7 +19,8 @@ depends_dev="libressl-dev cyrus-sasl-dev util-linux-dev"
 makedepends="$depends_dev db-dev groff unixodbc-dev libtool mosquitto-dev
 	autoconf automake libtool"
 subpackages="$pkgname-dev $pkgname-doc libldap
-	$pkgname-clients $pkgname-mqtt $pkgname-passwd-pbkdf2:passwd_pbkdf2"
+	$pkgname-clients $pkgname-mqtt $pkgname-passwd-pbkdf2:passwd_pbkdf2
+	$pkgname-overlay-all:_overlay_all:noarch"
 install="$pkgname.pre-install $pkgname.post-install $pkgname.post-upgrade"
 source="ftp://ftp.$pkgname.org/pub/OpenLDAP/$pkgname-release/$pkgname-$pkgver.tgz
 	openldap-2.4-ppolicy.patch
@@ -34,10 +35,21 @@ source="ftp://ftp.$pkgname.org/pub/OpenLDAP/$pkgname-release/$pkgname-$pkgver.tg
 	"
 builddir="$srcdir/$pkgname-$pkgver"
 
+# SLAPD backends
 for _name in bdb hdb ldap mdb meta monitor sql; do
 	subpackages="$subpackages $pkgname-back-$_name:_backend"
 done
 
+# SLAPD overlays
+_overlays=""
+for _name in accesslog auditlog collect constraint dds deref dyngroup \
+	dynlist memberof ppolicy proxycache refint retcode rwm seqmod \
+	sssvlv syncprov translucent unique valsort
+do
+	subpackages="$subpackages $pkgname-overlay-$_name:_overlay"
+	_overlays="$_overlays $pkgname-overlay-$_name"
+done
+
 prepare() {
 	cd "$builddir"
 	update_config_sub
@@ -157,6 +169,13 @@ passwd_pbkdf2() {
 	_submv "usr/lib/openldap/pw-pbkdf2.*"
 }
 
+_overlay_all() {
+	pkgdesc="Virtual package that installs all OpenLDAP overlays"
+	depends="$_overlays"
+
+	mkdir -p "$subpkgdir"
+}
+
 _backend() {
 	backend_name="${subpkgname#openldap-back-}"
 	pkgdesc="OpenLDAP $backend_name backend"
@@ -164,6 +183,16 @@ _backend() {
 	_submv "usr/lib/openldap/back_$backend_name*"
 }
 
+_overlay() {
+	overlay_name="${subpkgname#openldap-overlay-}"
+	pkgdesc="OpenLDAP $backend_name overlay"
+
+	case "$overlay_name" in
+		proxycache) overlay_name=pcache;;
+	esac
+	_submv "usr/lib/openldap/$overlay_name*"
+}
+
 _submv() {
 	local path; for path in "$@"; do
 		mkdir -p "$subpkgdir"/${path%/*}
diff --git a/main/openldap/openldap.post-install b/main/openldap/openldap.post-install
index 1e45b9abd258..e90d25760939 100644
--- a/main/openldap/openldap.post-install
+++ b/main/openldap/openldap.post-install
@@ -3,6 +3,9 @@
 cat >&2 <<-EOF
 *
 * To use LDAP server, you have to install some backend. Most users would need MDB
-* backend which you can install using: apk add openldap-back-mdb.
+* backend which you can install with: apk add openldap-back-mdb.
+*
+* If you use overlays, you have to install them separately too:
+* apk add openldap-overlay-<name>, or openldap-overlay-all to install them all.
 *
 EOF
diff --git a/main/openldap/openldap.post-upgrade b/main/openldap/openldap.post-upgrade
index c10ad5ad2b4a..28919c7d36b5 100644
--- a/main/openldap/openldap.post-upgrade
+++ b/main/openldap/openldap.post-upgrade
@@ -4,6 +4,13 @@ new_ver="$1"
 old_ver="$2"
 
 if [ "$(apk version -t "$old_ver" "2.4.45-r2")" = "<" ]; then
+	cat >&2 <<-EOF
+	*
+	* If you use some overlays, you have to install them separately:
+	*     apk add openldap-overlay-<name>
+	* or install them all:
+	*     apk add openldap-overlay-all
+	EOF
 	if [ -e /var/lib/openldap/openldap-data/data.mdb ]; then
 		cat >&2 <<-EOF
 		*
@@ -14,5 +21,7 @@ if [ "$(apk version -t "$old_ver" "2.4.45-r2")" = "<" ]; then
 		* or "olcModuleload back_mdb.so" to slapd.ldif.
 		*
 		EOF
+	else
+		echo "*" >&2
 	fi
 fi
-- 
GitLab