2012-05-17 12 views
9

Dado un proyecto de Haskell, ¿hay alguna forma de calcular automáticamente toda la lista de dependencias? Todas las bibliotecas de las que depende, así como las bibliotecas que se han incluido pero que no son obligatorias.Dependencias de lista automática para un proyecto

+0

Cabal trata de averiguar las dependencias cuando ejecuta 'cabal init'. ¿Es ese el tipo de funcionalidad en la que estabas pensando? –

+0

¿En qué etapa? Usé el cabal init y no descubrió ninguna dependencia. –

+1

¿Qué etapa? La etapa donde has escrito un código y estás listo para cabalizar tu proyecto (crea un archivo .cabal). Una versión suficientemente nueva de cabal leerá los módulos y tratará de inferir las dependencias. –

Respuesta

8

Como dije en los comentarios, cabal-install ya lo hace (estoy utilizando cabal-install 0.14.0) adivinando los paquetes a través de la búsqueda de módulos (como GHCi). No tiene ninguna inteligencia real w.r.t. versiones por lo que simplemente establece la versión de la versión principal de lo que ha instalado.

A continuación puede verme haciendo un paquete ficticio que importa Data.Vector y cabal-install infers Estoy usando el vector 0.9. *.

[[email protected] blah]$ pwd 
/tmp/blah 
[[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

Estoy usando 'cabal-install version 0.10.2'. Esa es la versión que se incluye con la plataforma Haskell, así que supongo que esta es una funcionalidad reciente. –

+0

@VladtheImpala Supongo que necesita la última versión 0.14.0. Incluye varias mejoras 'cabal init '. –

Cuestiones relacionadas