X-Git-Url: http://matita.cs.unibo.it/gitweb/?a=blobdiff_plain;f=helm%2Fmatita%2Fmatitadep.ml;h=e93dbad61ad379b4b1e671c36cd9f6cd092807af;hb=41be5e85a1103a5b14495bb487995a6a88e79c48;hp=34f7744a00daa88c241e769442e6c5ddb4aa8a09;hpb=0ac236dda6f80f6dc86a7f12d8c88b25e64e3251;p=helm.git diff --git a/helm/matita/matitadep.ml b/helm/matita/matitadep.ml index 34f7744a0..e93dbad61 100644 --- a/helm/matita/matitadep.ml +++ b/helm/matita/matitadep.ml @@ -34,51 +34,37 @@ let main () = 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 - 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 -> - HLog.error ("Unable to read " ^ path); - HLog.error ("opts.include_paths was " ^ String.concat ":" paths); - raise exc - 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 ~basedir 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 _ -> HLog.warn - ("Unable to find " ^ path ^ " that is included in " ^ file)) - dependencies) - (Helm_registry.get_list Helm_registry.string "matita.args"); + ("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 @@ -89,13 +75,14 @@ let main () = (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 ~basedir 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")