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

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

include debian/rules-vars.tmp

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

JOBS ?= 8
MAKEFLAGS="-j $(JOBS)"

SVN_ROOT ?= ../..
DEST = debian
DEST_SRC = debian/yandex-direct

DEST_TOOLS = debian/yandex-direct-tools

DEST_CONF_TEST = debian/yandex-direct-conf-test
DEST_CONF_TEST2 = debian/yandex-direct-conf-test2
DEST_CONF_DEV = debian/yandex-direct-conf-dev
DEST_CONF_TESTBS = debian/yandex-direct-conf-testbs

DEST_SOAP = debian/yandex-direct-soap
DEST_INTAPI = debian/yandex-direct-intapi
DEST_FRONTEND = debian/yandex-direct-frontend
DEST_DEV_SCRIPTS = debian/yandex-direct-dev-scripts
DEST_SCRIPTS_SWITCHMAN = debian/yandex-direct-scripts-switchman
DEST_SCRIPTS_EXPORT = debian/yandex-direct-scripts-export
DEST_SCRIPTS_PPCBACK = debian/yandex-direct-scripts-ppcback
DEST_SCRIPTS_LIMTEST1 = debian/yandex-direct-scripts-limtest1
DEST_SCRIPTS_LIMTEST2 = debian/yandex-direct-scripts-limtest2
DEST_JS_TEMPLATER = debian/yandex-direct-js-templater
DEST_TVMTOOL = debian/yandex-direct-tvmtool

DEST_FAKE_SERVICES = debian/yandex-direct-fake-services
DEST_CONF_SANDBOX = debian/yandex-direct-conf-sandbox
DEST_CONF_SANDBOX_TEST = debian/yandex-direct-conf-sandbox-test
DEST_CONF_SANDBOX_TEST2 = debian/yandex-direct-conf-sandbox-test2
DEST_SCRIPTS_SANDBOX = debian/yandex-direct-scripts-sandbox
DEST_CONF_SANDBOX_DB = debian/yandex-direct-conf-sandbox-db

DEST_MEMCACHED_PPC = debian/yandex-direct-memcached-ppc

DEST_MONITORING = debian/yandex-direct-monitoring

# в конфигах для бет в качестве ip ppcdev'а подставляем текущий ip.
# Минусы: содержимое пакетов зависит от того, где их собирали.
# TODO: убедиться, что конфиги nginx/apache для conf-dev не зависят от ip-адреса ppcdev'а, и удалить переменную $CURRENT_IP_PPCDEV
# apache'и на бетах должны слушать на локальных адресах 127.0.0.1, 127.0.0.2 и т.п.
CURRENT_IP_PPCDEV := $(shell ( host `hostname` | awk '/has address/ {print $$4}' ))

# какие переменные из Settings.pm передать в шаблон (имена через ",")
COPY_SETTINGS_VARS = AD_DESIGNER_HOST_WITHOUT_TLD,AVATARS_MDS_HOST

define GET_TT_DEFINED_VARS
$(strip $(shell perl -I$(SVN_ROOT)/perl/settings -e '$$ENV{SETTINGS_LOCAL_SUFFIX}="$1"; require Settings; print join q[ ], map { sprintf q[--define %s=%s], $$_, $${"Settings::$$_"}  } split /,/, $$ARGV[0]' $(COPY_SETTINGS_VARS)))
endef

build:
	echo nop

binary: install
	echo nop

clean:
	dh_testdir
	dh_testroot
	dh_clean
	rm -f build-arch-stamp build-indep-stamp #CONFIGURE-STAMP#

	# Add here commands to clean up after the build process.
	-$(MAKE) clean

	dh_clean

install_init:
	# initializations
	dh_testdir
	dh_testroot
	dh_clean -k -i
	dh_installdirs
	dh_installcron

install_src: install_init
	# копирование исходников
	install -d $(DEST_SRC)/var/www/ppc.yandex.ru
	rm -rf $(DEST_SRC)/var/www/ppc.yandex.ru
	rsync -a --delete \
		--exclude="packages" \
		--exclude="unit_tests" \
		--exclude="intapi_tests" \
		--exclude=".arcignore" \
		--exclude=".svn" \
		--exclude=".git" \
		--exclude=".gitignore" \
		--exclude="logs/*" \
		--exclude="SettingsLocal.pm" \
		--exclude="/data/lego" \
		--exclude="/data3" \
		--exclude "/deploy/archive" \
		$(SVN_ROOT)/ $(DEST_SRC)/var/www/ppc.yandex.ru/
	rsync -a --exclude=".svn" $(SVN_ROOT)/etc/main/ $(DEST_SRC)/etc/
	install -T $(SVN_ROOT)/protected/maintenance/httplogarc.pl $(DEST_SRC)/usr/local/sbin/httplogarc-direct.pl
	install -d ${DEST_SRC}/etc/downtime-monitor.d/

install_bem: install_init install_src
	rsync -a -k --delete --prune-empty-dirs \
		--exclude=".bem" \
		--exclude="packages" \
		--include="node_modules/islands" \
		--include="node_modules/bricks" \
		--include='node_modules/@yandex-lego' \
		--exclude="node_modules/*" \
		--exclude="*.examples" \
		--include="*/" \
		--include="desktop.bundles/**" \
		--include="touch.bundles/**" \
		--include="*.ico" \
		--include="*.png" \
		--include="*.svg" \
		--include="*.jpg" \
		--include="*.gif" \
		--include="*.woff" \
		--include="*.woff2" \
		--include="*.schema.json" \
        --include="libs/lego/blocks-common/i-messages/*.js" \
		--include csp_headers.yml \
		--include hashsums.json \
		--exclude="*" \
		$(SVN_ROOT)/data3/ $(DEST_SRC)/var/www/ppc.yandex.ru/data3/
	install -T -D -oppc -gppc $(SVN_ROOT)/data3/node_modules/islands/common.blocks/social-broker/__closer/social-broker__closer.html $(DEST_SRC)/var/www/ppc.yandex.ru/data3/node_modules/islands/common.blocks/social-broker/__closer/social-broker__closer.html

