Исключен ли пакет из Stackage LTS из-за пропущенной зависимости?

Я немного озадачен тем, как влияет зависимость от пакета, включая его в Stackage LTS; в частности, если

должен ли пакет А быть исключен из LTS-XY, особенно если

2 ответа

Решение

Я скопирую / вставлю свой ответ на github


пакет А должен быть исключен?

Нет, это не должно быть исключено. Вот почему:

даже если исключена только одна причина B, это зависимость от набора тестов

В этом случае мы можем добавить B к плану сборки и отметить его под skipped-tests раздел, чтобы избежать вытягивания в его зависимости набора тестов. Это верно как для LTS, так и для ночных снимков.

(Тем не менее, предпочтительным вариантом действий будет устранение проблемы зависимости B, чтобы можно было запустить набор тестов.)


Чтобы уточнить, в ответ на ответ @bergey:

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

Это верно только для пакетов, включенных явно. Некоторые пакеты являются транзитивными зависимостями, которые включены неявно и не обязательно соответствуют таким строгим стандартам. (Однако в будущем мы можем исключить концепцию неявного включения и вместо этого включать все пакеты явно.)

Исключения также могут быть сделаны для включения пакета, даже если его набор тестов или его тесты имеют несовместимые ограничения зависимостей с snapsnot.

Конечно, предпочтительный способ - не делать таких исключений, и мы призываем всех сопровождающих поддерживать все свои цели сборки в актуальном состоянии.

Наконец, позвольте мне отметить, что этот вопрос, вероятно, был бы более подходящим для списка рассылки стека, который, по общему признанию, недостаточно хорошо опубликован или использован.

Да, для каждого пакета в данном снимке стека все его переходные зависимости также находятся в снимке. Кроме того, пакеты включаются только в том случае, если сопровождающий пакета согласен обновлять его в зависимости от его зависимостей. Подробнее об этом читайте в README на github. Выдержка:

  • Все пакеты являются сборочными и тестируемыми из Hackage. Мы рекомендуем скрипт Stack Travis, который гарантирует, что пакет не будет случайно неполным.
  • Все пакеты совместимы с новейшими версиями всех зависимостей (Вы можете найти ограничительные верхние границы, посетив http://packdeps.haskellers.com/feed?needle=PACKAGENAME).
  • Все пакеты в снимке совместимы с версиями библиотек, которые поставляются с GHC, используемым в снимке (дополнительная информация о мягких нижних границах).
Другие вопросы по тегам