biglybt: 3.5.0.0 -> 3.6.0.0
[NixPkgs.git] / pkgs / development / ocaml-modules / ocaml-freestanding / default.nix
blobe3627431d9593270955b7a34716a75deb4d7ebaf
1 { lib
2 , stdenv
3 , fetchFromGitHub
4 , ocaml
5 , pkg-config
6 , solo5
7 , target ? "xen"
8 }:
10 # note: this is not technically an ocaml-module,
11 # but can be built with different compilers, so
12 # the ocamlPackages set is very useful.
14 let
15   pname = "ocaml-freestanding";
18 if lib.versionOlder ocaml.version "4.08"
19 then builtins.throw "${pname} is not available for OCaml ${ocaml.version}"
20 else
22 stdenv.mkDerivation rec {
23   name = "ocaml${ocaml.version}-${pname}-${version}";
24   inherit pname;
25   version = "0.6.5";
27   src = fetchFromGitHub {
28     owner = "mirage";
29     repo = pname;
30     rev = "v${version}";
31     sha256 = "sha256:1mbyjzwcs64n7i3xkkyaxgl3r46drbl0gkqf3fqgm2kh3q03638l";
32   };
34   postUnpack = ''
35     # get ocaml-src from the ocaml drv instead of via ocamlfind
36     mkdir -p "${src.name}/ocaml"
37     tar --strip-components=1 -xf ${ocaml.src} -C "${src.name}/ocaml"
38   '';
40   patches = [
41     ./no-opam.patch
42     ./configurable-binding.patch
43   ];
45   strictDeps = true;
47   nativeBuildInputs = [
48     ocaml
49     pkg-config
50   ];
52   propagatedBuildInputs = [ solo5 ];
54   configurePhase = ''
55     runHook preConfigure
56     env PKG_CONFIG_DEPS=solo5-bindings-${target} sh configure.sh
57     runHook postConfigure
58   '';
60   installPhase = ''
61     runHook preInstall
62     ./install.sh "$out"
63     runHook postInstall
64   '';
66   meta = with lib; {
67     broken = true; # Not compatible with solo5 ≥ 0.7
68     description = "Freestanding OCaml runtime";
69     license = licenses.mit;
70     maintainers = [ maintainers.sternenseemann ];
71     homepage = "https://github.com/mirage/ocaml-freestanding";
72     platforms = builtins.map ({ arch, os }: "${arch}-${os}")
73       (cartesianProduct {
74           arch = [ "aarch64" "x86_64" ];
75           os = [ "linux" ];
76       } ++ [
77         { arch = "x86_64"; os = "freebsd"; }
78         { arch = "x86_64"; os = "openbsd"; }
79       ]);
80   };