install_lego: install_init install_src
	# копирование исходников лего, копируем только файлы только с некоторыми расширениями
	install -d $(DEST_SRC)/var/www/ppc.yandex.ru/data/
	rsync -a --delete \
		--exclude=".svn" \
		--include="*/" \
		--include="blocks" \
		--include="*.tt2" \
		--include="*.js" \
		--include="*.css" \
		--include="*.ico" \
		--include="*.png" \
		--include="*.jpg" \
		--include="*.gif" \
		--include="*.svg" \
		--exclude="*" \
		$(SVN_ROOT)/data/lego/ $(DEST_SRC)/var/www/ppc.yandex.ru/data/lego/
	install -T $(SVN_ROOT)/data/lego/blocks/i-social/closer/i-social__closer.html $(DEST_SRC)/var/www/ppc.yandex.ru/data/socialcloser.html

install_build_crontabs: install_src
	# сборка кронтабов из секций METADATA в скриптах
	mkdir -p $(DEST)/yandex-direct-scripts-switchman/etc/cron.d
	echo -e "# this file is intentionally empty for simplifying migration\n\n" >$(DEST)/yandex-direct-scripts-switchman/etc/cron.d/yandex-direct-scripts-switchman-auto
	pod2crontab.pl --project-root $(SVN_ROOT) \
		--scripts-path $(SVN_ROOT)/protected \
		--scripts-path $(SVN_ROOT)/python/scripts \
		--crontab-path $(DEST)'/[%package%]/etc/cron.d' --crontab-name '[%package%]-auto' \
        --split-package yandex-direct-scripts-switchman=3 \
		--shard-num $(SHARDS_NUM) \
		--shard-num-for-package yandex-direct-conf-test-scripts=$(SHARDS_NUM_TEST) \
		--default-user ppc \
		--scripts-path-prefix /var/www/ppc.yandex.ru --package-prefix yandex-direct \
		--fqdn-mem-meta $(SWITCHMAN_MEM_LEASE_NAME_IN_META) \
		--fqdn-mem-switchman $(SWITCHMAN_MEM_LEASE_NAME_IN_PARAMS) \
		--default-fqdn-mem-total $(SWITCHMAN_DEFAULT_FQDN_MEM_TOTAL) \
		--run-before-switchman /usr/local/bin/sleep_under_load \
		--min-memory-lease 300 \
		--default-mailto 'ppc@localhost' \
        --mailto yandex-direct-conf-test='direct-test-cron@yandex-team.ru' \
        --mailto yandex-direct-conf-test2='direct-test-cron@yandex-team.ru' \
        --mailto yandex-direct-conf-test-scripts='direct-test-cron@yandex-team.ru' \
        --mailto yandex-direct-conf-testbs='direct-test-cron@yandex-team.ru' \
        --mailto yandex-direct-conf-sandbox-test='direct-test-cron@yandex-team.ru' \
        --mailto yandex-direct-conf-sandbox-test2='direct-test-cron@yandex-team.ru' \
        --mailto yandex-direct-conf-dev='direct-dev-letters@yandex-team.ru' \
		--mkdir

install_build_juggler_playbook: install_src
	# сборка конфига для ansible-playbook из секций METADATA в скриптах
	install -d $(DEST_SRC)/opt/ppc-data/juggler-checks
	rsync -a --exclude=".svn" --exclude='*.pyc' $(SVN_ROOT)/etc/juggler_configs/ $(DEST_SRC)/opt/ppc-data/juggler-checks/
	pod2flat_juggler_playbook.pl \
		--scripts-ext pl \
		--scripts-path $(SVN_ROOT)/protected \
		--scripts-ext py \
		--scripts-path $(SVN_ROOT)/python/scripts \
		--files-path $(SVN_ROOT)/etc/juggler_configs \
		--conf-path $(DEST_SRC)/opt/ppc-data/juggler-checks \
		--use-notifications \
		--jcheck-mark direct_scripts_prod \
		--intermediate-checks-host checks_auto_aggregation.direct.yandex.ru \
		--monrun-raw-host "CGROUP%direct_ng_backs_prod" \
		--monrun-unreach-service "checks_auto_aggregation.direct.yandex.ru:unreach_for_monrun_checks" \
		--shards-num $(SHARDS_NUM) \
		--default-juggler-name-template $(DEFAULT_JUGGLER_NAME_TEMPLATE) \
		--default-juggler-raw-events-template $(DEFAULT_JUGGLER_RAW_EVENTS_TEMPLATE) \
		--juggler-check-raw-host $(JUGGLER_CHECK_RAW_HOST) \
		$(DEFAULT_JUGGLER_RAW_HOST_PARAMS_STR)

install_monitoring: install_src
	install -d $(DEST_MONITORING)/etc/monrun/conf.d
	ttree --recurse --suffix conf.tt2=conf -f /dev/null -s $(SVN_ROOT)/etc/monitoring/ -d $(DEST_MONITORING)/etc/
	rsync -a --exclude=".svn" --exclude='*.conf.tt2' $(SVN_ROOT)/etc/monitoring/monrun/ $(DEST_MONITORING)/etc/monrun/
	# сборка конфига для monrun из секций METADATA в скриптах
	pod2monrun.pl --scripts-path $(SVN_ROOT)/protected \
		--shard-num $(SHARDS_NUM) \
		--conf-path $(DEST_MONITORING)/etc/monrun/conf.d/scripts-auto.conf \

install_build_js: install_src install_lego
	# сборка js / css
	$(DEST_SRC)/var/www/ppc.yandex.ru/protected/maintenance/jsbuilder/build

install_build_static: install_src
	# сборка статических файлов
	$(DEST_SRC)/var/www/ppc.yandex.ru/protected/prebuild/mk_api_wsdl.pl
	$(DEST_SRC)/var/www/ppc.yandex.ru/protected/prebuild/convert_rtf_docs.pl
	/usr/local/bin/compile_mo.pl -locale_path $(DEST_SRC)/var/www/ppc.yandex.ru/locale/ -project_id direct
	install -T ${SVN_ROOT}/locale/emails.json ${DEST_SRC}/var/www/ppc.yandex.ru/locale/emails.json
	/usr/local/bin/update_emails.pl --base-dir ${DEST_SRC}/var/www/ppc.yandex.ru
	${DEST_SRC}/var/www/ppc.yandex.ru/protected/maintenance/make_english_pdf_appendix_for_reports.pl
	# echo nop

