Песочница Кабала со штабелем
Я хочу, чтобы моя глобальная конфигурация 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