.github | ||
ghcup-gen | ||
scripts/release/cabal | ||
.cirrus.yml | ||
.gitignore | ||
.yamllint | ||
cabal.project | ||
ghcup-0.0.1.json | ||
ghcup-0.0.1.json.sig | ||
ghcup-0.0.2.json | ||
ghcup-0.0.2.json.sig | ||
ghcup-0.0.2.yaml | ||
ghcup-0.0.2.yaml.sig | ||
ghcup-0.0.3.yaml | ||
ghcup-0.0.3.yaml.sig | ||
ghcup-0.0.4-rc2.yaml | ||
ghcup-0.0.4-rc2.yaml.sig | ||
ghcup-0.0.4.yaml | ||
ghcup-0.0.4.yaml.sig | ||
ghcup-0.0.5.yaml | ||
ghcup-0.0.5.yaml.sig | ||
ghcup-0.0.6.yaml | ||
ghcup-0.0.6.yaml.sig | ||
ghcup-0.0.7.yaml | ||
ghcup-0.0.7.yaml.sig | ||
ghcup-0.0.8.yaml | ||
ghcup-0.0.8.yaml.sig | ||
ghcup-cross-0.0.8.yaml | ||
ghcup-cross-0.0.8.yaml.sig | ||
ghcup-prereleases-0.0.7.yaml | ||
ghcup-prereleases-0.0.7.yaml.sig | ||
ghcup-prereleases-0.0.8.yaml | ||
ghcup-prereleases-0.0.8.yaml.sig | ||
ghcup-vanilla-0.0.7.yaml | ||
ghcup-vanilla-0.0.7.yaml.sig | ||
ghcup-vanilla-0.0.8.yaml | ||
ghcup-vanilla-0.0.8.yaml.sig | ||
hls-metadata-0.0.1.json | ||
hls-metadata-0.0.1.json.sig | ||
README.md |
GHCup metadata
For end users
Metadata variants (distribution channels)
ghcup-A.B.C.yaml
: this is the main metadata and what ghcup uses by defaultghcup-vanilla-A.B.C.yaml
: this is similar toghcup-A.B.C.yaml
, but only uses upstream bindists (no patches/fixes are applied, no missing platforms added)ghcup-prereleases-A.B.C.yaml
: this contains pre-releases of all toolsghcup-cross-A.B.C.yaml
: this contains experimental cross compilers. See https://www.haskell.org/ghcup/guide/#cross-support for details.
Using the metadata
If you want access to both pre-releases and cross compilers, run:
ghcup config add-release-channel https://raw.githubusercontent.com/haskell/ghcup-metadata/master/ghcup-prereleases-0.0.7.yaml
ghcup config add-release-channel https://raw.githubusercontent.com/haskell/ghcup-metadata/master/ghcup-cross-0.0.8.yaml
If you want only vanilla upstream bindists and opt out of all unofficial stuff, you'd run:
ghcup config set url-source https://raw.githubusercontent.com/haskell/ghcup-metadata/master/ghcup-vanilla-0.0.8.yaml
Also check the config.yaml documentation.
For contributors
Adding a new GHC version
- open the latest
ghcup-<yaml-ver>.yaml
- find the latest ghc version (in yaml tree e.g.
ghcupDownloads -> GHC -> 8.10.7
) - copy-paste it
- adjust the version, tags, changelog, source url
- adjust the various bindist urls (make sure to also change the yaml anchors)
- run
cabal run ghcup-gen -- check -f ghcup-<yaml-ver>.yaml
- run
cabal run ghcup-gen -- check-tarballs -f ghcup-<yaml-ver>.yaml -u 'ghc-8\.10\.8'
- run
cabal run ghcup-gen -- generate-hls-ghcs -f ghcup-<yaml-ver>.yaml --format json -o hls-metadata-0.0.1.json
- run
cabal run ghcup-gen -- generate-table -f ghcup-<yaml-ver>.yaml --stdout
and adjust docs/install tables
During a pull request
- make sure to always add new versions to both
ghcup-A.B.C.yaml
andghcup-vanilla-A.B.C.yaml
- make sure to run the bindist action to check tool installation on all platforms: https://github.com/haskell/ghcup-metadata/actions/workflows/bindists.yaml
- this is a manual pipeline
- set the appropriate parameters
- make sure to sign the yaml files you edited, e.g.:
gpg --detach-sign -u <your-email> ghcup-0.0.7.yaml
or ask a GHCup developer to sign- PGP pubkeys need to be cross-signed by the GHCup team
- they need to be added to the CI: https://github.com/haskell/ghcup-metadata/blob/develop/.github/workflows/sigs
- and need to be documented on the homepage
Understanding tags
Tags are documented here. Search for data Tag
.
Some tags are unique. Uniqueness is checked by cabal run ghcup-gen -- check -f ghcup-<yaml-ver>.yaml
.
If you want to check prereleases, do: cabal run ghcup-gen -- check -f ghcup-prereleases-<yaml-ver>.yaml --channel=prerelease