Rebuilding ghc changes interface hashes?

Matthias Kilian kili at
Wed Apr 6 20:44:33 CEST 2011

On Wed, Apr 06, 2011 at 12:40:45PM +0100, Ian Lynagh wrote:
> compiler/stage2/build/Config.hs includes cBooterVersion, so if you boot
> with a different version then you get different code => different ABI.
> We could just remove this. In theory, stage2 won't be affected by the
> bootstrapping compiler at all anyway.
> Alternatively, if we make a config file (as we were discussing for
> putting the paths to gcc and ar in) then it could go in there, and then
> wouldn't be part of the ABI.

Even if Simon prefers the config file approach (and there's still
the question wether the booter version is useful at all), attached
is an old patch in darcs format i found on my disk (dated april
24th 2010). Just in case anyone wants to play with it.

I still have to find my noticeses about wether cBooterVersion affects
more than only the ghc lib.

-------------- next part --------------
1 patch for repository

Sat Apr 24 20:46:21 CEST 2010  Matthias Kilian <kili at>
  * Zap cBooterVersion, in an attempt to fix #4012
  Note: this is obviously just a workaround, not a real fix.

New patches:

[Zap cBooterVersion, in an attempt to fix #4012
Matthias Kilian <kili at>**20100424184621
 Ignore-this: 18bf356e798b3c26bd4c8d2f2bc79789
 Note: this is obviously just a workaround, not a real fix.
] {
hunk ./compiler/ 50
 	@echo "cProjectVersionInt    = \"$(ProjectVersionInt)\"" >> $@
 	@echo "cProjectPatchLevel    :: String" >> $@
 	@echo "cProjectPatchLevel    = \"$(ProjectPatchLevel)\"" >> $@
-	@echo "cBooterVersion        :: String" >> $@
-	@echo "cBooterVersion        = \"$(GhcVersion)\"" >> $@
 	@echo "cStage                :: String" >> $@
 	@echo "cStage                = show (STAGE :: Int)" >> $@
 	@echo "cIntegerLibrary       :: String" >> $@
hunk ./compiler/main/DynFlags.hs 2419
 compilerInfo :: [(String, Printable)]
 compilerInfo = [("Project name",                String cProjectName),
                 ("Project version",             String cProjectVersion),
-                ("Booter version",              String cBooterVersion),
                 ("Stage",                       String cStage),
                 ("Have interpreter",            String cGhcWithInterpreter),
                 ("Object splitting",            String cSplitObjs),
hunk ./ghc/Main.hs 646
     do hPutStr stderr "Glasgow Haskell Compiler, Version "
        hPutStr stderr cProjectVersion
        hPutStr stderr ", for Haskell 98, stage "
-       hPutStr stderr cStage
-       hPutStr stderr " booted by GHC version "
-       hPutStrLn stderr cBooterVersion
+       hPutStrLn stderr cStage
 -- We print out a Read-friendly string, but a prettier one than the
 -- Show instance gives us


[Fix the GHC API link in the main doc index.html
Ian Lynagh <igloo at>**20100422213226] 
Ian Lynagh <igloo at>**20100422160416] 
[Fix Trac #3950: unifying types of different kinds
simonpj at**20100412151845
 Ignore-this: d145b9de5ced136ef2c39f3ea4a04f4a
 I was assuming that the unifer only unified types of the 
 same kind, but now we can "defer" unsolved constraints that
 invariant no longer holds.  Or at least is's more complicated
 to ensure.  
 This patch takes the path of not assuming the invariant, which
 is simpler and more robust.  See
 Note [Mismatched type lists and application decomposition]
[Fix Trac #3943: incorrect unused-variable warning
simonpj at**20100412151630
 Ignore-this: 52459f2b8b02c3cb120abe674dc9a060
 In fixing this I did the usual little bit of refactoring
[Convert boot and boot-pkgs to perl
Ian Lynagh <igloo at>**20100415143919
 This stops us having to worry about sh/sed/... portability.
[Use $(MAKE), not make, when recursively calling make
Ian Lynagh <igloo at>**20100415121453] 
[Update the user guide so it talks about the newer "do rec" notation everywhere
Ian Lynagh <igloo at>**20100416205416
 Some of the problems highlighted in trac #3968.
[Fix typo
Ian Lynagh <igloo at>**20100416205412] 
[Implement try10Times in Makefile
Ian Lynagh <igloo at>**20100420165909
 Avoid using seq, as FreeBSD has jot instead.
[Give the right exit code in darcs-all
Ian Lynagh <igloo at>**20100421171339
 Our END block was calling system, which alters $?. So now we save and
 restore it.
[TAG old-time release
Ian Lynagh <igloo at>**20100422124334] 
Patch bundle hash:

More information about the Glasgow-haskell-users mailing list