Skip to content

reexported-modules sometimes gets mangled, causes problems for bootstrap

There is a pretty bad bug in Cabal 1.24's support for reexported modules (https://github.com/haskell/cabal/pull/3906) which means that, under some circumstances, Cabal library will output reexported-modules in a form that ghc-pkg will misinterpret. The particular instance I've seen is GHC's build system incorrectly concluding that GHC.Lexeme is provided by ghc-boot rather than ghc-boot-th (because the reexport wasn't parsed correctly).

It does not actually seem possible to work around this given a GHC 8.0.1 bootstrap, because we need to register ghc-boot using the bootstrapping ghc-pkg, which will output the package configuration in mangled form. So my advice is:

  1. Fix this bug for GHC 8.0.2, so that at least 8.0.2 bootstrap will work even if we have reexported modules in the bootstrap libraries
  2. Stop using reexports in ghc-boot; they're not being used for any good reason and will help avoid the bug.
Trac metadata
Trac field Value
Version 8.0.1
Type Bug
TypeOfFailure OtherFailure
Priority highest
Resolution Unresolved
Component Compiler
Test case
Differential revisions
BlockedBy
Related
Blocking
CC
Operating system
Architecture
To upload designs, you'll need to enable LFS and have an admin enable hashed storage. More information