<div dir="ltr">Calling `ghc --print-lib-dir` is the only way because the `$libdir` is actually provided on the cmdline using the -B flag:<br><div><a href="https://gitlab.haskell.org/ghc/ghc/-/blob/master/ghc/Main.hs#L110-112">https://gitlab.haskell.org/ghc/ghc/-/blob/master/ghc/Main.hs#L110-112</a></div><div><br></div><div>That's why the `ghc` you normally execute is a shell-wrapper around the `ghc` executable applied to a `-B` argument set at installation time.</div><div>But a user is free to move that `$libdir` dir to any other place after installation and update the `-B` flag accordingly.<br></div></div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Mon, 8 Feb 2021 at 20:09, Fendor <<a href="mailto:power.walross@gmail.com">power.walross@gmail.com</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">Hi,<br>
<br>
Well the purpose is a bit convoluted, but here it goes:<br>
<br>
Basically, we want to know which `ghc` version `cabal-install` is going <br>
to pick for compiling the project in a platform independent way without <br>
resorting to linking to `Cabal`.<br>
<br>
You can execute `cabal exec -- ghc` which launches the correct `ghc` <br>
version, but as far as we found out, there is no programmatic way of <br>
finding the path to the `ghc` executable itself (`cabal exec -- where <br>
ghc` or `cabal exec -- which ghc` fails on windows). What we really want <br>
is `cabal-install` to tell us, e.g. with `cabal show-build-info` which <br>
is a command not implemented yet[0].<br>
<br>
As long as this command is not implemented, we have to monkey patch it <br>
in order to satisfy our goals. You can execute `cabal exec -- ghc <br>
--print-libdir`, which gives you the `$libdir`, which brings us back to <br>
the original question: can we find the `ghc` executable given `$libdir` <br>
in a platform independent way?<br>
<br>
[0] <a href="https://github.com/haskell/cabal/pull/6241" rel="noreferrer" target="_blank">https://github.com/haskell/cabal/pull/6241</a><br>
<br>
Best regards,<br>
Fendor<br>
<br>
On 2/8/21 7:48 PM, Daniel Gröber wrote:<br>
> Hi Fendor,<br>
><br>
> On Mon, Feb 08, 2021 at 07:35:12PM +0100, Fendor wrote:<br>
>> I want to find out the location of the `ghc` (and `ghc-pkg`) executable<br>
>> given the `$libdir` (obtained by `ghc --print-libdir`).<br>
>> Is there a platform independent way of doing that, which we can rely on?<br>
> Are you aware of the `ghc --print-libdir` option? I think you'd be much<br>
> better off going from ghc binary to libdir instead of the other way around.<br>
><br>
> Could you explain why you're trying to do it your way?<br>
><br>
>> (P. S. first time using a mailing list, hope I am doing it correctly)<br>
> Seems fine to me :)<br>
><br>
> --Daniel<br>
_______________________________________________<br>
ghc-devs mailing list<br>
<a href="mailto:ghc-devs@haskell.org" target="_blank">ghc-devs@haskell.org</a><br>
<a href="http://mail.haskell.org/cgi-bin/mailman/listinfo/ghc-devs" rel="noreferrer" target="_blank">http://mail.haskell.org/cgi-bin/mailman/listinfo/ghc-devs</a><br>
</blockquote></div>