install_zookeeper: install_init
	# zookeeper
	mk-zookeeper-files debian/yandex-direct-zookeeper-ppc ppc \
							-d max_connections=0 \
							-d port=$(ZOOKEEPER_PORT) \
							-d servers=$(ZOOKEEPER_SERVERS)

# тут не красивые переносы строк. но без них будет падать тест на проверку mime_type который посчитает этот файл бинарным из-за слишком длинной строки
	mk-zk-delivery-files debian/yandex-direct-zk-delivery-configs ppc \
				-d port=$(ZOOKEEPER_PORT) \
				-d servers=$(ZOOKEEPER_SERVERS) \
				-d files=/direct/db-config.json:/etc/yandex-direct/db-config.json,/direct/db-hosts\
:/etc/downtime-monitor.d/yandex-direct-db-hosts,/direct/network-config.json:/etc/yandex-direct/network-config.json,/direct/direct-apps.conf.yaml\
:/etc/yandex-direct/direct-apps.conf.yaml,/direct/direct-vhosts.yaml:/etc/yandex-direct/direct-vhosts.yaml,/direct/alldb-config.json\
:/etc/yandex-direct/alldb-config.json,/direct/limtest/limtest1/app.json\
:/etc/yandex-direct/limtest1.json,/direct/limtest/limtest2/app.json:/etc/yandex-direct/limtest2.json,\
/direct/np/direct-np.yaml:/etc/yandex-direct/direct-np.yaml,\
/direct/direct-backing-services.yaml:/etc/yandex-direct/direct-backing-services.yaml,\
/direct/direct-usecases.yaml:/etc/yandex-direct/direct-usecases.yaml,\
/direct/direct-subsystems.yaml:/etc/yandex-direct/direct-subsystems.yaml,\
/direct/direct-lifeline.yaml:/etc/yandex-direct/direct-lifeline.yaml


	mk-zk-delivery-files debian/yandex-direct-sandbox-zk-delivery-configs sandbox-ppc \
				-d port=$(ZOOKEEPER_PORT) \
				-d servers=$(ZOOKEEPER_SERVERS) \
				-d files=/direct/sandbox-db-config.json:/etc/yandex-direct/sandbox-db-config.json


install_memcached: install_init
	mk-memcached-package-files $(DEST_MEMCACHED_PPC)/ ppc \
							-d mem=1024 -d conn=8192

install_web_services: install_init
	# апачи / акселераторы
	# frontend server
	tpage $(SVN_ROOT)/etc/frontend/apache2/ppc.yandex.ru.conf >$(DEST_FRONTEND)/etc/apache2/ppc.yandex.ru.conf

	tpage $(SVN_ROOT)/etc/frontend/nginx/direct-accel.conf >$(DEST_FRONTEND)/etc/nginx/direct-accel.conf
	tpage $(SVN_ROOT)/etc/frontend/nginx/direct-vhost.conf >$(DEST_FRONTEND)/etc/nginx/sites-available/direct-vhost.conf
	tpage $(SVN_ROOT)/etc/frontend/init.d/ppc.yandex.ru >$(DEST_FRONTEND)/etc/init.d/ppc.yandex.ru
	tpage $(SVN_ROOT)/etc/frontend/init.d/direct-accel > $(DEST_FRONTEND)/etc/init.d/direct-accel
	install -T -m 0644 $(SVN_ROOT)/etc/frontend/logrotate.d/direct-accel $(DEST_FRONTEND)/etc/logrotate.d/direct-accel

	# soap server
	tpage $(SVN_ROOT)/etc/soap/nginx/soap-direct-accel.conf >$(DEST_SOAP)/etc/nginx/soap-direct-accel.conf
	tpage $(SVN_ROOT)/etc/soap/nginx/soap-direct-vhost.conf >$(DEST_SOAP)/etc/nginx/sites-available/soap-direct-vhost.conf
	tpage $(SVN_ROOT)/etc/soap/init.d/soap-direct-accel >$(DEST_SOAP)/etc/init.d/soap-direct-accel
	install -T -m 0644 $(SVN_ROOT)/etc/soap/logrotate.d/soap-direct-accel $(DEST_SOAP)/etc/logrotate.d/soap-direct-accel
	install -d $(DEST_SOAP)/etc/sv/soap-direct-alive
	install -T $(SVN_ROOT)/etc/soap/sv/soap-direct-alive/run $(DEST_SOAP)/etc/sv/soap-direct-alive/run
	install -d $(DEST_SOAP)/etc/monrun/conf.d
	rsync -a --exclude=".svn" $(SVN_ROOT)/etc/soap/monrun/ $(DEST_SOAP)/etc/monrun/

	tpage $(SVN_ROOT)/etc/soap/apache2/soap.direct.yandex.ru.conf >$(DEST_SOAP)/etc/apache2/soap.direct.yandex.ru.conf

	tpage $(SVN_ROOT)/etc/soap/init.d/soap.direct.yandex.ru >$(DEST_SOAP)/etc/init.d/soap.direct.yandex.ru

	# intapi server
	tpage $(SVN_ROOT)/etc/intapi/apache2/intapi.direct.yandex.ru.conf > $(DEST_INTAPI)/etc/apache2/intapi.direct.yandex.ru.conf
	tpage $(SVN_ROOT)/etc/intapi/nginx/intapi-direct-accel.conf >$(DEST_INTAPI)/etc/nginx/intapi-direct-accel.conf
	tpage --define ROOT_DIR=$(SVN_ROOT)/ $(SVN_ROOT)/etc/intapi/nginx/intapi-direct-vhost.conf >$(DEST_INTAPI)/etc/nginx/sites-available/intapi-direct-vhost.conf

	install -T $(SVN_ROOT)/etc/intapi/init.d/intapi.direct.yandex.ru $(DEST_INTAPI)/etc/init.d/intapi.direct.yandex.ru
	install -T $(SVN_ROOT)/etc/intapi/init.d/intapi-direct-accel $(DEST_INTAPI)/etc/init.d/intapi-direct-accel
	install -T -m 0644 $(SVN_ROOT)/etc/intapi/logrotate.d/apache $(DEST_INTAPI)/etc/logrotate-intapi.d/apache
	install -T -m 0644 $(SVN_ROOT)/etc/intapi/logrotate.d/nginx $(DEST_INTAPI)/etc/logrotate.d/nginx
	install -d $(DEST_INTAPI)/etc/logpusher/conf.d
	install -T $(SVN_ROOT)/etc/intapi/logpusher.conf.d/intapi.direct.yandex.ru.conf $(DEST_INTAPI)/etc/logpusher/conf.d/intapi.direct.yandex.ru.conf

	# sandbox fake services server
	tpage $(SVN_ROOT)/etc/fake-services/apache2/fake-services.direct.yandex.ru.conf > $(DEST_FAKE_SERVICES)/etc/apache2/fake-services.direct.yandex.ru.conf

	install -T $(SVN_ROOT)/etc/fake-services/init.d/fake-services.direct.yandex.ru $(DEST_FAKE_SERVICES)/etc/init.d/fake-services.direct.yandex.ru
	install -T -m 0644 $(SVN_ROOT)/etc/fake-services/logrotate.d/apache $(DEST_FAKE_SERVICES)/etc/logrotate-fake-services.d/apache
	install -d $(DEST_FAKE_SERVICES)/var/www/ppc.yandex.ru/data/fake-services-root

