Skip to content

Commit

Permalink
Merge branch 'depext'
Browse files Browse the repository at this point in the history
  • Loading branch information
sim642 committed May 27, 2023
2 parents 085a63e + 90aa6e2 commit b819869
Show file tree
Hide file tree
Showing 3 changed files with 18 additions and 2 deletions.
1 change: 1 addition & 0 deletions src/depgraph/common.ml
Expand Up @@ -34,6 +34,7 @@ struct
| Module of {parent: t; name: string}
| LocalPackageCluster
| OpamPackage of Opkg.t
| SysPackage of string
[@@deriving eq, ord]

let hash = Hashtbl.hash
Expand Down
6 changes: 5 additions & 1 deletion src/depgraph/dot_graph.ml
Expand Up @@ -20,6 +20,8 @@ struct
[`Fixedsize true; `Width 0.; `Height 0.; `Style `Invis; `Label ""]
| OpamPackage _ ->
[`Shape `Box]
| SysPackage _ ->
[`Shape `Box; `Style `Filled]
let default_vertex_attributes _ = []
let default_edge_attributes _ = []
let rec vertex_name = function
Expand All @@ -28,6 +30,7 @@ struct
| Module {name; parent} -> vertex_name parent ^ "__" ^ name
| LocalPackageCluster -> "local_package__"
| OpamPackage package -> Opkg.Name.to_string package.name ^ "\n" ^ Opkg.Version.to_string package.version
| SysPackage name -> name
let local_package_subgraph = string_of_int (Hashtbl.hash (show_package Local))
let get_subgraph = function
| VV.Module {parent; _} ->
Expand All @@ -42,7 +45,8 @@ struct
end
| LocalPackageCluster ->
Some {Ocamlgraph_extra.Graphviz.DotAttributes.sg_name = local_package_subgraph; sg_attributes = [`Label (show_package Local)]; sg_parent = None}
| OpamPackage _ ->
| OpamPackage _
| SysPackage _ ->
None
let vertex_name v = Printf.sprintf "\"%s\"" (vertex_name v)
let edge_attributes (u, e, v) =
Expand Down
13 changes: 12 additions & 1 deletion src/depgraph/opam_installed_graph.ml
Expand Up @@ -27,12 +27,23 @@ let g_of_depends ~st ~env depends =
Ofml.fold_left (fold_depend ~optional:true) acc depopts
in

let fold_all_depexts f acc package =
let depexts = OpamSwitchState.depexts st package in
OpamSysPkg.Set.fold (fun depext acc ->
f acc depext
) depexts acc
in

let fold_package package g =
let pkg: V.t = OpamPackage package in
let g = G.add_vertex g pkg in
fold_all_depends (fun g depend_package optional version_formula ->
let g = fold_all_depends (fun g depend_package optional version_formula ->
G.add_edge_e g (pkg, OpamFormula {optional; version_formula}, OpamPackage depend_package)
) g package
in
fold_all_depexts (fun g depext ->
G.add_edge_e g (pkg, None, SysPackage (OpamSysPkg.to_string depext))
) g package
in

match depends with
Expand Down

0 comments on commit b819869

Please sign in to comment.