Как создать изолированный проект клики с пользовательской версией зависимости, которая не является хакерской (например, проверка из github)

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

Песочница

В случае, если это имеет значение или усложняет ситуацию, приложение находится в изолированной программной среде клики с файлом cabal-sandbox-config в каталоге маршрута приложения.

Чего я пытаюсь добиться

Я создаю приложение Yesod и хочу настроить поведение одной из зависимостей (шекспир). Я хотел бы создать свое приложение для моей измененной версии.


person Gareth Charnock    schedule 28.09.2014    source источник


Ответы (2)


Используйте cabal sandbox add-source, который разработан специально для этого варианта использования.

Пример:

$ git clone https://github.com/SomeUser/SomeDependency
$ cd /path/to/my-project
$ cabal sandbox add-source /path/to/SomeDependency
$ cabal build

В качестве бонуса, если вы позже обновите SomeDependency и попытаетесь пересобрать my-project, cabal заметит это и переустановит SomeDependency.

person Mikhail Glushenkov    schedule 28.09.2014

Вариант 1:

Вы можете просто клонировать проект, а затем запустить установку клики в клонированном каталоге. git clone https://github.com/yesodweb/shakespeare.git

Это даст вам каталог shakespeare, который будет содержать файл .cabal.

Так что просто войдите в каталог и запустите файл cabal install. Это установит shakespeare. Теперь продолжайте установку вашего проекта.

Ключевой момент:

Вам нужно сначала установить шекспир самостоятельно, чтобы при компиляции вашего собственного проекта ghc или cabal не пытались установить зависимость от шекспира (по умолчанию от hackage) самостоятельно.

Вариант 2:

  • Установите hackage-сервер
  • Загрузите копию шекспира (ваша измененная версия) на свой локальный хакер
  • Отредактируйте конфигурацию клики, чтобы сделать локальный взлом более приоритетным, чем haskell-hackage.

удаленное хранилище: hackage.haskell.org:http://hackage.haskell.org/packages/archive

удаленный репозиторий: local.hackage:http://local.hackage/packages/archive< /эм>

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

person iamnat    schedule 28.09.2014