X-Git-Url: http://matita.cs.unibo.it/gitweb/?a=blobdiff_plain;ds=sidebyside;f=helm%2Fmatita%2Fmatitadep.ml;h=e93dbad61ad379b4b1e671c36cd9f6cd092807af;hb=41be5e85a1103a5b14495bb487995a6a88e79c48;hp=3eb83af00964690ebf276127c9fa44f3e1a412c3;hpb=afe21e48aefe81db3ca150fac9a5bbfbc893fa59;p=helm.git diff --git a/helm/matita/matitadep.ml b/helm/matita/matitadep.ml index 3eb83af00..e93dbad61 100644 --- a/helm/matita/matitadep.ml +++ b/helm/matita/matitadep.ml @@ -26,81 +26,63 @@ module GA = GrafiteAst module U = UriManager -(* all are maps from "file" to "something" *) -let include_deps = Hashtbl.create (Array.length Sys.argv) -let baseuri_of = Hashtbl.create (Array.length Sys.argv) -let uri_deps = Hashtbl.create (Array.length Sys.argv) - -let buri alias = - U.buri_of_uri (U.uri_of_string alias) - -let resolve alias current_buri= - let buri = buri alias in - if buri <> current_buri then Some buri else None - -let find path = - let rec aux = function - | [] -> close_in (open_in path); path - | p :: tl -> - try - close_in (open_in (p ^ "/" ^ path)); p ^ "/" ^ path - with Sys_error _ -> aux tl - in - let paths = Helm_registry.get_list Helm_registry.string "matita.includes" in - try - aux paths - with Sys_error _ as exc -> - MatitaLog.error ("Unable to read " ^ path); - MatitaLog.error ("opts.include_paths was " ^ String.concat ":" paths); - raise exc -;; - let main () = + (* all are maps from "file" to "something" *) + let include_deps = Hashtbl.create (Array.length Sys.argv) in + let baseuri_of = Hashtbl.create (Array.length Sys.argv) in + let uri_deps = Hashtbl.create (Array.length Sys.argv) in + let buri alias = U.buri_of_uri (U.uri_of_string alias) in + let resolve alias current_buri = + let buri = buri alias in + if buri <> current_buri then Some buri else None in MatitaInit.load_configuration_file (); MatitaInit.parse_cmdline (); + let include_paths = + Helm_registry.get_list Helm_registry.string "matita.includes" in + let basedir = Helm_registry.get "matita.basedir" in List.iter - (fun file -> - let ic = open_in file in + (fun ma_file -> + let ic = open_in ma_file in let istream = Ulexing.from_utf8_channel ic in let dependencies = GrafiteParser.parse_dependencies istream in close_in ic; List.iter - (function - | GrafiteAst.UriDep uri -> + (function + | GrafiteAst.UriDep uri -> let uri = UriManager.string_of_uri uri in - Hashtbl.add uri_deps file uri - | GrafiteAst.BaseuriDep uri -> - let uri = MatitaMisc.strip_trailing_slash uri in - Hashtbl.add baseuri_of file uri - | GrafiteAst.IncludeDep path -> + Hashtbl.add uri_deps ma_file uri + | GrafiteAst.BaseuriDep uri -> + let uri = Http_getter_misc.strip_trailing_slash uri in + Hashtbl.add baseuri_of ma_file uri + | GrafiteAst.IncludeDep path -> try - let ma_file = if path <> "coq.ma" then find path else path in - let moo_file = MatitaMisc.obj_file_of_script ma_file in - Hashtbl.add include_deps file moo_file + let baseuri = + GrafiteParserMisc.baseuri_of_script ~include_paths path in + let moo_file = LibraryMisc.obj_file_of_baseuri ~basedir ~baseuri in + Hashtbl.add include_deps ma_file moo_file with Sys_error _ -> - MatitaLog.warn - ("Unable to find " ^ path ^ " that is included in " ^ file)) - dependencies) - (Helm_registry.get_list Helm_registry.string "matita.args"); + HLog.warn + ("Unable to find " ^ path ^ " that is included in " ^ ma_file) + ) dependencies + ) (Helm_registry.get_list Helm_registry.string "matita.args"); Hashtbl.iter (fun file alias -> let dep = resolve alias (Hashtbl.find baseuri_of file) in match dep with | None -> () | Some u -> - Hashtbl.add include_deps file (MatitaMisc.obj_file_of_baseuri u)) + Hashtbl.add include_deps file + (LibraryMisc.obj_file_of_baseuri ~basedir ~baseuri:u)) uri_deps; List.iter - (fun file -> - let deps = Hashtbl.find_all include_deps file in + (fun ma_file -> + let deps = Hashtbl.find_all include_deps ma_file in let deps = List.fast_sort Pervasives.compare deps in let deps = HExtlib.list_uniq deps in - let deps = file :: deps in - let moo = MatitaMisc.obj_file_of_script file in + let deps = ma_file :: deps in + let baseuri = Hashtbl.find baseuri_of ma_file in + let moo = LibraryMisc.obj_file_of_baseuri ~basedir ~baseuri in Printf.printf "%s: %s\n" moo (String.concat " " deps); - Printf.printf "%s: %s\n" (Pcre.replace ~pat:"ma$" ~templ:"mo" file) moo) + Printf.printf "%s: %s\n" (Pcre.replace ~pat:"ma$" ~templ:"mo" ma_file) moo) (Helm_registry.get_list Helm_registry.string "matita.args") -;; - -let _ = - main () +