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

# Uncomment this to turn on verbose mode.
#export DH_VERBOSE=1
export DEB_BUILD_MAINT_OPTIONS=hardening=+all,-pie

# Get the supported Python versions
PY2VERS = $(shell pyversions -r -v)
PY3VERS = $(shell py3versions -r -v)

include /usr/share/dpkg/pkg-info.mk
BUILD_DATE="$(date --utc --date="@${SOURCE_DATE_EPOCH:-$(date +%s)}" +%Y-%m-%d)"
SPHINXOPTS := -D today=\"$(BUILD_DATE)\"
SPHINXOPTS += -D html_last_updated_fmt=\"$(BUILD_DATE)\"

ifneq (,$(filter noopt,$(DEB_BUILD_OPTIONS)))
  export CFLAGS ?= -O0
endif

ifneq ($(wildcard /usr/lib/$(DEB_HOST_MULTIARCH)/hdf5/serial/libhdf5.so),)
  export HDF5_DIR := /usr/lib/$(DEB_HOST_MULTIARCH)/hdf5/serial
endif


%:
	dh $@ --with python2,python3,sphinxdoc --buildsystem=python_distutils


build-python%:
	python$* setup.py build
	python$*-dbg setup.py build


override_dh_auto_build: $(PY3VERS:%=build-python%)
ifeq (,$(filter nodoc,$(DEB_BUILD_OPTIONS)))
	$(MAKE) PWD=$(CURDIR) SPHINXOPTS="$(SPHINXOPTS)"
	$(MAKE) -C doc PWD=$(CURDIR) SPHINXOPTS="$(SPHINXOPTS)" latexpdf
	mv doc/build/latex/usersguide-*.pdf doc/usersguide.pdf
else
	$(MAKE) ANNOUNCE.txt
	$(MAKE) -C src all
	mkdir -p doc/html
	touch doc/usersguide.pdf
endif
	dh_auto_build --buildsystem=python_distutils


install-python%:
	python$* setup.py install --root=$(CURDIR)/debian/tmp --install-layout=deb
	python$*-dbg setup.py install --root=$(CURDIR)/debian/tmp --install-layout=deb


override_dh_auto_install: $(PY3VERS:%=install-python%)
	dh_auto_install


