2012-05-17 4 views
9

Учитывая проект Haskell, есть способ автоматически вычислить весь список зависимостей? Все библиотеки, от которых он зависит, а также библиотеки, которые были включены, но не требуются.Зависимости автоматического отображения для проекта

+0

Cabal пытается выяснить зависимости при запуске 'cabal init'. Это какая-то функциональность, о которой вы думали? –

+0

На какой стадии? Я использовал init init, и он не нашел никаких зависимостей. –

+1

Какой этап? На сцене, где вы написали код и готовы к каскадированию проекта (создайте файл .cabal). Достаточно новая версия cabal будет читать модули и попытаться вывести зависимости. –

ответ

8

Как я уже сказал в комментариях, cabal-install уже делает это (я использую cabal-install 0.14.0), угадывая пакеты через модульный поиск (например, GHCi). У него нет никакого реального интеллекта w.r.t. версии, поэтому он просто устанавливает версию в соответствие с основной версией того, что вы установили.

Ниже вы можете увидеть, как я делаю фиктивный пакет, который импортирует Data.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

Я использую 'cabal-install version 0.10.2'. Это версия, которая поставляется в комплекте с платформой Haskell, поэтому я думаю, что это недавняя функциональность. –

+0

@ VladtheImpala Думаю, вам нужен последний выпуск 0.14.0. Он включает в себя различные усовершенствования 'cabal init'. –

Смежные вопросы