Snapshot location¶
This document describes the specification of a snapshot location (in the
snapshot
or
resolver
key).
Info
Stack uses the Pantry to specify the location of snapshots. Pantry is geared towards reproducible build plans with cryptographically secure specification of snapshots.
There are essentially four different ways of specifying a snapshot location:
-
Via a compiler version, which is a "compiler only" snapshot. This could be, for example:
-
Via a URL pointing to a snapshot configuration file, for example:
-
Via a local file path pointing to a snapshot configuration file, for example:
-
Via a convenience synonym, which provides a short form for some common URLs. These are:
-
GitHub:
github:user/repo:path
is treated as: -
LTS Haskell:
lts-X.Y
is treated (by default) as:and, consequently, expands to:
-
Stackage Nightly:
nightly-YYYY-MM-DD
is treated (by default) as:and, consequently, expands to:
-
Overriding the default snapshot location base
By default, LTS Haskell and Stackage Nightly snapshot configurations are
retrieved from the stackage-snapshots
GitHub repository of user
commercialhaskell
. The
snapshot-location-base
option allows a custom location to be set.
For safer, more reproducible builds, you can optionally specify a URL together with a cryptographic hash of its content. For example:
snapshot:
url: https://raw.githubusercontent.com/commercialhaskell/stackage-snapshots/master/lts/12/0.yaml
size: 499143
sha256: 781ea577595dff08b9c8794761ba1321020e3e1ec3297fb833fe951cce1bee11
size
is the number of bytes in the file and sha256
is the file's SHA256
hash. If not provided, the information will automatically be generated and
stored in a lock file.