]> matita.cs.unibo.it Git - helm.git/blobdiff - matita/matitacLib.ml
some experiments
[helm.git] / matita / matitacLib.ml
index ca587690cfecf60a2bd332b6164d37f416f9b93d..d4e67e7a0ae329de1a46613ceeea57f70ff0b12d 100644 (file)
@@ -81,9 +81,17 @@ let run_script is eval_function  =
       raise exn
 
 let fname () =
-  match Helm_registry.get_list Helm_registry.string "matita.args" with
+  let rec aux = function
+  | ""::tl -> aux tl
   | [x] -> x
-  | _ -> MatitaInit.die_usage ()
+  | [] -> MatitaInit.die_usage ()
+  | l -> 
+      prerr_endline 
+        ("Wrong commands: " ^ 
+          String.concat " " (List.map (fun x -> "'" ^ x ^ "'") l));
+      MatitaInit.die_usage ()
+  in
+  aux (Helm_registry.get_list Helm_registry.string "matita.args")
 
 let pp_ocaml_mode () = 
   HLog.message "";
@@ -158,27 +166,40 @@ let pp_times fname bench_mode rc big_bang =
     begin
       let { Unix.tms_utime = u ; Unix.tms_stime = s} = Unix.times () in
       let r = Unix.gettimeofday () -. big_bang in
-      let extra = try Sys.getenv "DO_TESTS_EXTRA" with Not_found -> "" in
+      let extra = try Sys.getenv "BENCH_EXTRA_TEXT" with Not_found -> "" in
       let cc = 
-        if Str.string_match (Str.regexp "opt$") Sys.argv.(0) 0 then 
+        if Str.string_match (Str.regexp ".*opt$") Sys.argv.(0) 0 then 
           "matitac.opt" 
         else 
           "matitac" 
       in
-      let rc = if rc then "OK" else "FAIL" in
+      let rc = if rc then "\e[0;32mOK\e[0m" else "\e[0;31mFAIL\e[0m" in
       let times = 
         let fmt t = 
           let seconds = int_of_float t in
           let cents = int_of_float ((t -. floor t) *. 100.0) in
           let minutes = seconds / 60 in
           let seconds = seconds mod 60 in
-          Printf.sprintf "%2dm%02d.%02ds" minutes seconds cents
+          Printf.sprintf "%dm%02d.%02ds" minutes seconds cents
         in
         Printf.sprintf "%s %s %s" (fmt r) (fmt u) (fmt s)
       in
-      let s = 
-        Printf.sprintf "%s\t%-30s   %s\t%s\t%s" cc fname rc times extra 
+      let fname = 
+        match MatitamakeLib.development_for_dir (Filename.dirname fname) with
+        | None -> fname
+        | Some d -> 
+            let rootlen = String.length(MatitamakeLib.root_for_development d)in
+            let fnamelen = String.length fname in
+            assert (fnamelen > rootlen); 
+            String.sub fname rootlen (fnamelen - rootlen)           
+      in
+      let fname = 
+        if fname.[0] = '/' then
+          String.sub fname 1 (String.length fname - 1)
+        else
+          fname
       in
+      let s = Printf.sprintf "%s %-35s %-4s %s %s" cc fname rc times extra in
       print_endline s;
       flush stdout
     end
@@ -209,12 +230,7 @@ let main ~mode =
   in
   if Helm_registry.get_int "matita.verbosity" < 1 then
     HLog.set_log_callback newcb;
-  if bench_mode then
-    begin
-    HLog.set_log_callback (fun _ _ -> ());
-    let out = open_out "/dev/null" in
-    Unix.dup2 (Unix.descr_of_out_channel out) (Unix.descr_of_out_channel stderr)
-    end;
+  if bench_mode then MatitaMisc.shutup ();
   let matita_debug = Helm_registry.get_bool "matita.debug" in
   try
     let time = Unix.time () in
@@ -262,13 +278,16 @@ let main ~mode =
        let baseuri =
         DependenciesParser.baseuri_of_script ~include_paths fname in
        let moo_fname = 
-         LibraryMisc.obj_file_of_baseuri ~baseuri ~writable:true 
+         LibraryMisc.obj_file_of_baseuri 
+           ~must_exist:false ~baseuri ~writable:true 
        in
        let lexicon_fname= 
-         LibraryMisc.lexicon_file_of_baseuri ~baseuri ~writable:true 
+         LibraryMisc.lexicon_file_of_baseuri 
+          ~must_exist:false ~baseuri ~writable:true 
        in
        let metadata_fname =
-        LibraryMisc.metadata_file_of_baseuri ~baseuri ~writable:true
+        LibraryMisc.metadata_file_of_baseuri 
+          ~must_exist:false ~baseuri ~writable:true
        in
        GrafiteMarshal.save_moo moo_fname moo_content_rev;
        LibraryNoDb.save_metadata metadata_fname metadata;