install_confs: install_src
	# альтернативные конфигурации - ТС, разработка и Sandbox
	# conf test
	install -d $(DEST_CONF_TEST)/var/www/ppc.yandex.ru/protected/
	install -d $(DEST_CONF_TEST)/var/www/ppc.yandex.ru/perl/settings/
	#install -T $(SVN_ROOT)/perl/settings/SettingsTest.pm $(DEST_CONF_TEST)/var/www/ppc.yandex.ru/perl/settings/SettingsLocal.pm
	install -d $(DEST_CONF_TEST)/var/www/ppc.yandex.ru/etc/
	touch $(DEST_CONF_TEST)/var/www/ppc.yandex.ru/etc/settings.json.test
	install -d $(DEST_CONF_TEST)/etc/apache2/
	tpage --define test=yes $(SVN_ROOT)/etc/frontend/apache2/ppc.yandex.ru.conf >$(DEST_CONF_TEST)/etc/apache2/ppc.yandex.ru.conf.test
	tpage --define test=yes $(SVN_ROOT)/etc/soap/apache2/soap.direct.yandex.ru.conf >$(DEST_CONF_TEST)/etc/apache2/soap.direct.yandex.ru.conf.test
	tpage --define test=yes $(SVN_ROOT)/etc/intapi/apache2/intapi.direct.yandex.ru.conf > $(DEST_CONF_TEST)/etc/apache2/intapi.direct.yandex.ru.conf.test

	install -d $(DEST_CONF_TEST)/etc/nginx/
	install -d $(DEST_CONF_TEST)/etc/nginx/sites-available
	tpage --define test=yes $(SVN_ROOT)/etc/soap/nginx/soap-direct-vhost.conf >$(DEST_CONF_TEST)/etc/nginx/sites-available/soap-direct-vhost.conf.test
	tpage --define test=yes $(SVN_ROOT)/etc/soap/nginx/soap-direct-accel.conf >$(DEST_CONF_TEST)/etc/nginx/soap-direct-accel.conf.test
	tpage --define test=yes --define ROOT_DIR=$(SVN_ROOT)/ $(SVN_ROOT)/etc/intapi/nginx/intapi-direct-vhost.conf >$(DEST_CONF_TEST)/etc/nginx/sites-available/intapi-direct-vhost.conf.test
	tpage --define test=yes $(SVN_ROOT)/etc/intapi/nginx/intapi-direct-accel.conf >$(DEST_CONF_TEST)/etc/nginx/intapi-direct-accel.conf.test
	tpage --define test=yes $(call GET_TT_DEFINED_VARS,Test) $(SVN_ROOT)/etc/frontend/nginx/direct-vhost.conf >$(DEST_CONF_TEST)/etc/nginx/sites-available/direct-vhost.conf.test
	tpage --define test=yes $(SVN_ROOT)/etc/frontend/nginx/direct-accel.conf >$(DEST_CONF_TEST)/etc/nginx/direct-accel.conf.test
	install -d $(DEST_CONF_TEST)/var/www/ppc.yandex.ru/data/soap-root/
	$(DEST_SRC)/var/www/ppc.yandex.ru/protected/prebuild/mk_api_wsdl.pl --testing --createall --base-path=$(DEST_CONF_TEST)/var/www/ppc.yandex.ru
	tpage --define zkhosts=$(ZKHOSTS_NP) $(SVN_ROOT)/etc/switchman.conf.tmpl > $(DEST_CONF_TEST)/etc/switchman.conf.test

	echo test > $(DEST_CONF_TEST)/etc/direct-environment

	# conf test2
	install -d $(DEST_CONF_TEST2)/var/www/ppc.yandex.ru/protected/
	install -d $(DEST_CONF_TEST2)/var/www/ppc.yandex.ru/perl/settings/
	install -T $(SVN_ROOT)/perl/settings/SettingsTest2.pm $(DEST_CONF_TEST2)/var/www/ppc.yandex.ru/perl/settings/SettingsLocal.pm
	install -d $(DEST_CONF_TEST2)/var/www/ppc.yandex.ru/etc/
	touch $(DEST_CONF_TEST)/var/www/ppc.yandex.ru/etc/settings.json.test2
	install -d $(DEST_CONF_TEST2)/etc/apache2/
	tpage --define test=yes $(SVN_ROOT)/etc/frontend/apache2/ppc.yandex.ru.conf >$(DEST_CONF_TEST2)/etc/apache2/ppc.yandex.ru.conf.test
	tpage --define test=yes $(SVN_ROOT)/etc/soap/apache2/soap.direct.yandex.ru.conf >$(DEST_CONF_TEST2)/etc/apache2/soap.direct.yandex.ru.conf.test
	tpage --define test=yes $(SVN_ROOT)/etc/intapi/apache2/intapi.direct.yandex.ru.conf > $(DEST_CONF_TEST2)/etc/apache2/intapi.direct.yandex.ru.conf.test

	install -d $(DEST_CONF_TEST2)/etc/nginx/
	install -d $(DEST_CONF_TEST2)/etc/nginx/sites-available
	tpage --define test=yes $(SVN_ROOT)/etc/soap/nginx/soap-direct-accel.conf >$(DEST_CONF_TEST2)/etc/nginx/soap-direct-accel.conf.test
	tpage --define test=yes $(SVN_ROOT)/etc/soap/nginx/soap-direct-vhost.conf >$(DEST_CONF_TEST2)/etc/nginx/sites-available/soap-direct-vhost.conf.test
	tpage --define test=yes $(SVN_ROOT)/etc/intapi/nginx/intapi-direct-accel.conf >$(DEST_CONF_TEST2)/etc/nginx/intapi-direct-accel.conf.test
	tpage --define test=yes --define ROOT_DIR=$(SVN_ROOT)/ $(SVN_ROOT)/etc/intapi/nginx/intapi-direct-vhost.conf >$(DEST_CONF_TEST2)/etc/nginx/sites-available/intapi-direct-vhost.conf.test
	tpage --define test=yes $(call GET_TT_DEFINED_VARS,Test2) $(SVN_ROOT)/etc/frontend/nginx/direct-vhost.conf >$(DEST_CONF_TEST2)/etc/nginx/sites-available/direct-vhost.conf.test
	tpage --define test=yes $(SVN_ROOT)/etc/frontend/nginx/direct-accel.conf >$(DEST_CONF_TEST2)/etc/nginx/direct-accel.conf.test
	install -d $(DEST_CONF_TEST2)/var/www/ppc.yandex.ru/data/soap-root/
	$(DEST_SRC)/var/www/ppc.yandex.ru/protected/prebuild/mk_api_wsdl.pl --testing --createall --base-path=$(DEST_CONF_TEST2)/var/www/ppc.yandex.ru
	tpage --define zkhosts=$(ZKHOSTS_NP) $(SVN_ROOT)/etc/switchman.conf.tmpl > $(DEST_CONF_TEST2)/etc/switchman.conf.test

	echo test2 > $(DEST_CONF_TEST2)/etc/direct-environment

	# conf dev
	install -d $(DEST_CONF_DEV)/etc/apache2/
	install -d $(DEST_CONF_DEV)/var/www/ppc.yandex.ru/protected/
	install -d $(DEST_CONF_DEV)/var/www/ppc.yandex.ru/perl/settings/
	install -T $(SVN_ROOT)/perl/settings/SettingsDevTest.pm $(DEST_CONF_DEV)/var/www/ppc.yandex.ru/perl/settings/SettingsLocal.pm
	tpage --define maindev=yes $(SVN_ROOT)/etc/soap/apache2/soap.direct.yandex.ru.conf >$(DEST_CONF_DEV)/etc/apache2/soap.direct.yandex.ru.conf.dev
	tpage --define maindev=yes $(SVN_ROOT)/etc/frontend/apache2/ppc.yandex.ru.conf >$(DEST_CONF_DEV)/etc/apache2/ppc.yandex.ru.conf.dev
	tpage --define maindev=yes $(SVN_ROOT)/etc/intapi/apache2/intapi.direct.yandex.ru.conf > $(DEST_CONF_DEV)/etc/apache2/intapi.direct.yandex.ru.conf.dev
	install -d $(DEST_CONF_DEV)/etc/nginx/sites-available/
	tpage --define dev=yes --define maindev=yes --define ppcdev=$(CURRENT_IP_PPCDEV) $(SVN_ROOT)/etc/frontend/nginx/direct-accel.conf >$(DEST_CONF_DEV)/etc/nginx/direct-accel.conf.dev
	tpage --define dev=yes --define maindev=yes $(call GET_TT_DEFINED_VARS,DevTest) --define ppcdev=$(CURRENT_IP_PPCDEV) $(SVN_ROOT)/etc/frontend/nginx/direct-vhost.conf >$(DEST_CONF_DEV)/etc/nginx/sites-available/direct-vhost.conf.dev
	tpage --define dev=yes --define maindev=yes $(SVN_ROOT)/etc/soap/nginx/soap-direct-accel.conf >$(DEST_CONF_DEV)/etc/nginx/soap-direct-accel.conf.dev
	tpage --define dev=yes --define maindev=yes $(SVN_ROOT)/etc/soap/nginx/soap-direct-vhost.conf >$(DEST_CONF_DEV)/etc/nginx/sites-available/soap-direct-vhost.conf.dev
	tpage --define dev=yes --define maindev=yes $(SVN_ROOT)/etc/intapi/nginx/intapi-direct-accel.conf >$(DEST_CONF_DEV)/etc/nginx/intapi-direct-accel.conf.dev
	tpage --define dev=yes --define maindev=yes --define ROOT_DIR=$(SVN_ROOT)/ $(SVN_ROOT)/etc/intapi/nginx/intapi-direct-vhost.conf >$(DEST_CONF_DEV)/etc/nginx/sites-available/intapi-direct-vhost.conf.dev
	tpage --define zkhosts=$(ZKHOSTS_NP) $(SVN_ROOT)/etc/switchman.conf.tmpl > $(DEST_CONF_DEV)/etc/switchman.conf.dev
	echo dev > $(DEST_CONF_DEV)/etc/direct-environment

	# conf sandbox
	install -d $(DEST_CONF_SANDBOX)/var/www/ppc.yandex.ru/protected/
	install -d $(DEST_CONF_SANDBOX)/var/www/ppc.yandex.ru/perl/settings/
	install -d $(DEST_CONF_SANDBOX)/etc/yandex/
	touch $(DEST_CONF_SANDBOX)/etc/yandex/environment.direct_sandbox
	install -T $(SVN_ROOT)/perl/settings/SettingsSandbox.pm $(DEST_CONF_SANDBOX)/var/www/ppc.yandex.ru/perl/settings/SettingsLocal.pm
	touch $(DEST_CONF_SANDBOX)/etc/settings.json.sandbox
	install -d $(DEST_CONF_SANDBOX)/etc/apache2/
	tpage --define sandbox=yes $(SVN_ROOT)/etc/soap/apache2/soap.direct.yandex.ru.conf >$(DEST_CONF_SANDBOX)/etc/apache2/soap.direct.yandex.ru.conf.sandbox

	install -d $(DEST_CONF_SANDBOX)/etc/nginx/
	install -d $(DEST_CONF_SANDBOX)/etc/nginx/sites-available/
	tpage --define sandbox=yes $(SVN_ROOT)/etc/soap/nginx/soap-direct-accel.conf >$(DEST_CONF_SANDBOX)/etc/nginx/soap-direct-accel.conf.sandbox
	tpage --define sandbox=yes $(SVN_ROOT)/etc/soap/nginx/soap-direct-vhost.conf >$(DEST_CONF_SANDBOX)/etc/nginx/sites-available/soap-direct-vhost.conf.sandbox
	install -d $(DEST_CONF_SANDBOX)/var/www/ppc.yandex.ru/data/soap-root/
	$(DEST_SRC)/var/www/ppc.yandex.ru/protected/prebuild/mk_api_wsdl.pl --sandbox --base-path=$(DEST_CONF_SANDBOX)/var/www/ppc.yandex.ru
	tpage --define zkhosts=$(ZKHOSTS) --define prefix=/direct/sandbox-switchman $(SVN_ROOT)/etc/switchman.conf.tmpl > $(DEST_CONF_SANDBOX)/etc/switchman.conf.sandbox

	# conf sandbox test
	install -d $(DEST_CONF_SANDBOX_TEST)/var/www/ppc.yandex.ru/protected/
	install -d $(DEST_CONF_SANDBOX_TEST)/var/www/ppc.yandex.ru/perl/settings/
	install -d $(DEST_CONF_SANDBOX_TEST)/etc/yandex/
	touch $(DEST_CONF_SANDBOX_TEST)/etc/yandex/environment.direct_sandbox
	install -T $(SVN_ROOT)/perl/settings/SettingsSandboxTest.pm $(DEST_CONF_SANDBOX_TEST)/var/www/ppc.yandex.ru/perl/settings/SettingsLocal.pm
	touch $(DEST_CONF_SANDBOX_TEST)/etc/settings.json.sandbox.test
	install -d $(DEST_CONF_SANDBOX_TEST)/etc/apache2/
	tpage --define sandbox=yes --define test=yes $(SVN_ROOT)/etc/soap/apache2/soap.direct.yandex.ru.conf >$(DEST_CONF_SANDBOX_TEST)/etc/apache2/soap.direct.yandex.ru.conf.sandbox.test
	tpage --define sandbox=yes --define test=yes $(SVN_ROOT)/etc/intapi/apache2/intapi.direct.yandex.ru.conf >$(DEST_CONF_SANDBOX_TEST)/etc/apache2/intapi.direct.yandex.ru.conf.sandbox.test
	install -d $(DEST_CONF_SANDBOX_TEST)/etc/nginx/
	install -d $(DEST_CONF_SANDBOX_TEST)/etc/nginx/sites-available/
	tpage --define sandbox=yes --define test=yes $(SVN_ROOT)/etc/soap/nginx/soap-direct-accel.conf >$(DEST_CONF_SANDBOX_TEST)/etc/nginx/soap-direct-accel.conf.sandbox.test
	tpage --define sandbox=yes --define test=yes $(SVN_ROOT)/etc/soap/nginx/soap-direct-vhost.conf >$(DEST_CONF_SANDBOX_TEST)/etc/nginx/sites-available/soap-direct-vhost.conf.sandbox.test
	install -d $(DEST_CONF_SANDBOX_TEST)/var/www/ppc.yandex.ru/data/soap-root/
	$(DEST_SRC)/var/www/ppc.yandex.ru/protected/prebuild/mk_api_wsdl.pl --sandbox --test --base-path=$(DEST_CONF_SANDBOX_TEST)/var/www/ppc.yandex.ru
	tpage --define sandbox=yes --define test=yes $(SVN_ROOT)/etc/intapi/nginx/intapi-direct-accel.conf >$(DEST_CONF_SANDBOX_TEST)/etc/nginx/intapi-direct-accel.conf.sandbox.test
	tpage --define sandbox=yes --define test=yes --define ROOT_DIR=$(SVN_ROOT)/ $(SVN_ROOT)/etc/intapi/nginx/intapi-direct-vhost.conf >$(DEST_CONF_SANDBOX_TEST)/etc/nginx/sites-available/intapi-direct-vhost.conf.sandbox.test
	tpage --define zkhosts=$(ZKHOSTS_NP) $(SVN_ROOT)/etc/switchman.conf.tmpl > $(DEST_CONF_SANDBOX_TEST)/etc/switchman.conf.sandbox.sandbox.test

	# conf sandbox test2
	install -d $(DEST_CONF_SANDBOX_TEST2)/var/www/ppc.yandex.ru/protected/
	install -d $(DEST_CONF_SANDBOX_TEST2)/var/www/ppc.yandex.ru/perl/settings/
	install -d $(DEST_CONF_SANDBOX_TEST2)/etc/
	install -T $(SVN_ROOT)/perl/settings/SettingsSandboxTest2.pm $(DEST_CONF_SANDBOX_TEST2)/var/www/ppc.yandex.ru/perl/settings/SettingsLocal.pm
	#touch $(DEST_CONF_SANDBOX_TEST2)/etc/settings.json.sandbox.test2
	install -d $(DEST_CONF_SANDBOX_TEST2)/etc/apache2/
	tpage --define sandbox=yes --define test=yes $(SVN_ROOT)/etc/soap/apache2/soap.direct.yandex.ru.conf >$(DEST_CONF_SANDBOX_TEST2)/etc/apache2/soap.direct.yandex.ru.conf.sandbox.test
	tpage --define sandbox=yes --define test=yes $(SVN_ROOT)/etc/intapi/apache2/intapi.direct.yandex.ru.conf >$(DEST_CONF_SANDBOX_TEST2)/etc/apache2/intapi.direct.yandex.ru.conf.sandbox.test
	install -d $(DEST_CONF_SANDBOX_TEST2)/etc/nginx/
	install -d $(DEST_CONF_SANDBOX_TEST2)/etc/nginx/sites-available/
	tpage --define sandbox=yes --define test=yes $(SVN_ROOT)/etc/soap/nginx/soap-direct-accel.conf >$(DEST_CONF_SANDBOX_TEST2)/etc/nginx/soap-direct-accel.conf.sandbox.test
	tpage --define sandbox=yes --define test=yes $(SVN_ROOT)/etc/soap/nginx/soap-direct-vhost.conf >$(DEST_CONF_SANDBOX_TEST2)/etc/nginx/sites-available/soap-direct-vhost.conf.sandbox.test
	install -d $(DEST_CONF_SANDBOX_TEST2)/var/www/ppc.yandex.ru/data/soap-root/
	$(DEST_SRC)/var/www/ppc.yandex.ru/protected/prebuild/mk_api_wsdl.pl --sandbox --test --base-path=$(DEST_CONF_SANDBOX_TEST2)/var/www/ppc.yandex.ru
	tpage --define sandbox=yes --define test=yes $(SVN_ROOT)/etc/intapi/nginx/intapi-direct-accel.conf >$(DEST_CONF_SANDBOX_TEST2)/etc/nginx/intapi-direct-accel.conf.sandbox.test
	tpage --define sandbox=yes --define test=yes --define ROOT_DIR=$(SVN_ROOT)/ $(SVN_ROOT)/etc/intapi/nginx/intapi-direct-vhost.conf >$(DEST_CONF_SANDBOX_TEST2)/etc/nginx/sites-available/intapi-direct-vhost.conf.sandbox.test
	tpage --define zkhosts=$(ZKHOSTS_NP) $(SVN_ROOT)/etc/switchman.conf.tmpl > $(DEST_CONF_SANDBOX_TEST2)/etc/switchman.conf.sandbox.sandbox.test

	# sandbox backend - mysql and zookeeper
	install -d $(DEST_CONF_SANDBOX_DB)/etc/zookeeper
	install -T $(SVN_ROOT)/etc/zookeeper.conf.test $(DEST_CONF_SANDBOX_DB)/etc/zookeeper/ppc.cfg.sandbox.db

