2012-03-12 1 views
4

Это на самом деле следующий вопрос: How can I tell Cabal which dependency to use?.Как я могу указать cabal указать зависимость для одной из зависимостей моей программы?

Пакет haskell-src-meta имеет две зависимости:

template-haskell >=2.7 && <2.9, 
template-haskell >=2.4 && <2.7 

и template-haskell 2.7 не будет строить на моей системе. Я знаю, что решение это:

cabal install --constraint="template-haskell == 2.5.0.0" haskell-src-meta 

Однако, теперь я хочу, чтобы написать свой собственный файл междусобойчик для программного обеспечения я написал, что есть эта зависимость. Это, кажется, не достаточно иметь:

Build-depends: template-haskell-2.5.0.0 

Вместо этого, я на самом деле хочу сказать, что haskell-src-meta является построить зависимость, но дальше сказать междусобойчик, что он должен установить эту зависимость с той же constraint указанной выше. Есть ли способ сделать это?

ответ

1

Возможно, «установленное» ограничение - это то, что вы хотите.

cabal install --constraint "template-haskell installed" my-custom-package 
+0

Возможно, хотя стыдно, что нужно пропустить это для всех (воображаемых) пользователей, которые устанавливают мое программное обеспечение. Я бы предпочел, чтобы они только набрали 'cabal install my-app' и могли испечь эту зависимость' template-haskell' в моем файле cabal. –

+1

@NoahDaniels Hm. Вы хотите, чтобы другие люди использовали 'template-haskell-2.5.0.0', потому что другие версии' template-haskell' не будут создаваться на вашем компьютере? Это похоже на плохую идею, поскольку люди должны использовать версию 'template-haskell', которая поставляется вместе со своим компилятором, а не пытаться создать другую версию. –

+0

Похоже, что версии 'template-haskell' являются зависимыми от версии' ghc'. То, что я в идеале хотел бы сделать, это версия карты 'ghc' для соответствующей версии' template-haskell' и решить эту проблему. –