2017-03-23 5 views
1

나는 디렉토리 트리에 여러 패키지로 구성된 프로젝트를 가지고있다. 패키지 중 하나를 변경하면 스택은 일반적으로 변경된 패키지에 의존하는 패키지를 자동으로 다시 컴파일합니다 (때로는 자동 실행이 실패하고 나에게 힌트가 없지만 질문의 초점이 아닙니다).extra-deps에서 패키지를 반복적으로 컴파일하는 것을 피하는 방법

다시 컴파일하는 동안 추가 패키지로 나열된 모든 패키지를 자주 다시 컴파일하는 경우가 있습니다. 이들은 변경되지 않았으며 재 컴파일은 불필요합니다 (그러나 시간이 많이 소요됩니다). 이러한 종속성을 한 번만 컴파일하면 (변경되지 않는 한) 재사용 할 수있는 메커니즘이 있다는 것을 알고 있습니다. 스택에서 이전에 컴파일 된 패키지 중 일부가이 캐싱을 가리키며 재사용되었다는 메시지를 한 번 보았습니다.

내가 (내가

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

같은 항목으로도 시도했지만 차이를 보지 않았다) 프로젝트 디렉토리에 stack.yaml을 제공하기 위해 주석에 요청했다 :

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 

방법 일반적으로 이전에 컴파일되고 변경되지 않은 여분의 deps의 재사용을 달성하기 위해?

빌드를 시도했는데 --dependencies 만 빌드하고 --snapshot을 빌드했지만 성공하지 못했습니다. 모든 종속성이 다시 빌드됩니다 ... 설명서에서 더 많은 정보를 찾을 수 없습니다.

도움이되는 의견은 질문을 다시 생각하고 수정하게했습니다. 문제가 더 잘 드러나기를 바랍니다. 도와 줘서 고마워!

+0

하나의 프로젝트에 여러 개의 패키지가 있거나 여러 개의 프로젝트 (그리고 여러 개의'stack.yaml')가 있습니까? – sjakobi

+0

아마도'stack.yaml' (s)의 윤곽을 보여줄 것입니다! – sjakobi

+0

stack.yaml이 질문에 편집됩니다. 또한 관련 정보를 찾았지만 https://www.fpcomplete.com/blog/2015/09/stack-more-binary-package-sharing에서 사용하는 방법을 볼 수 없습니다. – user855443

답변

0

로컬 패키지의 변경으로 인해 추가 패키지가 로컬 패키지에 의존하지 않는 한 모든 추가 패키지가 다시 컴파일되지 않아야합니다. (로컬 패키지는 extra-deps 섹션에 나열된 패키지입니다.)

일반적으로 내 추가 deps는 스택을 업그레이드하거나 resolver을 변경할 때만 다시 컴파일됩니다.

이것은 스택의 동작에 버그가있을 수 있음을 나타냅니다. 다음에이 중복 된 재 컴파일을 다시 볼 때 스택에 대한 버그 보고서를 만들 수 있다면 좋을 것입니다!