X-Git-Url: http://matita.cs.unibo.it/gitweb/?a=blobdiff_plain;f=helm%2Fmatita%2Fmatitadep.ml;h=e93dbad61ad379b4b1e671c36cd9f6cd092807af;hb=41be5e85a1103a5b14495bb487995a6a88e79c48;hp=9fafa4907f3dd54f83c20777e69baf44363cc038;hpb=3b6a37cbbfe7d1535080be0e728dd8aa3c112880;p=helm.git diff --git a/helm/matita/matitadep.ml b/helm/matita/matitadep.ml index 9fafa4907..e93dbad61 100644 --- a/helm/matita/matitadep.ml +++ b/helm/matita/matitadep.ml @@ -23,97 +23,66 @@ * http://helm.cs.unibo.it/ *) -let paths_to_search_in = ref [];; - -let add_l l = fun s -> l := s :: !l ;; - -let arg_spec = [ - "-I", Arg.String (add_l paths_to_search_in), - " Adds path to the list of searched paths for the include command"; -] -let usage = - Printf.sprintf "MatitaDep v%s\nUsage: matitadep [options] file...\nOptions:" - BuildTimeConf.version - 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 = !paths_to_search_in 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 () = - MatitaInit.load_config_only (); - let files = ref [] in - Arg.parse arg_spec (add_l files) usage; + (* 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 - let istream = Stream.of_channel ic 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) - !files; + 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 = MatitaMisc.list_uniq deps in - let deps = file :: deps in - let moo = MatitaMisc.obj_file_of_script file in + let deps = HExtlib.list_uniq deps 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) - !files -;; - -let _ = - main () + Printf.printf "%s: %s\n" (Pcre.replace ~pat:"ma$" ~templ:"mo" ma_file) moo) + (Helm_registry.get_list Helm_registry.string "matita.args") +