#!/usr/bin/make -f
.NOTPARALLEL:
export DH_VERBOSE=1
export DH_OPTIONS

export BUILD_ROOT=$(CURDIR)/debian/tmp
export OBS_VERSION=2.10.22
export CURRENT_USER=$(shell id -u)

%:
	dh $@ --with=systemd

override_dh_auto_build:
	# We don't need our docker files in our packages
	rm -Rf src/api/docker-files
	# drop build script, we require the installed one from own package
	rm -rf src/backend/build
	find -name .keep -o -name .gitignore | xargs rm -rf
	# Drop Gemfile.lock
	#rm -f src/api/Gemfile.lock
	cd src/api && bundle --local --path /usr/lib/obs-api/
	make

override_dh_auto_install:

override_dh_install:
	perl -p -i -e 's/^APACHE_USER=.*/APACHE_USER=www-data/' Makefile.include
	perl -p -i -e 's/^APACHE_GROUP=.*/APACHE_GROUP=www-data/' Makefile.include
	DESTDIR=$(BUILD_ROOT) make install
	rm -f $(BUILD_ROOT)/srv/www/obs/api/vendor/cache/*
	if test -f ../SOURCES/open-build-service.obsinfo; then \
		sed -n -e 's/commit: \(.\+\)/\1/p' ../SOURCES/open-build-service.obsinfo > $(BUILD_ROOT)/srv/www/obs/api/last_deploy; \
	else \
		echo "" > %{buildroot}/srv/www/obs/api/last_deploy; \
	fi

	# drop testcases for now
	#rm -rf $(BUILD_ROOT)/srv/www/obs/api/spec

	# only config for CI
	rm -f $(BUILD_ROOT)/srv/www/obs/api/config/brakeman.ignore
	if ! test -L $(BUILD_ROOT)/usr/lib/obs/server/build; then \
		echo "/usr/lib/obs/server/build is not a symlink!": \
		exit 1; \
	fi
	cd $(BUILD_ROOT)/srv/www/obs/api/public/assets/webui2/ && ln -sf application-*.js application.js
	cd $(BUILD_ROOT)/srv/www/obs/api/public/assets/webui2/ && ln -sf webui2-*.css webui2.css

	# Drop useless files.
	rm -f debian/tmp/etc/apache2/vhosts.d/obs.conf
	rm -f debian/tmp/etc/init.d/obsapisetup
	rm -f debian/tmp/usr/share/doc/packages/obs-devel/README.devel

	dh_installdebconf

	# List files for easy debug during OBS build
	find debian/tmp

	# Replace #!/usr/bin/perl to #!/usr/bin/perl
	grep -rl '/usr/bin/env perl' debian/ | xargs sed -i 's#/usr/bin/env perl#/usr/bin/perl#'

	# OBS-SERVER
	mkdir -p debian/obs-server/etc/cron.d/
	mkdir -p debian/obs-server/usr/lib/obs
	mkdir -p debian/obs-server/usr/bin/
	mkdir -p debian/obs-server/usr/sbin/
	mkdir -p debian/obs-server/etc/slp.reg.d/
	mkdir -p debian/obs-server/etc/logrotate.d/
	mkdir -p debian/obs-server/srv/
	mkdir -p debian/obs-server/lib/systemd/system
	#cp debian/tmp/usr/lib/obs/server/BSConfig.pm.template debian/obs-server/etc/obs/BSConfig.pm
	#perl -p -e 's/^our \$$clouduploadserver = (.*)/#our \$$clouduploadserver = \1/' debian/obs-server/etc/obs/BSConfig.pm
	cp debian/tmp/usr/lib/obs/server/BSConfig.pm.template debian/tmp/usr/lib/obs/server/BSConfig.pm
	perl -p -e 's/^our \$$clouduploadserver = (.*)/#our \$$clouduploadserver = \1/' debian/tmp/usr/lib/obs/server/BSConfig.pm
	mv debian/tmp/etc/cron.d/cleanup_scm_cache debian/obs-server/etc/cron.d/cleanup_scm_cache
	mv debian/tmp/usr/lib/obs/server debian/obs-server/usr/lib/obs/
	mv debian/tmp/usr/lib/obs/tests debian/obs-server/usr/lib/obs/
	mv debian/tmp/usr/sbin/* debian/obs-server/usr/sbin/
	# Remove unused "rc" files on Ubuntu / Debian
	rm -f debian/obs-server/usr/sbin/rcobs*
	# Use the copy of rc.status provided here as it does not exists on Ubuntu / Debian
	sed -i -e 's@/etc/rc.status@/etc/obs/rc.status@g' debian/obs-server/usr/sbin/*
	sed -i -e 's@/etc/sysconfig/@/etc/default/@g' debian/obs-server/usr/sbin/*
	mv debian/tmp/etc/slp.reg.d/* debian/obs-server/etc/slp.reg.d/
	mv debian/tmp/etc/logrotate.d/obs-source_service debian/obs-server/etc/logrotate.d/
	mv debian/tmp/etc/logrotate.d/obs-server debian/obs-server/etc/logrotate.d/
	mv debian/tmp/usr/bin/obs_productconvert debian/obs-server/usr/bin/
	mv debian/tmp/srv/obs/ debian/obs-server/srv/
	# Clean up "extra" license
	rm -f debian/obs-server/usr/lib/obs/server/License
	# Fix Mark scripts as executable until upstream fixes
	chmod a+x debian/obs-server/usr/lib/obs/tests/appliance/*t*
	for srv in deltastore repserver srcserver dispatcher warden dodup publisher service signer ; do \
		cp dist/systemd/obs$${srv}.service debian/obs-server/lib/systemd/system/ ; \
	done
	for srv in getbinariesproxy notifyforward redis scheduler servicedispatch ; do \
		cp dist/systemd/obs$${srv}.service  debian/obs-server/lib/systemd/system/ ; \
	done

	# OBS-WORKER
	mkdir -p debian/obs-worker/usr/sbin/
	mv debian/obs-server/usr/sbin/obsworker debian/obs-worker/usr/sbin
	mkdir -p debian/obs-worker/lib/systemd/system/
	cp dist/systemd/obsworker.service debian/obs-worker/lib/systemd/system/
	cp debian/systemd/obsworker-hugepages.service debian/obs-worker/lib/systemd/system/
	cp debian/obsworker-hugepages.sh debian/obs-worker/usr/sbin/

	# OBS-API
	mkdir -p debian/obs-api/etc/logrotate.d/
	mkdir -p debian/obs-api/usr/share/dbconfig-common/data/obs-api/install/
	touch debian/obs-api/usr/share/dbconfig-common/data/obs-api/install/mysql
	# Move config files under /etc/obs/api/config/. And links with dh_link.
	mv debian/tmp/srv/www/obs/api/config/options.yml.example \
			debian/obs-api/etc/obs/api/config/options.yml
	mv debian/tmp/srv/www/obs/api/config/thinking_sphinx.yml.example \
			debian/obs-api/etc/obs/api/config/thinking_sphinx.yml
	# Remove log and tmp and create links under /var with dh_link.
	rm -rf debian/tmp/srv/www/obs/api/log
	rm -rf debian/tmp/srv/www/obs/api/tmp
	# Rename dh_install installed web service config files.
	# (new default since OBS 2.3)
	mkdir -p debian/obs-api/etc/apache2/sites-available/
	cp debian/obs-apache2.conf debian/obs-api/etc/apache2/sites-available/obs.conf
	mv debian/tmp/etc/logrotate.d/obs-api debian/obs-api/etc/logrotate.d/
	mv debian/tmp/srv debian/obs-api/
	rm -f debian/tmp/srv/www/obs/api/config/options.yml debian/obs-api/srv/www/obs/api/config/options.yml
	rm -f debian/tmp/srv/www/obs/api/config/thinking_sphinx.yml debian/obs-api/srv/www/obs/api/config/thinking_sphinx.yml
	chmod a-x debian/obs-api/srv/www/obs/api/script/update_bento.sh
	chmod a-x debian/obs-api/srv/www/obs/api/Rakefile
	# Remove useless Gemfile.lock
	#rm -f debian/obs-api/srv/www/obs/api/Gemfile.lock
	# Clean up vcs control file
	find debian/obs-api -name '.gitignore' -type f | xargs rm -f
	# turn duplicates into hard links
	fdupes debian/obs-api/srv/www/obs/
	mkdir -p debian/obs-api/lib/systemd/system
	cp debian/systemd/obsapi* debian/obs-api/lib/systemd/system/
	cp debian/systemd/obs-sphinx.service debian/obs-api/lib/systemd/system/

	rm -Rf debian/tmp/usr/lib/systemd

	# OBS-COMMON
	mkdir -p debian/obs-common/etc/obs/
	mkdir -p debian/obs-common/usr/sbin/
	mkdir -p debian/obs-common/lib/systemd/system/
	mkdir -p debian/obs-common/etc/default
	mkdir -p debian/obs-common/usr/lib/obs/server
	# Rename sysconfig file
	cp dist/sysconfig.obs-server debian/obs-common/etc/default/obs-server
	cp debian/rc.status debian/obs-common/etc/obs/
	cp debian/systemd/obsstoragesetup.service debian/obs-common/lib/systemd/system/
	mv debian/obs-server/usr/sbin/*obsstoragesetup debian/obs-common/usr/sbin/
	mv debian/obs-server/usr/lib/obs/server/setup-appliance.sh debian/obs-common/usr/lib/obs/server/setup-appliance.sh

	# OBS-CLOUD-UPLOADER
	mkdir -p debian/obs-cloud-uploader/etc/obs/cloudupload/.aws/
	mkdir -p debian/obs-cloud-uploader/usr/lib/obs/server/
	mv debian/obs-server/usr/lib/obs/server/bs_cloudupload* debian/obs-cloud-uploader/usr/lib/obs/server/

	dh_missing --list-missing

	# Debian pkg run tests before dh_install, do it after
	#
	# check installed backend
	cd debian/obs-server/usr/lib/obs/server/ && rm -rf build
	cd debian/obs-server/usr/lib/obs/server/ && ln -sf /usr/lib/build build
	# run in build environment
	cd src/backend && rm -rf build
	cd src/backend && ln -sf /usr/lib/build build
	
	cd debian/obs-server/usr/lib/obs/server/ && for i in bs_*; do \
		perl -wc "$${i}" ; \
	done
	cd debian/obs-server/usr/lib/obs/server/ && bash $(CURDIR)/src/backend/testdata/test_dispatcher
	make -C src/backend test
	# API tests are disabled cause it fails in OBS (when the same archive works perfectly with dpkg-buildpackage in Focal ...)
	#make -C src/api test
	DESTDIR=$(CURDIR)/debian/obs-server make -C dist test
	#rm -f debian/obs-server/usr/lib/obs/server/BSConfig.pm

override_dh_auto_test:

override_dh_systemd_enable:
	dh_systemd_enable -p obs-server \
		obsdeltastore.service \
		obsrepserver.service \
		obssrcserver.service \
		obsdispatcher.service \
		obswarden.service \
		obsdodup.service \
		obspublisher.service \
		obsservice.service \
		obsservicedispatch.service \
		obssigner.service
	dh_systemd_enable -p obs-api \
		obsapi.target \
		obsapi-clockwork.service \
		obsapi-delayedjob-queue-consistency_check.service \
		obsapi-delayedjob-queue-default.service \
		obsapi-delayedjob-queue-staging.service \
		obsapi-delayedjob-queue-issuetracking.service \
		obsapi-delayedjob-queue-mailers.service \
		obsapi-delayedjob-queue-project_log_rotate.service \
		obsapi-delayedjob-queue-releasetracking.service \
		obs-sphinx.service
	dh_systemd_enable -p obs-worker \
		obsworker-hugepages.service

override_dh_systemd_start:
	dh_systemd_start -p obs-server --restart-after-upgrade --no-start \
		obsdeltastore.service \
		obsrepserver.service \
		obssrcserver.service \
		obsdispatcher.service \
		obswarden.service \
		obsdodup.service \
		obspublisher.service \
		obsservice.service \
		obsservicedispatch.service \
		obssigner.service
	dh_systemd_start -p obs-api --restart-after-upgrade --no-start \
		obsapi.target \
		obsapi-clockwork.service \
		obsapi-delayedjob-queue-consistency_check.service \
		obsapi-delayedjob-queue-default.service \
		obsapi-delayedjob-queue-staging.service \
		obsapi-delayedjob-queue-issuetracking.service \
		obsapi-delayedjob-queue-mailers.service \
		obsapi-delayedjob-queue-project_log_rotate.service \
		obsapi-delayedjob-queue-releasetracking.service \
		obs-sphinx.service
	dh_systemd_start -p obs-worker --restart-after-upgrade --no-start \
		obsworker-hugepages.service
