Compare commits

...

39 Commits

Author SHA1 Message Date
ca33bef30c Dockerfile updates 2024-01-03 00:22:45 +08:00
cac3cec135 Use i386/alpine:3.16 2024-01-02 19:08:56 +08:00
4e0efff4c4 Fix tests 2024-01-02 19:08:56 +08:00
71b7c96ddd Use alpine:3.12
It appears tat at least alpine:3.16 is broken
and produces linking errors.
2024-01-02 19:08:56 +08:00
5ff61cdf86 Bump toolchain in cirrus CI 2024-01-02 19:08:56 +08:00
7d0ba7fc62 Bump llvm to 13 2024-01-02 19:08:56 +08:00
bfe56aed1f Fix Dockerfile 2024-01-02 19:08:56 +08:00
a1103c05a5 Update ARM docker images 2024-01-02 19:08:56 +08:00
125125b9db Downgrade cabal on armv7 2024-01-02 19:08:55 +08:00
4eec582f1b Update alpine docker containers 2024-01-02 19:08:55 +08:00
e969489ca2 Fix build on windows 2024-01-02 19:08:55 +08:00
ec4a657b42 Update tools in CI 2024-01-02 19:08:55 +08:00
55030d83da Merge branch 'issue-958' 2024-01-01 21:40:36 +08:00
c680a9f33b Support cygwin in bootstrap-haskell too
Fixes #958
2023-12-29 19:56:38 +08:00
df192ee18e Merge remote-tracking branch 'origin/pr/956' 2023-12-26 21:41:40 +08:00
Rune K. Svendsen
008def2ff4 Add comment about why we ignore this error 2023-12-20 10:26:42 +01:00
Rune K. Svendsen
3976daddb7 bootstrap-haskell.ps1: don't exit if tmp file removal fails 2023-12-20 10:21:22 +01:00
524cdbbeb1 Merge remote-tracking branch 'origin/pr/953' 2023-12-15 23:53:59 +08:00
a01c5acfe2 Update submodules 2023-12-15 23:53:41 +08:00
Rune K. Svendsen
6689312ac5 docs: remove "TUI not supported on Windows"
TUI works on Windows since v0.1.20.0 (cf. https://github.com/haskell/ghcup-hs/pull/912)
2023-12-15 16:49:55 +01:00
e214695a3e Merge remote-tracking branch 'origin/pr/850' 2023-12-02 18:42:22 +08:00
3cea6ef97c Merge remote-tracking branch 'origin/pr/937' 2023-11-28 21:25:12 +08:00
3b0f131a65 Merge remote-tracking branch 'origin/pr/940' 2023-11-28 21:08:49 +08:00
konsumlamm
e0a3020e34 Update WASM install instructions 2023-11-28 13:55:52 +01:00
Luis Morillo
0e46b9509a complete tutorial. remove show all tools from widgets. resolve some conflicts. 2023-11-23 16:05:12 +01:00
Luis Morillo
d3474d0cd9 add KeyInfo handler and widget. Improve tutorial 2023-11-23 15:32:23 +01:00
Luis Morillo
5c3dad1bb9 reorganize code by sections 2023-11-23 15:31:33 +01:00
Luis Morillo
987cdaf313 factor out attr names. Add windows symbols to tutotial widget. Improve tutorial aesthetics and text 2023-11-23 15:28:21 +01:00
Luis Morillo
835352428a simplify rendering for better ux 2023-11-23 15:28:19 +01:00
Luis Morillo
8f4246e716 Use proper Name type and Modal type. Create tutorial Widget 2023-11-23 15:27:33 +01:00
Luis Morillo
1353a2fd20 use map-like data structure 2023-11-23 15:26:49 +01:00
Luis Morillo
aa9fbdbfc2 Use MonadState Instance to simplify install', del', set' and changelog'. Lensify the app 2023-11-23 15:24:24 +01:00
3a8cdf9967 Fix opening changelog on windows 2023-11-20 22:36:17 +08:00
2caf491e9d Remove the "show all tool" config
We show all tools at the moment anyway.
2023-11-18 18:55:06 +08:00
d277e56121 Improve logging by dropping trailing newline 2023-11-18 13:09:19 +08:00
335099ad19 Add rocky/void detection 2023-11-17 17:03:10 +08:00
b1106985ec Merge branch 'monday-improvements' 2023-11-14 23:16:42 +08:00
dee54445bf Merge remote-tracking branch 'origin/pr/928' 2023-11-13 17:50:37 +08:00
Bryan Richter
2df59fd1b3 Emphasize experimental nature of wasm and js 2023-11-13 11:28:14 +02:00
19 changed files with 689 additions and 378 deletions

View File

@@ -4,8 +4,8 @@ freebsd_instance:
build_task: build_task:
name: build name: build
env: env:
GHC_VER: 9.2.4 GHC_VER: 9.4.8
CABAL_VER: 3.8.1.0 CABAL_VER: 3.10.2.0
ARTIFACT: "x86_64-portbld-freebsd-ghcup" ARTIFACT: "x86_64-portbld-freebsd-ghcup"
ARCH: 64 ARCH: 64
RUNNER_OS: FreeBSD RUNNER_OS: FreeBSD

View File

@@ -193,7 +193,7 @@ sha=$(sha_sum "${GHCUP_DIR}/cache/ghcup-${JSON_VERSION}.yaml")
# invalidate access time timer, which is 5minutes, so we re-download # invalidate access time timer, which is 5minutes, so we re-download
touch -a -m -t '199901010101' "${GHCUP_DIR}/cache/ghcup-${JSON_VERSION}.yaml" touch -a -m -t '199901010101' "${GHCUP_DIR}/cache/ghcup-${JSON_VERSION}.yaml"
# redownload same file with some newlines added # redownload same file with some newlines added
raw_eghcup -s https://raw.githubusercontent.com/haskell/ghcup-metadata/exp/ghcup-0.0.7.yaml list raw_eghcup -s https://raw.githubusercontent.com/haskell/ghcup-metadata/exp/ghcup-${JSON_VERSION}.yaml list
# snapshot new yaml and etags file # snapshot new yaml and etags file
etag2=$(cat "${GHCUP_DIR}/cache/ghcup-${JSON_VERSION}.yaml.etags") etag2=$(cat "${GHCUP_DIR}/cache/ghcup-${JSON_VERSION}.yaml.etags")
sha2=$(sha_sum "${GHCUP_DIR}/cache/ghcup-${JSON_VERSION}.yaml") sha2=$(sha_sum "${GHCUP_DIR}/cache/ghcup-${JSON_VERSION}.yaml")
@@ -203,7 +203,7 @@ sha2=$(sha_sum "${GHCUP_DIR}/cache/ghcup-${JSON_VERSION}.yaml")
# invalidate access time timer, which is 5minutes, but don't expect a re-download # invalidate access time timer, which is 5minutes, but don't expect a re-download
touch -a -m -t '199901010101' "${GHCUP_DIR}/cache/ghcup-${JSON_VERSION}.yaml" touch -a -m -t '199901010101' "${GHCUP_DIR}/cache/ghcup-${JSON_VERSION}.yaml"
# this time, we expect the same hash and etag # this time, we expect the same hash and etag
raw_eghcup -s https://raw.githubusercontent.com/haskell/ghcup-metadata/exp/ghcup-0.0.7.yaml list raw_eghcup -s https://raw.githubusercontent.com/haskell/ghcup-metadata/exp/ghcup-${JSON_VERSION}.yaml list
etag3=$(cat "${GHCUP_DIR}/cache/ghcup-${JSON_VERSION}.yaml.etags") etag3=$(cat "${GHCUP_DIR}/cache/ghcup-${JSON_VERSION}.yaml.etags")
sha3=$(sha_sum "${GHCUP_DIR}/cache/ghcup-${JSON_VERSION}.yaml") sha3=$(sha_sum "${GHCUP_DIR}/cache/ghcup-${JSON_VERSION}.yaml")
[ "${etag2}" = "${etag3}" ] [ "${etag2}" = "${etag3}" ]

View File

@@ -21,8 +21,8 @@ jobs:
name: Build linux binary name: Build linux binary
runs-on: ${{ matrix.os }} runs-on: ${{ matrix.os }}
env: env:
CABAL_VER: 3.10.1.0 CABAL_VER: 3.10.2.0
JSON_VERSION: "0.0.7" JSON_VERSION: "0.0.8"
AWS_SECRET_ACCESS_KEY: ${{ secrets.AWS_SECRET_ACCESS_KEY }} AWS_SECRET_ACCESS_KEY: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
AWS_ACCESS_KEY_ID: ${{ secrets.AWS_ACCESS_KEY_ID }} AWS_ACCESS_KEY_ID: ${{ secrets.AWS_ACCESS_KEY_ID }}
S3_HOST: ${{ secrets.S3_HOST }} S3_HOST: ${{ secrets.S3_HOST }}
@@ -32,11 +32,11 @@ jobs:
include: include:
- os: ubuntu-latest - os: ubuntu-latest
ARTIFACT: "i386-linux-ghcup" ARTIFACT: "i386-linux-ghcup"
GHC_VER: 8.10.7 GHC_VER: 9.4.8
ARCH: 32 ARCH: 32
- os: ubuntu-latest - os: ubuntu-latest
ARTIFACT: "x86_64-linux-ghcup" ARTIFACT: "x86_64-linux-ghcup"
GHC_VER: 8.10.7 GHC_VER: 9.4.8
ARCH: 64 ARCH: 64
steps: steps:
- name: Checkout code - name: Checkout code
@@ -46,7 +46,7 @@ jobs:
- if: matrix.ARCH == '32' - if: matrix.ARCH == '32'
name: Run build (32 bit linux) name: Run build (32 bit linux)
uses: docker://hasufell/i386-alpine-haskell:3.12 uses: docker://hasufell/i386-alpine-haskell:3.16
with: with:
args: sh .github/scripts/build.sh args: sh .github/scripts/build.sh
env: env:
@@ -85,8 +85,8 @@ jobs:
name: Build ARM binary name: Build ARM binary
runs-on: ${{ matrix.os }} runs-on: ${{ matrix.os }}
env: env:
CABAL_VER: 3.10.1.0 CABAL_VER: 3.6.2.0
JSON_VERSION: "0.0.7" JSON_VERSION: "0.0.8"
AWS_SECRET_ACCESS_KEY: ${{ secrets.AWS_SECRET_ACCESS_KEY }} AWS_SECRET_ACCESS_KEY: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
AWS_ACCESS_KEY_ID: ${{ secrets.AWS_ACCESS_KEY_ID }} AWS_ACCESS_KEY_ID: ${{ secrets.AWS_ACCESS_KEY_ID }}
S3_HOST: ${{ secrets.S3_HOST }} S3_HOST: ${{ secrets.S3_HOST }}
@@ -96,11 +96,11 @@ jobs:
include: include:
- os: [self-hosted, Linux, ARM64] - os: [self-hosted, Linux, ARM64]
ARTIFACT: "armv7-linux-ghcup" ARTIFACT: "armv7-linux-ghcup"
GHC_VER: 9.2.2 GHC_VER: 9.2.8
ARCH: ARM ARCH: ARM
- os: [self-hosted, Linux, ARM64] - os: [self-hosted, Linux, ARM64]
ARTIFACT: "aarch64-linux-ghcup" ARTIFACT: "aarch64-linux-ghcup"
GHC_VER: 9.2.6 GHC_VER: 9.4.8
ARCH: ARM64 ARCH: ARM64
steps: steps:
- uses: docker://arm64v8/debian:10 - uses: docker://arm64v8/debian:10
@@ -158,9 +158,9 @@ jobs:
name: Build binary (Mac/Win) name: Build binary (Mac/Win)
runs-on: ${{ matrix.os }} runs-on: ${{ matrix.os }}
env: env:
CABAL_VER: 3.10.1.0 CABAL_VER: 3.10.2.0
MACOSX_DEPLOYMENT_TARGET: 10.13 MACOSX_DEPLOYMENT_TARGET: 10.13
JSON_VERSION: "0.0.7" JSON_VERSION: "0.0.8"
AWS_SECRET_ACCESS_KEY: ${{ secrets.AWS_SECRET_ACCESS_KEY }} AWS_SECRET_ACCESS_KEY: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
AWS_ACCESS_KEY_ID: ${{ secrets.AWS_ACCESS_KEY_ID }} AWS_ACCESS_KEY_ID: ${{ secrets.AWS_ACCESS_KEY_ID }}
S3_HOST: ${{ secrets.S3_HOST }} S3_HOST: ${{ secrets.S3_HOST }}
@@ -170,15 +170,15 @@ jobs:
include: include:
- os: [self-hosted, macOS, ARM64] - os: [self-hosted, macOS, ARM64]
ARTIFACT: "aarch64-apple-darwin-ghcup" ARTIFACT: "aarch64-apple-darwin-ghcup"
GHC_VER: 9.2.6 GHC_VER: 9.4.8
ARCH: ARM64 ARCH: ARM64
- os: macOS-11 - os: macOS-11
ARTIFACT: "x86_64-apple-darwin-ghcup" ARTIFACT: "x86_64-apple-darwin-ghcup"
GHC_VER: 9.2.6 GHC_VER: 9.4.8
ARCH: 64 ARCH: 64
- os: windows-latest - os: windows-latest
ARTIFACT: "x86_64-mingw64-ghcup" ARTIFACT: "x86_64-mingw64-ghcup"
GHC_VER: 8.10.7 GHC_VER: 9.2.8
ARCH: 64 ARCH: 64
steps: steps:
- name: Checkout code - name: Checkout code
@@ -189,13 +189,13 @@ jobs:
- if: matrix.ARCH == 'ARM64' && runner.os == 'macOS' - if: matrix.ARCH == 'ARM64' && runner.os == 'macOS'
name: Run build name: Run build
run: | run: |
bash .github/scripts/brew.sh git coreutils llvm@11 autoconf automake bash .github/scripts/brew.sh git coreutils llvm@13 autoconf automake
export PATH="$HOME/.brew/bin:$HOME/.brew/sbin:$HOME/.brew/opt/llvm@11/bin:$PATH" export PATH="$HOME/.brew/bin:$HOME/.brew/sbin:$HOME/.brew/opt/llvm@13/bin:$PATH"
export CC="$HOME/.brew/opt/llvm@11/bin/clang" export CC="$HOME/.brew/opt/llvm@13/bin/clang"
export CXX="$HOME/.brew/opt/llvm@11/bin/clang++" export CXX="$HOME/.brew/opt/llvm@13/bin/clang++"
export LD=ld export LD=ld
export AR="$HOME/.brew/opt/llvm@11/bin/llvm-ar" export AR="$HOME/.brew/opt/llvm@13/bin/llvm-ar"
export RANLIB="$HOME/.brew/opt/llvm@11/bin/llvm-ranlib" export RANLIB="$HOME/.brew/opt/llvm@13/bin/llvm-ranlib"
bash .github/scripts/build.sh bash .github/scripts/build.sh
env: env:
ARTIFACT: ${{ matrix.ARTIFACT }} ARTIFACT: ${{ matrix.ARTIFACT }}
@@ -251,24 +251,24 @@ jobs:
needs: "build-linux" needs: "build-linux"
runs-on: ${{ matrix.os }} runs-on: ${{ matrix.os }}
env: env:
CABAL_VER: 3.10.1.0 CABAL_VER: 3.10.2.0
JSON_VERSION: "0.0.7" JSON_VERSION: "0.0.8"
strategy: strategy:
matrix: matrix:
include: include:
- os: ubuntu-latest - os: ubuntu-latest
ARTIFACT: "i386-linux-ghcup" ARTIFACT: "i386-linux-ghcup"
GHC_VER: 8.10.7 GHC_VER: 9.4.8
ARCH: 32 ARCH: 32
DISTRO: Alpine DISTRO: Alpine
- os: ubuntu-latest - os: ubuntu-latest
ARTIFACT: "x86_64-linux-ghcup" ARTIFACT: "x86_64-linux-ghcup"
GHC_VER: 8.10.7 GHC_VER: 9.4.8
ARCH: 64 ARCH: 64
DISTRO: Alpine DISTRO: Alpine
- os: ubuntu-latest - os: ubuntu-latest
ARTIFACT: "x86_64-linux-ghcup" ARTIFACT: "x86_64-linux-ghcup"
GHC_VER: 8.10.7 GHC_VER: 9.4.8
ARCH: 64 ARCH: 64
DISTRO: Ubuntu DISTRO: Ubuntu
@@ -285,7 +285,7 @@ jobs:
- if: matrix.ARCH == '32' && matrix.DISTRO == 'Alpine' - if: matrix.ARCH == '32' && matrix.DISTRO == 'Alpine'
name: Run test (32 bit linux Alpine) name: Run test (32 bit linux Alpine)
uses: docker://hasufell/i386-alpine-haskell:3.12 uses: docker://hasufell/i386-alpine-haskell:3.16
with: with:
args: sh .github/scripts/test.sh args: sh .github/scripts/test.sh
env: env:
@@ -329,19 +329,19 @@ jobs:
needs: "build-arm" needs: "build-arm"
runs-on: ${{ matrix.os }} runs-on: ${{ matrix.os }}
env: env:
CABAL_VER: 3.10.1.0 CABAL_VER: 3.6.2.0
JSON_VERSION: "0.0.7" JSON_VERSION: "0.0.8"
strategy: strategy:
matrix: matrix:
include: include:
- os: [self-hosted, Linux, ARM64] - os: [self-hosted, Linux, ARM64]
ARTIFACT: "armv7-linux-ghcup" ARTIFACT: "armv7-linux-ghcup"
GHC_VER: 9.2.2 GHC_VER: 9.2.8
ARCH: ARM ARCH: ARM
DISTRO: Ubuntu DISTRO: Ubuntu
- os: [self-hosted, Linux, ARM64] - os: [self-hosted, Linux, ARM64]
ARTIFACT: "aarch64-linux-ghcup" ARTIFACT: "aarch64-linux-ghcup"
GHC_VER: 9.2.6 GHC_VER: 9.4.8
ARCH: ARM64 ARCH: ARM64
DISTRO: Ubuntu DISTRO: Ubuntu
@@ -396,25 +396,25 @@ jobs:
needs: "build-macwin" needs: "build-macwin"
runs-on: ${{ matrix.os }} runs-on: ${{ matrix.os }}
env: env:
CABAL_VER: 3.10.1.0 CABAL_VER: 3.10.2.0
MACOSX_DEPLOYMENT_TARGET: 10.13 MACOSX_DEPLOYMENT_TARGET: 10.13
JSON_VERSION: "0.0.7" JSON_VERSION: "0.0.8"
strategy: strategy:
matrix: matrix:
include: include:
- os: [self-hosted, macOS, ARM64] - os: [self-hosted, macOS, ARM64]
ARTIFACT: "aarch64-apple-darwin-ghcup" ARTIFACT: "aarch64-apple-darwin-ghcup"
GHC_VER: 9.2.6 GHC_VER: 9.4.8
ARCH: ARM64 ARCH: ARM64
DISTRO: na DISTRO: na
- os: macOS-11 - os: macOS-11
ARTIFACT: "x86_64-apple-darwin-ghcup" ARTIFACT: "x86_64-apple-darwin-ghcup"
GHC_VER: 9.2.6 GHC_VER: 9.4.8
ARCH: 64 ARCH: 64
DISTRO: na DISTRO: na
- os: windows-latest - os: windows-latest
ARTIFACT: "x86_64-mingw64-ghcup" ARTIFACT: "x86_64-mingw64-ghcup"
GHC_VER: 8.10.7 GHC_VER: 9.2.8
ARCH: 64 ARCH: 64
DISTRO: na DISTRO: na
@@ -475,7 +475,7 @@ jobs:
GHC_VERSION: "8.10.7" GHC_VERSION: "8.10.7"
HLS_TARGET_VERSION: "1.8.0.0" HLS_TARGET_VERSION: "1.8.0.0"
CABAL_VERSION: "3.8.1.0" CABAL_VERSION: "3.8.1.0"
JSON_VERSION: "0.0.7" JSON_VERSION: "0.0.8"
ARTIFACT: "x86_64-linux-ghcup" ARTIFACT: "x86_64-linux-ghcup"
DISTRO: Ubuntu DISTRO: Ubuntu
ARCH: 64 ARCH: 64

File diff suppressed because it is too large Load Diff

View File

@@ -107,7 +107,6 @@ toSettings options = do
, bSet = fromMaybe bSet kSet , bSet = fromMaybe bSet kSet
, bChangelog = fromMaybe bChangelog kChangelog , bChangelog = fromMaybe bChangelog kChangelog
, bShowAllVersions = fromMaybe bShowAllVersions kShowAll , bShowAllVersions = fromMaybe bShowAllVersions kShowAll
, bShowAllTools = fromMaybe bShowAllTools kShowAllTools
} }

