File: rules

package info (click to toggle)
scikit-learn 0.23.2-5
  • links: PTS, VCS
  • area: main
  • in suites: bullseye
  • size: 21,892 kB
  • sloc: python: 132,020; cpp: 5,765; javascript: 2,201; ansic: 831; makefile: 213; sh: 44
file content (193 lines) | stat: -rwxr-xr-x 6,238 bytes parent folder | download
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
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
#!/usr/bin/make -f
# -*- mode: makefile; coding: utf-8 -*-

# See also: skimage

include /usr/share/dpkg/architecture.mk

PY3VER  ?= $(shell py3versions -vd)
PY3VERS ?= $(shell py3versions -vr)

export DEB_BUILD_MAINT_OPTIONS := hardening=+all

export DEB_CFLAGS_MAINT_APPEND :=
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
export JOBS := $(JOBS)
export JOBLIB_MULTIPROCESSING := $(shell expr $(JOBS) / $(words $(PY3VERS)))

# things in the doc building and tests try to access stuff in HOME (https://bugs.debian.org/915078)
export HOME=$(CURDIR)/tmp


# until the following are fixed:
#  https://github.com/scikit-learn/scikit-learn/issues/16101
#  https://github.com/scikit-learn/scikit-learn/issues/15420
EXCLUDE_TESTS = not test_old_pickle
EXCLUDE_TESTS += and not test_ard_accuracy_on_easy_problem

# Some tests are known to fail randomly so need to be excluded ATM
ifeq ($(DEB_HOST_ARCH),arm64)
  # A bit aggressive exclusion of some tests which exhibit a problem I have no time to deal with on arm64
  EXCLUDE_TESTS += and not test_dump
endif

# Until this is fixed:
# https://github.com/scikit-learn/scikit-learn/issues/16794
ifeq ($(DEB_HOST_ARCH),ppc64el)
  EXCLUDE_TESTS += and not test_precomputed_nearest_neighbors_filtering
  # This is actually a test generator, so this skips a *lot* of tests
  EXCLUDE_TESTS += and not test_common
  # These are is flaky
  EXCLUDE_TESTS += and not test_stacking_cv_influence
  EXCLUDE_TESTS += and not test_stacking_with_sample_weight
endif

# Until these are fixed:
# https://github.com/scikit-learn/scikit-learn/issues/16443
# https://github.com/scikit-learn/scikit-learn/issues/13052
ifeq ($(DEB_HOST_ARCH),armhf)
  EXCLUDE_TESTS += and not test_check_estimators_stacking_estimator
  EXCLUDE_TESTS += and not test_check_estimators_voting_estimator
  EXCLUDE_TESTS += and not test_apply_path_readonly_all_trees
  EXCLUDE_TESTS += and not test_check_estimator
  EXCLUDE_TESTS += and not test_check_estimator_clones
  EXCLUDE_TESTS += and not test_check_estimator_pairwise
  EXCLUDE_TESTS += and not test_novelty_true_common_tests
  # This is actually a test generator, so this skips a *lot* of tests
  EXCLUDE_TESTS += and not test_common
endif

# TBD. See https://bugs.debian.org/967977
ifeq ($(DEB_HOST_ARCH),s390x)
  EXCLUDE_TESTS += and not test_gaussian_kde
endif
ifeq ($(DEB_HOST_ARCH),alpha)
  EXCLUDE_TESTS += and not test_gaussian_kde
endif
# Same test, but not entirely the same results as above. Assuming same cause
ifeq ($(DEB_HOST_ARCH),ppc64)
  EXCLUDE_TESTS += and not test_gaussian_kde
endif


%:
	dh $@ --with python3,sphinxdoc --buildsystem pybuild

%-arch:
	dh $@ --with python3 --buildsystem pybuild

clean:
	dh $@ --with python3 --buildsystem pybuild

override_dh_clean:
	dh_clean
	rm -rf .pytest_cache build scikit_learn.egg-info tmp
	-mv PKG-INFO-BAK PKG-INFO
	rm -f debian/build-stamp-*
	for i in $$(find -name '*.pyx'); do \
		rm -f $${i%.*}.c $${i%.*}.cpp; \
	done
	for i in $$(find -name '*.pyx.in'); do \
		rm -f $${i%.*}; \
	done
