python3Packages.orjson: Disable failing tests on 32 bit
[NixPkgs.git] / pkgs / development / ocaml-modules / ocaml-freestanding / default.nix
blob942d69e5919462df1911a1e4908761baf9ac40d4
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   nativeBuildInputs = [
46     ocaml
47     pkg-config
48   ];
50   propagatedBuildInputs = [ solo5 ];
52   configurePhase = ''
53     runHook preConfigure
54     env PKG_CONFIG_DEPS=solo5-bindings-${target} sh configure.sh
55     runHook postConfigure
56   '';
58   installPhase = ''
59     runHook preInstall
60     ./install.sh "$out"
61     runHook postInstall
62   '';
64   meta = with lib; {
65     description = "Freestanding OCaml runtime";
66     license = licenses.mit;
67     maintainers = [ maintainers.sternenseemann ];
68     homepage = "https://github.com/mirage/ocaml-freestanding";
69     platforms = builtins.map ({ arch, os }: "${arch}-${os}")
70       (cartesianProductOfSets {
71           arch = [ "aarch64" "x86_64" ];
72           os = [ "linux" ];
73       } ++ [
74         { arch = "x86_64"; os = "freebsd"; }
75         { arch = "x86_64"; os = "openbsd"; }
76       ]);
77   };