Update
This commit is contained in:
parent
3ad0a34337
commit
16511b852b
115
GHCup.md
115
GHCup.md
@ -124,21 +124,26 @@ curl -s -L 'https://downloads.haskell.org/~ghc/9.6.5/ghc-9.6.5-x86_64-fedora33-l
|
|||||||
|
|
||||||
:::
|
:::
|
||||||
|
|
||||||
|
# Relationships
|
||||||
|
|
||||||
## Upstream (dependencies)
|
## Upstream (dependencies)
|
||||||
|
|
||||||
::: incremental
|
- supported tools
|
||||||
|
|
||||||
- GHC
|
- GHC
|
||||||
- Cabal
|
- Cabal
|
||||||
- HLS
|
- HLS
|
||||||
- Stack
|
- Stack
|
||||||
|
|
||||||
:::
|
. . .
|
||||||
|
|
||||||
|
- decisions that affect us
|
||||||
|
- release frequency
|
||||||
|
- upstream CI
|
||||||
|
- platform support
|
||||||
|
- binary distributions (the `.tar.gz`/`.zip`)
|
||||||
|
|
||||||
## Downstream (dependents)
|
## Downstream (dependents)
|
||||||
|
|
||||||
::: incremental
|
|
||||||
|
|
||||||
- ![](haskell_logo.png){#id .class height=32px} Haskell developers
|
- ![](haskell_logo.png){#id .class height=32px} Haskell developers
|
||||||
- beginners, advanced, students, companies
|
- beginners, advanced, students, companies
|
||||||
- ![](person.png){#id .class width=32 height=32px} end users (e.g. compiling pandoc from source)
|
- ![](person.png){#id .class width=32 height=32px} end users (e.g. compiling pandoc from source)
|
||||||
@ -149,18 +154,17 @@ curl -s -L 'https://downloads.haskell.org/~ghc/9.6.5/ghc-9.6.5-x86_64-fedora33-l
|
|||||||
- 🧰 tools
|
- 🧰 tools
|
||||||
- [vscode-haskell](https://github.com/haskell/vscode-haskell), [Haskell playground](https://play.haskell.org/), [nvim-lsp-installer](https://github.com/williamboman/nvim-lsp-installer)
|
- [vscode-haskell](https://github.com/haskell/vscode-haskell), [Haskell playground](https://play.haskell.org/), [nvim-lsp-installer](https://github.com/williamboman/nvim-lsp-installer)
|
||||||
|
|
||||||
:::
|
# The installer in detail
|
||||||
|
|
||||||
# Bits and pieces
|
|
||||||
|
|
||||||
## How does it work?
|
## How does it work?
|
||||||
|
|
||||||
::: incremental
|
|
||||||
|
|
||||||
* **Architectural components**
|
* **Architectural components**
|
||||||
- ![](sh-file.png){#id .class height=32px} bootstrap scripts
|
- ![](sh-file.png){#id .class height=32px} bootstrap scripts
|
||||||
- ![](exe-file.png){#id .class height=32px} ghcup binary (compiled)
|
- ![](exe-file.png){#id .class height=32px} ghcup binary (compiled)
|
||||||
- ![](config-file.png){#id .class height=32px} ghcup-metadata
|
- ![](config-file.png){#id .class height=32px} ghcup-metadata
|
||||||
|
|
||||||
|
. . .
|
||||||
|
|
||||||
* **Logical components**
|
* **Logical components**
|
||||||
- ![](terminal.png){#id .class height=32px} cli interface
|
- ![](terminal.png){#id .class height=32px} cli interface
|
||||||
- ![](file.png){#id .class height=32px} file layout / installation destination
|
- ![](file.png){#id .class height=32px} file layout / installation destination
|
||||||
@ -168,8 +172,6 @@ curl -s -L 'https://downloads.haskell.org/~ghc/9.6.5/ghc-9.6.5-x86_64-fedora33-l
|
|||||||
- ![](brick-final-clearbg.png){#id .class height=32px} tui interface
|
- ![](brick-final-clearbg.png){#id .class height=32px} tui interface
|
||||||
- ![](config.svg){#id .class height=32px} configuration
|
- ![](config.svg){#id .class height=32px} configuration
|
||||||
|
|
||||||
:::
|
|
||||||
|
|
||||||
## Basic CLI (context)
|
## Basic CLI (context)
|
||||||
|
|
||||||
* **Architectural components**
|
* **Architectural components**
|
||||||
@ -348,29 +350,83 @@ curl -s -L 'https://downloads.haskell.org/~ghc/9.6.5/ghc-9.6.5-x86_64-fedora33-l
|
|||||||
|
|
||||||
![](headache.png){#id .class height=550px}
|
![](headache.png){#id .class height=550px}
|
||||||
|
|
||||||
|
# Distribution
|
||||||
|
|
||||||
|
## What is distribution?
|
||||||
|
|
||||||
|
* QA gate between "upstream" and "downstream"
|
||||||
|
* trust relationship (with upstream and downstream)
|
||||||
|
* release selection and defaults
|
||||||
|
* binary distribution
|
||||||
|
|
||||||
|
## What happens on e.g. a GHC release
|
||||||
|
|
||||||
|
- testing and inspection of bindists
|
||||||
|
- manual
|
||||||
|
- automated at [github.com/haskell/ghcup-metadata](https://github.com/haskell/ghcup-metadata/blob/develop/.github/workflows/bindists.yaml)
|
||||||
|
- fixing bindists
|
||||||
|
- building additional bindists (e.g. FreeBSD)
|
||||||
|
|
||||||
|
. . .
|
||||||
|
|
||||||
|
- forks at [github.com/stable-haskell](https://github.com/stable-haskell)
|
||||||
|
- builds cabal, stack and HLS binaries
|
||||||
|
- GHC TBD
|
||||||
|
|
||||||
|
## The "recommended" versions (defaults)
|
||||||
|
|
||||||
|
* community adoption (both industry and "open source")
|
||||||
|
* stack LTS
|
||||||
|
* HLS support
|
||||||
|
* known issues and regressions
|
||||||
|
* GHC HQs opinion and support window
|
||||||
|
* must be consistent across platforms
|
||||||
|
|
||||||
# Contributing
|
# Contributing
|
||||||
|
|
||||||
## How to contribute
|
## How to contribute
|
||||||
|
|
||||||
**Some live action:**
|
|
||||||
|
|
||||||
- project structure
|
|
||||||
- building the project (flags and project files)
|
|
||||||
- small code walkthrough
|
|
||||||
|
|
||||||
## The future
|
|
||||||
|
|
||||||
::: incremental
|
::: incremental
|
||||||
|
|
||||||
|
- loose project structure (BDFL)
|
||||||
|
- discuss early
|
||||||
|
- repositories
|
||||||
|
- [github.com/haskell/ghcup-hs](https://github.com/haskell/ghcup-hs): documentation, bootstrap-scripts, ghcup exe
|
||||||
|
- [github.com/haskell/ghcup-metadata](https://github.com/haskell/ghcup-metadata): bindist mapping (YAML), bindist testing
|
||||||
|
- build with cabal/stack
|
||||||
|
- communication
|
||||||
|
- [#haskell-ghcup](https://kiwiirc.com/nextclient/irc.libera.chat/?nick=Guest%7C?##haskell-ghcup) on libera IRC
|
||||||
|
- [#ghcup:matrix.org](https://matrix.to/#/#ghcup:matrix.org) (bridged with IRC)
|
||||||
|
- github issues
|
||||||
|
- [haskell discourse](https://discourse.haskell.org/) (interacting with the community)
|
||||||
|
|
||||||
|
:::
|
||||||
|
|
||||||
|
## Cool things to contribute to
|
||||||
|
|
||||||
|
- documentation
|
||||||
|
- discussions
|
||||||
|
- defaults (e.g. "recommended" versions)
|
||||||
|
- overview of GHC issues and regressions
|
||||||
|
- Dhall
|
||||||
|
- manpage (via [optparse-applicative](https://github.com/pcapriotti/optparse-applicative/issues/176)?)
|
||||||
|
- TUI (ask @lsmor)
|
||||||
|
- YAML schema for metadata
|
||||||
|
- integration test
|
||||||
|
- new commands
|
||||||
|
- e.g. "health check"
|
||||||
|
|
||||||
|
## Hard things to contribute to
|
||||||
|
|
||||||
- nightlies
|
- nightlies
|
||||||
- revisions
|
- revisions
|
||||||
|
- cross compiler support
|
||||||
- curating old releases
|
- curating old releases
|
||||||
|
- proper API for e.g. stack
|
||||||
- beefed up `ghcup compile` interface
|
- beefed up `ghcup compile` interface
|
||||||
- TUF?
|
- TUF?
|
||||||
- supporting more tools (installer DSL)
|
- supporting more tools (installer DSL)
|
||||||
|
|
||||||
:::
|
|
||||||
|
|
||||||
## Advanced topics
|
## Advanced topics
|
||||||
|
|
||||||
- bootstrap scripts
|
- bootstrap scripts
|
||||||
@ -383,18 +439,3 @@ curl -s -L 'https://downloads.haskell.org/~ghc/9.6.5/ghc-9.6.5-x86_64-fedora33-l
|
|||||||
- isolated installs
|
- isolated installs
|
||||||
- mirrors
|
- mirrors
|
||||||
|
|
||||||
## Cool things to contribute to
|
|
||||||
|
|
||||||
- documentation
|
|
||||||
- discussions
|
|
||||||
- deciding on defaults (metadata etc.)
|
|
||||||
- API for e.g. stack
|
|
||||||
- Dhall
|
|
||||||
- manpage (via [optparse-applicative](https://github.com/pcapriotti/optparse-applicative/issues/176)?)
|
|
||||||
- TUI (@lsmor)
|
|
||||||
- YAML schema for metadata
|
|
||||||
- integration test
|
|
||||||
- cross compiler support
|
|
||||||
- nightlies
|
|
||||||
- "health check" command
|
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user