diff options
author | Sam James <sam@gentoo.org> | 2021-10-02 06:51:11 +0100 |
---|---|---|
committer | Sam James <sam@gentoo.org> | 2021-10-02 22:10:33 +0100 |
commit | 7e71a5c252b35f23048b617671b15e82e54f3dc9 (patch) | |
tree | 6a1ff7e301c7d31df21538f888fa3a2281ca1d22 /dev-ml/opam-solver | |
parent | dev-ml/opam-format: add 2.1.0 (diff) | |
download | gentoo-7e71a5c252b35f23048b617671b15e82e54f3dc9.tar.gz gentoo-7e71a5c252b35f23048b617671b15e82e54f3dc9.tar.bz2 gentoo-7e71a5c252b35f23048b617671b15e82e54f3dc9.zip |
dev-ml/opam-solver: add 2.1.0
Signed-off-by: Sam James <sam@gentoo.org>
Diffstat (limited to 'dev-ml/opam-solver')
-rw-r--r-- | dev-ml/opam-solver/Manifest | 2 | ||||
-rw-r--r-- | dev-ml/opam-solver/files/opam-solver-2.1.0-dose3-6.patch | 526 | ||||
-rw-r--r-- | dev-ml/opam-solver/opam-solver-2.1.0.ebuild | 46 |
3 files changed, 574 insertions, 0 deletions
diff --git a/dev-ml/opam-solver/Manifest b/dev-ml/opam-solver/Manifest index a8c97c7a26f1..0b145947da01 100644 --- a/dev-ml/opam-solver/Manifest +++ b/dev-ml/opam-solver/Manifest @@ -1,2 +1,4 @@ DIST opam-2.0.8.tar.gz 643221 BLAKE2B 66510a18285f315fe95665e8ba2f334dd44211c716543cdc25f2951a7dfe537f115981046e5963fd08deea4c76f5672fa7cf8e7af2274a713a3165bdd0bac8c2 SHA512 14737dc994be2c54dfeaf2658d3713178033e1bc2b4b845a58b4bfc118bbbf12b502924add0ae32b4b2b6c1944462e5ee7143df3de362d9ee39573249d013bc9 DIST opam-2.0.9.tar.gz 644429 BLAKE2B d96ee79685a8ee8ff82c7570a747c80e38d86e513736a27904a4e471d1eaf432db72998251ac786cb8fbf1ad425fff42b772c5d26934e0929aae75c0946d4659 SHA512 0d8ee19ac0f3df9de4fd9cfa8daab1f7228f090f5e2e7e26bedf24d8c2ab377aade95048f2d7cd9ee9dbbe738729e26dc99f41f730fa2252df74953362464a22 +DIST opam-2.1.0-dose3-6.patch.xz 5896 BLAKE2B f605064ebae7d327895729962a345a3c679519895aa2568f0c2d199d4ba9d6ae948a4fc418cfd26cc65079eb6ef3545f24a35e08c969d215529664a80d0c9147 SHA512 e00da74d7baef62319e884e3a05112bcf86a02d887c274bd15fb0d15bb8198e9a37a421f388bec3fce198e7a1b4d37024b18609dc65978c6ee8a7889df9bd608 +DIST opam-2.1.0.tar.gz 825966 BLAKE2B 42ab8ad2825e4e167618ece7bd2ce77ff055d584039fe2f644fa1c3e99d175cc7047f32bda53599af4fb177d844970883125cebca823024d1bc43a34857f20c5 SHA512 c0060e609c49a12dc8f64accef990aa593db818b72df3984fb9b4b22d8678b46c515916c84134a62dab614c716b61788eadc954d295f32c1f27d38aec22b3edf diff --git a/dev-ml/opam-solver/files/opam-solver-2.1.0-dose3-6.patch b/dev-ml/opam-solver/files/opam-solver-2.1.0-dose3-6.patch new file mode 100644 index 000000000000..fd613125eed7 --- /dev/null +++ b/dev-ml/opam-solver/files/opam-solver-2.1.0-dose3-6.patch @@ -0,0 +1,526 @@ +https://github.com/ocaml/opam/commit/9082b989f1c039a006fd58672de41f620a330e80 +https://github.com/ocaml/opam/commit/2e03a20abedb40cccb5295361649c64a8df46505 + +From: Kate <kit.ty.kate@disroot.org> +Date: Fri, 29 Jan 2021 02:56:21 +0000 +Subject: [PATCH] Make opam-solver compatible with dose3 6.0 + +Dose_algo.Depsolver.check_request_using actually never used its ~criteria argument(!!) :exploding_head: +--- a/src/solver/opamBuiltin0install.ml.real ++++ b/src/solver/opamBuiltin0install.ml.real +@@ -115,4 +115,4 @@ let call ~criteria ?timeout:_ (preamble, universe, request) = + | Error problem -> + log "No solution. Solve took %.2f s" (timer ()); + log ~level:3 "%a" (OpamConsole.slog Opam_0install_cudf.diagnostics) problem; +- raise Common.CudfSolver.Unsat ++ raise Dose_common.CudfSolver.Unsat +--- a/src/solver/opamBuiltinMccs.ml.real ++++ b/src/solver/opamBuiltinMccs.ml.real +@@ -42,7 +42,7 @@ let call solver_backend ext ~criteria ?timeout cudf = + ~verbose:OpamCoreConfig.(abs !r.debug_level >= 2) + ?timeout criteria cudf + with +- | None -> raise Common.CudfSolver.Unsat ++ | None -> raise Dose_common.CudfSolver.Unsat + | Some (preamble, univ) -> Some preamble, univ + | exception Mccs.Timeout -> raise (Timeout None) + +--- a/src/solver/opamBuiltinZ3.ml.real ++++ b/src/solver/opamBuiltinZ3.ml.real +@@ -416,7 +416,7 @@ let call ~criteria ?timeout (preamble, universe, _ as cudf) = + match Z3.Optimize.check opt with + | UNSATISFIABLE -> + log "UNSAT"; +- raise Common.CudfSolver.Unsat ++ raise Dose_common.CudfSolver.Unsat + | UNKNOWN -> + log "UNKNOWN"; + (try +@@ -433,7 +433,7 @@ let call ~criteria ?timeout (preamble, universe, _ as cudf) = + in + Some preamble, universe + (* with +- * | (Timeout | Common.CudfSolver.Unsat | Failure _) as e -> raise e ++ * | (Timeout | Dose_common.CudfSolver.Unsat | Failure _) as e -> raise e + * | e -> + * OpamConsole.error "Z3 error: %s" (Printexc.to_string e); + * OpamConsole.errmsg "%s" (Printexc.get_backtrace ()); +--- a/src/solver/opamCudf.ml ++++ b/src/solver/opamCudf.ml +@@ -24,7 +24,7 @@ let s_pinned = "pinned" + let s_version_lag = "version-lag" + + let opam_invariant_package_name = +- Common.CudfAdd.encode "=opam-invariant" ++ Dose_common.CudfAdd.encode "=opam-invariant" + + let opam_invariant_package_version = 1 + +@@ -55,7 +55,7 @@ let cudfnv2opam ?version_map ?cudf_universe (name,v) = + match nv with + | Some nv -> nv + | None -> +- let name = OpamPackage.Name.of_string (Common.CudfAdd.decode name) in ++ let name = OpamPackage.Name.of_string (Dose_common.CudfAdd.decode name) in + match version_map with + | Some vmap -> + let nvset = +@@ -394,7 +394,7 @@ let of_json = Json.package_of_json + (* Graph of cudf packages *) + module Package = struct + type t = Cudf.package +- include Common.CudfAdd ++ include Dose_common.CudfAdd + let to_string = string_of_package + let name_to_string t = t.Cudf.package + let version_to_string t = string_of_int t.Cudf.version +@@ -414,7 +414,7 @@ exception Solver_failure of string + exception Cyclic_actions of Action.t list list + + type conflict_case = +- | Conflict_dep of (unit -> Algo.Diagnostic.reason list) ++ | Conflict_dep of (unit -> Dose_algo.Diagnostic.reason list) + | Conflict_cycle of string list list + type conflict = + Cudf.universe * int package_map * conflict_case +@@ -463,7 +463,7 @@ let strong_and_weak_deps u deps = + (* From a CUDF dependency CNF, extract the set of packages that can possibly be + part of a solution. + +- This is much finer than [Common.CudfAdd.resolve_deps] which doesn't handle ++ This is much finer than [Dose_common.CudfAdd.resolve_deps] which doesn't handle + conjunctions of versions (see [Graph.of_universe] below) *) + let dependency_set u deps = + let strong_deps, weak_deps = strong_and_weak_deps u deps in +@@ -517,18 +517,18 @@ let _rec_strong_dependency_set u deps = + module Graph = struct + + module PG = struct +- include Algo.Defaultgraphs.PackageGraph.G ++ include Dose_algo.Defaultgraphs.PackageGraph.G + let succ g v = + try succ g v + with e -> OpamStd.Exn.fatal e; [] + end + +- module PO = Algo.Defaultgraphs.GraphOper (PG) ++ module PO = Dose_algo.Defaultgraphs.GraphOper (PG) + + module Topo = Graph.Topological.Make (PG) + + let of_universe u = +- (* {[Algo.Defaultgraphs.PackageGraph.dependency_graph u]} ++ (* {[Dose_algo.Defaultgraphs.PackageGraph.dependency_graph u]} + -> doesn't handle conjunctive dependencies correctly + (e.g. (a>3 & a<=4) is considered as (a>3 | a<=4) and results in extra + edges). +@@ -537,7 +537,7 @@ module Graph = struct + let t = OpamConsole.timer () in + let g = PG.create ~size:(Cudf.universe_size u) () in + let iter_deps f deps = +- (* List.iter (fun d -> List.iter f (Common.CudfAdd.resolve_deps u d)) deps *) ++ (* List.iter (fun d -> List.iter f (Dose_common.CudfAdd.resolve_deps u d)) deps *) + Set.iter f (dependency_set u deps) + in + Cudf.iter_packages +@@ -550,7 +550,7 @@ module Graph = struct + + let output g filename = + let fd = open_out (filename ^ ".dot") in +- Algo.Defaultgraphs.PackageGraph.DotPrinter.output_graph fd g; ++ Dose_algo.Defaultgraphs.PackageGraph.DotPrinter.output_graph fd g; + close_out fd + + let transitive_closure g = +@@ -565,20 +565,20 @@ module Graph = struct + end + + (** Special package used by Dose internally, should generally be filtered out *) +-let dose_dummy_request = Algo.Depsolver.dummy_request.Cudf.package ++let dose_dummy_request = Dose_algo.Depsolver.dummy_request.Cudf.package + let is_artefact cpkg = + is_opam_invariant cpkg || + cpkg.Cudf.package = dose_dummy_request + + let dependencies universe packages = + Set.fixpoint (fun p -> dependency_set universe p.Cudf.depends) packages +-(* similar to Algo.Depsolver.dependency_closure but with finer results on ++(* similar to Dose_algo.Depsolver.dependency_closure but with finer results on + version sets *) + + let reverse_dependencies universe packages = + let graph = Graph.of_universe universe in + Set.fixpoint (fun p -> Set.of_list (Graph.pred graph p)) packages +-(* similar to Algo.Depsolver.reverse_dependency_closure but more reliable *) ++(* similar to Dose_algo.Depsolver.reverse_dependency_closure but more reliable *) + + let dependency_sort universe packages = + let graph = Graph.of_universe universe in +@@ -595,12 +595,12 @@ let string_of_vpkgs constr = + OpamFormula.string_of_conjunction string_of_atom constr + + let string_of_universe u = +- string_of_packages (List.sort Common.CudfAdd.compare (Cudf.get_packages u)) ++ string_of_packages (List.sort Dose_common.CudfAdd.compare (Cudf.get_packages u)) + + let vpkg2atom cudfnv2opam (name,cstr) = + match cstr with + | None -> +- OpamPackage.Name.of_string (Common.CudfAdd.decode name), None ++ OpamPackage.Name.of_string (Dose_common.CudfAdd.decode name), None + | Some (relop,v) -> + let nv = cudfnv2opam (name,v) in + nv.name, Some (relop, nv.version) +@@ -618,7 +618,7 @@ let vpkg2atom cudfnv2opam (name,cstr) = + (List.map (fun p -> OpamPackage.version (cudf2opam p)) l) in + let solutions = to_version_set solutions in + let others = OVS.Op.(to_version_set candidates -- solutions) in +- OpamPackage.Name.of_string (Common.CudfAdd.decode name), ++ OpamPackage.Name.of_string (Dose_common.CudfAdd.decode name), + match relop, OVS.is_empty solutions, OVS.is_empty others with + | _, true, true -> None + | `Leq, false, _ | `Lt, false, true -> Some (`Leq, OVS.max_elt solutions) +@@ -636,9 +636,9 @@ let vpkg2atom cudfnv2opam (name,cstr) = + let conflict_empty ~version_map univ = + Conflicts (univ, version_map, Conflict_dep (fun () -> [])) + let make_conflicts ~version_map univ = function +- | {Algo.Diagnostic.result = Algo.Diagnostic.Failure f; _} -> ++ | {Dose_algo.Diagnostic.result = Dose_algo.Diagnostic.Failure f; _} -> + Conflicts (univ, version_map, Conflict_dep f) +- | {Algo.Diagnostic.result = Algo.Diagnostic.Success _; _} -> ++ | {Dose_algo.Diagnostic.result = Dose_algo.Diagnostic.Success _; _} -> + raise (Invalid_argument "make_conflicts") + let cycle_conflict ~version_map univ cycle = + Conflicts (univ, version_map, Conflict_cycle cycle) +@@ -655,7 +655,7 @@ let formula_of_vpkgl cudfnv2opam all_packages vpkgl = + List.map (fun vp -> + try vpkg2atom cudfnv2opam vp + with Not_found -> +- OpamPackage.Name.of_string (Common.CudfAdd.decode (fst vp)), None) ++ OpamPackage.Name.of_string (Dose_common.CudfAdd.decode (fst vp)), None) + vpkgl + in + let names = OpamStd.List.sort_nodup compare (List.map fst atoms) in +@@ -727,7 +727,7 @@ type explanation = + + let extract_explanations packages cudfnv2opam reasons : explanation list = + log "Conflict reporting"; +- let open Algo.Diagnostic in ++ let open Dose_algo.Diagnostic in + let open Set.Op in + let module CS = ChainSet in + (* Definitions and printers *) +@@ -1058,7 +1058,7 @@ let default_preamble = + (s_pinned, `Bool (Some false)); + (s_version_lag, `Nat (Some 0)); + ] in +- Common.CudfAdd.add_properties Cudf.default_preamble l ++ Dose_common.CudfAdd.add_properties Cudf.default_preamble l + + let remove universe name constr = + let filter p = +@@ -1091,7 +1091,7 @@ let remove_all_uninstalled_versions_but universe name constr = + Cudf.load_universe packages + + let to_cudf univ req = ( +- Common.CudfAdd.add_properties default_preamble ++ Dose_common.CudfAdd.add_properties default_preamble + (List.map (fun s -> s, `Int (Some 0)) req.extra_attributes), + univ, + { Cudf.request_id = "opam"; +@@ -1178,7 +1178,7 @@ let preprocess_cudf_request (props, univ, creq) criteria = + in + let univ = + let open Set.Op in +- let vpkg2set vp = Set.of_list (Common.CudfAdd.resolve_deps univ vp) in ++ let vpkg2set vp = Set.of_list (Dose_common.CudfAdd.resolve_deps univ vp) in + let to_install = + vpkg2set creq.Cudf.install + ++ Set.of_list (Cudf.lookup_packages univ opam_invariant_package_name) +@@ -1305,7 +1305,7 @@ let preprocess_cudf_request (props, univ, creq) criteria = + (chrono ()); + props, univ, creq + +-exception Timeout of Algo.Depsolver.solver_result option ++exception Timeout of Dose_algo.Depsolver.solver_result option + + let call_external_solver ~version_map univ req = + let cudf_request = to_cudf univ req in +@@ -1315,7 +1315,7 @@ let call_external_solver ~version_map univ req = + ignore (dump_cudf_request ~version_map cudf_request + criteria OpamSolverConfig.(!r.cudf_file)); + (* Wrap a return of exn Timeout through Depsolver *) +- let check_request_using ~call_solver ~criteria ~explain req = ++ let check_request_using ~call_solver ~explain req = + let timed_out = ref false in + let call_solver args = + try call_solver args with +@@ -1323,7 +1323,7 @@ let call_external_solver ~version_map univ req = + | OpamCudfSolver.Timeout None -> raise (Timeout None) + in + let r = +- Algo.Depsolver.check_request_using ~call_solver ~criteria ~explain req ++ Dose_algo.Depsolver.check_request_using ~call_solver ~explain req + in + if !timed_out then raise (Timeout (Some r)) else r + in +@@ -1335,7 +1335,7 @@ let call_external_solver ~version_map univ req = + let r = + check_request_using + ~call_solver:(OpamSolverConfig.call_solver ~criteria) +- ~criteria ~explain:true cudf_request ++ ~explain:true cudf_request + in + log "Solver call done in %.3fs" (chrono ()); + r +@@ -1375,23 +1375,23 @@ let call_external_solver ~version_map univ req = + in + raise (Solver_failure msg) + else +- Algo.Depsolver.Sat(None,Cudf.load_universe []) ++ Dose_algo.Depsolver.Sat(None,Cudf.load_universe []) + + let check_request ?(explain=true) ~version_map univ req = +- match Algo.Depsolver.check_request ~explain (to_cudf univ req) with +- | Algo.Depsolver.Unsat +- (Some ({Algo.Diagnostic.result = Algo.Diagnostic.Failure _; _} as r)) -> ++ match Dose_algo.Depsolver.check_request ~explain (to_cudf univ req) with ++ | Dose_algo.Depsolver.Unsat ++ (Some ({Dose_algo.Diagnostic.result = Dose_algo.Diagnostic.Failure _; _} as r)) -> + make_conflicts ~version_map univ r +- | Algo.Depsolver.Sat (_,u) -> ++ | Dose_algo.Depsolver.Sat (_,u) -> + Success (remove u dose_dummy_request None) +- | Algo.Depsolver.Error msg -> ++ | Dose_algo.Depsolver.Error msg -> + let f = dump_cudf_error ~version_map univ req in + let msg = + Printf.sprintf "Internal solver failed with %s Request saved to %S" + msg f + in + raise (Solver_failure msg) +- | Algo.Depsolver.Unsat _ -> (* normally when [explain] = false *) ++ | Dose_algo.Depsolver.Unsat _ -> (* normally when [explain] = false *) + conflict_empty ~version_map univ + + (* Return the universe in which the system has to go *) +@@ -1404,12 +1404,12 @@ let get_final_universe ~version_map univ req = + in + raise (Solver_failure msg) in + match call_external_solver ~version_map univ req with +- | Algo.Depsolver.Sat (_,u) -> Success (remove u dose_dummy_request None) +- | Algo.Depsolver.Error "(CRASH) Solution file is empty" -> ++ | Dose_algo.Depsolver.Sat (_,u) -> Success (remove u dose_dummy_request None) ++ | Dose_algo.Depsolver.Error "(CRASH) Solution file is empty" -> + (* XXX Is this still needed with latest dose? *) + Success (Cudf.load_universe []) +- | Algo.Depsolver.Error str -> fail str +- | Algo.Depsolver.Unsat r -> ++ | Dose_algo.Depsolver.Error str -> fail str ++ | Dose_algo.Depsolver.Unsat r -> + let msg = + Printf.sprintf + "The solver (%s) pretends there is no solution while that's apparently \ +@@ -1420,10 +1420,10 @@ let get_final_universe ~version_map univ req = + Solver.name) + in + match r with +- | Some ({Algo.Diagnostic.result = Algo.Diagnostic.Failure _; _} as r) -> ++ | Some ({Dose_algo.Diagnostic.result = Dose_algo.Diagnostic.Failure _; _} as r) -> + OpamConsole.error "%s" msg; + make_conflicts ~version_map univ r +- | Some {Algo.Diagnostic.result = Algo.Diagnostic.Success _; _} ++ | Some {Dose_algo.Diagnostic.result = Dose_algo.Diagnostic.Success _; _} + | None -> + raise (Solver_failure msg) + +@@ -1516,11 +1516,11 @@ let compute_root_causes g requested reinstall = + let module StringSet = OpamStd.String.Set in + let requested_pkgnames = + OpamPackage.Name.Set.fold (fun n s -> +- StringSet.add (Common.CudfAdd.encode (OpamPackage.Name.to_string n)) s) ++ StringSet.add (Dose_common.CudfAdd.encode (OpamPackage.Name.to_string n)) s) + requested StringSet.empty in + let reinstall_pkgnames = + OpamPackage.Set.fold (fun nv s -> +- StringSet.add (Common.CudfAdd.encode (OpamPackage.name_to_string nv)) s) ++ StringSet.add (Dose_common.CudfAdd.encode (OpamPackage.name_to_string nv)) s) + reinstall StringSet.empty in + let actions = + ActionGraph.fold_vertex (fun a acc -> Map.add (action_contents a) a acc) +@@ -1711,10 +1711,10 @@ let atomic_actions ~simple_universe ~complete_universe root_actions = + (* conflicts *) + let conflicts_graph = + let filter p = Set.mem p to_remove || Set.mem p to_install in +- Algo.Defaultgraphs.PackageGraph.conflict_graph ++ Dose_algo.Defaultgraphs.PackageGraph.conflict_graph + (Cudf.load_universe (Cudf.get_packages ~filter complete_universe)) + in +- Algo.Defaultgraphs.PackageGraph.UG.iter_edges (fun p1 p2 -> ++ Dose_algo.Defaultgraphs.PackageGraph.UG.iter_edges (fun p1 p2 -> + if Set.mem p1 to_remove && Set.mem p2 to_install then + ActionGraph.add_edge g (`Remove p1) (`Install ( p2)) + else if Set.mem p2 to_remove && Set.mem p1 to_install then +--- a/src/solver/opamCudf.mli ++++ b/src/solver/opamCudf.mli +@@ -32,7 +32,7 @@ module Map: OpamStd.MAP with type key = Package.t + module Graph: sig + (** Graph of cudf packages *) + +- include module type of Algo.Defaultgraphs.PackageGraph.G ++ include module type of Dose_algo.Defaultgraphs.PackageGraph.G + + (** Build a graph from a CUDF universe. Warning: dependency edges are towards + the dependency, which is the reverse of what happens in the action +@@ -198,7 +198,7 @@ val string_of_vpkgs: Cudf_types.vpkg list -> string + + val make_conflicts: + version_map:int package_map -> Cudf.universe -> +- Algo.Diagnostic.diagnosis -> ('a, conflict) result ++ Dose_algo.Diagnostic.diagnosis -> ('a, conflict) result + val cycle_conflict: + version_map:int package_map -> Cudf.universe -> + string list list -> ('a, conflict) result +--- a/src/solver/opamCudfSolver.ml ++++ b/src/solver/opamCudfSolver.ml +@@ -57,7 +57,7 @@ let call_external_solver command ~criteria ?timeout (_, universe,_ as cudf) = + in + OpamFilename.remove solver_in; + if not (OpamFilename.exists solver_out) then +- raise (Common.CudfSolver.Error "no output") ++ raise (Dose_common.CudfSolver.Error "no output") + else if + (let ic = OpamFilename.open_in solver_out in + try +@@ -65,7 +65,7 @@ let call_external_solver command ~criteria ?timeout (_, universe,_ as cudf) = + i = "FAIL" + with End_of_file -> close_in ic; false) + then +- raise Common.CudfSolver.Unsat ++ raise Dose_common.CudfSolver.Unsat + else + let r = + Cudf_parser.load_solution_from_file +--- a/src/solver/opamSolver.ml ++++ b/src/solver/opamSolver.ml +@@ -90,7 +90,7 @@ let cudf_versions_map universe packages = + pmap OpamPackage.Map.empty + + let name_to_cudf name = +- Common.CudfAdd.encode (OpamPackage.Name.to_string name) ++ Dose_common.CudfAdd.encode (OpamPackage.Name.to_string name) + + let constraint_to_cudf version_map name (op,v) = + let nv = OpamPackage.create name v in +@@ -343,7 +343,7 @@ let load_cudf_universe + OpamConsole.error_and_exit `Solver_failure "Malformed CUDF universe (%s)" s + in + log ~level:3 "Secondary load of cudf universe: done in %.3fs" (chrono ()); +- (* let universe = Algo.Depsolver.trim universe in *) ++ (* let universe = Dose_algo.Depsolver.trim universe in *) + cudf_universe + + let string_of_request r = +@@ -478,13 +478,13 @@ let installable universe = + universe.u_available ~build:true ~post:true () + in + let trimmed_universe = +- (* Algo.Depsolver.trim simple_universe => this can explode memory, we need ++ (* Dose_algo.Depsolver.trim simple_universe => this can explode memory, we need + to specify [~explain:false] *) +- let open Algo in ++ let open Dose_algo in + let open Depsolver in + let trimmed_pkgs = ref [] in + let callback d = +- if Algo.Diagnostic.is_solution d then ++ if Dose_algo.Diagnostic.is_solution d then + match d.Diagnostic.request with + |[p] -> trimmed_pkgs := p::!trimmed_pkgs + |_ -> assert false +@@ -515,12 +515,12 @@ let installable_subset universe packages = + simple_universe + in + let trimmed_universe = +- (* Algo.Depsolver.trimlist simple_universe with [~explain:false] *) +- let open Algo in ++ (* Dose_algo.Depsolver.trimlist simple_universe with [~explain:false] *) ++ let open Dose_algo in + let open Depsolver in + let trimmed_pkgs = ref [] in + let callback d = +- if Algo.Diagnostic.is_solution d then ++ if Dose_algo.Diagnostic.is_solution d then + match d.Diagnostic.request with + |[p] -> trimmed_pkgs := p::!trimmed_pkgs + |_ -> assert false +@@ -619,10 +619,10 @@ let coinstallability_check universe packages = + opam2cudf universe ~depopts:false ~build:true ~post:true + version_map packages + in +- match Algo.Depsolver.edos_coinstall cudf_universe cudf_packages with +- | { Algo.Diagnostic.result = Algo.Diagnostic.Success _; _ } -> ++ match Dose_algo.Depsolver.edos_coinstall cudf_universe cudf_packages with ++ | { Dose_algo.Diagnostic.result = Dose_algo.Diagnostic.Success _; _ } -> + None +- | { Algo.Diagnostic.result = Algo.Diagnostic.Failure _; _ } as c -> ++ | { Dose_algo.Diagnostic.result = Dose_algo.Diagnostic.Failure _; _ } as c -> + match OpamCudf.make_conflicts ~version_map cudf_universe c with + | Conflicts cs -> Some cs + | _ -> None +@@ -644,8 +644,8 @@ let atom_coinstallability_check universe atoms = + opam2cudf universe version_map universe.u_available + ~depopts:false ~build:true ~post:true) + in +- Algo.Depsolver.edos_install cudf_universe check_pkg +- |> Algo.Diagnostic.is_solution ++ Dose_algo.Depsolver.edos_install cudf_universe check_pkg ++ |> Dose_algo.Diagnostic.is_solution + + let new_packages sol = + OpamCudf.ActionGraph.fold_vertex (fun action packages -> +From 2e03a20abedb40cccb5295361649c64a8df46505 Mon Sep 17 00:00:00 2001 +From: Kate <kit.ty.kate@disroot.org> +Date: Tue, 2 Feb 2021 17:59:10 +0000 +Subject: [PATCH] Make opam-client compatible with dose3 6.0 + +--- a/admin-scripts/cudf-debug.ml ++++ b/admin-scripts/cudf-debug.ml +@@ -32,11 +32,11 @@ let rebuild_version_map univ = + let _ = + match Cudf_parser.load_from_file Sys.argv.(1) with + | Some preamble, univ, Some req -> +- begin match Algo.Depsolver.check_request ~explain:true (preamble, univ, req) with +- | Algo.Depsolver.Unsat (Some f) -> ++ begin match Dose_algo.Depsolver.check_request ~explain:true (preamble, univ, req) with ++ | Dose_algo.Depsolver.Unsat (Some f) -> + OpamConsole.msg "== DOSE MESSAGE ==\n"; + flush stdout; +- Algo.Diagnostic.fprintf_human ++ Dose_algo.Diagnostic.fprintf_human + ~pp:cudf_pp + Format.err_formatter + f; +--- a/src/client/opamAdminCheck.ml ++++ b/src/client/opamAdminCheck.ml +@@ -110,9 +110,9 @@ let cycle_check univ = + in + (* conflicts break cycles *) + let conflicts = +- Algo.Defaultgraphs.PackageGraph.conflict_graph cudf_univ ++ Dose_algo.Defaultgraphs.PackageGraph.conflict_graph cudf_univ + in +- let module CGraph = Algo.Defaultgraphs.PackageGraph.UG in ++ let module CGraph = Dose_algo.Defaultgraphs.PackageGraph.UG in + CGraph.iter_edges (fun nv1 nv2 -> + OpamCudf.Graph.remove_edge graph nv1 nv2; + OpamCudf.Graph.remove_edge graph nv2 nv1) +@@ -127,7 +127,7 @@ let cycle_check univ = + let univ = Cudf.load_universe pkgs in + let g = OpamCudf.Graph.of_universe univ in + let conflicts = +- Algo.Defaultgraphs.PackageGraph.conflict_graph univ ++ Dose_algo.Defaultgraphs.PackageGraph.conflict_graph univ + in + (* Simplify the graph by merging all equivalent versions of each + package *) diff --git a/dev-ml/opam-solver/opam-solver-2.1.0.ebuild b/dev-ml/opam-solver/opam-solver-2.1.0.ebuild new file mode 100644 index 000000000000..c4fc4cb7fcad --- /dev/null +++ b/dev-ml/opam-solver/opam-solver-2.1.0.ebuild @@ -0,0 +1,46 @@ +# Copyright 1999-2021 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=7 + +inherit dune + +DESCRIPTION="opam solver" +HOMEPAGE="https://opam.ocaml.org/ https://github.com/ocaml/opam" +SRC_URI="https://github.com/ocaml/opam/archive/${PV/_/-}.tar.gz -> opam-${PV}.tar.gz" +SRC_URI+=" https://dev.gentoo.org/~sam/distfiles/dev-ml/opam/opam-2.1.0-dose3-6.patch.xz" +S="${WORKDIR}/opam-${PV/_/-}" + +LICENSE="LGPL-2.1" +SLOT="0/${PV}" +KEYWORDS="~amd64 ~arm ~arm64 ~ppc ~ppc64 ~x86" +IUSE="+ocamlopt test" +RESTRICT="!test? ( test )" + +RDEPEND=" + ~dev-ml/opam-format-${PV}:= + dev-ml/opam-file-format:= + dev-ml/re:= + >=dev-ml/mccs-1.1.4:= + >=dev-ml/dose3-6.0:= + dev-ml/cudf:= +" +DEPEND="${RDEPEND} + test? ( dev-ml/opam-client )" + +PATCHES=( "${WORKDIR}"/opam-2.1.0-dose3-6.patch ) + +src_prepare() { + default + cat <<- EOF >> "${S}/dune" + (env + (dev + (flags (:standard -warn-error -3-9-33))) + (release + (flags (:standard -warn-error -3-9-33)))) + EOF +} + +src_compile() { + dune build @install --profile release || die +} |