install_scripts: install_src
	# scripts-sandbox
	install -d ${DEST_SCRIPTS_SANDBOX}/etc/downtime-monitor.d/
	echo 'localhost' >> $(DEST_SCRIPTS_SANDBOX)/etc/downtime-monitor.d/yandex-direct-scripts-sandbox

# на самом деле это конфиги для yandex-du-remotelog-mounts, а не для glusterfs. просто так называются (sic!)
install_glusterfs_configs:
	$(SVN_ROOT)/protected/maintenance/generate-glusterfs-config.pl --package yandex-direct \
		--outfile $(DEST_SRC)/etc/gluster-automount.d/yandex-direct.conf
	$(SVN_ROOT)/protected/maintenance/generate-glusterfs-config.pl --package yandex-direct-fake-services \
		--outfile $(DEST_FAKE_SERVICES)/etc/gluster-automount.d/yandex-direct-fake-services.conf
	$(SVN_ROOT)/protected/maintenance/generate-glusterfs-config.pl --package yandex-direct-frontend \
		--outfile $(DEST_FRONTEND)/etc/gluster-automount.d/yandex-direct-frontend.conf
	$(SVN_ROOT)/protected/maintenance/generate-glusterfs-config.pl --package yandex-direct-intapi \
		--outfile $(DEST_INTAPI)/etc/gluster-automount.d/yandex-direct-intapi.conf
	$(SVN_ROOT)/protected/maintenance/generate-glusterfs-config.pl --package yandex-direct-soap \
		--outfile $(DEST_SOAP)/etc/gluster-automount.d/yandex-direct-soap.conf

