Hi Joachim, I believe this might be due to the recent changes that try to keep the source tree pristine instead of generating data in-place. This is partially the result of making ghc relocatable: hadrian#445[1]. It included changes to cabal and ghc and the final bits have been merged in the form of hadrian#531[2] just a few days ago into hadrian. The make based build system does not take advantage of this.
As `Config.hs` is a generated file it no resides in the build folder; as such I believe your changes to be correct. Does hadrian have a load all of ghc into ghci? I'm afraid I don't think it does yet. I've opened hadrian#551[3] for this. Cheers, Moritz -- [1]: https://github.com/snowleopard/hadrian/pull/445 [2]: https://github.com/snowleopard/hadrian/pull/531 [3]: https://github.com/snowleopard/hadrian/issues/551 > On Apr 2, 2018, at 11:50 PM, Joachim Breitner <[email protected]> > wrote: > > Hi, > > when hacking on most Haskell projects these days, I enjoy having a > shell with > > ghcid -c 'cabal new-repl -w ghc-8.2' > > open. I wondered if I can achieve the same when hacking on GHC. The > compiler/ directory has a Cabal file. > > It does not work out-of-the box (in a fully built tree): > > $ cabal new-repl -w ../inplace/bin/ghc-stage2 -fstage2 > Build profile: -w ghc-8.5.20180320 -O1 > In order, the following will be built (use -v for more details): > - ghc-8.5 (lib) (first run) > Preprocessing library for ghc-8.5.. > cabal: can't find source for Config in backpack, basicTypes, cmm, codeGen, > coreSyn, deSugar, ghci, hsSyn, iface, llvmGen, main, nativeGen, parser, > prelude, profiling, rename, simplCore, simplStg, specialise, stgSyn, > stranal, > typecheck, types, utils, vectorise, > > /home/jojo/build/haskell/ghc/compiler/dist-newstyle/build/x86_64-linux/ghc-8.5.20180320/ghc-8.5/build/autogen, > > /home/jojo/build/haskell/ghc/compiler/dist-newstyle/build/x86_64-linux/ghc-8.5.20180320/ghc-8.5/build/global-autogen > > cabal: repl failed for ghc-8.5. > > It seems that the stage2/build directory is not registered as a source > directory: > > $ find -name Config.hs > ./stage2/build/Config.hs > ./stage1/build/Config.hs > > But if I extend the section > > if flag(stage2) > Include-Dirs: stage2 > > with these lines > > Include-Dirs: stage2/build > hs-source-dirs: stage2/build > ghc-options: -DSTAGE=2 > ghc-options: -fobject-code > > and call cabal like so, it actually works: > > cabal new-repl -w ../inplace/bin/ghc-stage2 -fstage2 > > If I now make hdevtools use this line, then hacking on GHC will have a > bit less friction… > > (BTW, does Hadrian have a “load all of GHC in GHCi” mode?) > > Cheers, > Joachim > > -- > Joachim “nomeata” Breitner > [email protected] > https://www.joachim-breitner.de/ > _______________________________________________ > ghc-devs mailing list > [email protected] > http://mail.haskell.org/cgi-bin/mailman/listinfo/ghc-devs _______________________________________________ ghc-devs mailing list [email protected] http://mail.haskell.org/cgi-bin/mailman/listinfo/ghc-devs
