2014-05-22 15 views
8

Sto tentando di creare una suite di test per il mio progetto, HaskSplit nella mia configurazione .cabal:Errore durante la creazione suite di test: "non può soddisfare -package-id"

-- Initial HaskSplit.cabal generated by cabal init. For further 
-- documentation, see http://haskell.org/cabal/users-guide/ 

name:    HaskSplit 
version:    0.1.0.0 
synopsis:   Haskell Implementation of Shamir's Secret Sharing Scheme 
-- description:   
license:    MIT 
license-file:  LICENSE 
author:    
maintainer:   
-- copyright:   
category:   Security 
build-type:   Simple 
-- extra-source-files: 
cabal-version:  >=1.10 

executable HaskSplit 
    main-is:    Main.hs 
    default-language: Haskell2010 
    -- other-modules:  
    other-extensions: TemplateHaskell, NoImplicitPrelude, RankNTypes, OverloadedStrings 
    build-depends:  base >=4.6 && <4.7, 
         resourcet >=1.1 && <1.2, 
         bytestring >=0.10 && <0.11, 
         conduit-extra >=1.1 && <1.2, 
         vector >=0.10 && <0.11, 
         conduit >=1.1 && <1.2, 
         conduit-combinators >=0.2 && <0.3, 
         mono-traversable >=0.5 && <0.6, 
         safe >=0.3 && <0.4, 
         transformers >=0.3 && <0.4, 
         filepath >= 1.3, 
         directory >=1.2, 
         Glob >= 0.7.4, 
         errors >= 1.4, 
         optparse-applicative >= 0.8 
    hs-source-dirs:  src 
    default-language: Haskell2010 
    ghc-options:   -Wall -fno-warn-orphans 

test-suite tests 
    type:    exitcode-stdio-1.0 
    default-language: Haskell2010 
    hs-source-dirs:  tests 
    main-is:    Test.hs 
    ghc-options:   -Wall -fno-warn-orphans 
    build-depends:  base == 4.*, 
         QuickCheck >=2.6 && <2.7, 
         test-framework-quickcheck2 >= 0.3.0.3, 
         HaskSplit 

Guardando un esempio test- suite setup here, ho notato che stanno specificando il proprio pacchetto come uno dei moduli build-dependent. Pertanto ho fatto lo stesso, in modo da poter mantenere la mia lista build-depends per la mia suite di test breve.

Tuttavia quando provo cabal repl test:tests a riga di comando, sto ottenendo il seguente errore:

<command line>: cannot satisfy -package-id HaskSplit-0.1.0.0-inplace 

Io non sono troppo sicuro di quello che mi manca qui, qualcuno mi può aiutare? Sono le dipendenze cicliche che accadono da queste parti? O devo creare una istanza di libreria del mio pacchetto per la build, dipende dal lavoro?

Grazie!

+1

'accumulo dipende: HaskSplit' fa riferimento a una libreria denominata' HaskSplit', che non esiste. Per inciso, i limiti sui tuoi pacchetti sono estremamente stretti. – user2407038

risposta

8

La sezione build-depends può contenere solo librerie , non moduli. Ti suggerisco di aggiungere una libreria al tuo file cabal. La sezione exposed-modules della libreria dovrebbe elencare tutti i moduli che il test (o qualsiasi altro utente della libreria) potrebbe avere bisogno di fare riferimento.

In alternativa alla creazione di una libreria, è possibile aggiungere semplicemente i moduli necessari alla sezione other-modules della sezione suite di test. Se vuoi includere molti moduli, penso che l'approccio alla biblioteca sia più bello.

+1

Cheers per quello. Aggiunta la libreria dipende e sembra costruire correttamente. Tuttavia, l'eseguibile sta ancora chiedendo dipendenza dalla libreria 'vector', anche se l'unico che lo usa sono gli algoritmi che ora sono incapsulati nella libreria. Qualche idea? –

+2

Gratta che. Questo [Q & A] (http://stackoverflow.com/questions/10163604/how-to-reduce-duplication-in-the-build-depends-fields-of-a-cabal-file) sembra rispondere alla mia domanda. –

2

Dopo un po 'di più ritocco, ecco quello che ho ottenuto, per completezza:

-- Initial HaskSplit.cabal generated by cabal init. For further 
-- documentation, see http://haskell.org/cabal/users-guide/ 

name:    HaskSplit 
version:    0.1.0.0 
synopsis:   Haskell Implementation of Shamir's Secret Sharing Scheme 
-- description:   
license:    MIT 
license-file:  LICENSE 
author:    
maintainer:   
-- copyright:   
category:   Security 
build-type:   Simple 
-- extra-source-files: 
cabal-version:  >=1.10 

executable HaskSplit 
    main-is:    Main.hs 
    default-language: Haskell2010 
    -- other-modules:  
    other-extensions: RankNTypes 
    build-depends:  base >=4.6 && <4.7, 
         resourcet >=1.1 && <1.2, 
         bytestring >=0.10 && <0.11, 
         conduit-extra >=1.1 && <1.2, 
         conduit >=1.1 && <1.2, 
         conduit-combinators >=0.2 && <0.3, 
         mono-traversable >=0.5 && <0.6, 
         safe >=0.3 && <0.4, 
         transformers >=0.3 && <0.4, 
         filepath >= 1.3, 
         directory >=1.2, 
         Glob >= 0.7.4, 
         errors >= 1.4, 
         optparse-applicative >= 0.8, 
         random == 1.*, 
         HaskSplit 
    hs-source-dirs:  src/exe 
    default-language: Haskell2010 
    ghc-options:   -Wall -fno-warn-orphans 

library 
    Exposed-modules:  HaskSplit.Algorithm, 
         HaskSplit.Util, 
         FiniteField.GF256, 
         FiniteField.PGF256 
    default-language: Haskell2010 
    hs-source-dirs:  src/lib 
    build-depends:  base >=4.6 && <4.7, 
         vector >=0.10 && <0.11, 
         random == 1.* 

test-suite tests 
    type:    exitcode-stdio-1.0 
    default-language: Haskell2010 
    hs-source-dirs:  tests 
    main-is:    Test.hs 
    other-extensions: TemplateHaskell 
    ghc-options:   -Wall -fno-warn-orphans 
    build-depends:  base == 4.*, 
         QuickCheck >=2.6 && <2.7, 
         test-framework-quickcheck2 >= 0.3.0.3, 
         HaskSplit 
Problemi correlati