Повторное использование готовых библиотек Haskell Platform в изолированной программной среде клики?

Когда я создаю проект Cabal без песочницы, Cabal использует существующие библиотеки из моей установки Haskell Platform. Однако, если я попытаюсь сделать то же самое в песочнице Cabal, Cabal принудительно перестроит все мои зависимости в песочнице.

Чтобы сэкономить время сборки и дисковое пространство, было бы здорово иметь возможность указать Cabal использовать существующие библиотеки платформы Haskell вместо их пересборки. Это возможно?

Пример (файлы в сущности):

executable blog
  hs-source-dirs:    .
  main-is:           Test.hs
  build-depends:     base >= 4.5 && < 5
                   , text

Если я cabal build в каталоге, содержащем этот .cabal файл, мой Test модуль будет собран для платформы Haskell версии 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 библиотека будет построена с нуля под моей песочницей.


person Nurpax    schedule 12.02.2014    source источник
comment
Я только что попробовал 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.   -  person Toxaris    schedule 13.02.2014
comment
Хм, возможно, мне нужно попробовать это на более новой клике. Мой cabal --version: cabal-install version 1.18.0.2, using version 1.18.1.1 of the Cabal library. Или это какой-то конфликт версий установки. :(   -  person Nurpax    schedule 13.02.2014
comment
@Toxaris: Вы сделали cabal clean между первым cabal build и вторым cabal sandbox init && cabal build? Если это работает для вас, как насчет клонирования сути, а затем непосредственного выполнения cabal sandbox init && cabal build? Я понимаю, что в моих инструкциях не упоминалась часть о чистых сборках. Я отредактирую свой пост, чтобы включить эту информацию.   -  person Nurpax    schedule 20.02.2014
comment
Я буквально выполнил командную строку из моего комментария, так что да, я клонировал суть, а затем напрямую сделал cabal sandbox init. Теперь я также попробовал git clone https://gist.github.com/8964143.git && cd 8964143 && cabal build && cabal sandbox init && cabal run, а также git clone https://gist.github.com/8964143.git && cd 8964143 && cabal build && cabal sandbox init && cabal run. Все они выполняют некоторую настройку и компиляцию, а затем выводят приветствие.   -  person Toxaris    schedule 20.02.2014
comment
Я думаю, что в обоих случаях вы получаете остатки от cabal build, что означает, что сборка в песочнице ничего не делает. Можешь попробовать git clone https://gist.github.com/8964143.git && cd 8964143 && cabal sandbox init && cabal run - не должно работать. Извините за это туда и обратно.   -  person Nurpax    schedule 20.02.2014
comment
Это именно та команда, которую я запускал 12 февраля, она работала тогда и работает до сих пор. Я пишу более подробную информацию о проблеме клики, которую вы открыли.   -  person Toxaris    schedule 20.02.2014
comment
О, действительно было. Спасибо за комментарий к проблеме с github!   -  person Nurpax    schedule 20.02.2014


Ответы (1)


Согласно ошибке Cabal-установки № 1695, в настоящее время это не поддерживается. Это то, что в конечном итоге может быть создано, см. пакеты с несколькими экземплярами Чтобы получить больше информации.

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

person Nurpax    schedule 19.02.2014