<div dir="ltr"><div dir="ltr">Hi Norman,<div><br></div><div>in addition to what Ben already said: is there any particular reason you wanted to use the stage0 compiler? I have written a small program against HEAD which used the GHC API fairly recently, and I have simply used the `stage1` compiler. An excerpt from my little code snippet:</div><div><br></div><div>```</div><div><div>-- This is just the output of '_build/stage1/bin/ghc --print-libdir'</div><div>myGhcLibDir :: FilePath</div><div>myGhcLibDir = "./_build/stage1/lib"</div><div><br></div><div>playground :: FilePath -> IO ()</div><div>playground fn = do</div><div>  res <- runGhc (Just myGhcLibDir) $ do</div></div><div>  ...</div><div>```</div><div><br></div><div>As you can see that's exactly what you are doing, modulo the fact I was using the `stage1` (where _build is the default directory for Hadrian builds).</div><div><br></div><div>Hope this helps in some way!</div><div><br></div><div>A.</div><div><br></div><div><br></div><div><br></div></div></div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Fri, 24 Sept 2021 at 03:37, Ben Gamari <<a href="mailto:ben@smart-cactus.org">ben@smart-cactus.org</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-style:solid;border-left-color:rgb(204,204,204);padding-left:1ex">Norman Ramsey <<a href="mailto:nr@cs.tufts.edu" target="_blank">nr@cs.tufts.edu</a>> writes:<br>
<br>
> I'm writing client code against the GHC API in HEAD (version 9.3),<br>
> using 9.0.1 as my bootstrap compiler.  To make it possible to build<br>
> this code, I've set up cabal using<br>
><br>
>    cabal v1-configure \<br>
>       --package-db clear \<br>
>       --package-db $STAGE0/lib/package.conf.d/      # stage0 libraries<br>
><br>
> In my Haskell code I'm invoking `runGhc (Just thelibdir)` where<br>
><br>
>    thelibir = "/home/nr/asterius/ghc/_build/stage0/lib"<br>
><br>
> which is my `$STAGE0/lib`.<br>
><br>
> Unfortunuately, when I launch my app, `setSessionDynFlags` panics.<br>
> The output, along with some diagnostic information about some dflags<br>
> that seemed relevant, looks like this:<br>
><br>
>   libdir = /home/nr/asterius/ghc/_build/stage0/lib<br>
>   includePaths = IncludeSpecs {includePathsQuote = [], includePathsGlobal = [], includePathsQuoteImplicit = []}<br>
>   libraryPaths = []<br>
>   packageDBFlags = []<br>
>   packageEnv = Nothing<br>
>   panic! (the 'impossible' happened)<br>
>     GHC version 9.3.20210918:<br>
>           GHC couldn't find the RTS constants (#define HS_CONSTANTS ") in /home/nr/.ghcup/ghc/9.0.1/lib/ghc-9.0.1/include/DerivedConstants.h: the RTS package you are trying to use is perhaps for another GHC version(e.g. you are using the wrong package database) or the package database is broken.<br>
><br>
>   CallStack (from HasCallStack):<br>
>     error, called at _build/stage0/compiler/build/GHC/Platform/Constants.hs:143:20 in ghc:GHC.Platform.Constants<br>
><br>
>   Please report this as a GHC bug:  <a href="https://www.haskell.org/ghc/reportabug" rel="noreferrer" target="_blank">https://www.haskell.org/ghc/reportabug</a><br>
><br>
> I'm a little suprprised that my app is hunting for 9.3 information in<br>
> the tree that belongs to the bootstrap compiler.<br>
><br>
I suspect that the stages are getting mixed up here. Would it be<br>
possible to post a full reproducer? I'd be happy to investigate further,<br>
but without being able to reproduce locally it's a bit hard to say<br>
anything useful. My recollection is that we look for DerivedConstants.h<br>
in the usual include paths, so there are many ways in which things could<br>
go wrong.<br>
<br>
Cheers,<br>
<br>
- Ben<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>