#!/usr/bin/make -f

BINDIR=$(DESTDIR)/usr/bin
LIBEXECDIR=$(DESTDIR)/usr/libexec/mythtv-status
MANDIR=$(DESTDIR)/usr/man
SYSTEMDDIR=$(DESTDIR)/lib/systemd/system

package=mythtv-status
releases=sid
release=sid

# These variables are used by Andrew in a git checkout for packaging and releasing.
ifneq ("$(wildcard .git)", "")
build=dpkg-buildpackage -rfakeroot -i'(.git|.gitignore|testing)*' -I.git -I.gitignore -Itesting -tc -kC603FC4E600F1CECD1C8D97C4B53D931E4D3E863 --changes-option=-S --changes-option=-sa
ifeq ($(version),)
version=$(shell git tag -l | grep '^[0-9]' | sort -t"." -k 1,1 -k 2,2 -k 3,3 -n | tail -1)
endif
deb_version=$(shell git tag -l | grep ^debian-$(release)-[[:digit:]] | sed 's/debian-$(release)-//' | sort -t"." -k 1,1 -k 2,2 -k 3,3 -n | tail -1 | sed 's/@/~/')

deb=$(package)_$(deb_version)_all.deb
orig_tarball=../$(package)_$(version).orig.tar.gz
tarball=../build/tarball/$(package)-$(version).tar.gz
tarball_dir=../$(package)_tarballs

DEBS=$(foreach release, $(releases), ../build/$(release)/$(deb))

RELEASE_FILES=$(orig_tarball) ../build/tarball/mythtv-status-${version}.tar.gz $(DEBS)
endif

TEST_VERBOSE=0
TEST_FILES=t/*.t

all: test
dist: test release

release: $(RELEASE_FILES)

$(orig_tarball): $(tarball)
	@rm -f $@
	@ln -s `basename \`pwd\``/$< $@
	@ln -sf `basename \`pwd\``/$<.asc $@.asc

$(tarball):
	@mkdir -p $(@D)
	@git archive --format=tar --prefix=$(package)-$(version)/ $(version) `git ls-tree --name-only $(version) | egrep -v "(.gitignore|debian|testing)"` | gzip > $(tarball)
	@gpg -sb --armour $(tarball)

../build/$(release)/$(deb): $(orig_tarball)
	@echo Building $(release)
	@ssh -t build-$(release)-amd64 "cd `pwd`; $(build)"
	@ssh build-$(release)-amd64 "cd `pwd`/..; /usr/bin/lintian -i -I $(package)_$(version)*.changes" || true
	#@ssh build-$(release)-amd64 "cd `pwd`/..; /usr/bin/linda -i $(package)_$(version)*.changes" || true
	@mkdir -p ../build/$(release)
	@cp ../$(deb)  \
		../$(package)_$(deb_version)_*.changes \
		../$(package)_$(deb_version)_*.buildinfo \
		../$(package)_$(deb_version).dsc \
		../$(package)_$(version).orig.tar.?z \
		../$(package)_$(deb_version).debian.tar.?z \
		../build/$(release)

publish: $(RELEASE_FILES)
	for release in $(releases); do reprepro includedsc $$release ../build/$$release/$(package)_$(deb_version).dsc; done
	for release in $(releases); do reprepro includedeb $$release ../build/$$release/$(package)_$(deb_version)_all.deb; done
	@cp $(tarball) $(tarball_dir)
	@chmod o+r $(tarball_dir)/*-$(version).*
	@ln -sf `basename $(tarball)` $(tarball_dir)/$(package)-latest.tar.gz

upload: $(RELEASE_FILES)
	for release in $(releases); do cd ../build/$$release; dput $(package)_$(deb_version)*.changes; done

install:
	install -d $(BINDIR)
	install -d $(LIBEXECDIR)
	install -d $(MANDIR)/man1
	install -d $(MANDIR)/man8
	install -d $(SYSTEMDDIR)
	install -m 775 bin/mythtv-status $(BINDIR)
	install -m 775 bin/mythtv_recording_now $(BINDIR)
	install -m 775 bin/mythtv_recording_soon $(BINDIR)
	install -m 775 bin/health-check $(LIBEXECDIR)
	pod2man bin/mythtv-status > $(MANDIR)/man1/mythtv-status.1
	install -m 644 man/mythtv-update-motd.8 $(MANDIR)/man8
	install -m 644 man/mythtv_recording_now.1 $(MANDIR)/man1
	install -m 644 man/mythtv_recording_soon.1 $(MANDIR)/man1
	install -m 644 systemd/* $(SYSTEMDDIR)

test:
	PERL_DL_NONLAZY=1 perl "-MExtUtils::Command::MM" "-e" "test_harness($(TEST_VERBOSE))" $(TEST_FILES)

clean:
	@rm -rf build

clean_pkg:
	@rm -f ../$(package)*.changes ../$(package)*.dsc ../$(package)*.tar.gz ../$(package)*.deb

.PHONY: release clean install test dist
