@@ -46,18 +46,23 @@ let local_binaries { local_bins; _ } =
4646 | _ , Origin _origins -> None )
4747;;
4848
49- let analyze_binary t name =
49+ let analyze_binary t ~ dir name =
5050 match Filename. is_relative name with
5151 | false -> Memo. return (`Resolved (Path. of_filename_relative_to_initial_cwd name))
5252 | true ->
5353 let * local_bins = Memo.Lazy. force t.local_bins in
54+ let lookup_name =
55+ match Filename. analyze_program_name name with
56+ | Absolute | In_path -> name
57+ | Relative_to_current_dir -> Path.Build. relative dir name |> Path.Build. basename
58+ in
5459 let which () =
55- Context. which t.context name
60+ Context. which t.context lookup_name
5661 >> | function
5762 | None -> `None
5863 | Some path -> `Resolved path
5964 in
60- (match Filename.Map. find local_bins name with
65+ (match Filename.Map. find local_bins lookup_name with
6166 | Some (Resolved p ) -> Memo. return (`Resolved (Path. build p.path))
6267 | None -> which ()
6368 | Some (Origin origins ) ->
@@ -82,8 +87,8 @@ let analyze_binary t name =
8287 ]))
8388;;
8489
85- let binary t ?hint ?(where = Install_dir ) ~loc name =
86- analyze_binary t name
90+ let binary t ?hint ?(where = Install_dir ) ~dir ~ loc name =
91+ analyze_binary t ~dir name
8792 >> = function
8893 | `Resolved path -> Memo. return @@ Ok path
8994 | `None ->
@@ -107,8 +112,8 @@ let binary t ?hint ?(where = Install_dir) ~loc name =
107112 Ok (Path. build src))
108113;;
109114
110- let binary_available t name =
111- analyze_binary t name
115+ let binary_available t ~ dir name =
116+ analyze_binary t ~dir name
112117 >> | function
113118 | `None -> false
114119 | `Resolved _ | `Origin _ -> true
0 commit comments