2012-05-17 15 views
9

Dato un progetto di Haskell, c'è un modo per calcolare automaticamente l'intero elenco delle dipendenze? Tutte le librerie da cui dipende e le librerie che sono state incluse ma non sono richieste.automaticamente List dipendenze per un progetto

+0

Cabal prova a capire le dipendenze quando si esegue 'cabal init'. È questo il tipo di funzionalità a cui stavi pensando? –

+0

In quale fase? Ho usato la cabal init e non ho trovato alcuna dipendenza. –

+1

Che stage? La fase in cui hai scritto del codice e sei pronto per cabalizzare il tuo progetto (crea un file .cabal). Una versione sufficientemente nuova di cabal leggerà i moduli e cercherà di dedurre le dipendenze. –

risposta

8

Come ho detto nei commenti, cabal-install lo fa già (sto usando cabal-install 0.14.0) indovinando i pacchetti tramite la ricerca del modulo (come GHCi). Non ha alcuna vera intelligenza w.r.t. versioni quindi imposta semplicemente la versione sulla versione principale della corrispondenza di ciò che è stato installato.

Qui sotto puoi vedere un pacchetto fittizio che importa Data.Vector e infalli di installazione di cabine sto usando il vettore 0.9. *.

[[email protected] blah]$ pwd 
/tmp/blah 
[tom[email protected] blah]$ cat Data/Blah.hs 
module Data.Blah where 

import Data.Vector 
[[email protected] blah]$ cabal init 
Package name? [default: blah] 
...SNIP... 
What does the package build: 
    1) Library 
    2) Executable 
Your choice? 1 
Include documentation on what each field means (y/n)? [default: n] 

Guessing dependencies...   <--- SEE, SEE! YAY! 

Generating LICENSE... 
Warning: unknown license type, you must put a copy in LICENSE yourself. 
Generating Setup.hs... 
Generating blah.cabal... 

You may want to edit the .cabal file and add a Description field. 
[[email protected] blah]$ cat blah.cabal 
-- Initial blah.cabal generated by cabal init. For further documentation, 
-- see http://haskell.org/cabal/users-guide/ 

name:    blah 
version:    0.1.0.0 
synopsis:   Sisponys 
-- description:   
-- license:    
license-file:  LICENSE 
author:    Me 
maintainer:   [email protected] 
-- copyright:   
-- category:    
build-type:   Simple 
cabal-version:  >=1.8 

library 
    exposed-modules:  Data.Blah 
    -- other-modules:  
    build-depends:  base ==4.5.*, vector ==0.9.* <-- SEE?? SEE! YIPPEE!! 
+0

Sto usando 'cabal-install versione 0.10.2'. Questa è la versione che viene fornita in bundle con la piattaforma Haskell, quindi immagino che questa sia una funzionalità recente. –

+0

@VladtheImpala Suppongo che tu abbia bisogno dell'ultima versione 0.14.0. Include vari miglioramenti di 'cabal init'. –

Problemi correlati