Какая связь между ghc-pkg и cabal?

Что касается создания, установки и использования пакетов в Haskell, какова взаимосвязь между ghc-pkg и cabal?

Каковы их роли - когда вы бы использовали одно, другое или оба?

Являются ли они дополнительными инструментами, инструментами конкурентоспособности или просто инструментами, выполняющими разные задачи?


person Ben Lever    schedule 25.04.2010    source источник


Ответы (2)


Графически зависимости таковы:

Packages GHC can use
    | 
Are registered with "ghc-pkg register"
    |
And (almost always) built with Cabal
    |
With build dependencies resolved by cabal-install
    |
From Hackage.
person Don Stewart    schedule 25.04.2010
comment
Верно ли тогда, что любой пакет, регистрируемый с помощью ghc-pkg, должен быть собран с помощью Cabal? - person Norman Ramsey; 25.04.2010
comment
Нет, это не так. В старые добрые времена не было Cabal, и мы регистрировали все наши пакеты с помощью make. Скриптов "make register" было предостаточно. См. ghc-pkg register - person Don Stewart; 25.04.2010

ghc-pkg - это прямой интерфейс. в базу данных пакетов GHC. Cabal - это инструмент, который обеспечивает согласованную структуру распространения для пакетов и способ указать метаданные, такие как зависимости между пакетами, номера версий и информацию о сборке.

Использование Cabal для установки пакета зарегистрирует его для вас в ghc (среди прочего), но на самом деле это степень совпадения.

Обратите внимание, что ghc-pkg также предоставляет функции, которых (насколько мне известно) Cabal не предоставляет, например, скрытие установленных пакетов.

person C. A. McCann    schedule 25.04.2010