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
|