Find the ghc binary path from libdir

Fendor power.walross at gmail.com
Mon Feb 8 19:08:45 UTC 2021


Hi,

Well the purpose is a bit convoluted, but here it goes:

Basically, we want to know which `ghc` version `cabal-install` is going 
to pick for compiling the project in a platform independent way without 
resorting to linking to `Cabal`.

You can execute `cabal exec -- ghc` which launches the correct `ghc` 
version, but as far as we found out, there is no programmatic way of 
finding the path to the `ghc` executable itself (`cabal exec -- where 
ghc` or `cabal exec -- which ghc` fails on windows). What we really want 
is `cabal-install` to tell us, e.g. with `cabal show-build-info` which 
is a command not implemented yet[0].

As long as this command is not implemented, we have to monkey patch it 
in order to satisfy our goals. You can execute `cabal exec -- ghc 
--print-libdir`, which gives you the `$libdir`, which brings us back to 
the original question: can we find the `ghc` executable given `$libdir` 
in a platform independent way?

[0] https://github.com/haskell/cabal/pull/6241

Best regards,
Fendor

On 2/8/21 7:48 PM, Daniel Gröber wrote:
> Hi Fendor,
>
> On Mon, Feb 08, 2021 at 07:35:12PM +0100, Fendor wrote:
>> I want to find out the location of the `ghc` (and `ghc-pkg`) executable
>> given the `$libdir` (obtained by `ghc --print-libdir`).
>> Is there a platform independent way of doing that, which we can rely on?
> Are you aware of the `ghc --print-libdir` option? I think you'd be much
> better off going from ghc binary to libdir instead of the other way around.
>
> Could you explain why you're trying to do it your way?
>
>> (P. S. first time using a mailing list, hope I am doing it correctly)
> Seems fine to me :)
>
> --Daniel


More information about the ghc-devs mailing list