Nano Hash - криптовалюты, майнинг, программирование

Разница между пакетом исходного репозитория и локальным репозиторием без индекса в Cabal

Я знаю, что могу добавить локальный пакет в cabal, указав его в packages: раздел cabal.project файл. Самый простой пример, который делает проект из одного локального пакета, это packages: ..

В cabal.project я также могу добавить эти две вещи:

Кажется, что они оба позволяют мне добавлять пакеты в проект. В чем разница между ними?

(Примечание: этот вопрос не связан с одноименным source-repository:, в котором просто указано, какой репозиторий связан с исходным кодом пакета.)

12.01.2021

Ответы:


1

Только source-repository-package на самом деле добавляет локальный пакет в ваш проект. Он ведет себя почти так же, как список исходной папки пакета в packages:, за исключением того, что исходный код загружается по мере необходимости. В частности, он будет повторно загружен при запуске cabal build после cabal clean.

Поскольку это локальный пакет в вашем проекте, другие проекты клики не знают о нем. Добавление его в другие локальные проекты требует повторной компиляции.


Между тем, локальные репозитории пакетов без индекса являются репозиториями в смысле Hackage или Stackage, только в локальной файловой системе. Их можно указать как в файле cabal.project отдельного проекта, так и в глобальной конфигурации клики (~/.cabal/config).

Пакеты, найденные в этих репозиториях, не считаются локальными пакетами проекта. Их библиотеки компилируются один раз и совместно используются всеми проектами, которые знают о репозитории пакетов (это будут все проекты, если репозиторий указан в ~/.cabal/config). И cabal build после cabal clean не вызовет перекомпиляции.

12.01.2021
  • При работе с локальными репозиториями без индекса нам может понадобиться использовать поле active-repositories: для управления их относительным приоритетом по отношению к взлому cabal.readthedocs.io/en/3.4/ Также важно удалить сгенерированный файл кэша внутри репозитория после добавления .tar.gz нового пакета, иначе он не будет виден проектам. 12.01.2021
  • Ситуация могла измениться с помощью cabal-install 3.4, скомпилированные записи исходного репозитория-пакета, используемые в разных проектах, хранятся в глобальном хранилище в стиле nix. github.com/haskell/cabal/issues/5586 github.com/haskell/cabal/pull/6915 github.com/haskell/cabal/pull/6917 21.02.2021
  • Новые материалы

    Кластеризация: более глубокий взгляд
    Кластеризация — это метод обучения без учителя, в котором мы пытаемся найти группы в наборе данных на основе некоторых известных или неизвестных свойств, которые могут существовать. Независимо от..

    Как написать эффективное резюме
    Предложения по дизайну и макету, чтобы представить себя профессионально Вам не позвонили на собеседование после того, как вы несколько раз подали заявку на работу своей мечты? У вас может..

    Частный метод Python: улучшение инкапсуляции и безопасности
    Введение Python — универсальный и мощный язык программирования, известный своей простотой и удобством использования. Одной из ключевых особенностей, отличающих Python от других языков, является..

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

    Работа с векторными символическими архитектурами, часть 4 (искусственный интеллект)
    Hyperseed: неконтролируемое обучение с векторными символическими архитектурами (arXiv) Автор: Евгений Осипов , Сачин Кахавала , Диланта Хапутантри , Тимал Кемпития , Дасвин Де Сильва ,..

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

    Обеспечение масштабируемости LLM: облачный анализ с помощью AWS Fargate и Copilot
    В динамичной области искусственного интеллекта все большее распространение получают модели больших языков (LLM). Они жизненно важны для различных приложений, таких как интеллектуальные..