google / google/codeworld

Take better advantage of cabal nix-style builds

Aperta
#1,182 4 commenti 0 reazioni 0 assegnatari Vedi su GitHub
cleanup
Lingua principale
Haskell
Stelle
1.3k
Fork
201
Metriche di merge delle PR
Nessuna PR unita negli ultimi 30g

Descrizione

If I figured out a few issues, I could switch to cabal's nix-style builds, and it would have a few advantages. The basic idea is:

1. Specify the environment (e.g., available packages) where client code should run, hopefully in a cabal project file?
2. Let `cabal v2-install` write a GHC environment file on build that describes the exact set of build artifacts that implement that environment. Pass this environment file to GHCJS when building client code.

The more formal specification of the environment (instead of "whatever packages happen to be installed right now") is its own reward. But I also expect this to make builds much faster and more reproducible. Currently, I have a tendency to sometimes hand-pick only some packages to rebuild, to save time in the development cycle, and `cabal v2-install` should make that obsolete.

Challenge: `cabal v2-install` really doesn't seem to like packages just sitting in a subdirectory. It wants them to come from some repository. I'll have to workaround this somehow.

Guida per i contributori

Apri la guida per i contributori

Direzione di ricerca

Inizia riproducendo il comportamento segnalato di cabal v2-install con pacchetti in una sottodirectory e verifica come il progetto compila attualmente il codice client con GHCJS. L’issue non indica file né test; il lavoro sarà completato quando sarà possibile generare un ambiente definito e passarlo a GHCJS con build più veloci e riproducibili.

Scritto dal modello di indicizzazione a partire dal testo della issue.

Valutazione

Stack tecnologico
haskell
Ambito
build-system
Tipo di issue
Funzionalità
Difficoltà
5/5
Tempo stimato
Più di una settimana
Stato di attività
Ferma
Chiarezza
Da chiarire
Idoneità per principianti
20/100

Ricevi le nuove issue nella tua casella

Un breve riepilogo di issue GitHub adatte ai principianti.