From a6c759bb8f055f057e557df40f1be39cad36e50d Mon Sep 17 00:00:00 2001
From: Ivan Udovichenko <iudovichenko@mirantis.com>
Date: Thu, 31 Mar 2016 22:12:11 +0300
Subject: [PATCH] Fix issues with dpkg-maintscript-helper.

Rewritten-From: c6fde227b66db2457e974e66b006343293352e26
---
 .../openstack-dashboard-apache.postinst       | 10 ++++--
 .../debian/openstack-dashboard-apache.postrm  |  3 +-
 .../debian/openstack-dashboard-apache.preinst | 33 +++++++++++++++++--
 xenial/debian/openstack-dashboard.postinst    | 10 +++++-
 xenial/debian/openstack-dashboard.postrm      |  2 +-
 xenial/debian/openstack-dashboard.preinst     | 33 +++++++++++++++++--
 6 files changed, 82 insertions(+), 9 deletions(-)

diff --git a/xenial/debian/openstack-dashboard-apache.postinst b/xenial/debian/openstack-dashboard-apache.postinst
index 561a2fb..2e9e384 100644
--- a/xenial/debian/openstack-dashboard-apache.postinst
+++ b/xenial/debian/openstack-dashboard-apache.postinst
@@ -2,9 +2,8 @@
 
 set -e
 
-
 dpkg-maintscript-helper dir_to_symlink \
-	/usr/share/openstack-dashboard/static /var/lib/openstack-dashboard/static -- "$@"
+	/usr/share/openstack-dashboard/static /var/lib/openstack-dashboard/static 9.0.0~rc1-2 openstack-dashboard-apache -- "$@"
 
 if [ "$1" = "configure" ] ; then
 	. /usr/share/debconf/confmodule
@@ -46,6 +45,13 @@ HORIZON_USE_SSL=yes" >/etc/default/openstack-dashboard-apache
 			a2dissite openstack-dashboard-alias-only.conf
 			a2ensite openstack-dashboard.conf
 		fi
+		if [ -L /usr/share/openstack-dashboard/static ]; then
+			if ! [ $(readlink -s /usr/share/openstack-dashboard/static) = /var/lib/openstack-dashboard/static ]; then
+				ln -fs /var/lib/openstack-dashboard/static /usr/share/openstack-dashboard/static
+			fi
+		else
+			ln -fs /var/lib/openstack-dashboard/static /usr/share/openstack-dashboard/static
+		fi
 		/usr/share/openstack-dashboard/manage.py collectstatic --clear --noinput
 		/usr/share/openstack-dashboard/manage.py compress --force
 		if [ -f '/var/lib/openstack-dashboard/secret-key/.secret_key_store' ]; then
diff --git a/xenial/debian/openstack-dashboard-apache.postrm b/xenial/debian/openstack-dashboard-apache.postrm
index 8fbb792..aeec9fa 100644
--- a/xenial/debian/openstack-dashboard-apache.postrm
+++ b/xenial/debian/openstack-dashboard-apache.postrm
@@ -3,7 +3,8 @@
 set -e
 
 dpkg-maintscript-helper dir_to_symlink \
-	/usr/share/openstack-dashboard/static /var/lib/openstack-dashboard/static -- "$@"
+	/usr/share/openstack-dashboard/static /var/lib/openstack-dashboard/static 9.0.0~rc1-2 openstack-dashboard-apache -- "$@"
+
 
 if [ "${1}" = "purge" ] ; then
 	if [ -f /etc/default/openstack-dashboard-apache ] ; then
diff --git a/xenial/debian/openstack-dashboard-apache.preinst b/xenial/debian/openstack-dashboard-apache.preinst
index f253fa7..3916bba 100644
--- a/xenial/debian/openstack-dashboard-apache.preinst
+++ b/xenial/debian/openstack-dashboard-apache.preinst
@@ -2,7 +2,36 @@
 
 set -e
 
