On Fri, May 7, 2010 at 8:31 AM, David Fox <[email protected]> wrote:

> On Fri, May 7, 2010 at 5:33 AM, David Fox <[email protected]> wrote:
>
>> Sometimes the "Setup build" command gets run twice, and in some mysterious
>> way this causes unresolved symbols when loading a library compiled against a
>> library to which this has happened, like this:
>>
>> Loading package syb-with-class-instances-text-0.0.1 ... linking ... done.
>> ghc:
>> /usr/lib/haskell-packages/ghc6/lib/happstack-extra-0.87/ghc-6.12.1/HShappstack-extra-0.87.o:
>> unknown symbol
>> `sybzmwithzmclasszm0zi6zi1_DataziGenericsziSYBziWithClassziInstances_constrZMada0ZN_closure'
>> ghc: unable to load package `happstack-extra-0.87'
>>
>> This is saying that while loading happstack-extra, it had to load the
>> dependent library syb-with-class-instances-text, and during that load it
>> expected a symbol to appear in syb-with-class which did not.  That symbol
>> was in the library produced during the first Setup build, but it came out
>> with a different name during the second.  How did
>> syb-with-class-instances-text find out about this old symbol name?  I have
>> no idea.
>>
>> I do know that the second run occurs because the directory dist-ghc6 is
>> being used as a make rule target in hlibrary.mk, rather than using a
>> stamp file whose date won't change once it is created.  The attached patch
>> replaces the uses of dist-ghc6 as a make target.  Instead, it uses the stamp
>> file dist-ghc6/dist-ghc6-stamp.  I am currently rebuilding all of our
>> packages with this fix.  I've verified that the build is now only happening
>> once in syb-with-class, and the libraries with the unknown symbol above are
>> being shipped.
>>
>
> A matching patch to hscolour is required, attached.
>

Oh well, it turns out the problem lies elsewhere.  The patches are correct,
but they won't solve the problem.

Reply via email to