View File

@@ -1,8 +1,11 @@
FROM --platform=linux/i386 i386/alpine:3.12 FROM --platform=linux/i386 i386/alpine:3.19
ENV LANG C.UTF-8 ENV LANG C.UTF-8
RUN apk add --no-cache \ RUN apk add --no-cache \
autoconf \
automake \
libtool \
curl \ curl \
gcc \ gcc \
g++ \ g++ \
@@ -37,8 +40,8 @@ RUN apk add --no-cache \
xz-dev \ xz-dev \
ncurses-static ncurses-static
ARG GHCUP_VERSION=0.1.19.4 ARG GHCUP_VERSION=0.1.20.0
ARG GPG_KEY=7D1E8AFD1D4A16D71FADA2F2CCC85C0E40C06A8C ARG GPG_KEY="7D1E8AFD1D4A16D71FADA2F2CCC85C0E40C06A8C FFEB7CE81E16A36B3E2DED6F2DE04D4E97DB64AD 88B57FCF7DB53B4DB3BFA4B1588764FBE22D19C4 EAF2A9A722C0C96F2B431CA511AAD8CEDEE0CAEF"
# install ghcup # install ghcup
RUN gpg --batch --keyserver keys.openpgp.org --recv-keys $GPG_KEY && \ RUN gpg --batch --keyserver keys.openpgp.org --recv-keys $GPG_KEY && \
@@ -51,9 +54,9 @@ RUN gpg --batch --keyserver keys.openpgp.org --recv-keys $GPG_KEY && \
chmod +x /usr/bin/ghcup && \ chmod +x /usr/bin/ghcup && \
rm -rf SHA256SUMS SHA256SUMS.sig rm -rf SHA256SUMS SHA256SUMS.sig
ARG GHC=8.10.7 ARG GHC=9.4.8
ARG CABAL_INSTALL=3.6.2.0 ARG CABAL_INSTALL=3.10.2.0
ARG STACK=2.9.1 ARG STACK=2.13.1
ENV GHCUP_CURL_OPTS="--silent" ENV GHCUP_CURL_OPTS="--silent"
ENV NO_COLOR=1 ENV NO_COLOR=1
@@ -63,7 +66,7 @@ RUN ghcup config set gpg-setting GPGStrict && \
ghcup --verbose install ghc --isolate=/usr --force ${GHC} && \ ghcup --verbose install ghc --isolate=/usr --force ${GHC} && \
ghcup --verbose install cabal --isolate=/usr/bin --force ${CABAL_INSTALL} && \ ghcup --verbose install cabal --isolate=/usr/bin --force ${CABAL_INSTALL} && \
find "/usr/lib/ghc-${GHC}/" \( -name "*_p.a" -o -name "*.p_hi" \) -type f -delete && \ find "/usr/lib/ghc-${GHC}/" \( -name "*_p.a" -o -name "*.p_hi" \) -type f -delete && \
rm -r "/usr/share/doc/ghc-${GHC}" && \ rm -rf "/usr/share/doc/ghc-${GHC}" && \
rm -rf /tmp/ghcup* && \ rm -rf /tmp/ghcup* && \
ghcup gc -p -s -c -t ghcup gc -p -s -c -t

