2014-05-22 8 views
8

मैं अपने .cabal विन्यास में अपने प्रोजेक्ट, HaskSplit के लिए टेस्ट स्वीट बनाने का प्रयास कर रहा हूं "-package-आईडी संतुष्ट नहीं कर सकते":के दौरान त्रुटि परीक्षण स्वीट बनाने:

-- 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 

एक उदाहरण परीक्षण को देखते हुए सुइट सेटअप here, मैंने देखा कि वे बिल्ड-निर्भर मॉड्यूल में से एक के रूप में अपना खुद का पैकेज निर्दिष्ट कर रहे हैं। इसलिए मैंने वही किया, ताकि मैं अपने टेस्ट-सूट शॉर्ट के लिए अपनी build-depends सूची रख सकूं।

हालांकि जब मैं कमांडलाइन में cabal repl test:tests कोशिश, मैं निम्न त्रुटि हो रही है:

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

मैं भी यकीन है कि मैं यहाँ क्या याद कर रहा हूँ नहीं कर रहा हूँ, किसी को भी मेरी मदद कर सकते हैं? क्या यह चक्रीय निर्भरता यहां हो रही है? या क्या मुझे बिल्ड के लिए अपने पैकेज का लाइब्रेरी उदाहरण बनाने की ज़रूरत है-काम पर निर्भर करता है?

धन्यवाद!

+1

'निर्माण निर्भर करता है: HaskSplit'' HaskSplit', नाम के एक पुस्तकालय जो मौजूद नहीं है को दर्शाता है। एक तरफ के रूप में, आपके पैकेज पर सीमाएं बहुत तंग हैं। – user2407038

उत्तर

8

build-depends अनुभाग में केवल लाइब्रेरी, मॉड्यूल नहीं हो सकते हैं। मेरा सुझाव है कि आप अपनी कैबेल फ़ाइल में लाइब्रेरी जोड़ें। लाइब्रेरी के exposed-modules अनुभाग में उन सभी मॉड्यूल सूचीबद्ध होना चाहिए जिन्हें आपके परीक्षण (या लाइब्रेरी के किसी अन्य उपयोगकर्ता) को संदर्भित करने की आवश्यकता हो सकती है।

लाइब्रेरी बनाने के विकल्प के रूप में, आप केवल परीक्षण-सूट अनुभाग के अन्य मॉड्यूल भाग में आवश्यक मॉड्यूल जोड़ सकते हैं। यदि आप बहुत सारे मॉड्यूल शामिल करना चाहते हैं, हालांकि, मुझे लगता है कि लाइब्रेरी दृष्टिकोण अच्छा है।

+1

उसके लिए चीयर्स। पुस्तकालय जोड़ा गया है और यह ठीक से निर्माण लगता है। हालांकि, निष्पादन योग्य अभी भी 'वेक्टर' लाइब्रेरी पर निर्भरता मांग रहा है, भले ही इसका उपयोग करने वाला एकमात्र एल्गोरिदम है जो अब लाइब्रेरी में encapsulated हैं। कोई विचार? –

+2

स्क्रैच करें कि। यह [क्यू एंड ए] (http://stackoverflow.com/questions/10163604/how-to-reduce-duplication-in-the-build-depends-fields-of-a-cabal-file) मेरे प्रश्न का उत्तर देने लगता है। –

2

कुछ और फेरबदल के बाद, यहाँ मैं क्या मिला है, पूर्णता के लिए है:

-- 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 
संबंधित मुद्दे