Re: [Uhc-developers] Avoiding uuagc-bootstrap
> > In version 0.9.42.1, which is now on Hackage, both the AG sources and
> > generated Haskell sources are included. With a standard 'cabal
> > install' the generated Haskell sources are used and UUAGC is build as
> > any simple Haskell library. However, to build from sources you can now
> > do 'cabal install uuagc --ghc-options="-DEXTERNAL_UUAGC"' which of
> > course needs a "uuagc" executable to be available. This will ignore
> > the generated sources and build everything from AG source.
> thanks! New Debian package using this infrastructure uploaded. The
> setting of configuration variables via CPP flags passed when building
> Setup is a bit unusual, but not a problem.
I tried to package 0.9.42.2 using -DEXTERNAL_UUAGC, but failed:
debian/hlibrary.setup build --builddir=dist-ghc
Can you reproduce the problem? Would it be possible to fix it?
Yes, and unfortunately I realized this only after I uploaded the new
version to Hackage. Version 0.9.42.2 can only be bootstrapped with itself,
i.e. to build from source you should first install 0.9.42.2 without the
-DEXTERNAL_UUAGC flag such that it uses the included generated sources,
and then another time with that flag. Then it works fine, but if the uuagc
is preprocessed with any version < 0.9.42.2 it gives a <<loop>>.
It is still on my todo list to figure out what exactly the problem is. It
is related to the fact that I added the "kennedywarren" flag in the
uuagc_options file, for which older versions generate some extra strictness
annotations which create the loop. I do however think that it should be
possible to change the code again such that it can be preprocessed with
older versions too. So, for now the fix would probably just be to skip this
version and hope that I can figure out the problem soon.
Otherwise, the "self bootstrap" by building twice can work, but that's of
course not very nice.