X-Git-Url: http://matita.cs.unibo.it/gitweb/?a=blobdiff_plain;f=helm%2Fmatita%2FmatitacleanLib.ml;h=3a1d2e3db5068f3af2cd02819dbcbd692827901e;hb=6565cd51fb866a80838003cd65dc00e4d5a9814b;hp=06c6835ca5797b32b09a38e68c06cc55d88bb526;hpb=b11d278a26840884692cdfb89e168081134d293f;p=helm.git diff --git a/helm/matita/matitacleanLib.ml b/helm/matita/matitacleanLib.ml index 06c6835ca..3a1d2e3db 100644 --- a/helm/matita/matitacleanLib.ml +++ b/helm/matita/matitacleanLib.ml @@ -30,14 +30,7 @@ module HGT = Http_getter_types;; module HG = Http_getter;; module HGM = Http_getter_misc;; module UM = UriManager;; -module TA = TacticAst;; - -let baseuri_of_baseuri_decl st = - let module TA = TacticAst in - match st with - | TA.Executable (_, TA.Command (_, TA.Set (_, "baseuri", buri))) -> - Some buri - | _ -> None +module TA = GrafiteAst;; let cache_of_processed_baseuri = Hashtbl.create 1024 @@ -129,47 +122,35 @@ let close_uri_list uri_to_remove = in uri_to_remove, depend -let baseuri_of_file file = - let ic = open_in file in - let stms = CicTextualParser2.parse_statements (Stream.of_channel ic) in - close_in ic; - let uri = ref "" in - List.iter - (fun stm -> - match baseuri_of_baseuri_decl stm with - | Some buri -> - let u = MatitaMisc.strip_trailing_slash buri in - if String.length u < 5 || String.sub u 0 5 <> "cic:/" then - MatitaLog.error (file ^ " sets an incorrect baseuri: " ^ buri); - (try - ignore(HG.resolve u) - with - | HGT.Unresolvable_URI _ -> - MatitaLog.error (file ^ " sets an unresolvable baseuri: "^buri) - | HGT.Key_not_found _ -> ()); - uri := u - | None -> ()) - stms; - !uri - -let rec fix uris next = +let rec close uris next = match next with | [] -> uris - | l -> let uris, next = close_uri_list l in fix uris next @ uris + | l -> let uris, next = close_uri_list l in close uris next @ uris +let cleaned_no = ref 0;; + let clean_baseuris ?(verbose=true) buris = Hashtbl.clear cache_of_processed_baseuri; let buris = List.map HGM.strip_trailing_slash buris in debug_prerr "clean_baseuris called on:"; if debug then List.iter debug_prerr buris; - let l = fix [] buris in + let l = close [] buris in let l = MatitaMisc.list_uniq (List.fast_sort Pervasives.compare l) in let l = List.map UriManager.uri_of_string l in debug_prerr "clean_baseuri will remove:"; if debug then List.iter (fun u -> debug_prerr (UriManager.string_of_uri u)) l; - List.iter (MatitaSync.remove ~verbose) l - -let is_empty buri = HG.ls (HGM.strip_trailing_slash buri ^ "/") = [] - + Hashtbl.iter + (fun buri _ -> + MatitaMisc.safe_remove (MatitaMisc.obj_file_of_baseuri buri) + ) cache_of_processed_baseuri; + List.iter (MatitaSync.remove ~verbose) l; + cleaned_no := !cleaned_no + List.length l; + if !cleaned_no > 30 then + List.iter + (function table -> + ignore (Mysql.exec (MatitaDb.instance ()) ("OPTIMIZE TABLE " ^ table))) + [MetadataTypes.name_tbl (); MetadataTypes.rel_tbl (); + MetadataTypes.sort_tbl (); MetadataTypes.obj_tbl(); + MetadataTypes.count_tbl()]