#!/usr/bin/make -f
# -*- makefile -*-

include /usr/share/python/python.mk

export NO_PKG_MANGLE=1
export PYTHONWARNINGS=d
export PYTHONHASHSEED=random
export http_proxy=http://127.0.0.1:9/

locales = $(notdir $(patsubst %/LC_MESSAGES,%,$(wildcard sphinx/locale/*/LC_MESSAGES)))
scripts = sphinx-apidoc sphinx-autogen sphinx-build sphinx-quickstart

debroot = debian/tmp/
py2_libdir = $(call py_libdir,$(shell pyversions -d))
py3_libdir = $(call py_libdir,$(shell py3versions -d))
javascript_path = /usr/share/javascript/sphinxdoc/1.0/

.PHONY: clean
clean:
	dh_clean
	find . -name '*.py[co]' -delete
	rm -rf build tests/build
	rm -f $(basename $(wildcard debian/*.in))
	rm -f sphinx/locale/*/LC_MESSAGES/sphinx.js
	rm -f sphinx/locale/.DS_Store
	rm -rf sphinx/locale/.tx
	rm -f Sphinx.egg-info/SOURCES.txt Sphinx.egg-info/*-e
	rm -f sphinx/texinputs/needspace.sty

.PHONY: build build-arch build-indep
build build-indep: build-stamp

sphinx/themes/basic/static/%.js:
	ln -sf /usr/share/javascript/$(*)/$(*).js $(@)

build/javascript-stamp: $(addprefix sphinx/themes/basic/static/,jquery.js underscore.js)
	echo $(^) | xargs -n1 | xargs -t -I {} [ -L {} ]
	mkdir -p $(dir $@)
	touch $(@)

build-stamp: sphinx/cmd/build.py build/javascript-stamp
ifeq "$(filter nodoc,$(DEB_BUILD_OPTIONS))" ""
	PYTHONPATH=$(CURDIR) python3 ./sphinx/cmd/build.py -T doc build/html/
	rm -f build/html/_static/jquery-*.js build/html/_static/underscore-*.js
	find build/html/ -name '*.txt' -or -name '*.html' | xargs -L1 sed -i \
		's!http://docutils.sourceforge.net/docs/!file:///usr/share/doc/docutils-doc/docs/!g'
	rm -rf build/man
	cp -rl build/html build/man
	PYTHONPATH=$(CURDIR) python3 ./sphinx/cmd/build.py -T -b man doc build/man
endif
	python setup.py build --build-lib build/py2/
	python3 setup.py build --build-lib build/py3/
	python setup.py compile_catalog
ifeq "$(filter nocheck,$(DEB_BUILD_OPTIONS))" ""
	export LC_ALL=C.UTF-8 && \
	export PYTHONPATH=$(CURDIR) && \
	set -ex; for py in $(shell pyversions -r) $(shell py3versions -r); do \
		$$py -m pytest -vv --ignore tests/test_websupport.py --ignore tests/test_api_translator.py; \
	done
	rm -rf build/py2/tests/ build/py3/tests/
endif
	touch build-stamp

.PHONY: binary binary-arch binary-indep
binary binary-indep: build-stamp
	dh_testroot
	dh_installdirs
	python setup.py \
		build --build-lib build/py2/ \
		install --no-compile --install-layout=deb --root $(debroot) \
		--install-scripts usr/share/sphinx/scripts/python2
	python3 setup.py \
		build --build-lib build/py3/ \
		install --no-compile --install-layout=deb --root $(debroot) \
		--install-scripts usr/share/sphinx/scripts/python3
	rm -f $(debroot)/usr/lib/python*/*-packages/Sphinx-*.egg-info/SOURCES.txt
	# move static files outside dist-packages
	sed -i -e "s!^package_dir = .*!package_dir = '/usr/share/sphinx'!" \
		$(debroot)$(py2_libdir)/sphinx/__init__.py \
		$(debroot)$(py3_libdir)/sphinx/__init__.py
	cd $(debroot) && mv -t usr/share/sphinx/ \
		.$(py2_libdir)/sphinx/templates \
		.$(py2_libdir)/sphinx/texinputs \
		.$(py2_libdir)/sphinx/themes
	mkdir -p $(debroot)/usr/share/sphinx/ext/autosummary/
	cd $(debroot) && mv -t usr/share/sphinx/ext/autosummary/ \
		.$(py2_libdir)/sphinx/ext/autosummary/templates
	mkdir -p $(debroot)/usr/share/sphinx/search/
	cd $(debroot) && mv -t usr/share/sphinx/search/ \
		.$(py2_libdir)/sphinx/search/non-minified-js
	cd $(debroot)$(py3_libdir)/sphinx/ && \
		rm -rf templates/ texinputs/ themes/ ext/autosummary/templates/ \
			search/non-minified-js/
	set -e -x; \
	cd $(debroot) && \
		for lang in $(locales); \
		do \
			install -m 644 -D .$(py2_libdir)/sphinx/locale/$$lang/LC_MESSAGES/sphinx.js \
				usr/share/sphinx/locale/$$lang/sphinx.js; \
			install -m 644 -D .$(py2_libdir)/sphinx/locale/$$lang/LC_MESSAGES/sphinx.mo \
				usr/share/locale/$$lang/LC_MESSAGES/sphinx.mo; \
		done
	cd $(debroot)$(py2_libdir)/sphinx/locale && rm -rf sphinx.pot */
	cd $(debroot)$(py3_libdir)/sphinx/locale && rm -rf sphinx.pot */
	set -e -x; \
	for maintscript in $(wildcard debian/sphinx-common.*.in); do \
		sed -e 's/@SCRIPTS@/$(scripts)/' $$maintscript > $${maintscript%.in}; \
	done
	# Move JavaScript code to libjs-sphinxdoc:
	PYTHONPATH=$(CURDIR) debian/dh-sphinxdoc/install-js debian/libjs-sphinxdoc$(javascript_path)
	rm -f $(debroot)/usr/share/sphinx/themes/basic/static/underscore-*.js
	rm -f $(debroot)/usr/share/sphinx/themes/basic/static/jquery-*.js
	rm -f $(debroot)/usr/share/sphinx/themes/bizstyle/static/css3-mediaqueries_src.js
	set -e; \
	for js in $$(find $(debroot)/usr/share/sphinx/themes/ -name '*.js' -a '!' -name 'websupport.js'); do \
		mv $$js debian/libjs-sphinxdoc/$(javascript_path); \
		ln -sf "$(javascript_path)/$${js##*/}" $$js; \
	done
	dh_install -p sphinx-common -X /scripts/
	dh_install -N sphinx-common --fail-missing
	dh_installchangelogs CHANGES
	dh_installdocs
	dh_lintian
ifeq "$(filter nodoc,$(DEB_BUILD_OPTIONS))" ""
	./debian/dh-sphinxdoc/dh_sphinxdoc -p sphinx-doc /usr/share/doc/sphinx-doc/html/
endif
	dh_installexamples
	cd debian/dh-sphinxdoc/ && pod2man -c Debhelper -r '' dh_sphinxdoc dh_sphinxdoc.1
ifeq "$(filter nodoc,$(DEB_BUILD_OPTIONS))" ""
	dh_installman
endif
	dh_python2 -p python-sphinx
	dh_python3 -p python3-sphinx --no-guessing-deps
	dh_strip_nondeterminism
	dh_compress -X.py -X.rst -X.json -X.txt
	dh_link
	dh_fixperms
	dh_installdeb
	dh_gencontrol
	dh_md5sums
	dh_builddeb

# vim:ts=4 sw=4 noet
