aboutsummaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
authorPierre-Marie Pédrot2018-09-06 13:50:19 +0200
committerPierre-Marie Pédrot2018-09-06 13:50:19 +0200
commit5b2b73762faec4f16b7b3494544f4b5788b1b73a (patch)
tree2972bb5eb164113b9a282f613426d56be1bb9bb2 /lib
parent6f42e5349c1ac54215b22cdba75d9db22a2bec36 (diff)
parent340088bbc08d5a3f55110dc2d287a83866ad2740 (diff)
Merge PR #8415: [bin] Fix binary location procedure to work with symlinks.
Diffstat (limited to 'lib')
-rw-r--r--lib/system.ml7
1 files changed, 5 insertions, 2 deletions
diff --git a/lib/system.ml b/lib/system.ml
index eef65a4e3d..902a4f2506 100644
--- a/lib/system.ml
+++ b/lib/system.ml
@@ -301,8 +301,11 @@ let with_time ~batch f x =
Feedback.msg_info (str msg ++ fmt_time_difference tstart tend ++ str msg2);
raise e
+(* We use argv.[0] as we don't want to resolve symlinks *)
let get_toplevel_path top =
- let dir = Filename.dirname Sys.executable_name in
+ let open Filename in
+ let dir = if String.equal (basename Sys.argv.(0)) Sys.argv.(0)
+ then "" else dirname Sys.argv.(0) ^ dir_sep in
let exe = if Sys.(os_type = "Win32" || os_type = "Cygwin") then ".exe" else "" in
let eff = if Dynlink.is_native then ".opt" else ".byte" in
- dir ^ Filename.dir_sep ^ top ^ eff ^ exe
+ dir ^ top ^ eff ^ exe