Victorian-Bioinformatics-Consortium / degust

Deprecated : Use https://github.com/drpowell/degust
GNU General Public License v3.0
44 stars 15 forks source link

cabal keeps saying packages not installed though they are indeed there #27

Closed n6151h closed 9 years ago

n6151h commented 9 years ago

During build-prod I see the following output:

nicks@numidea:~/prova/degust$ sudo bash build.sh prod-server
Building 'prod-server'
Combining css and minifying...
Compiling CoffeeScript and bundling all js...
Building app/js/common-req.coffee -> build/common.js
Building app/js/compare-req.coffee -> build/compare.js
Building app/js/config-req.coffee -> build/config.js
Building app/js/slickgrid-req.coffee -> build/slickgrid.js
Building backend
cabal: Run the 'configure' command first.

I run the configure command and get:

nicks@numidea:~/prova/degust$ sudo cabal --global configure
Resolving dependencies...
Configuring degust-0.14...
cabal: At least the following dependencies are missing:
bytestring ==0.9.*,
cgi ==3001.1.*,
json ==0.7.*,
lens >=3.9 && <4,
random ==1.0.*,
text >=0.11.2 && <1

I have already installed all of these, but, didn't use the --global switch, so tried again (just with bytestring package to save a bit of time.):

nicks@numidea:~/prova/degust$ sudo cabal --global install bytestring
Resolving dependencies...
Configuring bytestring-0.10.6.0...
Building bytestring-0.10.6.0...
Preprocessing library bytestring-0.10.6.0...
  :    # deletia ...
Registering bytestring-0.10.6.0...
Installed bytestring-0.10.6.0

and re-run cabal configure:

nicks@numidea:~/prova/degust$ sudo cabal --global configure
Resolving dependencies...
Configuring degust-0.14...
cabal: At least the following dependencies are missing:
bytestring ==0.9.*,   <<<<<<<<<<<<<<<<  STILL NOT INSTALLED?!?!
cgi ==3001.1.*,
json ==0.7.*,
lens >=3.9 && <4,
random ==1.0.*,
text >=0.11.2 && <1

Is this a known or simple issue, requiring specific version of cabal, perhaps? If not, I'll dig some more but wanted to ask before I invested any more time trying to get this to build.

Cheers, Nick

n6151h commented 9 years ago