View File

@@ -3,6 +3,9 @@ FROM alpine:3.12
ENV LANG C.UTF-8 ENV LANG C.UTF-8
RUN apk add --no-cache \ RUN apk add --no-cache \
autoconf \
automake \
libtool \
curl \ curl \
gcc \ gcc \
g++ \ g++ \
@@ -37,8 +40,8 @@ RUN apk add --no-cache \
xz-dev \ xz-dev \
ncurses-static ncurses-static
ARG GHCUP_VERSION=0.1.19.4 ARG GHCUP_VERSION=0.1.20.0
ARG GPG_KEY=7D1E8AFD1D4A16D71FADA2F2CCC85C0E40C06A8C ARG GPG_KEY="7D1E8AFD1D4A16D71FADA2F2CCC85C0E40C06A8C FFEB7CE81E16A36B3E2DED6F2DE04D4E97DB64AD 88B57FCF7DB53B4DB3BFA4B1588764FBE22D19C4 EAF2A9A722C0C96F2B431CA511AAD8CEDEE0CAEF"
# install ghcup # install ghcup
@@ -52,9 +55,9 @@ RUN gpg --batch --keyserver keys.openpgp.org --recv-keys $GPG_KEY && \
chmod +x /usr/bin/ghcup && \ chmod +x /usr/bin/ghcup && \
rm -rf SHA256SUMS SHA256SUMS.sig rm -rf SHA256SUMS SHA256SUMS.sig
ARG GHC=8.10.7 ARG GHC=9.4.8
ARG CABAL_INSTALL=3.6.2.0 ARG CABAL_INSTALL=3.10.2.0
ARG STACK=2.9.1 ARG STACK=2.13.1
ENV GHCUP_CURL_OPTS="--silent" ENV GHCUP_CURL_OPTS="--silent"
ENV NO_COLOR=1 ENV NO_COLOR=1
@@ -64,7 +67,7 @@ RUN ghcup config set gpg-setting GPGStrict && \
ghcup --verbose install ghc --isolate=/usr --force ${GHC} && \ ghcup --verbose install ghc --isolate=/usr --force ${GHC} && \
ghcup --verbose install cabal --isolate=/usr/bin --force ${CABAL_INSTALL} && \ ghcup --verbose install cabal --isolate=/usr/bin --force ${CABAL_INSTALL} && \
find "/usr/lib/ghc-${GHC}/" \( -name "*_p.a" -o -name "*.p_hi" \) -type f -delete && \ find "/usr/lib/ghc-${GHC}/" \( -name "*_p.a" -o -name "*.p_hi" \) -type f -delete && \
rm -r "/usr/share/doc/ghc-${GHC}" && \ rm -rf "/usr/share/doc/ghc-${GHC}" && \
rm -rf /tmp/ghcup* && \ rm -rf /tmp/ghcup* && \
ghcup gc -p -s -c -t ghcup gc -p -s -c -t

