Когда я создаю проект Cabal без песочницы, Cabal использует существующие библиотеки из моей установки платформы Haskell. Однако, если я попытаюсь сделать то же самое в песочнице Cabal, Cabal принудительно перестроит все мои зависимости в песочницу.Повторное использование готовых библиотек платформы Haskell в изолированной песочнице cabal?
Чтобы сохранить время сборки и место на диске, было бы здорово дать указание Cabal использовать существующие библиотеки платформ Haskell вместо их пересоздания. Это возможно?
Пример (files in a gist):
executable blog
hs-source-dirs: .
main-is: Test.hs
build-depends: base >= 4.5 && < 5
, text
Если я cabal build
в каталог, содержащий этот файл .cabal
, мой Test
модуль будет построен на версии Haskell Platform от text
.
Однако, если я делаю то же самое в песочнице:
cabal clean # (or alternatively clone an empty gist)
cabal sandbox init
cabal build
я получаю это:
$ cabal build
Package has never been configured. Configuring with default flags. If this
fails, please run configure manually.
Resolving dependencies...
Configuring install-test-0.1...
cabal: At least the following dependencies are missing:
text -any
Если я теперь пойти и cabal install
, последняя text
библиотека построена с нуля под моим песочница.
Я просто попробовал git clone https://gist.github.com/8964143.git && cd 8964143 && cabal sandbox init && cabal run', и это сработало для меня без перекомпиляции зависимостей. cabal-install 1.18.0.2 с Cabal 1.18.1.2 на Windows. – Toxaris
Хм, возможно, мне нужно попробовать его на новой кабале. Mine is 'cabal -version':' cabal-install version 1.18.0.2, используя версию 1.18.1.1 библиотеки Cabal'. Или это какой-то конфликт с установочной версией. :( – Nurpax
@ Toxaris: Вы сделали 'cabal clean 'между первой« сборкой cabal »и вторым« cabal sandbox init && cabal build »? Если это сработает для вас, как насчет клонирования gist, а затем непосредственно с помощью' cabal sandbox init && cabal build'? Я понимаю, что в моих инструкциях не упоминалась часть о чистых сборках. Я отредактирую сообщение, чтобы включить эту информацию. – Nurpax