Unverified Commit 32a6049a authored by Basile Clément's avatar Basile Clément
Browse files

ocamlPackages.menhir: support --suggest-menhirLib

menhir provides a `--suggest-menhirLib` option that tries to infer the
path of the menhir library from the path of the menhir binary.

Since the menhir library and the menhir binary are built as different
derivations, this does not work.

This patch hardcodes the location of the menhir library into the menhir
binary, making `--suggest-menhirLib` work.
parent 18e1305c
Loading
Loading
Loading
Loading
+8 −1
Original line number Diff line number Diff line
{ buildDunePackage
{ buildDunePackage, substituteAll, ocaml
, menhirLib, menhirSdk
}:

@@ -11,6 +11,13 @@ buildDunePackage rec {

  buildInputs = [ menhirLib menhirSdk ];

  patches = [
    (substituteAll {
      src = ./menhir-suggest-menhirLib.patch;
      libdir = "${menhirLib}/lib/ocaml/${ocaml.version}/site-lib/menhirLib";
    })
  ];

  meta = menhirSdk.meta // {
    description = "LR(1) parser generator for OCaml";
    mainProgram = "menhir";
+19 −0
Original line number Diff line number Diff line
diff --git a/src/installation.ml b/src/installation.ml
index 3c64e395..be7d6e7b 100644
--- a/src/installation.ml
+++ b/src/installation.ml
@@ -39,13 +39,4 @@ let rec normalize fn =
    and hope that it is of the form [.../bin/menhir]. We change this to
    [.../lib/menhirLib], and hope that this is where MenhirLib is installed. *)
 
-let libdir () =
-  let root =
-    Sys.executable_name
-    |> normalize
-    |> Filename.dirname (* remove [menhir] *)
-    |> Filename.dirname (* remove [bin] *)
-  in
-  Filename.concat
-    root
-    (Filename.concat "lib" "menhirLib")
+let libdir () = ignore normalize; "@libdir@"