Требую показательный брифинг на тему кабала, кабал-дева и юзания ебилдов из haskell-overlay.
Вот, допустим, стандартная ситуация для среднего юзера вышеупомянутого оверлея.
$> cabal-dev install
Resolving dependencies...
cabal: Could not resolve dependencies:
trying: loh-0.0.0 (user goal)
trying: hslogger-1.2.0/installed-677... (dependency of loh-0.0.0)
trying: unordered-containers-0.2.2.0/installed-ae8... (dependency of
loh-0.0.0)
next goal: time (dependency of loh-0.0.0)
rejecting: time-1.4.0.1/installed-c2f... (conflict: unordered-containers =>
deepseq==1.3.0.1/installed-4c6..., time => deepseq==1.3.0.0/installed-c26...)
rejecting: time-1.4/installed-d61..., 1.4.0.1, 1.4, 1.3, 1.2.0.5, 1.2.0.4,
1.2.0.3, 1.2.0.2, 1.2.0.1, 1.2, 1.1.4, 1.1.3, 1.1.2.4, 1.1.2.3, 1.1.2.2,
1.1.2.1, 1.1.2.0, 1.0 (conflict: hslogger => time==1.4.0.1/installed-c2f...)
Почему-то deepseq вдруг стал 1.3.0.1, а зачем? Ах, точно же, это обычный дипсек, только подкостыленный для ghc-7.6.
Вопрос 1: почему пакетики для гхц-7.6 уже в оверлее, если самого гхц-7.6 ещё нет?
Ну ок, допустим я догадался, что дело в дипсеке, даунгрейднул его до 1.3.0.0, пересобрал 59 пакетов от него зависящих и вроде всё заработало.
Вопрос 2: а чего вдруг кабал-дев смотрит на глобальные пакеты, их версии и зависимости? Если я правильно понимаю суть кабал-дева, он должен быть наставить недостающих пакетиков в локальный энвайронмент и юзать их оттуда.
Уважаемые знатоки ( qnikst), расскажите, в чём вообще разница между кабалом и кабал-девом в случае использования пакетиков из оверлея?
Я бы ещё спросил, как сделать рабочее окружение вокруг, например, ghc-7.0.4 при политике удаления старых ебилдиков в оверлее, но это уже, наверное, перебор.