View File

@@ -29,8 +29,8 @@ RUN apt-get update && \
RUN update_opt.sh 11 1 RUN update_opt.sh 11 1
ARG GHCUP_VERSION=0.1.19.4 ARG GHCUP_VERSION=0.1.20.0
ARG GPG_KEY=7D1E8AFD1D4A16D71FADA2F2CCC85C0E40C06A8C ARG GPG_KEY="7D1E8AFD1D4A16D71FADA2F2CCC85C0E40C06A8C FFEB7CE81E16A36B3E2DED6F2DE04D4E97DB64AD 88B57FCF7DB53B4DB3BFA4B1588764FBE22D19C4 EAF2A9A722C0C96F2B431CA511AAD8CEDEE0CAEF"
# install ghcup # install ghcup
RUN gpg --batch --keyserver keys.openpgp.org --recv-keys $GPG_KEY && \ RUN gpg --batch --keyserver keys.openpgp.org --recv-keys $GPG_KEY && \
@@ -43,9 +43,9 @@ RUN gpg --batch --keyserver keys.openpgp.org --recv-keys $GPG_KEY && \
chmod +x /usr/bin/ghcup && \ chmod +x /usr/bin/ghcup && \
rm -rf SHA256SUMS SHA256SUMS.sig rm -rf SHA256SUMS SHA256SUMS.sig
ARG GHC=8.10.7 ARG GHC=9.2.8
ARG CABAL_INSTALL=3.6.2.0 ARG CABAL_INSTALL=3.6.2.0
ARG STACK=2.9.1 ARG STACK=2.13.1
ENV GHCUP_CURL_OPTS="--silent" ENV GHCUP_CURL_OPTS="--silent"
ENV NO_COLOR=1 ENV NO_COLOR=1

