summaryrefslogtreecommitdiffstats
path: root/pkgs/development/ocaml-modules/domain-local-await/default.nix
blob: 49801ed557402c36154a538f29585ab1eeda27fb (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
{
  lib,
  ocaml,
  buildDunePackage,
  fetchurl,
  alcotest,
  domain_shims,
  mdx,
  thread-table,
}:

buildDunePackage (finalAttrs: {
  pname = "domain-local-await";
  version = "1.0.1";

  minimalOCamlVersion = "5.0";

  # Fix build with gcc15
  env = lib.optionalAttrs (lib.versions.majorMinor ocaml.version == "5.0") {
    NIX_CFLAGS_COMPILE = "-std=gnu11";
  };

  src = fetchurl {
    url = "https://github.com/ocaml-multicore/domain-local-await/releases/download/${finalAttrs.version}/domain-local-await-${finalAttrs.version}.tbz";
    hash = "sha256-KVIRPFPLB+KwVLLchs5yk5Ex2rggfI8xOa2yPmTN+m8=";
  };

  propagatedBuildInputs = [
    thread-table
  ];

  __darwinAllowLocalNetworking = true;
  doCheck = true;

  checkInputs = [
    alcotest
    domain_shims
    mdx
  ];

  nativeCheckInputs = [
    mdx.bin
  ];

  meta = {
    homepage = "https://github.com/ocaml-multicore/ocaml-domain-local-await";
    changelog = "https://github.com/ocaml-multicore/ocaml-domain-local-await/raw/v${finalAttrs.version}/CHANGES.md";
    description = "Scheduler independent blocking mechanism";
    license = lib.licenses.isc;
    maintainers = with lib.maintainers; [ toastal ];
  };
})