Update
This commit is contained in:
parent
60b9754415
commit
d56109df04
131
GHCup.md
131
GHCup.md
@ -10,7 +10,13 @@
|
|||||||
|
|
||||||
![](survey.png)
|
![](survey.png)
|
||||||
|
|
||||||
## What is GHCup?
|
## Intro (pt. 2)
|
||||||
|
|
||||||
|
haskell.org:
|
||||||
|
|
||||||
|
![](downloads.png)
|
||||||
|
|
||||||
|
## What is GHCup (simplified)?
|
||||||
|
|
||||||
```sh
|
```sh
|
||||||
curl -s -L 'https://downloads.haskell.org/~ghc/9.6.5/ghc-9.6.5-x86_64-fedora33-linux.tar.xz' |
|
curl -s -L 'https://downloads.haskell.org/~ghc/9.6.5/ghc-9.6.5-x86_64-fedora33-linux.tar.xz' |
|
||||||
@ -23,13 +29,19 @@ curl -s -L 'https://downloads.haskell.org/~ghc/9.6.5/ghc-9.6.5-x86_64-fedora33-l
|
|||||||
|
|
||||||
## How it started
|
## How it started
|
||||||
|
|
||||||
|
::: incremental
|
||||||
|
|
||||||
* 🤹 small team at work on different platforms
|
* 🤹 small team at work on different platforms
|
||||||
* 🧑💻 SHELL + POSIX
|
* 🧑💻 SHELL + POSIX
|
||||||
* 🦾 first version was 165 LOC
|
* 🦾 first version was 165 LOC
|
||||||
* 🙏 only installer at that time was stack
|
* 🙏 only installer at that time was stack
|
||||||
|
|
||||||
|
:::
|
||||||
|
|
||||||
## Goals
|
## Goals
|
||||||
|
|
||||||
|
::: incremental
|
||||||
|
|
||||||
- ☮️ unification
|
- ☮️ unification
|
||||||
- unix principles
|
- unix principles
|
||||||
- 🛠️ do one thing and do it well
|
- 🛠️ do one thing and do it well
|
||||||
@ -37,20 +49,125 @@ curl -s -L 'https://downloads.haskell.org/~ghc/9.6.5/ghc-9.6.5-x86_64-fedora33-l
|
|||||||
- 🎁 good re-distribution
|
- 🎁 good re-distribution
|
||||||
- 🛣️ user experience (get out of the way)
|
- 🛣️ user experience (get out of the way)
|
||||||
|
|
||||||
## To install or not install
|
:::
|
||||||
|
|
||||||
|
## What is GHCup really?
|
||||||
|
|
||||||
* [https://hasufell.github.io/posts/2023-11-14-ghcup-is-not-an-installer.html](https://hasufell.github.io/posts/2023-11-14-ghcup-is-not-an-installer.html)
|
* [https://hasufell.github.io/posts/2023-11-14-ghcup-is-not-an-installer.html](https://hasufell.github.io/posts/2023-11-14-ghcup-is-not-an-installer.html)
|
||||||
|
|
||||||
### Concerns
|
::: incremental
|
||||||
|
|
||||||
* ![](open-box.png){#id .class width=32 height=32px} installer
|
* ![](open-box.png){#id .class width=32 height=32px} installer
|
||||||
* ![](linux.png){#id .class width=32 height=32px} distribution channel
|
* ![](linux.png){#id .class width=32 height=32px} distribution channel
|
||||||
* ![](feedback.png){#id .class width=32 height=32px} feedback channel
|
* ![](feedback.png){#id .class width=32 height=32px} feedback channel
|
||||||
* ![](qa.png){#id .class width=32 height=32px} testing/QA
|
* ![](qa.png){#id .class width=32 height=32px} testing/QA gateway
|
||||||
* ![](user.png){#id .class width=32 height=32px} deciding on defaults (e.g. "recommended" GHC version)
|
* ![](user.png){#id .class width=32 height=32px} provider of sane defaults (e.g. "recommended" GHC version)
|
||||||
* ![](chain-saw.png){#id .class width=32 height=32px} holistic toolchain experience
|
* ![](chain-saw.png){#id .class width=32 height=32px} glue for holistic toolchain experience
|
||||||
- stack integration
|
- stack integration
|
||||||
- VSCode integration
|
- VSCode integration
|
||||||
- cabal-install integration
|
- cabal-install integration
|
||||||
* ![](ghaction.png){#id .class width=32 height=32px} CI (e.g. github actions)
|
* ![](ghaction.png){#id .class width=32 height=32px} CI provisioning (e.g. github actions)
|
||||||
|
|
||||||
|
:::
|
||||||
|
|
||||||
|
## Upstream
|
||||||
|
|
||||||
|
Supported tools/dependencies:
|
||||||
|
|
||||||
|
::: incremental
|
||||||
|
|
||||||
|
- GHC
|
||||||
|
- Cabal
|
||||||
|
- HLS
|
||||||
|
- Stack
|
||||||
|
|
||||||
|
:::
|
||||||
|
|
||||||
|
## Downstream
|
||||||
|
|
||||||
|
Users:
|
||||||
|
|
||||||
|
::: incremental
|
||||||
|
|
||||||
|
- ![](haskell_logo.png){#id .class height=32px} Haskell developers
|
||||||
|
- beginners / advanced
|
||||||
|
- student courses
|
||||||
|
- companies
|
||||||
|
- ![](person.png){#id .class width=32 height=32px} end users (e.g.compiling pandoc from source)
|
||||||
|
- ![](ghaction.png){#id .class width=32 height=32px} GitHub CI
|
||||||
|
- GitHub images
|
||||||
|
- Haskell repos
|
||||||
|
- 🪞 mirrors
|
||||||
|
- [sjtug](https://mirror.sjtu.edu.cn/docs/ghcup)
|
||||||
|
- 🧰 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)
|
||||||
|
|
||||||
|
:::
|
||||||
|
|
||||||
|
## How does it work?
|
||||||
|
|
||||||
|
**Components:**
|
||||||
|
|
||||||
|
::: incremental
|
||||||
|
|
||||||
|
- ![](terminal.png){#id .class height=32px} cli interface
|
||||||
|
- ![](file.png){#id .class height=32px} file layout / installation destination
|
||||||
|
- ![](tar.png){#id .class height=32px} bindist selection
|
||||||
|
- 🧱 tui interface
|
||||||
|
|
||||||
|
:::
|
||||||
|
|
||||||
|
## Basic CLI
|
||||||
|
|
||||||
|
::: incremental
|
||||||
|
|
||||||
|
* show all available tools / versions
|
||||||
|
```sh
|
||||||
|
ghcup list
|
||||||
|
```
|
||||||
|
* install a tool
|
||||||
|
```sh
|
||||||
|
ghcup install ghc latest
|
||||||
|
```
|
||||||
|
* make a tool version the default
|
||||||
|
```sh
|
||||||
|
ghcup set ghc latest
|
||||||
|
```
|
||||||
|
* remove a tool version
|
||||||
|
```sh
|
||||||
|
ghcup rm ghc 9.10.1
|
||||||
|
```
|
||||||
|
|
||||||
|
:::
|
||||||
|
|
||||||
|
## Where does it install?
|
||||||
|
|
||||||
|
::: incremental
|
||||||
|
|
||||||
|
* root dir
|
||||||
|
```sh
|
||||||
|
$ ls ~/.ghcup
|
||||||
|
bin cache config.yaml db env ghc hls logs share tmp trash
|
||||||
|
```
|
||||||
|
|
||||||
|
* GHC and HLS are installed into sub-directories
|
||||||
|
```sh
|
||||||
|
$ ls ~/.ghcup/ghc
|
||||||
|
8.10.7 9.0.2 9.2.8
|
||||||
|
```
|
||||||
|
|
||||||
|
* bin directory is mostly symbolic links
|
||||||
|
```sh
|
||||||
|
$ ls ~/.ghcup/bin
|
||||||
|
ghcup
|
||||||
|
cabal cabal-3.10.3.0
|
||||||
|
ghc ghc-8.10 ghc-8.10.7 ghc-9.0 ghc-9.0.2 ghc-9.2 ghc-9.2.8
|
||||||
|
```
|
||||||
|
:::
|
||||||
|
|
||||||
|
## Bindist selection
|
||||||
|
|
||||||
|
*
|
||||||
|
|
||||||
|
8
NOTES.md
8
NOTES.md
@ -1,16 +1,20 @@
|
|||||||
- vision, usability
|
- vision, usability
|
||||||
|
- file layout
|
||||||
|
|
||||||
|
- cli interface
|
||||||
|
|
||||||
- main GHCup types
|
- main GHCup types
|
||||||
- metadata versions
|
- metadata versions
|
||||||
- metadata variants
|
- metadata variants
|
||||||
- ghcup-metadata CI (bindist install)
|
- ghcup-metadata CI (bindist install)
|
||||||
|
- bindist work
|
||||||
- distro selection (libc compatibilty etc.)
|
- distro selection (libc compatibilty etc.)
|
||||||
- stack
|
- stack
|
||||||
- how we manage metadata
|
- how we manage metadata
|
||||||
|
- https://gitlab.haskell.org/ghc/ghc/-/wikis/platforms/linux
|
||||||
- Dockerfiles
|
- Dockerfiles
|
||||||
- stack integration
|
- stack integration
|
||||||
- Version file, Types file
|
- Version file, Types file
|
||||||
- file layout
|
|
||||||
- reproducibility
|
- reproducibility
|
||||||
- security
|
- security
|
||||||
- HLS/GHC interaction
|
- HLS/GHC interaction
|
||||||
@ -28,4 +32,6 @@
|
|||||||
- documentation
|
- documentation
|
||||||
- cross
|
- cross
|
||||||
- nightlies
|
- nightlies
|
||||||
|
- health check
|
||||||
|
- discussions
|
||||||
|
|
||||||
|
BIN
downloads.png
Normal file
BIN
downloads.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 40 KiB |
BIN
haskell_logo.png
Normal file
BIN
haskell_logo.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 93 KiB |
BIN
person.png
Normal file
BIN
person.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 7.7 KiB |
BIN
tar_gz.png
Normal file
BIN
tar_gz.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 27 KiB |
BIN
terminal.png
Normal file
BIN
terminal.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 2.9 KiB |
Loading…
Reference in New Issue
Block a user