[Haskell-cafe] cannot build greencard

Bulat Ziganshin bulat.ziganshin at gmail.com
Wed Sep 2 17:10:14 EDT 2009


Hello mf-hcafe-15c311f0c,

Thursday, September 3, 2009, 12:44:25 AM, you wrote:

to the best of my knowledge, GC was developed in the days of ghc 0.20
or so and last 10 years it's superceded by FFI addendum to Haskell'98
standard. there is also more high-level tools like hsc2hs and HSFFIG


> hi,

> i am stuck with a linker error in greencard, and haven't found
> anything online, so i am addressing you for fresh ideas.  as soon as i
> get this sorted out, i will try to turn the answer into a patch that
> you can consider for the next release.

> SYMPTOMS: greencard 3.0.3 and 3.01 do not compile with ghc-6.8 (debian
> lenny package) and 6.10 (darcs copy, checked out yesterday).  here is
> what happens:


> 4 (0) 19:27:19 mf at yoyo:/tmp2 $ tar xvpzf greencard-3.0.3.tar.gz 
> greencard-3.0.3/
> greencard-3.0.3/ANNOUNCE
> greencard-3.0.3/dist/
> greencard-3.0.3/dist/build/
> greencard-3.0.3/dist/build/greencard/
> greencard-3.0.3/dist/build/greencard/greencard-tmp/
> greencard-3.0.3/dist/build/greencard/greencard-tmp/Parse.hs
> greencard-3.0.3/examples/
> greencard-3.0.3/examples/Gdbm/
> greencard-3.0.3/examples/Gdbm/diffs
> greencard-3.0.3/examples/Gdbm/Gdbm.gc
> greencard-3.0.3/examples/Gdbm/gdbmplus.h
> greencard-3.0.3/examples/Gdbm/Main.hs
> greencard-3.0.3/examples/Gdbm/Makefile
> greencard-3.0.3/examples/Gdbm/README
> greencard-3.0.3/examples/Makefile
> greencard-3.0.3/examples/world/
> greencard-3.0.3/examples/world/Main.hs
> greencard-3.0.3/examples/world/Makedefs.ghc
> greencard-3.0.3/examples/world/Makedeps
> greencard-3.0.3/examples/world/Makefile.ghc-linux
> greencard-3.0.3/examples/world/Makefile.ghc-win32
> greencard-3.0.3/examples/world/Makefile.hugs-linux
> greencard-3.0.3/examples/world/Makefile.hugs-win32
> greencard-3.0.3/examples/world/README.txt
> greencard-3.0.3/examples/world/World.gc
> greencard-3.0.3/greencard.cabal
> greencard-3.0.3/INSTALL
> greencard-3.0.3/lib/
> greencard-3.0.3/lib/Foreign/
> greencard-3.0.3/lib/Foreign/GreenCard.hs
> greencard-3.0.3/lib/GreenCard.gc
> greencard-3.0.3/lib/Makefile
> greencard-3.0.3/lib/package.conf.in
> greencard-3.0.3/LICENSE
> greencard-3.0.3/Makefile
> greencard-3.0.3/README
> greencard-3.0.3/Setup.hs
> greencard-3.0.3/src/
> greencard-3.0.3/src/Casm.lhs
> greencard-3.0.3/src/Decl.lhs
> greencard-3.0.3/src/DIS.lhs
> greencard-3.0.3/src/ErrMonad.lhs
> greencard-3.0.3/src/ErrorHook.c
> greencard-3.0.3/src/FillIn.lhs
> greencard-3.0.3/src/FillInMonad.lhs
> greencard-3.0.3/src/GCToken.lhs
> greencard-3.0.3/src/greencard.ghc.in
> greencard-3.0.3/src/greencard.hugs.in
> greencard-3.0.3/src/GreenCard.lhs
> greencard-3.0.3/src/Lex.lhs
> greencard-3.0.3/src/LexM.lhs
> greencard-3.0.3/src/ListUtils.lhs
> greencard-3.0.3/src/Makefile
> greencard-3.0.3/src/MarshallMonad.lhs
> greencard-3.0.3/src/Name.lhs
> greencard-3.0.3/src/NameSupply.lhs
> greencard-3.0.3/src/Package.lhs
> greencard-3.0.3/src/Package.lhs.in
> greencard-3.0.3/src/Parse.ly
> greencard-3.0.3/src/PrettyUtils.lhs
> greencard-3.0.3/src/Proc.lhs
> greencard-3.0.3/src/Process.lhs
> greencard-3.0.3/src/Target.lhs
> greencard-3.0.3/src/Type.lhs
> 5 (0) 19:27:22 mf at yoyo:/tmp2 $ cd greencard-3.0.3
> 6 (0) 19:27:24 mf at yoyo:/tmp2/greencard-3.0.3 $ make prefix=/tmp2/
> make[1]: Entering directory `/hime/tmp2/greencard-3.0.3/src'
> happy  Parse.ly
> unused terminals: 1
> rm -f .depend
> touch .depend
> ghc -M -optdep-f -optdep.depend -optdep-xFiniteMap -optdep-xPretty
> -recomp -O -fglasgow-exts     Casm.lhs DIS.lhs Decl.lhs ErrMonad.lhs
> FillIn.lhs FillInMonad.lhs GCToken.lhs GreenCard.lhs Lex.lhs
> LexM.lhs ListUtils.lhs MarshallMonad.lhs Name.lhs NameSupply.lhs
> Package.lhs PrettyUtils.lhs Proc.lhs Process.lhs Target.lhs Type.lhs Parse.hs
> make[1]: Leaving directory `/hime/tmp2/greencard-3.0.3/src'
> make[1]: Entering directory `/hime/tmp2/greencard-3.0.3/src'
> ghc -recomp -O -fglasgow-exts     -c Target.lhs -o Target.o
> ghc -recomp -O -fglasgow-exts     -c PrettyUtils.lhs -o PrettyUtils.o
> ghc -recomp -O -fglasgow-exts     -c Casm.lhs -o Casm.o

> Casm.lhs:544:1:
>     Warning: Pattern match(es) are overlapped
>              In a case alternative: _ -> ...

> Casm.lhs:577:1:
>     Warning: Pattern match(es) are overlapped
>              In a case alternative: _ -> ...

> Casm.lhs:616:4:
>     Warning: Pattern match(es) are overlapped
>              In a case alternative: _ -> ...

> Casm.lhs:631:5:
>     Warning: Pattern match(es) are overlapped
>              In a case alternative: _ -> ...
> ghc -recomp -O -fglasgow-exts     -c ListUtils.lhs -o ListUtils.o
> ghc -recomp -O -fglasgow-exts     -c ErrMonad.lhs -o ErrMonad.o
> ghc -recomp -O -fglasgow-exts     -c Name.lhs -o Name.o
> ghc -recomp -O -fglasgow-exts     -c DIS.lhs -o DIS.o
> ghc -recomp -O -fglasgow-exts     -c Type.lhs -o Type.o
> ghc -recomp -O -fglasgow-exts     -c Decl.lhs -o Decl.o
> ghc -recomp -O -fglasgow-exts     -c FillInMonad.lhs -o FillInMonad.o
> ghc -recomp -O -fglasgow-exts     -c NameSupply.lhs -o NameSupply.o
> ghc -recomp -O -fglasgow-exts     -c FillIn.lhs -o FillIn.o
> ghc -recomp -O -fglasgow-exts     -c GCToken.lhs -o GCToken.o
> ghc -recomp -O -fglasgow-exts     -c MarshallMonad.lhs -o MarshallMonad.o
> ghc -recomp -O -fglasgow-exts     -c Proc.lhs -o Proc.o
> ghc -recomp -O -fglasgow-exts     -c LexM.lhs -o LexM.o
> ghc -recomp -O -fglasgow-exts     -c Lex.lhs -o Lex.o
> ghc -recomp -O -fglasgow-exts   -Onot  -c Parse.hs -o Parse.o

> Parse.hs:1733:1:
>     Warning: Pattern match(es) are overlapped
>              In a case alternative: _ -> ...
> ghc -recomp -O -fglasgow-exts     -c Process.lhs -o Process.o
> ghc -recomp -O -fglasgow-exts     -c Package.lhs -o Package.o
> ghc -recomp -O -fglasgow-exts   -cpp -DBEGIN_GHC_ONLY='-}'
> -DEND_GHC_ONLY='{-' -DBEGIN_NOT_FOR_GHC='{-' -DEND_NOT_FOR_GHC='-}'
> -DPURE_WIN32=0  -c GreenCard.lhs -o GreenCard.o
> ghc     -c ErrorHook.c -o ErrorHook.o
> ghc -recomp -O -fglasgow-exts     -o greencard-bin Casm.o DIS.o
> Decl.o ErrMonad.o FillIn.o FillInMonad.o GCToken.o GreenCard.o Lex.o
> LexM.o ListUtils.o MarshallMonad.o Name.o NameSupply.o Package.o
> PrettyUtils.o Proc.o Process.o Target.o Type.o Parse.o ErrorHook.o
> Casm.o: In function `s201_info':
> (.text+0x168): undefined reference to
> `prettyzm1zi0zi0zi0_TextziPrettyPrintziHughesPJ_Str_con_info'
> Casm.o: In function `s201_info':
> (.text+0x17b): undefined reference to
> `prettyzm1zi0zi0zi0_TextziPrettyPrintziHughesPJ_TextBeside_con_info'
> Casm.o: In function `s201_info':
> (.text+0x19d): undefined reference to
> `prettyzm1zi0zi0zi0_TextziPrettyPrintziHughesPJ_Empty_closure'
> Casm.o: In function `s201_info':
> (.text+0x1b7): undefined reference to
> `prettyzm1zi0zi0zi0_TextziPrettyPrintziHughesPJ_Str_con_info'
> Casm.o: In function `s201_info':
> (.text+0x1ca): undefined reference to
> `prettyzm1zi0zi0zi0_TextziPrettyPrintziHughesPJ_TextBeside_con_info'
> Casm.o: In function `s201_info':
> (.text+0x1e9): undefined reference to
> `prettyzm1zi0zi0zi0_TextziPrettyPrintziHughesPJ_Empty_closure'
> Casm.o: In function `s201_info':
> (.text+0x1f0): undefined reference to
> `prettyzm1zi0zi0zi0_TextziPrettyPrintziHughesPJ_Beside_con_info'

> [...  these continue for every object file on the command line; a bit
> over 2000 message of the same type in total...]

> Type.o: In function `sBv_info':
> (.text+0x1b2b): undefined reference to
> `prettyzm1zi0zi0zi0_TextziPrettyPrintziHughesPJ_Beside_con_info'
> Type.o: In function `sZT_info':
> (.text+0x1ed3): undefined reference to
> `__stginit_prettyzm1zi0zi0zi0_TextziPrettyPrint_'
> Type.o: In function `sBb_info':
> (.text+0x1988): undefined reference to
> `prettyzm1zi0zi0zi0_TextziPrettyPrintziHughesPJ_go6_info'
> Type.o: In function `sBf_info':
> (.text+0x1a12): undefined reference to
> `prettyzm1zi0zi0zi0_TextziPrettyPrintziHughesPJ_go6_info'
> Type.o: In function `sZU_info':
> (.text+0x1b96): undefined reference to
> `prettyzm1zi0zi0zi0_TextziPrettyPrintziHughesPJ_text_info'
> Type.o: In function `rvv_closure':
> (.data+0x8): undefined reference to
> `prettyzm1zi0zi0zi0_TextziPrettyPrintziHughesPJ_Chr_static_info'
> Type.o: In function `rvH_closure':
> (.data+0x64): undefined reference to
> `prettyzm1zi0zi0zi0_TextziPrettyPrintziHughesPJ_TextBeside_static_info'
> Type.o: In function `rvH_closure':
> (.data+0x6c): undefined reference to
> `prettyzm1zi0zi0zi0_TextziPrettyPrintziHughesPJ_lvl3_closure'
> Type.o: In function `rvH_closure':
> (.data+0x70): undefined reference to
> `prettyzm1zi0zi0zi0_TextziPrettyPrintziHughesPJ_Empty_closure'
> Type.o: In function `rvN_closure':
> (.data+0xb0): undefined reference to
> `prettyzm1zi0zi0zi0_TextziPrettyPrintziHughesPJ_Str_static_info'
> collect2: ld returned 1 exit status
> make[1]: *** [greencard-bin] Error 1
> make[1]: Leaving directory `/hime/tmp2/greencard-3.0.3/src'
> make[1]: Entering directory `/hime/tmp2/greencard-3.0.3/lib'
> ghc -package-name greencard -cpp -fglasgow-exts -fno-prune-tydecls 
> -c Foreign/GreenCard.hs -o Foreign/GreenCard.o -hisuf hi
> ghc-6.8.2: unrecognised flags: -fno-prune-tydecls
> Usage: For basic information, try the `--help' option.
> make[1]: *** [Foreign/GreenCard.o] Error 1
> make[1]: Leaving directory `/hime/tmp2/greencard-3.0.3/lib'
> make[1]: Entering directory `/hime/tmp2/greencard-3.0.3/src'
> make[1]: Nothing to be done for `all'.
> make[1]: Leaving directory `/hime/tmp2/greencard-3.0.3/src'
> make[1]: Entering directory `/hime/tmp2/greencard-3.0.3/lib'
> ghc -package-name greencard -cpp -fglasgow-exts -fno-prune-tydecls 
> -prof -c Foreign/GreenCard.hs -o Foreign/GreenCard.p_o -hisuf p_hi
> ghc-6.8.2: unrecognised flags: -fno-prune-tydecls
> Usage: For basic information, try the `--help' option.
> make[1]: *** [Foreign/GreenCard.p_o] Error 1
> make[1]: Leaving directory `/hime/tmp2/greencard-3.0.3/lib'
> make: *** [all] Error 2

> the errors about no-prune-tydecls are easy enough to fix:

> $ diff -r greencard-3.0.3{,-patched}
> diff -r greencard-3.0.3/examples/Gdbm/Makefile
> greencard-3.0.3-patched/examples/Gdbm/Makefile
> 28d27
> < HC_OPTS += -fno-prune-tydecls
> diff -r greencard-3.0.3/lib/Makefile
> greencard-3.0.3-patched/lib/Makefile
> 6c6
> < GHC_OPTS = -cpp -fglasgow-exts -fno-prune-tydecls 
> ---
>> GHC_OPTS = -cpp -fglasgow-exts
> $  


> this helps, but the linker errors are unrealted, and i don't know what
> to make of them.  (I guess I should study how ghc generates C code at
> this point?  it does feel like something obvious...)


> thanks,
> cheers,
> matthias
> _______________________________________________
> Haskell-Cafe mailing list
> Haskell-Cafe at haskell.org
> http://www.haskell.org/mailman/listinfo/haskell-cafe


-- 
Best regards,
 Bulat                            mailto:Bulat.Ziganshin at gmail.com



More information about the Haskell-Cafe mailing list