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
+ let clean s =
+ Pcre.replace ~pat:"[ \t]+" ~templ:" "
+ (Pcre.replace ~pat:"^ *" (Pcre.replace ~pat:" *$" s))
+ in
List.map
(fun l ->
match Str.split (Str.regexp "=") l with
val mtime_of_source_object: source_object -> float option
val mtime_of_target_object: target_object -> float option
val is_readonly_buri_of: options -> source_object -> bool
+ val dotdothack: source_object -> source_object
end
module Make = functor (F:Format) -> struct
let local, remote =
List.partition (fun (_,_,froot,_) -> froot = Some root) todo
in
- let local = List.filter (is_not_ro opts) local in
- remote @ local
+ let local, skipped = List.partition (is_not_ro opts) local in
+ List.iter
+ (fun x ->
+ HLog.warn("Read only baseuri for: "^F.string_of_source_object(fst4 x)))
+ skipped;
+ remote @ local
in
if todo <> [] then
let compiled, failed =
if targets = [] then
make_aux root opts [] [] deps
else
- make_aux root opts [] [] (purge_unwanted_roots targets deps)
+ make_aux root opts [] []
+ (purge_unwanted_roots (List.map F.dotdothack targets) deps)
in
HLog.debug ("Leaving directory '"^root^"'");
Sys.chdir old_root;
close_out oc;
HLog.message ("Generated: " ^ root ^ "/depends")
;;
-
+
+(* FG ***********************************************************************)
+
+(* scheme uri part as defined in URI Generic Syntax (RFC 3986) *)
+let uri_scheme_rex = Pcre.regexp "^[[:alpha:]][[:alnum:]\-+.]*:"
+
+let is_uri str =
+ Pcre.pmatch ~rex:uri_scheme_rex str