-dpkg-maintscript-helper dir_to_symlink \
-	/usr/share/openstack-dashboard/static /var/lib/openstack-dashboard/static -- "$@"
+error() {
+	echo "error: $1" >&2
+	exit 1
+}
+
+dir_to_symlink_preinst() {
+	local PATHNAME="$1"
+	local SYMLINK_TARGET="$2"
+	local LASTVERSION="$3"
+	local PACKAGE="$4"
+
+	# Skip remaining parameters up to --
+	while [ "$1" != "--" -a $# -gt 0 ]; do shift; done
+	shift
+
+	if [ -n "$DPKG_MAINTSCRIPT_NAME" ] || error "environment variable DPKG_MAINTSCRIPT_NAME is required"
+	[ -n "$1" ] || error "maintainer script parameters are missing"
+
+	[ -n "$2" ] && [ ! -h "$PATHNAME" ] && [ -d "$PATHNAME" ] && dpkg --compare-versions "$2" le-nl "$LASTVERSION"; then
+		mv -f "$PATHNAME" "${PATHNAME}.dpkg-backup"
+		mkdir "$PATHNAME"
+		touch "$PATHNAME/.dpkg-staging-dir"
+	fi
+}
+
+if [ "$1" = "install" -o "$1" = "upgrade" ] ; then
+	if [ -e /usr/share/openstack-dashboard/static ] ; then
+		dir_to_symlink_preinst /usr/share/openstack-dashboard/static /var/lib/openstack-dashboard/static 9.0.0~rc1-2 openstack-dashboard -- "$@"
+	fi
+	dir_to_symlink_preinst /usr/share/openstack-dashboard/static /var/lib/openstack-dashboard/static 9.0.0~rc1-2 openstack-dashboard -- "$@"
+fi
 
 #DEBHELPER#
diff --git a/xenial/debian/openstack-dashboard.postinst b/xenial/debian/openstack-dashboard.postinst
index db9f640..3c4b05e 100644
--- a/xenial/debian/openstack-dashboard.postinst
+++ b/xenial/debian/openstack-dashboard.postinst
@@ -3,7 +3,7 @@
 set -e
 
 dpkg-maintscript-helper dir_to_symlink \
-	/usr/share/openstack-dashboard/static /var/lib/openstack-dashboard/static -- "$@"
+	/usr/share/openstack-dashboard/static /var/lib/openstack-dashboard/static 9.0.0~rc1-2 openstack-dashboard -- "$@"
 
 if [ "$1" = "configure" ] ; then
 	adduser --system \
@@ -20,6 +20,14 @@ if [ "$1" = "configure" ] ; then
 		cp /usr/share/openstack-dashboard/local_settings.py /etc/openstack-dashboard/local_settings.py
 	fi
 
+	if [ -L /usr/share/openstack-dashboard/static ]; then
+		if ! [ $(readlink -s /usr/share/openstack-dashboard/static) = /var/lib/openstack-dashboard/static ]; then
+			ln -fs /var/lib/openstack-dashboard/static /usr/share/openstack-dashboard/static
+		fi
+	else
+		ln -fs /var/lib/openstack-dashboard/static /usr/share/openstack-dashboard/static
+	fi
+
 	# Compress the JS and CSS with python-compressor and python-lesscpy
 	/usr/share/openstack-dashboard/manage.py collectstatic --clear --noinput
 	/usr/share/openstack-dashboard/manage.py compress --force
diff --git a/xenial/debian/openstack-dashboard.postrm b/xenial/debian/openstack-dashboard.postrm
index 41afedc..eb96754 100644
--- a/xenial/debian/openstack-dashboard.postrm
+++ b/xenial/debian/openstack-dashboard.postrm
@@ -3,7 +3,7 @@
 set -e
 
 dpkg-maintscript-helper dir_to_symlink \
-	/usr/share/openstack-dashboard/static /var/lib/openstack-dashboard/static -- "$@"
+	/usr/share/openstack-dashboard/static /var/lib/openstack-dashboard/static 9.0.0~rc1-2 openstack-dashboard -- "$@"
 
 if [ "${1}" = "purge" ] ; then
 	rm -f /etc/openstack-dashboard/local_settings.py
diff --git a/xenial/debian/openstack-dashboard.preinst b/xenial/debian/openstack-dashboard.preinst
index f253fa7..3916bba 100644
--- a/xenial/debian/openstack-dashboard.preinst
+++ b/xenial/debian/openstack-dashboard.preinst
@@ -2,7 +2,36 @@
 
 set -e
 
-dpkg-maintscript-helper dir_to_symlink \
-	/usr/share/openstack-dashboard/static /var/lib/openstack-dashboard/static -- "$@"
+error() {
+	echo "error: $1" >&2
+	exit 1
+}
+
+dir_to_symlink_preinst() {
+	local PATHNAME="$1"
+	local SYMLINK_TARGET="$2"
+	local LASTVERSION="$3"
+	local PACKAGE="$4"
+
+	# Skip remaining parameters up to --
+	while [ "$1" != "--" -a $# -gt 0 ]; do shift; done
+	shift
+
+	if [ -n "$DPKG_MAINTSCRIPT_NAME" ] || error "environment variable DPKG_MAINTSCRIPT_NAME is required"
+	[ -n "$1" ] || error "maintainer script parameters are missing"
+
+	[ -n "$2" ] && [ ! -h "$PATHNAME" ] && [ -d "$PATHNAME" ] && dpkg --compare-versions "$2" le-nl "$LASTVERSION"; then
+		mv -f "$PATHNAME" "${PATHNAME}.dpkg-backup"
+		mkdir "$PATHNAME"
+		touch "$PATHNAME/.dpkg-staging-dir"
+	fi
+}
+
+if [ "$1" = "install" -o "$1" = "upgrade" ] ; then
+	if [ -e /usr/share/openstack-dashboard/static ] ; then
+		dir_to_symlink_preinst /usr/share/openstack-dashboard/static /var/lib/openstack-dashboard/static 9.0.0~rc1-2 openstack-dashboard -- "$@"
+	fi
+	dir_to_symlink_preinst /usr/share/openstack-dashboard/static /var/lib/openstack-dashboard/static 9.0.0~rc1-2 openstack-dashboard -- "$@"
+fi
 
 #DEBHELPER#
-- 
2.45.2