about summary refs log tree commit diff
path: root/nixpkgs/pkgs/top-level/ocaml-packages.nix
diff options
context:
space:
mode:
authorAlyssa Ross <hi@alyssa.is>2023-09-01 11:51:02 +0000
committerAlyssa Ross <hi@alyssa.is>2023-09-01 11:51:02 +0000
commitaa4353b499e6950b7333578f936455a628145c31 (patch)
treec6332cedece2327a18d08794755b3fc0f9f1905b /nixpkgs/pkgs/top-level/ocaml-packages.nix
parentac456d475f4e50818499b804359355c0f3b4bbf7 (diff)
parent52185f4d76c18d8348f963795dfed1de018e8dfe (diff)
downloadnixlib-aa4353b499e6950b7333578f936455a628145c31.tar
nixlib-aa4353b499e6950b7333578f936455a628145c31.tar.gz
nixlib-aa4353b499e6950b7333578f936455a628145c31.tar.bz2
nixlib-aa4353b499e6950b7333578f936455a628145c31.tar.lz
nixlib-aa4353b499e6950b7333578f936455a628145c31.tar.xz
nixlib-aa4353b499e6950b7333578f936455a628145c31.tar.zst
nixlib-aa4353b499e6950b7333578f936455a628145c31.zip
Merge https://github.com/NixOS/nixpkgs
Diffstat (limited to 'nixpkgs/pkgs/top-level/ocaml-packages.nix')
-rw-r--r--nixpkgs/pkgs/top-level/ocaml-packages.nix109
1 files changed, 96 insertions, 13 deletions
diff --git a/nixpkgs/pkgs/top-level/ocaml-packages.nix b/nixpkgs/pkgs/top-level/ocaml-packages.nix
index b50358e4f2ec..64e3e12d7dba 100644
--- a/nixpkgs/pkgs/top-level/ocaml-packages.nix
+++ b/nixpkgs/pkgs/top-level/ocaml-packages.nix
@@ -60,9 +60,7 @@ let
 
     ### B ###
 
-    bap = callPackage ../development/ocaml-modules/bap {
-      inherit (pkgs.llvmPackages) llvm;
-    };
+    bap = janeStreet_0_15.bap;
 
     base64 = callPackage ../development/ocaml-modules/base64 { };
 
@@ -86,7 +84,7 @@ let
 
     biniou = callPackage ../development/ocaml-modules/biniou { };
 
-    biocaml = callPackage ../development/ocaml-modules/biocaml { };
+    biocaml = janeStreet_0_15.biocaml;
 
     bisect_ppx = callPackage ../development/ocaml-modules/bisect_ppx { };
 
@@ -347,6 +345,8 @@ let
 
     domain-name = callPackage ../development/ocaml-modules/domain-name { };
 
+    domain_shims = callPackage ../development/ocaml-modules/domain_shims { };
+
     domainslib = callPackage ../development/ocaml-modules/domainslib { };
 
     dose3 = callPackage ../development/ocaml-modules/dose3 { };
@@ -716,7 +716,9 @@ let
 
     # Jane Street
     janePackage =
-      if lib.versionOlder "4.10.2" ocaml.version
+      if lib.versionOlder "4.13.1" ocaml.version
+      then callPackage ../development/ocaml-modules/janestreet/janePackage_0_16.nix {}
+      else if lib.versionOlder "4.10.2" ocaml.version
       then callPackage ../development/ocaml-modules/janestreet/janePackage_0_15.nix {}
       else if lib.versionOlder "4.08" ocaml.version
       then callPackage ../development/ocaml-modules/janestreet/janePackage_0_14.nix {}
@@ -725,7 +727,12 @@ let
       else callPackage ../development/ocaml-modules/janestreet/janePackage.nix {};
 
     janeStreet =
-      if lib.versionOlder "4.10.2" ocaml.version
+      if lib.versionOlder "4.13.1" ocaml.version
+      then import ../development/ocaml-modules/janestreet/0.16.nix {
+        inherit self;
+        inherit (pkgs) bash fetchpatch fzf lib openssl zstd krb5;
+      }
+      else if lib.versionOlder "4.10.2" ocaml.version
       then import ../development/ocaml-modules/janestreet/0.15.nix {
         inherit self;
         inherit (pkgs) bash fetchpatch fzf lib openssl zstd;
@@ -749,6 +756,75 @@ let
         inherit (pkgs) openssl;
       };
 
