Обновите зависимости пакетов с помощью Cabal - PullRequest
0 голосов
/ 06 июня 2018

У меня есть скрипт , который развертывает программу на Haskell один раз в день.В настоящее время он выполняет:

cabal update
cabal install --only-dependencies
cabal configure
cabal build

, что гарантирует наличие последнего списка индексов пакетов, обновляет все зависимости, нижняя граница которых в project.cabal изменилась, и создает код.

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

  • Я пытался добавить --upgrade-dependencies, но он отказался обновить что-либо, потому что это сломало бы существующие пакеты.
  • Я попытался объединить это с --force-reinstalls, но он установил новую версию template-haskell (не очень хорошая идея), и такие вещи, как QuickCheck, больше не будут компилироваться.

Как правильнообновить пакеты автоматически?

Ответы [ 2 ]

0 голосов
/ 07 июня 2018

Обновление до Cabal 2.0.0.0 или выше.

С Cabal 2.0.0.0 он больше не обновляет template-haskell, согласно история изменений :

  • Сделал пакет 'template-haskell' не подлежащим обновлению ( # 4185 ).

Так что --upgrade-dependencies --force-reinstalls работает с более новыми версиями.

0 голосов
/ 06 июня 2018

Вы можете использовать cabal new-build и, если вы хотите обновить только большинство зависимостей, затем заморозить те немногие, которые вы хотите сохранить постоянными, в файле cabal.project.freeze.

cat <<EOF >cabal.project.freeze
constraints: template-haskell == 2.13.0.0
EOF

А

cabal update
# Perhaps rm -rf dist-newstyle if you want a completely fresh build
cabal new-build --upgrade-dependencies
...