
On Tue, Feb 14, 2012 at 12:14 PM, Steven J. Murdoch
$ ghc-pkg list base /Users/ghc6/homebrew/Cellar/ghc/6.12.3/lib/ghc/package.conf.d base-3.0.3.2 base-4.2.0.2
I'm a bit fuzzy on the details when it comes to the core packages that are distributed with ghc, but my understanding is that the compiler is /very/ needy about which base it can use. As far as I know, the only way to change versions of Base is by changing the compiler to the version that uses the desired base. With that in mind, having two base libraries installed in the same package database seems like a recipe for disaster. Can you install the older ghc in a separate (fresh) location, and try again with either a sandbox, or after moving your local package db too? If you're confident with ghc-pkg, you can probably fix up the existing package databases, but it's not for the faint of heart. (although, depending on which base came with ghc 6.12.3, that may not be fruitful anyway.) --Rogan
/Users/ghc6/.ghc/i386-darwin-6.12.3/package.conf.d
However, when I try to cabal build the package, I get the following error: $ cabal -v build Creating dist/build (and its parents) Creating dist/build/autogen (and its parents) Preprocessing executables for TorDNSEL-0.1.1... Building TorDNSEL-0.1.1... Building executable tordnsel... Creating dist/build/tordnsel (and its parents) Creating dist/build/tordnsel/tordnsel-tmp (and its parents) /Users/ghc6/homebrew/bin/ghc --make -o dist/build/tordnsel/tordnsel -hide-all-packages -fbuilding-cabal-package -package-conf dist/package.conf.inplace -i -idist/build/tordnsel/tordnsel-tmp -isrc -idist/build/autogen -Idist/build/autogen -Idist/build/tordnsel/tordnsel-tmp -optP-include -optPdist/build/autogen/cabal_macros.h -odir dist/build/tordnsel/tordnsel-tmp -hidir dist/build/tordnsel/tordnsel-tmp -stubdir dist/build/tordnsel/tordnsel-tmp -package-id HUnit-1.2.2.1-6237339c6ad5673d3cd8f82c4c7f6343 -package-id array-0.3.0.1-438000c197b51c147f229b54edbf632e -package-id base-3.0.3.2-260693a92016991a03206b5a55f6a411 -package-id binary-0.5.1.0-b72d4a82a5aecd9243ff0f50456b3d47 -package-id bytestring-0.9.1.7-64b858f95ff0dacc8acf396bb53cf4b9 -package-id containers-0.3.0.0-ee442470d8dcc9e45f31677c400c5379 -package-id directory-1.0.1.1-fa3418f21f42269537be694d5922dd6d -package-id mtl-1.1.0.2-336254fecf8a77054f76cb33671a5177 -package-id network-2.2.1.7-2eb3746f71ba30c3e4940b75df5ea8b8 -package-id stm-2.1.2.1-95639ea16e2e2cbf4accbabda98a1809 -package-id time-1.1.4-d9f7b7932dc3a4863006ed6b1d525856 -package-id unix-2.4.0.2-94ca14c8a73570f9d75aca642b4de0c6 -O -O2 -Wall -DVERSION="0.1.1-dev" src/tordnsel.hs -lcrypto [ 4 of 39] Compiling TorDNSEL.Util ( dist/build/tordnsel/tordnsel-tmp/TorDNSEL/Util.hs, dist/build/tordnsel/tordnsel-tmp/TorDNSEL/Util.o )
src/TorDNSEL/Util.hsc:143:23: Module `GHC.Handle' does not export `fillReadBuffer'
src/TorDNSEL/Util.hsc:143:39: Module `GHC.Handle' does not export `readCharFromBuffer'
src/TorDNSEL/Util.hsc:145:26: Module `GHC.IOBase' does not export `Buffer(..)'
The flags to ghc indicate that base-3.0.3.2 is being requested, and the documentation for base-3.0.3.2 indicates that GHC.Handle.fillReadBuffer exists[2]. Can anyone explain why I am getting this error message? Could it be because Util is a .hsc rather than .hs file?
In tordnsel.cabal I've made two changes: set Build-Depends to include "base>=2.0 && < 4" to tell ghc that I really want base-3 and removed -Werror from GHC-Options (to ignore the deprecation warnings). Otherwise it is as provided in this distribution[3].
Building manually has the same result (though oddly I get a deprecation warning from building the .hs files but not the .hsc file, which led to my suspicion about hsc being an issue.
$ hsc2hs TorDNSEL/Util.hsc $ ghc -package-id base-3.0.3.2-260693a92016991a03206b5a55f6a411 --make TorDNSEL/Util.hs [1 of 3] Compiling TorDNSEL.DeepSeq ( TorDNSEL/DeepSeq.hs, TorDNSEL/DeepSeq.o )
TorDNSEL/DeepSeq.hs:1:0: Warning: Module `Prelude' is deprecated: You are using the old package `base' version 3.x. Future GHC versions will not support base version 3.x. You should update your code to use the new base version 4.x.
TorDNSEL/Util.hs:1:11: Warning: -#include and INCLUDE pragmas are deprecated: They no longer have any effect [2 of 3] Compiling TorDNSEL.Compat.Exception ( TorDNSEL/Compat/Exception.hs, TorDNSEL/Compat/Exception.o )
TorDNSEL/Compat/Exception.hs:1:0: Warning: Module `Prelude' is deprecated: You are using the old package `base' version 3.x. Future GHC versions will not support base version 3.x. You should update your code to use the new base version 4.x. [3 of 3] Compiling TorDNSEL.Util ( TorDNSEL/Util.hs, TorDNSEL/Util.o )
TorDNSEL/Util.hsc:143:23: Module `GHC.Handle' does not export `fillReadBuffer'
TorDNSEL/Util.hsc:143:39: Module `GHC.Handle' does not export `readCharFromBuffer'
TorDNSEL/Util.hsc:145:26: Module `GHC.IOBase' does not export `Buffer(..)'
Thanks in advance, Steven.
[1] https://gitweb.torproject.org/tordnsel.git [2] http://hackage.haskell.org/packages/archive/base/3.0.3.2/doc/html/GHC-Handle... [3] https://gitweb.torproject.org/tordnsel.git/blob/HEAD:/tordnsel.cabal
_______________________________________________ Haskell-Cafe mailing list Haskell-Cafe@haskell.org http://www.haskell.org/mailman/listinfo/haskell-cafe