summary refs log tree commit diff
path: root/debian/rules
blob: 3b79d560744f431d6c719dfef857f2ede1e59204 (plain) (blame)
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
#!/usr/bin/make -f
#
# Build Debian package using https://github.com/spotify/dh-virtualenv
#

# assume we only have one package
PACKAGE_NAME:=`dh_listpackages`

override_dh_installsystemd:
	dh_installsystemd --name=matrix-synapse

# we don't really want to strip the symbols from our object files.
override_dh_strip:

# many libraries pulled from PyPI have allocatable sections after
# non-allocatable ones on which dwz errors out. For those without the issue the
# gains are only marginal
override_dh_dwz:

# dh_shlibdeps calls dpkg-shlibdeps, which finds all the binary files
# (executables and shared libs) in the package, and looks for the shared
# libraries that they depend on. It then adds a dependency on the package that
# contains that library to the package.
#
# We make two modifications to that process...
#
override_dh_shlibdeps:
        # Firstly, postgres is not a hard dependency for us, so we want to make
        # the things that psycopg2 depends on (such as libpq) be
        # recommendations rather than hard dependencies. We do so by
        # running dpkg-shlibdeps manually on psycopg2's libs.
        #
	find debian/$(PACKAGE_NAME)/ -path '*/site-packages/psycopg2/*.so' | \
	    xargs dpkg-shlibdeps -Tdebian/$(PACKAGE_NAME).substvars \
	        -pshlibs1 -dRecommends

        # secondly, we exclude PIL's libraries from the process. They are known
        # to be self-contained, but they have interdependencies and
        # dpkg-shlibdeps doesn't know how to resolve them.
        #
        # As of Pillow 7.1.0, these libraries are in
        # site-packages/Pillow.libs. Previously, they were in
        # site-packages/PIL/.libs.
        #
        # (we also need to exclude psycopg2, of course, since we've already
        # dealt with that.)
        #
	dh_shlibdeps \
	    -X site-packages/PIL/.libs \
	    -X site-packages/Pillow.libs \
	    -X site-packages/psycopg2

override_dh_virtualenv:
	./debian/build_virtualenv

override_dh_builddeb:
        # force the compression to xzip, to stop dpkg-deb on impish defaulting to zstd
        # (which requires reprepro 5.3.0-1.3, which is currently only in 'experimental' in Debian:
        # https://metadata.ftp-master.debian.org/changelogs/main/r/reprepro/reprepro_5.3.0-1.3_changelog)
	dh_builddeb -- -Zxz

%:
	dh $@ --with python-virtualenv