diff --git a/.travis-install.sh b/.travis-install.sh index 7ee853c..6ba64cc 100755 --- a/.travis-install.sh +++ b/.travis-install.sh @@ -10,5 +10,4 @@ opam --version opam --git-version opam init -opam switch $OCAML_VERSION - +opam switch create $OCAML_VERSION diff --git a/.travis.yml b/.travis.yml index 41050d0..1eb9808 100644 --- a/.travis.yml +++ b/.travis.yml @@ -19,3 +19,4 @@ env: - OCAML_VERSION=4.04.0 - OCAML_VERSION=4.05.0 - OCAML_VERSION=4.06.1 + - OCAML_VERSION=4.07.1 diff --git a/tools/ocp-build/actions/buildActionMake.ml b/tools/ocp-build/actions/buildActionMake.ml index d27b42d..faba86c 100644 --- a/tools/ocp-build/actions/buildActionMake.ml +++ b/tools/ocp-build/actions/buildActionMake.ml @@ -392,6 +392,9 @@ let arg_list = "--dot-report", Arg.Set BuildGlobals.dot_report_arg, " Create a DOT report in _obuild/_reports"; + "--dot-report-short", Arg.Set BuildGlobals.dot_report_short_arg, + " Create a DOT report in _obuild/_reports without installed deps"; + "--replay-script", Arg.Set BuildEngineReport.output_replay_script, " Generates _obuild/_reports/build-replay.sh"; diff --git a/tools/ocp-build/buildGlobals.ml b/tools/ocp-build/buildGlobals.ml index 158d75d..a0bf5c1 100644 --- a/tools/ocp-build/buildGlobals.ml +++ b/tools/ocp-build/buildGlobals.ml @@ -47,6 +47,7 @@ let autogen_arg = ref false let list_ocp_files = ref false let html_report_arg = ref false let dot_report_arg = ref false +let dot_report_short_arg = ref false let new_builder_context b = { build_context = b; diff --git a/tools/ocp-build/ocaml/buildOCamlDotReport.ml b/tools/ocp-build/ocaml/buildOCamlDotReport.ml index 7c0defa..2bd0713 100644 --- a/tools/ocp-build/ocaml/buildOCamlDotReport.ml +++ b/tools/ocp-build/ocaml/buildOCamlDotReport.ml @@ -5,13 +5,6 @@ open BuildValue.TYPES open BuildOCPTypes open Ocamldot.TYPES -let report_dir = "_obuild/_reports" -let report_dot = "project.dot" -let report_pdf = "project.pdf" - -let report_dot = Filename.concat report_dir report_dot -let report_pdf = Filename.concat report_dir report_pdf - type node = { node_name : string; mutable node_requires : node StringMap.t; @@ -26,7 +19,7 @@ type node = { } -let report packages = +let report ~full_graph packages = let nodes = ref StringMap.empty in let add_node node_name = @@ -110,8 +103,9 @@ let report packages = (NodeColor "red"):: attrs end in let attrs = if n.node_exists then attrs else (NodeShape Diamond) :: attrs in - let node = Ocamldot.node t n.node_name attrs in - n.node_node <- Some node + if full_graph || not n.node_installed then + let node = Ocamldot.node t n.node_name attrs in + n.node_node <- Some node ) !nodes; StringMap.iter (fun _ n -> @@ -120,7 +114,8 @@ let report packages = | Some node -> StringMap.iter (fun _ n2 -> match n2.node_node with - | None -> assert false + | None -> + assert (not full_graph && n2.node_installed) | Some node2 -> let _edge = Ocamldot.edge node node2 [] in () @@ -171,6 +166,15 @@ let report packages = ) !nodes; *) + let report_dir = "_obuild/_reports" in + + let report_dot, report_pdf = + if full_graph then "project.dot", "project.pdf" + else "project-short.dot", "project-short.pdf" + in + let report_dot = Filename.concat report_dir report_dot in + let report_pdf = Filename.concat report_dir report_pdf in + BuildMisc.safe_mkdir report_dir; Ocamldot.save t report_dot; let cmd = Printf.sprintf "dot -Tpdf %s -o %s" report_dot report_pdf in diff --git a/tools/ocp-build/ocaml/buildOCamlDotReport.mli b/tools/ocp-build/ocaml/buildOCamlDotReport.mli index 60be646..aa4cebe 100644 --- a/tools/ocp-build/ocaml/buildOCamlDotReport.mli +++ b/tools/ocp-build/ocaml/buildOCamlDotReport.mli @@ -2,4 +2,5 @@ open OcpCompat val report : + full_graph : bool -> BuildOCamlTypes.ocaml_description StringMap.t -> unit diff --git a/tools/ocp-build/ocaml/buildOCamlVerifyPackages.ml b/tools/ocp-build/ocaml/buildOCamlVerifyPackages.ml index 26d153b..2b0cec0 100644 --- a/tools/ocp-build/ocaml/buildOCamlVerifyPackages.ml +++ b/tools/ocp-build/ocaml/buildOCamlVerifyPackages.ml @@ -236,7 +236,10 @@ let verify_packages w state = let packages = get_uniq_ocaml_packages w state in if !BuildGlobals.dot_report_arg then - BuildOCamlDotReport.report packages; + BuildOCamlDotReport.report ~full_graph:true packages; + + if !BuildGlobals.dot_report_short_arg then + BuildOCamlDotReport.report ~full_graph:false packages; let packages = build_dependency_graph w packages in