1{
2 lib,
3 buildPythonPackage,
4 fetchPypi,
5 bash,
6 coreutils,
7 eventlet,
8 fasteners,
9 fixtures,
10 iana-etc,
11 libredirect,
12 oslo-config,
13 oslo-utils,
14 oslotest,
15 pbr,
16 setuptools,
17 stestr,
18}:
19
20buildPythonPackage rec {
21 pname = "oslo-concurrency";
22 version = "7.1.0";
23 pyproject = true;
24
25 src = fetchPypi {
26 pname = "oslo_concurrency";
27 inherit version;
28 hash = "sha256-34qHf4ACsH1p8dDnDbzvSSDTkkmqpi5Hj60haz3UFMs=";
29 };
30
31 postPatch = ''
32 # only a small portion of the listed packages are actually needed for running the tests
33 # so instead of removing them one by one remove everything
34 rm test-requirements.txt
35
36 substituteInPlace oslo_concurrency/tests/unit/test_processutils.py \
37 --replace-fail "/bin/bash" "${bash}/bin/bash" \
38 --replace-fail "/usr/bin/true" "${coreutils}/bin/true" \
39 --replace-fail "/bin/true" "${coreutils}/bin/true" \
40 --replace-fail "/usr/bin/env" "${coreutils}/bin/env"
41 '';
42
43 build-system = [ setuptools ];
44
45 dependencies = [
46 fasteners
47 oslo-config
48 oslo-utils
49 pbr
50 ];
51
52 # tests hang for unknown reason and time the build out
53 doCheck = false;
54
55 nativeCheckInputs = [
56 eventlet
57 fixtures
58 libredirect.hook
59 oslotest
60 stestr
61 ];
62
63 checkPhase = ''
64 echo "nameserver 127.0.0.1" > resolv.conf
65 export NIX_REDIRECTS=/etc/protocols=${iana-etc}/etc/protocols:/etc/resolv.conf=$(realpath resolv.conf)
66
67 stestr run -e <(echo "
68 oslo_concurrency.tests.unit.test_lockutils_eventlet.TestInternalLock.test_fair_lock_with_spawn
69 oslo_concurrency.tests.unit.test_lockutils_eventlet.TestInternalLock.test_fair_lock_with_spawn_n
70 ")
71 '';
72
73 pythonImportsCheck = [ "oslo_concurrency" ];
74
75 meta = with lib; {
76 description = "Oslo Concurrency library";
77 mainProgram = "lockutils-wrapper";
78 homepage = "https://github.com/openstack/oslo.concurrency";
79 license = licenses.asl20;
80 teams = [ teams.openstack ];
81 };
82}