View File

@@ -29,8 +29,8 @@ RUN apt-get update && \
RUN update_opt.sh 11 1 RUN update_opt.sh 11 1
ARG GHCUP_VERSION=0.1.19.4 ARG GHCUP_VERSION=0.1.20.0
ARG GPG_KEY=7D1E8AFD1D4A16D71FADA2F2CCC85C0E40C06A8C ARG GPG_KEY="7D1E8AFD1D4A16D71FADA2F2CCC85C0E40C06A8C FFEB7CE81E16A36B3E2DED6F2DE04D4E97DB64AD 88B57FCF7DB53B4DB3BFA4B1588764FBE22D19C4 EAF2A9A722C0C96F2B431CA511AAD8CEDEE0CAEF"
# install ghcup # install ghcup
RUN gpg --batch --keyserver keys.openpgp.org --recv-keys $GPG_KEY && \ RUN gpg --batch --keyserver keys.openpgp.org --recv-keys $GPG_KEY && \
@@ -43,9 +43,9 @@ RUN gpg --batch --keyserver keys.openpgp.org --recv-keys $GPG_KEY && \
chmod +x /usr/bin/ghcup && \ chmod +x /usr/bin/ghcup && \
rm -rf SHA256SUMS SHA256SUMS.sig rm -rf SHA256SUMS SHA256SUMS.sig
ARG GHC=8.10.7 ARG GHC=9.4.8
ARG CABAL_INSTALL=3.6.2.0 ARG CABAL_INSTALL=3.10.2.0
ARG STACK=2.9.1 ARG STACK=2.13.1
ENV GHCUP_CURL_OPTS="--silent" ENV GHCUP_CURL_OPTS="--silent"
ENV NO_COLOR=1 ENV NO_COLOR=1

