1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137
|
include /usr/share/dpkg/default.mk
export DEB_BUILD_MAINT_OPTIONS = hardening=+all
export PYBUILD_NAME=dipy
export MPLBACKEND=Agg
export MPLCONFIGDIR=/tmp
export HOME=/tmp
export TEST_WITH_XVFB=true
ifeq (,$(findstring get-orig-source, $(MAKECMDGOALS)))
export http_proxy=http://127.0.0.1:9/
export https_proxy=https://127.0.0.1:9/
endif
PACKAGE3_NAME = python3-$(PYBUILD_NAME)
PACKAGE3_ROOT_DIR = $(CURDIR)/debian/${PACKAGE3_NAME}
INSTALL_PATH = $(CURDIR)/debian/tmp
PY3VERS = $(shell py3versions -vr)
BUILD_DATE := $(shell \
date \
--utc \
--date="@$${SOURCE_DATE_EPOCH:-$(shell date +%s)}" \
'+%B %d, %Y' \
)
SPHINXOPTS := -D today=\"$(BUILD_DATE)\"
# These tests attempt to make use of the network, notably during setup phase.
SKIP_NET_TESTS := \
not test_tractogram.py \
and not test_io_info \
and not test_concatenate_flow \
and not test_convert_tractogram_flow \
and not test_spike \
and not test_normalization \
and not test_kernel_input \
and not test_fbc \
and not test_concatenate
# These tests hog resources because they are too long, so it is preferable to
# skip them to give the infrastructure some breath.
SKIP_LONG_TESTS := \
not test_streamwarp.py \
and not test_lpca.py \
and not test_sfm.py \
and not test_reconst_csa_csd.py \
and not test_reconst_rumba.py
SKIP_32BIT_TESTS := not test_check_img_shapes
ifneq (,$(findstring $(DEB_HOST_ARCH_BITS),32))
TEST_SPEC := ${SKIP_NET_TESTS} and $(SKIP_LONG_TESTS) and $(SKIP_32BIT_TESTS)
else
TEST_SPEC := ${SKIP_NET_TESTS} and $(SKIP_LONG_TESTS)
endif
export PYBUILD_TEST_ARGS=-k '$(TEST_SPEC)' --pyargs dipy
%:
dh $@ --buildsystem=pybuild
override_dh_auto_clean:
dh_auto_clean || true
rm -rf .pybuild __pycache__
find dipy -name "*\.c" -delete
override_dh_auto_build:
chmod 0644 doc/examples/*.py
dh_auto_build
find -name func_coef.nii.gz -print -exec chmod 0644 '{}' ';'
execute_after_dh_auto_install:
# Prune duplicate LICENSE file
find debian/ -name LICENSE -delete
# Only now lets build docs
ifeq (python-dipy-doc_,$(filter python-dipy-doc,$(shell dh_listpackages))_$(filter nodoc,$(DEB_BUILD_OPTIONS)))
cd doc/ \
&& PYTHONPATH=$(shell pybuild --print build_dir --interpreter python3) \
$(MAKE) html SPHINXOPTS="$(SPHINXOPTS)"
# references to cloudflare and github are privacy breaches
sed 's@https://cdnjs\.cloudflare\.com/ajax/libs/mathjax/[^/]\+/@file:///usr/share/javascript/mathjax/unpacked/@' \
-i doc/_build/html/*.html \
doc/_build/html/interfaces/*.html \
doc/_build/html/theory/*.html
sed 's@https://cdn\.jsdelivr\.net/npm/mathjax[@]3/es5/tex-mml-chtml\.js@file:///usr/share/nodejs/mathjax-full/es5/tex-mml-chtml.js@' \
-i doc/_build/html/*.html \
doc/_build/html/interfaces/*.html \
doc/_build/html/reference/*.html \
doc/_build/html/theory/*.html
# FIXME: references to github are for images part of dipy_data, which
# is not available in debian; these may need packaging to solve the
# privacy breach here.
endif
# Cleanup files landing in non-standard path
rm -rfv debian/$(PACKAGE3_NAME)/usr/doc
## "Instantiate" both rules so dh sees them
override_dh_python3:
set -e \
; test -d debian/$(PACKAGE3_NAME)/usr/lib || exit 0 \
; for lib in $$(find debian/$(PACKAGE3_NAME)/usr/lib -name "*.so") \
; do sdir=$$(dirname $$lib) \
; tdir=debian/$(PACKAGE3_NAME)-lib/$${sdir#*$(PACKAGE3_NAME)/} \
; mkdir -p "$${tdir}" \
; mv -v "$${lib}" "$${tdir}" \
; done
dh_numpy3 -p$(PACKAGE3_NAME)-lib
dh_python3
# immediately useable documentation and example data
override_dh_compress:
dh_compress -X.py -X.html -X.css -X.jpg -X.txt -X.js -X.json -X.rtc \
-X.par -X.bin -Xobjects.inv
execute_before_dh_link-indep:
rm -fv debian/python-dipy-doc/usr/share/doc/python-dipy-doc/html/_static/doctools.js
rm -fv debian/python-dipy-doc/usr/share/doc/python-dipy-doc/html/_static/language_data.js
rm -fv debian/python-dipy-doc/usr/share/doc/python-dipy-doc/html/_static/searchtools.js
execute_after_dh_fixperms-arch:
# Fix a couple of executables neither elf nor scripts.
find debian/$(PACKAGE3_NAME)/usr/lib/python3*/dist-packages/ \
-name '*.py' \
-exec chmod -x '{}' '+'
execute_before_dh_clean:
rm -rf build doc-stamp
$(MAKE) -C doc clean
override_dh_dwz:
dh_dwz || true
inject-doc-examples:
mkdir -p doc-examples
tar -C doc-examples --strip-components 1 \
-xzvf ../tarballs/$(DEB_SOURCE)_$(DEB_VERSION_UPSTREAM).orig-doc-examples.tar.gz
|