diff --git a/pkgs/development/coq-modules/serapi/default.nix b/pkgs/development/coq-modules/serapi/default.nix index ac09d26935af..b33c89aa63c1 100644 --- a/pkgs/development/coq-modules/serapi/default.nix +++ b/pkgs/development/coq-modules/serapi/default.nix @@ -87,6 +87,10 @@ in then [ ./janestreet-0.15.patch ] + else if version == "8.17.0+0.17.0" + then [ + ./janestreet-0.16.patch + ] else [ ]; diff --git a/pkgs/development/coq-modules/serapi/janestreet-0.16.patch b/pkgs/development/coq-modules/serapi/janestreet-0.16.patch new file mode 100644 index 000000000000..01aac57639ad --- /dev/null +++ b/pkgs/development/coq-modules/serapi/janestreet-0.16.patch @@ -0,0 +1,17 @@ +diff --git a/serlib/ser_stdlib.ml b/serlib/ser_stdlib.ml +index 894d300..11c9217 100644 +--- a/serlib/ser_stdlib.ml ++++ b/serlib/ser_stdlib.ml +@@ -28,6 +28,7 @@ let ref_to_yojson f x = f !x + let ref_of_yojson f x = Result.map (fun x -> ref x) (f x) + let hash_fold_ref = hash_fold_ref_frozen + let compare_ref = compare_ref ++let (==) x y = (==) x y + + module Lazy = struct + type 'a t = 'a lazy_t +@@ -35,3 +36,4 @@ module Lazy = struct + end + + module Option = Stdlib.Option ++module List = Stdlib.List diff --git a/pkgs/development/ocaml-modules/bistro/default.nix b/pkgs/development/ocaml-modules/bistro/default.nix index 8f84a973bf0f..fd409b51091d 100644 --- a/pkgs/development/ocaml-modules/bistro/default.nix +++ b/pkgs/development/ocaml-modules/bistro/default.nix @@ -29,6 +29,8 @@ buildDunePackage rec { sha256 = "0g11324j1s2631zzf7zxc8s0nqd4fwvcni0kbvfpfxg96gy2wwfm"; }; + patches = [ ./janestreet-0.16.patch ]; + propagatedBuildInputs = [ base64 bos diff --git a/pkgs/development/ocaml-modules/bistro/janestreet-0.16.patch b/pkgs/development/ocaml-modules/bistro/janestreet-0.16.patch new file mode 100644 index 000000000000..bf3b41eb4ac8 --- /dev/null +++ b/pkgs/development/ocaml-modules/bistro/janestreet-0.16.patch @@ -0,0 +1,205 @@ +diff --git a/lib/engine/scheduler.ml b/lib/engine/scheduler.ml +index e32bd0f..93b566b 100644 +--- a/lib/engine/scheduler.ml ++++ b/lib/engine/scheduler.ml +@@ -601,7 +601,7 @@ module Make(Backend : Backend) = struct + ) + ) + | Trywith tw -> ( +- match Table.find sched.traces (Workflow.id tw.w) with ++ match Hashtbl.find sched.traces (Workflow.id tw.w) with + | Some eventual_trace -> ( + eventual_trace >>= function + | Ok (Run r) -> +@@ -667,10 +667,10 @@ module Make(Backend : Backend) = struct + let register_build sched ~id ~build_trace = + let open Eval_thread.Infix in + ( +- match Table.find sched.traces id with ++ match Hashtbl.find sched.traces id with + | None -> + let trace = build_trace () in +- Table.set sched.traces ~key:id ~data:trace ; ++ Hashtbl.set sched.traces ~key:id ~data:trace ; + trace + | Some trace -> trace + ) >>= fun trace -> +@@ -854,7 +854,7 @@ module Make(Backend : Backend) = struct + Eval_thread.join l.elts ~f:(build ?target sched) + | Trywith tw -> ( + build sched ?target tw.w >> fun w_result -> +- match Table.find sched.traces (Workflow.id tw.w) with ++ match Hashtbl.find sched.traces (Workflow.id tw.w) with + | Some eventual_trace -> ( + eventual_trace >> function + | Ok (Run r) when run_trywith_recovery r.details -> +diff --git a/lib/multinode/bistro_multinode.ml b/lib/multinode/bistro_multinode.ml +index 01dc5ac..3fc6b0e 100644 +--- a/lib/multinode/bistro_multinode.ml ++++ b/lib/multinode/bistro_multinode.ml +@@ -130,7 +130,7 @@ module Server = struct + let search (type s) (table : s String.Table.t) ~f = + let module M = struct exception Found of string * s end in + try +- String.Table.fold table ~init:() ~f:(fun ~key ~data () -> if f ~key ~data then raise (M.Found (key, data))) ; ++ Hashtbl.fold table ~init:() ~f:(fun ~key ~data () -> if f ~key ~data then raise (M.Found (key, data))) ; + None + with M.Found (k, v) -> Some (k, v) + +@@ -145,7 +145,7 @@ module Server = struct + match allocation_attempt with + | None -> Some elt + | Some (worker_id, (Resource curr)) -> +- String.Table.set pool.available ~key:worker_id ~data:(Resource { np = curr.np - np ; mem = curr.mem - mem }) ; ++ Hashtbl.set pool.available ~key:worker_id ~data:(Resource { np = curr.np - np ; mem = curr.mem - mem }) ; + Lwt.wakeup u (worker_id, Resource { np ; mem }) ; + None + ) +@@ -163,12 +163,12 @@ module Server = struct + t + + let add_worker pool (Worker { id ; np ; mem ; _ }) = +- match String.Table.add pool.available ~key:id ~data:(Allocator.Resource { np ; mem }) with ++ match Hashtbl.add pool.available ~key:id ~data:(Allocator.Resource { np ; mem }) with + | `Ok -> allocation_pass pool + | `Duplicate -> failwith "A worker has been added twice" + + let release pool worker_id (Allocator.Resource { np ; mem }) = +- String.Table.update pool.available worker_id ~f:(function ++ Hashtbl.update pool.available worker_id ~f:(function + | None -> failwith "Tried to release resources of inexistent worker" + | Some (Resource r) -> Resource { np = r.np + np ; mem = r.mem + mem } + ) +@@ -235,13 +235,13 @@ module Server = struct + | Subscript { np ; mem } -> + let id = new_id () in + let w = create_worker ~np ~mem id in +- String.Table.set state.workers ~key:id ~data:w ; ++ Hashtbl.set state.workers ~key:id ~data:w ; + Worker_allocator.add_worker state.alloc w ; + log (Logger.Debug (sprintf "new worker %s" id)) ; + Lwt.return (Client_id id) + + | Get_job { client_id } -> ( +- match String.Table.find state.workers client_id with ++ match Hashtbl.find state.workers client_id with + | None -> Lwt.return None + | Some (Worker worker) -> + Lwt.choose [ +@@ -250,22 +250,22 @@ module Server = struct + ] >>= function + | `Job wp -> + let workflow_id = workflow_id_of_job_waiter wp in +- String.Table.set worker.running_jobs ~key:workflow_id ~data:wp ; ++ Hashtbl.set worker.running_jobs ~key:workflow_id ~data:wp ; + Lwt.return (Some (job_of_job_waiter wp)) + | `Stop -> Lwt.return None + ) + + | Plugin_result r -> +- let Worker worker = String.Table.find_exn state.workers r.client_id in ++ let Worker worker = Hashtbl.find_exn state.workers r.client_id in + Lwt.return ( +- match String.Table.find_exn worker.running_jobs r.workflow_id with ++ match Hashtbl.find_exn worker.running_jobs r.workflow_id with + | Waiting_plugin wp -> Lwt.wakeup wp.waiter r.result + | Waiting_shell_command _ -> assert false (* should never happen *) + ) + | Shell_command_result r -> +- let Worker worker = String.Table.find_exn state.workers r.client_id in ++ let Worker worker = Hashtbl.find_exn state.workers r.client_id in + Lwt.return ( +- match String.Table.find_exn worker.running_jobs r.workflow_id with ++ match Hashtbl.find_exn worker.running_jobs r.workflow_id with + | Waiting_plugin _ -> assert false (* should never happen *) + | Waiting_shell_command wp -> Lwt.wakeup wp.waiter r.result + ) +@@ -307,7 +307,7 @@ module Server = struct + + let request_resource backend req = + Worker_allocator.request backend.state.alloc req >|= fun (worker_id, resource) -> +- String.Table.find_exn backend.state.workers worker_id, resource ++ Hashtbl.find_exn backend.state.workers worker_id, resource + + let release_resource backend worker_id res = + Worker_allocator.release backend.state.alloc worker_id res +@@ -334,7 +334,7 @@ module Server = struct + * loop () *) + + let eval backend { worker_id ; workflow_id } f x = +- let Worker worker = String.Table.find_exn backend.state.workers worker_id in ++ let Worker worker = Hashtbl.find_exn backend.state.workers worker_id in + let f () = f x in + let t, u = Lwt.wait () in + let job_waiter = Waiting_plugin { waiter = u ; f ; workflow_id } in +@@ -342,7 +342,7 @@ module Server = struct + t + + let run_shell_command backend { worker_id ; workflow_id } cmd = +- let Worker worker = String.Table.find_exn backend.state.workers worker_id in ++ let Worker worker = Hashtbl.find_exn backend.state.workers worker_id in + let t, u = Lwt.wait () in + let job = Waiting_shell_command { waiter = u ; cmd ; workflow_id } in + Lwt_queue.push worker.pending_jobs job ; +diff --git a/lib/utils/dot_output.ml b/lib/utils/dot_output.ml +index 90c299f..d13fceb 100644 +--- a/lib/utils/dot_output.ml ++++ b/lib/utils/dot_output.ml +@@ -24,7 +24,7 @@ module G = struct + (* let successors g u = fold_succ (fun h t -> h :: t) g u [] *) + + let rec of_workflow_aux seen acc u = +- if S.mem seen u then (seen, acc) ++ if Set.mem seen u then (seen, acc) + else ( + let deps = W.Any.deps u in + let seen, acc = +@@ -34,7 +34,7 @@ module G = struct + in + let acc = add_vertex acc u in + let acc = List.fold deps ~init:acc ~f:(fun acc v -> add_edge acc u v) in +- let seen = S.add seen u in ++ let seen = Set.add seen u in + seen, acc + ) + +@@ -109,7 +109,7 @@ let dot_output ?db oc g ~needed = + ] + in + let vertex_attributes u = +- let needed = (match db with None -> true | Some _ -> false) || S.mem needed u in ++ let needed = (match db with None -> true | Some _ -> false) || Set.mem needed u in + let color = if needed then black else light_gray in + let shape = `Shape (shape u) in + let W.Any w = u in +@@ -141,7 +141,7 @@ let dot_output ?db oc g ~needed = + | _ -> [] + in + let color = +- if (match db with None -> true | Some _ -> false) || (S.mem needed u && not (already_done u)) ++ if (match db with None -> true | Some _ -> false) || (Set.mem needed u && not (already_done u)) + then black else light_gray in + style @ [ `Color color ] + in +diff --git a/lib/utils/repo.ml b/lib/utils/repo.ml +index 06abcd5..206a99e 100644 +--- a/lib/utils/repo.ml ++++ b/lib/utils/repo.ml +@@ -160,7 +160,7 @@ let protected_set repo = + | Select s -> fold_path_workflow acc (W.Any s.dir) + | Input _ -> acc + | Shell _ +- | Plugin _ -> String.Set.add acc (W.id w) ++ | Plugin _ -> Set.add acc (W.id w) + | Trywith tw -> + fold_path_workflow (fold_path_workflow acc (W.Any tw.w)) (W.Any tw.failsafe) + | Ifelse ie -> +@@ -187,7 +187,7 @@ let cache_clip_fold ~bistro_dir repo ~f ~init = + let protected = protected_set repo in + let db = Db.init_exn bistro_dir in + Db.fold_cache db ~init ~f:(fun acc id -> +- f db acc (if String.Set.mem protected id then `Protected id else `Unprotected id) ++ f db acc (if Set.mem protected id then `Protected id else `Unprotected id) + ) + + let cache_clip_dry_run ~bistro_dir repo = diff --git a/pkgs/development/ocaml-modules/cfstream/default.nix b/pkgs/development/ocaml-modules/cfstream/default.nix index 22e78c1aeeb2..af721b63a8f9 100644 --- a/pkgs/development/ocaml-modules/cfstream/default.nix +++ b/pkgs/development/ocaml-modules/cfstream/default.nix @@ -13,7 +13,7 @@ buildDunePackage rec { hash = "sha256-iSg0QsTcU0MT/Cletl+hW6bKyH0jkp7Jixqu8H59UmQ="; }; - patches = [ ./git_commit.patch ]; + patches = [ ./git_commit.patch ./janestreet-0.16.patch ]; strictDeps = true; diff --git a/pkgs/development/ocaml-modules/cfstream/janestreet-0.16.patch b/pkgs/development/ocaml-modules/cfstream/janestreet-0.16.patch new file mode 100644 index 000000000000..afc665f30426 --- /dev/null +++ b/pkgs/development/ocaml-modules/cfstream/janestreet-0.16.patch @@ -0,0 +1,36 @@ +diff --git a/lib/CFStream_stream.ml b/lib/CFStream_stream.ml +index 25c0e5a..94da2e3 100644 +--- a/lib/CFStream_stream.ml ++++ b/lib/CFStream_stream.ml +@@ -287,7 +287,7 @@ let group_aux xs map eq = + ;; + + let group xs ~f = group_aux xs f Poly.( = ) +-let group_by xs ~eq = group_aux xs ident eq ++let group_by xs ~eq = group_aux xs Fn.id eq + + let chunk2 xs = + from (fun _ -> +@@ -615,11 +615,11 @@ let to_hashtbl xs = + let of_map t = of_list (Map.to_alist t) + + let to_map xs = +- fold xs ~init:Map.Poly.empty ~f:(fun accu (key, data) -> Map.Poly.set accu ~key ~data) ++ fold xs ~init:Map.Poly.empty ~f:(fun accu (key, data) -> Map.set accu ~key ~data) + ;; + + let of_set t = of_list (Set.to_list t) +-let to_set xs = fold xs ~init:Set.Poly.empty ~f:(fun accu e -> Set.Poly.add accu e) ++let to_set xs = fold xs ~init:Set.Poly.empty ~f:(fun accu e -> Set.add accu e) + + module Infix = struct + let ( -- ) x y = range x ~until:y +@@ -660,7 +660,7 @@ module Result = struct + | M.E e -> Result.Error e + ;; + +- let all xs ~f = all_gen ident xs ~f ++ let all xs ~f = all_gen Fn.id xs ~f + let all' xs ~f = all_gen (fun x -> Ok x) xs ~f + let to_exn = result_to_exn + diff --git a/pkgs/development/ocaml-modules/janestreet/0.16.nix b/pkgs/development/ocaml-modules/janestreet/0.16.nix new file mode 100644 index 000000000000..8adec0c53cfa --- /dev/null +++ b/pkgs/development/ocaml-modules/janestreet/0.16.nix @@ -0,0 +1,1223 @@ +{ self +, bash +, fetchpatch +, fzf +, lib +, openssl +, zstd +}: + +with self; + +{ + + abstract_algebra = janePackage { + pname = "abstract_algebra"; + hash = "sha256-hAZzc2ypbGE/8mxxk4GZqr17JlIYv71gZJMQ4plsK38="; + meta.description = "A small library describing abstract algebra concepts"; + propagatedBuildInputs = [ base ppx_jane ]; + }; + + accessor = janePackage { + pname = "accessor"; + hash = "sha256-yClfUXqwVoipF4WqbqC6VBVYc6t8MZYVoHGjchH7XQA="; + meta.description = "A library that makes it nicer to work with nested functional data structures"; + propagatedBuildInputs = [ higher_kinded ]; + }; + + accessor_async = janePackage { + pname = "accessor_async"; + hash = "sha256-kGT7aFNOgU8/2ez9L/lefb2LN7I87+WthZHnb+dY9PE="; + meta.description = "Accessors for Async types, for use with the Accessor library"; + propagatedBuildInputs = [ accessor_core async_kernel ]; + }; + + accessor_base = janePackage { + pname = "accessor_base"; + hash = "sha256-idnSNP6kfoV3I8QAMJ2YoUrewBpyte+0/C371aMTIxo="; + meta.description = "Accessors for Base types, for use with the Accessor library"; + propagatedBuildInputs = [ ppx_accessor ]; + }; + + accessor_core = janePackage { + pname = "accessor_core"; + hash = "sha256-f4s/I+xDi/aca1WgaE+P3CD4e80jenS0WHg4T1Stcbg="; + meta.description = "Accessors for Core types, for use with the Accessor library"; + propagatedBuildInputs = [ accessor_base core_kernel ]; + }; + + async = janePackage { + pname = "async"; + hash = "sha256-TpsC9sn8noiNI0aYbMalUUv3xlC2LMERsv6Gr928Vzc="; + meta.description = "Monadic concurrency library"; + propagatedBuildInputs = [ async_rpc_kernel async_unix textutils ]; + doCheck = false; # we don't have netkit_sockets + }; + + async_durable = janePackage { + pname = "async_durable"; + hash = "sha256-PImYpM9xNFUWeWRld4jFwWBRowUP1iXzdxkK/fP/rHE="; + meta.description = "Durable connections for use with async"; + propagatedBuildInputs = [ async_kernel async_rpc_kernel core core_kernel ppx_jane ]; + }; + + async_extra = janePackage { + pname = "async_extra"; + hash = "sha256-Y+gTlJuKmwvEEPuMPu7v0iYeNQtlzP8QiS0PSgoYrrI="; + meta.description = "Monadic concurrency library"; + propagatedBuildInputs = [ async_kernel ]; + }; + + async_find = janePackage { + pname = "async_find"; + hash = "sha256-PG6BJx9tfP+zcDaG+7WdHiv4jUqsUH2TvHV6UXdzPAg="; + meta.description = "Directory traversal with Async"; + propagatedBuildInputs = [ async ]; + }; + + async_inotify = janePackage { + pname = "async_inotify"; + hash = "sha256-seFbs06w3T+B49sw3nOjpXpoJbJ+IJ3qN5LnufrsE48="; + meta.description = "Async wrapper for inotify"; + propagatedBuildInputs = [ async_find inotify ]; + }; + + async_interactive = janePackage { + pname = "async_interactive"; + hash = "sha256-xZKVT8L2rOLBeg7wK0tD6twhkDfwQp5ZKy4DPp1UWq8="; + meta.description = "Utilities for building simple command-line based user interfaces"; + propagatedBuildInputs = [ async ]; + }; + + async_js = janePackage { + pname = "async_js"; + hash = "sha256-JyF1busOv9JWxp55oaxBozIQyCKlmAY3csBA4/98qy0="; + meta.description = "A small library that provide Async support for JavaScript platforms"; + buildInputs = [ js_of_ocaml-ppx ]; + propagatedBuildInputs = [ async_rpc_kernel js_of_ocaml uri-sexp ]; + }; + + async_kernel = janePackage { + pname = "async_kernel"; + hash = "sha256-EDgdZc6GRyiiFtnElNE9jGPEjPIUniP9uB/JoySkZz8="; + meta.description = "Monadic concurrency library"; + propagatedBuildInputs = [ core_kernel ]; + }; + + async_rpc_kernel = janePackage { + pname = "async_rpc_kernel"; + hash = "sha256-OccFMfhTRSQwx1LJcN8OkDpA62KabsyWn2hox84jqow="; + meta.description = "Platform-independent core of Async RPC library"; + propagatedBuildInputs = [ async_kernel protocol_version_header ]; + }; + + async_rpc_websocket = janePackage { + pname = "async_rpc_websocket"; + hash = "sha256-S3xIw/mew9YhtenWfp8ZD82WtOQSzJHtreT1+kRivus="; + meta.description = "Library to serve and dispatch Async RPCs over websockets"; + propagatedBuildInputs = [ async_rpc_kernel async_websocket cohttp_async_websocket ]; + }; + + async_sendfile = janePackage { + pname = "async_sendfile"; + hash = "sha256-ykl87/De56gz6JRQfTIeWrU823PT2fnFJr08GxuDYic="; + meta.description = "Thin wrapper around [Linux_ext.sendfile] to send full files"; + propagatedBuildInputs = [ async_unix ]; + }; + + async_shell = janePackage { + pname = "async_shell"; + hash = "sha256-DjIbadCjPymnkDsnonmxKumCWf5P9XO3ZaAwOaYRnbk="; + meta.description = "Shell helpers for Async"; + propagatedBuildInputs = [ async shell ]; + }; + + async_smtp = janePackage { + pname = "async_smtp"; + hash = "sha256-X0eegZMMU9EnC9Oi+6DjtwNmyzQYr3EKi1duNzEAfkk="; + meta.description = "SMTP client and server"; + propagatedBuildInputs = [ async_extra async_inotify async_sendfile async_shell async_ssl email_message resource_cache re2_stable sexp_macro ]; + }; + + async_ssl = janePackage { + pname = "async_ssl"; + hash = "sha256-83YKxvVb/JwBnQG4R/R1Ztik9T/hO4cbiNTfFnErpG4="; + meta.description = "Async wrappers for SSL"; + buildInputs = [ dune-configurator ]; + propagatedBuildInputs = [ async ctypes openssl ]; + }; + + async_unix = janePackage { + pname = "async_unix"; + hash = "sha256-dT+yJC73sxS4NPR/GC/FyVLbWtYpM9DqKykVk8PEEWU="; + meta.description = "Monadic concurrency library"; + propagatedBuildInputs = [ async_kernel core_unix ]; + }; + + async_websocket = janePackage { + pname = "async_websocket"; + hash = "sha256-Qy+A8ee6u5Vr05FNeaH/6Sdp9bcq3cnaDYO9OU06VW0="; + meta.description = "A library that implements the websocket protocol on top of Async"; + propagatedBuildInputs = [ async cryptokit ]; + }; + + babel = janePackage { + pname = "babel"; + hash = "sha256-nnMliU0d6vtHTYEy9uMi8nMaHvAsEXKN6uNByqZ28+c="; + meta.description = "A library for defining Rpcs that can evolve over time without breaking backward compatibility"; + propagatedBuildInputs = [ async_rpc_kernel core ppx_jane streamable tilde_f ]; + }; + + base = janePackage { + pname = "base"; + version = "0.16.2"; + hash = "sha256-8OvZe+aiWipJ6busBufx3OqERmqxBva55UOLjL8KoPc="; + meta.description = "Full standard library replacement for OCaml"; + buildInputs = [ dune-configurator ]; + propagatedBuildInputs = [ sexplib0 ]; + checkInputs = [ alcotest ]; + }; + + base_bigstring = janePackage { + pname = "base_bigstring"; + hash = "sha256-gQbzdr05DEowzd0k9JBTF0gGMwlaVwTVJuoKZ0u9voU="; + meta.description = "String type based on [Bigarray], for use in I/O and C-bindings"; + propagatedBuildInputs = [ int_repr ppx_jane ]; + }; + + base_trie = janePackage { + pname = "base_trie"; + hash = "sha256-KV/k3B0h/4rE+MY6f4qDnlaObMmewUS+NAN2M7sb+yw="; + meta.description = "Trie data structure library"; + propagatedBuildInputs = [ base core expect_test_helpers_core ppx_jane ]; + }; + + base_quickcheck = janePackage { + pname = "base_quickcheck"; + hash = "sha256-9Flg8vAoT6f+3lw9wETQhsaA1fSsQiqKeEhzo0qtDu4="; + meta.description = "Randomized testing framework, designed for compatibility with Base"; + propagatedBuildInputs = [ ppx_base ppx_fields_conv ppx_let ppx_sexp_value splittable_random ]; + }; + + bidirectional_map = janePackage { + pname = "bidirectional_map"; + hash = "sha256-YEzOdzanBJaskI2/xN9E3ozWnBXDyxJvY3g/qEE73yI="; + meta.description = "A library for bidirectional maps and multimaps"; + }; + + bignum = janePackage { + pname = "bignum"; + hash = "sha256-PmvqGImF1Nrr6swx5q3+9mCfSbieC3RvWuz8oCTkSgg="; + propagatedBuildInputs = [ core_kernel zarith zarith_stubs_js ]; + meta.description = "Core-flavoured wrapper around zarith's arbitrary-precision rationals"; + }; + + bin_prot = janePackage { + pname = "bin_prot"; + hash = "sha256-qFkM6TrTLnnFKmzQHktBb68HpBTMYhiURvnRKEoAevk="; + meta.description = "A binary protocol generator"; + propagatedBuildInputs = [ ppx_compare ppx_custom_printf ppx_fields_conv ppx_optcomp ppx_stable_witness ppx_variants_conv ]; + }; + + bonsai = janePackage { + pname = "bonsai"; + hash = "sha256-YJ+qkVG5PLBmioa1gP7y6jwn82smyyYDIwHwhDqNeWM="; + meta.description = "A library for building dynamic webapps, using Js_of_ocaml"; + buildInputs = [ ppx_pattern_bind ]; + nativeBuildInputs = [ ppx_css js_of_ocaml-compiler ocaml-embed-file ]; + propagatedBuildInputs = [ + async + async_durable + async_extra + async_rpc_websocket + babel + cohttp-async + core_bench + fuzzy_match + incr_dom + indentation_buffer + js_of_ocaml-ppx + ordinal_abbreviation + patdiff + polling_state_rpc + ppx_css + ppx_typed_fields + profunctor + sexp_grammar + textutils + ]; + }; + + cinaps = janePackage { + pname = "cinaps"; + version = "0.15.1"; + hash = "sha256-LycruanldSP251uYJjQqIfI76W0UQ6o5i5u8XjszBT0="; + meta.description = "Trivial metaprogramming tool"; + minimalOCamlVersion = "4.04"; + propagatedBuildInputs = [ re ]; + doCheck = false; # fails because ppx_base doesn't include ppx_js_style + }; + + cohttp_async_websocket = janePackage { + pname = "cohttp_async_websocket"; + hash = "sha256-OBtyKMyvfz0KNG4SWmvoTMVPnVTpO12N38q+kEbegJE="; + meta.description = "Websocket library for use with cohttp and async"; + propagatedBuildInputs = [ async_websocket cohttp-async ppx_jane uri-sexp ]; + }; + + cohttp_static_handler = janePackage { + pname = "cohttp_static_handler"; + hash = "sha256-7NCnJVArudBEvWARQUGlJuEq3kSCjpn5YtsLsL04bf4="; + meta.description = "A library for easily creating a cohttp handler for static files"; + propagatedBuildInputs = [ cohttp-async ]; + }; + + content_security_policy = janePackage { + pname = "content_security_policy"; + hash = "sha256-q/J+ZzeC6txyuRQzR8Hmu7cYJCQbxaMlVEmK8fj0hus="; + meta.description = "A library for building content-security policies"; + propagatedBuildInputs = [ core ppx_jane ]; + }; + + core = janePackage { + pname = "core"; + version = "0.16.1"; + hash = "sha256-cKJi67VLIsbLEgIZyFiVz00z/QEvJhNBb8+M+bR4iHU="; + meta.description = "Industrial strength alternative to OCaml's standard library"; + buildInputs = [ jst-config ]; + propagatedBuildInputs = [ base base_bigstring base_quickcheck ppx_jane time_now ]; + doCheck = false; # circular dependency with core_kernel + }; + + core_bench = janePackage { + pname = "core_bench"; + hash = "sha256-ASdu3ZUk+nkdNX9UbBQxKRdXBa073mWMDRW+Ceu3/t4="; + meta.description = "Benchmarking library"; + propagatedBuildInputs = [ textutils ]; + }; + + core_extended = janePackage { + pname = "core_extended"; + hash = "sha256-hcjmFDdVKCHK8u6D4Qn2a/HYTEZOvkXHcB6BTpbjF/s="; + meta.description = "Extra components that are not as closely vetted or as stable as Core"; + propagatedBuildInputs = [ core_unix record_builder ]; + }; + + core_kernel = janePackage { + pname = "core_kernel"; + hash = "sha256-YB3WMNLePrOKu+mmVedNo0pWN9x5fIaBxJsby56TFJU="; + meta.description = "System-independent part of Core"; + buildInputs = [ jst-config ]; + propagatedBuildInputs = [ base_bigstring core int_repr sexplib ]; + doCheck = false; # we don't have quickcheck_deprecated + }; + + core_unix = janePackage { + pname = "core_unix"; + hash = "sha256-mePpxjbUumMemHDKhRgACilchgS6QHZEV1ghYtT3flg="; + meta.description = "Unix-specific portions of Core"; + buildInputs = [ jst-config ]; + propagatedBuildInputs = [ core_kernel expect_test_helpers_core ocaml_intrinsics ppx_jane timezone spawn ]; + postPatch = '' + patchShebangs unix_pseudo_terminal/src/discover.sh + ''; + }; + + csvfields = janePackage { + pname = "csvfields"; + hash = "sha256-FEkjRmLeqNvauBlrY2xtLZfxVfnFWU8w8noEArPUieo="; + propagatedBuildInputs = [ core num ]; + meta.description = "Runtime support for ppx_xml_conv and ppx_csv_conv"; + }; + + dedent = janePackage { + pname = "dedent"; + hash = "sha256-fzytLr3tVr2vPmykUBzNFMxnyMcIeeo8S9BydsTKnQw="; + propagatedBuildInputs = [ base ppx_jane stdio ]; + meta.description = "A library for improving redability of multi-line string constants in code"; + }; + + delimited_parsing = janePackage { + pname = "delimited_parsing"; + hash = "sha256-XyO3hzPz48i1cnMTJvZfarM6HC7qdHqdftp9SnCjPEU="; + propagatedBuildInputs = [ async core_extended ]; + meta.description = "Parsing of character (e.g., comma) separated and fixed-width values"; + }; + + diffable = janePackage { + pname = "diffable"; + hash = "sha256-ascQUbxzvRR8XrroaupyFZ2YNQMvlXn4PemumYTwRF4="; + propagatedBuildInputs = [ core ppx_jane stored_reversed streamable ]; + meta.description = "An interface for diffs"; + }; + + ecaml = janePackage { + pname = "ecaml"; + hash = "sha256-VS7eTTD85ci3mJIXd2pG1Y/ygT9dCIvfzU2HtOufW6U="; + meta.description = "Library for writing Emacs plugin in OCaml"; + propagatedBuildInputs = [ async expect_test_helpers_core ]; + }; + + email_message = janePackage { + pname = "email_message"; + hash = "sha256-eso68owbAspjaVgj/wGFQ7VQYlAwyYV3oNitLQWiRPA="; + meta.description = "E-mail message parser"; + propagatedBuildInputs = [ angstrom async base64 cryptokit magic-mime re2 ]; + }; + + env_config = janePackage { + pname = "env_config"; + hash = "sha256-CvvpKI7F40DVC7iByrzCqW1ilPiIhdDPYaJrDoUZVSs="; + meta.description = "Helper library for retrieving configuration from an environment variable"; + propagatedBuildInputs = [ async core core_unix ppx_jane ]; + }; + + expect_test_helpers_async = janePackage { + pname = "expect_test_helpers_async"; + hash = "sha256-dEvOMb1aCEt05XtkKIC9jWoIQ/2zM0Gj+K/ZN3bFjeI="; + meta.description = "Async helpers for writing expectation tests"; + propagatedBuildInputs = [ async expect_test_helpers_core ]; + }; + + expect_test_helpers_core = janePackage { + pname = "expect_test_helpers_core"; + hash = "sha256-8DsMwk9WhQQ7iMNYSFBglfbcgvE5dySt4J4qjzJ3dJk="; + meta.description = "Helpers for writing expectation tests"; + propagatedBuildInputs = [ core_kernel sexp_pretty ]; + }; + + fieldslib = janePackage { + pname = "fieldslib"; + hash = "sha256-dwkO65sBsPfTF0F2FKrnttEjhAY2OMbJetSgOfUXk3A="; + meta.description = "Syntax extension to define first class values representing record fields, to get and set record fields, iterate and fold over all fields of a record and create new record values"; + propagatedBuildInputs = [ base ]; + }; + + file_path = janePackage { + pname = "file_path"; + hash = "sha256-EEpDZNgUgyeqivRhZgQWWlerl+7OOcvAbjjQ3e1NYOQ="; + meta.description = + "A library for typed manipulation of UNIX-style file paths"; + propagatedBuildInputs = [ + async + core + core_kernel + core_unix + expect_test_helpers_async + expect_test_helpers_core + ppx_jane + ]; + }; + + fuzzy_match = janePackage { + pname = "fuzzy_match"; + hash = "sha256-M3yOqP0/OZFbqZZpgDdhJ/FZU3MhKwIXbWjwuMlxe2Q="; + meta.description = "A library for fuzzy string matching"; + propagatedBuildInputs = [ core ppx_jane ]; + }; + + fzf = janePackage { + pname = "fzf"; + hash = "sha256-IQ2wze34LlOutecDOrPhj3U7MFVJTSjQW+If3QyHoes="; + meta.description = "A library for running the fzf command line tool"; + propagatedBuildInputs = [ async core_kernel ppx_jane ]; + postPatch = '' + substituteInPlace src/fzf.ml --replace /usr/bin/fzf ${fzf}/bin/fzf + ''; + }; + + higher_kinded = janePackage { + pname = "higher_kinded"; + hash = "sha256-aCpYc7f4mrPsGp038YabEyw72cA6GbCKsok+5Hej5P0="; + meta.description = "A library with an encoding of higher kinded types in OCaml"; + propagatedBuildInputs = [ base ppx_jane ]; + }; + + incr_dom = janePackage { + pname = "incr_dom"; + hash = "sha256-fnD/YnaGK6MIy/fL6bDwcoGDJhHo2+1l8dCXxwN28kg="; + meta.description = "A library for building dynamic webapps, using Js_of_ocaml"; + buildInputs = [ js_of_ocaml-ppx ]; + propagatedBuildInputs = [ async_js incr_map incr_select virtual_dom ]; + }; + + incr_map = janePackage { + pname = "incr_map"; + hash = "sha256-D3ZD0C4YfZOfXw+3CtqL8DKcz+b06UL8AF7Rf9x+hps="; + meta.description = "Helpers for incremental operations on map like data structures"; + buildInputs = [ ppx_pattern_bind ]; + propagatedBuildInputs = [ abstract_algebra bignum diffable incremental streamable ]; + }; + + incr_select = janePackage { + pname = "incr_select"; + hash = "sha256-gRUF0QsDaZfHU7Mexl5nR8xCN+65v28/r/ciueR5NdE="; + meta.description = "Handling of large set of incremental outputs from a single input"; + propagatedBuildInputs = [ incremental ]; + }; + + incremental = janePackage { + pname = "incremental"; + hash = "sha256-PXGY0M2xeVWDLeS3SrqXy1dqsyeKgndGT6NpuiyNQQQ="; + meta.description = "Library for incremental computations"; + propagatedBuildInputs = [ core_kernel lru_cache ]; + }; + + indentation_buffer = janePackage { + pname = "indentation_buffer"; + hash = "sha256-5ayWs7yUnuxh5S3Dp0GbYTkGXttDMomfZak4MHePFbk="; + meta.description = "A library for building strings with indentation"; + propagatedBuildInputs = [ core ppx_jane ]; + }; + + int_repr = janePackage { + pname = "int_repr"; + hash = "sha256-lghu2U1JwZaR4dkd9PcJEW3pZSPoaFhUluIDwFAYFK0="; + meta.description = "Integers of various widths"; + propagatedBuildInputs = [ base ppx_jane ]; + }; + + janestreet_cpuid = janePackage { + pname = "janestreet_cpuid"; + hash = "sha256-lN8+8uhcVn3AoApWzqeCe/It1G6f0VgZzFcwFEckejk="; + meta.description = "A library for parsing CPU capabilities out of the `cpuid` instruction"; + propagatedBuildInputs = [ core core_kernel ppx_jane ]; + }; + + janestreet_csv = janePackage { + pname = "janestreet_csv"; + hash = "sha256-XLyHxVlgBvMIBrG2wzOudbKqy+N12Boheb3K+6o9y1o="; + propagatedBuildInputs = [ async bignum core_kernel core_unix csvfields delimited_parsing fieldslib numeric_string ppx_jane re2 textutils tyxml ocaml_pcre ]; + meta.description = "Tools for working with CSVs on the command line"; + }; + + jane_rope = janePackage { + pname = "jane_rope"; + hash = "sha256-MpjbwV+VS3qRuW8kxhjGzsITEdrPeWyr0V+LiKR6U8U="; + meta.description = "String representation with cheap concatenation"; + propagatedBuildInputs = [ base ppx_jane ]; + }; + + jane-street-headers = janePackage { + pname = "jane-street-headers"; + hash = "sha256-vS6tPg8LJolte/zI5KHFYCtNuZjn//cmd94Wls3bLCU="; + meta.description = "Jane Street C header files"; + }; + + js_of_ocaml_patches = janePackage { + pname = "js_of_ocaml_patches"; + hash = "sha256-Uj+X/0XUP5Za8NKfHGo9OZnqzKCiuurYJyluD6b0wOQ="; + meta.description = "Additions to js_of_ocaml's standard library that are required by Jane Street libraries"; + propagatedBuildInputs = [ js_of_ocaml js_of_ocaml-ppx ]; + }; + + jsonaf = janePackage { + pname = "jsonaf"; + hash = "sha256-Gn54NUg4YOyrXY5kXCZhHFz24CfUT9c55cJ2sOsNVw8="; + meta.description = "A library for parsing, manipulating, and serializing data structured as JSON"; + propagatedBuildInputs = [ base ppx_jane angstrom faraday ]; + }; + + jst-config = janePackage { + pname = "jst-config"; + hash = "sha256-GviY+zYza7UNYOlAnfAz0aH4LH2B5xA+7iELLuZLgQQ="; + meta.description = "Compile-time configuration for Jane Street libraries"; + buildInputs = [ dune-configurator ppx_assert stdio ]; + }; + + lru_cache = janePackage { + pname = "lru_cache"; + hash = "sha256-FqOBC4kBL9IuFIL4JrVU7iF1AUu+1R/CchR52eyEsa8="; + meta.description = "An LRU Cache implementation"; + propagatedBuildInputs = [ core_kernel ppx_jane ]; + }; + + man_in_the_middle_debugger = janePackage { + pname = "man_in_the_middle_debugger"; + hash = "sha256-b2A/ITf9gx3thSdEY2n7jxKrMOVDpzx4JkSMB3aTyE4="; + meta.description = "Man-in-the-middle debugging library"; + propagatedBuildInputs = [ async core ppx_jane angstrom angstrom-async ]; + }; + + n_ary = janePackage { + pname = "n_ary"; + hash = "sha256-ofstQs5R25NTP4EtBIzDE/Mzg9ZzAJKfAF838uu0zuE="; + meta.description = "A library for N-ary datatypes and operations"; + propagatedBuildInputs = [ base expect_test_helpers_core ppx_compare ppx_enumerate ppx_hash ppx_jane ppx_sexp_conv ppx_sexp_message ]; + }; + + numeric_string = janePackage { + pname = "numeric_string"; + hash = "sha256-MzRPXMR4Pi07mfJQgOV6R1Z22y2tvQTCq22+00aY1ik="; + meta.description = "A comparison function for strings that sorts numeric fragments of strings according to their numeric value"; + propagatedBuildInputs = [ base ppx_jane ]; + }; + + ocaml-compiler-libs = janePackage { + pname = "ocaml-compiler-libs"; + version = "0.12.4"; + hash = "00if2f7j9d8igdkj4rck3p74y17j6b233l91mq02drzrxj199qjv"; + minimalOCamlVersion = "4.04.1"; + meta.description = "OCaml compiler libraries repackaged"; + }; + + ocaml-embed-file = janePackage { + pname = "ocaml-embed-file"; + hash = "sha256-rs+68VATumUgZQ9QrG+By5yNc8cy7avL0BDeqwix0co="; + propagatedBuildInputs = [ async ppx_jane ]; + meta.description = "Files contents as module constants"; + }; + + ocaml_intrinsics = janePackage { + pname = "ocaml_intrinsics"; + hash = "sha256-fbFXTakzxQEeCONSXRXh8FX3HD6h49LZHVsH62Zu3PA="; + meta.description = "Intrinsics"; + buildInputs = [ dune-configurator ]; + doCheck = false; # test rules broken + }; + + of_json = janePackage { + pname = "of_json"; + hash = "sha256-qh9mX03Fk9Jb8yox7mZ/CGbWecszK15oaygKbJVDqa0="; + meta.description = "A friendly applicative interface for Jsonaf"; + buildInputs = [ core core_extended jsonaf ppx_jane ]; + }; + + ordinal_abbreviation = janePackage { + pname = "ordinal_abbreviation"; + hash = "sha256-bGlzFcM6Yw8fcuovrv11WNtAB4mVYv4BjuMlkhsHomQ="; + meta.description = "A minimal library for generating ordinal names of integers"; + buildInputs = [ base ppx_jane ]; + }; + + parsexp = janePackage { + pname = "parsexp"; + hash = "sha256-oc2ASDtUyRBB68tjAoblryAcXF+u3XP1mkQPO5hNbKo="; + meta.description = "S-expression parsing library"; + propagatedBuildInputs = [ base sexplib0 ]; + }; + + patdiff = janePackage { + pname = "patdiff"; + hash = "sha256-iVRYKgVBBJws3ZlUwnZt52bIydMtzV7a2R5mjksQAps="; + + # Used by patdiff-git-wrapper. Providing it here also causes the shebang + # line to be automatically patched. + buildInputs = [ bash ]; + propagatedBuildInputs = [ core_unix patience_diff ocaml_pcre ]; + meta = { + description = "File Diff using the Patience Diff algorithm"; + }; + }; + + patience_diff = janePackage { + pname = "patience_diff"; + hash = "sha256-JZd99bwLUNhFHng55d77yXSw9u50ahugepesXVdUl04="; + meta.description = "Diff library using Bram Cohen's patience diff algorithm"; + propagatedBuildInputs = [ core_kernel ]; + }; + + polling_state_rpc = janePackage { + pname = "polling_state_rpc"; + hash = "sha256-l7SMFI+U2rde2OSUNOXPb9NBsvjPrBcxStNooxMgVB8="; + meta.description = "An RPC which tracks state on the client and server so it only needs to send diffs across the wire"; + propagatedBuildInputs = [ async_kernel async_rpc_kernel core core_kernel diffable ppx_jane ]; + }; + + posixat = janePackage { + pname = "posixat"; + hash = "sha256-Nhp5jiK/TTwQXY5Bm4TTeH+xDTdXtvkSq5CS/Sr1UgA="; + propagatedBuildInputs = [ ppx_optcomp ppx_sexp_conv ]; + meta.description = "Binding to the posix *at functions"; + }; + + ppx_accessor = janePackage { + pname = "ppx_accessor"; + hash = "sha256-o70q8eSbPeuGkIcCnKoK0BpaqPhy/NS7x2YYR6wfki8="; + meta.description = "[@@deriving] plugin to generate accessors for use with the Accessor libraries"; + propagatedBuildInputs = [ accessor ]; + }; + + ppx_assert = janePackage { + pname = "ppx_assert"; + hash = "sha256-LrpKE0BlFC3QseSXf5WhI71blshUzhH8yo2nXjAtiB8="; + meta.description = "Assert-like extension nodes that raise useful errors on failure"; + propagatedBuildInputs = [ ppx_cold ppx_compare ppx_here ppx_sexp_conv ]; + }; + + ppx_base = janePackage { + pname = "ppx_base"; + hash = "sha256-Ak+7+33qEGYwZWbES032SdkFOsae0+tWtR/DV+xrB10="; + meta.description = "Base set of ppx rewriters"; + propagatedBuildInputs = [ ppx_cold ppx_enumerate ppx_globalize ppx_hash ]; + }; + + ppx_bench = janePackage { + pname = "ppx_bench"; + hash = "sha256-NZlzEMruf89NsI4jfQJLSPhjk/PN47hLbJzGEN8GPl8="; + meta.description = "Syntax extension for writing in-line benchmarks in ocaml code"; + propagatedBuildInputs = [ ppx_inline_test ]; + }; + + ppx_bin_prot = janePackage { + pname = "ppx_bin_prot"; + hash = "sha256-ktfa4umCnLd9oY2WWX/5R7vPB/g7DJX8x3nF9fYLNCQ="; + meta.description = "Generation of bin_prot readers and writers from types"; + propagatedBuildInputs = [ bin_prot ppx_here ]; + doCheck = false; # circular dependency with ppx_jane + }; + + ppx_cold = janePackage { + pname = "ppx_cold"; + hash = "sha256-boP07qHPbzf4ntLdV18oyID09ZUOfkIn9ZdQ0DvtrUA="; + meta.description = "Expands [@cold] into [@inline never][@specialise never][@local never]"; + propagatedBuildInputs = [ ppxlib ]; + }; + + ppx_compare = janePackage { + pname = "ppx_compare"; + hash = "sha256-4bZdhyfnzTjH4E303O6GO2jW968ftuXwoE4/x854JOo="; + meta.description = "Generation of comparison functions from types"; + propagatedBuildInputs = [ ppxlib base ]; + }; + + ppx_custom_printf = janePackage { + pname = "ppx_custom_printf"; + hash = "sha256-V30ijRgcma/rwysPxNAFnuJIb7XFrfi7mfjJxN+rSak="; + meta.description = "Printf-style format-strings for user-defined string conversion"; + propagatedBuildInputs = [ ppx_sexp_conv ]; + }; + + ppx_css = janePackage { + pname = "ppx_css"; + hash = "sha256-spT/dJW8YJtG4pOku9r6VVlBAMwGakTrr1euiABeqsU="; + meta.description = "A ppx that takes in css strings and produces a module for accessing the unique names defined within"; + propagatedBuildInputs = [ async async_unix core_kernel core_unix ppxlib js_of_ocaml js_of_ocaml-ppx sedlex virtual_dom ]; + }; + + ppx_demo = janePackage { + pname = "ppx_demo"; + hash = "sha256-t/jz94YpwmorhWlcuflIZe0l85cESE62L9I7NMASVWM="; + meta.description = "PPX that exposes the source code string of an expression/module structure"; + propagatedBuildInputs = [ core dedent ppx_jane ppxlib ]; + }; + + ppx_derive_at_runtime = janePackage { + pname = "ppx_derive_at_runtime"; + hash = "sha256-UESWOkyWTHJlsE6KZkty9P+iHI3oY1rLve3raRAqMbk="; + meta.description = "Define a new ppx deriver by naming a runtime module"; + propagatedBuildInputs = [ base expect_test_helpers_core ppx_jane ppxlib ]; + }; + + ppx_disable_unused_warnings = janePackage { + pname = "ppx_disable_unused_warnings"; + hash = "sha256-jVNXmAy/Ti7MZmbdBjFuDwbmIILJB57flmmB6MoyCtY="; + meta.description = "Expands [@disable_unused_warnings] into [@warning \"-20-26-32-33-34-35-36-37-38-39-60-66-67\"]"; + propagatedBuildInputs = [ ppxlib ]; + }; + + ppx_enumerate = janePackage { + pname = "ppx_enumerate"; + hash = "sha256-v5JPu+qEXoZ1+mu/yTZW2sfCzU0K60/sInG/Ox1D35s="; + meta.description = "Generate a list containing all values of a finite type"; + propagatedBuildInputs = [ ppxlib ]; + }; + + ppx_expect = janePackage { + pname = "ppx_expect"; + hash = "sha256-H5ybRHufycdyCxKu370+QZAMUPQsHVD+6nD93tzvLn8="; + meta.description = "Cram like framework for OCaml"; + propagatedBuildInputs = [ ppx_here ppx_inline_test re ]; + doCheck = false; # test build rules broken + }; + + ppx_fields_conv = janePackage { + pname = "ppx_fields_conv"; + hash = "sha256-kl0JZocMWo2KNciCWkT4nIbJZbh56ijZmlZWbxV8Qj0="; + meta.description = "Generation of accessor and iteration functions for ocaml records"; + propagatedBuildInputs = [ fieldslib ppxlib ]; + }; + + ppx_fixed_literal = janePackage { + pname = "ppx_fixed_literal"; + hash = "sha256-vS2KcCO0fVCmiIBkUBgK6qnqdjREj57QCujHERcJTyo="; + meta.description = "Simpler notation for fixed point literals"; + propagatedBuildInputs = [ ppxlib ]; + }; + + ppx_globalize = janePackage { + pname = "ppx_globalize"; + hash = "sha256-SG7710YPwWmhRVl7wN3ZQz3ZMTw3cpoywVSeVQAI3Zc="; + meta.description = "A ppx rewriter that generates functions to copy local values to the global heap"; + propagatedBuildInputs = [ base ppxlib ]; + }; + + ppx_hash = janePackage { + pname = "ppx_hash"; + hash = "sha256-ZmdW+q7fak8iG42jRQgZ6chmjHHwrDSy9wg7pq/6zwk="; + meta.description = "A ppx rewriter that generates hash functions from type expressions and definitions"; + propagatedBuildInputs = [ ppx_compare ppx_sexp_conv ]; + }; + + ppx_here = janePackage { + pname = "ppx_here"; + hash = "sha256-ULEom0pTusxf2k2hduv+5NVp7pW5doA/e3QGQNJfGoM="; + meta.description = "Expands [%here] into its location"; + propagatedBuildInputs = [ ppxlib ]; + doCheck = false; # test build rules broken + }; + + ppx_ignore_instrumentation = janePackage { + pname = "ppx_ignore_instrumentation"; + hash = "sha256-rAdxCgAKz0jNR8ppRJO4oAEvgXbcU4J4mpreAyeGe6k="; + meta.description = "Ignore Jane Street specific instrumentation extensions"; + propagatedBuildInputs = [ ppxlib ]; + }; + + ppx_inline_test = janePackage { + pname = "ppx_inline_test"; + hash = "sha256-Ql0/80KitKvW3xffeCapYREmZvlg+QWCb2JM2T4Rjlc="; + meta.description = "Syntax extension for writing in-line tests in ocaml code"; + propagatedBuildInputs = [ ppxlib time_now ]; + doCheck = false; # test build rules broken + }; + + ppx_jane = janePackage { + pname = "ppx_jane"; + hash = "sha256-v+/wdEGaXdMWDBa0eJO0uR18G/pDwHjsjaskoEuLusA="; + meta.description = "Standard Jane Street ppx rewriters"; + propagatedBuildInputs = [ base_quickcheck ppx_bin_prot ppx_disable_unused_warnings ppx_expect ppx_fixed_literal ppx_ignore_instrumentation ppx_log ppx_module_timer ppx_optcomp ppx_optional ppx_pipebang ppx_stable ppx_string ppx_tydi ppx_typerep_conv ppx_variants_conv ]; + }; + + ppx_jsonaf_conv = janePackage { + pname = "ppx_jsonaf_conv"; + hash = "sha256-GWDhSLtr2+VG3XFIbHgWUcLJFniC7/z90ndiE919CBo="; + meta.description = + "[@@deriving] plugin to generate Jsonaf conversion functions"; + propagatedBuildInputs = [ base jsonaf ppx_jane ppxlib ]; + }; + + ppx_js_style = janePackage { + pname = "ppx_js_style"; + hash = "sha256-q5CLyeu+5qjegLrJkQVMnId3HMvZ8j3c0PqEa2vTBtU="; + meta.description = "Code style checker for Jane Street Packages"; + propagatedBuildInputs = [ octavius ppxlib ]; + }; + + ppx_let = janePackage { + pname = "ppx_let"; + hash = "sha256-/kEkYXFZ5OyTM4i/WWViaxKvigpoKKoiWtUWuEMkgBE="; + meta.description = "Monadic let-bindings"; + propagatedBuildInputs = [ ppxlib ppx_here ]; + }; + + ppx_log = janePackage { + pname = "ppx_log"; + hash = "sha256-/HwoxBWKuVqTDYe4u0cYNGqg2Lj0h49U2VrFa4cpE2g="; + meta.description = "Ppx_sexp_message-like extension nodes for lazily rendering log messages"; + propagatedBuildInputs = [ base ppx_here ppx_sexp_conv ppx_sexp_message sexplib ]; + }; + + ppx_module_timer = janePackage { + pname = "ppx_module_timer"; + hash = "sha256-AfG+ZnacrR6p7MOvtktVKVLrMBpNMkX9b2+eqNZNRF4="; + meta.description = "Ppx rewriter that records top-level module startup times"; + propagatedBuildInputs = [ time_now ]; + }; + + ppx_optcomp = janePackage { + pname = "ppx_optcomp"; + hash = "sha256-TONxBQq/b0kc89f3+jItHd9SnerNx8xa2AjO7HOW+xQ="; + meta.description = "Optional compilation for OCaml"; + propagatedBuildInputs = [ ppxlib ]; + }; + + ppx_optional = janePackage { + pname = "ppx_optional"; + hash = "sha256-1GpKEEH1Ul+W0k4/8Mra/qYlyFpeMfZ3xrmB3X7uve0="; + meta.description = "Pattern matching on flat options"; + propagatedBuildInputs = [ ppxlib ]; + }; + + ppx_pattern_bind = janePackage { + pname = "ppx_pattern_bind"; + hash = "sha256-ShR8N71a7sz5XaKDyybsy+K0Uu7sYMgvpMADVxmrI/g="; + meta.description = "A ppx for writing fast incremental bind nodes in a pattern match"; + propagatedBuildInputs = [ ppx_let ]; + }; + + ppx_pipebang = janePackage { + pname = "ppx_pipebang"; + hash = "sha256-gSS+vfsYw3FFOFZ8/iRnP3rxokKAU7EPa1wXq7SbJBk="; + meta.description = "A ppx rewriter that inlines reverse application operators `|>` and `|!`"; + propagatedBuildInputs = [ ppxlib ]; + }; + + ppx_python = janePackage { + pname = "ppx_python"; + hash = "sha256-lpc6F+Scc5ECdOXPWowKSWRnFSzKbmE8oHs7zCjq3j8="; + meta.description = "A [@@deriving] plugin to generate Python conversion functions "; + propagatedBuildInputs = [ ppx_base ppxlib pyml ]; + }; + + ppx_sexp_conv = janePackage { + pname = "ppx_sexp_conv"; + hash = "sha256-eCQfYAxZZmfNTbPrFW0sqrj63kIdIQ1MAlImCaMop68="; + meta.description = "[@@deriving] plugin to generate S-expression conversion functions"; + propagatedBuildInputs = [ ppxlib sexplib0 base ]; + }; + + ppx_sexp_message = janePackage { + pname = "ppx_sexp_message"; + hash = "sha256-4g3Fjrjqhw+XNkCyxrXkgZDEa3e+ytPsEtQA2xSv+jA="; + meta.description = "A ppx rewriter for easy construction of s-expressions"; + propagatedBuildInputs = [ ppx_here ppx_sexp_conv ]; + }; + + ppx_sexp_value = janePackage { + pname = "ppx_sexp_value"; + hash = "sha256-LsP+deeFYxB38xXw7LLB3gOMGZiUOFRYklGVY7DMmvE="; + meta.description = "A ppx rewriter that simplifies building s-expressions from ocaml values"; + propagatedBuildInputs = [ ppx_here ppx_sexp_conv ]; + }; + + ppx_stable = janePackage { + pname = "ppx_stable"; + hash = "sha256-DFCBJY+Q8LjXSF9vHwPpUJLNyMoAXdDwQZrvhl+9g0U="; + meta.description = "Stable types conversions generator"; + propagatedBuildInputs = [ ppxlib ]; + }; + + ppx_stable_witness = janePackage { + pname = "ppx_stable_witness"; + hash = "sha256-W1CN4xspM8NJiXfi7OsngfzWnLEUmBs+IRLwHfxX9d4="; + meta.description = "Ppx extension for deriving a witness that a type is intended to be stable"; + propagatedBuildInputs = [ base ppxlib ]; + }; + + ppx_string = janePackage { + pname = "ppx_string"; + hash = "sha256-GQlgiaES8wc6Y7rTgmPrf9UfMfu125VoNGEbdc7kFsk="; + meta.description = "Ppx extension for string interpolation"; + propagatedBuildInputs = [ ppx_base ppxlib stdio ]; + }; + + ppx_tydi = janePackage { + pname = "ppx_tydi"; + hash = "sha256-neu2Z7TgQdBzf8UtYDRhnGp3Iggfd90Fr+gQuwVTMOo="; + meta.description = "Let expressions, inferring pattern type from expression"; + propagatedBuildInputs = [ base ppxlib ]; + }; + + ppx_typed_fields = janePackage { + pname = "ppx_typed_fields"; + hash = "sha256-l4lCQ4n5FLPS82sb3FgW+HF2OEY/kY10sNfr+aQF8x8="; + meta.description = "GADT-based field accessors and utilities"; + propagatedBuildInputs = [ core ppx_jane ppxlib ]; + }; + + ppx_typerep_conv = janePackage { + pname = "ppx_typerep_conv"; + hash = "sha256-DxjgwZee0jOea7qyPfEhRrdcKWQb2jtjrowiJszS+Fs="; + meta.description = "Generation of runtime types from type declarations"; + propagatedBuildInputs = [ ppxlib typerep ]; + }; + + ppx_variants_conv = janePackage { + pname = "ppx_variants_conv"; + hash = "sha256-Q/CCcMrD+XN5YRMzKvXuiQHfcwXwI773s8x150/eMzs="; + meta.description = "Generation of accessor and iteration functions for ocaml variant types"; + propagatedBuildInputs = [ variantslib ppxlib ]; + }; + + pythonlib = janePackage { + pname = "pythonlib"; + version = "0.16"; + hash = "sha256-HrsdtwPSDSaMB9CDIR9P5iaAmLihUrReuNAPIYa+s3Y="; + meta.description = "A library to help writing wrappers around ocaml code for python"; + propagatedBuildInputs = [ base core expect_test_helpers_core ppx_compare ppx_expect ppx_here ppx_let ppx_python ppx_string stdio typerep pyml ]; + meta.broken = lib.versionAtLeast ocaml.version "4.14"; + }; + + profunctor = janePackage { + pname = "profunctor"; + hash = "sha256-CFHMtCuBnrlr+B2cdJm2Tamt0A/e+f3SnjEavvE31xQ="; + meta.description = "A library providing a signature for simple profunctors and traversal of a record"; + propagatedBuildInputs = [ base ppx_jane record_builder ]; + }; + + protocol_version_header = janePackage { + pname = "protocol_version_header"; + hash = "sha256-GVjnwne6ksjY9ptLOpbsgG0La6eiCJf1w4teYEtgJrA="; + meta.description = "Protocol versioning"; + propagatedBuildInputs = [ core_kernel ]; + }; + + re2 = janePackage { + pname = "re2"; + hash = "sha256-ZRJ7ooXtatEEh0sPL8M9OZ+6s7xNdTuw0Ot6txiG16I="; + meta.description = "OCaml bindings for RE2, Google's regular expression library"; + propagatedBuildInputs = [ core_kernel jane_rope regex_parser_intf ]; + prePatch = '' + substituteInPlace src/re2_c/dune --replace 'CXX=g++' 'CXX=c++' + substituteInPlace src/dune --replace '(cxx_flags (:standard \ -pedantic) (-I re2_c/libre2))' '(cxx_flags (:standard \ -pedantic) (-I re2_c/libre2) (-x c++))' + ''; + }; + + re2_stable = janePackage { + pname = "re2_stable"; + version = "0.14.0"; + hash = "sha256-gyet2Pzn7ZIqQ+UP2J51pRmwaESY2LSGTqCMZZwDTE4="; + meta.description = "Re2_stable adds an incomplete but stable serialization of Re2"; + propagatedBuildInputs = [ core re2 ]; + }; + + record_builder = janePackage { + pname = "record_builder"; + hash = "sha256-46zGgN9RlDjoSbi8RimuQVrMhy65Gpic0YPZpHOeoo0="; + meta.description = "A library which provides traversal of records with an applicative"; + propagatedBuildInputs = [ base ppx_jane ]; + }; + + redis-async = janePackage { + pname = "redis-async"; + hash = "sha256-5msIS2m8nkaprR8NEBfKFWZBWaDJiUtjHbfPelg9/os="; + meta.description = "Redis client for Async applications"; + propagatedBuildInputs = [ async bignum core core_kernel ppx_jane ]; + }; + + regex_parser_intf = janePackage { + pname = "regex_parser_intf"; + hash = "sha256-huzHtUIIVRd5pE7VU1oUjN20S55L6+WCvoLlQ0FCD7A="; + meta.description = "Interface shared by Re_parser and Re2.Parser"; + propagatedBuildInputs = [ base ]; + }; + + resource_cache = janePackage { + pname = "resource_cache"; + hash = "sha256-dN4skSHswgRYLZqN/tqhFFTfgoN8H/LgTgoe+5ZI5zE="; + meta.description = "General resource cache"; + propagatedBuildInputs = [ async_rpc_kernel ]; + }; + + semantic_version = janePackage { + pname = "semantic_version"; + hash = "sha256-KJanaDUW56ndvnTlnPeQgh0C7zsRqXJ328gcEiVDrmc="; + meta.description = "Semantic versioning"; + propagatedBuildInputs = [ core ppx_jane re ]; + }; + + sexp = janePackage { + pname = "sexp"; + hash = "sha256-JWRYi5lX9UOKg+RGvW6FO61t2HlnJKXhzctOHXe0bCM="; + propagatedBuildInputs = [ + async + core + csvfields + jsonaf + re2 + sexp_diff + sexp_macro + sexp_pretty + sexp_select + shell + ]; + meta.description = "S-expression swiss knife"; + }; + + sexp_grammar = janePackage { + pname = "sexp_grammar"; + hash = "sha256-Y/abRingL4+3qvaKgW9jH46E9uq7jYE2+kgr8ERKqfI="; + propagatedBuildInputs = [ core ppx_bin_prot ppx_compare ppx_hash ppx_let ppx_sexp_conv ppx_sexp_message zarith ]; + meta.description = "Helpers for manipulating [Sexplib.Sexp_grammar] values"; + }; + + sexp_diff = janePackage { + pname = "sexp_diff"; + hash = "sha256-2dMBKf7eUbKZtvV7Ol2mPMzYJOCDHuOm9xFZ8vkmp/0="; + propagatedBuildInputs = [ core_kernel ]; + meta.description = "Code for computing the diff of two sexps"; + }; + + sexp_macro = janePackage { + pname = "sexp_macro"; + hash = "sha256-x9WsFFrV7wUqgPUw8KkfyzOxLrS5h5++OSK8QljeQqg="; + propagatedBuildInputs = [ async sexplib ]; + meta.description = "Sexp macros"; + }; + + sexp_pretty = janePackage { + pname = "sexp_pretty"; + hash = "sha256-tcWdYZ717LkGowRSRoEcUNY7VCMX64uhCaY3bXhWxKM="; + meta.description = "S-expression pretty-printer"; + propagatedBuildInputs = [ ppx_base re sexplib ]; + }; + + sexp_select = janePackage { + pname = "sexp_select"; + hash = "sha256-HEzZowojeK9yDOoTY/l01fYLUdolzQGlMO9u3phV8so="; + propagatedBuildInputs = [ base ppx_jane ]; + meta.description = "A library to use CSS-style selectors to traverse sexp trees"; + }; + + sexplib0 = janePackage { + pname = "sexplib0"; + hash = "sha256-wRr1M243Bqu/XLSsr5IVPH5RTVWeVgZjxkKOrm+PW5E="; + minimalOCamlVersion = "4.08.0"; + meta.description = "Library containing the definition of S-expressions and some base converters"; + }; + + sexplib = janePackage { + pname = "sexplib"; + hash = "sha256-6MwggpjHo4FmKF88fP56LN9OHi2uIJc13TvKx4T7gEI="; + meta.description = "Library for serializing OCaml values to and from S-expressions"; + propagatedBuildInputs = [ num parsexp ]; + }; + + shell = janePackage { + pname = "shell"; + hash = "sha256-pK434+ToeYURQHRV+gK57rC7BFvznWEvIu5NAib2ZTU="; + meta.description = "Yet another implementation of fork&exec and related functionality"; + buildInputs = [ jst-config ]; + propagatedBuildInputs = [ textutils ]; + checkInputs = [ ounit ]; + }; + + shexp = janePackage { + pname = "shexp"; + hash = "sha256-npIcrxMOcIgsecdUEx5XHYp0KVrXiMzMLi8jskAp4vo="; + propagatedBuildInputs = [ posixat spawn ]; + meta.description = "Process library and s-expression based shell"; + }; + + spawn = janePackage { + pname = "spawn"; + minimalOCamlVersion = "4.02.3"; + version = "0.15.0"; + hash = "1fjr91psas5zmk1hxvxh0dchhn0pkyzlr4gg232f5g9vdgissi0p"; + meta.description = "Spawning sub-processes"; + buildInputs = [ ppx_expect ]; + }; + + splay_tree = janePackage { + pname = "splay_tree"; + hash = "sha256-Ag6yqTofEZ3v0qF+Z7xpXQOh7+HWtvRLlY+iAYqcReg="; + meta.description = "A splay tree implementation"; + propagatedBuildInputs = [ core_kernel ]; + }; + + splittable_random = janePackage { + pname = "splittable_random"; + hash = "sha256-wMmLuzhKmnS2iTYVTPUx5Rv2LhL/ygmWmb9t2pUjz+E="; + meta.description = "PRNG that can be split into independent streams"; + propagatedBuildInputs = [ base ppx_assert ppx_bench ppx_sexp_message ]; + }; + + stdio = janePackage { + pname = "stdio"; + hash = "sha256-+QgxqSMqO4VGoMWWJ3QoXdtJKcVpxlSQ/OI7dmcNqjw="; + meta.description = "Standard IO library for OCaml"; + propagatedBuildInputs = [ base ]; + }; + + stored_reversed = janePackage { + pname = "stored_reversed"; + hash = "sha256-ef11f0qifEvxKChM49Hnfk6J6hL+b0tMlm0iDLd5Y0Q="; + meta.description = "A library for representing a list temporarily stored in reverse order"; + propagatedBuildInputs = [ core ppx_jane ]; + }; + + streamable = janePackage { + pname = "streamable"; + hash = "sha256-3djrUW2tPKaEmoOIpdjN6ok7U9i07yreqbi1kP+6pnY="; + meta.description = "A collection of types suitable for incremental serialization"; + propagatedBuildInputs = [ async_kernel async_rpc_kernel base core core_kernel ppx_jane ppxlib ]; + }; + + textutils = janePackage { + pname = "textutils"; + hash = "sha256-2qy99MUMpkuNCvCYlk36k4kN6cPjrEILbwEUv4DyNYw="; + meta.description = "Text output utilities"; + propagatedBuildInputs = [ core_unix textutils_kernel ]; + }; + + textutils_kernel = janePackage { + pname = "textutils_kernel"; + hash = "sha256-DiXemANj5ONmvMzp+tly3AJud5u9i7HdaHmn8aVQS48="; + meta.description = "Text output utilities"; + propagatedBuildInputs = [ core ppx_jane uutf ]; + }; + + tilde_f = janePackage { + pname = "tilde_f"; + hash = "sha256-qLjM9liJfMIh2fqRPBdnmtUf4xhzk2MY8dFNdON3Aew="; + meta.description = "Provides a let-syntax for continuation-passing style"; + propagatedBuildInputs = [ base ppx_jane ]; + }; + + time_now = janePackage { + pname = "time_now"; + hash = "sha256-DjSrx/HgwCYS0Xzm2gFvWUVLD7a1KuFVIyVrJjBi8Tc="; + meta.description = "Reports the current time"; + buildInputs = [ jst-config ppx_optcomp ]; + propagatedBuildInputs = [ jane-street-headers base ppx_base ]; + }; + + timezone = janePackage { + pname = "timezone"; + hash = "sha256-pmXUMvLfgAwP6TV/aP9wMlOs0KfwEWtaJfdjUFLbOu0="; + meta.description = "Time-zone handling"; + propagatedBuildInputs = [ core_kernel ]; + }; + + topological_sort = janePackage { + pname = "topological_sort"; + hash = "sha256-um5++60mR++iHAruKqoQfd4EbQ1kb3L+cPOWhs9sIHI="; + meta.description = "Topological sort algorithm"; + propagatedBuildInputs = [ ppx_jane stdio ]; + }; + + typerep = janePackage { + pname = "typerep"; + hash = "sha256-iJnIjWZYCTaH29x7nFviCrbnTmHRChZkkj6E5sgi4mU="; + meta.description = "Typerep is a library for runtime types"; + propagatedBuildInputs = [ base ]; + }; + + variantslib = janePackage { + pname = "variantslib"; + hash = "sha256-8NoNkyIP7iEEiei+Q1zrPoJjnWwhCsLsY1vgua22gnw="; + meta.description = "Part of Jane Street's Core library"; + propagatedBuildInputs = [ base ]; + }; + + vcaml = janePackage { + pname = "vcaml"; + hash = "sha256-pmEKi24+22T76SzI3RpBmQF7ZrQwlngrpFYLoBdLwe0="; + meta.description = "OCaml bindings for the Neovim API"; + propagatedBuildInputs = [ angstrom-async async_extra expect_test_helpers_async faraday jsonaf man_in_the_middle_debugger semantic_version ]; + }; + + virtual_dom = janePackage { + pname = "virtual_dom"; + hash = "sha256-nXW9cDHQVugriR0+GkayuV4S3HKothQAoNJef02iALM="; + meta.description = "OCaml bindings for the virtual-dom library"; + buildInputs = [ js_of_ocaml-ppx ]; + propagatedBuildInputs = [ base64 core_kernel gen_js_api js_of_ocaml js_of_ocaml_patches lambdasoup tyxml uri ]; + }; + + zarith_stubs_js = janePackage { + pname = "zarith_stubs_js"; + hash = "sha256-oKD+JE08Mgvk5l8XFHSZ7xqiWPaOvKC87+zHLaQ/7q0="; + meta.description = "Javascripts stubs for the Zarith library"; + }; + + zstandard = janePackage { + pname = "zstandard"; + hash = "sha256-QcYqlOpCAr0owmO6sLDJhki8lUnNvtkaxldKb5I5AF0="; + meta.description = "OCaml bindings to Zstandard"; + buildInputs = [ ppx_jane ]; + propagatedBuildInputs = [ core_kernel ctypes zstd ]; + }; + +} diff --git a/pkgs/development/ocaml-modules/janestreet/janePackage_0_16.nix b/pkgs/development/ocaml-modules/janestreet/janePackage_0_16.nix new file mode 100644 index 000000000000..061fed447466 --- /dev/null +++ b/pkgs/development/ocaml-modules/janestreet/janePackage_0_16.nix @@ -0,0 +1,30 @@ +{ lib, fetchFromGitHub, buildDunePackage, defaultVersion ? "0.16" }: + +{ pname +, version ? defaultVersion +, hash +, minimalOCamlVersion ? "4.14" +, doCheck ? true +, buildInputs ? [] +, ...}@args: + +buildDunePackage (args // { + duneVersion = "3"; + inherit version buildInputs; + + inherit minimalOCamlVersion; + + src = fetchFromGitHub { + owner = "janestreet"; + repo = pname; + rev = "v${version}"; + sha256 = hash; + }; + + inherit doCheck; + + meta = { + license = lib.licenses.mit; + homepage = "https://github.com/janestreet/${pname}"; + } // args.meta; +}) diff --git a/pkgs/development/ocaml-modules/tls/async.nix b/pkgs/development/ocaml-modules/tls/async.nix index 002af344db9c..5e861592cd7b 100644 --- a/pkgs/development/ocaml-modules/tls/async.nix +++ b/pkgs/development/ocaml-modules/tls/async.nix @@ -5,8 +5,12 @@ buildDunePackage rec { inherit (tls) src meta version; - minimalOCamlVersion = "4.11"; - duneVersion = "3"; + minimalOCamlVersion = "4.13"; + + patches = [ + # Remove when TLS gets updated to v0.17.1. + ./janestreet-0.16.patch + ]; doCheck = true; diff --git a/pkgs/development/ocaml-modules/tls/janestreet-0.16.patch b/pkgs/development/ocaml-modules/tls/janestreet-0.16.patch new file mode 100644 index 000000000000..7d36ad227fa0 --- /dev/null +++ b/pkgs/development/ocaml-modules/tls/janestreet-0.16.patch @@ -0,0 +1,23 @@ +diff --git a/async/tls_async.mli b/async/tls_async.mli +index b4894b8..101f27f 100644 +--- a/async/tls_async.mli ++++ b/async/tls_async.mli +@@ -55,4 +55,4 @@ val connect + -> 'addr Tcp.Where_to_connect.t + -> host:[ `host ] Domain_name.t option + -> (Session.t * Reader.t * Writer.t) Deferred.Or_error.t) +- Tcp.with_connect_options ++ Tcp.Aliases.with_connect_options +diff --git a/async/x509_async.ml b/async/x509_async.ml +index d4fad8c..4ee466a 100644 +--- a/async/x509_async.ml ++++ b/async/x509_async.ml +@@ -9,7 +9,7 @@ let file_contents file = + let load_all_in_directory ~directory ~f = + let open Deferred.Or_error.Let_syntax in + let%bind files = Deferred.Or_error.try_with (fun () -> Sys.ls_dir directory) in +- Deferred.Or_error.List.map files ~f:(fun file -> ++ Deferred.Or_error.List.map ~how:`Sequential files ~f:(fun file -> + let%bind contents = file_contents (directory ^/ file) in + f ~contents) + ;; diff --git a/pkgs/development/tools/comby/comby.patch b/pkgs/development/tools/comby/comby.patch index d3d2088d602f..b780560093d4 100644 --- a/pkgs/development/tools/comby/comby.patch +++ b/pkgs/development/tools/comby/comby.patch @@ -1,5 +1,5 @@ diff --git a/comby-kernel.opam b/comby-kernel.opam -index 9db7cc5..a497bff 100644 +index 9db7cc5..83e6e7b 100644 --- a/comby-kernel.opam +++ b/comby-kernel.opam @@ -20,7 +20,7 @@ build: [ @@ -7,7 +7,7 @@ index 9db7cc5..a497bff 100644 "dune" {>= "2.8.0"} "ocaml" {>= "4.08.1"} - "core_kernel" -+ "core_kernel" {>= "v0.15.0"} ++ "core-kernel" {>= "v0.16.0"} "mparser" {>= "1.3"} "mparser-pcre" "ppx_deriving" @@ -25,7 +25,7 @@ index 88563f6..fbbc122 100644 "lwt" "cohttp" diff --git a/comby.opam b/comby.opam -index 9e5d96b..ecab789 100644 +index 9e5d96b..d5be316 100644 --- a/comby.opam +++ b/comby.opam @@ -31,7 +31,7 @@ depends: [ @@ -33,14 +33,23 @@ index 9e5d96b..ecab789 100644 "comby-kernel" {= "1.7.0"} "comby-semantic" {= "1.7.0"} - "core" -+ "core" {>= "v0.15.0"} ++ "core" {>= "v0.16.0"} "hack_parallel" {arch != "arm32" & arch != "arm64"} "lwt" "lwt_react" diff --git a/lib/app/configuration/command_configuration.ml b/lib/app/configuration/command_configuration.ml -index 75c3107..418276e 100644 +index 75c3107..29826a9 100644 --- a/lib/app/configuration/command_configuration.ml +++ b/lib/app/configuration/command_configuration.ml +@@ -1,7 +1,7 @@ + open Core + open Camlzip + +-open Polymorphic_compare ++open Poly + + open Comby_kernel + @@ -16,21 +16,21 @@ type 'a next = let fold_directory ?(sorted=false) root ~init ~f = @@ -356,6 +365,60 @@ index 7a6353d..b79cba2 100644 - (preprocess (pps ppx_jane))) + (preprocess + (pps ppx_jane))) +diff --git a/lib/app/vendored/patdiff/kernel/src/float_tolerance.ml b/lib/app/vendored/patdiff/kernel/src/float_tolerance.ml +index 4e064fb..dca77b2 100644 +--- a/lib/app/vendored/patdiff/kernel/src/float_tolerance.ml ++++ b/lib/app/vendored/patdiff/kernel/src/float_tolerance.ml +@@ -287,7 +287,7 @@ end = struct + ~running_step:(fun (car, pos) cadr -> + match car, cadr with + | Same car_lines, Same cadr_lines -> +- Skip (Same (Array.concat [ car_lines; cadr_lines ]), pos) ++ Skip {state = (Same (Array.concat [ car_lines; cadr_lines ]), pos)} + | Unified _, _ | _, Unified _ -> + raise_s + [%message +@@ -296,7 +296,7 @@ end = struct + (cadr : string Range.t)] + | (Prev _ | Next _ | Replace _), (Prev _ | Next _ | Replace _) + | Same _, (Prev _ | Next _ | Replace _) +- | (Prev _ | Next _ | Replace _), Same _ -> Yield ((car, pos), (cadr, Middle))) ++ | (Prev _ | Next _ | Replace _), Same _ -> Yield {value = (car, pos); state = (cadr, Middle)}) + ~inner_finished:(fun (last, pos) -> + match last, pos with + | Unified _, _ -> +@@ -308,7 +308,7 @@ end = struct + Some (last, End)) + ~finishing_step:(function + | None -> Done +- | Some result -> Yield (result, None)) ++ | Some result -> Yield {value = result; state = None}) + ;; + + include struct +@@ -448,7 +448,7 @@ end = struct + ~init:{ prev_start; next_start; ranges = [] } + ~running_step:(fun t drop_or_keep -> + match (drop_or_keep : Drop_or_keep.t) with +- | Keep range -> Skip { t with ranges = range :: t.ranges } ++ | Keep range -> Skip {state = { t with ranges = range :: t.ranges }} + | Drop n -> + let hunk = to_hunk t in + let t = +@@ -457,11 +457,11 @@ end = struct + ; ranges = [] + } + in +- if List.is_empty (Hunk.ranges hunk) then Skip t else Yield (hunk, t)) ++ if List.is_empty (Hunk.ranges hunk) then Skip {state = t} else Yield {value = hunk; state = t}) + ~inner_finished:(fun t -> if List.is_empty t.ranges then None else Some t) + ~finishing_step:(function + | None -> Done +- | Some t -> Yield (to_hunk t, None)) ++ | Some t -> Yield {value = to_hunk t; state = None}) + ;; + end + diff --git a/lib/app/vendored/patdiff/kernel/src/patdiff_core.ml b/lib/app/vendored/patdiff/kernel/src/patdiff_core.ml index 4f53a0b..88ee0e3 100644 --- a/lib/app/vendored/patdiff/kernel/src/patdiff_core.ml @@ -501,7 +564,7 @@ index 03b120a..4d48b61 100644 + ppx_deriving_yojson + ppx_deriving_yojson.runtime)) diff --git a/lib/kernel/matchers/alpha.ml b/lib/kernel/matchers/alpha.ml -index d6116f7..993aafc 100644 +index d6116f7..7d16171 100644 --- a/lib/kernel/matchers/alpha.ml +++ b/lib/kernel/matchers/alpha.ml @@ -13,20 +13,11 @@ module R = MakeRegexp(Regexp) @@ -537,6 +600,15 @@ index d6116f7..993aafc 100644 List.fold plist ~init:(return Types.Unit) ~f:(>>) let with_debug_matcher s tag = +@@ -745,7 +736,7 @@ module Make (Lang : Types.Language.S) (Meta : Types.Metasyntax.S) (Ext : Types.E + let hole_parser ?at_depth sort dimension = + let open Types.Hole in + let hole_parser = +- let open Polymorphic_compare in ++ let open Poly in + List.fold ~init:[] hole_parsers ~f:(fun acc (sort', parser) -> if sort' = sort then parser::acc else acc) + in + let skip_signal hole = skip (string "_signal_hole") |>> fun () -> Types.Hole hole in diff --git a/lib/kernel/matchers/dune b/lib/kernel/matchers/dune index 12ed326..4625458 100644 --- a/lib/kernel/matchers/dune @@ -566,7 +638,7 @@ index 12ed326..4625458 100644 + yojson + ppx_deriving_yojson)) diff --git a/lib/kernel/matchers/evaluate.ml b/lib/kernel/matchers/evaluate.ml -index 9ea71a0..288f79a 100644 +index 9ea71a0..4f63ab6 100644 --- a/lib/kernel/matchers/evaluate.ml +++ b/lib/kernel/matchers/evaluate.ml @@ -3,10 +3,7 @@ open Core_kernel @@ -581,8 +653,17 @@ index 9ea71a0..288f79a 100644 type result = bool * Match.environment option +@@ -102,7 +99,7 @@ let apply + |> Option.some + in + List.find_map cases ~f:(fun (template, case_expression) -> evaluate template case_expression) +- |> Option.value_map ~f:ident ~default:(false, Some env) ++ |> Option.value_map ~f:Fn.id ~default:(false, Some env) + + (* rewrite ... { ... } *) + | Rewrite (Template t, (match_template, rewrite_template)) -> diff --git a/lib/kernel/matchers/omega.ml b/lib/kernel/matchers/omega.ml -index 61cc69a..0bef682 100644 +index 61cc69a..3445307 100644 --- a/lib/kernel/matchers/omega.ml +++ b/lib/kernel/matchers/omega.ml @@ -32,15 +32,9 @@ let push_source_ref : string ref = ref "" @@ -593,17 +674,25 @@ index 61cc69a..0bef682 100644 - match Sys.getenv "DEBUG_COMBY" with - | exception Not_found -> false - | _ -> true -- ++let debug = Sys.getenv "DEBUG_COMBY" |> Option.is_some + -let rewrite = - match Sys.getenv "REWRITE" with - | exception Not_found -> false - | _ -> true -+let debug = Sys.getenv "DEBUG_COMBY" |> Option.is_some -+ +let rewrite = Sys.getenv "REWRITE" |> Option.is_some let actual = Buffer.create 10 +@@ -540,7 +534,7 @@ module Make (Language : Types.Language.S) (Meta : Metasyntax.S) (Ext : External. + + let hole_parser sort dimension : (production * 'a) t t = + let hole_parser = (* This must be fold, can't be find *) +- let open Polymorphic_compare in ++ let open Poly in + List.fold ~init:[] Template.Matching.hole_parsers ~f:(fun acc (sort', parser) -> + if sort' = sort then parser::acc else acc) + in diff --git a/lib/kernel/matchers/preprocess.ml b/lib/kernel/matchers/preprocess.ml index 84f3ed0..b6d10e7 100644 --- a/lib/kernel/matchers/preprocess.ml @@ -633,7 +722,7 @@ index ef0bd59..906820b 100644 module type Regexp_engine_intf = sig type t diff --git a/lib/kernel/matchers/rewrite.ml b/lib/kernel/matchers/rewrite.ml -index 32c4740..2fc28db 100644 +index 32c4740..545cba5 100644 --- a/lib/kernel/matchers/rewrite.ml +++ b/lib/kernel/matchers/rewrite.ml @@ -4,10 +4,7 @@ open Core_kernel @@ -648,6 +737,35 @@ index 32c4740..2fc28db 100644 let counter = let uuid_for_id_counter = ref 0 in +@@ -46,24 +43,24 @@ let parse_first_label ?(metasyntax = Metasyntax.default_metasyntax) template = + in + parse_string ~consume:All parser template + |> function +- | Ok label -> List.find_map label ~f:ident ++ | Ok label -> List.find_map label ~f:Fn.id + | Error _ -> None + + let substitute_fresh + ?(metasyntax = Metasyntax.default_metasyntax) + ?(fresh = counter) + template = +- let label_table = String.Table.create () in ++ let label_table = Hashtbl.create (module String) in + let template_ref = ref template in + let current_label_ref = ref (parse_first_label ~metasyntax !template_ref) in + while Option.is_some !current_label_ref do + let label = Option.value_exn !current_label_ref in + let id = +- match String.Table.find label_table label with ++ match Hashtbl.find label_table label with + | Some id -> id + | None -> + let id = fresh () in +- if String.(label <> "") then String.Table.add_exn label_table ~key:label ~data:id; ++ if String.(label <> "") then Hashtbl.add_exn label_table ~key:label ~data:id; + id + in + let left, right = replacement_sentinel metasyntax in diff --git a/lib/kernel/matchers/template.ml b/lib/kernel/matchers/template.ml index 423a07f..136236c 100644 --- a/lib/kernel/matchers/template.ml diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index af37e4eb4fee..3349c0fb23c6 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -9829,6 +9829,7 @@ with pkgs; ligo = callPackage ../development/compilers/ligo { coq = coq_8_14; + ocamlPackages = ocaml-ng.ocamlPackages_4_14_janeStreet_0_15; }; lego = callPackage ../tools/admin/lego { }; @@ -17457,7 +17458,9 @@ with pkgs; stalin = callPackage ../development/compilers/stalin { }; - stanc = callPackage ../development/compilers/stanc { }; + stanc = callPackage ../development/compilers/stanc { + ocamlPackages = ocaml-ng.ocamlPackages_4_14_janeStreet_0_15; + }; metaBuildEnv = callPackage ../development/compilers/meta-environment/meta-build-env { }; diff --git a/pkgs/top-level/ocaml-packages.nix b/pkgs/top-level/ocaml-packages.nix index 4b9ce4d1b9eb..216d490972b0 100644 --- a/pkgs/top-level/ocaml-packages.nix +++ b/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 { }; @@ -718,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 {} @@ -727,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; + } + 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; @@ -751,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 // { @@ -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; @@ -1332,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 { }; @@ -1366,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 { }; @@ -1857,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 {