View File

@@ -4,7 +4,7 @@ This is a more in-depth guide specific to GHCup. `ghcup --help` is your friend.
## Basic usage ## Basic usage
For the simple, interactive, text-based user interface (TUI) (not available on windows), run: For the simple, interactive, text-based user interface (TUI), run:
```sh ```sh
ghcup tui ghcup tui
@@ -67,8 +67,7 @@ and make sure your bashrc sources the startup script
`ghcup` is very portable. There are a few exceptions though: `ghcup` is very portable. There are a few exceptions though:
1. `ghcup tui` is only available on non-windows platforms 1. legacy subcommands `ghcup install` (without a tool identifier) and `ghcup install-cabal` may be removed in the future
2. legacy subcommands `ghcup install` (without a tool identifier) and `ghcup install-cabal` may be removed in the future
# Configuration # Configuration
@@ -508,6 +507,9 @@ libraries, this may need some tweaking of `build.mk` or configure args.
See `ghcup compile ghc --help` for further information. See `ghcup compile ghc --help` for further information.
Since ghcup version 0.1.20.0, we provide cross bindists for GHC JS and WASM. These can be installed conveniently. Since ghcup version 0.1.20.0, we provide cross bindists for GHC JS and WASM. These can be installed conveniently.
However, these are intended as a developer preview only. By using these GHC variants, you are implicitly signing up to participate in GHC development!
If you run into bugs or missing behavior, join the dev chat at https://matrix.to/#/#GHC:matrix.org.
First, add the cross release channel: First, add the cross release channel:
```sh ```sh
@@ -516,7 +518,7 @@ ghcup config add-release-channel https://raw.githubusercontent.com/haskell/ghcup
The next sections explain how to install each cross bindist. The next sections explain how to install each cross bindist.
### GHC JS cross bindists ### GHC JS cross bindists (experimental)
You need the required emscripten JS toolchain: You need the required emscripten JS toolchain:
@@ -546,7 +548,7 @@ javascript-unknown-ghcjs-ghc -fforce-recomp hello.hs
You can follow the instructions [here](https://gitlab.haskell.org/ghc/ghc/-/wikis/javascript-backend/building#compiling-hello-world). You can follow the instructions [here](https://gitlab.haskell.org/ghc/ghc/-/wikis/javascript-backend/building#compiling-hello-world).
### GHC WASM cross bindists ### GHC WASM cross bindists (experimental)
You need the required wasm toolchain: You need the required wasm toolchain:
@@ -554,7 +556,7 @@ You need the required wasm toolchain:
git clone https://gitlab.haskell.org/ghc/ghc-wasm-meta.git git clone https://gitlab.haskell.org/ghc/ghc-wasm-meta.git
cd ghc-wasm-meta/ cd ghc-wasm-meta/
export SKIP_GHC=yes export SKIP_GHC=yes
sh setup.sh ./setup.sh
source ~/.ghc-wasm/env source ~/.ghc-wasm/env
``` ```

View File

@@ -327,10 +327,10 @@ executable ghcup
, brick ^>=2.1 , brick ^>=2.1
, transformers ^>=0.5 , transformers ^>=0.5
, vty ^>=6.0 , vty ^>=6.0
, optics ^>=0.4
if os(windows) if os(windows)
cpp-options: -DIS_WINDOWS cpp-options: -DIS_WINDOWS
else else
build-depends: unix ^>=2.7 build-depends: unix ^>=2.7

View File

@@ -29,6 +29,7 @@ import Data.Maybe
import Options.Applicative hiding ( style ) import Options.Applicative hiding ( style )
import Prelude hiding ( appendFile ) import Prelude hiding ( appendFile )
import System.Exit import System.Exit
import System.Process ( system )
import Text.PrettyPrint.HughesPJClass ( prettyShow ) import Text.PrettyPrint.HughesPJClass ( prettyShow )
import qualified Data.Text as T import qualified Data.Text as T
@@ -128,21 +129,22 @@ changelog ChangeLogOptions{..} runAppState runLogger = do
Just uri -> do Just uri -> do
pfreq <- runAppState getPlatformReq pfreq <- runAppState getPlatformReq
let uri' = T.unpack . decUTF8Safe . serializeURIRef' $ uri let uri' = T.unpack . decUTF8Safe . serializeURIRef' $ uri
cmd = case _rPlatform pfreq of
Darwin -> "open"
Linux _ -> "xdg-open"
FreeBSD -> "xdg-open"
Windows -> "start"
if clOpen if clOpen
then do then do
runAppState $ runAppState $
exec cmd case _rPlatform pfreq of
[T.unpack $ decUTF8Safe $ serializeURIRef' uri] Darwin -> exec "open" [T.unpack $ decUTF8Safe $ serializeURIRef' uri] Nothing Nothing
Nothing Linux _ -> exec "xdg-open" [T.unpack $ decUTF8Safe $ serializeURIRef' uri] Nothing Nothing
Nothing FreeBSD -> exec "xdg-open" [T.unpack $ decUTF8Safe $ serializeURIRef' uri] Nothing Nothing
Windows -> do
let args = "start \"\" " ++ (T.unpack $ decUTF8Safe $ serializeURIRef' uri)
c <- liftIO $ system $ args
case c of
(ExitFailure xi) -> pure $ Left $ NonZeroExit xi "cmd.exe" [args]
ExitSuccess -> pure $ Right ()
>>= \case >>= \case
Right _ -> pure ExitSuccess Right _ -> pure ExitSuccess
Left e -> logError (T.pack $ prettyHFError e) Left e -> logError (T.pack $ prettyHFError e)
>> pure (ExitFailure 13) >> pure (ExitFailure 13)
else liftIO $ putStrLn uri' >> pure ExitSuccess else liftIO $ putStrLn uri' >> pure ExitSuccess

View File

@@ -149,7 +149,6 @@ updateSettings usl usr =
, kSet = kSet kbl <|> kSet kbr , kSet = kSet kbl <|> kSet kbr
, kChangelog = kChangelog kbl <|> kChangelog kbr , kChangelog = kChangelog kbl <|> kChangelog kbr
, kShowAll = kShowAll kbl <|> kShowAll kbr , kShowAll = kShowAll kbl <|> kShowAll kbr
, kShowAllTools = kShowAllTools kbl <|> kShowAllTools kbr
} }

View File

@@ -152,6 +152,9 @@ getLinuxDistro = do
| hasWord name ["exherbo"] -> Exherbo | hasWord name ["exherbo"] -> Exherbo
| hasWord name ["gentoo"] -> Gentoo | hasWord name ["gentoo"] -> Gentoo
| hasWord name ["amazonlinux", "Amazon Linux"] -> AmazonLinux | hasWord name ["amazonlinux", "Amazon Linux"] -> AmazonLinux
| hasWord name ["rocky", "Rocky Linux"] -> Rocky
-- https://github.com/void-linux/void-packages/blob/master/srcpkgs/base-files/files/os-release
| hasWord name ["void", "Void Linux"] -> Void
| otherwise -> UnknownLinux | otherwise -> UnknownLinux
pure (distro, parsedVer) pure (distro, parsedVer)
where where

View File

@@ -80,7 +80,7 @@ logInternal logLevel msg = do
Info -> style' "[ Info ]" Info -> style' "[ Info ]"
Warn -> style' "[ Warn ]" Warn -> style' "[ Warn ]"
Error -> style' "[ Error ]" Error -> style' "[ Error ]"
let strs = T.split (== '\n') msg let strs = T.split (== '\n') . T.dropWhileEnd (`elem` ("\n\r" :: String)) $ msg
let out = case strs of let out = case strs of
[] -> T.empty [] -> T.empty
(x:xs) -> (x:xs) ->

View File

@@ -422,7 +422,6 @@ fromSettings Settings{..} (Just KeyBindings{..}) =
, kSet = Just bSet , kSet = Just bSet
, kChangelog = Just bChangelog , kChangelog = Just bChangelog
, kShowAll = Just bShowAllVersions , kShowAll = Just bShowAllVersions
, kShowAllTools = Just bShowAllTools
} }
in UserSettings { in UserSettings {
uCache = Just cache uCache = Just cache
@@ -449,7 +448,6 @@ data UserKeyBindings = UserKeyBindings
, kSet :: Maybe KeyCombination , kSet :: Maybe KeyCombination
, kChangelog :: Maybe KeyCombination , kChangelog :: Maybe KeyCombination
, kShowAll :: Maybe KeyCombination , kShowAll :: Maybe KeyCombination
, kShowAllTools :: Maybe KeyCombination
} }
deriving (Show, GHC.Generic, Eq) deriving (Show, GHC.Generic, Eq)
@@ -462,7 +460,6 @@ data KeyBindings = KeyBindings
, bSet :: KeyCombination , bSet :: KeyCombination
, bChangelog :: KeyCombination , bChangelog :: KeyCombination
, bShowAllVersions :: KeyCombination , bShowAllVersions :: KeyCombination
, bShowAllTools :: KeyCombination
} }
deriving (Show, GHC.Generic) deriving (Show, GHC.Generic)
@@ -485,7 +482,6 @@ defaultKeyBindings = KeyBindings
, bSet = KeyCombination { key = KChar 's', mods = [] } , bSet = KeyCombination { key = KChar 's', mods = [] }
, bChangelog = KeyCombination { key = KChar 'c', mods = [] } , bChangelog = KeyCombination { key = KChar 'c', mods = [] }
, bShowAllVersions = KeyCombination { key = KChar 'a', mods = [] } , bShowAllVersions = KeyCombination { key = KChar 'a', mods = [] }
, bShowAllTools = KeyCombination { key = KChar 't', mods = [] }
} }
data AppState = AppState data AppState = AppState