Apparently, very version dependent. Going through each of these one by one, specifying version (e.g.

cabal install 'bytestring ==0.9.*'

got me past this.

But, I did see messages like:

src/Control/Lens/Internal/ByteString.hs:64:29: Warning:
    In the use of `BI.inlinePerformIO'
    (imported from Data.ByteString.Internal):
    Deprecated: "If you think you know what you are doing, use 'unsafePerformIO'. If you are sure you know what you are doing, use 'unsafeDupablePerformIO'. If you enjoy sharing an address space with a malevolent agent of chaos, try 'accursedUnutterablePerformIO'."

Really doesn't give me great confidence that uploading my data to your servers won't leave those data vulnerable to a "malevolent agent of chaos".

n6151h commented 9 years ago

Moving right along,

configure cabal

Produced the following warning:

Warning: This package indirectly depends on multiple versions of the same
package. This is highly likely to cause a compile failure.
package text-1.2.1.3 requires binary-0.5.1.1
package pureMD5-2.1.2.1 requires binary-0.5.1.1
package text-1.2.1.3 requires binary-0.7.6.1
package unix-2.6.0.1 requires bytestring-0.10.0.2
package text-1.2.1.3 requires bytestring-0.10.0.2
package regex-pcre-0.94.4 requires bytestring-0.10.0.2
package regex-base-0.93.2 requires bytestring-0.10.0.2
package pureMD5-2.1.2.1 requires bytestring-0.10.0.2
package json-0.7 requires bytestring-0.10.0.2
package hastache-0.6.1 requires bytestring-0.10.0.2
package entropy-0.3.7 requires bytestring-0.10.0.2
package crypto-api-0.13.2 requires bytestring-0.10.0.2
package cereal-0.4.1.1 requires bytestring-0.10.0.2
package bytestring-builder-0.10.6.0.0 requires bytestring-0.10.0.2
package blaze-builder-0.4.0.1 requires bytestring-0.10.0.2
package binary-0.5.1.1 requires bytestring-0.10.0.2
package unix-2.7.1.0 requires bytestring-0.10.6.0
package text-1.2.1.3 requires bytestring-0.10.6.0
package text-0.11.3.1 requires bytestring-0.10.6.0
package semigroups-0.16.2.2 requires bytestring-0.10.6.0
package parsec-3.1.9 requires bytestring-0.10.6.0
package network-2.5.0.0 requires bytestring-0.10.6.0
package lens-3.10.3 requires bytestring-0.10.6.0
package hashable-1.2.3.3 requires bytestring-0.10.6.0
package cgi-3001.1.8.5 requires bytestring-0.10.6.0
package binary-0.7.6.1 requires bytestring-0.10.6.0
package degust-0.14 requires bytestring-0.9.2.1
package transformers-compat-0.4.0.3 requires mtl-2.1.3.1
package parsec-3.1.9 requires mtl-2.1.3.1
package lens-3.10.3 requires mtl-2.1.3.1
package cgi-3001.1.8.5 requires mtl-2.1.3.1
package regex-base-0.93.2 requires mtl-2.2.1
package json-0.7 requires mtl-2.2.1
package hastache-0.6.1 requires mtl-2.2.1
package semigroups-0.16.2.2 requires text-0.11.3.1
package lens-3.10.3 requires text-0.11.3.1
package hashable-1.2.3.3 requires text-0.11.3.1
package degust-0.14 requires text-0.11.3.1
package parsec-3.1.9 requires text-1.2.1.3
package json-0.7 requires text-1.2.1.3
package hastache-0.6.1 requires text-1.2.1.3
package blaze-builder-0.4.0.1 requires text-1.2.1.3
package transformers-compat-0.4.0.3 requires transformers-0.3.0.0
package semigroupoids-4.3 requires transformers-0.3.0.0
package profunctors-4.4.1 requires transformers-0.3.0.0
package primitive-0.6 requires transformers-0.3.0.0
package mtl-2.1.3.1 requires transformers-0.3.0.0
package monads-tf-0.1.0.2 requires transformers-0.3.0.0
package lens-3.10.3 requires transformers-0.3.0.0
package distributive-0.4.4 requires transformers-0.3.0.0
package contravariant-1.3.2 requires transformers-0.3.0.0
package comonad-4.2.7.2 requires transformers-0.3.0.0
package StateVar-1.1.0.1 requires transformers-0.3.0.0
package MonadCatchIO-transformers-0.3.1.0 requires transformers-0.3.0.0
package mtl-2.2.1 requires transformers-0.4.3.0
package hastache-0.6.1 requires transformers-0.4.3.0
package crypto-api-0.13.2 requires transformers-0.4.3.0
package process-1.1.0.2 requires unix-2.6.0.1
package entropy-0.3.7 requires unix-2.6.0.1
package directory-1.2.0.1 requires unix-2.6.0.1
package degust-0.14 requires unix-2.6.0.1
package network-2.5.0.0 requires unix-2.7.1.0

Throwing caution to the wind, I proceeded with the build and still got

Building 'prod-server'
Combining css and minifying...
Compiling CoffeeScript and bundling all js...
Building app/js/common-req.coffee -> build/common.js
Building app/js/compare-req.coffee -> build/compare.js
Building app/js/config-req.coffee -> build/config.js
Building app/js/slickgrid-req.coffee -> build/slickgrid.js
Building backend
Building degust-0.14...
Preprocessing executable 'r-json' for degust-0.14...
<command line>: cannot satisfy -package-id cgi-3001.1.8.5-0c249e17d94940b6845cdf2619d4301e: 
    cgi-3001.1.8.5-0c249e17d94940b6845cdf2619d4301e is unusable due to missing or recursive dependencies:
      network-2.5.0.0-0bac4252f1dbeaea1bfff559a5bd4788 parsec-3.1.9-cd1910ba848c30e8f3c663e2f8b41d31
    (use -v for more information)

So, I tried to re-install network, specifying 2.5.* and got

nicks@numidea:~/prova/degust$ cabal install 'network==2.5.*' --reinstall
Resolving dependencies...
In order, the following would be installed:
network-2.5.0.0 (reinstall)
cabal: The following packages are likely to be broken by the reinstalls:
cgi-3001.1.8.5
Use --force-reinstalls if you want to install anyway.

Long and short of it is this: Do you have a build script that works?

drpowell commented 9 years ago

Getting the specific versions of haskell libraries can be tricky. The best solution I've found is to use a cabal sandbox.

I've documented the building process on an ubuntu box that may help you: 8d6b38f0ee402fae9bd5cfe21325f57e30c97268