1{
2 lib,
3 buildPythonPackage,
4 fetchFromGitHub,
5 pythonAtLeast,
6
7 # build-system
8 packaging,
9 setuptools,
10 wheel,
11
12 # dependencies
13 alembic,
14 argcomplete,
15 boto3,
16 dogpile-cache,
17 flask,
18 geoip2,
19 gfal2-python,
20 google-auth,
21 jsonschema,
22 oic,
23 paramiko,
24 prometheus-client,
25 pymemcache,
26 python-dateutil,
27 python-magic,
28 redis,
29 requests,
30 rich,
31 sqlalchemy,
32 statsd,
33 stomp-py,
34 tabulate,
35 typing-extensions,
36 urllib3,
37
38 # tests
39 pytestCheckHook,
40}:
41
42let
43 version = "38.3.0";
44
45 src = fetchFromGitHub {
46 owner = "rucio";
47 repo = "rucio";
48 tag = version;
49 hash = "sha256-hMFWydOWfpRooOVd1wJ5jDWsdvF2oT1n/SlLj3CM9Qs=";
50 };
51in
52buildPythonPackage {
53 pname = "rucio";
54 inherit version src;
55 pyproject = true;
56
57 # future-1.0.0 not supported for interpreter python3.13
58 disabled = pythonAtLeast "3.13";
59
60 pythonRelaxDeps = [
61 "alembic"
62 "argcomplete"
63 "dogpile.cache"
64 "flask"
65 "geoip2"
66 "google-auth"
67 "jsonschema"
68 "oic"
69 "packaging"
70 "paramiko"
71 "prometheus_client"
72 "python-dateutil"
73 "redis"
74 "requests"
75 "rich"
76 "sqlalchemy"
77 "stomp.py"
78 "typing_extensions"
79 "urllib3"
80 ];
81
82 pythonRemoveDeps = [ "boto" ];
83
84 build-system = [
85 packaging
86 setuptools
87 wheel
88 ];
89
90 dependencies = [
91 alembic
92 argcomplete
93 boto3
94 dogpile-cache
95 flask
96 geoip2
97 gfal2-python # needed for rucio download
98 google-auth
99 jsonschema
100 oic
101 packaging
102 paramiko
103 prometheus-client
104 pymemcache
105 python-dateutil
106 python-magic
107 redis
108 requests
109 rich
110 sqlalchemy
111 statsd
112 stomp-py
113 tabulate
114 typing-extensions
115 urllib3
116 ];
117
118 nativeCheckInputs = [
119 pytestCheckHook
120 ];
121
122 doCheck = false; # needs a rucio.cfg
123
124 pythonImportsCheck = [ "rucio" ];
125
126 meta = {
127 description = "Tool for Scientific Data Management";
128 homepage = "http://rucio.cern.ch/";
129 changelog = "https://github.com/rucio/rucio/releases/tag/${src.tag}";
130 license = lib.licenses.asl20;
131 maintainers = with lib.maintainers; [ veprbl ];
132 };
133}