View File

@@ -35,7 +35,7 @@ export GHCUP_SKIP_UPDATE_CHECK=yes
: "${BOOTSTRAP_HASKELL_DOWNLOADER:=curl}" : "${BOOTSTRAP_HASKELL_DOWNLOADER:=curl}"
case "${plat}" in case "${plat}" in
MSYS*|MINGW*) MSYS*|MINGW*|CYGWIN*)
: "${GHCUP_INSTALL_BASE_PREFIX:=/c}" : "${GHCUP_INSTALL_BASE_PREFIX:=/c}"
GHCUP_DIR=$(cygpath -u "${GHCUP_INSTALL_BASE_PREFIX}/ghcup") GHCUP_DIR=$(cygpath -u "${GHCUP_INSTALL_BASE_PREFIX}/ghcup")
GHCUP_BIN=$(cygpath -u "${GHCUP_INSTALL_BASE_PREFIX}/ghcup/bin") GHCUP_BIN=$(cygpath -u "${GHCUP_INSTALL_BASE_PREFIX}/ghcup/bin")
@@ -72,7 +72,7 @@ warn() {
printf "%s\\n" "$1" printf "%s\\n" "$1"
else else
case "${plat}" in case "${plat}" in
MSYS*|MINGW*) MSYS*|MINGW*|CYGWIN*)
# shellcheck disable=SC3037 # shellcheck disable=SC3037
echo -e "\\033[0;35m$1\\033[0m" echo -e "\\033[0;35m$1\\033[0m"
;; ;;
@@ -88,7 +88,7 @@ yellow() {
printf "%s\\n" "$1" printf "%s\\n" "$1"
else else
case "${plat}" in case "${plat}" in
MSYS*|MINGW*) MSYS*|MINGW*|CYGWIN*)
# shellcheck disable=SC3037 # shellcheck disable=SC3037
echo -e "\\033[0;33m$1\\033[0m" echo -e "\\033[0;33m$1\\033[0m"
;; ;;
@@ -104,7 +104,7 @@ green() {
printf "%s\\n" "$1" printf "%s\\n" "$1"
else else
case "${plat}" in case "${plat}" in
MSYS*|MINGW*) MSYS*|MINGW*|CYGWIN*)
# shellcheck disable=SC3037 # shellcheck disable=SC3037
echo -e "\\033[0;32m$1\\033[0m" echo -e "\\033[0;32m$1\\033[0m"
;; ;;
@@ -160,7 +160,7 @@ _done() {
echo echo
echo "===============================================================================" echo "==============================================================================="
case "${plat}" in case "${plat}" in
MSYS*|MINGW*) MSYS*|MINGW*|CYGWIN*)
green green
green "All done!" green "All done!"
green green
@@ -313,7 +313,7 @@ download_ghcup() {
;; ;;
esac esac
;; ;;
MSYS*|MINGW*) MSYS*|MINGW*|CYGWIN*)
case "${arch}" in case "${arch}" in
x86_64|amd64) x86_64|amd64)
_url=${GHCUP_BASE_URL}/${ghver}/x86_64-mingw64-ghcup-${ghver}.exe _url=${GHCUP_BASE_URL}/${ghver}/x86_64-mingw64-ghcup-${ghver}.exe
@@ -326,7 +326,7 @@ download_ghcup() {
;; ;;
esac esac
case "${plat}" in case "${plat}" in
MSYS*|MINGW*) MSYS*|MINGW*|CYGWIN*)
case "${BOOTSTRAP_HASKELL_DOWNLOADER}" in case "${BOOTSTRAP_HASKELL_DOWNLOADER}" in
"curl") "curl")
# shellcheck disable=SC2086 # shellcheck disable=SC2086
@@ -545,7 +545,7 @@ adjust_bashrc() {
printf "\n%s" "[[ -f ~/.bashrc ]] && source ~/.bashrc # ghcup-env" >> "${HOME}/.bash_profile" printf "\n%s" "[[ -f ~/.bashrc ]] && source ~/.bashrc # ghcup-env" >> "${HOME}/.bash_profile"
fi fi
;; ;;
MSYS*|MINGW*) MSYS*|MINGW*|CYGWIN*)
if [ ! -e "${HOME}/.bash_profile" ] ; then if [ ! -e "${HOME}/.bash_profile" ] ; then
echo '# generated by ghcup' > "${HOME}/.bash_profile" echo '# generated by ghcup' > "${HOME}/.bash_profile"
echo 'test -f ~/.profile && . ~/.profile' >> "${HOME}/.bash_profile" echo 'test -f ~/.profile && . ~/.profile' >> "${HOME}/.bash_profile"
@@ -595,7 +595,7 @@ adjust_cabal_config() {
ask_cabal_config_init() { ask_cabal_config_init() {
case "${plat}" in case "${plat}" in
MSYS*|MINGW*) MSYS*|MINGW*|CYGWIN*)
if [ -n "${BOOTSTRAP_HASKELL_ADJUST_CABAL_CONFIG}" ] ; then if [ -n "${BOOTSTRAP_HASKELL_ADJUST_CABAL_CONFIG}" ] ; then
return 1 return 1
fi fi
@@ -636,7 +636,7 @@ ask_cabal_config_init() {
do_cabal_config_init() { do_cabal_config_init() {
case "${plat}" in case "${plat}" in
MSYS*|MINGW*) MSYS*|MINGW*|CYGWIN*)
case $1 in case $1 in
1) 1)
adjust_cabal_config adjust_cabal_config
@@ -756,7 +756,7 @@ if [ -z "${GHCUP_USE_XDG_DIRS}" ] ; then
echo "ghcup installs only into the following directory," echo "ghcup installs only into the following directory,"
echo "which can be removed anytime:" echo "which can be removed anytime:"
case "${plat}" in case "${plat}" in
MSYS*|MINGW*) MSYS*|MINGW*|CYGWIN*)
echo " $(cygpath -w "$GHCUP_DIR")" echo " $(cygpath -w "$GHCUP_DIR")"
;; ;;
*) *)
@@ -823,7 +823,7 @@ if [ -z "${BOOTSTRAP_HASKELL_MINIMAL}" ] ; then
edo cabal update --ignore-project edo cabal update --ignore-project
else # don't install ghc and cabal else # don't install ghc and cabal
case "${plat}" in case "${plat}" in
MSYS*|MINGW*) MSYS*|MINGW*|CYGWIN*)
# need to bootstrap cabal to initialize config on windows # need to bootstrap cabal to initialize config on windows
# we'll remove it afterwards # we'll remove it afterwards
tmp_dir="$(mktemp -d)" tmp_dir="$(mktemp -d)"

View File

@@ -476,7 +476,9 @@ if (!(Test-Path -Path ('{0}' -f $MsysDir))) {
Print-Msg -msg 'Extracting Msys2 archive...' Print-Msg -msg 'Extracting Msys2 archive...'
$null = & "$archivePath" '-y' ('-o{0}' -f $GhcupDir) # Extract $null = & "$archivePath" '-y' ('-o{0}' -f $GhcupDir) # Extract
Remove-Item -Path "$archivePath" # We ignore errors because we don't want the installation script to fail just because a temporary file can't be removed.
# Relevant issue: https://github.com/haskell/ghcup-hs/issues/952
Remove-Item -Path "$archivePath" -ErrorAction Continue
Print-Msg -msg 'Processing MSYS2 bash for first time use...' Print-Msg -msg 'Processing MSYS2 bash for first time use...'
Exec "$Bash" '-lc' 'exit' Exec "$Bash" '-lc' 'exit'