package opam-core

  1. Overview
  2. Docs

Parallel execution of jobs following a directed graph

module type VERTEX = sig ... end
type dependency_label = unit
module type G = sig ... end
exception Aborted

When one job fails due to an exception, other running jobs are interrupted and reported with this sub-exception in the Errors list

Simply parallel execution of tasks

exception Errors of int list * (int * exn) list * int list

In the simple iter, map and reduce cases, ints are the indexes of the jobs in the list. First list is return code of sucessfull commands, second those which raised expcetions, and third one those which were canceled.

val iter : jobs:int -> command:('a -> unit OpamProcess.job) -> ?dry_run:bool -> 'a list -> unit
val map : jobs:int -> command:('a -> 'b OpamProcess.job) -> ?dry_run:bool -> 'a list -> 'b list
val reduce : jobs:int -> command:('a -> 'b OpamProcess.job) -> merge:('b -> 'b -> 'b) -> nil:'b -> ?dry_run:bool -> 'a list -> 'b

More complex parallelism with dependency graphs

module type SIG = sig ... end
module Make (G : G) : SIG with module G = G and type G.V.t = G.V.t
module type GRAPH = sig ... end
module MakeGraph (V : VERTEX) : GRAPH with type V.t = V.t