#!/usr/bin/make -f
include /usr/share/dpkg/buildopts.mk
#export DH_VERBOSE=1
#export DEB_BUILD_OPTIONS=nocheck
export DEB_BUILD_MAINT_OPTIONS = hardening=+all
export PYBUILD_NAME            = numba
export PYBUILD_INSTALL_ARGS    = --install-scripts=/usr/share/{package}

SPHINX_BUILD = $(shell py3versions -d) /usr/bin/sphinx-build
PYBUILD_DEFAULT_VERSION = $(shell py3versions -v -d)

PYBUILD_DIR = $(shell pybuild --print {build_dir} | grep $(PYBUILD_DEFAULT_VERSION) )

%:
	dh $@ --with sphinxdoc --buildsystem=pybuild

override_dh_auto_test-indep:
	echo "Tests are performed for arch builds only".

# still failing segfault or bus error
# numba.tests.npyufunc.test_dufunc.TestDUFuncReduceNumPyTests.test_reduce_zero_axis \
# numba.tests.test_array_manipulation.TestArrayManipulation.test_sliding_window_view
# numba.tests.test_array_manipulation.TestArrayManipulation.test_sliding_window_view_errors
# numba.tests.test_array_reductions.TestArrayReductions.test_nanpercentile_basic 
# numba.tests.test_array_reductions.TestArrayReductions.test_nanquantile_basic 
# numba.tests.test_array_reductions.TestArrayReductions.test_percentile_basic 
# numba.tests.test_array_reductions.TestArrayReductions.test_quantile_basic 
# numba.tests.test_event.TestEvent.test_timing_properties 
# numba.tests.test_fancy_indexing.TestFancyIndexing.test_np_take_axis \
# numba.tests.test_heapq.TestHeapqReflectedList.test_nlargest_basic \
# numba.tests.test_heapq.TestHeapqReflectedList.test_nsmallest_basic \
# numba.tests.test_heapq.TestHeapqTypedList.test_nlargest_basic \
# numba.tests.test_heapq.TestHeapqTypedList.test_nsmallest_basic \
# numba.tests.test_np_functions.TestNPFunctions.test_argpartition_fuzz \
# numba.tests.test_np_functions.TestNPFunctions.test_array_split_basic \
# numba.tests.test_np_functions.TestNPFunctions.test_partition_basic \
# numba.tests.test_np_functions.TestNPFunctions.test_split_basic \
# numba.tests.test_np_functions.TestNPFunctions.test_take_along_axis \
# numba.tests.test_np_randomgen.TestRandomGenerators.test_binomial_btpe_squeeze_parity \
# numba.tests.test_np_randomgen.TestRandomGenerators.test_binomial_cases \
# numba.tests.test_random.TestRandom.test_numpy_binomial \
# numba.tests.test_sets.TestFloatSets.test_and \
# numba.tests.test_sets.TestFloatSets.test_difference \
# numba.tests.test_sets.TestFloatSets.test_eq \
# numba.tests.test_sets.TestFloatSets.test_ge \
# numba.tests.test_sets.TestFloatSets.test_gt \
# numba.tests.test_sets.TestFloatSets.test_iand \
# numba.tests.test_sets.TestFloatSets.test_intersection \
# numba.tests.test_sets.TestFloatSets.test_ior \
# numba.tests.test_sets.TestFloatSets.test_isdisjoint \
# numba.tests.test_sets.TestFloatSets.test_issubset \
# numba.tests.test_sets.TestFloatSets.test_issuperset \
# numba.tests.test_sets.TestFloatSets.test_isub \
# numba.tests.test_sets.TestFloatSets.test_ixor \
# numba.tests.test_sets.TestFloatSets.test_le \
# numba.tests.test_sets.TestFloatSets.test_lt \
# numba.tests.test_sets.TestFloatSets.test_ne \
# numba.tests.test_sets.TestFloatSets.test_or \
# numba.tests.test_sets.TestFloatSets.test_sub \
# numba.tests.test_sets.TestFloatSets.test_symmetric_difference \
# numba.tests.test_sets.TestFloatSets.test_union \
# numba.tests.test_sets.TestFloatSets.test_xor \
# numba.tests.test_sets.TestSets.test_and \
# numba.tests.test_sets.TestSets.test_difference \
# numba.tests.test_sets.TestSets.test_eq \
# numba.tests.test_sets.TestSets.test_ge \
# numba.tests.test_sets.TestSets.test_gt \
# numba.tests.test_sets.TestSets.test_iand \
# numba.tests.test_sets.TestSets.test_intersection \
# numba.tests.test_sets.TestSets.test_ior \
# numba.tests.test_sets.TestSets.test_isdisjoint \
# numba.tests.test_sets.TestSets.test_issubset \
# numba.tests.test_sets.TestSets.test_issuperset \
# numba.tests.test_sets.TestSets.test_isub \
# numba.tests.test_sets.TestSets.test_ixor \
# numba.tests.test_sets.TestSets.test_le \
# numba.tests.test_sets.TestSets.test_lt \
# numba.tests.test_sets.TestSets.test_ne \
# numba.tests.test_sets.TestSets.test_or \
# numba.tests.test_sets.TestSets.test_sub \
# numba.tests.test_sets.TestSets.test_symmetric_difference \
# numba.tests.test_sets.TestSets.test_union \
# numba.tests.test_sets.TestSets.test_xor \
# numba.tests.test_sets.TestSetsInvalid.test_isdisjoint \
# numba.tests.test_sets.TestSetsInvalid.test_issubset \
# numba.tests.test_sets.TestSetsInvalid.test_issuperset \
# numba.tests.test_sets.TestSetsInvalidDtype.test_xor \
# numba.tests.test_sets.TestTupleSets.test_and \
# numba.tests.test_sets.TestTupleSets.test_issuperset \
# numba.tests.test_sets.TestTupleSets.test_isub \
# numba.tests.test_sets.TestTupleSets.test_ixor \
# numba.tests.test_sets.TestTupleSets.test_le \
# numba.tests.test_sets.TestTupleSets.test_lt \
# numba.tests.test_sets.TestTupleSets.test_xor \
# numba.tests.test_sets.TestUnicodeSets.test_and \
# numba.tests.test_np_functions.TestNPFunctions.test_partition_fuzz
# numba.tests.test_np_randomgen.TestRandomGenerators.test_binomial_specific_issues 
# numba.tests.test_parfors.TestParforsRunner.test_TestParforNumPy \
# numba.tests.test_pycc.TestCC.test_reproducible_build \
# numba.tests.test_np_functions.TestNPFunctions.test_argpartition_basic

