1{
2 stdenv,
3 lib,
4 buildPythonPackage,
5 fetchFromGitHub,
6 pythonOlder,
7 pytestCheckHook,
8 setuptools,
9 psutil,
10 netcat,
11 ps,
12 python-daemon,
13}:
14
15buildPythonPackage rec {
16 pname = "mirakuru";
17 version = "2.5.3";
18 format = "pyproject";
19
20 disabled = pythonOlder "3.9";
21
22 src = fetchFromGitHub {
23 owner = "ClearcodeHQ";
24 repo = "mirakuru";
25 rev = "refs/tags/v${version}";
26 hash = "sha256-blk4Oclb3+Cj3RH7BhzacfoPFDBIP/zgv4Ct7fawGnQ=";
27 };
28
29 patches = [
30 # https://github.com/ClearcodeHQ/mirakuru/pull/810
31 ./tmpdir.patch
32 ];
33
34 nativeBuildInputs = [ setuptools ];
35
36 propagatedBuildInputs = [ psutil ];
37
38 nativeCheckInputs = [
39 netcat.nc
40 ps
41 python-daemon
42 pytestCheckHook
43 ];
44 pythonImportsCheck = [ "mirakuru" ];
45
46 # Necessary for the tests to pass on Darwin with sandbox enabled.
47 __darwinAllowLocalNetworking = true;
48
49 # Those are failing in the darwin sandbox with:
50 # > ps: %mem: requires entitlement
51 # > ps: vsz: requires entitlement
52 # > ps: rss: requires entitlement
53 # > ps: time: requires entitlement
54 disabledTests = lib.optionals stdenv.hostPlatform.isDarwin [
55 "test_forgotten_stop"
56 "test_mirakuru_cleanup"
57 "test_daemons_killing"
58 ];
59
60 meta = with lib; {
61 homepage = "https://pypi.org/project/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}