#!/usr/bin/make -f
# -*- makefile -*-
# Sample debian/rules that uses debhelper.
#
# This file was originally written by Joey Hess and Craig Small.
# As a special exception, when this file is copied by dh-make into a
# dh-make output file, you may use that output file without restriction.
# This special exception was added by Craig Small in version 0.37 of dh-make.
#
# Modified to make a template file for a multi-binary package with separated
# build-arch and build-indep targets  by Bill Allombert 2001

DEBVERS := $(shell dpkg-parsechangelog | sed -n -e 's/^Version: //p')
VERSION := $(shell echo '$(DEBVERS)' | sed -e 's/^[[:digit:]]*://' -e 's/[~-].*//')
PACKAGE = $(shell dh_listpackages|head -n 1|cut -d '-' -f 1)
SYSCONFDIR = "/etc"
DESTDIR = "debian/tmp"

# Uncomment this to turn on verbose mode.
export DH_VERBOSE=1

# This has to be exported to make some magic below work.
export DH_OPTIONS

configure: configure-stamp
configure-stamp:
	dh_testdir
	cp packaging/debian/replace.properties replace.properties.tmp
	echo VERSION=${VERSION} >> replace.properties.tmp
	touch configure-stamp

build: build-indep

build-indep: build-indep-stamp

build-indep-stamp: configure
	mvn package -DskipTests -Dsystemvm \
        -Dcs.replace.properties=replace.properties.tmp
	touch $@

clean:
	dh_testdir
	dh_testroot
	rm -f build-arch-stamp build-indep-stamp configure-stamp
	rm -f replace.properties.tmp
	dh_clean

