File: rules

package info (click to toggle)
matrix-synapse 1.128.0-1
  • links: PTS, VCS
  • area: main
  • in suites: sid
  • size: 52,824 kB
  • sloc: python: 240,004; javascript: 7,252; sql: 4,641; sh: 1,157; perl: 626; makefile: 157
file content (139 lines) | stat: -rwxr-xr-x 4,460 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
#!/usr/bin/make -f

export DEB_BUILD_MAINT_OPTIONS = hardening=+all
export DEB_CFLAGS_MAINT_APPEND  = -Wall -pedantic
export DEB_CXXFLAGS_MAINT_APPEND  = -Wall -pedantic

# trust upstream optimization level by default
ifeq (,$(filter noopt,$(DEB_BUILD_OPTIONS)))
export DEB_CFLAGS_MAINT_STRIP=-O2
export DEB_CXXFLAGS_MAINT_STRIP=-O2
endif

include /usr/share/dpkg/default.mk
include /usr/share/rustc/architecture.mk

export CFLAGS CXXFLAGS CPPFLAGS LDFLAGS
export DEB_HOST_RUST_TYPE DEB_HOST_GNU_TYPE

export PYBUILD_NAME=matrix-synapse

export PATH := /usr/share/cargo/bin:$(PATH)

export CARGO=/usr/share/cargo/bin/cargo
export CARGO_HOME=$(CURDIR)/debian/cargo_home

export DEB_CARGO_CRATE=$(DEB_SOURCE)_$(DEB_VERSION_UPSTREAM)

# resolve all direct entries in first "package..." section in TODO
VENDORLIBS = $(shell perl -nE \
 '/^(?:\s{2}[*]\s*(?:(package)|(\S+))|\s{4}[*]\s*(\S+))/ or next; \
 $$i++ if $$1; exit if $$i > 1 or $$2; say $$3 if $$3 and $$i;' \
 debian/TODO)

comma = ,
_mangle = perl -gpi \
 -e 's/$(1)\W+version = "\K\Q$(subst |,$(comma),$(2))"/$(subst |,$(comma),$(3))"/g;' \
 $(patsubst %,debian/vendorlibs/%/Cargo.toml,$(4))

%:
	dh $@ --buildsystem=pybuild

execute_before_dh_auto_configure:
	sed -i '/common/s/~=/>=/' pyproject.toml
	mkdir -p debian/cargo_registry
	for file in $(CURDIR)/debian/vendorlibs/* ; do \
		name=`basename "$$file"` ;\
		[ -e debian/cargo_registry/"$$name" ] || ln -sT "$$file" debian/cargo_registry/"$$name" ;\
	done
	$(CARGO) prepare-debian debian/cargo_registry --link-from-system

execute_after_dh_auto_clean:
	rm -rf debian/cargo_registry
	mv Cargo.lock debian/Cargo.lock.orig || true
	rm -f setup.py
	rm -rf debian/cargo_home target

override_dh_auto_install:
	dh_auto_install
	for f in $$(find debian/$(PYBUILD_NAME) -name 'jquery*min.js'); \
	do \
	    rm $$f; \
	    ln -s /usr/share/javascript/jquery/jquery.min.js $$f; \
	done
	sed -i \
		-e 's,#!/usr/bin/env perl,#!/usr/bin/perl,' \
		debian/*/usr/bin/*
	mv debian/*/usr/bin/* debian/*/usr/libexec/*/
	/usr/share/cargo/bin/dh-cargo-built-using matrix-synapse

execute_after_dh_installdocs:
	mv debian/$(PYBUILD_NAME)/usr/share/doc/matrix-synapse/installation.md \
	   debian/$(PYBUILD_NAME)/usr/share/doc/matrix-synapse/INSTALL.md
	mv debian/$(PYBUILD_NAME)/usr/share/doc/matrix-synapse/upgrade.md \
	   debian/$(PYBUILD_NAME)/usr/share/doc/matrix-synapse/UPGRADE.md
	ln -sr debian/$(PYBUILD_NAME)/usr/share/doc/matrix-synapse/UPGRADE.md \
	       debian/$(PYBUILD_NAME)/usr/share/doc/matrix-synapse/UPGRADE.rst
	sed -i \
		-e 's,/opt/venvs/matrix-synapse/bin/python,/usr/bin/python3,' \
		-e 's,Restart=always,Restart=on-failure,' \
		debian/*/usr/share/doc/matrix-synapse/misc/systemd-with-workers/system/*.service

override_dh_compress:
	dh_compress -XREADME

override_dh_auto_clean:
	mv debian/Cargo.lock.orig Cargo.lock || true
	dh_auto_clean

ifeq ($(DEB_HOST_ARCH_BITS),32)
override_dh_auto_test:
	-dh_auto_test
endif

PYTHONS=$(wildcard /usr/bin/python3.? /usr/bin/python3.??)
CURRENT_PYTHON=$(shell readlink -f /usr/bin/python3)
OTHER_PYTHONS=$(filter-out $(CURRENT_PYTHON),$(PYTHONS))
OTHER_PYTHON_VERSIONS=$(subst /usr/bin/python,,$(OTHER_PYTHONS))

pybuild-autopkgtest: export PYBUILD_VERBOSE=1
pybuild-autopkgtest: export PYBUILD_DISABLE=$(OTHER_PYTHON_VERSIONS)

.PHONY: pybuild-autopkgtest

# custom target unused during official build
get-vendorlibs:
# preserve needed crates
	/usr/bin/cargo vendor --locked --versioned-dirs debian/vendorlibs~
	rm -rf debian/vendorlibs
	mkdir debian/vendorlibs
	cd debian/vendorlibs~ && mv --target-directory=../vendorlibs $(VENDORLIBS)

# use older crates
	$(call _mangle,memoffset,0.9,>= 0.8.0| <= 0.9,pyo3-0.23.5)

# avoid WASM-only crates
	perl -gpi \
	 -e 's/\[target(\W+cfg\(target)?\W+wasm[^\n]*(\n[^\[\n][^\n]*)*//g;' \
	 debian/vendorlibs/ulid-1.2.1/Cargo.toml

	perl -gpi \
	 -e 's/\[target\..cfg\(all\(.*target_os = "wasi".*[^\n]*(\n[^\[\n][^\n]*)*//g;' \
	 debian/vendorlibs/getrandom-0.3.1/Cargo.toml

# avoid Windows-only crates
	perl -gpi \
	 -e 's/\[target\..cfg\(all\(windows.*[^\n]*(\n[^\[\n][^\n]*)*//g;' \
	 debian/vendorlibs/getrandom-0.3.1/Cargo.toml

# strip checksums for mangled crates
	echo '{"package":"Could not get crate checksum","files":{}}' \
	 | tee $(patsubst %,debian/vendorlibs/%/.cargo-checksum.json,\
	 getrandom-0.3.1 \
	 pyo3-0.23.5 \
	 ulid-1.2.1 \
	 )

# cleanup
	rm -rf debian/vendorlibs~
	[ ! -f Cargo.lock.orig ] || mv -f Cargo.lock.orig Cargo.lock