как избежать повторной компиляции пакетов в extra-deps

У меня есть проект, состоящий из нескольких пакетов в дереве каталогов. Если я изменяю один из пакетов, то стек обычно автоматически перекомпилирует пакеты, которые зависят от измененного (иногда автоматизм дает сбой, и я не знаю, когда, но это не является предметом вопроса).

во время перекомпиляции я часто вижу перекомпиляцию всех пакетов, перечисленных как дополнительные пакеты. они не изменились, и перекомпиляция не требуется (но занимает много времени). Я понимаю, что есть какой-то механизм для компиляции таких зависимостей только один раз (пока они не меняются) и для повторного использования. Однажды я увидел сообщение из стека о том, что какая-то предыдущая компиляция пакета была повторно использована, что указывает на это кэширование.

меня попросили в комментарии предоставить stack.yaml в каталоге проекта (я пробовал также с такими записями, как

- location: /home/frank/Workspace8/repo8/litMain
  extra-dep: true

но разницы не увидел)

flags: {}
extra-package-dbs: []
packages:
- litMain      
- rdf4store    
- rdfhextension    
- uniform/uniform-strings    
- uniform/uniform-error     
- uniform/uniform-algebras      
- uniform/uniform-convenience       
- uniform/uniform-fileio       
- uniform/uniform-time       
extra-deps:
- chatter-0.8.0.1
- data-easy-0.7.0
- fullstop-0.1.4
- hgal-2.0.0.2
- non-negative-0.1.1
- numeric-prelude-0.4.2
- rdf4h-3.0.1
- test-invariant-0.4.5.0
- tokenize-0.3.0
resolver: lts-8.2

Как вообще добиться повторного использования ранее скомпилированных и не измененных экстра-депов?

Я пробовал строить, строить --dependencies-only и строить --snapshot, но безуспешно. Все зависимости перестроены... я не смог найти больше информации в документации.

Полезные комментарии заставили меня переосмыслить и отредактировать вопрос. Я надеюсь, что проблема теперь лучше раскрыта. Спасибо за помощь!


person user855443    schedule 23.03.2017    source источник
comment
У вас несколько пакетов в одном проекте или несколько проектов (и несколько stack.yaml)?   -  person sjakobi    schedule 23.03.2017
comment
Может быть, покажите нам очертания ваших stack.yaml(ов)?!   -  person sjakobi    schedule 23.03.2017
comment
stack.yaml редактируется в вопросе. я также нашел информацию, которая, возможно, уместна, но я не вижу, как ее использовать в fpcomplete.com/blog/2015/09/stack-more-binary-package-sharing   -  person user855443    schedule 24.03.2017
comment
Мне все еще трудно следить за описанием вашей проблемы. Ваше предложение. Если я изменяю один из проектов, то стек не обновляет автоматически другой проект, который зависит от этого. указывает на то, что существует несколько проектов, но на самом деле у вас только один? Возможно, вы могли бы открыть задачу для стека и указать все шаги, необходимые для воспроизведения вашей проблемы. .   -  person sjakobi    schedule 26.03.2017


Ответы (1)


Вы правы в том, что изменение в локальном пакете не должно вызывать перекомпиляцию каких-либо экстра-депозитов, если эти экстра-депы не зависят ни от каких локальных пакетов. (Локальные пакеты — это те, которые перечислены в разделе extra-deps.)

Обычно мои дополнительные настройки перекомпилируются только при обновлении стека или изменении файла resolver.

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

person sjakobi    schedule 27.03.2017