help with cabal install package shadowing errors - haskell

I've run into the same error for two unrelated packages now, missingpy and monadiccp.
> cabal install -p -v monadiccp
(after some output)
Creating dist/build (and its parents)
/usr/local/haskell/bin/ghc --make -package-name monadiccp-0.7.0 -hide-all-packages -fbuilding-cabal-package -i -idist/build -i. -idist/build/autogen -Idist/build/autogen -Idist/build -Ilib -optP-include -optPdist/build/autogen/cabal_macros.h -odir dist/build -hidir dist/build -stubdir dist/build -package-id Monatron-0.3.1-360ddfdcf06bcd34f1ed9c1f1c375202 -package-id base-4.3.1.0-1554f26e1cc1c87f47464e927dddbd20 -package-id containers-0.4.0.0-8781485edb2ac0db733a9f9c72e27945 -package-id haskell98-1.1.0.1-0a04bcdb24934b6be516a3abfc033021 -package-id mtl-2.0.1.0-91f62d81c946aa60137dcc008e554a3a -package-id pretty-1.0.1.2-6970e62db724fea03caad23f58dd8f86 -package-id random-1.0.0.3-9024b40453c28359a37c49ce4e776f6e -O -XHaskell98 Data.Expr.Sugar Control.CP.SearchTree Control.CP.Transformers Control.CP.ComposableTransformers Control.CP.Solver Control.CP.PriorityQueue Control.CP.Queue Control.CP.FD.Interface Control.CP.FD.OvertonFD.OvertonFD Control.CP.FD.OvertonFD.Sugar Control.CP.EnumTerm Control.CP.FD.Solvers Control.CP.FD.Gecode.CodegenSolver Control.CP.FD.Model Control.CP.FD.Example Data.Expr.Data Data.Expr.Util Data.Linear Control.CP.FD.Gecode.Common Control.CP.FD.OvertonFD.Domain Control.CP.FD.SimpleFD Control.CP.FD.Graph Control.CP.FD.Decompose Control.CP.FD.FD Control.CP.Debug Control.Mixin.Mixin Control.CP.SearchSpec.Language Control.CP.SearchSpec.Generator Language.CPP.Syntax.AST Language.CPP.Pretty
<command line>: cannot satisfy -package-id random-1.0.0.3-9024b40453c28359a37c49ce4e776f6e:
random-1.0.0.3-9024b40453c28359a37c49ce4e776f6e is shadowed by package random-1.0.0.3-15ae8b1458485ee9647f74174e442c33
(use -v for more information)
World file is already up to date.
For missingpy, ghc will work if the -package-id random... is changed to the correct version, but I don't know how to install it after that.
Any workarounds would be much appreciated. I deleted all of ~/.cabal and ~/.ghc, but no luck.
additional info
ghc info is here, [ http://pastebin.com/jk40VPgw ]. This is my SuSE machine, where I built ghc 7.0.4 from source using ghc 6.12, as well as the latest Haskell Platform. (which was made for ghc 7.0.3, but I think that's okay).
also tried this on another machine [ http://pastebin.com/Digntv4K ]. that one had the Haskell Platform installed via system packages I think.

Have you tried cabal-dev? It's probably best if you start from a clean system, install only the Haskell Platform, and then use cabal-dev to sandbox each codebase you're using.

Related

I had installed Yampa but I failed to imported FRP.Yampa (Mac OS Catalina)

I recently read about FRP and became interested in Yampa. Because I have already installed it, here I just check its installation. When I follow the instructions
$ cabal sandbox init # Optional, but recommended
$ cabal update
$ cabal install Yampa
The result of the third step is:
cabal install Yampa
Resolving dependencies...
Up to date
Warning: You asked to install executables, but there are no executables in
target: Yampa. Perhaps you want to use --lib to install libraries instead.
So I add --lib and get:
cabal install Yampa --lib
Resolving dependencies...
Up to date
Then I turned to Vscode and write a line:
import FRP.Yampa
What I get is:
error:
Could not find module ‘FRP.Yampa’
Use -v (or `:set -v` in ghci) to see a list of the files searched for.
|
3 | import FRP.Yampa
I didn't give up and used "ghc -v Yampa" to search for the package:
wired-in package ghc-prim mapped to ghc-prim-0.5.3
wired-in package integer-wired-in mapped to integer-gmp-1.0.2.0
wired-in package base mapped to base-4.13.0.0
wired-in package rts mapped to rts
wired-in package template-haskell mapped to template-haskell-2.15.0.0
wired-in package ghc mapped to ghc-8.8.3
package flags [-package-id ghc-8.8.3{unit ghc-8.8.3 True ([])},
-package-id bytestring-0.10.10.0{unit bytestring-0.10.10.0 True ([])},
-package-id unix-2.7.2.2{unit unix-2.7.2.2 True ([])},
-package-id base-4.13.0.0{unit base-4.13.0.0 True ([])},
-package-id time-1.9.3{unit time-1.9.3 True ([])},
-package-id hpc-0.6.0.3{unit hpc-0.6.0.3 True ([])},
-package-id filepath-1.4.2.1{unit filepath-1.4.2.1 True ([])},
-package-id process-1.6.8.0{unit process-1.6.8.0 True ([])},
-package-id array-0.5.4.0{unit array-0.5.4.0 True ([])},
-package-id integer-gmp-1.0.2.0{unit integer-gmp-1.0.2.0 True ([])},
-package-id containers-0.6.2.1{unit containers-0.6.2.1 True ([])},
-package-id ghc-boot-8.8.3{unit ghc-boot-8.8.3 True ([])},
-package-id binary-0.8.7.0{unit binary-0.8.7.0 True ([])},
-package-id ghc-prim-0.5.3{unit ghc-prim-0.5.3 True ([])},
-package-id ghci-8.8.3{unit ghci-8.8.3 True ([])},
-package-id rts{unit rts-1.0 True ([])},
-package-id terminfo-0.4.1.4{unit terminfo-0.4.1.4 True ([])},
-package-id transformers-0.5.6.2{unit transformers-0.5.6.2 True ([])},
-package-id deepseq-1.4.4.0{unit deepseq-1.4.4.0 True ([])},
-package-id ghc-boot-th-8.8.3{unit ghc-boot-th-8.8.3 True ([])},
-package-id pretty-1.1.3.6{unit pretty-1.1.3.6 True ([])},
-package-id template-haskell-2.15.0.0{unit template-haskell-2.15.0.0 True ([])},
-package-id directory-1.3.6.0{unit directory-1.3.6.0 True ([])},
-package-id text-1.2.4.0{unit text-1.2.4.0 True ([])},
-package-id Ymp-0.13.1-433f4ae2{unit Yampa-0.13.1 True ([])}]
Obviously the last line above is Yampa, but what follows is:
loading package database /usr/local/Cellar/ghc/8.8.3/lib/ghc-8.8.3/package.conf.d
loading package database /Users/.cabal/store/ghc-8.8.3/package.db
wired-in package ghc-prim mapped to ghc-prim-0.5.3
wired-in package integer-wired-in mapped to integer-gmp-1.0.2.0
wired-in package base mapped to base-4.13.0.0
wired-in package rts mapped to rts-1.0
wired-in package template-haskell mapped to template-haskell-2.15.0.0
wired-in package ghc mapped to ghc-8.8.3
*** Chasing dependencies:
Chasing modules from: *Yampa
<no location info>: error: module ‘Yampa’ cannot be found locally
I've been trying to solve this problem but there seems to be no questions related to my situation. So I really need your help. Thanks!
--------------------------------------------------------update_2020_05_03------------------------------------------------
The file was directly created (without using "stack new "). That means, I just create a text file, put a line "import FRP.Yampa" and change its name to helloworld.hs in a folder "haskell_code" in VScode.
However, if I use "stack new mystic" to create a project called mystic. and go to its main.hs. I still cannot find FRP.Yampa. This time the error message when I run it is a little different:
error:
Could not load module ‘FRP.Yampa’
It is a member of the hidden package ‘Yampa-0.13.1’.
You can run ‘:set -package Yampa’ to expose it.
(Note: this unloads all the modules in the current scope.)
Use -v (or `:set -v` in ghci) to see a list of the files searched for.
|
4 | import FRP.Yampa
Therefore, I modified the mystic.cabal file by adding Yampa to its build-depends (I didn't use ‘:set -package Yampa’ because every time I have to input that things)
I got the following information:
Error: While constructing the build plan, the following exceptions were encountered:
In the dependencies for mystic-0.1.0.0:
Yampa needed, but the stack configuration has no specified version (latest matching version
is 0.13.1)
needed since mystic is a build target.
Some different approaches to resolving this:
* Recommended action: try adding the following to your extra-deps
in /Users/zhangkai/mystic/stack.yaml:
- Yampa-0.13.1#sha256:4612a2646c27bcd3ac55c90dbc34249303e28aa5b3bc3e0c6fa9ce58b889843c,5436
Error: Plan construction failed.
Warning: Build failed, but trying to launch GHCi anyway
The following GHC options are incompatible with GHCi and have not been passed to it: -threaded
Configuring GHCi with the following packages: mystic
GHCi, version 8.8.3: https://www.haskell.org/ghc/ :? for help
<command line>: cannot satisfy -package Yampa
(use -v for more information)
And I took its advice by adding the line to the extra-deps of stack.yaml
extra-deps:
- Yampa-0.13.1#sha256:4612a2646c27bcd3ac55c90dbc34249303e28aa5b3bc3e0c6fa9ce58b889843c,5436
It works. Also I tried some other packages. If I create a single .hs file, I fail. If I create a project and modify its .cabal and .yaml, it works. I guess perhaps it has something to do with the environment. Those packages are downloaded but hidden.
So my question here would be: is there any workaround that allows the packages to be seen by even a single .hs file (Obviously it has neither .cabal nor .yaml)?

In the meantime, how do I get executable coverage with stack?

My program consists of 4 executables, and basically zero library code. My tests work by running the executables with various input files.
"stack test --coverage" apparently doesn't handle executables. OK, fine, but I can't figure out how to do it "by hand", as it were.
I've tried adding -fhpc to my cabal files, and it appears to work:
/home/rlpowell/.stack/programs/x86_64-linux/ghc-8.0.1/lib/ghc-8.0.1/bin/ghc -B/home/rlpowell/.stack/programs/x86_64-linux/ghc-8.0.1/lib/ghc-8.0.1 --make -no-link -fbuilding-cabal-package -O -static -outputdir .stack-work/dist/x86_64-linux/Cabal-1.24.0.0/build/unphone/unphone-tmp -odir .stack-work/dist/x86_64-linux/Cabal-1.24.0.0/build/unphone/unphone-tmp -hidir .stack-work/dist/x86_64-linux/Cabal-1.24.0.0/build/unphone/unphone-tmp -stubdir .stack-work/dist/x86_64-linux/Cabal-1.24.0.0/build/unphone/unphone-tmp -i -i.stack-work/dist/x86_64-linux/Cabal-1.24.0.0/build/unphone/unphone-tmp -iapp -i.stack-work/dist/x86_64-linux/Cabal-1.24.0.0/build/autogen -I.stack-work/dist/x86_64-linux/Cabal-1.24.0.0/build/autogen -I.stack-work/dist/x86_64-linux/Cabal-1.24.0.0/build/unphone/unphone-tmp -optP-include -optP.stack-work/dist/x86_64-linux/Cabal-1.24.0.0/build/autogen/cabal_macros.h -hide-all-packages -no-user-package-db -package-db /home/rlpowell/.stack/snapshots/x86_64-linux/lts-7.4/8.0.1/pkgdb -package-db /dropbox/src/hblog/.stack-work/install/x86_64-linux/lts-7.4/8.0.1/pkgdb -package-db .stack-work/dist/x86_64-linux/Cabal-1.24.0.0/package.conf.inplace -package-id base-4.9.0.0 -package-id directory-1.2.6.2 -package-id filemanip-0.3.6.3-DFENeGbODv96RwGywUxkEu -package-id filepath-1.4.1.0 -package-id hblog-0.1.0.0-5BseEsncIi47yHhFL2tGbM -package-id pcre-heavy-1.0.0.2-ncNpc9J5vG8YMUKvU47xG -package-id pcre-light-0.4.0.4-IQAaYrFkWFB49U9V8o5b8j -package-id unix-2.7.2.0 -XHaskell2010 app/unphone.hs -threaded -Wall -fhpc -Wall -fhpc -ddump-hi -ddump-to-file
but after running the programs thus generated, I can't find a .hpc directory or any .tix files.
On my computer the .hpc files ended up in .stack-work/dist/x86_64-linux/Cabal-1.24.2.0/hpc/ and the .tix file was in the working directory.
This is a bash script I use for testing an executable with no library code:
#!/usr/bin/env bash
stack build --coverage
stack exec tests
while getopts ":r" opt; do
case $opt in
r)
hpc markup --hpcdir=.stack-work/dist/x86_64-linux/Cabal-1.24.2.0/hpc/ --destdir=coverage_markup tests.tix
firefox coverage_markup/hpc_index.html
sleep 120
esac
done
rm -rf coverage_markup
rm tests.tix

Linker can't find Parsec library

I'm trying do some web scraping using HXT, but one dependency, hxt-regex-xmlschema-9.2.0, always fails to install. The error is ld: library not found for -lHSparsec-3.1.7-ghc7.8.3. I don't understand why the linking is failing. I have parsec installed - cabal install parsec-3.1.7 worked fine. I'm running OSX 10.10.1, GHC 7.8.3, and gcc 4.9.1.
EDIT: The output from cabal install hxt-regex-xmlschema-9.2.0:
Configuring hxt-regex-xmlschema-9.2.0...
Dependency base ==4.7.0.1: using base-4.7.0.1
Dependency bytestring ==0.10.4.0: using bytestring-0.10.4.0
Dependency hxt-charproperties ==9.2.0.0: using hxt-charproperties-9.2.0.0
Dependency parsec ==3.1.7: using parsec-3.1.7
Dependency text ==1.2.0.3: using text-1.2.0.3
/usr/local/bin/ghc --info
Using Cabal-1.18.1.4 compiled by ghc-7.8
Using compiler: ghc-7.8.3
Using install prefix: /Users/rjayatilleka/.cabal
Binaries installed in: /Users/rjayatilleka/.cabal/bin
Libraries installed in:
/Users/rjayatilleka/.cabal/lib/x86_64-osx-ghc-7.8.3/hxt-regex-xmlschema-9.2.0
Private binaries installed in: /Users/rjayatilleka/.cabal/libexec
Data files installed in:
/Users/rjayatilleka/.cabal/share/x86_64-osx-ghc-7.8.3/hxt-regex-xmlschema-9.2.0
Documentation installed in:
/Users/rjayatilleka/.cabal/share/doc/x86_64-osx-ghc-7.8.3/hxt-regex-xmlschema-9.2.0
Configuration files installed in: /Users/rjayatilleka/.cabal/etc
Using alex version 3.0.5 found on system at: /usr/local/bin/alex
Using ar found on system at: /usr/bin/ar
Using c2hs version 0.17.2 found on system at:
/Users/rjayatilleka/.cabal/bin/c2hs
Using cpphs version 1.18.5 found on system at:
/Users/rjayatilleka/.cabal/bin/cpphs
No ffihugs found
Using gcc version 4.9.1 found on system at: /usr/local/bin/gcc
Using ghc version 7.8.3 found on system at: /usr/local/bin/ghc
Using ghc-pkg version 7.8.3 found on system at: /usr/local/bin/ghc-pkg
No greencard found
Using haddock version 2.14.3 found on system at: /usr/local/bin/haddock
Using happy version 1.18.10 found on system at: /usr/local/bin/happy
No hmake found
Using hpc version 0.67 found on system at: /usr/local/bin/hpc
Using hsc2hs version 0.67 found on system at: /usr/local/bin/hsc2hs
Using hscolour version 1.20 found on system at:
/Users/rjayatilleka/.cabal/bin/HsColour
No hugs found
No jhc found
Using ld found on system at: /usr/bin/ld
No lhc found
No lhc-pkg found
No nhc98 found
Using pkg-config version 0.28 found on system at: /usr/local/bin/pkg-config
Using ranlib found on system at: /usr/bin/ranlib
Using strip found on system at: /usr/bin/strip
Using tar found on system at: /usr/bin/tar
No uhc found
Component build order: library
creating dist/build
creating dist/build/autogen
Building hxt-regex-xmlschema-9.2.0...
Preprocessing library hxt-regex-xmlschema-9.2.0...
Building library...
/usr/local/bin/ghc --info
/usr/local/bin/ghc --info
creating dist/build
/usr/local/bin/ghc --make -fbuilding-cabal-package -O -static -dynamic-too -dynosuf dyn_o -dynhisuf dyn_hi -outputdir dist/build -odir dist/build -hidir dist/build -stubdir dist/build -i -idist/build -isrc -idist/build/autogen -Idist/build/autogen -Idist/build -optP-include -optPdist/build/autogen/cabal_macros.h -package-name hxt-regex-xmlschema-9.2.0 -hide-all-packages -package-db dist/package.conf.inplace -package-id base-4.7.0.1-c64d224738ec7af4085e89ca9c12c37b -package-id bytestring-0.10.4.0-18fe2f3ce284617c82da1702e16772cf -package-id hxt-charproperties-9.2.0.0-36acaa39288f4b2bce2f5dc5cd48c479 -package-id parsec-3.1.7-764aedfe24d8f24850146ae17e380232 -package-id text-1.2.0.3-ebea8c0126422e0e6e5e972676f2f18d -XHaskell2010 Text.Regex.Glob.String Text.Regex.Glob.Generic Text.Regex.Glob.Generic.RegexParser Text.Regex.XMLSchema.String Text.Regex.XMLSchema.Generic Text.Regex.XMLSchema.Generic.Matching Text.Regex.XMLSchema.Generic.RegexParser Text.Regex.XMLSchema.Generic.Regex Text.Regex.XMLSchema.Generic.StringLike -threaded -rtsopts -Wall -fwarn-tabs -funbox-strict-fields
[1 of 9] Compiling Text.Regex.XMLSchema.Generic.StringLike ( src/Text/Regex/XMLSchema/Generic/StringLike.hs, dist/build/Text/Regex/XMLSchema/Generic/StringLike.o )
[2 of 9] Compiling Text.Regex.XMLSchema.Generic.Regex ( src/Text/Regex/XMLSchema/Generic/Regex.hs, dist/build/Text/Regex/XMLSchema/Generic/Regex.o )
[3 of 9] Compiling Text.Regex.XMLSchema.Generic.RegexParser ( src/Text/Regex/XMLSchema/Generic/RegexParser.hs, dist/build/Text/Regex/XMLSchema/Generic/RegexParser.o )
[4 of 9] Compiling Text.Regex.XMLSchema.Generic.Matching ( src/Text/Regex/XMLSchema/Generic/Matching.hs, dist/build/Text/Regex/XMLSchema/Generic/Matching.o )
[5 of 9] Compiling Text.Regex.XMLSchema.Generic ( src/Text/Regex/XMLSchema/Generic.hs, dist/build/Text/Regex/XMLSchema/Generic.o )
[6 of 9] Compiling Text.Regex.XMLSchema.String ( src/Text/Regex/XMLSchema/String.hs, dist/build/Text/Regex/XMLSchema/String.o )
[7 of 9] Compiling Text.Regex.Glob.Generic.RegexParser ( src/Text/Regex/Glob/Generic/RegexParser.hs, dist/build/Text/Regex/Glob/Generic/RegexParser.o )
[8 of 9] Compiling Text.Regex.Glob.Generic ( src/Text/Regex/Glob/Generic.hs, dist/build/Text/Regex/Glob/Generic.o )
[9 of 9] Compiling Text.Regex.Glob.String ( src/Text/Regex/Glob/String.hs, dist/build/Text/Regex/Glob/String.o )
Linking...
/usr/bin/ar -r -s dist/build/libHShxt-regex-xmlschema-9.2.0.a dist/build/Text/Regex/Glob/String.o dist/build/Text/Regex/Glob/Generic.o dist/build/Text/Regex/Glob/Generic/RegexParser.o dist/build/Text/Regex/XMLSchema/String.o dist/build/Text/Regex/XMLSchema/Generic.o dist/build/Text/Regex/XMLSchema/Generic/Matching.o dist/build/Text/Regex/XMLSchema/Generic/RegexParser.o dist/build/Text/Regex/XMLSchema/Generic/Regex.o dist/build/Text/Regex/XMLSchema/Generic/StringLike.o
ar: creating archive dist/build/libHShxt-regex-xmlschema-9.2.0.a
/usr/local/bin/ghc -shared -dynamic -package-name hxt-regex-xmlschema-9.2.0 -no-auto-link-packages -package-db dist/package.conf.inplace -package-id base-4.7.0.1-c64d224738ec7af4085e89ca9c12c37b -package-id bytestring-0.10.4.0-18fe2f3ce284617c82da1702e16772cf -package-id hxt-charproperties-9.2.0.0-36acaa39288f4b2bce2f5dc5cd48c479 -package-id parsec-3.1.7-764aedfe24d8f24850146ae17e380232 -package-id text-1.2.0.3-ebea8c0126422e0e6e5e972676f2f18d dist/build/Text/Regex/Glob/String.dyn_o dist/build/Text/Regex/Glob/Generic.dyn_o dist/build/Text/Regex/Glob/Generic/RegexParser.dyn_o dist/build/Text/Regex/XMLSchema/String.dyn_o dist/build/Text/Regex/XMLSchema/Generic.dyn_o dist/build/Text/Regex/XMLSchema/Generic/Matching.dyn_o dist/build/Text/Regex/XMLSchema/Generic/RegexParser.dyn_o dist/build/Text/Regex/XMLSchema/Generic/Regex.dyn_o dist/build/Text/Regex/XMLSchema/Generic/StringLike.dyn_o -o dist/build/libHShxt-regex-xmlschema-9.2.0-ghc7.8.3.dylib
ld: library not found for -lHSparsec-3.1.7-ghc7.8.3
clang: error: linker command failed with exit code 1 (use -v to see invocation)
Reading available packages...
Choosing modular solver.
Resolving dependencies...
Ready to install hxt-regex-xmlschema-9.2.0
Waiting for install task to finish...
Extracting
/Users/rjayatilleka/.cabal/packages/hackage.haskell.org/hxt-regex-xmlschema/9.2.0/hxt-regex-xmlschema-9.2.0.tar.gz
to
/var/folders/71/k93g7g992nlf9t6mkqbykv600000gn/T/hxt-regex-xmlschema-9.2.0-64074...
Updating hxt-regex-xmlschema.cabal with the latest revision from the index.
creating
/var/folders/71/k93g7g992nlf9t6mkqbykv600000gn/T/hxt-regex-xmlschema-9.2.0-64074/hxt-regex-xmlschema-9.2.0/dist/setup
creating
/var/folders/71/k93g7g992nlf9t6mkqbykv600000gn/T/hxt-regex-xmlschema-9.2.0-64074/hxt-regex-xmlschema-9.2.0/dist
creating
/var/folders/71/k93g7g992nlf9t6mkqbykv600000gn/T/hxt-regex-xmlschema-9.2.0-64074/hxt-regex-xmlschema-9.2.0/dist/setup
/Users/rjayatilleka/.cabal/setup-exe-cache/setup-Cabal-1.18.1.4-ghc-7.8.3
configure --verbose=2 --ghc --prefix=/Users/rjayatilleka/.cabal --user
--constraint=text ==1.2.0.3 --constraint=parsec ==3.1.7
--constraint=hxt-charproperties ==9.2.0.0 --constraint=bytestring ==0.10.4.0
--constraint=base ==4.7.0.1 --disable-tests --disable-benchmarks
creating
/var/folders/71/k93g7g992nlf9t6mkqbykv600000gn/T/hxt-regex-xmlschema-9.2.0-64074/hxt-regex-xmlschema-9.2.0/dist/setup
/Users/rjayatilleka/.cabal/setup-exe-cache/setup-Cabal-1.18.1.4-ghc-7.8.3
build --verbose=2
Failed to install hxt-regex-xmlschema-9.2.0
World file is already up to date.
cabal: Error: some packages failed to install:
hxt-regex-xmlschema-9.2.0 failed during the building phase. The exception was:
ExitFailure 1
Well, I kind of left it for a while, and came back to it now. It worked for some reason. The only thing I can think of is that I upgraded from GHC 7.8.3 to 7.8.4. If anyone comes up with this again, try a different version of GHC.

Haskell - can't find package

I have a package installed via cabal: Data.Vector
But when I attempt to compile a program that has import Data.Vector in it:
Drews-MacBook-Pro:Blokus-AI drewgross$ ghc --make -O2 -prof -auto-all playGame
Grid.hs:28:8:
Could not find module `Data.Vector'
Perhaps you meant
Data.Tensor (from Tensor-1.0.0.1)
Data.Functor (from base)
Use -v to see a list of the files searched for.
Drews-MacBook-Pro:Blokus-AI drewgross$
The command I used to install was:
cabal install -p --reinstall --force-reinstalls vector
I've done other various thing in my attempt to get my program to compile, but nothing has worked. I'd really like to just delete everything, go back to square one and download the package again. How can I do that?
Edit: further investigation shows that there might be 2 versions of Data.Vector: 0.10.0.1 and 0.9.1, maybe they are conflicting somehow?
Edit: ghc-pkg check lists no errors, but gives me a ton of warnings that look like this:
Warning: haddock-interfaces: /Users/drewgross/.cabal/share/doc/haskell-lexer-1.0/html/haskell-lexer.haddock doesn't exist or isn't a file
Edit: GCHi also doesn't find it
λ> import Data.Vector
<no location info>:
Could not find module `Data.Vector'
Perhaps you meant Data.Functor (from base)
λ>
Edit: ghc-pkg list vector:
Drews-MacBook-Pro:Blokus-AI drewgross$ ghc-pkg list vector
/Library/Frameworks/GHC.framework/Versions/7.4.2-x86_64/usr/lib/ghc-7.4.2/package.conf.d
/Users/drewgross/.ghc/x86_64-darwin-7.4.2/package.conf.d
vector-0.10.0.1
Drews-MacBook-Pro:Blokus-AI drewgross$
and building with -v flag:
Drews-MacBook-Pro:Blokus-AI drewgross$ ghc --make -O2 -prof -auto-all -v playGame
Glasgow Haskell Compiler, Version 7.4.2, stage 2 booted by GHC version 7.4.2
Using binary package database: /usr/local/Cellar/ghc/7.4.2/lib/ghc-7.4.2/package.conf.d/package.cache
Using binary package database: /Users/drewgross/.ghc/x86_64-darwin-7.4.2/package.conf.d/package.cache
package Cabal-1.16.0.3-e689d8e77b2f476229954cd43b1737bd is unusable due to missing or recursive dependencies:
base-4.5.1.0-81d626fb996bc7e140a3fd4481b338cd directory-1.1.0.2-72e928d14fc50f31f7e6404839a15691 unix-2.5.1.1-29636eb78541401e8e00393ef5df097e
package Tensor-1.0.0.1-a8f1a59665c3ebc4867678a14fe1460f is unusable due to missing or recursive dependencies:
base-4.5.1.0-81d626fb996bc7e140a3fd4481b338cd
package binary-0.5.1.1-e62c39c3aba8093e9b9655a4a8d2bce9 is unusable due to missing or recursive dependencies:
base-4.5.1.0-81d626fb996bc7e140a3fd4481b338cd bytestring-0.10.0.1-9b03e69060669eabf0b20e150305c7be
package bmp-1.2.3.2-c7572ec2bbb802bfd93fed0953c61d5d is unusable due to missing or recursive dependencies:
base-4.5.1.0-81d626fb996bc7e140a3fd4481b338cd binary-0.5.1.1-e62c39c3aba8093e9b9655a4a8d2bce9 bytestring-0.10.0.1-9b03e69060669eabf0b20e150305c7be
package bytestring-0.10.0.1-9b03e69060669eabf0b20e150305c7be is unusable due to missing or recursive dependencies:
base-4.5.1.0-81d626fb996bc7e140a3fd4481b338cd
package ghc-paths-0.1.0.9-4e6c624a3431a4fa7630e4fb77be4c83 is unusable due to missing or recursive dependencies:
base-4.5.1.0-81d626fb996bc7e140a3fd4481b338cd
package haskell-lexer-1.0-8fea1c35b626a2de761522690a88c063 is unusable due to missing or recursive dependencies:
base-4.5.1.0-81d626fb996bc7e140a3fd4481b338cd
package primitive-0.4.1-0007d441db5f4ce1ffd66bd3816c2d4e is unusable due to missing or recursive dependencies:
base-4.5.1.0-81d626fb996bc7e140a3fd4481b338cd
package split-0.2.1.1-03ec5738edb34f2e8967d25637b9392f is unusable due to missing or recursive dependencies:
base-4.5.1.0-81d626fb996bc7e140a3fd4481b338cd
package vector-0.10.0.1-3450daae3d9f2092020075d05481123c is unusable due to missing or recursive dependencies:
base-4.5.1.0-81d626fb996bc7e140a3fd4481b338cd primitive-0.5.0.1-15cdc8c11a54a78809b647af0c2975b3
wired-in package ghc-prim mapped to ghc-prim-0.2.0.0-7d3c2c69a5e8257a04b2c679c40e2fa7
wired-in package integer-gmp mapped to integer-gmp-0.4.0.0-af3a28fdc4138858e0c7c5ecc2a64f43
wired-in package base mapped to base-4.5.1.0-47f48c3ae7f8256a66a23e9dfe22eefc
wired-in package rts mapped to builtin_rts
wired-in package template-haskell mapped to template-haskell-2.7.0.0-e109822dcbed82c43f9fa60194eb64b5
wired-in package dph-seq not found.
wired-in package dph-par not found.
Hsc static flags: -fscc-profiling -static
*** Chasing dependencies:
Chasing modules from: *playGame.hs
Grid.hs:28:8:
Could not find module `Data.Vector'
Perhaps you meant Data.Functor (from base)
Locations searched:
Data/Vector.hs
Data/Vector.lhs
*** Deleting temp files:
Deleting:
*** Deleting temp dirs:
Deleting:
Drews-MacBook-Pro:Blokus-AI drewgross$
This is what shell uses:
Drews-MacBook-Pro:Blokus-AI drewgross$ which ghc
/usr/bin/ghc
I did cabal install -v lens and obviously there was a ton of output but I think this is the relevant part:
Registering lens-3.7.0.2...
/usr/bin/ghc-pkg update - --global --user
Updating world file...
Drews-MacBook-Pro:Blokus-AI drewgross$
Which seems to indicate that they are using the same version. I can post more of the output of a cabal install if its relevant.
Edit: more ghc output from cabal install -v
Building lens-3.7.0.2...
Preprocessing library lens-3.7.0.2...
Building library...
creating dist/build
/usr/bin/ghc --make -package-name lens-3.7.0.2 -hide-all-packages -fbuilding-cabal-package -i -idist/build -isrc -idist/build/autogen -Idist/build/autogen -Idist/build -optP-DTRUSTWORTHY=1 -optP-DDEFAULT_SIGNATURES=1 -optP-include -optPdist/build/autogen/cabal_macros.h -odir dist/build -hidir dist/build -stubdir dist/build -package-id array-0.4.0.0-0b6c5ca7e879a14d110ca4c001dd9297 -package-id base-4.5.1.0-81d626fb996bc7e140a3fd4481b338cd -package-id bytestring-0.9.2.1-0044644a71adfe5e950e6c6f6ca13065 -package-id comonad-3.0.0.2-6ef27fce8536ebdf9c364307a0915f63 -package-id comonad-transformers-3.0-a6df581636b1c9b514cfa6560f17d6a3 -package-id comonads-fd-3.0-b906ed7898871c5d2427052e2eefa62e -package-id containers-0.4.2.1-75f143aa39a3e77a1ce2300025bdd8ce -package-id filepath-1.3.0.0-f998e5510c76a98913f57b14b4f16c57 -package-id ghc-prim-0.2.0.0-7d3c2c69a5e8257a04b2c679c40e2fa7 -package-id hashable-1.1.2.5-14291f3b4e96b5599759ce7daa2bd37c -package-id mtl-2.1.2-02e701f9b1590ee88a0b5b0bd5d93a29 -package-id parallel-3.2.0.3-4cdd6067624f867b253b98d6d9fb9f52 -package-id semigroups-0.8.4.1-4d3a86b037504e6000a0354510588745 -package-id split-0.2.1.1-03ec5738edb34f2e8967d25637b9392f -package-id template-haskell-2.7.0.0-29110cc89a711d6ab3e7ee0e0a8ee949 -package-id text-0.11.2.3-473d9a1761b27c7315f2ef4569d93c3c -package-id transformers-0.3.0.0-8e66ecc7d4dae2b07b2b5406908c70e4 -package-id unordered-containers-0.2.2.1-d70d5ccb1df11dbbbaac89571b1ee46d -package-id vector-0.10.0.1-3450daae3d9f2092020075d05481123c -O -Wall -fwarn-tabs -O2 -fdicts-cheap -funbox-strict-fields -XHaskell98 Control.Lens.TH Language.Haskell.TH.Lens Control.Exception.Lens Control.Lens Control.Lens.Action Control.Lens.Classes Control.Lens.Combinators Control.Lens.Fold Control.Lens.Getter Control.Lens.Indexed Control.Lens.IndexedGetter Control.Lens.IndexedFold Control.Lens.IndexedLens Control.Lens.IndexedSetter Control.Lens.IndexedTraversal Control.Lens.Internal Control.Lens.Internal.Zipper Control.Lens.Iso Control.Lens.Loupe Control.Lens.Plated Control.Lens.Prism Control.Lens.Representable Control.Lens.Setter Control.Lens.Simple Control.Lens.Traversal Control.Lens.Tuple Control.Lens.Type Control.Lens.WithIndex Control.Lens.Wrapped Control.Lens.Zipper Control.Lens.Zoom Data.Bits.Lens Data.ByteString.Lens Data.ByteString.Strict.Lens Data.ByteString.Lazy.Lens Data.Complex.Lens Data.Data.Lens Data.Dynamic.Lens Data.HashSet.Lens Data.IntSet.Lens Data.List.Lens Data.List.Split.Lens Data.Sequence.Lens Data.Set.Lens Data.Text.Lens Data.Text.Strict.Lens Data.Text.Lazy.Lens Data.Tree.Lens Data.Typeable.Lens Data.Vector.Lens Data.Vector.Generic.Lens GHC.Generics.Lens Data.Array.Lens System.FilePath.Lens Control.Parallel.Strategies.Lens Control.Seq.Lens Control.Lens.Internal.Combinators
[ 1 of 57] Compiling Control.Lens.Classes ( src/Control/Lens/Classes.hs, dist/build/Control/Lens/Classes.o )
[ 2 of 57] Compiling Control.Lens.Internal ( src/Control/Lens/Internal.hs, dist/build/Control/Lens/Internal.o )
[ 3 of 57] Compiling Control.Lens.Internal.Combinators ( src/Control/Lens/Internal/Combinators.hs, dist/build/Control/Lens/Internal/Combinators.o )
[ 4 of 57] Compiling Control.Lens.Indexed ( src/Control/Lens/Indexed.hs, dist/build/Control/Lens/Indexed.o )
[ 5 of 57] Compiling Control.Lens.IndexedGetter ( src/Control/Lens/IndexedGetter.hs, dist/build/Control/Lens/IndexedGetter.o )
[ 6 of 57] Compiling Control.Lens.Action ( src/Control/Lens/Action.hs, dist/build/Control/Lens/Action.o )
[ 7 of 57] Compiling Control.Lens.Setter ( src/Control/Lens/Setter.hs, dist/build/Control/Lens/Setter.o )
Edit: ghc-pkg dump
Drews-MacBook-Pro:Blokus-AI drewgross$ ghc-pkg dump | grep "id: base"
id: base-4.5.1.0-81d626fb996bc7e140a3fd4481b338cd
Your package database is badly broken. The ghc -v output lists ten unusable packages due to missing or recursive dependencies, among them vector:
package vector-0.10.0.1-3450daae3d9f2092020075d05481123c is unusable due to missing or recursive dependencies:
base-4.5.1.0-81d626fb996bc7e140a3fd4481b338cd primitive-0.5.0.1-15cdc8c11a54a78809b647af0c2975b3
One thing all the broken packages have in common is the missing(?) dependency
base-4.5.1.0-81d626fb996bc7e140a3fd4481b338cd
where the
wired-in package base mapped to base-4.5.1.0-47f48c3ae7f8256a66a23e9dfe22eefc
used base has a different hash.
I'm not sure how this came about, as far as I'm aware, it's impossible to reinstall base, but it looks like you have two exemplars of ghc-7.4.2, and they step on each other's toes.
ghc-pkg list uses
/Library/Frameworks/GHC.framework/Versions/7.4.2-x86_64/usr/lib/ghc-7.4.2/package.conf.d
for the global package database, while the compilation uses
Using binary package database: /usr/local/Cellar/ghc/7.4.2/lib/ghc-7.4.2/package.conf.d/package.cache
Now, it might be that at least one of the two is a symlink and they're both pointing to the same place - then your package.cache is out of sync - but
Glasgow Haskell Compiler, Version 7.4.2, stage 2 booted by GHC version 7.4.2
a GHC booted by the same version seems unusual.
Can you ascertain whether you have indeed two ghc-7.4.2 and the command line uses a different one from the one cabal uses? which ghc tells you which one the shell uses, and cabal install -v some-package outputs the command line cabal uses, including the whole path to the used GHC.
You can list your installed packages with ghc-pkg list. For example (apparently I need to update),
$ ghc-pkg list | grep vector
vector-0.9.1
vector-algorithms-0.5.4
vector-algorithms-0.5.4.2
vector-space-0.8.0
vector-strategies-0.3
You can unregister them using ghc-pkg unregister. Ex,
$ ghc-pkg unregister vector-0.9.1
And then a cabal update && cabal install vector should grab the latest version from hackage.
I had a similar problem with another module after I installed the Haskell Platform over an existing (homebrewed) ghc install [Mac OS Mavericks 10.9.+]. I uninstalled the previous ghc with homebrew
brew uninstall ghc
and re-ran the Haskell Platform installer (.pkg on Mac). I then had to
sudo ghc-pkg recache
to resolve the out-of-date warning upon
ghc-pkg list
This resolved the problem in my case.
You might want to add the package to your .cabal file

Override -Werror when installing from Cabal

I'm trying to install the nano-hmac-0.2.0 package (a dependency of a package I want) from Hackage using Cabal and GHC 6.12.1, but it fails with the following error:
Data/Digest/OpenSSL/HMAC.hsc: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.
<no location info>:
Failing due to -Werror.
Sure enough, the package's .cabal file has the following line in it:
ghc-options: -Wall -Werror -O2 -fvia-C
I'd like to be able to override the -Werror option so I can install the package without manually modifying the .cabal file, but can't find a way that will work. In particular, I tried passing --ghc-options to Cabal to stick a -Wwarn in GHC's argument list, like this:
$ cabal install nano-hmac-0.2.0 -v2 --ghc-options='-Wwarn'
This doesn't do what I want, though; the verbose output verifies that -Wwarn is getting added to the beginning of GHC's argument list, but the -Werror from the .cabal file appears later and seems to override it:
/usr/bin/ghc -Wwarn --make -package-name nano-hmac-0.2.0 -hide-all-packages -fbuilding-cabal-package -i -idist/build -i. -idist/build/autogen -Idist/build/autogen -Idist/build -optP-include -optPdist/build/autogen/cabal_macros.h -odir dist/build -hidir dist/build -stubdir dist/build -package-id base-3.0.3.2-0092f5a086872e0cdaf979254933cd43 -package-id bytestring-0.9.1.5-125aff5b9d19ec30231ae2684b8c8577 -O -Wall -Werror -O2 -fvia-C -XForeignFunctionInterface -XBangPatterns -XCPP Data.Digest.OpenSSL.HMAC
I also tried passing --constraint='base >= 4' to Cabal to force it to use a more recent version of base and avoid the warning entirely, but I get the same failure, and I still see the following in the verbose output:
Dependency base ==3.0.3.2: using base-3.0.3.2
Is there a way to get rid of or override the -Werror coming from the .cabal file via the Cabal command line, or am I stuck modifying the .cabal file myself?
Is there a way to get rid of or override the -Werror coming from the .cabal file via the Cabal command line, or am I stuck modifying the .cabal file myself?
Indeed. There's no way in general. You may be able to override package constraints such that the warnings go away, however, in general, you must modify the .cabal file.
These days Hackage prevents people uploading packages with -Werror in their .cabal file, so the issue will go away over time.

Resources