let load_root_file rootpath =
let data = HExtlib.input_file rootpath in
let lines = Str.split (Str.regexp "\n") data in
+ let clean s = Pcre.replace ~pat:"^ *" (Pcre.replace ~pat:" *$" s) in
List.map
(fun l ->
match Str.split (Str.regexp "=") l with
- | [k;v] -> Pcre.replace ~pat:" " k, Pcre.replace ~pat:" " v
+ | [k;v] -> clean k, Http_getter_misc.strip_trailing_slash (clean v)
| _ -> raise (Failure ("Malformed root file: " ^ rootpath)))
lines
;;
try
let path = HExtlib.find_in include_paths file in
let path = absolutize path in
- (* HLog.debug ("file "^file^" resolved as "^path); *)
+(* HLog.debug ("file "^file^" resolved as "^path); *)
let rootpath, root, buri =
try
let mburi = Helm_registry.get "matita.baseuri" in
let buri = List.assoc "baseuri" (load_root_file rootpath) in
rootpath, Filename.dirname rootpath, buri
in
- (* HLog.debug ("file "^file^" rooted by "^rootpath^""); *)
+(* HLog.debug ("file "^file^" rooted by "^rootpath^""); *)
let uri = Http_getter_misc.strip_trailing_slash buri in
if String.length uri < 5 || String.sub uri 0 5 <> "cic:/" then
HLog.error (rootpath ^ " sets an incorrect baseuri: " ^ buri);
ensure_trailing_slash root, remove_trailing_slash uri, path
- with Failure "find_in" as exn ->
- HLog.error ("Unable to find: "^file);
- raise exn
+ with Failure "find_in" ->
+ HLog.error ("We are in: " ^ Sys.getcwd ());
+ HLog.error ("Unable to find: "^file^"\nPaths explored:");
+ List.iter (fun x -> HLog.error (" - "^x)) include_paths;
+ raise (NoRootFor file)
;;
let baseuri_of_script ~include_paths file =
begin
let l = input_line ic in
match Str.split (Str.regexp " ") l with
- | [] -> HLog.error ("malformed deps file: " ^ f); exit 1
+ | [] ->
+ HLog.error ("Malformed deps file: " ^ f);
+ raise (Failure ("Malformed deps file: " ^ f))
| he::tl -> deps := (he,tl) :: !deps
end
done; !deps
let todo =
let local, remote =
List.partition
- (fun (file,d) -> d<>[] || F.root_of local_options file = Some root)
+ (fun (file,d) ->
+ d<>[] || F.root_of local_options file = Some root)
todo
in
remote @ local
| Some froot ->
make froot [file]
| None ->
- HLog.error ("No root for: "^F.string_of_source_object file);
+ HLog.error ("No root for: "^F.string_of_source_object file);
false
in
if rc then (file::c,f)
end
let write_deps_file root deps =
- let oc = open_out "depends" in
- List.iter (fun (t,d) -> output_string oc (t^" "^String.concat " " d^"\n")) deps;
+ let oc = open_out (root ^ "/depends") in
+ List.iter
+ (fun (t,d) -> output_string oc (t^" "^String.concat " " d^"\n"))
+ deps;
close_out oc;
- HLog.message ("Generated " ^ Sys.getcwd () ^ "/depends")
+ HLog.message ("Generated: " ^ root ^ "/depends")
;;