+    janeStreet_0_15 = (lib.makeScope self.newScope (self': with self'; {
+
+      # ocamlPackages that janestreet v0.15 packages depend on.
+      jsDeps = let
+        uri-sexp = self.uri-sexp.override { inherit (self') ppx_sexp_conv sexplib0; };
+        cohttp = self.cohttp.override {
+          inherit (self') ppx_sexp_conv;
+          inherit uri-sexp;
+        };
+        ipaddr-sexp = self.ipaddr-sexp.override { inherit (self') ppx_sexp_conv; };
+        conduit = self.conduit.override {
+          inherit (self') ppx_sexp_conv sexplib;
+          inherit ipaddr-sexp;
+        };
+        conduit-async = self.conduit-async.override {
+          inherit (self') async ppx_sexp_conv ppx_here core sexplib async_ssl;
+          inherit conduit ipaddr-sexp;
+        };
+      in {
+        inherit (self) dune-configurator alcotest re num octavius uutf ounit ctypes;
+        ppxlib = self.ppxlib.override { inherit (self') stdio; };
+        cohttp-async = self.cohttp-async.override {
+          inherit (self') ppx_sexp_conv base async async_kernel async_unix core_unix sexplib0 core;
+          inherit uri-sexp cohttp conduit-async;
+        };
+        janePackage = callPackage ../development/ocaml-modules/janestreet/janePackage_0_15.nix { };
+      };
+
+      janeStreet = import ../development/ocaml-modules/janestreet/0.15.nix {
+        self = self' // jsDeps;
+        inherit (pkgs) bash fetchpatch fzf lib openssl zstd;
+      };
+
+      # Packages that are not part of janestreet libraries, but still depend
+      # on v0.15 are kept in this scope, too.
+
+      bap = let
+        ppxlib = jsDeps.ppxlib;
+        lwt_ppx = self.lwt_ppx.override { inherit ppxlib; };
+        sedlex = self.sedlex.override { inherit ppxlib ppx_expect; };
+        in callPackage ../development/ocaml-modules/bap {
+          inherit (pkgs.llvmPackages) llvm;
+          ezjsonm = self.ezjsonm.override { inherit sexplib0; };
+          ppx_bitstring = self.ppx_bitstring.override { inherit ppxlib; };
+          ocurl = self.ocurl.override { inherit lwt_ppx; };
+          piqi = self.piqi.override { inherit sedlex; };
+          piqi-ocaml = self.piqi-ocaml.override { inherit piqi; };
+        };
+
+      biocaml = let
+        angstrom = self.angstrom.override { inherit ppx_let; };
+      in callPackage ../development/ocaml-modules/biocaml {
+        uri = self.uri.override { inherit angstrom; };
+        cfstream = self.cfstream.override { inherit core_kernel; };
+      };
+
+      magic-trace = callPackage ../development/ocaml-modules/magic-trace { };
+
+      phylogenetics = let
+        angstrom = self.angstrom.override { inherit ppx_let; };
+      in callPackage ../development/ocaml-modules/phylogenetics {
+        inherit biocaml;
+        ppx_deriving = self.ppx_deriving.override { inherit (jsDeps) ppxlib; };
+        angstrom-unix = self.angstrom-unix.override { inherit angstrom; };
+      };
+
+      ppx_bap = callPackage ../development/ocaml-modules/ppx_bap { };
+    })).overrideScope' liftJaneStreet;
+
     janeStreet_0_9_0 = import ../development/ocaml-modules/janestreet/old.nix {
       self = self.janeStreet_0_9_0;
       super = self // {
@@ -874,8 +950,6 @@ let
 
     lo = callPackage ../development/ocaml-modules/lo { };
 
-    lockfree = callPackage ../development/ocaml-modules/lockfree { };
-
     logs = callPackage ../development/ocaml-modules/logs { };
 
     lru = callPackage ../development/ocaml-modules/lru { };
@@ -930,7 +1004,7 @@ let
 
     magic-mime = callPackage ../development/ocaml-modules/magic-mime { };
 
-    magic-trace = callPackage ../development/ocaml-modules/magic-trace { };
+    magic-trace = janeStreet_0_15.magic-trace;
 
     mariadb = callPackage ../development/ocaml-modules/mariadb {
       inherit (pkgs) mariadb;
@@ -1056,8 +1130,6 @@ let
 
     mirage-runtime = callPackage ../development/ocaml-modules/mirage/runtime.nix { };
 
-    mirage-stack = callPackage ../development/ocaml-modules/mirage-stack { };
-
     mirage-time = callPackage ../development/ocaml-modules/mirage-time { };
 
     mirage-time-unix = callPackage ../development/ocaml-modules/mirage-time/unix.nix { };
@@ -1334,7 +1406,7 @@ let
 
     pgsolver = callPackage ../development/ocaml-modules/pgsolver { };
 
-    phylogenetics = callPackage ../development/ocaml-modules/phylogenetics { };
+    phylogenetics = janeStreet_0_15.phylogenetics;
 
     piaf = callPackage ../development/ocaml-modules/piaf { };
 
@@ -1368,7 +1440,7 @@ let
 
     pprint = callPackage ../development/ocaml-modules/pprint { };
 
-    ppx_bap = callPackage ../development/ocaml-modules/ppx_bap { };
+    ppx_bap = janeStreet_0_15.ppx_bap;
 
     ppx_bitstring = callPackage ../development/ocaml-modules/bitstring/ppx.nix { };
 
@@ -1537,6 +1609,10 @@ let
 
     samplerate = callPackage ../development/ocaml-modules/samplerate { };
 
+    saturn = callPackage ../development/ocaml-modules/saturn { };
+
+    saturn_lockfree = callPackage ../development/ocaml-modules/saturn/lockfree.nix { };
+
     sawja = callPackage ../development/ocaml-modules/sawja { };
 
     secp256k1 = callPackage ../development/ocaml-modules/secp256k1 {
@@ -1855,6 +1931,13 @@ in let inherit (pkgs) callPackage; in rec
 
   ocamlPackages = ocamlPackages_4_14;
 
+  # This is a nasty way to replace toplevel janestreet attributes in the scope,
+  # so that modules outside of ocamlPackages that depend on JS OCaml libraries
+  # *and* non-JS OCaml libraries can pull in the same version of JS transitive
+  # dependencies. Remove this once ligo and stanc can be compiled against
+  # janestreet 0.16 libraries.
+  ocamlPackages_4_14_janeStreet_0_15 = ocamlPackages_4_14.overrideScope' (self: super: super // super.janeStreet_0_15);
+
   # We still have packages that rely on unsafe-string, which is deprecated in OCaml 4.06.0.
   # Below are aliases for porting them to the latest versions of the OCaml 4 series.
   ocamlPackages_4_14_unsafe_string = mkOcamlPackages (callPackage ../development/compilers/ocaml/4.14.nix {