1{
2 stdenv,
3 lib,
4 buildPythonPackage,
5 fetchFromGitHub,
6 pythonOlder,
7 pytestCheckHook,
8 pytest-rerunfailures,
9 setuptools,
10 psutil,
11 netcat,
12 ps,
13 python-daemon,
14}:
15
16buildPythonPackage rec {
17 pname = "mirakuru";
18 version = "2.6.0";
19 pyproject = true;
20
21 disabled = pythonOlder "3.9";
22
23 src = fetchFromGitHub {
24 owner = "ClearcodeHQ";
25 repo = "mirakuru";
26 tag = "v${version}";
27 hash = "sha256-R5prLIub2kVhsKRGWbZMf/v0U7oOBieoLiHwMRDEs0I=";
28 };
29
30 build-system = [ setuptools ];
31
32 dependencies = [ psutil ];
33
34 nativeCheckInputs = [
35 netcat.nc
36 ps
37 python-daemon
38 pytest-rerunfailures
39 pytestCheckHook
40 ];
41
42 pythonImportsCheck = [ "mirakuru" ];
43
44 # Necessary for the tests to pass on Darwin with sandbox enabled.
45 __darwinAllowLocalNetworking = true;
46
47 # Those are failing in the darwin sandbox with:
48 # > ps: %mem: requires entitlement
49 # > ps: vsz: requires entitlement
50 # > ps: rss: requires entitlement
51 # > ps: time: requires entitlement
52 disabledTests = [
53 "test_forgotten_stop"
54 ]
55 ++ lib.optionals stdenv.hostPlatform.isDarwin [
56 "test_mirakuru_cleanup"
57 "test_daemons_killing"
58 ];
59
60 meta = with lib; {
61 homepage = "https://github.com/dbfixtures/mirakuru";
62 description = "Process orchestration tool designed for functional and integration tests";
63 changelog = "https://github.com/ClearcodeHQ/mirakuru/blob/v${version}/CHANGES.rst";
64 license = licenses.lgpl3Plus;
65 maintainers = with maintainers; [ bcdarwin ];
66 };
67}