2017-03-23 2 views
1

J'ai un projet composé de plusieurs paquets dans une arborescence de répertoires. Si je change l'un des paquets alors la pile recompile automatiquement les paquets qui dépendent du paquet modifié (parfois l'automatisme échoue et je n'ai aucun indice quand - mais ce n'est pas l'objet de la question).comment éviter la compilation répétée de paquets en extra-deps

Lors de la recompilation, je vois souvent une recompilation de tous les paquets listés comme extra-deps. ceux-ci n'ont pas changé et la recompilation est inutile (mais prend du temps). Je comprends qu'il existe un mécanisme permettant de compiler de telles dépendances une seule fois (tant qu'elles ne changent pas) et d'être réutilisées. J'ai vu une fois un message de la pile indiquant qu'une compilation précédente d'un paquet a été réutilisée en pointant vers cette mise en cache.

on m'a demandé dans un commentaire à fournir le stack.yaml dans le répertoire du projet (j'ai essayé aussi avec des entrées comme

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

mais n'a pas vu une différence):

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 

Comment obtenir la réutilisation des extra-deps précédemment compilés et non modifiés en général?

J'ai essayé de construire, compiler --dependencies-only et compiler --snapshot mais je n'ai pas réussi. Toutes les dépendances sont reconstruites ... je n'ai pas pu trouver plus d'informations dans la documentation.

Commentaires utiles m'a fait repenser et éditer la question. J'espère que le problème est maintenant mieux exposé. Merci pour l'aide!

+0

Avez-vous plusieurs paquets dans un seul projet ou avez-vous plusieurs projets (et plusieurs 'pile.yaml's)? – sjakobi

+0

Peut-être nous montrer le contour de votre 'stack.yaml' (s) ?! – sjakobi

+0

La pile.yaml est éditée dans la question. J'ai également trouvé des informations qui sont peut-être pertinentes, mais je ne vois pas comment utiliser dans https://www.fpcomplete.com/blog/2015/09/stack-more-binary-package-sharing – user855443

Répondre

0

Vous avez raison de dire qu'un changement dans un paquet local ne devrait pas entraîner la recompilation de tout extra-deps tant que les extra-deps ne dépendent pas de paquets locaux. (Les paquets locaux sont ceux qui sont listés dans la section extra-deps.)

Habituellement, mes extra-deps ne sont recompilés que lorsque je mets à jour la pile ou change resolver. Ceci indique qu'il pourrait y avoir un bug dans le comportement de la pile, donc ce serait bien si vous pouviez faire un rapport de bogue pour la pile la prochaine fois que vous reviendrez cette recompilation redondante!