GHCup

Julian Ospald

June 07, 2024

Introduction

What is GHCup?

State of 2019

How it started

GHCup today

Haskell Survey 2022:

GHCup and haskell.org

The default installer:

GHCup and the Haskell Foundation

Philosophy

What is a good installer?

Goals and principles

What is GHCup (simplified)?

curl -s -L 'https://downloads.haskell.org/~ghc/9.6.5/ghc-9.6.5-x86_64-fedora33-linux.tar.xz' |
  tar -xJ -C /tmp                              &&
  cd /tmp/ghc-9.6.5-x86_64-unknown-linux/      &&
  ./configure --prefix="$HOME/.local"          &&
  make install                                 &&
  rm -rf /tmp/ghc-9.6.5-x86_64-unknown-linux/

What is GHCup really?

Relationships

Upstream (dependencies)

Downstream (dependents)

The installer in detail

How does it work?

Basic CLI (context)

Basic CLI

File layout (context)

File layout

Bindist selection (context)

Bindist selection (sysinfo)

Gather system information:

Bindist selection (mapping)

Map binaries to systems:

Installation flow

TUI interface (context)

TUI interface

Configuration (context)

Configuration

Phew

Distribution

What is distribution?

What happens on e.g. a GHC release

Contributing

How to contribute

Getting started

Head over to https://github.com/haskell/ghcup-hs/issues/1074 (zurihac labeled issue).

Advanced topics

Questions and Suggestions