Handle the alternative findlib directory layout

Some packages still use this, such as ocp-blah and llvm
This commit is contained in:
Jeremie Dimino 2017-05-17 15:12:11 +01:00
parent b2a9d6dc51
commit 80792e4e74
1 changed files with 12 additions and 4 deletions

View File

@ -311,15 +311,23 @@ let rec load_meta_rec t ~fq_name ~packages ~required_by =
let rec loop dirs : (Path.t * Meta.t) option =
match dirs with
| dir :: dirs ->
let dir = Path.relative dir root_name in
let fn = Path.relative dir "META" in
let sub_dir = Path.relative dir root_name in
let fn = Path.relative sub_dir "META" in
if Path.exists fn then
Some (dir,
Some (sub_dir,
{ name = root_name
; entries = Meta.load (Path.to_string fn)
})
else
loop dirs
(* Alternative layout *)
let fn = Path.relative dir ("META." ^ root_name) in
if Path.exists fn then
Some (dir,
{ name = root_name
; entries = Meta.load (Path.to_string fn)
})
else
loop dirs
| [] ->
match String_map.find root_name Meta.builtins with
| Some meta -> Some (t.stdlib_dir, meta)