google / google/codeworld

Take better advantage of cabal nix-style builds

Offen
#1,182 4 Kommentare 0 Reaktionen 0 zugewiesene Personen Auf GitHub ansehen
cleanup
Vorherrschende Sprache
Haskell
Sterne
1.3k
Forks
201
PR-Merge-Kennzahlen
Keine gemergten PRs in 30 T.

Beschreibung

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.

Beitragsleitfaden

Beitragsleitfaden öffnen

Rechercherichtung

Beginne damit, das gemeldete Verhalten von cabal v2-install mit Paketen in einem Unterverzeichnis nachzustellen und zu prüfen, wie das Projekt derzeit Client-Code mit GHCJS erstellt. Das Issue nennt keine Dateien oder Tests; als abgeschlossen gilt, wenn eine definierte Umgebung generiert und an GHCJS übergeben werden kann, mit schnelleren, reproduzierbaren Builds.

Vom Indexierungsmodell aus dem Issue-Text verfasst.

Bewertung

Tech-Stack
haskell
Bereich
build-system
Issue-Typ
Feature
Schwierigkeit
5/5
Geschätzter Aufwand
Über eine Woche
Aktivitätsstatus
Veraltet
Klarheit
Muss geklärt werden
Anfängerfreundlichkeit
20/100

Neue Issues direkt in Ihr Postfach

Eine kurze Übersicht über anfängerfreundliche GitHub-Issues.