about summary refs log tree commit diff
path: root/nixpkgs/pkgs/development/ocaml-modules/bistro
diff options
context:
space:
mode:
Diffstat (limited to 'nixpkgs/pkgs/development/ocaml-modules/bistro')
-rw-r--r--nixpkgs/pkgs/development/ocaml-modules/bistro/default.nix2
-rw-r--r--nixpkgs/pkgs/development/ocaml-modules/bistro/janestreet-0.16.patch205
2 files changed, 207 insertions, 0 deletions
diff --git a/nixpkgs/pkgs/development/ocaml-modules/bistro/default.nix b/nixpkgs/pkgs/development/ocaml-modules/bistro/default.nix
index 8f84a973bf0f..fd409b51091d 100644
--- a/nixpkgs/pkgs/development/ocaml-modules/bistro/default.nix
+++ b/nixpkgs/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/nixpkgs/pkgs/development/ocaml-modules/bistro/janestreet-0.16.patch b/nixpkgs/pkgs/development/ocaml-modules/bistro/janestreet-0.16.patch
new file mode 100644
index 000000000000..bf3b41eb4ac8
--- /dev/null
+++ b/nixpkgs/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 =