This sounds similar to an issue I was seeing over here: http://groups.google.com/group/happs/msg/04ecfe4fd6285c0d
The module being compiled also includes TH top-level statements, and was only reproducible when building from Cabal. Here's another occurance on a different platform: http://groups.google.com/group/happs/msg/0f65ba6e4f7e822d And the workaround: http://groups.google.com/group/happs/msg/1e7761d421b0e5eb Here's the GHC bug report: http://hackage.haskell.org/trac/ghc/ticket/3799 Antoine 2010/1/16 Mark Lentczner <[email protected]>: > === Short Story === > > If I build syb-with-class-0.6 via cabal (cabal configure; cabal build) in the > unpacked tar directory, it builds correctly. > > If I build it via "cabal install" (either from the unpacked directory, or by > letting cabal fetch it), then the resulting package is corrupted. In > particular, the .hi interface file for Data.Generics.SYB.WithClass.Instances > mentions symbols that aren't in the .a file. (Or rather, they have the wrong > names.) > > I compared verbose logs of both builds and the differ only in temporary file > names.... execpt that the "cabal install" version builds haddock, as my > .cabal/conf file has documentation: True. Turns out that if turn > documentation off, then then "cabal install" builds a .hi file that matches > the .a file... and all is well. > > Is this a bug in cabal? cabal-install? ghc? haddock? > > I have saved logs of all this if anyone wants. > > - Mark (MtnViewMark) Lentczner > [email protected] > http://www.ozonehouse.com/mark/ > > === Versions === > > [2373] : cabal -V > cabal-install version 0.8.0 > using version 1.8.0.2 of the Cabal library > > [2374] : ghc -V > The Glorious Glasgow Haskell Compilation System, version 6.10.4 > > [2376] : ghc-pkg describe haddock | grep version > version: 2.4.2 > > === Background & Details === > > I was installing happstack on my Mac with my Haskell Platform (GHC 6.10.4) > installation. I have successfully installed dozens of other packages in this > environment before, and these results are annomalous. > > I kicked this off via: > cabal install --user happstack > > This installs many packages, including syb-with-class-0.6, which compiled and > installed just fine. > > When installing happstack-data, and compiling the file > Happstack/Data/Proxy.hs, during the Template Haskell step (where things get > loaded up in ghci), the build encounters this link error: > > [ 7 of 16] Compiling Happstack.Data.Proxy ( src/Happstack/Data/Proxy.hs, > dist/build/Happstack/Data/Proxy.o ) > Loading package ghc-prim ... linking ... done. > Loading package integer ... linking ... done. > Loading package base ... linking ... done. > Loading package syb ... linking ... done. > Loading package array-0.2.0.0 ... linking ... done. > Loading package bytestring-0.9.1.5 ... linking ... done. > Loading package containers-0.2.0.1 ... linking ... done. > Loading package packedstring-0.1.0.1 ... linking ... done. > Loading package pretty-1.0.1.0 ... linking ... done. > Loading package template-haskell ... linking ... done. > Loading package syb-with-class-0.6 ... linking ... done. > (... many more loads elided...) > Loading package HaXml-1.13.3 ... linking ... done. > ghc: > unknown symbol > `_sybzmwithzmclasszm0zi6_DataziGenericsziSYBziWithClassziInstances_dataTypeZMabOQZN_closure' > > That symbol decodes to something referring to: > package: syb-with-class-0.6 > module: Data.Generics.SYB.WithClass.Instances > reference: dataType[abOQ] > > The reference turns out to be from Loading Happstack.Data.Default, which in > turn imports Data.Generics.SYB.WithClass.Instances. > > Poking around, I found that the interface (.hi) file for > Data.Generics.SYB.WithClass.Instances does indeed export such an object: > > [2324] : ghc --show-iface Data/Generics/SYB/WithClass/Instances.hi | fgrep > dataType[a > Data.Generics.SYB.WithClass.Instances.dataType[abOQ]) -} > Data.Generics.SYB.WithClass.Instances.dataType[abSm]) -} > dataType[abOQ] :: Data.Generics.SYB.WithClass.Basics.DataType > dataType[abSm] :: Data.Generics.SYB.WithClass.Basics.DataType > > But, the library doesn't export it: > > [2325] : nm libHSsyb-with-class-0.6.a | fgrep dataTypeZMa > 0001854c D > _sybzmwithzmclasszm0zi6_DataziGenericsziSYBziWithClassziInstances_dataTypeZMaeuiZN_closure > 00018604 D > _sybzmwithzmclasszm0zi6_DataziGenericsziSYBziWithClassziInstances_dataTypeZMaexTZN_closure > > These refer to dataType[aeui] and dataType[aexT], which don't exist in the > interface file. > > Something seems amiss here: The interface file is exporting generated names > that don't match what the library is exporting. > > If I do the same investigation with the profiling versions of this module, > they match: > > [2326] : ghc --show-iface Data/Generics/SYB/WithClass/Instances.p_hi | > fgrep dataType[a > Data.Generics.SYB.WithClass.Instances.dataType[anmx]) -} > Data.Generics.SYB.WithClass.Instances.dataType[anq8]) -} > dataType[anmx] :: Data.Generics.SYB.WithClass.Basics.DataType > dataType[anq8] :: Data.Generics.SYB.WithClass.Basics.DataType > > ma...@mtree ~/Library/Haskell/packages/syb-with-class-0.6/lib/ghc-6.10.4 > [2327] : nm libHSsyb-with-class-0.6_p.a | fgrep dataTypeZMa > 00032704 D > _sybzmwithzmclasszm0zi6_DataziGenericsziSYBziWithClassziInstances_dataTypeZManmxZN_closure > 0003282c D > _sybzmwithzmclasszm0zi6_DataziGenericsziSYBziWithClassziInstances_dataTypeZManq8ZN_closure > > These both export something dataType[anmx] and dataType[anq8] > > These two objects, by the way, stem from the last two lines of > Data.Generics.SYB.WithClass.Instances.hs: > > $( deriveData [''ByteString] ) > $( deriveData [''L.ByteString] ) > > > _______________________________________________ > Haskell-Cafe mailing list > [email protected] > http://www.haskell.org/mailman/listinfo/haskell-cafe > _______________________________________________ Haskell-Cafe mailing list [email protected] http://www.haskell.org/mailman/listinfo/haskell-cafe