ifneq (,$(filter python-sklearn-doc,$(shell dh_listpackages)))
	+$(MAKE) -C doc clean
endif

override_dh_auto_configure:
	mkdir -p tmp
	-mv PKG-INFO PKG-INFO-BAK
	python$(PY3VER) setup.py config
# 	dh_auto_configure
	mv PKG-INFO-BAK PKG-INFO

# Ensure sample and test data are copied to .pybuild
define PYBUILD_AFTER_BUILD
  for d in tests/data data descr images; do
    rm -rf {build_dir}/sklearn/datasets/$$d;
    ln -s {dir}/sklearn/datasets/$$d {build_dir}/sklearn/datasets/$$d;
  done;
endef
export PYBUILD_AFTER_BUILD
# Only with the default Python 3, additionally use pybuild to run
# sphinx once the build is complete.
ifeq (,$(filter nodoc,$(DEB_BUILD_OPTIONS)))
define PYBUILD_AFTER_BUILD_python$(PY3VER)
  $(PYBUILD_AFTER_BUILD)
  PYTHONPATH={build_dir} \
  http_proxy='127.0.0.1.9' \
  https_proxy='127.0.0.1.9' \
  SPHINXBUILD="python$(PY3VER) -m sphinx" \
  $(MAKE) -C doc html SPHINXOPTS="-j $(JOBS)" || true;
  [ -d doc/_build/html ]
endef
export PYBUILD_AFTER_BUILD_python$(PY3VER)
endif
override_dh_auto_build-arch:
	# Don't try to build docs in the arch build, so unset that hook
	env -u PYBUILD_AFTER_BUILD_python$(PY3VER) \
		dh_auto_build


export PYBUILD_TEST_PYTEST := 1
export PYBUILD_TEST_ARGS_python3 := -m "not network" -v -k "$(EXCLUDE_TESTS)"
define PYBUILD_BEFORE_TEST
  (mv $(CURDIR)/sklearn/conftest.py $(CURDIR)/sklearn/conftest.py.test; \
   mv $(CURDIR)/sklearn/datasets/tests/conftest.py $(CURDIR)/sklearn/datasets/tests/conftest.py.test; \
   cd {build_dir} && python{version} -c 'import sklearn; sklearn.show_versions()')
endef
export PYBUILD_BEFORE_TEST
define PYBUILD_AFTER_TEST
  (mv $(CURDIR)/sklearn/conftest.py.test $(CURDIR)/sklearn/conftest.py; \
   mv $(CURDIR)/sklearn/datasets/tests/conftest.py.test $(CURDIR)/sklearn/datasets/tests/conftest.py)
endef
export PYBUILD_AFTER_TEST

# Nothing to do for indep
override_dh_auto_test-indep:

export PYBUILD_AFTER_INSTALL = rm -f {destdir}/{install_dir}/_configtest*
override_dh_auto_install:
	dh_auto_install
	# cleanup python3 cache (mixing python3 subversions)
	-find debian/tmp -name "__pycache__" -exec rm -r {} +


override_dh_installdocs-arch:
	dh_installdocs -A README*.rst

override_dh_installdocs-indep:
	dh_installdocs -A README*.rst
ifneq (,$(filter python-sklearn-doc,$(shell dh_listpackages)))
	docdir=debian/python-sklearn-doc/usr/share/doc/python-sklearn-doc; \
	if [ -e $$docdir/stable ] ; then \
	mv \
		$$docdir/stable $$docdir/html; \
    fi
endif

override_dh_installchangelogs:
	dh_installchangelogs doc/whats_new.rst

# remove .so libraries from main package, and call dh_numpy*
_dh_python%:
	-find debian/python$(*:2=)-sklearn/usr/lib -name "*.so" -delete;

	dh_numpy$(*:2=) -ppython$(*:2=)-sklearn-lib
	dh_python$*

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:
	@# no need to filter out this call, if sphinxdoc is not used it won't be called.
	dh_sphinxdoc -Xsearchtools.js