2017-03-23 2 views
1

Ich habe ein Projekt, bestehend aus mehreren Paketen in einem Verzeichnisbaum. Wenn ich eines der Pakete ändere, kompiliert Stack normalerweise automatisch Pakete, die vom geänderten abhängen (manchmal schlägt der Automatismus fehl und ich habe keinen Hinweis wenn - aber das ist nicht der Fokus der Frage).Wie wiederhole ich die Kompilierung von Paketen in Extra-Deps zu vermeiden

Während der Neukompilierung sehe ich oft eine Neukompilierung aller als Extra-Deps aufgeführten Pakete. Diese haben sich nicht geändert, und eine Neukompilierung ist nicht notwendig (aber zeitaufwendig). Ich verstehe, dass es einen Mechanismus gibt, solche Abhängigkeiten nur einmal zu kompilieren (solange sie sich nicht ändern) und wiederverwendet zu werden. Ich sah einmal eine Nachricht vom Stapel, die sagte, dass eine vorherige Kompilierung eines Pakets wiederverwendet wurde, um auf dieses Zwischenspeichern zu zeigen.

i in einem Kommentar gefragt wurde, den stack.yaml im Projektverzeichnis zur Verfügung zu stellen (ich habe auch versucht, mit Einträgen wie

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

aber einen Unterschied nicht sehen):

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 

Wie um die Wiederverwendung von zuvor kompilierten und nicht geänderten Extra-Deps im Allgemeinen zu erreichen?

Ich versuchte Build, build --dependencies-only und build --snapshot aber nicht erfolgreich. Alle Abhängigkeiten werden neu erstellt ... Ich konnte keine weiteren Informationen in der Dokumentation finden.

Hilfreiche Kommentare haben mich dazu veranlasst, die Frage zu überdenken und zu bearbeiten. Ich hoffe das Problem ist jetzt besser aufgedeckt. Danke für die Hilfe!

+0

Haben Sie mehrere Pakete in einem Projekt oder haben Sie mehrere Projekte (und mehrere 'stack.yaml's)? – sjakobi

+0

Vielleicht zeigen Sie uns die Umrisse Ihrer 'stack.yaml' (s) ?! – sjakobi

+0

Die stack.yaml wird in die Frage bearbeitet. Ich fand auch Informationen, die vielleicht relevant sind, aber ich kann nicht sehen, wie man in https://www.fpcomplete.com/blog/2015/09/stack-more-binary-package-sharing – user855443

Antwort

0

Sie haben recht, dass eine Änderung in einem lokalen Paket keine Neukompilierung zusätzlicher Depeps verursachen sollte, solange die zusätzlichen Deps nicht von lokalen Paketen abhängen. (Lokale Pakete sind die, die in der extra-deps Sektion aufgeführt sind.)

Normalerweise werden meine Extra-Deps nur neu kompiliert, wenn ich den Stack upgrade oder den resolver ändere.

Dies deutet darauf hin, dass es einen Fehler im Stack-Verhalten gibt, also wäre es toll, wenn Sie beim nächsten Mal, wenn Sie diese redundante Neukompilierung sehen, einen Fehlerbericht für den Stack erstellen könnten!

Verwandte Themen