-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathmatrix-synapse-unwrapped.nix
187 lines (168 loc) · 4.45 KB
/
matrix-synapse-unwrapped.nix
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
{
lib,
stdenv,
fetchFromGitHub,
python3,
openssl,
libiconv,
cargo,
rustPlatform,
rustc,
nixosTests,
callPackage,
}: let
plugins = python3.pkgs.callPackage ./plugins {};
tools = callPackage ./tools {};
in
python3.pkgs.buildPythonApplication rec {
pname = "matrix-synapse";
version = "1.124.0";
format = "pyproject";
src = fetchFromGitHub {
owner = "element-hq";
repo = "synapse";
rev = "v${version}";
hash = "sha256-hL1MdngaAVqgdN8GS9m3jn4twsbX0GPFa5cq+SCJ1oI=";
};
cargoDeps = rustPlatform.fetchCargoVendor {
inherit src;
name = "${pname}-${version}";
hash = "sha256-OIrjBhjSavJubpcMtHLrfuK7uhfNd+AHKUmHno32yo4=";
};
postPatch = ''
# Remove setuptools_rust from runtime dependencies
# https://github.com/element-hq/synapse/blob/v1.69.0/pyproject.toml#L177-L185
sed -i '/^setuptools_rust =/d' pyproject.toml
# Remove version pin on build dependencies. Upstream does this on purpose to
# be extra defensive, but we don't want to deal with updating this
sed -i 's/"poetry-core>=\([0-9.]*\),<=[0-9.]*"/"poetry-core>=\1"/' pyproject.toml
sed -i 's/"setuptools_rust>=\([0-9.]*\),<=[0-9.]*"/"setuptools_rust>=\1"/' pyproject.toml
# Don't force pillow to be 10.0.1 because we already have patched it, and
# we don't use the pillow wheels.
sed -i 's/Pillow = ".*"/Pillow = ">=5.4.0"/' pyproject.toml
# https://github.com/element-hq/synapse/pull/17878#issuecomment-2575412821
substituteInPlace tests/storage/databases/main/test_events_worker.py \
--replace-fail "def test_recovery" "def no_test_recovery"
'';
nativeBuildInputs = with python3.pkgs; [
poetry-core
rustPlatform.cargoSetupHook
setuptools-rust
cargo
rustc
];
buildInputs =
[
openssl
]
++ lib.optionals stdenv.hostPlatform.isDarwin [
libiconv
];
propagatedBuildInputs = with python3.pkgs;
[
attrs
bcrypt
bleach
canonicaljson
cryptography
ijson
immutabledict
jinja2
jsonschema
matrix-common
msgpack
python-multipart
netaddr
packaging
phonenumbers
pillow
prometheus-client
pyasn1
pyasn1-modules
pydantic
pymacaroons
pyopenssl
pyyaml
service-identity
signedjson
sortedcontainers
treq
twisted
typing-extensions
unpaddedbase64
]
++ twisted.optional-dependencies.tls;
optional-dependencies = with python3.pkgs; {
postgres =
if isPyPy
then [
psycopg2cffi
]
else [
psycopg2
];
saml2 = [
pysaml2
];
oidc = [
authlib
];
systemd = [
systemd
];
url-preview = [
lxml
];
sentry = [
sentry-sdk
];
jwt = [
authlib
];
redis = [
hiredis
txredisapi
];
cache-memory = [
pympler
];
user-search = [
pyicu
];
};
nativeCheckInputs =
[
openssl
]
++ (with python3.pkgs; [
mock
parameterized
])
++ builtins.filter (p: !p.meta.broken) (lib.flatten (lib.attrValues optional-dependencies));
doCheck = !stdenv.hostPlatform.isDarwin;
checkPhase = ''
runHook preCheck
# remove src module, so tests use the installed module instead
rm -rf ./synapse
# high parallelisem makes test suite unstable
# upstream uses 2 cores but 4 seems to be also stable
# https://github.com/element-hq/synapse/blob/develop/.github/workflows/latest_deps.yml#L103
if (( $NIX_BUILD_CORES > 4)); then
NIX_BUILD_CORES=4
fi
PYTHONPATH=".:$PYTHONPATH" ${python3.interpreter} -m twisted.trial -j $NIX_BUILD_CORES tests
runHook postCheck
'';
passthru = {
tests = {inherit (nixosTests) matrix-synapse matrix-synapse-workers;};
inherit plugins tools;
python = python3;
};
meta = with lib; {
homepage = "https://matrix.org";
changelog = "https://github.com/element-hq/synapse/releases/tag/v${version}";
description = "Matrix reference homeserver";
license = licenses.agpl3Plus;
maintainers = with lib.maintainers; teams.matrix.members ++ [sumnerevans];
};
}