File: rules

package info (click to toggle)
pytorch 1.13.1%2Bdfsg-4
  • links: PTS, VCS
  • area: main
  • in suites: bookworm
  • size: 139,252 kB
  • sloc: cpp: 1,100,274; python: 706,454; ansic: 83,052; asm: 7,618; java: 3,273; sh: 2,841; javascript: 612; makefile: 323; xml: 269; ruby: 185; yacc: 144; objc: 68; lex: 44
file content (190 lines) | stat: -rwxr-xr-x 8,998 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
#!/usr/bin/make -f
export DEB_BUILD_MAINT_OPTIONS = hardening=+all
export LC_ALL=C.UTF-8
export PYBUILD_DISABLE_python2 = 1
export PYBUILD_NAME = torch
export SOVERSION = 1.13
export PATCH = 0

# [Maintainer Notes -- Mo Zhou <lumin@debian.org>]
# 1. Let's stick to the upstream LTS release. see https://pytorch.org
# 2. We may provide CUDA or ROCm variants of Pytorch in the future.
#    In that case we should create a bin:pytorch-src package,
#    and create new packages e.g. pytorch-cuda which Build-Dpends
#    on pytorch-src. This change is only necessary when we are
#    really ready to package the variants.

# [for debugging purpose]
#export CC=/usr/lib/ccache/gcc
#export CXX=/usr/lib/ccache/g++

# [special configurations]
# We use a run-time switching mechanism for BLAS/LAPACK.
# https://wiki.debian.org/DebianScience/LinearAlgebraLibraries
# Even if the torch package is built against the generic library, the backend
# libblas.so.3 is in fact automatically switched to the fastest implementation.
export BLAS = Generic
export GENERIC_BLAS_LIBRARIES = blas

# configurations
export CFLAGS = $(shell dpkg-buildflags --get CPPFLAGS) $(shell dpkg-buildflags --get CFLAGS) -gsplit-dwarf
export CXXFLAGS = $(shell dpkg-buildflags --get CPPFLAGS) $(shell dpkg-buildflags --get CXXFLAGS) -gsplit-dwarf
export NO_CUDA = 1 # Will never build CUDA version. Use Anaconda/Pip please.
export ONNX_NAMESPACE = onnx
export REL_WITH_DEB_INFO = ON
export USE_CUDA = OFF
export USE_CUDNN = OFF
ifneq (,$(filter $(DEB_HOST_ARCH),amd64 arm64 ppc64el mips64el s390x))
export USE_DISTRIBUTED = ON
else
export USE_DISTRIBUTED = OFF
endif
export USE_FBGEMM = OFF  # XXX: forget this; No need to enable.
export USE_FFMPEG = ON
export USE_GFLAGS= ON
export USE_GLOG = ON
export USE_LEVELDB = ON
export USE_LMDB = ON
export USE_MIOPEN = OFF
export USE_MPI = OFF
ifneq (,$(filter $(DEB_HOST_ARCH),amd64 arm64 ppc64el))
export USE_MKLDNN = ON  # requires ideep and onednn.
else
export USE_MKLDNN = OFF
endif
ifneq (,$(filter $(DEB_HOST_ARCH),amd64))
export USE_PYTORCH_QNNPACK = ON
else
export USE_PYTORCH_QNNPACK = OFF
endif
export USE_NNPACK = OFF  # XXX: forget this. No need to enable.
export USE_OPENCV = ON
export USE_QNNPACK = OFF  # XXX: forget this. No need to enable.
export USE_REDIS = OFF
export USE_ROCM = OFF
export USE_SYSTEM_LIBS = ON
export USE_SYSTEM_NCCL = OFF
export USE_TENSORPIPE = ON
ifneq (,$(filter $(DEB_HOST_ARCH),amd64 arm64))
export USE_XNNPACK = ON
else
export USE_XNNPACK = OFF
endif
export USE_ZMQ = ON
export USE_ZSTD = ON
export USE_KINETO = OFF
export USE_ITT= OFF

ifneq (,$(filter parallel=%,$(DEB_BUILD_OPTIONS)))
export MAX_JOBS := $(patsubst parallel=%,%,$(filter parallel=%,$(DEB_BUILD_OPTIONS)))
endif

# Customization options (You may want to rebuild this package locally)
NATIVE :=
ifneq (,$(NATIVE))
export CFLAGS = $(shell dpkg-buildflags --get CPPFLAGS) $(shell dpkg-buildflags --get CFLAGS) -gsplit-dwarf -march=native
export CXXFLAGS = $(shell dpkg-buildflags --get CPPFLAGS) $(shell dpkg-buildflags --get CXXFLAGS) -gsplit-dwarf -march=native
endif