install_js_templater: install_init
	tpage $(SVN_ROOT)/etc/frontend/sv/js-templater/run >$(DEST_JS_TEMPLATER)/etc/sv/js-templater/run
	chmod 0755 $(DEST_JS_TEMPLATER)/etc/sv/js-templater/run
	tpage $(SVN_ROOT)/etc/frontend/sv/js-templater/check >$(DEST_JS_TEMPLATER)/etc/sv/js-templater/check
	chmod 0755 $(DEST_JS_TEMPLATER)/etc/sv/js-templater/check
	tpage $(SVN_ROOT)/etc/frontend/sv/js-templater/control/t >$(DEST_JS_TEMPLATER)/etc/sv/js-templater/control/t
	chmod 0755 $(DEST_JS_TEMPLATER)/etc/sv/js-templater/control/t
	tpage $(SVN_ROOT)/etc/frontend/js-templater/conf.sh >$(DEST_JS_TEMPLATER)/etc/js-templater/conf.sh
	install -d $(DEST_JS_TEMPLATER)/usr/share/graphite-client/checks_available
	install -T $(SVN_ROOT)/etc/graphite-client-checks/js_templater_7100.sh $(DEST_JS_TEMPLATER)/usr/share/graphite-client/checks_available/js_templater_7100.sh
	install -T -m 0644 $(SVN_ROOT)/etc/frontend/logrotate.d/js-templater $(DEST_JS_TEMPLATER)/etc/logrotate.d/js-templater