override_dh_install:
	# Install everything excluding the *.so extensions to python(3)-tables
	dh_install -X"*.so" -X"*.h5" -X"*.xbm" -X"*.dat" -X"*.mat" "debian/tmp/usr/lib/python2*" -p python-tables
	dh_install -X"*.so" -X"*.h5" -X"*.xbm" -X"*.dat" -X"*.mat" "debian/tmp/usr/lib/python3*" -p python3-tables

	# Install the extensions to python(3)-tables-lib
	dh_install -X"*_d.so" "debian/tmp/usr/lib/python2*/*-packages/tables/*.so" -p python-tables-lib
	find debian/python-tables-lib -name '*_d.so' | xargs -r rm -f
	dh_install -X"*dmu.so" -X"*dm.so" "debian/tmp/usr/lib/python3*/*-packages/tables/*.so" -p python3-tables-lib
	find debian/python3-tables-lib -name '*.cpython-??dm-*.so' | xargs -r rm -f

	# Install the debug extensions to python(3)-tables-dbg
	dh_install "debian/tmp/usr/lib/python2*/*-packages/tables/*_d.so" -p python-tables-dbg
	dh_install "debian/tmp/usr/lib/python3*/*-packages/tables/*.cpython-??dm*.so" -p python3-tables-dbg

	# Continue with regular dh_install
	dh_install -p python-tables-doc
	dh_install -p python-tables-data

	# duplicate files in doc
	rm -f debian/tmp/usr/share/doc/python-tables-doc/examples/simple_threading.py
	rm -f debian/tmp/usr/share/doc/python-tables-doc/examples/threading_monkeypatch.py
	dh_link -p python-tables-doc usr/share/doc/python-tables-doc/html/_downloads/simple_threading.py usr/share/doc/python-tables-doc/examples/simple_threading.py
	dh_link -p python-tables-doc usr/share/doc/python-tables-doc/html/_downloads/threading_monkeypatch.py usr/share/doc/python-tables-doc/examples/threading_monkeypatch.py

	rm -f debian/tmp/usr/share/doc/python-tables-doc/html/_sources/release-notes/RELEASE_NOTES_v2.1.x-pro.rst.txt
	dh_link -p python-tables-doc  usr/share/doc/python-tables-doc/html/_sources/release-notes/RELEASE_NOTES_v2.1.x-pro.rst.txt usr/share/doc/python-tables-doc/html/_sources/release-notes/RELEASE_NOTES_v2.1.x.rst.txt

	# mathjs
	dh_link -ppython-tables-doc /usr/share/javascript/mathjax/MathJax.js /usr/share/doc/python-tables-doc/html/_static/MathJax.js
	# link data files
	for py in $(PY2VERS); do \
		for f in debian/tmp/usr/lib/python2*/*-packages/tables/tests/*.h5 \
		         debian/tmp/usr/lib/python2*/*-packages/tables/tests/*.mat; do \
			dh_link -p python-tables usr/share/python-tables/tests/$$(basename $$f) usr/lib/python$$py/dist-packages/tables/tests/$$(basename $$f); \
		done; \
		for f in debian/tmp/usr/lib/python2*/*-packages/tables/nodes/tests/*.h5 \
		         debian/tmp/usr/lib/python2*/*-packages/tables/nodes/tests/*.xbm \
		         debian/tmp/usr/lib/python2*/*-packages/tables/nodes/tests/*.dat; do \
			dh_link -p python-tables usr/share/python-tables/nodes/tests/$$(basename $$f) usr/lib/python$$py/dist-packages/tables/nodes/tests/$$(basename $$f); \
		done; \
	done

	for f in debian/tmp/usr/lib/python3*/*-packages/tables/tests/*.h5 \
	         debian/tmp/usr/lib/python3*/*-packages/tables/tests/*.mat; do \
		dh_link -p python3-tables usr/share/python-tables/tests/$$(basename $$f) usr/lib/python3/dist-packages/tables/tests/$$(basename $$f); \
	done
	for f in debian/tmp/usr/lib/python3*/*-packages/tables/nodes/tests/*.h5 \
	         debian/tmp/usr/lib/python3*/*-packages/tables/nodes/tests/*.xbm \
	         debian/tmp/usr/lib/python3*/*-packages/tables/nodes/tests/*.dat; do \
		dh_link -p python3-tables usr/share/python-tables/nodes/tests/$$(basename $$f) usr/lib/python3/dist-packages/tables/nodes/tests/$$(basename $$f); \
	done

	dh_numpy
	dh_numpy3
ifeq (,$(filter nocheck,$(DEB_BUILD_OPTIONS)))
	# https://github.com/PyTables/PyTables/issues/485
	mkdir -p $(CURDIR)/tmp-locales
	localedef -i /usr/share/i18n/locales/en_US -c -f UTF-8 \
		-A /usr/share/locale/locale.alias \
		$(CURDIR)/tmp-locales/en_US.UTF-8
	set -e -x; \
	for py in $(PY2VERS); do \
		cd $(CURDIR)/build/lib.*-$$py; \
		env PYTHONPATH=. \
			LOCPATH=$(CURDIR)/tmp-locales LC_ALL=en_US.UTF-8 \
			python$$py tables/tests/test_all.py -vvv; \
		cd $(CURDIR)/debian/tmp/usr/lib/python$$py/dist-packages; \
		env PYTHONPATH=. \
			LOCPATH=$(CURDIR)/tmp-locales LC_ALL=en_US.UTF-8 \
			python$$py-dbg tables/tests/test_all.py -vvv; \
	done
	set -e -x; \
	for py in $(PY3VERS); do \
		cd $(CURDIR)/build/lib.*-$$py; \
		env PYTHONPATH=. \
			LOCPATH=$(CURDIR)/tmp-locales LC_ALL=en_US.UTF-8 \
			python$$py tables/tests/test_all.py -vvv; \
		cd $(CURDIR)/debian/tmp/usr/lib/python3/dist-packages; \
		env PYTHONPATH=. \
			LOCPATH=$(CURDIR)/tmp-locales LC_ALL=en_US.UTF-8 \
			python$$py-dbg tables/tests/test_all.py -vvv; \
	done
endif


override_dh_strip:
	dh_strip -ppython-tables-lib  --dbg-package=python-tables-dbg
	dh_strip -ppython3-tables-lib --dbg-package=python3-tables-dbg


override_dh_auto_clean:
	# Avoid unnecessary cythonization (see
	# https://github.com/PyTables/PyTables/issues/122)
	#dh_auto_clean --buildsystem=python_distutils
	$(MAKE) distclean
	rm -rf doc/*.pdf tables.egg-info tmp-locales


override_dh_sphinxdoc:
ifeq (,$(filter nodoc,$(DEB_BUILD_OPTIONS)))
	dh_sphinxdoc -ppython-tables-doc
	rm -f $(CURDIR)/debian/python-tables-doc/usr/share/doc/python-tables-doc/html/_static/jquery.cookie.js
endif


override_dh_installchangelogs:
	dh_installchangelogs -k RELEASE_NOTES.txt


override_dh_compress:
	dh_compress -X.txt -X.pdf -X.py -X.h5


.PHONY: override_dh_auto_build override_dh_auto_install override_dh_auto_clean \
        override_dh_sphinxdoc override_dh_install \
        override_dh_installchangelogs override_dh_compress
