1{ stdenv, buildPythonPackage, fetchPypi, fetchpatch, iana-etc, libredirect,
2 pytest, case, kombu, billiard, pytz, anyjson, amqp, eventlet
3}:
4
5let
6
7 # Needed for celery
8 pytest_32 = pytest.overridePythonAttrs( oldAttrs: rec {
9 version = "3.2.5";
10 src = oldAttrs.src.override {
11 inherit version;
12 sha256 = "6d5bd4f7113b444c55a3bbb5c738a3dd80d43563d063fc42dcb0aaefbdd78b81";
13 };
14 });
15
16in buildPythonPackage rec {
17 pname = "celery";
18 version = "4.2.0";
19
20 src = fetchPypi {
21 inherit pname version;
22 sha256 = "ff727c115533edbc7b81b2b4ba1ec88d1c2fc4836e1e2f4c3c33a76ff53e5d7f";
23 };
24
25 # Skip test_RedisBackend.test_timeouts_in_url_coerced
26 # See https://github.com/celery/celery/pull/4847
27 patches = fetchpatch {
28 url = https://github.com/celery/celery/commit/b2668607c909c61becd151905b4525190c19ff4a.patch;
29 sha256 = "11w0z2ycyh8kccj4y69zb7bxppiipcwwigg6jn1q9yrcsvz170jq";
30 };
31
32 # make /etc/protocols accessible to fix socket.getprotobyname('tcp') in sandbox
33 preCheck = stdenv.lib.optionalString stdenv.isLinux ''
34 export NIX_REDIRECTS=/etc/protocols=${iana-etc}/etc/protocols \
35 LD_PRELOAD=${libredirect}/lib/libredirect.so
36 '';
37 postCheck = stdenv.lib.optionalString stdenv.isLinux ''
38 unset NIX_REDIRECTS LD_PRELOAD
39 '';
40
41 checkInputs = [ pytest_32 case ];
42 propagatedBuildInputs = [ kombu billiard pytz anyjson amqp eventlet ];
43
44 meta = with stdenv.lib; {
45 homepage = https://github.com/celery/celery/;
46 description = "Distributed task queue";
47 license = licenses.bsd3;
48 };
49}