Песочница Кабала со штабелем

Я хочу, чтобы моя глобальная конфигурация Cabal использовала только LTS для стека.

Предоставляет ли песочница Cabal какую-либо ценность в этом случае?

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

Есть ли способ предварительно собрать все стековые пакеты LTS, чтобы ускорить все будущие сборки проекта?

1 ответ

Решение

Почему песочницы?

Я думаю, что использование песочниц все еще имеет преимущества:

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

  • У песочниц есть и другое применение, кроме предотвращения ада клики. Другое их основное использование - возможность добавлять локальные каталоги в качестве источников пакетов. Например, предположим, что вы проверили два пакета на вашем локальном диске ~/code/a а также ~/code/b и давайте скажем, что b зависит от a, Если вы хотите проверить это b работает с некоторыми изменениями, которые вы внесли в a Вы можете добавить свой местный a оформить заказ как источник bпесочница клики.

    cd ~/code/b
    cabal sandbox add-source ~/code/a
    cabal build
    

Готовые пакеты LTS

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

cat cabal.config | sed -rn 's/^.* ([^ ]+) ==.*/\1/gp' | xargs cabal install
Другие вопросы по тегам