install_tvmtool: install_init
	tpage --define ROOT_DIR=$(SVN_ROOT)/ $(SVN_ROOT)/etc/intapi/tvmtool/generate_conf.sh.tmpl >$(DEST_TVMTOOL)/etc/direct-tvmtool/generate_conf.sh
	chmod 0755 $(DEST_TVMTOOL)/etc/direct-tvmtool/generate_conf.sh
	install -T -m 755 $(SVN_ROOT)/etc/intapi/sv/direct-tvmtool/run $(DEST_TVMTOOL)/etc/sv/direct-tvmtool/run
	install -T -m 755 $(SVN_ROOT)/etc/intapi/sv/direct-tvmtool/log/run $(DEST_TVMTOOL)/etc/sv/direct-tvmtool/log/run

install: install_init install_src install_bem install_lego \
    install_build_crontabs install_build_juggler_playbook \
    install_build_js install_build_static \
    install_zookeeper install_memcached \
    install_web_services install_confs install_scripts \
    install_js_templater \
    install_tvmtool \
    install_monitoring \
    install_glusterfs_configs

	# таргет разбит на подтаргеты для упрощения и распараллеливания сборки
	# deploy
	rsync -a --exclude=".svn" $(SVN_ROOT)/etc/deploy/ $(DEST)/yandex-direct-deploy/etc/

	# dpkg-monitor
	# Директ, без Коммандера
	mk-dpkg-monitor-files $(DEST)/yandex-direct-dpkg-monitor-configs yandex-direct \
		-d email=direct-updates@yandex-team.ru \
		-d packages_prefixes=yandex-direct \
		-d packages_prefixes_ignore=yandex-direct-commander \
		-d main_package=yandex-direct \
		-d url='http://direct-dev.yandex-team.ru/versionica/update'
	# Директ на ТС -- дополнительно на другой адрес
	mk-dpkg-monitor-files $(DEST)/yandex-direct-conf-test yandex-direct-conf-test \
		-d email=direct-testing@yandex-team.ru \
		-d packages_prefixes=yandex-direct \
		-d main_package=yandex-direct \
		-d url='http://direct-dev.yandex-team.ru/versionica/update'
	# Коммандер
	mk-dpkg-monitor-files $(DEST)/yandex-direct-dpkg-monitor-configs yandex-direct-commander \
		-d email=direct-updates@yandex-team.ru \
		-d packages_prefixes=yandex-direct-commander \
		-d main_package=yandex-direct-commander-build-production \
		-d url='http://direct-dev.yandex-team.ru/versionica/update' \
		-d title='commander'
	# direct-utils
	mk-dpkg-monitor-files $(DEST)/yandex-direct-dpkg-monitor-configs yandex-du \
		-d email=direct-updates@yandex-team.ru \
		-d packages_prefixes=yandex-du- \
		-d url='http://direct-dev.yandex-team.ru/versionica/update' \
		-d title='direct-utils'
	# вообще все
	mk-dpkg-monitor-files $(DEST)/yandex-direct-dpkg-monitor-configs all \
		-d email=direct-updates@yandex-team.ru \
		-d packages_prefixes_ignore=yandex-direct,yandex-du- \
		-d url='http://direct-dev.yandex-team.ru/versionica/update' \
		-d title='except Direct'

	# dbconfig-monitor
	mk-dbconfig-monitor-files $(DEST_SRC) yandex-direct \
		-d email=direct-updates@yandex-team.ru \
		-d email_from=direct-updates@yandex-team.ru \
		-d target='/etc/yandex-direct/db-config.json' \
		-d url='http://direct-dev.yandex-team.ru/versionica/update/db' \
		-d title='Direct'

	# switchman config
	tpage --define zkhosts=$(ZKHOSTS) --define termination_timeout=600 --define resources_wait_timeout=7200 $(SVN_ROOT)/etc/switchman.conf.tmpl > $(DEST_SRC)/etc/switchman.conf

	dh_fixperms -Xyandex-direct-zookeeper

	# src perms
	install -d $(DEST_SRC)/var/www/ppc.yandex.ru/protected/run
	install -d $(DEST_SRC)/var/www/ppc.yandex.ru/protected/logs
	install -d $(DEST_SRC)/var/www/ppc.yandex.ru/protected/mirrors-data
	chown -R ppc:ppc debian/*/var/www/ppc.yandex.ru debian/*/opt/ppc-data debian/*/var/www/ppc.yandex.ru/protected/mirrors-data
	chmod 0777 $(DEST_SRC)/var/www/ppc.yandex.ru/protected/logs
	chmod g+s $(DEST_SRC)/var/www/ppc.yandex.ru/protected/logs

	# папка statbox также создается из https://a.yandex-team.ru/arc/trunk/arcadia/direct/packages/yandex-direct-send-logs-to-logbroker
	# также есть исправление прав в postinst пакета
	install -d $(DEST_SRC)/opt/ppc-data/export/statbox
	chmod -R 0777 $(DEST_SRC)/opt/ppc-data/export
	chmod g+s $(DEST_SRC)/opt/ppc-data/export
	chown -R ppc:ppc $(DEST_SRC)/opt/ppc-data/export

	# version file for auto restarting scripts
	install -T debian/version $(DEST_SRC)/var/www/ppc.yandex.ru/protected/yandex-direct.version.new

	# frontend perms
	chown :adm $(DEST_FRONTEND)/var/log/ppc.yandex.ru $(DEST_FRONTEND)/var/log/direct-accel
	chmod g+s $(DEST_FRONTEND)/var/log/ppc.yandex.ru $(DEST_FRONTEND)/var/log/direct-accel
	# /var/log/ppc.yandex.ru также создается из https://a.yandex-team.ru/arc/trunk/arcadia/direct/packages/yandex-direct-send-logs-to-logbroker

	# soap perms
	chmod 0777 ${DEST_SOAP}/opt/ppc-data/soap-locks
	chown :adm ${DEST_SOAP}/var/log/soap.direct.yandex.ru ${DEST_SOAP}/var/log/soap-direct-accel
	chmod g+s ${DEST_SOAP}/var/log/soap.direct.yandex.ru ${DEST_SOAP}/var/log/soap-direct-accel
	chown -R ppc:www-data ${DEST_SOAP}/opt/ppc-data/soap-files/wordstat ${DEST_SOAP}/opt/ppc-data/soap-files/forecast
	chmod -R 0777 ${DEST_SOAP}/opt/ppc-data/soap-files/wordstat ${DEST_SOAP}/opt/ppc-data/soap-files/forecast

	# script temp file perms
	install -o ppc -g ppc -m 775 -d ${DEST_SRC}/opt/ppc-data/api-reports

	# dev-scripts perms
	chown -R ppc:ppc $(DEST_DEV_SCRIPTS)/opt/ppc-data

	dh_perl
	dh_environment
	#dh_makeshlibs
	dh_installdeb
	#dh_shlibdeps
	dh_gencontrol -- -v`cat debian/version`
	dh_md5sums
	dh_builddeb -- -z3

.PHONY: build clean install
