#!/usr/bin/make -f
#
# Licensed to the Apache Software Foundation (ASF) under one or more
# contributor license agreements.  See the NOTICE file distributed with
# this work for additional information regarding copyright ownership.
# The ASF licenses this file to You 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.
#
# -*- makefile -*-
SHELL=/bin/bash

# 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

ignite-hadoop_pkg_name=ignite-hadoop

%:
	dh $@

override_dh_auto_build:
	bash debian/do-component-build -Dmaven.repo.local=${HOME}/.m2/repository


override_dh_auto_install:
	cp debian/ignite-hadoop.default debian/${ignite-hadoop_pkg_name}/etc/default/${ignite-hadoop_pkg_name}
	env HADOOP_VERSION=${IGNITE_HADOOP_BASE_VERSION} \
	bash -x debian/install_ignite.sh \
		--build-dir=target/bin \
		--conf-dir=/etc/${ignite-hadoop_pkg_name}/conf.dist \
		--doc-dir=usr/share/doc/${ignite-hadoop_pkg_name}-doc \
		--prefix=debian/tmp
	ln -s /var/log/${ignite-hadoop_pkg_name} debian/tmp/usr/lib/${ignite-hadoop_pkg_name}/logs
	ln -s /var/run/${ignite-hadoop_pkg_name} debian/tmp/usr/lib/${ignite-hadoop_pkg_name}/pids
	bash debian/init.d.tmpl debian/ignite-hadoop.svc deb debian/${ignite-hadoop_pkg_name}-service.init
