Circular dependency between the compiler and TH?

Esa Ilari Vuokko eivuokko at gmail.com
Sat Aug 19 15:48:22 EDT 2006


On 8/19/06, Simon Peyton-Jones <simonpj at microsoft.com> wrote:
> I can't tell just what you are doing, but somehow you seem to be
> building a stage-2 compiler in stage1.

On compiler/Makefile we got

ifeq "$(BootingFromHc)" "YES"
# HC files are always from a self-booted compiler
bootstrapped = YES
else
ifneq "$(findstring $(stage), 2 3)" ""
bootstrapped = YES
else
bootstrapped = $(shell if (test $(GhcCanonVersion) -eq
$(ProjectVersionInt) -a $(GhcPatchLevel) -eq $(ProjectPatchLevel));
then echo YES; else echo NO; fi)
endif
endif

Which would turn bootstrapped=YES when building 6.5 with 6.5, even during
stage1.

And then
ifeq "$(GhcWithInterpreter) $(bootstrapped)" "YES YES"
and inside this if it also turns template-haskell on.

It's a bit funny.  It makes sense for end user not to need bootstrap compiler
more than once - for example to build new set of libraries for ghc would be
much faster, and bootstrapping holds no additional value.

So, Joel, you might want to change your mk/Config.mk and lie about
your ghc version a bit (you need to mod the file after configure).
Say it's 6.4, and you might not need to unpull patches and you might
get normal 2-stage bootstrap.

Best regards,
--Esa


More information about the Glasgow-haskell-users mailing list