#!/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 -*-

# 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

phoenix_pkg_name=phoenix
zookeeper_home=/usr/lib/zookeeper
hadoop_home=/usr/lib/hadoop
hadoop_mapreduce_home=/usr/lib/hadoop-mapreduce
hadoop_hdfs_home=/usr/lib/hadoop-hdfs
hadoop_yarn_home=/usr/lib/hadoop-yarn
hbase_home=/usr/lib/hbase

%:
	dh $@

override_dh_auto_build:
	# we'll just use the build from the tarball.
	mkdir -p debian/tmp/bigtop-empty
	bash debian/do-component-build -Dmaven.repo.local=${HOME}/.m2/repository

.PHONY: queryserver
	bash debian/init.d.tmpl debian/${phoenix_pkg_name}-queryserver.svc deb debian/${phoenix_pkg_name}-queryserver.init
	
override_dh_auto_install: queryserver
	cp debian/phoenix.default debian/${phoenix_pkg_name}/etc/default/${phoenix_pkg_name}
	cp debian/phoenix-queryserver.default debian/${phoenix_pkg_name}/etc/default/${phoenix_pkg_name}-queryserver
	bash -x debian/install_phoenix.sh \
	  --build-dir=$${PWD}/build     \
	  --prefix=debian/tmp

