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
|
#!/usr/bin/make -f
# -*- mode: makefile; coding: utf-8 -*-
# See also: scikits-learn
# don't optimize pngs, palette changes break tests and documented examples
export NO_PNG_PKG_MANGLE := 1
PY2VERS ?= $(shell pyversions -vr)
PY3VER ?= $(shell py3versions -vd)
PY3VERS ?= $(shell py3versions -vr)
export DEB_BUILD_MAINT_OPTIONS := hardening=+all
# upstream relies on signed chars
export DEB_CFLAGS_MAINT_APPEND := -fsigned-char
export DEB_LDFLAGS_MAINT_APPEND := -Wl,--as-needed
ifneq (,$(filter parallel=%,$(DEB_BUILD_OPTIONS)))
JOBS := $(patsubst parallel=%,%,$(filter parallel=%,$(DEB_BUILD_OPTIONS)))
else
JOBS := 1
endif
# Assure Agg backend for matplotlib to avoid any possible complication
export MPLBACKEND := Agg
export PYBUILD_TEST_PYTEST := 1
%:
dh $@ --with python2,python3,sphinxdoc --buildsystem pybuild
%-arch:
dh $@ --with python2,python3 --buildsystem pybuild
clean:
dh $@ --with python2,python3 --buildsystem pybuild
# silly distutils does not support parallelism! waste hours of time
.PHONY: build
build build-arch build-indep:
$(MAKE) -j $(JOBS) -f debian/rules _$@
_build-arch: $(addprefix debian/build-stamp-python,$(PY2VERS)) $(addprefix debian/build-stamp-python,$(PY3VERS))
:
_build _build-indep: _build-arch doc/build/html
:
debian/build-stamp-python%: debian/build-stamp-pyx
PYBUILD_INTERPRETERS=python{version} PYBUILD_VERSIONS=$* dh build-arch --with python$(basename $*) --buildsystem pybuild
touch $@
override_dh_clean:
dh_clean
rm -rf .pytest_cache build scikit_image.egg-info
rm -f debian/build-stamp-*
for i in $$(find -name '*.md5'); do \
rm -f $${i%.pyx.md5}.c $${i%.pyx.md5}.cpp $$i; \
done
for i in $$(find -name '*.pyx.in'); do \
rm -f $${i%.*}; \
done
ifeq (,$(findstring -a,$(DH_INTERNAL_OPTIONS)))
ifeq (,$(filter nodoc,$(DEB_BUILD_OPTIONS)))
+$(MAKE) -C doc clean
rm -f doc/source/_static/random.js
endif
endif
debian/build-stamp-pyx: debian/bin/process_pyx.py
python$(PY3VER) $< $(JOBS)
touch $@
doc/build/html: debian/build-stamp-python$(PY3VER)
ifeq (,$(filter nodoc,$(DEB_BUILD_OPTIONS)))
# hotfix SPHINXBUILD -- remove in next release
+\
PYTHONPATH=$(CURDIR)/.pybuild/cpython3_$(PY3VER)/build:$$(python3 -c 'import sys;print(":".join(sys.path))') \
PYTHON=python$(PY3VER) \
SPHINXBUILD="python$(PY3VER) -m sphinx" \
SPHINXOPTS="-j $(JOBS) -D mathjax_path=MathJax.js" \
$(MAKE) -C doc html
endif
# Test data and plugin ini not copied to .pybuild -- manually link for them
override_dh_auto_test-arch:
ifeq (,$(filter nocheck,$(DEB_BUILD_OPTIONS)))
for ver in $(PYBUILD_VERSIONS); do \
i=.pybuild/cpython$${ver%.*}_$$ver/build/skimage; \
cp skimage/io/_plugins/*.ini $$i/io/_plugins/; \
rm -rf $$i/data || true; \
ln -sf ../../../../skimage/data $$i; \
for module in $$(find skimage ! -path '*/data/*' -name tests | cut -sd / -f 2-); do \
rm -rf $$i/$$module || true; \
ln -sf $(CURDIR)/skimage/$$module $$i/$${module%/*}/; \
done; \
done
dh_auto_test
endif
override_dh_auto_install:
dh_auto_install
# cleanup python3 cache (mixing python3 subversions)
-find debian/tmp -name "__pycache__" -exec rm -r {} +
## remove .so libraries from main package, and call dh_numpy*
_dh_python%:
-find debian/python$(*:2=)-skimage/usr/lib -name "*.so" -delete
dh_numpy$(*:2=) -ppython$(*:2=)-skimage-lib
dh_python$*
override_dh_python2: _dh_python2
override_dh_python3: _dh_python3
## immediately useable documentation and exemplar scripts/data
override_dh_compress:
dh_compress -X.py -X.html -X.pdf -X.css -X.jpg -X.txt -X.js -X.json -X.rtc
override_dh_sphinxdoc-indep:
ifeq (,$(filter nodoc,$(DEB_BUILD_OPTIONS)))
dh_sphinxdoc -XMathJax.js
endif
override_dh_installdocs:
dh_installdocs -A CONTRIBUTORS.txt README.md CONTRIBUTING.txt
|