2014-02-12 2 views
1

Когда я создаю проект 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 библиотека построена с нуля под моим песочница.

+0

Я просто попробовал 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

+0

Хм, возможно, мне нужно попробовать его на новой кабале. Mine is 'cabal -version':' cabal-install version 1.18.0.2, используя версию 1.18.1.1 библиотеки Cabal'. Или это какой-то конфликт с установочной версией. :( – Nurpax

+0

@ Toxaris: Вы сделали 'cabal clean 'между первой« сборкой cabal »и вторым« cabal sandbox init && cabal build »? Если это сработает для вас, как насчет клонирования gist, а затем непосредственно с помощью' cabal sandbox init && cabal build'? Я понимаю, что в моих инструкциях не упоминалась часть о чистых сборках. Я отредактирую сообщение, чтобы включить эту информацию. – Nurpax

ответ

0

Согласно cabal-install bug #1695, в настоящее время этот элемент не поддерживается. Это может быть в конечном итоге построено, см. multi-instance packages для получения дополнительной информации.

Если кто-то читает и заботится, альтернатива, которая должна работать для некоторых пользователей, заключалась бы в том, чтобы разделить одну изолированную песочницу из нескольких проектов. Таким образом, вы все равно можете сохранить свою установку платформы Haskell отдельно от установки библиотеки, которая вам нужна во время разработки. Еще об этом в An Introduction to Cabal sandboxes

Смежные вопросы