#!/usr/bin/make -f
# -*- mode: makefile; coding: utf-8 -*-
# Copyright © 2010-2017, Jonas Smedegaard <dr@jones.dk>
# Description: Debian packaging script for Radicale
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; either version 3, or (at your option)
# any later version.
#
# This program is distributed in the hope that it will be useful, but
# WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
# General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program.  If not, see <http://www.gnu.org/licenses/>.

include /usr/share/cdbs/1/class/python-distutils.mk
include /usr/share/cdbs/1/rules/debhelper.mk

pkg = radicale
pkg-lib = python3-radicale

# workaround: python-distutils.mk by default adds unusual option -a
DEB_PYTHON_CLEAN_ARGS =

# Avoid unneeded build-dependency on python-dev
CDBS_BUILD_DEPENDS_class_python-distutils_python =

# Needed for upstream build/testsuite
bdeps = python3-setuptools
bdeps-test = python3-pytest

# Needed by upstream build/testsuite and (always/seldom) at runtime
deps-lib = python3-vobject (>= 0.9.5), python3-atomicwrites
deps-lib +=, python3-pkg-resources
deps-test-suggest = python3-passlib, python3-bcrypt

# Needed (always/often/seldom) at runtime
depends = python3, adduser
recommends = ssl-cert
suggests = apache2-utils

CDBS_BUILD_DEPENDS +=, $(bdeps), $(deps-lib), $(bdeps-test)
CDBS_BUILD_DEPENDS +=, $(deps-lib-recommend), $(deps-test-suggest)
CDBS_DEPENDS_$(pkg) = $(depends)
CDBS_DEPENDS_$(pkg-lib) = $(deps-lib)
CDBS_RECOMMENDS_$(pkg) = $(recommends)
CDBS_SUGGESTS_$(pkg) = $(deps-test-suggest), $(suggests)

# check upstream testsuite
ifeq (,$(findstring nocheck,$(DEB_BUILD_OPTIONS)))
build/python3-radicale build/radicale:: debian/stamp-pytest
debian/stamp-pytest:
	HOME="$(CURDIR)" py.test-3
	rm -rf .config
	touch $@
clean::
	rm -f debian/stamp-pytest
endif

# generate manpage based on --help option of script itself
#  * TODO: Drop PYTHONPATH wildcard when cdbs 0.4.131 is in oldstable
CDBS_BUILD_DEPENDS +=, help2man
manpages = debian/radicale.1
DEB_INSTALL_MANPAGES_radicale = $(manpages)
common-binary-indep:: $(manpages)
$(manpages): debian/%.1: bin/% install/python3-radicale
	export PYTHONPATH="$(cdbs_python_destdir)/usr/lib/python3/dist-packages/"; \
	  help2man \
		--name="a simple calendar server" \
		--version-string="$(DEB_NOEPOCH_VERSION)" \
		--no-info \
		--output=$@ \
		$(cdbs_python_destdir)/usr/$< \
		|| { $(cdbs_python_destdir)/usr/$< --help; false; }
	find "$(cdbs_python_destdir)/usr/lib" -name '*.pyc' -delete
	find "$(cdbs_python_destdir)/usr/lib" -type d -empty -delete
clean::
	rm -f $(manpages)
	rm -rf build/

# Ensure proper hash-bang in Python script (Python Policy 0.9 §3.1)
binary-fixup/radicale::
	egrep -r -l -Z '^#! ?/usr/bin/(env )?python[[:print:]]*$$' \
		debian/$(cdbs_curpkg)/usr/bin/* \
		debian/$(cdbs_curpkg)/usr/share/radicale/* \
		| xargs -r -0 perl -pi -e 's,^#! ?/usr/bin/(env )?python[[:print:]]*$$,#!/usr/bin/python$(or $(cdbs_python3_nondefault_version),3),'

# fix unset execution bit on FCGI and WSGI scripts
binary-fixup/radicale::
	chmod -x \
		debian/$(cdbs_curpkg)/usr/share/radicale/radicale.fcgi \
		debian/$(cdbs_curpkg)/usr/share/radicale/radicale.wsgi

clean::
	rm -rf Radicale.egg-info
	rm -rf .eggs
