help needed configuring GHC API client
Norman Ramsey
nr at cs.tufts.edu
Fri Sep 24 17:48:18 UTC 2021
Alfredo,
I've confirmed that I can use the stage1 compiler and it doesn't
panic.
It occurs to me that I might be able to *compile* my code with the
stage1 compiler while using the bootstrap compiler and Haskell
Language Server. I'll give that a shot.
Norman
> Hi Norman,
>
> 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:
>
> ```
> -- This is just the output of '_build/stage1/bin/ghc --print-libdir'
> myGhcLibDir :: FilePath
> myGhcLibDir = "./_build/stage1/lib"
>
> playground :: FilePath -> IO ()
> playground fn = do
> res <- runGhc (Just myGhcLibDir) $ do
> ...
> ```
>
> 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).
>
> Hope this helps in some way!
>
> A.
>
>
>
>
> On Fri, 24 Sept 2021 at 03:37, Ben Gamari <ben at smart-cactus.org> wrote:
>
> > Norman Ramsey <nr at cs.tufts.edu> writes:
> >
> > > I'm writing client code against the GHC API in HEAD (version 9.3),
> > > using 9.0.1 as my bootstrap compiler. To make it possible to build
> > > this code, I've set up cabal using
> > >
> > > cabal v1-configure \
> > > --package-db clear \
> > > --package-db $STAGE0/lib/package.conf.d/ # stage0 libraries
> > >
> > > In my Haskell code I'm invoking `runGhc (Just thelibdir)` where
> > >
> > > thelibir = "/home/nr/asterius/ghc/_build/stage0/lib"
> > >
> > > which is my `$STAGE0/lib`.
> > >
> > > Unfortunuately, when I launch my app, `setSessionDynFlags` panics.
> > > The output, along with some diagnostic information about some dflags
> > > that seemed relevant, looks like this:
> > >
> > > libdir = /home/nr/asterius/ghc/_build/stage0/lib
> > > includePaths = IncludeSpecs {includePathsQuote = [],
> > includePathsGlobal = [], includePathsQuoteImplicit = []}
> > > libraryPaths = []
> > > packageDBFlags = []
> > > packageEnv = Nothing
> > > panic! (the 'impossible' happened)
> > > GHC version 9.3.20210918:
> > > 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.
> > >
> > > CallStack (from HasCallStack):
> > > error, called at
> > _build/stage0/compiler/build/GHC/Platform/Constants.hs:143:20 in
> > ghc:GHC.Platform.Constants
> > >
> > > Please report this as a GHC bug:
> > https://www.haskell.org/ghc/reportabug
> > >
> > > I'm a little suprprised that my app is hunting for 9.3 information in
> > > the tree that belongs to the bootstrap compiler.
> > >
> > I suspect that the stages are getting mixed up here. Would it be
> > possible to post a full reproducer? I'd be happy to investigate further,
> > but without being able to reproduce locally it's a bit hard to say
> > anything useful. My recollection is that we look for DerivedConstants.h
> > in the usual include paths, so there are many ways in which things could
> > go wrong.
> >
> > Cheers,
> >
> > - Ben
> > _______________________________________________
> > ghc-devs mailing list
> > ghc-devs at haskell.org
> > http://mail.haskell.org/cgi-bin/mailman/listinfo/ghc-devs
> >
>
More information about the ghc-devs
mailing list