# no crash, but does FAIL
# numba.tests.test_parallel_backend.TestInitSafetyIssues.test_orphaned_semaphore 

# TESTS=numba.tests.test_array_methods.TestArrayMethods.test_sum_const \
# numba.tests.test_complex.TestCMath.test_atan_npm \
# numba.tests.test_dictobject.TestDictRefctTypes.test_str_key_array_value \
# numba.tests.test_parfors.TestParfors.test_prange_parfor_index_const_tuple_fusion \
# numba.tests.test_pycc.TestCC.test_c_extension_usecase \
# numba.tests.test_pycc.TestCC.test_compile \
# numba.tests.test_pycc.TestCC.test_compile_helperlib \
# numba.tests.test_pycc.TestCC.test_compile_nrt \
# numba.tests.test_pycc.TestCC.test_dynamic_exc \
# numba.tests.test_pycc.TestCC.test_hashing \
# numba.tests.test_pycc.TestDistutilsSupport.test_setup_py_distutils_nested \
# numba.tests.test_pycc.TestDistutilsSupport.test_setup_py_distutils \
# numba.tests.test_pycc.TestDistutilsSupport.test_setup_py_setuptools \
# numba.tests.test_pycc.TestDistutilsSupport.test_setup_py_setuptools_nested \
# numba.tests.test_sets.TestSetsInvalid.test_and \
# numba.tests.test_sets.TestSetsInvalid.test_ge \
# numba.tests.test_sets.TestSetsInvalid.test_gt \
# numba.tests.test_sets.TestSetsInvalid.test_iand \
# numba.tests.test_sets.TestSetsInvalid.test_ior \
# numba.tests.test_sets.TestSetsInvalid.test_isub \
# numba.tests.test_sets.TestSetsInvalid.test_ixor \
# numba.tests.test_sets.TestSetsInvalid.test_le \
# numba.tests.test_sets.TestSetsInvalid.test_lt \
# numba.tests.test_sets.TestSetsInvalid.test_ne \
# numba.tests.test_sets.TestSetsInvalid.test_or \
# numba.tests.test_sets.TestSetsInvalid.test_xor \
# numba.tests.test_sets.TestSetsInvalidDtype.test_and \
# numba.tests.test_sets.TestSetsInvalidDtype.test_isub \
# numba.tests.test_sets.TestSetsInvalidDtype.test_le \
# numba.tests.test_sets.TestSetsInvalidDtype.test_lt \
# numba.tests.test_sets.TestSetsInvalidDtype.test_ne \
# numba.tests.test_sets.TestSetsInvalidDtype.test_or \

override_dh_auto_test-arch:
# Disable all tests on single-cpu systems until they are fixed upstream
# See https://github.com/numba/numba/issues/10580 for details
ifneq ($(shell nproc), 1)
	PYBUILD_SYSTEM=custom \
	PYBUILD_TEST_ARGS="ls {build_dir} && cd {build_dir} && MPLBACKEND=Agg {interpreter} -Wd runtests.py --exclude-tags='long-running,gdb,compiled_caching' -v $(DEB_BUILD_OPTION_PARALLEL:%=-m%) -- numba.tests" dh_auto_test
endif

override_dh_installchangelogs:
	dh_installchangelogs -A CHANGE_LOG

override_dh_installdocs:
	dh_installdocs -A README.rst
ifeq (,$(findstring nodoc, $(DEB_BUILD_OPTIONS)))
	cp -a docs CHANGE_LOG $(PYBUILD_DIR)
	http_proxy='127.0.0.1:9' PYTHONPATH=$(PYBUILD_DIR):$${PYTHONPATH} $(SPHINX_BUILD) -N -bhtml \
			   $(PYBUILD_DIR)/docs/source/ \
			   debian/numba-doc/usr/share/doc/numba-doc/html/
endif

override_dh_python3:
	dh_python3 --shebang=/usr/bin/python3
	dh_numpy3

override_dh_compress:
	dh_compress -X.ipynb -X.ods -X.py # save examples and notebooks
