Что такое лучшие практики для управления связанными пакетами Интриги?

Я работаю над основанной на потоке данных библиотекой оптимизации, записанной в Haskell. Теперь кажется вероятным, что библиотека оказывается перед необходимостью быть разделенной на две части:

  • Базовая часть с минимальными зависимостями от сборки; назовите его hoopl-core.

  • Полная часть, назовите его hoopl, который может иметь дополнительные зависимости от пакетов как prettyprinter, QuickCheck, и так далее.

Идея состоит в том, что Компилятор Haskell Глазго будет зависеть только от hoopl-core, так, чтобы не было слишком трудно загрузить компилятор. Другие компиляторы приведут дополнительных положительных героев hoopl. Пакет hoopl будет зависеть от hoopl-core.

Инструменты пакета Debian могут создать несколько пакетов из единственного исходного дерева. К сожалению, Интрига еще не достигла того уровня изощренности. Но должна быть другая библиотека или разработчики приложений там, у которых есть подобные проблемы (например, один пакет для оперативной библиотеки, другой для интерфейса командной строки, другой для графического интерфейса).

Что такое текущие лучшие практики для создания, и управление несколькими связало пакеты Haskell с помощью Интриги?

5
задан Norman Ramsey 13 April 2010 в 02:37
поделиться

2 ответа

Я бы поместил два пакета в отдельные подкаталоги и получил бы Makefile примерно так:

.PHONY: all hoopl hoop-core
all : hoopl

hoopl : hoopl-core
       cd hoopl && cabal build && cabal register --inplace

hoopl-core
       cd hoopl-core && cabal build && cabal register --inplace

это предполагает, что вы загрузили процесс, сначала построив hoopl-core и зарегистрировав его ( - на месте ), а затем строит хуп . Вы можете автоматизировать больше этого, используя Makefile.

Как вы знаете, когда нам понадобилась аналогичная функциональность для GHC, мы вместо этого написали нашу собственную систему сборки ;-) Я этого не рекомендую. Технически я полагаю, что можно было бы извлечь из системы сборки GHC необходимые части и создать повторно используемый фреймворк, хотя ...

3
ответ дан 14 December 2019 в 19:07
поделиться

Поместите два пакета в отдельные подкаталоги репозитория системы управления версиями и используйте два отдельных файла cabal.

Убедитесь, что вы используете операцию перемещения вашей системы управления версиями при перемещении файлов, чтобы она правильно отслеживала историю.

2
ответ дан 14 December 2019 в 19:07
поделиться
Другие вопросы по тегам:

Похожие вопросы: