#!/usr/bin/make -f
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
#     http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
#

# Uncomment for debugging.
#DH_VERBOSE = 1

TMP     = $(CURDIR)/debian

%:
	dh $@ --exclude=aurora-scheduler.bat --with=systemd

gradle = $(shell which gradle)
pants = $(CURDIR)/pants
PANTS_CONFIG_FILES = $(CURDIR)/debian/aurora-pants.ini
export PANTS_CONFIG_FILES

override_dh_auto_build: __gradle_build __pants_build

__gradle_build:
	$(gradle) installDist

__pants_build:
	mkdir -p third_party
	$(pants) binary src/main/python/apache/aurora/executor:thermos_executor
	$(pants) binary src/main/python/apache/aurora/kerberos:kaurora
	$(pants) binary src/main/python/apache/aurora/kerberos:kaurora_admin
	$(pants) binary src/main/python/apache/aurora/tools:thermos
	$(pants) binary src/main/python/apache/aurora/tools:thermos_observer
	$(pants) binary src/main/python/apache/thermos/runner:thermos_runner
	build-support/embed_runner_in_executor.py

override_dh_installinit:
	dh_installinit --name=thermos
	dh_installinit

override_dh_auto_install:
	dh_auto_install
	# Install start up script for aurora-scheduler
	install -D -m 0755 $(TMP)/aurora-scheduler.startup.sh $(TMP)/aurora-scheduler/usr/bin/aurora-scheduler-startup