%:
	dh $@ -Spybuild --with python3

override_dh_auto_clean:
	dh_auto_clean
	-find . -type d -name __pycache__ -exec rm -rf '{}' +

override_dh_auto_configure:
	cd third_party/; rmdir googletest; ln -s /usr/src/googletest .
	# fix python and shell shebang -- no /usr/bin/env
	find . -type f -name '*.py' -exec sed -i -e 's@#!/usr/bin/env python.*@#!/usr/bin/python3@' '{}' \;
	find . -type f -name '*.sh' -exec sed -i -e 's@#!/usr/bin/env @#!/usr/bin/@g' '{}' \;
	# regenerate flatbuffers code -- upstream cmake does not regenerate.
	cd torch/csrc/jit/serialization/; flatc mobile_bytecode.fbs --cpp --gen-all --gen-mutable

override_dh_auto_build:
	: # In order to avoid building everything twice.

override_dh_auto_test:
	:

override_dh_auto_install:
	$(shell py3versions -d) setup.py install --install-layout=deb \
		--root=$(shell pwd)/debian/python3-torch/
	# [python3-torch::headers -> libtorch-dev] move the headers out of the python package
	mkdir -pv debian/libtorch-dev/usr/include
	mv -v debian/python3-torch/usr/lib/python3*/dist-packages/torch/include/* \
		debian/libtorch-dev/usr/include/
	cd debian/python3-torch/usr/lib/python3*/dist-packages/torch/include/; \
		ln -sv /usr/include/torch . ;\
		ln -sv /usr/include/caffe2 . ;\
		ln -sv /usr/include/ATen . ;\
		ln -sv /usr/include/c10 . ;\
		ln -sv /usr/include/TH .
	# [python3-torch::shlibs -> libtorch$(SOVERSION)] move the (public) shared libs out of the python package
	mkdir -pv debian/libtorch$(SOVERSION)/usr/lib/$(DEB_HOST_MULTIARCH)/
	mv -v debian/python3-torch/usr/lib/python3*/dist-packages/torch/lib/*.so.* \
		debian/libtorch$(SOVERSION)/usr/lib/$(DEB_HOST_MULTIARCH)/
	cd debian/libtorch$(SOVERSION)/usr/lib/$(DEB_HOST_MULTIARCH)/; \
		ln -sfv libc10.so.$(SOVERSION).$(PATCH) libc10.so.$(SOVERSION) ;\
		ln -sfv libcaffe2_detectron_ops.so.$(SOVERSION).$(PATCH) libcaffe2_detectron_ops.so.$(SOVERSION) ;\
		ln -sfv libcaffe2_module_test_dynamic.so.$(SOVERSION).$(PATCH) libcaffe2_module_test_dynamic.so.$(SOVERSION) ;\
		ln -sfv libcaffe2_observers.so.$(SOVERSION).$(PATCH) libcaffe2_observers.so.$(SOVERSION) ;\
		ln -sfv libshm.so.$(SOVERSION).$(PATCH) libshm.so.$(SOVERSION) ;\
		ln -sfv libtorch_cpu.so.$(SOVERSION).$(PATCH) libtorch_cpu.so.$(SOVERSION) ;\
		ln -sfv libtorch_python.so.$(SOVERSION).$(PATCH) libtorch_python.so.$(SOVERSION) ;\
		ln -sfv libtorch.so.$(SOVERSION).$(PATCH) libtorch.so.$(SOVERSION) ;\
		ln -sfv libtorch_global_deps.so.$(SOVERSION).$(PATCH) libtorch_global_deps.so.$(SOVERSION)
	# [python3-torch::symlinks -> libtorch-dev] move the links to shared libs out of the python package
	mkdir -pv debian/libtorch-dev/usr/lib/$(DEB_HOST_MULTIARCH)/
	cd debian/python3-torch/usr/lib/python3*/dist-packages/torch/lib ; $(RM) -v *.so;\
		ln -sv  ../../../../$(DEB_HOST_MULTIARCH)/libc10.so.$(SOVERSION) libc10.so ;\
		ln -sv  ../../../../$(DEB_HOST_MULTIARCH)/libcaffe2_detectron_ops.so.$(SOVERSION) libcaffe2_detectron_ops.so ;\
		ln -sv  ../../../../$(DEB_HOST_MULTIARCH)/libcaffe2_module_test_dynamic.so.$(SOVERSION) libcaffe2_module_test_dynamic.so ;\
		ln -sv  ../../../../$(DEB_HOST_MULTIARCH)/libcaffe2_observers.so.$(SOVERSION) libcaffe2_observers.so ;\
		ln -sv  ../../../../$(DEB_HOST_MULTIARCH)/libshm.so.$(SOVERSION) libshm.so ;\
		ln -sv  ../../../../$(DEB_HOST_MULTIARCH)/libtorch_cpu.so.$(SOVERSION) libtorch_cpu.so ;\
		ln -sv  ../../../../$(DEB_HOST_MULTIARCH)/libtorch_python.so.$(SOVERSION) libtorch_python.so ;\
		ln -sv  ../../../../$(DEB_HOST_MULTIARCH)/libtorch.so.$(SOVERSION) libtorch.so ;\
		ln -sv  ../../../../$(DEB_HOST_MULTIARCH)/libtorch_global_deps.so.$(SOVERSION) libtorch_global_deps.so
	cd debian/libtorch-dev/usr/lib/$(DEB_HOST_MULTIARCH)/; \
		ln -sfv libc10.so.$(SOVERSION) libc10.so ;\
		ln -sfv libcaffe2_detectron_ops.so.$(SOVERSION) libcaffe2_detectron_ops.so ;\
		ln -sfv libcaffe2_module_test_dynamic.so.$(SOVERSION) libcaffe2_module_test_dynamic.so ;\
		ln -sfv libcaffe2_observers.so.$(SOVERSION) libcaffe2_observers.so ;\
		ln -sfv libshm.so.$(SOVERSION) libshm.so ;\
		ln -sfv libtorch_cpu.so.$(SOVERSION) libtorch_cpu.so ;\
		ln -sfv libtorch_python.so.$(SOVERSION) libtorch_python.so ;\
		ln -sfv libtorch.so.$(SOVERSION) libtorch.so ;\
		ln -sfv libtorch_global_deps.so.$(SOVERSION) libtorch_global_deps.so
	# [python3-torch::cmake -> libtorch-dev] move the cmake files out of the python package, and fixup the cmake files accordingly
	mkdir -pv debian/libtorch-dev/usr/lib/$(DEB_HOST_MULTIARCH)/
	mv -v debian/python3-torch/usr/lib/python3*/dist-packages/torch/share/cmake \
		debian/libtorch-dev/usr/lib/$(DEB_HOST_MULTIARCH)/
	find debian/libtorch-dev/usr/lib/$(DEB_HOST_MULTIARCH) -type f -name '*.cmake' \
		-exec sed -i -e "s@\\(_IMPORT_PREFIX.\\)/lib/lib@\\1/$(DEB_HOST_MULTIARCH)/lib@g" '{}' \;
	find debian/libtorch-dev/usr/lib/$(DEB_HOST_MULTIARCH) -type f -name '*.cmake' \
		-exec sed -i -e "s@\\(_IMPORT_PREFIX.\\)/include@\\1/../include@g" '{}' \;
	find debian/libtorch-dev/usr/lib/$(DEB_HOST_MULTIARCH) -type f -name '*.cmake' \
	        -exec sed -i -e "s@\\(CMAKE_CURRENT_LIST_DIR.\\)/../../../@\\1/../../../../@g" '{}' \;
	find debian/libtorch-dev/usr/lib/$(DEB_HOST_MULTIARCH)/cmake/ATen -type f -name '*.cmake' \
		-exec sed -i -e "s@/build/pytorch-.*/torch/include@/usr/include/ATen@g" '{}' \;
	# [python3-torch::testbin -> libtorch-test] move the test binaries out of the python packaage
	mkdir -pv debian/libtorch-test/usr/lib/libtorch-test/
	mv -v debian/python3-torch/usr/lib/python3*/dist-packages/torch/test/* \
		debian/libtorch-test/usr/lib/libtorch-test/
	rmdir -v debian/python3-torch/usr/lib/python3*/dist-packages/torch/test
	cd debian/python3-torch/usr/lib/python3*/dist-packages/torch/ ;\
		ln -s /usr/lib/libtorch-test test


override_dh_python3:
	dh_python3 --requires=requirements.txt --no-ext-rename
	dh_numpy3

override_dh_auto_clean:
	-$(RM) -r build/
	-$(RM) -f third_party/googletest

override_dh_dwz:
	: # FTBFS