install:
	dh_testdir
	dh_testroot
	dh_prep -s

	# Common packages
	mkdir -p $(DESTDIR)/$(SYSCONFDIR)/$(PACKAGE)
	mkdir -p $(DESTDIR)/$(SYSCONFDIR)/init.d
	mkdir -p $(DESTDIR)/var/cache/$(PACKAGE)
	mkdir -p $(DESTDIR)/var/log/$(PACKAGE)
	mkdir -p $(DESTDIR)/var/lib/$(PACKAGE)
	mkdir -p $(DESTDIR)/usr/bin
	mkdir -p $(DESTDIR)/usr/share

	# cloudstack-agent
	mkdir $(DESTDIR)/$(SYSCONFDIR)/$(PACKAGE)/agent
	mkdir $(DESTDIR)/var/log/$(PACKAGE)/agent
	mkdir $(DESTDIR)/usr/share/$(PACKAGE)-agent
	mkdir $(DESTDIR)/usr/share/$(PACKAGE)-agent/plugins
	install -D agent/target/cloud-agent-$(VERSION)-SNAPSHOT.jar $(DESTDIR)/usr/share/$(PACKAGE)-agent/lib/$(PACKAGE)-agent.jar
	install -D plugins/hypervisors/kvm/target/cloud-plugin-hypervisor-kvm-$(VERSION)-SNAPSHOT.jar $(DESTDIR)/usr/share/$(PACKAGE)-agent/lib/
	install -D plugins/hypervisors/kvm/target/dependencies/* $(DESTDIR)/usr/share/$(PACKAGE)-agent/lib/
	install -D packaging/debian/init/cloud-agent $(DESTDIR)/$(SYSCONFDIR)/init.d/$(PACKAGE)-agent
	install -D agent/bindir/cloud-setup-agent.in $(DESTDIR)/usr/bin/cloud-setup-agent
	install -D agent/bindir/cloud-ssh.in $(DESTDIR)/usr/bin/cloud-ssh
	install -D agent/target/transformed/* $(DESTDIR)/$(SYSCONFDIR)/$(PACKAGE)/agent

	# cloudstack-management
	mkdir $(DESTDIR)/$(SYSCONFDIR)/$(PACKAGE)/server
	mkdir $(DESTDIR)/$(SYSCONFDIR)/$(PACKAGE)/management
	mkdir -p $(DESTDIR)/$(SYSCONFDIR)/security/limits.d/
	mkdir -p $(DESTDIR)/$(SYSCONFDIR)/sudoers.d/
	mkdir -p $(DESTDIR)/usr/share/$(PACKAGE)-management
	mkdir -p $(DESTDIR)/usr/share/$(PACKAGE)-management/webapps/client
	mkdir $(DESTDIR)/usr/share/$(PACKAGE)-management/setup
	mkdir $(DESTDIR)/var/log/$(PACKAGE)/management
	mkdir $(DESTDIR)/var/cache/$(PACKAGE)/management
	mkdir $(DESTDIR)/var/cache/$(PACKAGE)/management/work
	mkdir $(DESTDIR)/var/cache/$(PACKAGE)/management/temp
	mkdir $(DESTDIR)/var/log/$(PACKAGE)/ipallocator
	mkdir $(DESTDIR)/var/lib/$(PACKAGE)/management
	mkdir $(DESTDIR)/var/lib/$(PACKAGE)/mnt
	cp -r client/target/utilities/scripts/db/* $(DESTDIR)/usr/share/$(PACKAGE)-management/setup/
	cp -r client/target/cloud-client-ui-$(VERSION)-SNAPSHOT/* $(DESTDIR)/usr/share/$(PACKAGE)-management/webapps/client/
	cp server/target/conf/* $(DESTDIR)/$(SYSCONFDIR)/$(PACKAGE)/server/
	cp client/target/conf/* $(DESTDIR)/$(SYSCONFDIR)/$(PACKAGE)/management/

	# nast hack for a couple of configuration files
	mv $(DESTDIR)/$(SYSCONFDIR)/$(PACKAGE)/server/cloudstack-limits.conf $(DESTDIR)/$(SYSCONFDIR)/security/limits.d/
	mv $(DESTDIR)/$(SYSCONFDIR)/$(PACKAGE)/server/cloudstack-sudoers $(DESTDIR)/$(SYSCONFDIR)/sudoers.d/cloudstack
	chmod 0440 $(DESTDIR)/$(SYSCONFDIR)/sudoers.d/cloudstack

	ln -s tomcat6-nonssl.conf $(DESTDIR)/$(SYSCONFDIR)/$(PACKAGE)/management/tomcat6.conf
	mkdir -p $(DESTDIR)/$(SYSCONFDIR)/$(PACKAGE)/management/Catalina/localhost/client
	install -D packaging/debian/init/cloud-management $(DESTDIR)/$(SYSCONFDIR)/init.d/$(PACKAGE)-management
	install -D client/bindir/cloud-update-xenserver-licenses.in $(DESTDIR)/usr/bin/cloud-update-xenserver-licenses
	install -D server/target/cloud-server-$(VERSION)-SNAPSHOT.jar $(DESTDIR)/usr/share/$(PACKAGE)-management/lib/$(PACKAGE)-server.jar
	ln -s /usr/share/tomcat6/bin $(DESTDIR)/usr/share/$(PACKAGE)-management/bin
	ln -s ../../..$(SYSCONFDIR)/$(PACKAGE)/management $(DESTDIR)/usr/share/$(PACKAGE)-management/conf
	ln -s /usr/share/tomcat6/lib $(DESTDIR)/usr/share/$(PACKAGE)-management/lib
	ln -s ../../../var/log/$(PACKAGE)/management $(DESTDIR)/usr/share/$(PACKAGE)-management/logs
	ln -s ../../../var/cache/$(PACKAGE)/management/temp $(DESTDIR)/usr/share/$(PACKAGE)-management/temp
	ln -s ../../../var/cache/$(PACKAGE)/management/work $(DESTDIR)/usr/share/$(PACKAGE)-management/work

	# cloudstack-common
	mkdir -p $(DESTDIR)/usr/share/$(PACKAGE)-common
	mkdir $(DESTDIR)/usr/share/$(PACKAGE)-common/scripts
	mkdir $(DESTDIR)/usr/share/$(PACKAGE)-common/setup
	cp -r scripts/installer $(DESTDIR)/usr/share/$(PACKAGE)-common/scripts
	cp -r scripts/network $(DESTDIR)/usr/share/$(PACKAGE)-common/scripts
	cp -r scripts/storage $(DESTDIR)/usr/share/$(PACKAGE)-common/scripts
	cp -r scripts/util $(DESTDIR)/usr/share/$(PACKAGE)-common/scripts
	cp -r scripts/vm $(DESTDIR)/usr/share/$(PACKAGE)-common/scripts
	install -D client/target/utilities/bin/cloud-migrate-databases $(DESTDIR)/usr/bin
	install -D client/target/utilities/bin/cloud-set-guest-password $(DESTDIR)/usr/bin
	install -D client/target/utilities/bin/cloud-set-guest-sshkey $(DESTDIR)/usr/bin
	install -D client/target/utilities/bin/cloud-setup-databases $(DESTDIR)/usr/bin
	install -D client/target/utilities/bin/cloud-setup-management $(DESTDIR)/usr/bin
	install -D client/target/cloud-client-ui-$(VERSION)-SNAPSHOT/WEB-INF/classes/vms/systemvm.iso $(DESTDIR)/usr/share/$(PACKAGE)-common/vms/systemvm.iso

	# cloudstack-python
	mkdir -p $(DESTDIR)/usr/lib/python2.7/dist-packages
	cp -r python/lib/cloud* $(DESTDIR)/usr/lib/python2.7/dist-packages

	# cloudstack-usage
	mkdir $(DESTDIR)/$(SYSCONFDIR)/$(PACKAGE)/usage
	mkdir $(DESTDIR)/var/log/$(PACKAGE)/usage
	mkdir $(DESTDIR)/usr/share/$(PACKAGE)-usage
	mkdir $(DESTDIR)/usr/share/$(PACKAGE)-usage/plugins
	install -D usage/target/cloud-usage-$(VERSION)-SNAPSHOT.jar $(DESTDIR)/usr/share/$(PACKAGE)-usage/lib/$(PACKAGE)-usage.jar
	install -D usage/target/dependencies/* $(DESTDIR)/usr/share/$(PACKAGE)-usage/lib/
	cp usage/target/transformed/* $(DESTDIR)/$(SYSCONFDIR)/$(PACKAGE)/usage/
	install -D packaging/debian/init/cloud-usage $(DESTDIR)/$(SYSCONFDIR)/init.d/$(PACKAGE)-usage

	# cloudstack-awsapi
	mkdir $(DESTDIR)/var/log/$(PACKAGE)/awsapi

	dh_installdirs
	dh_install
	dh_python2

binary: install
	dh_install
	dh_installchangelogs
	dh_installdocs LICENSE
	dh_installdocs DISCLAIMER
	dh_installdocs NOTICE
	dh_installdocs INSTALL.md
	dh_installman
	dh_link
	dh_strip
	dh_compress
	dh_fixperms
	dh_makeshlibs
	dh_installdeb
	dh_gencontrol
	dh_md5sums
	dh_builddeb
