Compare commits
193 Commits
brick-wind
...
master
Author | SHA1 | Date | |
---|---|---|---|
7daf199610 | |||
|
23c185e3e0 | ||
682e0e94f7 | |||
814f0cd184 | |||
15a8137c99 | |||
7d662bb020 | |||
df6205c482 | |||
7a9d897c14 | |||
183498df7e | |||
53695fbb11 | |||
|
ca10f8ce62 | ||
|
978c6d2704 | ||
eebbc9908b | |||
b37ac53aaf | |||
be4a1bdf7a | |||
7cad0ca9fe | |||
bd6ac3068b | |||
1e634131ca | |||
87c61def9b | |||
11a3bd3e1b | |||
243b200fb8 | |||
700cf74001 | |||
95ac5c8fc6 | |||
68225c1933 | |||
1e0843d2ce | |||
b853443c9e | |||
7a684add89 | |||
63e714d1b1 | |||
3675c6b16c | |||
7f8bb14112 | |||
a4290909b4 | |||
36fb39553d | |||
18abdbf2d9 | |||
89ac09bbe1 | |||
65bf155326 | |||
6801bf9d88 | |||
456200e747 | |||
09e199a176 | |||
2ecc61ad92 | |||
dd8b23ff86 | |||
d78e7af80c | |||
cf8ed4211b | |||
39931d98b9 | |||
ac18c044e1 | |||
e5c941b4d7 | |||
065b307d60 | |||
5eaae9916d | |||
5d0a7b71a2 | |||
b4600b8183 | |||
f465243fc6 | |||
e4b0e8debf | |||
d9d13dda5f | |||
aef10a699e | |||
b413ade4db | |||
190d308ddf | |||
4314146247 | |||
4831798c9e | |||
e999e6f5b8 | |||
3ad785c116 | |||
be3db87410 | |||
57d23c477d | |||
0ec07636fb | |||
bdd15ad6e7 | |||
96f7aa5c62 | |||
2fdf896fbd | |||
251c82ee9f | |||
c2186bb33c | |||
1a9d43ea1a | |||
9de324d3c3 | |||
b53acfe61f | |||
|
c92f71471d | ||
2a79c669a5 | |||
9b2d326c38 | |||
2bfca3760c | |||
0f7f5347d8 | |||
80703d7b29 | |||
942685f396 | |||
02744ff4a0 | |||
c74409b9a5 | |||
1c32dbc88a | |||
ab17270761 | |||
d0538a50e0 | |||
318ac21e41 | |||
3e9bb7c369 | |||
2c64cd0f02 | |||
59e6b65249 | |||
91ef2c7666 | |||
935cb5541b | |||
9a7eb11c73 | |||
4b338ccfd8 | |||
ca92b29ffe | |||
ec4e69e89d | |||
c225f2cfee | |||
e325728f38 | |||
c9a44d211e | |||
4b3ffd8570 | |||
3e9746cf0c | |||
950155cbe3 | |||
dd978ff2fd | |||
4bbaffaa6f | |||
2a12362e75 | |||
411ac8dc31 | |||
b837a93176 | |||
1c56e782d2 | |||
c6c61ca486 | |||
6ae312c1f9 | |||
f6cf4cb90c | |||
3ff65219e8 | |||
e33f554838 | |||
2850f343b9 | |||
|
8d6445c632 | ||
|
de611e0d4e | ||
|
6fec9d4737 | ||
|
856e48aa14 | ||
|
2cafd9d2bc | ||
|
87ec8c756f | ||
2ece023c0f | |||
16e20ed474 | |||
afd7e7dc4f | |||
d46bdbf959 | |||
cac3cec135 | |||
4e0efff4c4 | |||
71b7c96ddd | |||
5ff61cdf86 | |||
7d0ba7fc62 | |||
bfe56aed1f | |||
a1103c05a5 | |||
125125b9db | |||
4eec582f1b | |||
e969489ca2 | |||
ec4a657b42 | |||
55030d83da | |||
|
dfe213824f | ||
c680a9f33b | |||
df192ee18e | |||
|
008def2ff4 | ||
|
3976daddb7 | ||
524cdbbeb1 | |||
a01c5acfe2 | |||
|
6689312ac5 | ||
e214695a3e | |||
|
9d7f99bd00 | ||
3cea6ef97c | |||
3b0f131a65 | |||
|
e0a3020e34 | ||
|
0e46b9509a | ||
|
d3474d0cd9 | ||
|
5c3dad1bb9 | ||
|
987cdaf313 | ||
|
835352428a | ||
|
8f4246e716 | ||
|
1353a2fd20 | ||
|
aa9fbdbfc2 | ||
3a8cdf9967 | |||
2caf491e9d | |||
d277e56121 | |||
335099ad19 | |||
b1106985ec | |||
cd8ce9aaa9 | |||
18f0cb086b | |||
dee54445bf | |||
|
2df59fd1b3 | ||
2e5dee8e1a | |||
c6aa5c3ed7 | |||
47ef380ebd | |||
d6601b0353 | |||
0eba225723 | |||
e7d91d138b | |||
0103e2771e | |||
b6246734e4 | |||
6146c3494f | |||
e5a7a2da70 | |||
6047614a16 | |||
6a86e9e77e | |||
4132447e04 | |||
9d223730de | |||
ad9199568b | |||
0d91c2ac14 | |||
8644ca41e1 | |||
|
6051c0cfbc | ||
67d977ce39 | |||
8b6b3d2fbe | |||
a5d228ba89 | |||
a7be1e7068 | |||
90b0281c1c | |||
|
bba92baeb1 | ||
e06a1c03d4 | |||
0171f2e870 | |||
da078c7362 | |||
94b4b7c455 | |||
6aa486594a | |||
2c3148abcc | |||
|
bb395b652d |
28
.cirrus.yml
28
.cirrus.yml
@ -1,28 +0,0 @@
|
|||||||
freebsd_instance:
|
|
||||||
image_family: freebsd-13-2
|
|
||||||
|
|
||||||
build_task:
|
|
||||||
name: build
|
|
||||||
env:
|
|
||||||
GHC_VER: 9.2.4
|
|
||||||
CABAL_VER: 3.8.1.0
|
|
||||||
ARTIFACT: "x86_64-portbld-freebsd-ghcup"
|
|
||||||
ARCH: 64
|
|
||||||
RUNNER_OS: FreeBSD
|
|
||||||
DISTRO: na
|
|
||||||
GITHUB_WORKSPACE: ${CIRRUS_WORKING_DIR}
|
|
||||||
JSON_VERSION: "0.0.7"
|
|
||||||
CIRRUS_CLONE_SUBMODULES: true
|
|
||||||
AWS_ACCESS_KEY_ID: ENCRYPTED[6ed6287e2dd78ab5f84b22232c5245834ab042bd8ba443883aaf4b4d1ecc0481add1fdfad5ae6f6a8cfb418e6f19b2fc]
|
|
||||||
AWS_SECRET_ACCESS_KEY: ENCRYPTED[16f3cda2954c7cee99444e6788eb5997382aa4ce1477e7523fef2586077541f43b5c816156961fc6b4677259679875a7]
|
|
||||||
S3_HOST: ENCRYPTED[ce961780a33159f7d1d8046956b5ac6ebc3bfc8149428e5f538576cda51d9f3d0c35b79cdd1e325793639ff6e31f889d]
|
|
||||||
install_script:
|
|
||||||
- sed -i.bak -e 's/quarterly/latest/' /etc/pkg/FreeBSD.conf
|
|
||||||
- pkg install -y ghc hs-cabal-install git bash misc/compat10x misc/compat11x misc/compat12x gmake llvm14
|
|
||||||
script:
|
|
||||||
- tzsetup Etc/GMT
|
|
||||||
- adjkerntz -a
|
|
||||||
- bash .github/scripts/build.sh
|
|
||||||
- bash .github/scripts/test.sh
|
|
||||||
binaries_artifacts:
|
|
||||||
path: "out/*"
|
|
2
.github/scripts/common.sh
vendored
2
.github/scripts/common.sh
vendored
@ -44,7 +44,7 @@ raw_eghcup() {
|
|||||||
|
|
||||||
eghcup() {
|
eghcup() {
|
||||||
if [ "${OS}" = "Windows" ] ; then
|
if [ "${OS}" = "Windows" ] ; then
|
||||||
"$GHCUP_BIN/ghcup${ext}" -c -s "file:/$CI_PROJECT_DIR/data/metadata/ghcup-${JSON_VERSION}.yaml" "$@"
|
"$GHCUP_BIN/ghcup${ext}" -c -s "file:${GITHUB_WORKSPACE//\\//}/data/metadata/ghcup-${JSON_VERSION}.yaml" "$@"
|
||||||
else
|
else
|
||||||
"$GHCUP_BIN/ghcup${ext}" -c -s "file://$CI_PROJECT_DIR/data/metadata/ghcup-${JSON_VERSION}.yaml" "$@"
|
"$GHCUP_BIN/ghcup${ext}" -c -s "file://$CI_PROJECT_DIR/data/metadata/ghcup-${JSON_VERSION}.yaml" "$@"
|
||||||
fi
|
fi
|
||||||
|
4
.github/scripts/env.sh
vendored
4
.github/scripts/env.sh
vendored
@ -9,6 +9,10 @@ fi
|
|||||||
export DEBIAN_FRONTEND=noninteractive
|
export DEBIAN_FRONTEND=noninteractive
|
||||||
export TZ=Asia/Singapore
|
export TZ=Asia/Singapore
|
||||||
|
|
||||||
|
if [ "${RUNNER_OS}" = "freebsd" ] ; then
|
||||||
|
export RUNNER_OS=FreeBSD
|
||||||
|
fi
|
||||||
|
|
||||||
export OS="$RUNNER_OS"
|
export OS="$RUNNER_OS"
|
||||||
export PATH="$HOME/.local/bin:$PATH"
|
export PATH="$HOME/.local/bin:$PATH"
|
||||||
|
|
||||||
|
11
.github/scripts/test.sh
vendored
11
.github/scripts/test.sh
vendored
@ -11,6 +11,7 @@ else
|
|||||||
GHCUP_DIR="${GHCUP_INSTALL_BASE_PREFIX}"/.ghcup
|
GHCUP_DIR="${GHCUP_INSTALL_BASE_PREFIX}"/.ghcup
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
env
|
||||||
git_describe
|
git_describe
|
||||||
|
|
||||||
rm -rf "${GHCUP_DIR}"
|
rm -rf "${GHCUP_DIR}"
|
||||||
@ -38,6 +39,12 @@ rm "ghcup-test${ext}" "ghcup-test-optparse${ext}"
|
|||||||
|
|
||||||
eghcup --numeric-version
|
eghcup --numeric-version
|
||||||
|
|
||||||
|
# test PATH on windows wrt msys2
|
||||||
|
# https://github.com/haskell/ghcup-hs/pull/992/checks
|
||||||
|
if [ "${OS}" = "Windows" ] ; then
|
||||||
|
eghcup run -m -- sh -c 'echo $PATH' | sed 's/:/\n/' | grep '^/mingw64/bin$'
|
||||||
|
fi
|
||||||
|
|
||||||
eghcup install ghc "${GHC_VER}"
|
eghcup install ghc "${GHC_VER}"
|
||||||
eghcup unset ghc "${GHC_VER}"
|
eghcup unset ghc "${GHC_VER}"
|
||||||
ls -lah "$(eghcup whereis -d ghc "${GHC_VER}")"
|
ls -lah "$(eghcup whereis -d ghc "${GHC_VER}")"
|
||||||
@ -193,7 +200,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 +210,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}" ]
|
||||||
|
4
.github/workflows/bootstrap.yaml
vendored
4
.github/workflows/bootstrap.yaml
vendored
@ -52,7 +52,9 @@ jobs:
|
|||||||
- if: runner.os == 'Windows'
|
- if: runner.os == 'Windows'
|
||||||
name: Run bootstrap
|
name: Run bootstrap
|
||||||
run: |
|
run: |
|
||||||
|
$ErrorActionPreference = [System.Management.Automation.ActionPreference]::Stop
|
||||||
$curDir = Get-Location
|
$curDir = Get-Location
|
||||||
Write-Host "Current Working Directory: $curDir"
|
Write-Host "Current Working Directory: $curDir"
|
||||||
./scripts/bootstrap/bootstrap-haskell.ps1 -InstallDir ${GITHUB_WORKSPACE} -BootstrapUrl ("{0}/scripts/bootstrap/bootstrap-haskell" -f $curDir) -InBash
|
./scripts/bootstrap/bootstrap-haskell.ps1 -InstallDir ${GITHUB_WORKSPACE} -BootstrapUrl ("{0}/scripts/bootstrap/bootstrap-haskell" -f $curDir) -InBash -Msys2Env "MINGW64"
|
||||||
shell: pwsh
|
shell: pwsh
|
||||||
|
|
||||||
|
39
.github/workflows/cabal.project.yaml
vendored
Normal file
39
.github/workflows/cabal.project.yaml
vendored
Normal file
@ -0,0 +1,39 @@
|
|||||||
|
name: Test cabal.project files
|
||||||
|
|
||||||
|
on:
|
||||||
|
push:
|
||||||
|
branches:
|
||||||
|
- master
|
||||||
|
tags:
|
||||||
|
- 'v*'
|
||||||
|
pull_request:
|
||||||
|
branches:
|
||||||
|
- master
|
||||||
|
schedule:
|
||||||
|
- cron: '0 2 * * *'
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
build:
|
||||||
|
name: Build binary
|
||||||
|
runs-on: ${{ matrix.os }}
|
||||||
|
strategy:
|
||||||
|
fail-fast: false
|
||||||
|
matrix:
|
||||||
|
os: [macOS-latest, macOS-11, windows-latest, ubuntu-latest]
|
||||||
|
ghc: ["8.10.7", "9.0.2", "9.2.8", "9.4.8"]
|
||||||
|
steps:
|
||||||
|
- name: Checkout code
|
||||||
|
uses: actions/checkout@v4
|
||||||
|
with:
|
||||||
|
submodules: 'true'
|
||||||
|
|
||||||
|
- name: Run build
|
||||||
|
run: |
|
||||||
|
env
|
||||||
|
ghcup --version
|
||||||
|
ghcup run -i --cabal latest -- cabal update
|
||||||
|
ghcup run -i --cabal latest --ghc ${GHC_VER} -- cabal build --project-file=cabal.ghc${GHC_VER//./}.project
|
||||||
|
env:
|
||||||
|
GHC_VER: ${{ matrix.ghc }}
|
||||||
|
shell: bash
|
||||||
|
|
43
.github/workflows/cross.yaml
vendored
43
.github/workflows/cross.yaml
vendored
@ -19,10 +19,10 @@ env:
|
|||||||
jobs:
|
jobs:
|
||||||
build:
|
build:
|
||||||
name: Build linux binary
|
name: Build linux binary
|
||||||
runs-on: ubuntu-latest
|
runs-on: [self-hosted, Linux, X64, maerwald]
|
||||||
env:
|
env:
|
||||||
CABAL_VER: 3.10.1.0
|
CABAL_VER: 3.10.3.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 }}
|
||||||
@ -31,7 +31,7 @@ jobs:
|
|||||||
ARCH: 64
|
ARCH: 64
|
||||||
steps:
|
steps:
|
||||||
- name: Checkout code
|
- name: Checkout code
|
||||||
uses: actions/checkout@v3
|
uses: actions/checkout@v4
|
||||||
with:
|
with:
|
||||||
submodules: 'true'
|
submodules: 'true'
|
||||||
|
|
||||||
@ -50,7 +50,7 @@ jobs:
|
|||||||
|
|
||||||
- if: always()
|
- if: always()
|
||||||
name: Upload artifact
|
name: Upload artifact
|
||||||
uses: actions/upload-artifact@v3
|
uses: actions/upload-artifact@v4
|
||||||
with:
|
with:
|
||||||
name: artifacts
|
name: artifacts
|
||||||
path: |
|
path: |
|
||||||
@ -61,13 +61,13 @@ jobs:
|
|||||||
needs: "build"
|
needs: "build"
|
||||||
runs-on: [self-hosted, Linux, X64]
|
runs-on: [self-hosted, Linux, X64]
|
||||||
container:
|
container:
|
||||||
image: registry.gitlab.haskell.org/ghc/ci-images/x86_64-linux-deb10:8d0224e6b2a08157649651e69302380b2bd24e11
|
image: registry.gitlab.haskell.org/ghc/ci-images/x86_64-linux-deb12:a9297a370025101b479cfd4977f8f910814e03ab
|
||||||
options: --user root
|
options: --user root
|
||||||
env:
|
env:
|
||||||
CABAL_VER: 3.6.2.0
|
CABAL_VER: 3.10.3.0
|
||||||
BUILD_CONF_ARGS: "--enable-unregisterised"
|
BUILD_CONF_ARGS: "--enable-unregisterised"
|
||||||
HADRIAN_FLAVOUR: ""
|
HADRIAN_FLAVOUR: ""
|
||||||
JSON_VERSION: "0.0.7"
|
JSON_VERSION: "0.0.8"
|
||||||
GHC_VER: 8.10.6
|
GHC_VER: 8.10.6
|
||||||
GHC_TARGET_VERSION: "8.10.7"
|
GHC_TARGET_VERSION: "8.10.7"
|
||||||
ARCH: 64
|
ARCH: 64
|
||||||
@ -77,11 +77,11 @@ jobs:
|
|||||||
WRAPPER: "run"
|
WRAPPER: "run"
|
||||||
steps:
|
steps:
|
||||||
- name: Checkout code
|
- name: Checkout code
|
||||||
uses: actions/checkout@v3
|
uses: actions/checkout@v4
|
||||||
with:
|
with:
|
||||||
submodules: 'true'
|
submodules: 'true'
|
||||||
|
|
||||||
- uses: actions/download-artifact@v3
|
- uses: actions/download-artifact@v4
|
||||||
with:
|
with:
|
||||||
name: artifacts
|
name: artifacts
|
||||||
path: ./out
|
path: ./out
|
||||||
@ -89,11 +89,18 @@ jobs:
|
|||||||
- name: Run test (64 bit linux)
|
- name: Run test (64 bit linux)
|
||||||
run: |
|
run: |
|
||||||
sudo apt-get update -y
|
sudo apt-get update -y
|
||||||
sudo apt-get install -y libnuma-dev zlib1g-dev libgmp-dev libgmp10 libssl-dev liblzma-dev libbz2-dev git wget lsb-release software-properties-common gnupg2 apt-transport-https gcc autoconf automake build-essential curl gzip
|
sudo apt-get install -y libnuma-dev zlib1g-dev libgmp-dev libgmp10 libssl-dev liblzma-dev libbz2-dev git wget lsb-release software-properties-common gnupg2 apt-transport-https gcc autoconf automake build-essential curl gzip libstdc++-11-dev
|
||||||
sudo apt-get install -y gcc-arm-linux-gnueabihf
|
sudo apt-get install -y gcc-arm-linux-gnueabihf g++-arm-linux-gnueabihf
|
||||||
sudo dpkg --add-architecture armhf
|
sudo dpkg --add-architecture armhf
|
||||||
sudo apt-get update -y
|
sudo apt-get update -y
|
||||||
sudo apt-get install -y libncurses-dev:armhf
|
sudo apt-get install -y libncurses-dev:armhf libstdc++-11-dev:armhf
|
||||||
|
# ld.bfd is broken on armv7: https://sourceware.org/bugzilla/show_bug.cgi?id=16177
|
||||||
|
update-alternatives --install "/usr/bin/x86_64-linux-gnu-ld" "ld" "/usr/bin/x86_64-linux-gnu-ld.gold" 20
|
||||||
|
update-alternatives --install "/usr/bin/x86_64-linux-gnu-ld" "ld" "/usr/bin/x86_64-linux-gnu-ld.bfd" 10
|
||||||
|
update-alternatives --set "ld" "/usr/bin/x86_64-linux-gnu-ld.gold"
|
||||||
|
update-alternatives --install "/usr/bin/arm-linux-gnueabihf-ld" "ld-arm" "/usr/bin/arm-linux-gnueabihf-ld.gold" 20
|
||||||
|
update-alternatives --install "/usr/bin/arm-linux-gnueabihf-ld" "ld-arm" "/usr/bin/arm-linux-gnueabihf-ld.bfd" 10
|
||||||
|
update-alternatives --set "ld-arm" "/usr/bin/arm-linux-gnueabihf-ld.gold"
|
||||||
sh .github/scripts/cross.sh
|
sh .github/scripts/cross.sh
|
||||||
|
|
||||||
test-cross-js:
|
test-cross-js:
|
||||||
@ -101,13 +108,13 @@ jobs:
|
|||||||
needs: "build"
|
needs: "build"
|
||||||
runs-on: [self-hosted, Linux, X64]
|
runs-on: [self-hosted, Linux, X64]
|
||||||
container:
|
container:
|
||||||
image: registry.gitlab.haskell.org/ghc/ci-images/x86_64-linux-deb10:8d0224e6b2a08157649651e69302380b2bd24e11
|
image: registry.gitlab.haskell.org/ghc/ci-images/x86_64-linux-deb12:a9297a370025101b479cfd4977f8f910814e03ab
|
||||||
options: --user root
|
options: --user root
|
||||||
env:
|
env:
|
||||||
CABAL_VER: 3.6.2.0
|
CABAL_VER: 3.10.3.0
|
||||||
BUILD_CONF_ARGS: ""
|
BUILD_CONF_ARGS: ""
|
||||||
HADRIAN_FLAVOUR: "default+native_bignum"
|
HADRIAN_FLAVOUR: "default+native_bignum"
|
||||||
JSON_VERSION: "0.0.7"
|
JSON_VERSION: "0.0.8"
|
||||||
GHC_VER: 9.6.2
|
GHC_VER: 9.6.2
|
||||||
GHC_TARGET_VERSION: "9.6.2"
|
GHC_TARGET_VERSION: "9.6.2"
|
||||||
ARCH: 64
|
ARCH: 64
|
||||||
@ -117,11 +124,11 @@ jobs:
|
|||||||
WRAPPER: "emconfigure"
|
WRAPPER: "emconfigure"
|
||||||
steps:
|
steps:
|
||||||
- name: Checkout code
|
- name: Checkout code
|
||||||
uses: actions/checkout@v3
|
uses: actions/checkout@v4
|
||||||
with:
|
with:
|
||||||
submodules: 'true'
|
submodules: 'true'
|
||||||
|
|
||||||
- uses: actions/download-artifact@v3
|
- uses: actions/download-artifact@v4
|
||||||
with:
|
with:
|
||||||
name: artifacts
|
name: artifacts
|
||||||
path: ./out
|
path: ./out
|
||||||
|
2
.github/workflows/docker.yaml
vendored
2
.github/workflows/docker.yaml
vendored
@ -57,6 +57,7 @@ jobs:
|
|||||||
steps:
|
steps:
|
||||||
- uses: docker://arm64v8/ubuntu:focal
|
- uses: docker://arm64v8/ubuntu:focal
|
||||||
name: Cleanup (aarch64 linux)
|
name: Cleanup (aarch64 linux)
|
||||||
|
continue-on-error: true
|
||||||
with:
|
with:
|
||||||
args: "find . -mindepth 1 -maxdepth 1 -exec rm -rf -- {} +"
|
args: "find . -mindepth 1 -maxdepth 1 -exec rm -rf -- {} +"
|
||||||
|
|
||||||
@ -93,6 +94,7 @@ jobs:
|
|||||||
steps:
|
steps:
|
||||||
- uses: docker://arm64v8/ubuntu:focal
|
- uses: docker://arm64v8/ubuntu:focal
|
||||||
name: Cleanup (aarch64 linux)
|
name: Cleanup (aarch64 linux)
|
||||||
|
continue-on-error: true
|
||||||
with:
|
with:
|
||||||
args: "find . -mindepth 1 -maxdepth 1 -exec rm -rf -- {} +"
|
args: "find . -mindepth 1 -maxdepth 1 -exec rm -rf -- {} +"
|
||||||
|
|
||||||
|
179
.github/workflows/release.yaml
vendored
179
.github/workflows/release.yaml
vendored
@ -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 }}
|
||||||
@ -36,11 +36,11 @@ jobs:
|
|||||||
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
|
||||||
uses: actions/checkout@v3
|
uses: actions/checkout@v4
|
||||||
with:
|
with:
|
||||||
submodules: 'true'
|
submodules: 'true'
|
||||||
|
|
||||||
@ -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 }}
|
||||||
@ -94,27 +94,22 @@ jobs:
|
|||||||
fail-fast: true
|
fail-fast: true
|
||||||
matrix:
|
matrix:
|
||||||
include:
|
include:
|
||||||
- os: [self-hosted, Linux, ARM64]
|
- os: [self-hosted, Linux, ARM64, maerwald]
|
||||||
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, maerwald]
|
||||||
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
|
|
||||||
name: Cleanup (aarch64 linux)
|
|
||||||
with:
|
|
||||||
args: "find . -mindepth 1 -maxdepth 1 -exec rm -rf -- {} +"
|
|
||||||
|
|
||||||
- name: git config
|
- name: git config
|
||||||
run: |
|
run: |
|
||||||
git config --global --get-all safe.directory | grep '^\*$' || git config --global --add safe.directory "*"
|
git config --global --get-all safe.directory | grep '^\*$' || git config --global --add safe.directory "*"
|
||||||
shell: bash
|
shell: bash
|
||||||
|
|
||||||
- name: Checkout code
|
- name: Checkout code
|
||||||
uses: actions/checkout@v3
|
uses: actions/checkout@v4
|
||||||
with:
|
with:
|
||||||
submodules: 'true'
|
submodules: 'true'
|
||||||
|
|
||||||
@ -131,6 +126,7 @@ jobs:
|
|||||||
AWS_SECRET_ACCESS_KEY: ${{ env.AWS_SECRET_ACCESS_KEY }}
|
AWS_SECRET_ACCESS_KEY: ${{ env.AWS_SECRET_ACCESS_KEY }}
|
||||||
AWS_ACCESS_KEY_ID: ${{ env.AWS_ACCESS_KEY_ID }}
|
AWS_ACCESS_KEY_ID: ${{ env.AWS_ACCESS_KEY_ID }}
|
||||||
S3_HOST: ${{ env.S3_HOST }}
|
S3_HOST: ${{ env.S3_HOST }}
|
||||||
|
LD: ld.gold
|
||||||
|
|
||||||
- if: matrix.ARCH == 'ARM64'
|
- if: matrix.ARCH == 'ARM64'
|
||||||
uses: docker://hasufell/arm64v8-debian-haskell:10
|
uses: docker://hasufell/arm64v8-debian-haskell:10
|
||||||
@ -158,9 +154,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,32 +166,32 @@ 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.4.8
|
||||||
ARCH: 64
|
ARCH: 64
|
||||||
steps:
|
steps:
|
||||||
- name: Checkout code
|
- name: Checkout code
|
||||||
uses: actions/checkout@v3
|
uses: actions/checkout@v4
|
||||||
with:
|
with:
|
||||||
submodules: 'true'
|
submodules: 'true'
|
||||||
|
|
||||||
- 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 }}
|
||||||
@ -246,13 +242,49 @@ jobs:
|
|||||||
path: |
|
path: |
|
||||||
./out/*
|
./out/*
|
||||||
|
|
||||||
|
build-freebsd:
|
||||||
|
name: Build binary (FreeBSD)
|
||||||
|
runs-on: [self-hosted, FreeBSD, X64]
|
||||||
|
env:
|
||||||
|
CABAL_VER: 3.10.2.0
|
||||||
|
MACOSX_DEPLOYMENT_TARGET: 10.13
|
||||||
|
JSON_VERSION: "0.0.8"
|
||||||
|
AWS_SECRET_ACCESS_KEY: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
|
||||||
|
AWS_ACCESS_KEY_ID: ${{ secrets.AWS_ACCESS_KEY_ID }}
|
||||||
|
S3_HOST: ${{ secrets.S3_HOST }}
|
||||||
|
ARTIFACT: "x86_64-portbld-freebsd-ghcup"
|
||||||
|
GHC_VER: 9.4.8
|
||||||
|
ARCH: 64
|
||||||
|
DISTRO: na
|
||||||
|
RUNNER_OS: FreeBSD
|
||||||
|
steps:
|
||||||
|
- name: Checkout code
|
||||||
|
uses: actions/checkout@v4
|
||||||
|
with:
|
||||||
|
submodules: 'true'
|
||||||
|
|
||||||
|
- name: Run build
|
||||||
|
run: |
|
||||||
|
sed -i.bak -e 's/quarterly/latest/' /etc/pkg/FreeBSD.conf
|
||||||
|
pkg install -y ghc hs-cabal-install git bash misc/compat10x misc/compat11x misc/compat12x gmake llvm14 libiconv
|
||||||
|
tzsetup Etc/GMT
|
||||||
|
adjkerntz -a
|
||||||
|
bash .github/scripts/build.sh
|
||||||
|
- if: always()
|
||||||
|
name: Upload artifact
|
||||||
|
uses: actions/upload-artifact@v3
|
||||||
|
with:
|
||||||
|
name: artifacts
|
||||||
|
path: |
|
||||||
|
./out/*
|
||||||
|
|
||||||
test-linux:
|
test-linux:
|
||||||
name: Test linux
|
name: Test linux
|
||||||
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:
|
||||||
@ -263,18 +295,18 @@ jobs:
|
|||||||
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
|
||||||
|
|
||||||
steps:
|
steps:
|
||||||
- name: Checkout code
|
- name: Checkout code
|
||||||
uses: actions/checkout@v3
|
uses: actions/checkout@v4
|
||||||
with:
|
with:
|
||||||
submodules: 'true'
|
submodules: 'true'
|
||||||
|
|
||||||
@ -322,37 +354,32 @@ jobs:
|
|||||||
with:
|
with:
|
||||||
name: testfiles
|
name: testfiles
|
||||||
path: |
|
path: |
|
||||||
./test/golden/unix/GHCupInfo*json
|
./test/ghcup-test/golden/unix/GHCupInfo*json
|
||||||
|
|
||||||
test-arm:
|
test-arm:
|
||||||
name: Test ARM
|
name: Test ARM
|
||||||
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, maerwald]
|
||||||
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, maerwald]
|
||||||
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
|
||||||
|
|
||||||
steps:
|
steps:
|
||||||
- uses: docker://arm64v8/debian:10
|
|
||||||
name: Cleanup (aarch64 linux)
|
|
||||||
with:
|
|
||||||
args: "find . -mindepth 1 -maxdepth 1 -exec rm -rf -- {} +"
|
|
||||||
|
|
||||||
- name: Checkout code
|
- name: Checkout code
|
||||||
uses: actions/checkout@v3
|
uses: actions/checkout@v4
|
||||||
with:
|
with:
|
||||||
submodules: 'true'
|
submodules: 'true'
|
||||||
|
|
||||||
@ -371,6 +398,7 @@ jobs:
|
|||||||
ARCH: ${{ matrix.ARCH }}
|
ARCH: ${{ matrix.ARCH }}
|
||||||
GHC_VER: ${{ matrix.GHC_VER }}
|
GHC_VER: ${{ matrix.GHC_VER }}
|
||||||
DISTRO: Ubuntu
|
DISTRO: Ubuntu
|
||||||
|
LD: ld.gold
|
||||||
|
|
||||||
- if: matrix.ARCH == 'ARM64'
|
- if: matrix.ARCH == 'ARM64'
|
||||||
uses: docker://hasufell/arm64v8-debian-haskell:10
|
uses: docker://hasufell/arm64v8-debian-haskell:10
|
||||||
@ -389,38 +417,38 @@ jobs:
|
|||||||
with:
|
with:
|
||||||
name: testfiles
|
name: testfiles
|
||||||
path: |
|
path: |
|
||||||
./test/golden/unix/GHCupInfo*json
|
./test/ghcup-test/golden/unix/GHCupInfo*json
|
||||||
|
|
||||||
test-macwin:
|
test-macwin:
|
||||||
name: Test Mac/Win
|
name: Test Mac/Win
|
||||||
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.4.8
|
||||||
ARCH: 64
|
ARCH: 64
|
||||||
DISTRO: na
|
DISTRO: na
|
||||||
|
|
||||||
steps:
|
steps:
|
||||||
- name: Checkout code
|
- name: Checkout code
|
||||||
uses: actions/checkout@v3
|
uses: actions/checkout@v4
|
||||||
with:
|
with:
|
||||||
submodules: 'true'
|
submodules: 'true'
|
||||||
|
|
||||||
@ -458,7 +486,7 @@ jobs:
|
|||||||
with:
|
with:
|
||||||
name: testfiles
|
name: testfiles
|
||||||
path: |
|
path: |
|
||||||
./test/golden/windows/GHCupInfo*json
|
./test/ghcup-test/golden/windows/GHCupInfo*json
|
||||||
|
|
||||||
- if: failure() && runner.os != 'Windows'
|
- if: failure() && runner.os != 'Windows'
|
||||||
name: Upload artifact
|
name: Upload artifact
|
||||||
@ -466,7 +494,42 @@ jobs:
|
|||||||
with:
|
with:
|
||||||
name: testfiles
|
name: testfiles
|
||||||
path: |
|
path: |
|
||||||
./test/golden/unix/GHCupInfo*json
|
./test/ghcup-test/golden/unix/GHCupInfo*json
|
||||||
|
test-freebsd:
|
||||||
|
name: Test FreeBSD
|
||||||
|
needs: "build-freebsd"
|
||||||
|
runs-on: [self-hosted, FreeBSD, X64]
|
||||||
|
env:
|
||||||
|
CABAL_VER: 3.10.2.0
|
||||||
|
MACOSX_DEPLOYMENT_TARGET: 10.13
|
||||||
|
JSON_VERSION: "0.0.8"
|
||||||
|
ARTIFACT: "x86_64-portbld-freebsd-ghcup"
|
||||||
|
GHC_VER: 9.4.8
|
||||||
|
ARCH: 64
|
||||||
|
DISTRO: na
|
||||||
|
RUNNER_OS: FreeBSD
|
||||||
|
steps:
|
||||||
|
- name: Checkout code
|
||||||
|
uses: actions/checkout@v4
|
||||||
|
with:
|
||||||
|
submodules: 'true'
|
||||||
|
|
||||||
|
- uses: actions/download-artifact@v3
|
||||||
|
with:
|
||||||
|
name: artifacts
|
||||||
|
path: ./out
|
||||||
|
|
||||||
|
- name: Run test
|
||||||
|
run: |
|
||||||
|
bash .github/scripts/test.sh
|
||||||
|
|
||||||
|
- if: failure()
|
||||||
|
name: Upload artifact
|
||||||
|
uses: actions/upload-artifact@v3
|
||||||
|
with:
|
||||||
|
name: testfiles
|
||||||
|
path: |
|
||||||
|
./test/ghcup-test/golden/unix/GHCupInfo*json
|
||||||
hls:
|
hls:
|
||||||
name: hls
|
name: hls
|
||||||
needs: build-linux
|
needs: build-linux
|
||||||
@ -475,7 +538,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
|
||||||
@ -484,7 +547,7 @@ jobs:
|
|||||||
S3_HOST: ${{ secrets.S3_HOST }}
|
S3_HOST: ${{ secrets.S3_HOST }}
|
||||||
steps:
|
steps:
|
||||||
- name: Checkout code
|
- name: Checkout code
|
||||||
uses: actions/checkout@v3
|
uses: actions/checkout@v4
|
||||||
with:
|
with:
|
||||||
submodules: 'true'
|
submodules: 'true'
|
||||||
|
|
||||||
@ -500,7 +563,7 @@ jobs:
|
|||||||
|
|
||||||
release:
|
release:
|
||||||
name: release
|
name: release
|
||||||
needs: ["test-linux", "test-arm", "test-macwin", "hls"]
|
needs: ["test-linux", "test-arm", "test-macwin", "test-freebsd", "hls"]
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
if: startsWith(github.ref, 'refs/tags/v')
|
if: startsWith(github.ref, 'refs/tags/v')
|
||||||
steps:
|
steps:
|
||||||
|
35
.github/workflows/stack.yaml
vendored
Normal file
35
.github/workflows/stack.yaml
vendored
Normal file
@ -0,0 +1,35 @@
|
|||||||
|
name: Test stack.yaml
|
||||||
|
|
||||||
|
on:
|
||||||
|
push:
|
||||||
|
branches:
|
||||||
|
- master
|
||||||
|
tags:
|
||||||
|
- 'v*'
|
||||||
|
pull_request:
|
||||||
|
branches:
|
||||||
|
- master
|
||||||
|
schedule:
|
||||||
|
- cron: '0 2 * * *'
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
build:
|
||||||
|
name: Build binary
|
||||||
|
runs-on: ${{ matrix.os }}
|
||||||
|
strategy:
|
||||||
|
fail-fast: false
|
||||||
|
matrix:
|
||||||
|
os: [macOS-latest, macOS-11, windows-latest, ubuntu-latest]
|
||||||
|
steps:
|
||||||
|
- name: Checkout code
|
||||||
|
uses: actions/checkout@v4
|
||||||
|
with:
|
||||||
|
submodules: 'true'
|
||||||
|
|
||||||
|
- name: Run build
|
||||||
|
run: |
|
||||||
|
env
|
||||||
|
ghcup --version
|
||||||
|
ghcup run -i --stack latest -- stack build
|
||||||
|
shell: bash
|
||||||
|
|
1
.gitignore
vendored
1
.gitignore
vendored
@ -4,6 +4,7 @@ codex.tags
|
|||||||
dist-newstyle/
|
dist-newstyle/
|
||||||
cabal.project.local
|
cabal.project.local
|
||||||
.stack-work/
|
.stack-work/
|
||||||
|
.hiefiles/
|
||||||
bin/
|
bin/
|
||||||
/*.prof
|
/*.prof
|
||||||
/*.ps
|
/*.ps
|
||||||
|
689
.gitlab-ci.yml
689
.gitlab-ci.yml
@ -1,689 +0,0 @@
|
|||||||
stages:
|
|
||||||
- checks
|
|
||||||
- quick-test
|
|
||||||
- test
|
|
||||||
- expensive-test
|
|
||||||
- release
|
|
||||||
|
|
||||||
variables:
|
|
||||||
GIT_SSL_NO_VERIFY: "1"
|
|
||||||
|
|
||||||
# Commit of ghc/ci-images repository from which to pull Docker images
|
|
||||||
DOCKER_REV: 8d0224e6b2a08157649651e69302380b2bd24e11
|
|
||||||
|
|
||||||
# Sequential version number of all cached things.
|
|
||||||
# Bump to invalidate GitLab CI cache.
|
|
||||||
CACHE_REV: 1
|
|
||||||
|
|
||||||
GIT_SUBMODULE_STRATEGY: recursive
|
|
||||||
|
|
||||||
|
|
||||||
############################################################
|
|
||||||
# CI Step
|
|
||||||
############################################################
|
|
||||||
|
|
||||||
.debian:
|
|
||||||
image: "registry.gitlab.haskell.org/ghc/ci-images/x86_64-linux-deb10:$DOCKER_REV"
|
|
||||||
tags:
|
|
||||||
- x86_64-linux
|
|
||||||
variables:
|
|
||||||
OS: "LINUX"
|
|
||||||
ARCH: "64"
|
|
||||||
CABAL_DIR: "$CI_PROJECT_DIR/cabal"
|
|
||||||
CROSS: ""
|
|
||||||
|
|
||||||
.alpine:64bit:
|
|
||||||
image: "alpine:3.12"
|
|
||||||
tags:
|
|
||||||
- x86_64-linux
|
|
||||||
variables:
|
|
||||||
OS: "LINUX"
|
|
||||||
ARCH: "64"
|
|
||||||
CABAL_DIR: "$CI_PROJECT_DIR/cabal"
|
|
||||||
|
|
||||||
.alpine:32bit:
|
|
||||||
image: "i386/alpine:3.12"
|
|
||||||
tags:
|
|
||||||
- x86_64-linux
|
|
||||||
variables:
|
|
||||||
OS: "LINUX"
|
|
||||||
ARCH: "32"
|
|
||||||
CABAL_DIR: "$CI_PROJECT_DIR/cabal"
|
|
||||||
|
|
||||||
.linux:armv7:
|
|
||||||
image: "registry.gitlab.haskell.org/ghc/ci-images/armv7-linux-deb10:$DOCKER_REV"
|
|
||||||
tags:
|
|
||||||
- armv7-linux
|
|
||||||
variables:
|
|
||||||
OS: "LINUX"
|
|
||||||
ARCH: "ARM"
|
|
||||||
CABAL_DIR: "$CI_PROJECT_DIR/cabal"
|
|
||||||
retry: 2
|
|
||||||
|
|
||||||
.linux:aarch64:
|
|
||||||
image: "registry.gitlab.haskell.org/ghc/ci-images/aarch64-linux-deb10:$DOCKER_REV"
|
|
||||||
tags:
|
|
||||||
- aarch64-linux
|
|
||||||
variables:
|
|
||||||
OS: "LINUX"
|
|
||||||
ARCH: "ARM64"
|
|
||||||
CABAL_DIR: "$CI_PROJECT_DIR/cabal"
|
|
||||||
|
|
||||||
.darwin:
|
|
||||||
tags:
|
|
||||||
- x86_64-darwin
|
|
||||||
variables:
|
|
||||||
OS: "DARWIN"
|
|
||||||
ARCH: "64"
|
|
||||||
CABAL_DIR: "$CI_PROJECT_DIR/cabal"
|
|
||||||
|
|
||||||
.darwin:aarch64:
|
|
||||||
tags:
|
|
||||||
- aarch64-darwin-m1
|
|
||||||
variables:
|
|
||||||
OS: "DARWIN"
|
|
||||||
ARCH: "ARM64"
|
|
||||||
CABAL_DIR: "$CI_PROJECT_DIR/cabal"
|
|
||||||
|
|
||||||
.freebsd13:
|
|
||||||
tags:
|
|
||||||
- x86_64-freebsd13
|
|
||||||
variables:
|
|
||||||
OS: "FREEBSD"
|
|
||||||
ARCH: "64"
|
|
||||||
CABAL_DIR: "$CI_PROJECT_DIR/cabal"
|
|
||||||
|
|
||||||
.freebsd12:
|
|
||||||
tags:
|
|
||||||
- x86_64-freebsd12
|
|
||||||
variables:
|
|
||||||
OS: "FREEBSD"
|
|
||||||
ARCH: "64"
|
|
||||||
CABAL_DIR: "$CI_PROJECT_DIR/cabal"
|
|
||||||
|
|
||||||
.windows:
|
|
||||||
tags:
|
|
||||||
- new-x86_64-windows
|
|
||||||
variables:
|
|
||||||
OS: "WINDOWS"
|
|
||||||
ARCH: "64"
|
|
||||||
CABAL_DIR: "$CI_PROJECT_DIR/cabal"
|
|
||||||
retry: 2
|
|
||||||
|
|
||||||
.root_cleanup:
|
|
||||||
after_script:
|
|
||||||
- bash ./.gitlab/after_script.sh
|
|
||||||
|
|
||||||
.test_ghcup_version:
|
|
||||||
script:
|
|
||||||
- bash ./.gitlab/script/ghcup_version.sh
|
|
||||||
variables:
|
|
||||||
JSON_VERSION: "0.0.7"
|
|
||||||
artifacts:
|
|
||||||
expire_in: 2 week
|
|
||||||
paths:
|
|
||||||
- test/golden
|
|
||||||
- dist-newstyle/cache/
|
|
||||||
when: on_failure
|
|
||||||
cache:
|
|
||||||
key: ghcup-test-$CACHE_REV
|
|
||||||
paths:
|
|
||||||
- cabal-cache
|
|
||||||
|
|
||||||
# .test_ghcup_scoop:
|
|
||||||
# script:
|
|
||||||
# - cl /O1 scoop-better-shimexe/shim.c
|
|
||||||
|
|
||||||
.test_ghcup_version:linux:
|
|
||||||
extends:
|
|
||||||
- .test_ghcup_version
|
|
||||||
- .debian
|
|
||||||
before_script:
|
|
||||||
- ./.gitlab/before_script/linux/install_deps.sh
|
|
||||||
- ./.gitlab/script/ci.sh extract_cabal_cache
|
|
||||||
after_script:
|
|
||||||
- ./.gitlab/script/ci.sh save_cabal_cache
|
|
||||||
- bash ./.gitlab/after_script.sh
|
|
||||||
|
|
||||||
.test_ghcup_version:linux32:
|
|
||||||
extends:
|
|
||||||
- .test_ghcup_version
|
|
||||||
- .alpine:32bit
|
|
||||||
before_script:
|
|
||||||
- ./.gitlab/before_script/linux/alpine/install_deps.sh
|
|
||||||
- ./.gitlab/script/ci.sh extract_cabal_cache
|
|
||||||
after_script:
|
|
||||||
- ./.gitlab/script/ci.sh save_cabal_cache
|
|
||||||
- bash ./.gitlab/after_script.sh
|
|
||||||
|
|
||||||
.test_ghcup_version:armv7:
|
|
||||||
extends:
|
|
||||||
- .test_ghcup_version
|
|
||||||
- .linux:armv7
|
|
||||||
before_script:
|
|
||||||
- ./.gitlab/before_script/linux/install_deps.sh
|
|
||||||
- ./.gitlab/script/ci.sh extract_cabal_cache
|
|
||||||
after_script:
|
|
||||||
- ./.gitlab/script/ci.sh save_cabal_cache
|
|
||||||
- bash ./.gitlab/after_script.sh
|
|
||||||
|
|
||||||
.test_ghcup_version:aarch64:
|
|
||||||
extends:
|
|
||||||
- .test_ghcup_version
|
|
||||||
- .linux:aarch64
|
|
||||||
before_script:
|
|
||||||
- ./.gitlab/before_script/linux/install_deps.sh
|
|
||||||
- ./.gitlab/script/ci.sh extract_cabal_cache
|
|
||||||
after_script:
|
|
||||||
- ./.gitlab/script/ci.sh save_cabal_cache
|
|
||||||
- bash ./.gitlab/after_script.sh
|
|
||||||
|
|
||||||
.test_ghcup_version:darwin:
|
|
||||||
extends:
|
|
||||||
- .test_ghcup_version
|
|
||||||
- .darwin
|
|
||||||
before_script:
|
|
||||||
- ./.gitlab/before_script/darwin/install_deps.sh
|
|
||||||
- ./.gitlab/script/ci.sh extract_cabal_cache
|
|
||||||
after_script:
|
|
||||||
- ./.gitlab/script/ci.sh save_cabal_cache
|
|
||||||
- bash ./.gitlab/after_script.sh
|
|
||||||
|
|
||||||
.test_ghcup_version:darwin:aarch64:
|
|
||||||
extends:
|
|
||||||
- .test_ghcup_version
|
|
||||||
- .darwin:aarch64
|
|
||||||
cache:
|
|
||||||
key: darwin-brew-$CACHE_REV
|
|
||||||
paths:
|
|
||||||
- brew_cache
|
|
||||||
key: ghcup-test-$CACHE_REV
|
|
||||||
paths:
|
|
||||||
- cabal-cache
|
|
||||||
before_script:
|
|
||||||
# extract brew cache
|
|
||||||
- ./.gitlab/script/ci.sh extract_brew_cache
|
|
||||||
# otherwise we seem to get intel binaries
|
|
||||||
- export HOMEBREW_CHANGE_ARCH_TO_ARM=1
|
|
||||||
# update and install packages
|
|
||||||
- /bin/bash ./.gitlab/script/brew.sh llvm autoconf automake coreutils
|
|
||||||
# extract cabal cache
|
|
||||||
- ./.gitlab/script/ci.sh extract_cabal_cache
|
|
||||||
script: |
|
|
||||||
export PATH="$CI_PROJECT_DIR/.brew/opt/llvm/bin:$CI_PROJECT_DIR/.brew/bin:$CI_PROJECT_DIR/.brew/sbin:$PATH"
|
|
||||||
export CC=$CI_PROJECT_DIR/.brew/opt/llvm/bin/clang
|
|
||||||
export CXX=$CI_PROJECT_DIR/.brew/opt/llvm/bin/clang++
|
|
||||||
export LD=ld
|
|
||||||
export AR=$CI_PROJECT_DIR/.brew/opt/llvm/bin/llvm-ar
|
|
||||||
export RANLIB=$CI_PROJECT_DIR/.brew/opt/llvm/bin/llvm-ranlib
|
|
||||||
./.gitlab/before_script/darwin/install_deps.sh
|
|
||||||
./.gitlab/script/ghcup_version.sh
|
|
||||||
after_script:
|
|
||||||
- ./.gitlab/script/ci.sh save_cabal_cache
|
|
||||||
- ./.gitlab/script/ci.sh save_brew_cache
|
|
||||||
- bash ./.gitlab/after_script.sh
|
|
||||||
|
|
||||||
.test_ghcup_version:freebsd12:
|
|
||||||
extends:
|
|
||||||
- .test_ghcup_version
|
|
||||||
- .freebsd12
|
|
||||||
before_script:
|
|
||||||
- ./.gitlab/before_script/freebsd/install_deps.sh
|
|
||||||
- ./.gitlab/script/ci.sh extract_cabal_cache
|
|
||||||
after_script:
|
|
||||||
- ./.gitlab/script/ci.sh save_cabal_cache
|
|
||||||
- bash ./.gitlab/after_script.sh
|
|
||||||
|
|
||||||
.test_ghcup_version:freebsd13:
|
|
||||||
extends:
|
|
||||||
- .test_ghcup_version
|
|
||||||
- .freebsd13
|
|
||||||
before_script:
|
|
||||||
- sudo pkg update
|
|
||||||
- sudo pkg install --yes compat12x-amd64
|
|
||||||
- sudo ln -s libncurses.so.6 /usr/local/lib/libncurses.so.6.2
|
|
||||||
- ./.gitlab/before_script/freebsd/install_deps.sh
|
|
||||||
- ./.gitlab/script/ci.sh extract_cabal_cache
|
|
||||||
after_script:
|
|
||||||
- ./.gitlab/script/ci.sh save_cabal_cache
|
|
||||||
- bash ./.gitlab/after_script.sh
|
|
||||||
|
|
||||||
.test_ghcup_version:windows:
|
|
||||||
extends:
|
|
||||||
- .test_ghcup_version
|
|
||||||
- .windows
|
|
||||||
before_script:
|
|
||||||
- bash ./.gitlab/before_script/windows/install_deps.sh
|
|
||||||
- bash ./.gitlab/script/ci.sh extract_cabal_cache
|
|
||||||
after_script:
|
|
||||||
- bash ./.gitlab/script/ci.sh save_cabal_cache
|
|
||||||
- bash ./.gitlab/after_script.sh
|
|
||||||
|
|
||||||
# .test_ghcup_scoop:windows:
|
|
||||||
# extends:
|
|
||||||
# - .windows
|
|
||||||
# - .test_ghcup_scoop
|
|
||||||
|
|
||||||
.release_ghcup:
|
|
||||||
script:
|
|
||||||
- bash ./.gitlab/script/ghcup_release.sh
|
|
||||||
artifacts:
|
|
||||||
expire_in: 2 week
|
|
||||||
paths:
|
|
||||||
- out
|
|
||||||
- dist-newstyle/cache/
|
|
||||||
only:
|
|
||||||
- tags
|
|
||||||
variables:
|
|
||||||
JSON_VERSION: "0.0.7"
|
|
||||||
|
|
||||||
######## stack test ########
|
|
||||||
|
|
||||||
test:linux:stack:
|
|
||||||
stage: test
|
|
||||||
before_script:
|
|
||||||
- ./.gitlab/script/ci.sh extract_stack_cache
|
|
||||||
- ./.gitlab/before_script/linux/install_deps_minimal.sh
|
|
||||||
script:
|
|
||||||
- ./.gitlab/script/ghcup_stack.sh
|
|
||||||
after_script:
|
|
||||||
- ./.gitlab/script/ci.sh save_stack_cache
|
|
||||||
extends:
|
|
||||||
- .debian
|
|
||||||
needs: []
|
|
||||||
|
|
||||||
######## bootstrap test ########
|
|
||||||
|
|
||||||
test:linux:bootstrap_script:
|
|
||||||
stage: quick-test
|
|
||||||
before_script:
|
|
||||||
- ./.gitlab/before_script/linux/install_deps_minimal.sh
|
|
||||||
script:
|
|
||||||
- ./.gitlab/script/ghcup_bootstrap.sh
|
|
||||||
variables:
|
|
||||||
GHC_VERSION: "8.10.7"
|
|
||||||
CABAL_VERSION: "3.6.2.0"
|
|
||||||
extends:
|
|
||||||
- .debian
|
|
||||||
- .root_cleanup
|
|
||||||
needs: []
|
|
||||||
|
|
||||||
test:windows:bootstrap_powershell_script:
|
|
||||||
stage: quick-test
|
|
||||||
script:
|
|
||||||
- ./scripts/bootstrap/bootstrap-haskell.ps1 -InstallDir $CI_PROJECT_DIR -BootstrapUrl $CI_PROJECT_DIR/bootstrap-haskell -InBash
|
|
||||||
after_script:
|
|
||||||
- "[Environment]::SetEnvironmentVariable('GHCUP_INSTALL_BASE_PREFIX', $null, [System.EnvironmentVariableTarget]::User)"
|
|
||||||
- "[Environment]::SetEnvironmentVariable('GHCUP_MSYS2', $null, [System.EnvironmentVariableTarget]::User)"
|
|
||||||
- "[Environment]::SetEnvironmentVariable('CABAL_DIR', $null, [System.EnvironmentVariableTarget]::User)"
|
|
||||||
- bash ./.gitlab/after_script.sh
|
|
||||||
- bash ./.gitlab/script/ci.sh save_cabal_cache
|
|
||||||
variables:
|
|
||||||
GHC_VERSION: "8.10.7"
|
|
||||||
CABAL_VERSION: "3.6.2.0"
|
|
||||||
extends:
|
|
||||||
- .windows
|
|
||||||
needs: []
|
|
||||||
|
|
||||||
######## linux test ########
|
|
||||||
|
|
||||||
test:linux:
|
|
||||||
stage: test
|
|
||||||
extends: .test_ghcup_version:linux
|
|
||||||
variables:
|
|
||||||
GHC_VERSION: "8.10.7"
|
|
||||||
CABAL_VERSION: "3.6.2.0"
|
|
||||||
needs: []
|
|
||||||
|
|
||||||
test:linux:hls:
|
|
||||||
stage: expensive-test
|
|
||||||
extends:
|
|
||||||
- .test_ghcup_version
|
|
||||||
- .debian
|
|
||||||
variables:
|
|
||||||
GHC_VERSION: "8.10.7"
|
|
||||||
HLS_TARGET_VERSION: "1.4.0"
|
|
||||||
CABAL_VERSION: "3.6.2.0"
|
|
||||||
needs: []
|
|
||||||
when: manual
|
|
||||||
allow_failure: true
|
|
||||||
before_script:
|
|
||||||
- ./.gitlab/before_script/linux/install_deps.sh
|
|
||||||
script:
|
|
||||||
- ./.gitlab/script/ghcup_hls.sh
|
|
||||||
|
|
||||||
test:linux:cross-armv7:
|
|
||||||
stage: expensive-test
|
|
||||||
extends:
|
|
||||||
- .test_ghcup_version
|
|
||||||
- .debian
|
|
||||||
variables:
|
|
||||||
GHC_VERSION: "8.10.6"
|
|
||||||
GHC_TARGET_VERSION: "8.10.7"
|
|
||||||
CABAL_VERSION: "3.6.2.0"
|
|
||||||
CROSS: "arm-linux-gnueabihf"
|
|
||||||
needs: []
|
|
||||||
when: manual
|
|
||||||
allow_failure: true
|
|
||||||
before_script:
|
|
||||||
- ./.gitlab/before_script/linux/install_deps.sh
|
|
||||||
script:
|
|
||||||
- ./.gitlab/script/ghcup_cross.sh
|
|
||||||
|
|
||||||
test:linux:git:hadrian:
|
|
||||||
stage: expensive-test
|
|
||||||
extends:
|
|
||||||
- .test_ghcup_version
|
|
||||||
- .debian
|
|
||||||
variables:
|
|
||||||
GHC_VERSION: "8.10.7"
|
|
||||||
GHC_GIT_TAG: "ghc-9.0.1-release"
|
|
||||||
GHC_GIT_VERSION: "9.0.1"
|
|
||||||
CABAL_VERSION: "3.6.2.0"
|
|
||||||
CROSS: ""
|
|
||||||
needs: []
|
|
||||||
when: manual
|
|
||||||
allow_failure: true
|
|
||||||
before_script:
|
|
||||||
- ./.gitlab/before_script/linux/install_deps.sh
|
|
||||||
script:
|
|
||||||
- ./.gitlab/script/ghcup_git.sh
|
|
||||||
|
|
||||||
|
|
||||||
######## linux 32bit test ########
|
|
||||||
|
|
||||||
test:linux:32bit:
|
|
||||||
stage: test
|
|
||||||
extends: .test_ghcup_version:linux32
|
|
||||||
variables:
|
|
||||||
GHC_VERSION: "8.10.7"
|
|
||||||
CABAL_VERSION: "3.6.2.0"
|
|
||||||
needs: []
|
|
||||||
|
|
||||||
######## arm tests ########
|
|
||||||
|
|
||||||
test:linux:armv7:
|
|
||||||
stage: test
|
|
||||||
extends: .test_ghcup_version:armv7
|
|
||||||
variables:
|
|
||||||
GHC_VERSION: "8.10.7"
|
|
||||||
CABAL_VERSION: "3.6.2.0"
|
|
||||||
CROSS: ""
|
|
||||||
when: manual
|
|
||||||
needs: []
|
|
||||||
|
|
||||||
test:linux:aarch64:
|
|
||||||
stage: test
|
|
||||||
extends: .test_ghcup_version:aarch64
|
|
||||||
variables:
|
|
||||||
GHC_VERSION: "8.10.7"
|
|
||||||
CABAL_VERSION: "3.6.2.0"
|
|
||||||
CROSS: ""
|
|
||||||
when: manual
|
|
||||||
needs: []
|
|
||||||
|
|
||||||
######## darwin test ########
|
|
||||||
|
|
||||||
test:mac:
|
|
||||||
stage: test
|
|
||||||
extends: .test_ghcup_version:darwin
|
|
||||||
variables:
|
|
||||||
GHC_VERSION: "8.10.7"
|
|
||||||
CABAL_VERSION: "3.6.2.0"
|
|
||||||
needs: []
|
|
||||||
|
|
||||||
test:mac:aarch64:
|
|
||||||
stage: test
|
|
||||||
extends: .test_ghcup_version:darwin:aarch64
|
|
||||||
variables:
|
|
||||||
GHC_VERSION: "8.10.7"
|
|
||||||
CABAL_VERSION: "3.6.2.0"
|
|
||||||
needs: []
|
|
||||||
allow_failure: true
|
|
||||||
when: manual
|
|
||||||
|
|
||||||
|
|
||||||
######## freebsd test ########
|
|
||||||
|
|
||||||
test:freebsd12:
|
|
||||||
stage: test
|
|
||||||
extends: .test_ghcup_version:freebsd12
|
|
||||||
variables:
|
|
||||||
GHC_VERSION: "8.10.7"
|
|
||||||
CABAL_VERSION: "3.6.2.0"
|
|
||||||
allow_failure: true # freebsd runners are unreliable
|
|
||||||
when: manual
|
|
||||||
needs: []
|
|
||||||
|
|
||||||
test:freebsd13:
|
|
||||||
stage: test
|
|
||||||
extends: .test_ghcup_version:freebsd13
|
|
||||||
variables:
|
|
||||||
GHC_VERSION: "8.10.7"
|
|
||||||
CABAL_VERSION: "3.6.2.0"
|
|
||||||
allow_failure: true # freebsd runners are unreliable
|
|
||||||
when: manual
|
|
||||||
needs: []
|
|
||||||
|
|
||||||
######## windows test ########
|
|
||||||
|
|
||||||
test:windows:
|
|
||||||
stage: test
|
|
||||||
extends: .test_ghcup_version:windows
|
|
||||||
variables:
|
|
||||||
GHC_VERSION: "8.10.7"
|
|
||||||
CABAL_VERSION: "3.6.2.0"
|
|
||||||
needs: []
|
|
||||||
|
|
||||||
# test:windows:scoop:
|
|
||||||
# stage: test
|
|
||||||
# extends: .test_ghcup_scoop:windows
|
|
||||||
# needs: []
|
|
||||||
|
|
||||||
######## linux release ########
|
|
||||||
|
|
||||||
release:linux:64bit:
|
|
||||||
stage: release
|
|
||||||
needs: ["test:linux"]
|
|
||||||
extends:
|
|
||||||
- .alpine:64bit
|
|
||||||
- .release_ghcup
|
|
||||||
before_script:
|
|
||||||
- ./.gitlab/before_script/linux/alpine/install_deps.sh
|
|
||||||
variables:
|
|
||||||
ARTIFACT: "x86_64-linux-ghcup"
|
|
||||||
GHC_VERSION: "8.10.7"
|
|
||||||
CABAL_VERSION: "3.6.2.0"
|
|
||||||
|
|
||||||
|
|
||||||
release:linux:32bit:
|
|
||||||
stage: release
|
|
||||||
needs: ["test:linux:32bit"]
|
|
||||||
extends:
|
|
||||||
- .alpine:32bit
|
|
||||||
- .release_ghcup
|
|
||||||
before_script:
|
|
||||||
- ./.gitlab/before_script/linux/alpine/install_deps.sh
|
|
||||||
variables:
|
|
||||||
ARTIFACT: "i386-linux-ghcup"
|
|
||||||
GHC_VERSION: "8.10.7"
|
|
||||||
CABAL_VERSION: "3.6.2.0"
|
|
||||||
|
|
||||||
release:linux:armv7:
|
|
||||||
stage: release
|
|
||||||
needs: ["test:linux:armv7"]
|
|
||||||
extends:
|
|
||||||
- .linux:armv7
|
|
||||||
- .release_ghcup
|
|
||||||
before_script:
|
|
||||||
- ./.gitlab/before_script/linux/install_deps.sh
|
|
||||||
variables:
|
|
||||||
ARTIFACT: "armv7-linux-ghcup"
|
|
||||||
GHC_VERSION: "8.10.7"
|
|
||||||
CABAL_VERSION: "3.6.2.0"
|
|
||||||
CROSS: ""
|
|
||||||
|
|
||||||
release:linux:aarch64:
|
|
||||||
stage: release
|
|
||||||
needs: ["test:linux:aarch64"]
|
|
||||||
extends:
|
|
||||||
- .linux:aarch64
|
|
||||||
- .release_ghcup
|
|
||||||
before_script:
|
|
||||||
- ./.gitlab/before_script/linux/install_deps.sh
|
|
||||||
variables:
|
|
||||||
ARTIFACT: "aarch64-linux-ghcup"
|
|
||||||
GHC_VERSION: "8.10.7"
|
|
||||||
CABAL_VERSION: "3.6.2.0"
|
|
||||||
CROSS: ""
|
|
||||||
|
|
||||||
######## darwin release ########
|
|
||||||
|
|
||||||
release:darwin:
|
|
||||||
stage: release
|
|
||||||
needs: ["test:mac"]
|
|
||||||
extends:
|
|
||||||
- .darwin
|
|
||||||
- .release_ghcup
|
|
||||||
- .root_cleanup
|
|
||||||
before_script:
|
|
||||||
- ./.gitlab/before_script/darwin/install_deps.sh
|
|
||||||
variables:
|
|
||||||
ARTIFACT: "x86_64-apple-darwin-ghcup"
|
|
||||||
GHC_VERSION: "8.10.7"
|
|
||||||
CABAL_VERSION: "3.6.2.0"
|
|
||||||
MACOSX_DEPLOYMENT_TARGET: "10.7"
|
|
||||||
|
|
||||||
release:darwin:aarch64:
|
|
||||||
stage: release
|
|
||||||
needs: ["test:mac:aarch64"]
|
|
||||||
extends:
|
|
||||||
- .darwin:aarch64
|
|
||||||
- .release_ghcup
|
|
||||||
- .root_cleanup
|
|
||||||
cache:
|
|
||||||
key: darwin-brew-$CACHE_REV
|
|
||||||
paths:
|
|
||||||
- brew_cache
|
|
||||||
key: ghcup-test-$CACHE_REV
|
|
||||||
paths:
|
|
||||||
- cabal-cache
|
|
||||||
before_script:
|
|
||||||
- ./.gitlab/script/ci.sh extract_brew_cache
|
|
||||||
- ./.gitlab/script/ci.sh extract_cabal_cache
|
|
||||||
# otherwise we seem to get intel binaries
|
|
||||||
- export HOMEBREW_CHANGE_ARCH_TO_ARM=1
|
|
||||||
# update and install packages
|
|
||||||
- /bin/bash ./.gitlab/script/brew.sh llvm autoconf automake coreutils
|
|
||||||
script: |
|
|
||||||
export PATH="$CI_PROJECT_DIR/.brew/opt/llvm/bin:$CI_PROJECT_DIR/.brew/bin:$CI_PROJECT_DIR/.brew/sbin:$PATH"
|
|
||||||
export CC=$CI_PROJECT_DIR/.brew/opt/llvm/bin/clang
|
|
||||||
export CXX=$CI_PROJECT_DIR/.brew/opt/llvm/bin/clang++
|
|
||||||
export LD=ld
|
|
||||||
export AR=$CI_PROJECT_DIR/.brew/opt/llvm/bin/llvm-ar
|
|
||||||
export RANLIB=$CI_PROJECT_DIR/.brew/opt/llvm/bin/llvm-ranlib
|
|
||||||
./.gitlab/before_script/darwin/install_deps.sh
|
|
||||||
./.gitlab/script/ghcup_release.sh
|
|
||||||
after_script:
|
|
||||||
- ./.gitlab/script/ci.sh save_cabal_cache
|
|
||||||
- ./.gitlab/script/ci.sh save_brew_cache
|
|
||||||
variables:
|
|
||||||
ARTIFACT: "aarch64-apple-darwin-ghcup"
|
|
||||||
GHC_VERSION: "8.10.7"
|
|
||||||
CABAL_VERSION: "3.6.2.0"
|
|
||||||
MACOSX_DEPLOYMENT_TARGET: "10.7"
|
|
||||||
allow_failure: true
|
|
||||||
when: manual
|
|
||||||
|
|
||||||
|
|
||||||
######## freebsd release ########
|
|
||||||
|
|
||||||
release:freebsd12:
|
|
||||||
stage: release
|
|
||||||
needs: ["test:freebsd12"]
|
|
||||||
extends:
|
|
||||||
- .freebsd12
|
|
||||||
- .release_ghcup
|
|
||||||
- .root_cleanup
|
|
||||||
before_script:
|
|
||||||
- ./.gitlab/before_script/freebsd/install_deps.sh
|
|
||||||
variables:
|
|
||||||
ARTIFACT: "x86_64-portbld-freebsd-ghcup"
|
|
||||||
GHC_VERSION: "8.10.7"
|
|
||||||
CABAL_VERSION: "3.6.2.0"
|
|
||||||
allow_failure: true
|
|
||||||
|
|
||||||
release:freebsd13:
|
|
||||||
stage: release
|
|
||||||
needs: ["test:freebsd13"]
|
|
||||||
extends:
|
|
||||||
- .freebsd13
|
|
||||||
- .release_ghcup
|
|
||||||
- .root_cleanup
|
|
||||||
before_script:
|
|
||||||
- sudo pkg update
|
|
||||||
- sudo pkg install --yes compat12x-amd64
|
|
||||||
- sudo ln -s libncurses.so.6 /usr/local/lib/libncurses.so.6.2
|
|
||||||
- ./.gitlab/before_script/freebsd/install_deps.sh
|
|
||||||
variables:
|
|
||||||
ARTIFACT: "x86_64-portbld-freebsd-ghcup"
|
|
||||||
GHC_VERSION: "8.10.7"
|
|
||||||
CABAL_VERSION: "3.6.2.0"
|
|
||||||
allow_failure: true
|
|
||||||
|
|
||||||
######## windows release ########
|
|
||||||
|
|
||||||
release:windows:
|
|
||||||
stage: release
|
|
||||||
needs: ["test:windows"]
|
|
||||||
extends:
|
|
||||||
- .windows
|
|
||||||
- .release_ghcup
|
|
||||||
- .root_cleanup
|
|
||||||
before_script:
|
|
||||||
- bash ./.gitlab/before_script/windows/install_deps.sh
|
|
||||||
variables:
|
|
||||||
ARTIFACT: "x86_64-mingw64-ghcup"
|
|
||||||
GHC_VERSION: "8.10.7"
|
|
||||||
CABAL_VERSION: "3.6.2.0"
|
|
||||||
|
|
||||||
######## hlint ########
|
|
||||||
|
|
||||||
hlint:
|
|
||||||
stage: checks
|
|
||||||
extends:
|
|
||||||
- .debian
|
|
||||||
script:
|
|
||||||
- curl -sSL https://raw.github.com/ndmitchell/hlint/master/misc/run.sh | sh -s -- -r lib/ test/
|
|
||||||
allow_failure: true
|
|
||||||
artifacts:
|
|
||||||
expire_in: 2 week
|
|
||||||
paths:
|
|
||||||
- report.html
|
|
||||||
when: on_failure
|
|
||||||
|
|
||||||
######## mkdocs ########
|
|
||||||
|
|
||||||
mkdocs:
|
|
||||||
stage: checks
|
|
||||||
extends:
|
|
||||||
- .debian
|
|
||||||
before_script:
|
|
||||||
- sudo apt-get update -y
|
|
||||||
- sudo apt-get install -y python3-pip
|
|
||||||
- pip3 install mkdocs
|
|
||||||
script:
|
|
||||||
- ~/.local/bin/mkdocs build
|
|
||||||
allow_failure: true
|
|
||||||
|
|
||||||
######## shellcheck ########
|
|
||||||
|
|
||||||
shellcheck:
|
|
||||||
image: "koalaman/shellcheck-alpine"
|
|
||||||
tags:
|
|
||||||
- x86_64-linux
|
|
||||||
stage: checks
|
|
||||||
script:
|
|
||||||
- shellcheck scripts/bootstrap/bootstrap-haskell
|
|
||||||
allow_failure: true
|
|
||||||
|
|
@ -1,19 +0,0 @@
|
|||||||
#!/bin/sh
|
|
||||||
|
|
||||||
set -eux
|
|
||||||
|
|
||||||
BUILD_DIR=$CI_PROJECT_DIR
|
|
||||||
echo "Cleaning $BUILD_DIR"
|
|
||||||
cd $HOME
|
|
||||||
test -n "$BUILD_DIR"
|
|
||||||
shopt -s extglob
|
|
||||||
rm -Rf "$BUILD_DIR"/!(out)
|
|
||||||
if [ "${OS}" = "WINDOWS" ] ; then
|
|
||||||
rm -Rf /c/ghcup
|
|
||||||
fi
|
|
||||||
|
|
||||||
if [ "${OS}" = "DARWIN" ] ; then
|
|
||||||
rm -Rf /private/tmp/.brew_tmp
|
|
||||||
fi
|
|
||||||
|
|
||||||
exit 0
|
|
@ -1,32 +0,0 @@
|
|||||||
#!/bin/sh
|
|
||||||
|
|
||||||
set -eux
|
|
||||||
|
|
||||||
. "$( cd "$(dirname "$0")" ; pwd -P )/../../ghcup_env"
|
|
||||||
|
|
||||||
mkdir -p "${TMPDIR}"
|
|
||||||
|
|
||||||
if [ $ARCH = 'ARM64' ] ; then
|
|
||||||
curl -sSfL https://downloads.haskell.org/~ghcup/aarch64-apple-darwin-ghcup > ./ghcup-bin
|
|
||||||
chmod +x ghcup-bin
|
|
||||||
else
|
|
||||||
curl -sSfL https://downloads.haskell.org/~ghcup/x86_64-apple-darwin-ghcup > ./ghcup-bin
|
|
||||||
chmod +x ghcup-bin
|
|
||||||
./ghcup-bin upgrade -i -f
|
|
||||||
fi
|
|
||||||
|
|
||||||
./ghcup-bin install ${GHC_VERSION}
|
|
||||||
./ghcup-bin set ${GHC_VERSION}
|
|
||||||
./ghcup-bin install-cabal ${CABAL_VERSION}
|
|
||||||
|
|
||||||
if [ $ARCH = 'ARM64' ] ; then
|
|
||||||
cabal update
|
|
||||||
mkdir vendored
|
|
||||||
cd vendored
|
|
||||||
cabal unpack network-3.1.2.1
|
|
||||||
cd network*
|
|
||||||
autoreconf -fi
|
|
||||||
cd ../..
|
|
||||||
fi
|
|
||||||
|
|
||||||
exit 0
|
|
@ -1,27 +0,0 @@
|
|||||||
#!/bin/sh
|
|
||||||
|
|
||||||
set -eux
|
|
||||||
|
|
||||||
# pkg install --force --yes --no-repo-update curl gcc gmp gmake ncurses perl5 libffi libiconv
|
|
||||||
|
|
||||||
. "$( cd "$(dirname "$0")" ; pwd -P )/../../ghcup_env"
|
|
||||||
|
|
||||||
mkdir -p "${TMPDIR}"
|
|
||||||
|
|
||||||
if freebsd-version | grep -E '^12.*' ; then
|
|
||||||
freebsd_ver=12
|
|
||||||
elif freebsd-version | grep -E '^13.*' ; then
|
|
||||||
freebsd_ver=13
|
|
||||||
else
|
|
||||||
(>&2 echo "Unsupported FreeBSD version! Please report a bug at https://gitlab.haskell.org/haskell/ghcup-hs/-/issues")
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
curl -sSfL https://downloads.haskell.org/~ghcup/x86_64-freebsd${freebsd_ver}-ghcup > ./ghcup-bin
|
|
||||||
chmod +x ghcup-bin
|
|
||||||
|
|
||||||
./ghcup-bin -v upgrade -i -f
|
|
||||||
./ghcup-bin -v install ${GHC_VERSION}
|
|
||||||
./ghcup-bin -v set ${GHC_VERSION}
|
|
||||||
./ghcup-bin -v install-cabal ${CABAL_VERSION}
|
|
||||||
|
|
||||||
exit 0
|
|
@ -1,58 +0,0 @@
|
|||||||
#!/bin/sh
|
|
||||||
|
|
||||||
set -eux
|
|
||||||
|
|
||||||
. "$( cd "$(dirname "$0")" ; pwd -P )/../../../ghcup_env"
|
|
||||||
|
|
||||||
mkdir -p "${TMPDIR}"
|
|
||||||
|
|
||||||
apk add --no-cache \
|
|
||||||
curl \
|
|
||||||
gcc \
|
|
||||||
g++ \
|
|
||||||
binutils \
|
|
||||||
binutils-gold \
|
|
||||||
bsd-compat-headers \
|
|
||||||
gmp-dev \
|
|
||||||
ncurses-dev \
|
|
||||||
libffi-dev \
|
|
||||||
make \
|
|
||||||
xz \
|
|
||||||
tar \
|
|
||||||
perl
|
|
||||||
|
|
||||||
if [ "${ARCH}" = "32" ] ; then
|
|
||||||
curl -sSfL https://downloads.haskell.org/ghcup/i386-linux-ghcup > ./ghcup-bin
|
|
||||||
else
|
|
||||||
curl -sSfL https://downloads.haskell.org/ghcup/x86_64-linux-ghcup > ./ghcup-bin
|
|
||||||
fi
|
|
||||||
chmod +x ghcup-bin
|
|
||||||
./ghcup-bin upgrade -i -f
|
|
||||||
./ghcup-bin install ${GHC_VERSION}
|
|
||||||
./ghcup-bin install-cabal ${CABAL_VERSION}
|
|
||||||
|
|
||||||
# utils
|
|
||||||
apk add --no-cache \
|
|
||||||
bash \
|
|
||||||
git
|
|
||||||
|
|
||||||
## Package specific
|
|
||||||
apk add --no-cache \
|
|
||||||
zlib \
|
|
||||||
zlib-dev \
|
|
||||||
zlib-static \
|
|
||||||
bzip2 \
|
|
||||||
bzip2-dev \
|
|
||||||
bzip2-static \
|
|
||||||
gmp \
|
|
||||||
gmp-dev \
|
|
||||||
openssl-dev \
|
|
||||||
openssl-libs-static \
|
|
||||||
xz \
|
|
||||||
xz-dev \
|
|
||||||
ncurses-static
|
|
||||||
|
|
||||||
if [ "${ARCH}" = "32" ] ; then
|
|
||||||
apk add --no-cache \
|
|
||||||
bsd-compat-headers
|
|
||||||
fi
|
|
@ -1,27 +0,0 @@
|
|||||||
#!/bin/sh
|
|
||||||
|
|
||||||
set -eux
|
|
||||||
|
|
||||||
. "$( cd "$(dirname "$0")" ; pwd -P )/../../ghcup_env"
|
|
||||||
|
|
||||||
mkdir -p "${TMPDIR}"
|
|
||||||
|
|
||||||
sudo apt-get update -y
|
|
||||||
sudo apt-get install -y libnuma-dev zlib1g-dev libgmp-dev libgmp10 libssl-dev liblzma-dev libbz2-dev git wget lsb-release software-properties-common gnupg2 apt-transport-https gcc autoconf automake build-essential
|
|
||||||
|
|
||||||
if [ "${CROSS}" = "arm-linux-gnueabihf" ] ; then
|
|
||||||
sudo apt-get install -y gcc-arm-linux-gnueabihf
|
|
||||||
sudo dpkg --add-architecture armhf
|
|
||||||
sudo apt-get update -y
|
|
||||||
sudo apt-get install -y libncurses-dev:armhf
|
|
||||||
fi
|
|
||||||
|
|
||||||
export BOOTSTRAP_HASKELL_NONINTERACTIVE=1
|
|
||||||
export BOOTSTRAP_HASKELL_GHC_VERSION=$GHC_VERSION
|
|
||||||
export BOOTSTRAP_HASKELL_CABAL_VERSION=$CABAL_VERSION
|
|
||||||
export BOOTSTRAP_HASKELL_VERBOSE=1
|
|
||||||
|
|
||||||
curl --proto '=https' --tlsv1.2 -sSf https://get-ghcup.haskell.org | sh
|
|
||||||
|
|
||||||
rm "${GHCUP_INSTALL_BASE_PREFIX}"/.ghcup/bin/ghcup
|
|
||||||
|
|
@ -1,10 +0,0 @@
|
|||||||
#!/bin/sh
|
|
||||||
|
|
||||||
set -eux
|
|
||||||
|
|
||||||
. "$( cd "$(dirname "$0")" ; pwd -P )/../../ghcup_env"
|
|
||||||
|
|
||||||
mkdir -p "${TMPDIR}"
|
|
||||||
|
|
||||||
sudo apt-get update -y
|
|
||||||
sudo apt-get install -y libnuma-dev zlib1g-dev libgmp-dev libgmp10 libssl-dev liblzma-dev libbz2-dev git wget
|
|
@ -1,21 +0,0 @@
|
|||||||
#!/bin/sh
|
|
||||||
|
|
||||||
set -eux
|
|
||||||
|
|
||||||
. "$( cd "$(dirname "$0")" ; pwd -P )/../../ghcup_env"
|
|
||||||
|
|
||||||
mkdir -p "${TMPDIR}" "${CABAL_DIR}"
|
|
||||||
|
|
||||||
mkdir -p "$GHCUP_INSTALL_BASE_PREFIX/ghcup/bin"
|
|
||||||
|
|
||||||
CI_PROJECT_DIR=$(pwd)
|
|
||||||
curl -o ghcup.exe https://downloads.haskell.org/~ghcup/x86_64-mingw64-ghcup.exe
|
|
||||||
chmod +x ghcup.exe
|
|
||||||
|
|
||||||
./ghcup.exe install ${GHC_VERSION}
|
|
||||||
./ghcup.exe set ${GHC_VERSION}
|
|
||||||
./ghcup.exe install-cabal ${CABAL_VERSION}
|
|
||||||
|
|
||||||
rm ./ghcup.exe
|
|
||||||
|
|
||||||
exit 0
|
|
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
@ -1,37 +0,0 @@
|
|||||||
.
|
|
||||||
./cabal
|
|
||||||
./ghc
|
|
||||||
./ghc-8.10.7
|
|
||||||
./ghc-pkg
|
|
||||||
./ghc-pkg-8.10.7
|
|
||||||
./ghci
|
|
||||||
./ghci-8.10.7
|
|
||||||
./haddock
|
|
||||||
./haddock-8.10.7
|
|
||||||
./haskell-language-server-8.10.6
|
|
||||||
./haskell-language-server-8.10.6~1.6.1.0
|
|
||||||
./haskell-language-server-8.10.7
|
|
||||||
./haskell-language-server-8.10.7~1.6.1.0
|
|
||||||
./haskell-language-server-8.6.5
|
|
||||||
./haskell-language-server-8.6.5~1.6.1.0
|
|
||||||
./haskell-language-server-8.8.4
|
|
||||||
./haskell-language-server-8.8.4~1.6.1.0
|
|
||||||
./haskell-language-server-9.0.1
|
|
||||||
./haskell-language-server-9.0.1~1.6.1.0
|
|
||||||
./haskell-language-server-9.0.2
|
|
||||||
./haskell-language-server-9.0.2~1.6.1.0
|
|
||||||
./haskell-language-server-9.2.1
|
|
||||||
./haskell-language-server-9.2.1~1.6.1.0
|
|
||||||
./haskell-language-server-wrapper
|
|
||||||
./haskell-language-server-wrapper-1.6.1.0
|
|
||||||
./hp2ps
|
|
||||||
./hp2ps-8.10.7
|
|
||||||
./hpc
|
|
||||||
./hpc-8.10.7
|
|
||||||
./hsc2hs
|
|
||||||
./hsc2hs-8.10.7
|
|
||||||
./runghc
|
|
||||||
./runghc-8.10.7
|
|
||||||
./runhaskell
|
|
||||||
./runhaskell-8.10.7
|
|
||||||
./stack
|
|
@ -1,81 +0,0 @@
|
|||||||
.
|
|
||||||
./cabal.exe
|
|
||||||
./cabal.shim
|
|
||||||
./ghc-8.10.7.exe
|
|
||||||
./ghc-8.10.7.shim
|
|
||||||
./ghc-pkg-8.10.7.exe
|
|
||||||
./ghc-pkg-8.10.7.shim
|
|
||||||
./ghc-pkg.exe
|
|
||||||
./ghc-pkg.shim
|
|
||||||
./ghc.exe
|
|
||||||
./ghc.shim
|
|
||||||
./ghci-8.10.7.exe
|
|
||||||
./ghci-8.10.7.shim
|
|
||||||
./ghci.exe
|
|
||||||
./ghci.shim
|
|
||||||
./ghcii-8.10.7.sh-8.10.7.exe
|
|
||||||
./ghcii-8.10.7.sh-8.10.7.shim
|
|
||||||
./ghcii-8.10.7.sh.exe
|
|
||||||
./ghcii-8.10.7.sh.shim
|
|
||||||
./ghcii.sh-8.10.7.exe
|
|
||||||
./ghcii.sh-8.10.7.shim
|
|
||||||
./ghcii.sh.exe
|
|
||||||
./ghcii.sh.shim
|
|
||||||
./haddock-8.10.7.exe
|
|
||||||
./haddock-8.10.7.shim
|
|
||||||
./haddock.exe
|
|
||||||
./haddock.shim
|
|
||||||
./haskell-language-server-8.10.6.exe
|
|
||||||
./haskell-language-server-8.10.6.shim
|
|
||||||
./haskell-language-server-8.10.6~1.6.1.0.exe
|
|
||||||
./haskell-language-server-8.10.6~1.6.1.0.shim
|
|
||||||
./haskell-language-server-8.10.7.exe
|
|
||||||
./haskell-language-server-8.10.7.shim
|
|
||||||
./haskell-language-server-8.10.7~1.6.1.0.exe
|
|
||||||
./haskell-language-server-8.10.7~1.6.1.0.shim
|
|
||||||
./haskell-language-server-8.6.5.exe
|
|
||||||
./haskell-language-server-8.6.5.shim
|
|
||||||
./haskell-language-server-8.6.5~1.6.1.0.exe
|
|
||||||
./haskell-language-server-8.6.5~1.6.1.0.shim
|
|
||||||
./haskell-language-server-8.8.4.exe
|
|
||||||
./haskell-language-server-8.8.4.shim
|
|
||||||
./haskell-language-server-8.8.4~1.6.1.0.exe
|
|
||||||
./haskell-language-server-8.8.4~1.6.1.0.shim
|
|
||||||
./haskell-language-server-9.0.1.exe
|
|
||||||
./haskell-language-server-9.0.1.shim
|
|
||||||
./haskell-language-server-9.0.1~1.6.1.0.exe
|
|
||||||
./haskell-language-server-9.0.1~1.6.1.0.shim
|
|
||||||
./haskell-language-server-9.0.2.exe
|
|
||||||
./haskell-language-server-9.0.2.shim
|
|
||||||
./haskell-language-server-9.0.2~1.6.1.0.exe
|
|
||||||
./haskell-language-server-9.0.2~1.6.1.0.shim
|
|
||||||
./haskell-language-server-9.2.1.exe
|
|
||||||
./haskell-language-server-9.2.1.shim
|
|
||||||
./haskell-language-server-9.2.1~1.6.1.0.exe
|
|
||||||
./haskell-language-server-9.2.1~1.6.1.0.shim
|
|
||||||
./haskell-language-server-wrapper-1.6.1.0.exe
|
|
||||||
./haskell-language-server-wrapper-1.6.1.0.shim
|
|
||||||
./haskell-language-server-wrapper.exe
|
|
||||||
./haskell-language-server-wrapper.shim
|
|
||||||
./hp2ps-8.10.7.exe
|
|
||||||
./hp2ps-8.10.7.shim
|
|
||||||
./hp2ps.exe
|
|
||||||
./hp2ps.shim
|
|
||||||
./hpc-8.10.7.exe
|
|
||||||
./hpc-8.10.7.shim
|
|
||||||
./hpc.exe
|
|
||||||
./hpc.shim
|
|
||||||
./hsc2hs-8.10.7.exe
|
|
||||||
./hsc2hs-8.10.7.shim
|
|
||||||
./hsc2hs.exe
|
|
||||||
./hsc2hs.shim
|
|
||||||
./runghc-8.10.7.exe
|
|
||||||
./runghc-8.10.7.shim
|
|
||||||
./runghc.exe
|
|
||||||
./runghc.shim
|
|
||||||
./runhaskell-8.10.7.exe
|
|
||||||
./runhaskell-8.10.7.shim
|
|
||||||
./runhaskell.exe
|
|
||||||
./runhaskell.shim
|
|
||||||
./stack.exe
|
|
||||||
./stack.shim
|
|
@ -1,23 +0,0 @@
|
|||||||
if [ "${OS}" = "WINDOWS" ] ; then
|
|
||||||
export GHCUP_INSTALL_BASE_PREFIX="$CI_PROJECT_DIR"
|
|
||||||
export GHCUP_BIN="$CI_PROJECT_DIR/ghcup/bin"
|
|
||||||
export PATH="$GHCUP_BIN:$CI_PROJECT_DIR/.local/bin:$PATH"
|
|
||||||
export TMPDIR="$CI_PROJECT_DIR/tmp"
|
|
||||||
export CABAL_DIR="$CI_PROJECT_DIR/cabal"
|
|
||||||
export CABAL_CACHE="$CI_PROJECT_DIR/cabal-cache"
|
|
||||||
export STACK_ROOT="$CI_PROJECT_DIR/stack"
|
|
||||||
export STACK_CACHE="$CI_PROJECT_DIR/stack-cache"
|
|
||||||
export BREW_DIR="$CI_PROJECT_DIR/.brew_cache"
|
|
||||||
export BREW_CACHE="$CI_PROJECT_DIR/brew-cache"
|
|
||||||
else
|
|
||||||
export GHCUP_INSTALL_BASE_PREFIX="$CI_PROJECT_DIR"
|
|
||||||
export GHCUP_BIN="$CI_PROJECT_DIR/.ghcup/bin"
|
|
||||||
export PATH="$GHCUP_BIN:$CI_PROJECT_DIR/.local/bin:$PATH"
|
|
||||||
export TMPDIR="$CI_PROJECT_DIR/tmp"
|
|
||||||
export CABAL_DIR="$CI_PROJECT_DIR/cabal"
|
|
||||||
export CABAL_CACHE="$CI_PROJECT_DIR/cabal-cache"
|
|
||||||
export STACK_ROOT="$CI_PROJECT_DIR/stack"
|
|
||||||
export STACK_CACHE="$CI_PROJECT_DIR/stack-cache"
|
|
||||||
export BREW_DIR="$CI_PROJECT_DIR/.brew_cache"
|
|
||||||
export BREW_CACHE="$CI_PROJECT_DIR/brew-cache"
|
|
||||||
fi
|
|
@ -1,19 +0,0 @@
|
|||||||
#!/usr/bin/env bash
|
|
||||||
|
|
||||||
set -Eeuxo pipefail
|
|
||||||
|
|
||||||
# Install brew locally in the project dir. Packages will also be installed here.
|
|
||||||
[ -e "$CI_PROJECT_DIR/.brew" ] || git clone --depth=1 https://github.com/Homebrew/brew $CI_PROJECT_DIR/.brew
|
|
||||||
export PATH="$CI_PROJECT_DIR/.brew/bin:$CI_PROJECT_DIR/.brew/sbin:$PATH"
|
|
||||||
|
|
||||||
# make sure to not pollute the machine with temp files etc
|
|
||||||
mkdir -p $CI_PROJECT_DIR/.brew_cache
|
|
||||||
export HOMEBREW_CACHE=$CI_PROJECT_DIR/.brew_cache
|
|
||||||
mkdir -p $CI_PROJECT_DIR/.brew_logs
|
|
||||||
export HOMEBREW_LOGS=$CI_PROJECT_DIR/.brew_logs
|
|
||||||
mkdir -p /private/tmp/.brew_tmp
|
|
||||||
export HOMEBREW_TEMP=/private/tmp/.brew_tmp
|
|
||||||
|
|
||||||
# update and install packages
|
|
||||||
brew update
|
|
||||||
brew install ${1+"$@"}
|
|
@ -1,70 +0,0 @@
|
|||||||
#!/usr/bin/env bash
|
|
||||||
|
|
||||||
set -Eeuo pipefail
|
|
||||||
|
|
||||||
TOP="$( cd "$(dirname "$0")" ; pwd -P )"
|
|
||||||
. "${TOP}/../ghcup_env"
|
|
||||||
|
|
||||||
function save_cabal_cache () {
|
|
||||||
echo "Storing cabal cache from $CABAL_DIR to $CABAL_CACHE..."
|
|
||||||
rm -Rf "$CABAL_CACHE"
|
|
||||||
mkdir -p "$CABAL_CACHE"
|
|
||||||
if [ -d "$CABAL_DIR" ]; then
|
|
||||||
cp -Rf "$CABAL_DIR" "$CABAL_CACHE/"
|
|
||||||
fi
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
function extract_cabal_cache () {
|
|
||||||
if [ -d "$CABAL_CACHE" ]; then
|
|
||||||
echo "Extracting cabal cache from $CABAL_CACHE to $CABAL_DIR..."
|
|
||||||
mkdir -p "$CABAL_DIR"
|
|
||||||
cp -Rf "$CABAL_CACHE"/* "$CABAL_DIR"
|
|
||||||
fi
|
|
||||||
}
|
|
||||||
|
|
||||||
function save_stack_cache () {
|
|
||||||
echo "Storing stack cache from $STACK_ROOT to $STACK_CACHE..."
|
|
||||||
rm -Rf "$STACK_CACHE"
|
|
||||||
mkdir -p "$STACK_CACHE"
|
|
||||||
if [ -d "$STACK_ROOT" ]; then
|
|
||||||
cp -Rf "$STACK_DIR" "$STACK_CACHE"
|
|
||||||
fi
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
function extract_stack_cache () {
|
|
||||||
if [ -d "$STACK_CACHE" ]; then
|
|
||||||
echo "Extracting stack cache from $STACK_CACHE to $STACK_ROOT..."
|
|
||||||
mkdir -p "$STACK_ROOT"
|
|
||||||
cp -Rf "$STACK_CACHE"/* "$STACK_ROOT"
|
|
||||||
fi
|
|
||||||
}
|
|
||||||
|
|
||||||
function save_brew_cache () {
|
|
||||||
echo "Storing brew cache from $BREW_DIR to $BREW_CACHE..."
|
|
||||||
rm -Rf "$BREW_CACHE"
|
|
||||||
mkdir -p "$BREW_CACHE"
|
|
||||||
if [ -d "$BREW_DIR" ]; then
|
|
||||||
cp -Rf "$BREW_DIR" "$BREW_CACHE"
|
|
||||||
fi
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
function extract_brew_cache () {
|
|
||||||
if [ -d "$BREW_CACHE" ]; then
|
|
||||||
echo "Extracting stack cache from $BREW_CACHE to $BREW_DIR..."
|
|
||||||
mkdir -p "$BREW_DIR"
|
|
||||||
cp -Rf "$BREW_CACHE"/* "$BREW_DIR"
|
|
||||||
fi
|
|
||||||
}
|
|
||||||
|
|
||||||
case $1 in
|
|
||||||
extract_cabal_cache) extract_cabal_cache ;;
|
|
||||||
save_cabal_cache) save_cabal_cache ;;
|
|
||||||
extract_stack_cache) extract_stack_cache ;;
|
|
||||||
save_stack_cache) save_stack_cache ;;
|
|
||||||
extract_brew_cache) extract_brew_cache ;;
|
|
||||||
save_brew_cache) save_brew_cache ;;
|
|
||||||
*) echo "unknown mode $1" ; exit 11 ;;
|
|
||||||
esac
|
|
@ -1,20 +0,0 @@
|
|||||||
#!/bin/sh
|
|
||||||
|
|
||||||
set -eux
|
|
||||||
|
|
||||||
. "$( cd "$(dirname "$0")" ; pwd -P )/../ghcup_env"
|
|
||||||
|
|
||||||
mkdir -p "$CI_PROJECT_DIR"/.local/bin
|
|
||||||
|
|
||||||
git describe --always
|
|
||||||
|
|
||||||
### build
|
|
||||||
|
|
||||||
export BOOTSTRAP_HASKELL_NONINTERACTIVE=yes
|
|
||||||
export BOOTSTRAP_HASKELL_GHC_VERSION=$GHC_VERSION
|
|
||||||
export BOOTSTRAP_HASKELL_CABAL_VERSION=$CABAL_VERSION
|
|
||||||
|
|
||||||
./scripts/bootstrap/bootstrap-haskell
|
|
||||||
|
|
||||||
[ "$(ghc --numeric-version)" = "${GHC_VERSION}" ]
|
|
||||||
|
|
@ -1,52 +0,0 @@
|
|||||||
#!/bin/sh
|
|
||||||
|
|
||||||
set -eux
|
|
||||||
|
|
||||||
. "$( cd "$(dirname "$0")" ; pwd -P )/../ghcup_env"
|
|
||||||
|
|
||||||
mkdir -p "$CI_PROJECT_DIR"/.local/bin
|
|
||||||
|
|
||||||
CI_PROJECT_DIR=$(pwd)
|
|
||||||
|
|
||||||
ecabal() {
|
|
||||||
cabal "$@"
|
|
||||||
}
|
|
||||||
|
|
||||||
eghcup() {
|
|
||||||
ghcup -v -c -s file://$CI_PROJECT_DIR/data/metadata/ghcup-${JSON_VERSION}.yaml "$@"
|
|
||||||
}
|
|
||||||
|
|
||||||
git describe --always
|
|
||||||
|
|
||||||
### build
|
|
||||||
|
|
||||||
ecabal update
|
|
||||||
|
|
||||||
ecabal build -w ghc-${GHC_VERSION}
|
|
||||||
cp "$(ecabal new-exec -w ghc-${GHC_VERSION} --verbose=0 --offline sh -- -c 'command -v ghcup')" "$CI_PROJECT_DIR"/.local/bin/ghcup
|
|
||||||
|
|
||||||
### cleanup
|
|
||||||
|
|
||||||
rm -rf "${GHCUP_INSTALL_BASE_PREFIX}"/.ghcup
|
|
||||||
|
|
||||||
### manual cli based testing
|
|
||||||
|
|
||||||
eghcup --numeric-version
|
|
||||||
|
|
||||||
eghcup install ghc ${GHC_VERSION}
|
|
||||||
eghcup set ghc ${GHC_VERSION}
|
|
||||||
eghcup install cabal ${CABAL_VERSION}
|
|
||||||
|
|
||||||
cabal --version
|
|
||||||
|
|
||||||
eghcup debug-info
|
|
||||||
|
|
||||||
eghcup compile ghc -j $(nproc) -v ${GHC_TARGET_VERSION} -b ${GHC_VERSION} -x ${CROSS} -- --enable-unregisterised
|
|
||||||
eghcup set ghc ${CROSS}-${GHC_TARGET_VERSION}
|
|
||||||
|
|
||||||
[ `$(eghcup whereis ghc ${CROSS}-${GHC_TARGET_VERSION}) --numeric-version` = "${GHC_TARGET_VERSION}" ]
|
|
||||||
|
|
||||||
# nuke
|
|
||||||
eghcup nuke
|
|
||||||
[ ! -e "${GHCUP_INSTALL_BASE_PREFIX}/.ghcup" ]
|
|
||||||
|
|
@ -1,52 +0,0 @@
|
|||||||
#!/bin/sh
|
|
||||||
|
|
||||||
set -eux
|
|
||||||
|
|
||||||
. "$( cd "$(dirname "$0")" ; pwd -P )/../ghcup_env"
|
|
||||||
|
|
||||||
mkdir -p "$CI_PROJECT_DIR"/.local/bin
|
|
||||||
|
|
||||||
CI_PROJECT_DIR=$(pwd)
|
|
||||||
|
|
||||||
ecabal() {
|
|
||||||
cabal "$@"
|
|
||||||
}
|
|
||||||
|
|
||||||
eghcup() {
|
|
||||||
ghcup -v -c -s file://$CI_PROJECT_DIR/data/metadata/ghcup-${JSON_VERSION}.yaml "$@"
|
|
||||||
}
|
|
||||||
|
|
||||||
git describe --always
|
|
||||||
|
|
||||||
### build
|
|
||||||
|
|
||||||
ecabal update
|
|
||||||
|
|
||||||
ecabal build -w ghc-${GHC_VERSION}
|
|
||||||
cp "$(ecabal new-exec -w ghc-${GHC_VERSION} --verbose=0 --offline sh -- -c 'command -v ghcup')" "$CI_PROJECT_DIR"/.local/bin/ghcup
|
|
||||||
|
|
||||||
### cleanup
|
|
||||||
|
|
||||||
rm -rf "${GHCUP_INSTALL_BASE_PREFIX}"/.ghcup
|
|
||||||
|
|
||||||
### manual cli based testing
|
|
||||||
|
|
||||||
eghcup --numeric-version
|
|
||||||
|
|
||||||
eghcup install ghc ${GHC_VERSION}
|
|
||||||
eghcup set ghc ${GHC_VERSION}
|
|
||||||
eghcup install cabal ${CABAL_VERSION}
|
|
||||||
|
|
||||||
cabal --version
|
|
||||||
|
|
||||||
eghcup debug-info
|
|
||||||
|
|
||||||
eghcup compile ghc -j $(nproc) -g ${GHC_GIT_TAG} -b ${GHC_VERSION} -- --enable-unregisterised
|
|
||||||
eghcup set ghc ${GHC_GIT_VERSION}
|
|
||||||
|
|
||||||
[ `$(eghcup whereis ghc ${GHC_GIT_VERSION}) --numeric-version` = "${GHC_GIT_VERSION}" ]
|
|
||||||
|
|
||||||
# nuke
|
|
||||||
eghcup nuke
|
|
||||||
[ ! -e "${GHCUP_INSTALL_BASE_PREFIX}/.ghcup" ]
|
|
||||||
|
|
@ -1,51 +0,0 @@
|
|||||||
#!/bin/sh
|
|
||||||
|
|
||||||
set -eux
|
|
||||||
|
|
||||||
. "$( cd "$(dirname "$0")" ; pwd -P )/../ghcup_env"
|
|
||||||
|
|
||||||
mkdir -p "$CI_PROJECT_DIR"/.local/bin
|
|
||||||
|
|
||||||
CI_PROJECT_DIR=$(pwd)
|
|
||||||
|
|
||||||
ecabal() {
|
|
||||||
cabal "$@"
|
|
||||||
}
|
|
||||||
|
|
||||||
eghcup() {
|
|
||||||
ghcup -v -c -s file://$CI_PROJECT_DIR/data/metadata/ghcup-${JSON_VERSION}.yaml "$@"
|
|
||||||
}
|
|
||||||
|
|
||||||
git describe --always
|
|
||||||
|
|
||||||
### build
|
|
||||||
|
|
||||||
ecabal update
|
|
||||||
|
|
||||||
ecabal build -w ghc-${GHC_VERSION}
|
|
||||||
cp "$(ecabal new-exec -w ghc-${GHC_VERSION} --verbose=0 --offline sh -- -c 'command -v ghcup')" "$CI_PROJECT_DIR"/.local/bin/ghcup
|
|
||||||
|
|
||||||
### cleanup
|
|
||||||
|
|
||||||
rm -rf "${GHCUP_INSTALL_BASE_PREFIX}"/.ghcup
|
|
||||||
|
|
||||||
### manual cli based testing
|
|
||||||
|
|
||||||
eghcup --numeric-version
|
|
||||||
|
|
||||||
eghcup install ghc ${GHC_VERSION}
|
|
||||||
eghcup set ghc ${GHC_VERSION}
|
|
||||||
eghcup install cabal ${CABAL_VERSION}
|
|
||||||
|
|
||||||
cabal --version
|
|
||||||
|
|
||||||
eghcup debug-info
|
|
||||||
|
|
||||||
eghcup compile hls -j $(nproc) -v ${HLS_TARGET_VERSION} --ghc ${GHC_VERSION}
|
|
||||||
|
|
||||||
[ `$(eghcup whereis hls ${HLS_TARGET_VERSION}) --numeric-version` = "${HLS_TARGET_VERSION}" ] || [ `$(eghcup whereis hls ${HLS_TARGET_VERSION}) --numeric-version | sed 's/.0$//'` = "${HLS_TARGET_VERSION}" ]
|
|
||||||
|
|
||||||
# nuke
|
|
||||||
eghcup nuke
|
|
||||||
[ ! -e "${GHCUP_INSTALL_BASE_PREFIX}/.ghcup" ]
|
|
||||||
|
|
@ -1,44 +0,0 @@
|
|||||||
#!/bin/sh
|
|
||||||
|
|
||||||
set -eux
|
|
||||||
|
|
||||||
. "$( cd "$(dirname "$0")" ; pwd -P )/../ghcup_env"
|
|
||||||
|
|
||||||
mkdir -p "$CI_PROJECT_DIR"/.local/bin
|
|
||||||
|
|
||||||
ecabal() {
|
|
||||||
cabal "$@"
|
|
||||||
}
|
|
||||||
|
|
||||||
git describe
|
|
||||||
|
|
||||||
# build
|
|
||||||
ecabal update
|
|
||||||
|
|
||||||
|
|
||||||
if [ "${OS}" = "LINUX" ] ; then
|
|
||||||
if [ "${ARCH}" = "32" ] ; then
|
|
||||||
ecabal build -w ghc-${GHC_VERSION} --ghc-options='-split-sections -optl-static' -ftui
|
|
||||||
elif [ "${ARCH}" = "64" ] ; then
|
|
||||||
ecabal build -w ghc-${GHC_VERSION} --ghc-options='-split-sections -optl-static' -ftui
|
|
||||||
else
|
|
||||||
ecabal build -w ghc-${GHC_VERSION} -ftui
|
|
||||||
fi
|
|
||||||
elif [ "${OS}" = "FREEBSD" ] ; then
|
|
||||||
ecabal build -w ghc-${GHC_VERSION} --ghc-options='-split-sections' --constraint="zlib +bundled-c-zlib" --constraint="zip +disable-zstd" -ftui
|
|
||||||
elif [ "${OS}" = "WINDOWS" ] ; then
|
|
||||||
ecabal build -w ghc-${GHC_VERSION} --constraint="zlib +bundled-c-zlib" --constraint="lzma +static"
|
|
||||||
else
|
|
||||||
ecabal build -w ghc-${GHC_VERSION} --constraint="zlib +bundled-c-zlib" --constraint="lzma +static" -ftui
|
|
||||||
fi
|
|
||||||
|
|
||||||
mkdir out
|
|
||||||
binary=$(ecabal new-exec -w ghc-${GHC_VERSION} --verbose=0 --offline sh -- -c 'command -v ghcup')
|
|
||||||
ver=$("${binary}" --numeric-version)
|
|
||||||
if [ "${OS}" = "DARWIN" ] ; then
|
|
||||||
strip "${binary}"
|
|
||||||
else
|
|
||||||
strip -s "${binary}"
|
|
||||||
fi
|
|
||||||
cp "${binary}" out/${ARTIFACT}-${ver}
|
|
||||||
|
|
@ -1,21 +0,0 @@
|
|||||||
#!/bin/sh
|
|
||||||
|
|
||||||
set -eux
|
|
||||||
|
|
||||||
. "$( cd "$(dirname "$0")" ; pwd -P )/../ghcup_env"
|
|
||||||
|
|
||||||
mkdir -p "$CI_PROJECT_DIR"/.local/bin
|
|
||||||
|
|
||||||
git describe --always
|
|
||||||
|
|
||||||
### build
|
|
||||||
|
|
||||||
curl -L -O https://get.haskellstack.org/stable/linux-x86_64.tar.gz
|
|
||||||
tar xf linux-x86_64.tar.gz
|
|
||||||
cp stack-*-linux-*/stack "$CI_PROJECT_DIR"/.local/bin/stack
|
|
||||||
chmod +x "$CI_PROJECT_DIR"/.local/bin/stack
|
|
||||||
|
|
||||||
mkdir -p "$CI_PROJECT_DIR"/.stack_root
|
|
||||||
export TAR_OPTIONS=--no-same-owner
|
|
||||||
stack --allow-different-user --stack-root "$CI_PROJECT_DIR"/.stack_root build
|
|
||||||
stack --allow-different-user --stack-root "$CI_PROJECT_DIR"/.stack_root test
|
|
@ -1,314 +0,0 @@
|
|||||||
#!/usr/bin/env bash
|
|
||||||
|
|
||||||
set -eux
|
|
||||||
|
|
||||||
. "$( cd "$(dirname "$0")" ; pwd -P )/../ghcup_env"
|
|
||||||
|
|
||||||
mkdir -p "$CI_PROJECT_DIR"/.local/bin
|
|
||||||
|
|
||||||
CI_PROJECT_DIR=$(pwd)
|
|
||||||
|
|
||||||
|
|
||||||
ecabal() {
|
|
||||||
cabal "$@"
|
|
||||||
}
|
|
||||||
|
|
||||||
raw_eghcup() {
|
|
||||||
ghcup -v -c "$@"
|
|
||||||
}
|
|
||||||
|
|
||||||
eghcup() {
|
|
||||||
if [ "${OS}" = "WINDOWS" ] ; then
|
|
||||||
ghcup -v -c -s file:/$CI_PROJECT_DIR/data/metadata/ghcup-${JSON_VERSION}.yaml "$@"
|
|
||||||
else
|
|
||||||
ghcup -v -c -s file://$CI_PROJECT_DIR/data/metadata/ghcup-${JSON_VERSION}.yaml "$@"
|
|
||||||
fi
|
|
||||||
}
|
|
||||||
|
|
||||||
if [ "${OS}" = "WINDOWS" ] ; then
|
|
||||||
GHCUP_DIR="${GHCUP_INSTALL_BASE_PREFIX}"/ghcup
|
|
||||||
else
|
|
||||||
GHCUP_DIR="${GHCUP_INSTALL_BASE_PREFIX}"/.ghcup
|
|
||||||
fi
|
|
||||||
|
|
||||||
git describe --always
|
|
||||||
|
|
||||||
### build
|
|
||||||
|
|
||||||
rm -rf "${GHCUP_DIR}"/share
|
|
||||||
|
|
||||||
ecabal update
|
|
||||||
|
|
||||||
if [ "${OS}" = "DARWIN" ] ; then
|
|
||||||
ecabal build -w ghc-${GHC_VERSION} -ftui
|
|
||||||
ecabal test -w ghc-${GHC_VERSION} -ftui ghcup-test
|
|
||||||
ecabal haddock -w ghc-${GHC_VERSION} -ftui
|
|
||||||
elif [ "${OS}" = "LINUX" ] ; then
|
|
||||||
if [ "${ARCH}" = "32" ] ; then
|
|
||||||
ecabal build -w ghc-${GHC_VERSION} -finternal-downloader -ftui
|
|
||||||
ecabal test -w ghc-${GHC_VERSION} -finternal-downloader -ftui ghcup-test
|
|
||||||
ecabal haddock -w ghc-${GHC_VERSION} -finternal-downloader -ftui
|
|
||||||
else
|
|
||||||
ecabal build -w ghc-${GHC_VERSION} -finternal-downloader -ftui
|
|
||||||
ecabal test -w ghc-${GHC_VERSION} -finternal-downloader -ftui ghcup-test
|
|
||||||
ecabal haddock -w ghc-${GHC_VERSION} -finternal-downloader -ftui
|
|
||||||
|
|
||||||
if [ "${ARCH}" = "64" ] ; then
|
|
||||||
# doctest
|
|
||||||
curl -sL https://downloads.haskell.org/~ghcup/unofficial-bindists/cabal-docspec/cabal-docspec-0.0.0.20210228_p1.tar.bz2 > cabal-docspec.tar.bz2
|
|
||||||
echo '3a10f6fec16dbd18efdd331b1cef5d2d342082da42f5b520726d1fa6a3990d12 cabal-docspec.tar.bz2' | sha256sum -c -
|
|
||||||
tar -xjf cabal-docspec.tar.bz2 cabal-docspec
|
|
||||||
mv cabal-docspec "$CI_PROJECT_DIR"/.local/bin/cabal-docspec
|
|
||||||
rm -f cabal-docspec.tar.bz2
|
|
||||||
chmod a+x "$CI_PROJECT_DIR"/.local/bin/cabal-docspec
|
|
||||||
|
|
||||||
cabal-docspec -XCPP -XTypeSynonymInstances -XOverloadedStrings -XPackageImports --check-properties
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
elif [ "${OS}" = "FREEBSD" ] ; then
|
|
||||||
ecabal build -w ghc-${GHC_VERSION} -finternal-downloader -ftui --constraint="zip +disable-zstd"
|
|
||||||
ecabal test -w ghc-${GHC_VERSION} -finternal-downloader -ftui --constraint="zip +disable-zstd" ghcup-test
|
|
||||||
ecabal haddock -w ghc-${GHC_VERSION} -finternal-downloader -ftui --constraint="zip +disable-zstd"
|
|
||||||
elif [ "${OS}" = "WINDOWS" ] ; then
|
|
||||||
ecabal build -w ghc-${GHC_VERSION}
|
|
||||||
ecabal test -w ghc-${GHC_VERSION} ghcup-test
|
|
||||||
ecabal haddock -w ghc-${GHC_VERSION}
|
|
||||||
else
|
|
||||||
ecabal build -w ghc-${GHC_VERSION} -finternal-downloader -ftui
|
|
||||||
ecabal test -w ghc-${GHC_VERSION} -finternal-downloader -ftui ghcup-test
|
|
||||||
ecabal haddock -w ghc-${GHC_VERSION} -finternal-downloader -ftui
|
|
||||||
fi
|
|
||||||
|
|
||||||
|
|
||||||
if [ "${OS}" = "WINDOWS" ] ; then
|
|
||||||
ext=".exe"
|
|
||||||
else
|
|
||||||
ext=''
|
|
||||||
fi
|
|
||||||
cp "$(ecabal new-exec -w ghc-${GHC_VERSION} --verbose=0 --offline sh -- -c 'command -v ghcup')" "$CI_PROJECT_DIR"/.local/bin/ghcup${ext}
|
|
||||||
|
|
||||||
### cleanup
|
|
||||||
|
|
||||||
rm -rf "${GHCUP_DIR}"
|
|
||||||
|
|
||||||
### manual cli based testing
|
|
||||||
|
|
||||||
|
|
||||||
eghcup --numeric-version
|
|
||||||
|
|
||||||
eghcup install ghc ${GHC_VERSION}
|
|
||||||
eghcup unset ghc ${GHC_VERSION}
|
|
||||||
ls -lah "$(eghcup whereis -d ghc ${GHC_VERSION})"
|
|
||||||
[ "`$(eghcup whereis ghc ${GHC_VERSION}) --numeric-version`" = "${GHC_VERSION}" ]
|
|
||||||
[ "`eghcup run --ghc ${GHC_VERSION} -- ghc --numeric-version`" = "${GHC_VERSION}" ]
|
|
||||||
[ "`ghcup run --ghc ${GHC_VERSION} -- ghc -e 'Control.Monad.join (Control.Monad.fmap System.IO.putStr System.Environment.getExecutablePath)'`" = "`$(ghcup whereis ghc ${GHC_VERSION}) -e 'Control.Monad.join (Control.Monad.fmap System.IO.putStr System.Environment.getExecutablePath)'`" ]
|
|
||||||
eghcup set ghc ${GHC_VERSION}
|
|
||||||
eghcup install cabal ${CABAL_VERSION}
|
|
||||||
[ "`$(eghcup whereis cabal ${CABAL_VERSION}) --numeric-version`" = "${CABAL_VERSION}" ]
|
|
||||||
eghcup unset cabal
|
|
||||||
"$GHCUP_BIN"/cabal --version && exit 1 || echo yes
|
|
||||||
|
|
||||||
# make sure no cabal is set when running 'ghcup run' to check that PATH propagages properly
|
|
||||||
# https://gitlab.haskell.org/haskell/ghcup-hs/-/issues/375
|
|
||||||
[ "`eghcup run --cabal ${CABAL_VERSION} -- cabal --numeric-version`" = "${CABAL_VERSION}" ]
|
|
||||||
eghcup set cabal ${CABAL_VERSION}
|
|
||||||
|
|
||||||
[ "`$(eghcup whereis cabal ${CABAL_VERSION}) --numeric-version`" = "${CABAL_VERSION}" ]
|
|
||||||
|
|
||||||
if [ "${OS}" != "FREEBSD" ] ; then
|
|
||||||
if [ "${ARCH}" = "64" ] ; then
|
|
||||||
eghcup run --ghc 8.10.7 --cabal 3.4.1.0 --hls 1.6.1.0 --stack 2.7.3 --install --bindir "$(pwd)/.bin"
|
|
||||||
if [ "${OS}" == "WINDOWS" ] ; then
|
|
||||||
expected=$(cat "$( cd "$(dirname "$0")" ; pwd -P )/../ghcup-run.files.windows" | sort)
|
|
||||||
else
|
|
||||||
expected=$(cat "$( cd "$(dirname "$0")" ; pwd -P )/../ghcup-run.files" | sort)
|
|
||||||
fi
|
|
||||||
actual=$(cd ".bin" && find . | sort)
|
|
||||||
[ "${actual}" = "${expected}" ]
|
|
||||||
unset actual expected
|
|
||||||
rm -rf .bin
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
|
|
||||||
cabal --version
|
|
||||||
|
|
||||||
eghcup debug-info
|
|
||||||
|
|
||||||
# also test etags
|
|
||||||
eghcup list
|
|
||||||
eghcup list -t ghc
|
|
||||||
eghcup list -t cabal
|
|
||||||
|
|
||||||
ghc_ver=$(ghc --numeric-version)
|
|
||||||
ghc --version
|
|
||||||
ghc-${ghc_ver} --version
|
|
||||||
if [ "${OS}" != "WINDOWS" ] ; then
|
|
||||||
ghci --version
|
|
||||||
ghci-${ghc_ver} --version
|
|
||||||
fi
|
|
||||||
|
|
||||||
|
|
||||||
if [ "${OS}" = "DARWIN" ] && [ "${ARCH}" = "ARM64" ] ; then
|
|
||||||
echo
|
|
||||||
else
|
|
||||||
# test installing new ghc doesn't mess with currently set GHC
|
|
||||||
# https://gitlab.haskell.org/haskell/ghcup-hs/issues/7
|
|
||||||
if [ "${OS}" = "LINUX" ] ; then
|
|
||||||
eghcup --downloader=wget prefetch ghc 8.10.3
|
|
||||||
eghcup --offline install ghc 8.10.3
|
|
||||||
if [ "${ARCH}" = "64" ] ; then
|
|
||||||
expected=$(cat "$( cd "$(dirname "$0")" ; pwd -P )/../ghc-8.10.3-linux.files" | sort)
|
|
||||||
actual=$(cd "${GHCUP_DIR}/ghc/8.10.3/" && find . | sort)
|
|
||||||
[ "${actual}" = "${expected}" ]
|
|
||||||
unset actual expected
|
|
||||||
fi
|
|
||||||
elif [ "${OS}" = "WINDOWS" ] ; then
|
|
||||||
eghcup prefetch ghc 8.10.3
|
|
||||||
eghcup --offline install ghc 8.10.3
|
|
||||||
expected=$(cat "$( cd "$(dirname "$0")" ; pwd -P )/../ghc-8.10.3-windows.files" | sort)
|
|
||||||
actual=$(cd "${GHCUP_DIR}/ghc/8.10.3/" && find . | sort)
|
|
||||||
[ "${actual}" = "${expected}" ]
|
|
||||||
unset actual expected
|
|
||||||
else
|
|
||||||
eghcup prefetch ghc 8.10.3
|
|
||||||
eghcup --offline install ghc 8.10.3
|
|
||||||
fi
|
|
||||||
[ "$(ghc --numeric-version)" = "${ghc_ver}" ]
|
|
||||||
eghcup --offline set 8.10.3
|
|
||||||
eghcup set 8.10.3
|
|
||||||
[ "$(ghc --numeric-version)" = "8.10.3" ]
|
|
||||||
eghcup set ${GHC_VERSION}
|
|
||||||
[ "$(ghc --numeric-version)" = "${ghc_ver}" ]
|
|
||||||
eghcup unset ghc
|
|
||||||
"$GHCUP_BIN"/ghc --numeric-version && exit 1 || echo yes
|
|
||||||
eghcup set ${GHC_VERSION}
|
|
||||||
eghcup --offline rm 8.10.3
|
|
||||||
[ "$(ghc --numeric-version)" = "${ghc_ver}" ]
|
|
||||||
|
|
||||||
|
|
||||||
ls -lah "$GHCUP_BIN"
|
|
||||||
|
|
||||||
if [ "${OS}" = "DARWIN" ] ; then
|
|
||||||
eghcup install hls
|
|
||||||
$(eghcup whereis hls) --version
|
|
||||||
|
|
||||||
eghcup install stack
|
|
||||||
$(eghcup whereis stack) --version
|
|
||||||
elif [ "${OS}" = "LINUX" ] ; then
|
|
||||||
if [ "${ARCH}" = "64" ] ; then
|
|
||||||
eghcup install hls
|
|
||||||
haskell-language-server-wrapper --version
|
|
||||||
eghcup unset hls
|
|
||||||
"$GHCUP_BIN"/haskell-language-server-wrapper --version && exit 1 || echo yes
|
|
||||||
|
|
||||||
eghcup install stack
|
|
||||||
stack --version
|
|
||||||
eghcup unset stack
|
|
||||||
"$GHCUP_BIN"/stack --version && exit 1 || echo yes
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
# check that lazy loading works for 'whereis'
|
|
||||||
cp "$CI_PROJECT_DIR/data/metadata/ghcup-${JSON_VERSION}.yaml" "$CI_PROJECT_DIR/data/metadata/ghcup-${JSON_VERSION}.yaml.bak"
|
|
||||||
echo '**' > "$CI_PROJECT_DIR/data/metadata/ghcup-${JSON_VERSION}.yaml"
|
|
||||||
eghcup whereis ghc $(ghc --numeric-version)
|
|
||||||
mv -f "$CI_PROJECT_DIR/data/metadata/ghcup-${JSON_VERSION}.yaml.bak" "$CI_PROJECT_DIR/data/metadata/ghcup-${JSON_VERSION}.yaml"
|
|
||||||
|
|
||||||
eghcup rm $(ghc --numeric-version)
|
|
||||||
|
|
||||||
# https://gitlab.haskell.org/haskell/ghcup-hs/-/issues/116
|
|
||||||
if [ "${OS}" = "LINUX" ] ; then
|
|
||||||
if [ "${ARCH}" = "64" ] ; then
|
|
||||||
eghcup install cabal -u https://downloads.haskell.org/~ghcup/unofficial-bindists/cabal/3.7.0.0-pre20220407/cabal-install-3.7-x86_64-linux-alpine.tar.xz 3.4.0.0-rc4
|
|
||||||
eghcup rm cabal 3.4.0.0-rc4
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
|
|
||||||
eghcup gc -c
|
|
||||||
|
|
||||||
sha_sum() {
|
|
||||||
if [ "${OS}" = "FREEBSD" ] ; then
|
|
||||||
sha256 "$@"
|
|
||||||
else
|
|
||||||
sha256sum "$@"
|
|
||||||
fi
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
# test etags
|
|
||||||
rm -f "${GHCUP_DIR}/cache/ghcup-${JSON_VERSION}.yaml"
|
|
||||||
raw_eghcup -s https://www.haskell.org/ghcup/data/ghcup-${JSON_VERSION}.yaml list
|
|
||||||
# snapshot yaml and etags file
|
|
||||||
etag=$(cat "${GHCUP_DIR}/cache/ghcup-${JSON_VERSION}.yaml.etags")
|
|
||||||
sha=$(sha_sum "${GHCUP_DIR}/cache/ghcup-${JSON_VERSION}.yaml")
|
|
||||||
# invalidate access time timer, which is 5minutes, so we re-download
|
|
||||||
touch -a -m -t '199901010101' "${GHCUP_DIR}/cache/ghcup-${JSON_VERSION}.yaml"
|
|
||||||
# redownload same file with some newlines added
|
|
||||||
raw_eghcup -s https://www.haskell.org/ghcup/exp/ghcup-${JSON_VERSION}.yaml list
|
|
||||||
# snapshot new yaml and etags file
|
|
||||||
etag2=$(cat "${GHCUP_DIR}/cache/ghcup-${JSON_VERSION}.yaml.etags")
|
|
||||||
sha2=$(sha_sum "${GHCUP_DIR}/cache/ghcup-${JSON_VERSION}.yaml")
|
|
||||||
# compare
|
|
||||||
[ "${etag}" != "${etag2}" ]
|
|
||||||
[ "${sha}" != "${sha2}" ]
|
|
||||||
# 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"
|
|
||||||
# this time, we expect the same hash and etag
|
|
||||||
raw_eghcup -s https://www.haskell.org/ghcup/exp/ghcup-${JSON_VERSION}.yaml list
|
|
||||||
etag3=$(cat "${GHCUP_DIR}/cache/ghcup-${JSON_VERSION}.yaml.etags")
|
|
||||||
sha3=$(sha_sum "${GHCUP_DIR}/cache/ghcup-${JSON_VERSION}.yaml")
|
|
||||||
[ "${etag2}" = "${etag3}" ]
|
|
||||||
[ "${sha2}" = "${sha3}" ]
|
|
||||||
|
|
||||||
# test isolated installs
|
|
||||||
eghcup install ghc -i "$(pwd)/isolated" 8.10.5
|
|
||||||
[ "$(isolated/bin/ghc --numeric-version)" = "8.10.5" ]
|
|
||||||
! eghcup install ghc -i "$(pwd)/isolated" 8.10.5
|
|
||||||
if [ "${ARCH}" = "64" ] ; then
|
|
||||||
if [ "${OS}" = "LINUX" ] || [ "${OS}" = "WINDOWS" ] ; then
|
|
||||||
eghcup install cabal -i "$(pwd)/isolated" 3.4.0.0
|
|
||||||
[ "$(isolated/cabal --numeric-version)" = "3.4.0.0" ]
|
|
||||||
eghcup install stack -i "$(pwd)/isolated" 2.7.3
|
|
||||||
[ "$(isolated/stack --numeric-version)" = "2.7.3" ]
|
|
||||||
eghcup install hls -i "$(pwd)/isolated" 1.3.0
|
|
||||||
[ "$(isolated/haskell-language-server-wrapper --numeric-version)" = "1.3.0" ] ||
|
|
||||||
[ "$(isolated/haskell-language-server-wrapper --numeric-version)" = "1.3.0.0" ]
|
|
||||||
|
|
||||||
# test that isolated installs don't clean up target directory
|
|
||||||
cat <<EOF > "${GHCUP_BIN}/gmake"
|
|
||||||
#!/bin/bash
|
|
||||||
exit 1
|
|
||||||
EOF
|
|
||||||
chmod +x "${GHCUP_BIN}/gmake"
|
|
||||||
mkdir isolated_tainted/
|
|
||||||
touch isolated_tainted/lol
|
|
||||||
|
|
||||||
! eghcup install ghc -i "$(pwd)/isolated_tainted" 8.10.5 --force
|
|
||||||
[ -e "$(pwd)/isolated_tainted/lol" ]
|
|
||||||
rm "${GHCUP_BIN}/gmake"
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
|
|
||||||
eghcup upgrade
|
|
||||||
eghcup upgrade -f
|
|
||||||
|
|
||||||
# test that doing fishy symlinks into GHCup dir doesn't cause weird stuff on 'ghcup nuke'
|
|
||||||
mkdir no_nuke/
|
|
||||||
mkdir no_nuke/bar
|
|
||||||
echo 'foo' > no_nuke/file
|
|
||||||
echo 'bar' > no_nuke/bar/file
|
|
||||||
ln -s "$CI_PROJECT_DIR"/no_nuke/ "${GHCUP_DIR}"/cache/no_nuke
|
|
||||||
ln -s "$CI_PROJECT_DIR"/no_nuke/ "${GHCUP_DIR}"/logs/no_nuke
|
|
||||||
|
|
||||||
# nuke
|
|
||||||
eghcup nuke
|
|
||||||
[ ! -e "${GHCUP_DIR}" ]
|
|
||||||
|
|
||||||
# make sure nuke doesn't resolve symlinks
|
|
||||||
[ -e "$CI_PROJECT_DIR"/no_nuke/file ]
|
|
||||||
[ -e "$CI_PROJECT_DIR"/no_nuke/bar/file ]
|
|
||||||
|
|
||||||
|
|
@ -1,19 +0,0 @@
|
|||||||
#!/bin/sh
|
|
||||||
|
|
||||||
set -eux
|
|
||||||
|
|
||||||
. "$( cd "$(dirname "$0")" ; pwd -P )/../ghcup_env"
|
|
||||||
|
|
||||||
mkdir -p "$CI_PROJECT_DIR"/.local/bin
|
|
||||||
|
|
||||||
ecabal() {
|
|
||||||
cabal --store-dir="$(pwd)"/.store "$@"
|
|
||||||
}
|
|
||||||
|
|
||||||
git describe
|
|
||||||
|
|
||||||
ecabal update
|
|
||||||
ecabal install -w ghc-${GHC_VERSION} --installdir="$CI_PROJECT_DIR"/.local/bin hlint
|
|
||||||
|
|
||||||
hlint -r app/ lib/ test/
|
|
||||||
|
|
@ -1,28 +0,0 @@
|
|||||||
#!/bin/sh
|
|
||||||
|
|
||||||
set -ex
|
|
||||||
|
|
||||||
mkdir -p ~/.ghcup/bin
|
|
||||||
curl -sSfL https://downloads.haskell.org/~ghcup/x86_64-apple-darwin-ghcup > ~/.ghcup/bin/ghcup
|
|
||||||
chmod +x ~/.ghcup/bin/ghcup
|
|
||||||
|
|
||||||
export PATH="$HOME/.ghcup/bin:$PATH"
|
|
||||||
|
|
||||||
ghcup install 8.10.4
|
|
||||||
ghcup install-cabal 3.4.0.0
|
|
||||||
ghcup set 8.10.4
|
|
||||||
|
|
||||||
|
|
||||||
## install ghcup
|
|
||||||
|
|
||||||
cabal update
|
|
||||||
|
|
||||||
(
|
|
||||||
cd /tmp
|
|
||||||
cabal install --installdir="$HOME"/.ghcup/bin hspec-discover
|
|
||||||
)
|
|
||||||
|
|
||||||
cabal build --constraint="zlib +static" --constraint="lzma +static" -ftui
|
|
||||||
cp "$(cabal new-exec --verbose=0 --offline sh -- -c 'command -v ghcup')" .
|
|
||||||
strip ./ghcup
|
|
||||||
cp ghcup "./${ARTIFACT}"
|
|
54
CHANGELOG.md
54
CHANGELOG.md
@ -1,8 +1,58 @@
|
|||||||
# Revision history for ghcup
|
# Revision history for ghcup
|
||||||
|
|
||||||
## 0.1.19.5 -- ????-?-??
|
## 0.1.22.0 -- 2024-03-13
|
||||||
|
|
||||||
* support JS cross compilers wrt [#838](https://github.com/haskell/ghcup-hs/issues/838)
|
### New features
|
||||||
|
|
||||||
|
* A help screen/tutorial in the TUI by @lsmor (Luis Morillo)
|
||||||
|
* Beef up `--overwrite-version`, fixes [#998](https://github.com/haskell/ghcup-hs/issues/998)
|
||||||
|
* e.g. `ghcup compile hls -g master --overwrite-version='%v-%h' --ghc 9.4.8` will produce a binary called `haskell-language-server-wrapper-<version-from-cabal-file>-<short-git-commit-hash>`... refer to `ghcup compile hls --help` for more information
|
||||||
|
* Allow to set ghcup msys2 environment wrt [#982](https://github.com/haskell/ghcup-hs/issues/982)
|
||||||
|
* Add mechanism to warn on new metadata versions, fixes [#860](https://github.com/haskell/ghcup-hs/issues/860)
|
||||||
|
* Add pre-install message support via ghcup metadata, wrt [#1016](https://github.com/haskell/ghcup-hs/issues/1016)
|
||||||
|
* Allow to remove all unset versions, fixes [#1019](https://github.com/haskell/ghcup-hs/issues/1019)
|
||||||
|
* e.g.: `ghcup gc --unset`
|
||||||
|
|
||||||
|
### Improvements and bug fixes
|
||||||
|
|
||||||
|
* Fix potential [HSEC-2024-0002](https://haskell.github.io/security-advisories/advisory/HSEC-2024-0002.html)
|
||||||
|
* Fix TUI crash in windows terminal 1.19 [#1013](https://github.com/haskell/ghcup-hs/issues/1013)
|
||||||
|
* Clean up on git clone errors, fixes [#1004](https://github.com/haskell/ghcup-hs/issues/1004)
|
||||||
|
* Error out on empty UserSettings wrt [#922](https://github.com/haskell/ghcup-hs/issues/922)
|
||||||
|
* Fix failure mode when metadata is garbage, fixes [#921](https://github.com/haskell/ghcup-hs/issues/921)
|
||||||
|
* Be less confusing when user tries to 'set' ghcup in TUI, fixes [#923](https://github.com/haskell/ghcup-hs/issues/923)
|
||||||
|
* Fix prefetch for cross bindists
|
||||||
|
* Fix misinterpretation of '+' in URI paths, fixes [#408](https://github.com/haskell/ghcup-hs/issues/408)
|
||||||
|
* Stricter (and better) file uri handling
|
||||||
|
* Set LD=ld.bfd on Alpine linux during bindist configure
|
||||||
|
* Add rocky/void detection
|
||||||
|
* Logging improvements
|
||||||
|
* Remove the "show all tool" config in the TUI
|
||||||
|
* Fix opening changelog on windows
|
||||||
|
* Don't remove share dir link prematurely
|
||||||
|
* Require user to explicitly choose subcommand for 'ghcup config'
|
||||||
|
* Don't download twice when trying stack decoding
|
||||||
|
|
||||||
|
### Refactoring and maintenance
|
||||||
|
|
||||||
|
* Large TUI code cleanup by @lsmor (Luis Morillo)... more coming up soon
|
||||||
|
* Allow building with `tar` instead of `libarchive` (mainly to make contributions easier)
|
||||||
|
|
||||||
|
## 0.1.20.0 -- 2023-11-10
|
||||||
|
|
||||||
|
### New features
|
||||||
|
|
||||||
|
* support TUI on windows thanks to the work from vty and brick maintainers (Chris Hackett, Timofey Zakrevskiy, Jonathan Daugherty, ...), wrt [#912](https://github.com/haskell/ghcup-hs/pull/912)
|
||||||
|
* support JS and wasm cross compilers wrt [#838](https://github.com/haskell/ghcup-hs/issues/838), thanks to Sylvain Henry and IOG
|
||||||
|
* Support stacks installation strategy and metadata wrt [#892](https://github.com/haskell/ghcup-hs/issues/892)
|
||||||
|
- you can now enable stacks installation method via `ghcup config set url-source '["GHCupURL", "StackSetupURL"]'`... for more information, check the [documentation](https://www.haskell.org/ghcup/guide/#using-stacks-setup-info-metadata-to-install-ghc)
|
||||||
|
|
||||||
|
### Improvements and bug fixes
|
||||||
|
|
||||||
|
* fix segfault in TUI when hitting enter early wrt [#887](https://github.com/haskell/ghcup-hs/issues/887)
|
||||||
|
* Improve key handling in TUI, fixes [#875](https://github.com/haskell/ghcup-hs/issues/875)
|
||||||
|
* add explicit support for Void Linux and Rocky Linux (this requires a metadata version bump to `ghcup-0.0.8.yaml`)
|
||||||
|
* optparse cli interface now has a test suite thanks to Lei Zhu, wrt [#862](https://github.com/haskell/ghcup-hs/pull/862)
|
||||||
|
|
||||||
## 0.1.19.4 -- 2023-7-02
|
## 0.1.19.4 -- 2023-7-02
|
||||||
|
|
||||||
|
File diff suppressed because it is too large
Load Diff
@ -41,6 +41,7 @@ import Data.Aeson ( decodeStrict', Value )
|
|||||||
import Data.Aeson.Encode.Pretty ( encodePretty )
|
import Data.Aeson.Encode.Pretty ( encodePretty )
|
||||||
import Data.Either
|
import Data.Either
|
||||||
import Data.Functor
|
import Data.Functor
|
||||||
|
import Data.Versions (version)
|
||||||
import Data.Maybe
|
import Data.Maybe
|
||||||
import GHC.IO.Encoding
|
import GHC.IO.Encoding
|
||||||
import Haskus.Utils.Variant.Excepts
|
import Haskus.Utils.Variant.Excepts
|
||||||
@ -89,6 +90,7 @@ toSettings options = do
|
|||||||
gpgSetting = fromMaybe (fromMaybe (Types.gpgSetting defaultSettings) uGPGSetting) optGpg
|
gpgSetting = fromMaybe (fromMaybe (Types.gpgSetting defaultSettings) uGPGSetting) optGpg
|
||||||
platformOverride = optPlatform <|> (uPlatformOverride <|> Types.platformOverride defaultSettings)
|
platformOverride = optPlatform <|> (uPlatformOverride <|> Types.platformOverride defaultSettings)
|
||||||
mirrors = fromMaybe (Types.mirrors defaultSettings) uMirrors
|
mirrors = fromMaybe (Types.mirrors defaultSettings) uMirrors
|
||||||
|
defGHCConfOptions = fromMaybe (Types.defGHCConfOptions defaultSettings) uDefGHCConfOptions
|
||||||
in (Settings {..}, keyBindings)
|
in (Settings {..}, keyBindings)
|
||||||
#if defined(INTERNAL_DOWNLOADER)
|
#if defined(INTERNAL_DOWNLOADER)
|
||||||
defaultDownloader = Internal
|
defaultDownloader = Internal
|
||||||
@ -107,7 +109,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
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -261,7 +262,7 @@ Report bugs at <https://github.com/haskell/ghcup-hs/issues>|]
|
|||||||
Just _ -> pure ()
|
Just _ -> pure ()
|
||||||
|
|
||||||
-- TODO: always run for windows
|
-- TODO: always run for windows
|
||||||
siletRunLogger (flip runReaderT s' $ runE ensureGlobalTools) >>= \case
|
siletRunLogger (flip runReaderT s' $ runE ensureShimGen) >>= \case
|
||||||
VRight _ -> pure ()
|
VRight _ -> pure ()
|
||||||
VLeft e -> do
|
VLeft e -> do
|
||||||
runLogger
|
runLogger
|
||||||
@ -342,12 +343,14 @@ Report bugs at <https://github.com/haskell/ghcup-hs/issues>|]
|
|||||||
alreadyInstalling (Install (Left (InstallCabal InstallOptions{..}))) (Cabal, ver) = cmp' Cabal instVer ver
|
alreadyInstalling (Install (Left (InstallCabal InstallOptions{..}))) (Cabal, ver) = cmp' Cabal instVer ver
|
||||||
alreadyInstalling (Install (Left (InstallHLS InstallOptions{..}))) (HLS, ver) = cmp' HLS instVer ver
|
alreadyInstalling (Install (Left (InstallHLS InstallOptions{..}))) (HLS, ver) = cmp' HLS instVer ver
|
||||||
alreadyInstalling (Install (Left (InstallStack InstallOptions{..}))) (Stack, ver) = cmp' Stack instVer ver
|
alreadyInstalling (Install (Left (InstallStack InstallOptions{..}))) (Stack, ver) = cmp' Stack instVer ver
|
||||||
alreadyInstalling (Compile (CompileGHC GHCCompileOptions{ ovewrwiteVer = Just over }))
|
alreadyInstalling (Compile (CompileGHC GHCCompileOptions{ overwriteVer = Just [S over] })) (GHC, ver)
|
||||||
(GHC, ver) = cmp' GHC (Just $ GHCVersion (mkTVer over)) ver
|
| Right over' <- version (T.pack over) = cmp' GHC (Just $ GHCVersion (mkTVer over')) ver
|
||||||
|
| otherwise = pure False
|
||||||
alreadyInstalling (Compile (CompileGHC GHCCompileOptions{ targetGhc = GHC.SourceDist tver }))
|
alreadyInstalling (Compile (CompileGHC GHCCompileOptions{ targetGhc = GHC.SourceDist tver }))
|
||||||
(GHC, ver) = cmp' GHC (Just $ ToolVersion tver) ver
|
(GHC, ver) = cmp' GHC (Just $ ToolVersion tver) ver
|
||||||
alreadyInstalling (Compile (CompileHLS HLSCompileOptions{ ovewrwiteVer = Right over }))
|
alreadyInstalling (Compile (CompileHLS HLSCompileOptions{ overwriteVer = Just [S over] })) (HLS, ver)
|
||||||
(HLS, ver) = cmp' HLS (Just $ ToolVersion over) ver
|
| Right over' <- version (T.pack over) = cmp' HLS (Just $ ToolVersion over') ver
|
||||||
|
| otherwise = pure False
|
||||||
alreadyInstalling (Compile (CompileHLS HLSCompileOptions{ targetHLS = HLS.SourceDist tver }))
|
alreadyInstalling (Compile (CompileHLS HLSCompileOptions{ targetHLS = HLS.SourceDist tver }))
|
||||||
(HLS, ver) = cmp' HLS (Just $ ToolVersion tver) ver
|
(HLS, ver) = cmp' HLS (Just $ ToolVersion tver) ver
|
||||||
alreadyInstalling (Compile (CompileHLS HLSCompileOptions{ targetHLS = HLS.HackageDist tver }))
|
alreadyInstalling (Compile (CompileHLS HLSCompileOptions{ targetHLS = HLS.HackageDist tver }))
|
||||||
|
60
cabal.ghc8107.Unix.project
Normal file
60
cabal.ghc8107.Unix.project
Normal file
@ -0,0 +1,60 @@
|
|||||||
|
packages: ./ghcup.cabal
|
||||||
|
|
||||||
|
optional-packages: ./vendored/*/*.cabal
|
||||||
|
|
||||||
|
if impl(ghc < 9.0)
|
||||||
|
package ghcup
|
||||||
|
flags: +tui -tar
|
||||||
|
else
|
||||||
|
package ghcup
|
||||||
|
flags: +tui +tar
|
||||||
|
|
||||||
|
constraints: http-io-streams -brotli,
|
||||||
|
any.aeson >= 2.0.1.0,
|
||||||
|
any.hsc2hs ==0.68.8,
|
||||||
|
bzlib-conduit >= 0.3.0.3,
|
||||||
|
bz2 >= 1.0.1.1,
|
||||||
|
bzlib >= 0.5.2.0,
|
||||||
|
directory >= 1.3.8.3,
|
||||||
|
filepath == 1.4.101.0 || == 1.4.300.1 || >= 1.5.2.0
|
||||||
|
|
||||||
|
if os(mingw32)
|
||||||
|
constraints: zlib +bundled-c-zlib,
|
||||||
|
lzma +static,
|
||||||
|
text -simdutf,
|
||||||
|
vty-windows >=0.2.0.2
|
||||||
|
|
||||||
|
if impl(ghc >= 9.4)
|
||||||
|
constraints: language-c >= 0.9.3
|
||||||
|
|
||||||
|
|
||||||
|
source-repository-package
|
||||||
|
type: git
|
||||||
|
location: https://github.com/haskell/tar.git
|
||||||
|
tag: d94a988be4311b830149a9f8fc16739927e5fc1c
|
||||||
|
|
||||||
|
source-repository-package
|
||||||
|
type: git
|
||||||
|
location: https://github.com/hasufell/uri-bytestring.git
|
||||||
|
tag: 4fb5ed14b500c192e6e7a97f6b2b1eb478806001
|
||||||
|
|
||||||
|
package libarchive
|
||||||
|
flags: -system-libarchive
|
||||||
|
|
||||||
|
package aeson-pretty
|
||||||
|
flags: +lib-only
|
||||||
|
|
||||||
|
package cabal-plan
|
||||||
|
flags: -exe
|
||||||
|
|
||||||
|
package aeson
|
||||||
|
flags: +ordered-keymap
|
||||||
|
|
||||||
|
package streamly
|
||||||
|
flags: +use-unliftio
|
||||||
|
|
||||||
|
package *
|
||||||
|
test-show-details: direct
|
||||||
|
|
||||||
|
allow-newer: cabal-install-parsers:tar, streamly:Win32
|
||||||
|
|
@ -1,55 +1,56 @@
|
|||||||
active-repositories: hackage.haskell.org:merge
|
active-repositories: hackage.haskell.org:merge
|
||||||
constraints: any.Cabal ==3.6.3.0,
|
constraints: any.Cabal ==3.10.2.1,
|
||||||
Cabal -bundled-binary-generic,
|
any.Cabal-syntax ==3.10.2.0,
|
||||||
any.Cabal-syntax ==3.8.1.0,
|
|
||||||
any.HUnit ==1.6.2.0,
|
any.HUnit ==1.6.2.0,
|
||||||
any.HsOpenSSL ==0.11.7.4,
|
any.HsOpenSSL ==0.11.7.6,
|
||||||
HsOpenSSL -fast-bignum -homebrew-openssl -macports-openssl -use-pkg-config,
|
HsOpenSSL -fast-bignum -homebrew-openssl -macports-openssl -use-pkg-config,
|
||||||
any.OneTuple ==0.3.1,
|
any.OneTuple ==0.4.1.1,
|
||||||
any.QuickCheck ==2.14.2,
|
any.QuickCheck ==2.14.3,
|
||||||
QuickCheck -old-random +templatehaskell,
|
QuickCheck -old-random +templatehaskell,
|
||||||
any.StateVar ==1.2.2,
|
any.StateVar ==1.2.2,
|
||||||
any.abstract-deque ==0.3,
|
any.abstract-deque ==0.3,
|
||||||
abstract-deque -usecas,
|
abstract-deque -usecas,
|
||||||
any.aeson ==2.1.1.0,
|
any.aeson ==2.2.1.0,
|
||||||
aeson -cffi +ordered-keymap,
|
aeson +ordered-keymap,
|
||||||
any.aeson-pretty ==0.8.9,
|
any.aeson-pretty ==0.8.10,
|
||||||
aeson-pretty +lib-only,
|
aeson-pretty +lib-only,
|
||||||
any.alex ==3.2.7.1,
|
any.alex ==3.5.1.0,
|
||||||
any.ansi-terminal ==0.11.4,
|
any.ansi-terminal ==1.0.2,
|
||||||
ansi-terminal -example +win32-2-13-1,
|
ansi-terminal -example,
|
||||||
|
any.ansi-terminal-types ==0.11.5,
|
||||||
any.ansi-wl-pprint ==0.6.9,
|
any.ansi-wl-pprint ==0.6.9,
|
||||||
ansi-wl-pprint -example,
|
ansi-wl-pprint -example,
|
||||||
any.array ==0.5.4.0,
|
any.array ==0.5.4.0,
|
||||||
any.assoc ==1.0.2,
|
any.assoc ==1.1,
|
||||||
any.async ==2.2.4,
|
assoc +tagged,
|
||||||
|
any.async ==2.2.5,
|
||||||
async -bench,
|
async -bench,
|
||||||
any.atomic-primops ==0.8.4,
|
any.atomic-primops ==0.8.5,
|
||||||
atomic-primops -debug,
|
atomic-primops -debug,
|
||||||
any.attoparsec ==0.14.4,
|
any.attoparsec ==0.14.4,
|
||||||
attoparsec -developer,
|
attoparsec -developer,
|
||||||
any.base ==4.14.3.0,
|
any.base ==4.14.3.0,
|
||||||
any.base-compat ==0.12.2,
|
any.base-compat ==0.13.1,
|
||||||
any.base-compat-batteries ==0.12.2,
|
any.base-orphans ==0.9.1,
|
||||||
any.base-orphans ==0.8.7,
|
|
||||||
any.base16-bytestring ==1.0.2.0,
|
any.base16-bytestring ==1.0.2.0,
|
||||||
any.base64-bytestring ==1.2.1.0,
|
any.base64-bytestring ==1.2.1.0,
|
||||||
any.bifunctors ==5.5.14,
|
any.bifunctors ==5.6.1,
|
||||||
bifunctors +semigroups +tagged,
|
bifunctors +tagged,
|
||||||
any.bimap ==0.5.0,
|
any.bimap ==0.5.0,
|
||||||
any.binary ==0.8.8.0,
|
any.binary ==0.8.9.1,
|
||||||
any.binary-instances ==1.0.3,
|
any.binary-instances ==1.0.4,
|
||||||
any.binary-orphans ==1.0.3,
|
any.binary-orphans ==1.0.4.1,
|
||||||
any.blaze-builder ==0.4.2.2,
|
any.blaze-builder ==0.4.2.3,
|
||||||
any.brick ==1.5,
|
any.brick ==2.1.1,
|
||||||
brick -demos,
|
brick -demos,
|
||||||
any.bytestring ==0.10.12.0,
|
any.bytestring ==0.11.5.3,
|
||||||
any.bz2 ==1.0.1.0,
|
any.bz2 ==1.0.1.1,
|
||||||
bz2 -cross +with-bzlib,
|
bz2 -cross +with-bzlib,
|
||||||
|
any.bzip2-clib ==1.0.8,
|
||||||
any.c2hs ==0.28.8,
|
any.c2hs ==0.28.8,
|
||||||
c2hs +base3 -regression,
|
c2hs +base3 -regression,
|
||||||
any.cabal-install-parsers ==0.5,
|
any.cabal-install-parsers ==0.6.1.1,
|
||||||
any.cabal-plan ==0.7.2.3,
|
any.cabal-plan ==0.7.3.0,
|
||||||
cabal-plan -_ -exe -license-report,
|
cabal-plan -_ -exe -license-report,
|
||||||
any.call-stack ==0.4.0,
|
any.call-stack ==0.4.0,
|
||||||
any.case-insensitive ==1.2.1.0,
|
any.case-insensitive ==1.2.1.0,
|
||||||
@ -62,7 +63,7 @@ constraints: any.Cabal ==3.6.3.0,
|
|||||||
comonad +containers +distributive +indexed-traversable,
|
comonad +containers +distributive +indexed-traversable,
|
||||||
any.composition-prelude ==3.0.0.2,
|
any.composition-prelude ==3.0.0.2,
|
||||||
composition-prelude -development,
|
composition-prelude -development,
|
||||||
any.config-ini ==0.2.5.0,
|
any.config-ini ==0.2.7.0,
|
||||||
config-ini -enable-doctests,
|
config-ini -enable-doctests,
|
||||||
any.containers ==0.6.5.1,
|
any.containers ==0.6.5.1,
|
||||||
any.contravariant ==1.5.5,
|
any.contravariant ==1.5.5,
|
||||||
@ -76,52 +77,58 @@ constraints: any.Cabal ==3.6.3.0,
|
|||||||
any.data-clist ==0.2,
|
any.data-clist ==0.2,
|
||||||
any.data-fix ==0.3.2,
|
any.data-fix ==0.3.2,
|
||||||
any.deepseq ==1.4.4.0,
|
any.deepseq ==1.4.4.0,
|
||||||
any.directory ==1.3.6.0,
|
any.directory ==1.3.8.3,
|
||||||
|
directory -os-string,
|
||||||
any.disk-free-space ==0.1.0.1,
|
any.disk-free-space ==0.1.0.1,
|
||||||
any.distributive ==0.6.2.1,
|
any.distributive ==0.6.2.1,
|
||||||
distributive +semigroups +tagged,
|
distributive +semigroups +tagged,
|
||||||
any.dlist ==1.0,
|
any.dlist ==1.0,
|
||||||
dlist -werror,
|
dlist -werror,
|
||||||
any.exceptions ==0.10.4,
|
any.exceptions ==0.10.4,
|
||||||
any.filepath ==1.4.2.1,
|
any.file-uri ==0.1.0.0,
|
||||||
any.free ==5.1.10,
|
any.filepath ==1.4.101.0,
|
||||||
|
filepath -cpphs,
|
||||||
|
any.foldable1-classes-compat ==0.1,
|
||||||
|
foldable1-classes-compat +tagged,
|
||||||
|
any.free ==5.2,
|
||||||
any.fusion-plugin-types ==0.1.0,
|
any.fusion-plugin-types ==0.1.0,
|
||||||
any.generic-arbitrary ==0.2.2,
|
any.generic-arbitrary ==0.2.2,
|
||||||
any.generically ==0.1,
|
any.generically ==0.1.1,
|
||||||
any.ghc-boot-th ==8.10.7,
|
any.ghc-boot-th ==8.10.7,
|
||||||
any.ghc-byteorder ==4.11.0.0.10,
|
any.ghc-byteorder ==4.11.0.0.10,
|
||||||
any.ghc-prim ==0.6.1,
|
any.ghc-prim ==0.6.1,
|
||||||
any.happy ==1.20.0,
|
any.happy ==1.20.1.1,
|
||||||
any.hashable ==1.4.2.0,
|
any.hashable ==1.4.3.0,
|
||||||
hashable +integer-gmp -random-initial-seed,
|
hashable +integer-gmp -random-initial-seed,
|
||||||
any.haskell-lexer ==1.1.1,
|
any.haskell-lexer ==1.1.1,
|
||||||
any.haskus-utils-data ==1.4,
|
any.haskus-utils-data ==1.4,
|
||||||
any.haskus-utils-types ==1.5.1,
|
any.haskus-utils-types ==1.5.1,
|
||||||
any.haskus-utils-variant ==3.2.1,
|
any.haskus-utils-variant ==3.3,
|
||||||
any.heaps ==0.4,
|
any.heaps ==0.4,
|
||||||
any.hsc2hs ==0.68.8,
|
any.hsc2hs ==0.68.8,
|
||||||
hsc2hs -in-ghc-tree,
|
hsc2hs -in-ghc-tree,
|
||||||
any.hspec ==2.10.8,
|
any.hspec ==2.10.10,
|
||||||
any.hspec-core ==2.10.8,
|
any.hspec-core ==2.10.10,
|
||||||
any.hspec-discover ==2.10.8,
|
any.hspec-discover ==2.10.10,
|
||||||
any.hspec-expectations ==0.8.2,
|
any.hspec-expectations ==0.8.2,
|
||||||
any.hspec-golden-aeson ==0.9.0.0,
|
any.hspec-golden-aeson ==0.9.0.0,
|
||||||
any.http-io-streams ==0.1.6.1,
|
any.http-io-streams ==0.1.7.0,
|
||||||
http-io-streams -brotli +fast-xor,
|
http-io-streams -brotli +fast-xor,
|
||||||
any.indexed-profunctors ==0.1.1,
|
any.indexed-profunctors ==0.1.1.1,
|
||||||
any.indexed-traversable ==0.1.2,
|
any.indexed-traversable ==0.1.3,
|
||||||
any.indexed-traversable-instances ==0.1.1.1,
|
any.indexed-traversable-instances ==0.1.1.2,
|
||||||
|
any.integer-conversion ==0.1.0.1,
|
||||||
any.integer-gmp ==1.0.3.0,
|
any.integer-gmp ==1.0.3.0,
|
||||||
any.integer-logarithms ==1.0.3.1,
|
any.integer-logarithms ==1.0.3.1,
|
||||||
integer-logarithms -check-bounds +integer-gmp,
|
integer-logarithms -check-bounds +integer-gmp,
|
||||||
any.io-streams ==1.5.2.2,
|
any.io-streams ==1.5.2.2,
|
||||||
io-streams +network -nointeractivetests +zlib,
|
io-streams +network -nointeractivetests +zlib,
|
||||||
any.language-c ==0.9.2,
|
any.language-c ==0.9.3,
|
||||||
language-c -allwarnings +iecfpextension +usebytestrings,
|
language-c -allwarnings +iecfpextension +usebytestrings,
|
||||||
any.libarchive ==3.0.3.2,
|
any.libarchive ==3.0.4.2,
|
||||||
libarchive -cross -low-memory +no-exe -system-libarchive,
|
libarchive -cross -low-memory +no-exe -system-libarchive,
|
||||||
any.libyaml-streamly ==0.2.1,
|
any.libyaml-streamly ==0.2.2.1,
|
||||||
libyaml-streamly -no-unicode -system-libyaml,
|
libyaml-streamly -no-unicode +system-libyaml,
|
||||||
any.lockfree-queue ==0.2.4,
|
any.lockfree-queue ==0.2.4,
|
||||||
any.lukko ==0.1.1.3,
|
any.lukko ==0.1.1.3,
|
||||||
lukko +ofd-locking,
|
lukko +ofd-locking,
|
||||||
@ -130,84 +137,86 @@ constraints: any.Cabal ==3.6.3.0,
|
|||||||
megaparsec -dev,
|
megaparsec -dev,
|
||||||
any.microlens ==0.4.13.1,
|
any.microlens ==0.4.13.1,
|
||||||
any.microlens-mtl ==0.2.0.3,
|
any.microlens-mtl ==0.2.0.3,
|
||||||
any.microlens-th ==0.4.3.11,
|
any.microlens-th ==0.4.3.14,
|
||||||
any.mtl ==2.2.2,
|
any.mtl ==2.2.2,
|
||||||
any.network ==3.1.2.7,
|
any.mtl-compat ==0.2.2,
|
||||||
|
mtl-compat -two-point-one -two-point-two,
|
||||||
|
any.network ==3.1.4.0,
|
||||||
network -devel,
|
network -devel,
|
||||||
any.network-uri ==2.6.4.2,
|
any.network-uri ==2.6.4.2,
|
||||||
any.openssl-streams ==1.2.3.0,
|
any.openssl-streams ==1.2.3.0,
|
||||||
any.optics ==0.4.2,
|
any.optics ==0.4.2.1,
|
||||||
any.optics-core ==0.4.1,
|
any.optics-core ==0.4.1.1,
|
||||||
optics-core -explicit-generic-labels,
|
optics-core -explicit-generic-labels,
|
||||||
any.optics-extra ==0.4.2.1,
|
any.optics-extra ==0.4.2.1,
|
||||||
any.optics-th ==0.4.1,
|
any.optics-th ==0.4.1,
|
||||||
any.optparse-applicative ==0.17.0.0,
|
any.optparse-applicative ==0.17.1.0,
|
||||||
optparse-applicative +process,
|
optparse-applicative +process,
|
||||||
any.os-release ==1.0.2.1,
|
any.os-release ==1.0.2.1,
|
||||||
os-release -devel,
|
os-release -devel,
|
||||||
any.parallel ==3.2.2.0,
|
any.parsec ==3.1.17.0,
|
||||||
any.parsec ==3.1.16.1,
|
|
||||||
any.parser-combinators ==1.3.0,
|
any.parser-combinators ==1.3.0,
|
||||||
parser-combinators -dev,
|
parser-combinators -dev,
|
||||||
any.polyparse ==1.13,
|
any.polyparse ==1.13,
|
||||||
any.pretty ==1.1.3.6,
|
any.pretty ==1.1.3.6,
|
||||||
any.pretty-terminal ==0.1.0.0,
|
any.pretty-terminal ==0.1.0.0,
|
||||||
any.primitive ==0.7.4.0,
|
any.primitive ==0.8.0.0,
|
||||||
any.process ==1.6.13.2,
|
any.process ==1.6.18.0,
|
||||||
any.profunctors ==5.6.2,
|
any.profunctors ==5.6.2,
|
||||||
any.quickcheck-arbitrary-adt ==0.3.1.0,
|
any.quickcheck-arbitrary-adt ==0.3.1.0,
|
||||||
any.quickcheck-io ==0.2.0,
|
any.quickcheck-io ==0.2.0,
|
||||||
any.random ==1.2.1.1,
|
any.random ==1.2.1.2,
|
||||||
any.recursion-schemes ==5.2.2.3,
|
any.recursion-schemes ==5.2.2.5,
|
||||||
recursion-schemes +template-haskell,
|
recursion-schemes +template-haskell,
|
||||||
any.regex-base ==0.94.0.2,
|
any.regex-base ==0.94.0.2,
|
||||||
any.regex-posix ==0.96.0.1,
|
any.regex-posix ==0.96.0.1,
|
||||||
regex-posix -_regex-posix-clib,
|
regex-posix -_regex-posix-clib,
|
||||||
any.resourcet ==1.2.6,
|
any.resourcet ==1.2.6,
|
||||||
any.retry ==0.8.1.2,
|
any.retry ==0.9.3.1,
|
||||||
retry -lib-werror,
|
retry -lib-werror,
|
||||||
any.rts ==1.0.1,
|
any.rts ==1.0.1,
|
||||||
any.safe ==0.3.19,
|
any.safe ==0.3.21,
|
||||||
any.safe-exceptions ==0.1.7.3,
|
any.safe-exceptions ==0.1.7.4,
|
||||||
any.scientific ==0.3.7.0,
|
any.scientific ==0.3.7.0,
|
||||||
scientific -bytestring-builder -integer-simple,
|
scientific -bytestring-builder -integer-simple,
|
||||||
any.semialign ==1.2.0.1,
|
any.semialign ==1.3,
|
||||||
semialign +semigroupoids,
|
semialign +semigroupoids,
|
||||||
any.semigroupoids ==5.3.7,
|
any.semigroupoids ==6.0.0.1,
|
||||||
semigroupoids +comonad +containers +contravariant +distributive +tagged +unordered-containers,
|
semigroupoids +comonad +containers +contravariant +distributive +tagged +unordered-containers,
|
||||||
any.setenv ==0.1.1.3,
|
any.setenv ==0.1.1.3,
|
||||||
any.split ==0.2.3.5,
|
any.split ==0.2.5,
|
||||||
any.splitmix ==0.1.0.4,
|
any.splitmix ==0.1.0.5,
|
||||||
splitmix -optimised-mixer,
|
splitmix -optimised-mixer,
|
||||||
any.stm ==2.5.0.1,
|
any.stm ==2.5.0.1,
|
||||||
any.streamly ==0.8.3,
|
any.streamly ==0.8.3,
|
||||||
streamly -debug -dev -fusion-plugin -has-llvm -inspection -limit-build-mem -no-fusion +opt -streamk -streamly-core -use-c-malloc +use-unliftio,
|
streamly -debug -dev -fusion-plugin -has-llvm -inspection -limit-build-mem -no-fusion +opt -streamk -streamly-core -use-c-malloc +use-unliftio,
|
||||||
any.strict ==0.4.0.1,
|
any.strict ==0.5,
|
||||||
strict +assoc,
|
|
||||||
any.strict-base ==0.4.0.0,
|
any.strict-base ==0.4.0.0,
|
||||||
any.tagged ==0.8.6.1,
|
any.tagged ==0.8.8,
|
||||||
tagged +deepseq +transformers,
|
tagged +deepseq +transformers,
|
||||||
any.tagsoup ==0.14.8,
|
any.tagsoup ==0.14.8,
|
||||||
any.tar ==0.5.1.1,
|
any.tar ==0.6.0.0,
|
||||||
tar -old-bytestring -old-time,
|
any.tasty ==1.5,
|
||||||
|
tasty +unix,
|
||||||
|
any.tasty-hunit ==0.10.1,
|
||||||
any.template-haskell ==2.16.0.0,
|
any.template-haskell ==2.16.0.0,
|
||||||
any.temporary ==1.3,
|
any.temporary ==1.3,
|
||||||
any.terminal-progress-bar ==0.4.1,
|
any.terminal-progress-bar ==0.4.2,
|
||||||
any.terminal-size ==0.3.3,
|
any.terminal-size ==0.3.4,
|
||||||
any.terminfo ==0.4.1.4,
|
any.terminfo ==0.4.1.4,
|
||||||
any.text ==2.0.1,
|
any.text ==2.0.2,
|
||||||
text -developer +simdutf,
|
text -developer +simdutf,
|
||||||
any.text-binary ==0.2.1.1,
|
any.text-binary ==0.2.1.1,
|
||||||
|
any.text-iso8601 ==0.1,
|
||||||
any.text-short ==0.1.5,
|
any.text-short ==0.1.5,
|
||||||
text-short -asserts,
|
text-short -asserts,
|
||||||
any.text-zipper ==0.12,
|
any.text-zipper ==0.13,
|
||||||
any.tf-random ==0.5,
|
any.tf-random ==0.5,
|
||||||
any.th-abstraction ==0.4.5.0,
|
any.th-abstraction ==0.6.0.0,
|
||||||
any.th-compat ==0.1.4,
|
any.th-compat ==0.1.4,
|
||||||
any.th-lift ==0.8.2,
|
any.th-lift ==0.8.4,
|
||||||
any.th-lift-instances ==0.1.20,
|
any.th-lift-instances ==0.1.20,
|
||||||
any.these ==1.1.1.1,
|
any.these ==1.2,
|
||||||
these +assoc,
|
|
||||||
any.time ==1.9.3,
|
any.time ==1.9.3,
|
||||||
any.time-compat ==1.9.6.1,
|
any.time-compat ==1.9.6.1,
|
||||||
time-compat -old-locale,
|
time-compat -old-locale,
|
||||||
@ -218,29 +227,34 @@ constraints: any.Cabal ==3.6.3.0,
|
|||||||
transformers-compat -five +five-three -four +generic-deriving +mtl -three -two,
|
transformers-compat -five +five-three -four +generic-deriving +mtl -three -two,
|
||||||
any.unicode-data ==0.3.1,
|
any.unicode-data ==0.3.1,
|
||||||
unicode-data -ucd2haskell,
|
unicode-data -ucd2haskell,
|
||||||
any.unix ==2.7.2.2,
|
any.unix ==2.8.5.0,
|
||||||
|
unix -os-string,
|
||||||
any.unix-bytestring ==0.3.7.8,
|
any.unix-bytestring ==0.3.7.8,
|
||||||
any.unix-compat ==0.6,
|
any.unix-compat ==0.7.1,
|
||||||
unix-compat -old-time,
|
unix-compat -old-time,
|
||||||
any.unliftio-core ==0.2.0.1,
|
any.unliftio-core ==0.2.1.0,
|
||||||
any.unordered-containers ==0.2.19.1,
|
any.unordered-containers ==0.2.20,
|
||||||
unordered-containers -debug,
|
unordered-containers -debug,
|
||||||
any.uri-bytestring ==0.3.3.1,
|
any.uri-bytestring ==0.3.3.1,
|
||||||
uri-bytestring -lib-werror,
|
uri-bytestring -lib-werror,
|
||||||
any.utf8-string ==1.0.2,
|
any.utf8-string ==1.0.2,
|
||||||
any.uuid-types ==1.0.5,
|
any.uuid-types ==1.0.5.1,
|
||||||
any.vector ==0.12.3.1,
|
any.vector ==0.13.1.0,
|
||||||
vector +boundschecks -internalchecks -unsafechecks -wall,
|
vector +boundschecks -internalchecks -unsafechecks -wall,
|
||||||
any.vector-binary-instances ==0.2.5.2,
|
any.vector-binary-instances ==0.2.5.2,
|
||||||
any.versions ==5.0.4,
|
any.vector-stream ==0.1.0.1,
|
||||||
any.vty ==5.37,
|
any.versions ==6.0.6,
|
||||||
|
any.vty ==6.2,
|
||||||
|
any.vty-crossplatform ==0.4.0.0,
|
||||||
|
vty-crossplatform -demos,
|
||||||
|
any.vty-unix ==0.2.0.0,
|
||||||
any.witherable ==0.4.2,
|
any.witherable ==0.4.2,
|
||||||
any.word-wrap ==0.5,
|
any.word-wrap ==0.5,
|
||||||
any.word8 ==0.1.3,
|
any.word8 ==0.1.3,
|
||||||
any.xor ==0.0.1.1,
|
any.xor ==0.0.1.2,
|
||||||
any.yaml-streamly ==0.12.1,
|
any.yaml-streamly ==0.12.4,
|
||||||
yaml-streamly +no-examples +no-exe,
|
yaml-streamly +no-examples +no-exe,
|
||||||
any.zlib ==0.6.3.0,
|
any.zlib ==0.6.3.0,
|
||||||
zlib -bundled-c-zlib -non-blocking-ffi -pkg-config,
|
zlib -bundled-c-zlib -non-blocking-ffi -pkg-config,
|
||||||
any.zlib-bindings ==0.1.1.5
|
any.zlib-bindings ==0.1.1.5
|
||||||
index-state: hackage.haskell.org 2023-01-12T04:22:48Z
|
index-state: hackage.haskell.org 2024-03-13T09:43:35Z
|
60
cabal.ghc8107.Win32.project
Normal file
60
cabal.ghc8107.Win32.project
Normal file
@ -0,0 +1,60 @@
|
|||||||
|
packages: ./ghcup.cabal
|
||||||
|
|
||||||
|
optional-packages: ./vendored/*/*.cabal
|
||||||
|
|
||||||
|
if impl(ghc < 9.0)
|
||||||
|
package ghcup
|
||||||
|
flags: +tui -tar
|
||||||
|
else
|
||||||
|
package ghcup
|
||||||
|
flags: +tui +tar
|
||||||
|
|
||||||
|
constraints: http-io-streams -brotli,
|
||||||
|
any.aeson >= 2.0.1.0,
|
||||||
|
any.hsc2hs ==0.68.8,
|
||||||
|
bzlib-conduit >= 0.3.0.3,
|
||||||
|
bz2 >= 1.0.1.1,
|
||||||
|
bzlib >= 0.5.2.0,
|
||||||
|
directory >= 1.3.8.3,
|
||||||
|
filepath == 1.4.101.0 || == 1.4.300.1 || >= 1.5.2.0
|
||||||
|
|
||||||
|
if os(mingw32)
|
||||||
|
constraints: zlib +bundled-c-zlib,
|
||||||
|
lzma +static,
|
||||||
|
text -simdutf,
|
||||||
|
vty-windows >=0.2.0.2
|
||||||
|
|
||||||
|
if impl(ghc >= 9.4)
|
||||||
|
constraints: language-c >= 0.9.3
|
||||||
|
|
||||||
|
|
||||||
|
source-repository-package
|
||||||
|
type: git
|
||||||
|
location: https://github.com/haskell/tar.git
|
||||||
|
tag: d94a988be4311b830149a9f8fc16739927e5fc1c
|
||||||
|
|
||||||
|
source-repository-package
|
||||||
|
type: git
|
||||||
|
location: https://github.com/hasufell/uri-bytestring.git
|
||||||
|
tag: 4fb5ed14b500c192e6e7a97f6b2b1eb478806001
|
||||||
|
|
||||||
|
package libarchive
|
||||||
|
flags: -system-libarchive
|
||||||
|
|
||||||
|
package aeson-pretty
|
||||||
|
flags: +lib-only
|
||||||
|
|
||||||
|
package cabal-plan
|
||||||
|
flags: -exe
|
||||||
|
|
||||||
|
package aeson
|
||||||
|
flags: +ordered-keymap
|
||||||
|
|
||||||
|
package streamly
|
||||||
|
flags: +use-unliftio
|
||||||
|
|
||||||
|
package *
|
||||||
|
test-show-details: direct
|
||||||
|
|
||||||
|
allow-newer: cabal-install-parsers:tar, streamly:Win32
|
||||||
|
|
245
cabal.ghc8107.Win32.project.freeze
Normal file
245
cabal.ghc8107.Win32.project.freeze
Normal file
@ -0,0 +1,245 @@
|
|||||||
|
active-repositories: hackage.haskell.org:merge
|
||||||
|
constraints: any.Cabal ==3.10.2.0 || ==3.10.2.1,
|
||||||
|
any.Cabal-syntax ==3.10.1.0 || ==3.10.2.0,
|
||||||
|
any.HUnit ==1.6.2.0,
|
||||||
|
any.OneTuple ==0.4.1.1,
|
||||||
|
any.QuickCheck ==2.14.3,
|
||||||
|
QuickCheck -old-random +templatehaskell,
|
||||||
|
any.StateVar ==1.2.2,
|
||||||
|
any.Win32 ==2.6.2.1 || ==2.13.4.0,
|
||||||
|
any.abstract-deque ==0.3,
|
||||||
|
abstract-deque -usecas,
|
||||||
|
any.aeson ==2.2.1.0,
|
||||||
|
aeson +ordered-keymap,
|
||||||
|
any.aeson-pretty ==0.8.10,
|
||||||
|
aeson-pretty +lib-only,
|
||||||
|
any.alex ==3.5.1.0,
|
||||||
|
any.ansi-terminal ==1.0.2,
|
||||||
|
ansi-terminal -example,
|
||||||
|
any.ansi-terminal-types ==0.11.5,
|
||||||
|
any.ansi-wl-pprint ==0.6.9,
|
||||||
|
ansi-wl-pprint -example,
|
||||||
|
any.array ==0.5.4.0,
|
||||||
|
any.assoc ==1.1,
|
||||||
|
assoc +tagged,
|
||||||
|
any.async ==2.2.5,
|
||||||
|
async -bench,
|
||||||
|
any.atomic-primops ==0.8.5,
|
||||||
|
atomic-primops -debug,
|
||||||
|
any.attoparsec ==0.14.4,
|
||||||
|
attoparsec -developer,
|
||||||
|
any.base ==4.14.3.0,
|
||||||
|
any.base-compat ==0.13.1,
|
||||||
|
any.base-orphans ==0.9.1,
|
||||||
|
any.base16-bytestring ==1.0.2.0,
|
||||||
|
any.bifunctors ==5.6.1,
|
||||||
|
bifunctors +tagged,
|
||||||
|
any.bimap ==0.5.0,
|
||||||
|
any.binary ==0.8.8.0 || ==0.8.9.1,
|
||||||
|
any.binary-instances ==1.0.4,
|
||||||
|
any.binary-orphans ==1.0.4.1,
|
||||||
|
any.blaze-builder ==0.4.2.3,
|
||||||
|
any.brick ==2.1.1,
|
||||||
|
brick -demos,
|
||||||
|
any.bytestring ==0.10.12.0 || ==0.11.5.3,
|
||||||
|
any.bz2 ==1.0.1.1,
|
||||||
|
bz2 -cross +with-bzlib,
|
||||||
|
any.bzip2-clib ==1.0.8,
|
||||||
|
any.c2hs ==0.28.8,
|
||||||
|
c2hs +base3 -regression,
|
||||||
|
any.cabal-install-parsers ==0.6.1.1,
|
||||||
|
any.cabal-plan ==0.7.3.0,
|
||||||
|
cabal-plan -_ -exe -license-report,
|
||||||
|
any.call-stack ==0.4.0,
|
||||||
|
any.case-insensitive ==1.2.1.0,
|
||||||
|
any.casing ==0.1.4.1,
|
||||||
|
any.chs-cabal ==0.1.1.1,
|
||||||
|
any.chs-deps ==0.1.0.0,
|
||||||
|
chs-deps -cross,
|
||||||
|
any.colour ==2.3.6,
|
||||||
|
any.comonad ==5.0.8,
|
||||||
|
comonad +containers +distributive +indexed-traversable,
|
||||||
|
any.composition-prelude ==3.0.0.2,
|
||||||
|
composition-prelude -development,
|
||||||
|
any.config-ini ==0.2.7.0,
|
||||||
|
config-ini -enable-doctests,
|
||||||
|
any.containers ==0.6.5.1,
|
||||||
|
any.contravariant ==1.5.5,
|
||||||
|
contravariant +semigroups +statevar +tagged,
|
||||||
|
any.cpphs ==1.20.9.1,
|
||||||
|
cpphs -old-locale,
|
||||||
|
any.cryptohash-sha256 ==0.11.102.1,
|
||||||
|
cryptohash-sha256 -exe +use-cbits,
|
||||||
|
any.data-array-byte ==0.1.0.1,
|
||||||
|
any.data-clist ==0.2,
|
||||||
|
any.data-fix ==0.3.2,
|
||||||
|
any.deepseq ==1.4.4.0,
|
||||||
|
any.directory ==1.3.6.0 || ==1.3.8.3,
|
||||||
|
directory -os-string,
|
||||||
|
any.disk-free-space ==0.1.0.1,
|
||||||
|
any.distributive ==0.6.2.1,
|
||||||
|
distributive +semigroups +tagged,
|
||||||
|
any.dlist ==1.0,
|
||||||
|
dlist -werror,
|
||||||
|
any.exceptions ==0.10.4,
|
||||||
|
any.file-uri ==0.1.0.0,
|
||||||
|
any.filepath ==1.4.2.1 || ==1.4.101.0,
|
||||||
|
filepath -cpphs,
|
||||||
|
any.foldable1-classes-compat ==0.1,
|
||||||
|
foldable1-classes-compat +tagged,
|
||||||
|
any.free ==5.2,
|
||||||
|
any.fusion-plugin-types ==0.1.0,
|
||||||
|
any.generic-arbitrary ==0.2.2,
|
||||||
|
any.generically ==0.1.1,
|
||||||
|
any.ghc-boot-th ==8.10.7,
|
||||||
|
any.ghc-prim ==0.6.1,
|
||||||
|
any.happy ==1.20.1.1,
|
||||||
|
any.hashable ==1.4.3.0,
|
||||||
|
hashable +integer-gmp -random-initial-seed,
|
||||||
|
any.haskell-lexer ==1.1.1,
|
||||||
|
any.haskus-utils-data ==1.4,
|
||||||
|
any.haskus-utils-types ==1.5.1,
|
||||||
|
any.haskus-utils-variant ==3.3,
|
||||||
|
any.heaps ==0.4,
|
||||||
|
any.hsc2hs ==0.68.8,
|
||||||
|
hsc2hs -in-ghc-tree,
|
||||||
|
any.hspec ==2.10.10,
|
||||||
|
any.hspec-core ==2.10.10,
|
||||||
|
any.hspec-discover ==2.10.10,
|
||||||
|
any.hspec-expectations ==0.8.2,
|
||||||
|
any.hspec-golden-aeson ==0.9.0.0,
|
||||||
|
any.indexed-profunctors ==0.1.1.1,
|
||||||
|
any.indexed-traversable ==0.1.3,
|
||||||
|
any.indexed-traversable-instances ==0.1.1.2,
|
||||||
|
any.integer-conversion ==0.1.0.1,
|
||||||
|
any.integer-gmp ==1.0.3.0,
|
||||||
|
any.integer-logarithms ==1.0.3.1,
|
||||||
|
integer-logarithms -check-bounds +integer-gmp,
|
||||||
|
any.language-c ==0.9.3,
|
||||||
|
language-c -allwarnings +iecfpextension +usebytestrings,
|
||||||
|
any.libarchive ==3.0.4.2,
|
||||||
|
libarchive -cross -low-memory +no-exe -system-libarchive,
|
||||||
|
any.libyaml-clib ==0.2.5,
|
||||||
|
any.libyaml-streamly ==0.2.2.1,
|
||||||
|
libyaml-streamly -no-unicode -system-libyaml,
|
||||||
|
any.lockfree-queue ==0.2.4,
|
||||||
|
any.lukko ==0.1.1.3,
|
||||||
|
lukko +ofd-locking,
|
||||||
|
any.lzma-static ==5.2.5.5,
|
||||||
|
any.megaparsec ==9.2.1,
|
||||||
|
megaparsec -dev,
|
||||||
|
any.microlens ==0.4.13.1,
|
||||||
|
any.microlens-mtl ==0.2.0.3,
|
||||||
|
any.microlens-th ==0.4.3.14,
|
||||||
|
any.mtl ==2.2.2,
|
||||||
|
any.mtl-compat ==0.2.2,
|
||||||
|
mtl-compat -two-point-one -two-point-two,
|
||||||
|
any.network ==3.1.4.0,
|
||||||
|
network -devel,
|
||||||
|
any.network-uri ==2.6.4.2,
|
||||||
|
any.optics ==0.4.2.1,
|
||||||
|
any.optics-core ==0.4.1.1,
|
||||||
|
optics-core -explicit-generic-labels,
|
||||||
|
any.optics-extra ==0.4.2.1,
|
||||||
|
any.optics-th ==0.4.1,
|
||||||
|
any.optparse-applicative ==0.17.1.0,
|
||||||
|
optparse-applicative +process,
|
||||||
|
any.os-release ==1.0.2.1,
|
||||||
|
os-release -devel,
|
||||||
|
any.parsec ==3.1.14.0 || ==3.1.17.0,
|
||||||
|
any.parser-combinators ==1.3.0,
|
||||||
|
parser-combinators -dev,
|
||||||
|
any.polyparse ==1.13,
|
||||||
|
any.pretty ==1.1.3.6,
|
||||||
|
any.pretty-terminal ==0.1.0.0,
|
||||||
|
any.primitive ==0.8.0.0,
|
||||||
|
any.process ==1.6.13.2 || ==1.6.18.0,
|
||||||
|
any.profunctors ==5.6.2,
|
||||||
|
any.quickcheck-arbitrary-adt ==0.3.1.0,
|
||||||
|
any.quickcheck-io ==0.2.0,
|
||||||
|
any.random ==1.2.1.2,
|
||||||
|
any.recursion-schemes ==5.2.2.5,
|
||||||
|
recursion-schemes +template-haskell,
|
||||||
|
any.regex-base ==0.94.0.2,
|
||||||
|
any.regex-posix ==0.96.0.1,
|
||||||
|
regex-posix -_regex-posix-clib,
|
||||||
|
any.regex-posix-clib ==2.7,
|
||||||
|
any.resourcet ==1.2.6,
|
||||||
|
any.retry ==0.9.3.1,
|
||||||
|
retry -lib-werror,
|
||||||
|
any.rts ==1.0.1,
|
||||||
|
any.safe ==0.3.21,
|
||||||
|
any.safe-exceptions ==0.1.7.4,
|
||||||
|
any.scientific ==0.3.7.0,
|
||||||
|
scientific -bytestring-builder -integer-simple,
|
||||||
|
any.semialign ==1.3,
|
||||||
|
semialign +semigroupoids,
|
||||||
|
any.semigroupoids ==6.0.0.1,
|
||||||
|
semigroupoids +comonad +containers +contravariant +distributive +tagged +unordered-containers,
|
||||||
|
any.setenv ==0.1.1.3,
|
||||||
|
any.split ==0.2.5,
|
||||||
|
any.splitmix ==0.1.0.5,
|
||||||
|
splitmix -optimised-mixer,
|
||||||
|
any.stm ==2.5.0.1,
|
||||||
|
any.streamly ==0.8.3,
|
||||||
|
streamly -debug -dev -fusion-plugin -has-llvm -inspection -limit-build-mem -no-fusion +opt -streamk -streamly-core -use-c-malloc +use-unliftio,
|
||||||
|
any.strict ==0.5,
|
||||||
|
any.strict-base ==0.4.0.0,
|
||||||
|
any.tagged ==0.8.8,
|
||||||
|
tagged +deepseq +transformers,
|
||||||
|
any.tagsoup ==0.14.8,
|
||||||
|
any.tar ==0.6.0.0,
|
||||||
|
any.tasty ==1.5,
|
||||||
|
tasty +unix,
|
||||||
|
any.tasty-hunit ==0.10.1,
|
||||||
|
any.template-haskell ==2.16.0.0,
|
||||||
|
any.temporary ==1.3,
|
||||||
|
any.text ==1.2.4.1 || ==2.0.2,
|
||||||
|
text -developer -simdutf,
|
||||||
|
any.text-binary ==0.2.1.1,
|
||||||
|
any.text-iso8601 ==0.1,
|
||||||
|
any.text-short ==0.1.5,
|
||||||
|
text-short -asserts,
|
||||||
|
any.text-zipper ==0.13,
|
||||||
|
any.tf-random ==0.5,
|
||||||
|
any.th-abstraction ==0.6.0.0,
|
||||||
|
any.th-compat ==0.1.4,
|
||||||
|
any.th-lift ==0.8.4,
|
||||||
|
any.th-lift-instances ==0.1.20,
|
||||||
|
any.these ==1.2,
|
||||||
|
any.time ==1.9.3 || ==1.11.1.2,
|
||||||
|
any.time-compat ==1.9.6.1,
|
||||||
|
time-compat -old-locale,
|
||||||
|
any.transformers ==0.5.6.2,
|
||||||
|
any.transformers-base ==0.4.6,
|
||||||
|
transformers-base +orphaninstances,
|
||||||
|
any.transformers-compat ==0.7.2,
|
||||||
|
transformers-compat -five +five-three -four +generic-deriving +mtl -three -two,
|
||||||
|
any.unicode-data ==0.3.1,
|
||||||
|
unicode-data -ucd2haskell,
|
||||||
|
any.unix-compat ==0.7.1,
|
||||||
|
unix-compat -old-time,
|
||||||
|
any.unliftio-core ==0.2.1.0,
|
||||||
|
any.unordered-containers ==0.2.20,
|
||||||
|
unordered-containers -debug,
|
||||||
|
any.uri-bytestring ==0.3.3.1,
|
||||||
|
uri-bytestring -lib-werror,
|
||||||
|
any.utf8-string ==1.0.2,
|
||||||
|
any.uuid-types ==1.0.5.1,
|
||||||
|
any.vector ==0.13.1.0,
|
||||||
|
vector +boundschecks -internalchecks -unsafechecks -wall,
|
||||||
|
any.vector-binary-instances ==0.2.5.2,
|
||||||
|
any.vector-stream ==0.1.0.1,
|
||||||
|
any.versions ==6.0.6,
|
||||||
|
any.vty ==6.2,
|
||||||
|
any.vty-crossplatform ==0.4.0.0,
|
||||||
|
vty-crossplatform -demos,
|
||||||
|
any.vty-windows ==0.2.0.2,
|
||||||
|
any.witherable ==0.4.2,
|
||||||
|
any.word-wrap ==0.5,
|
||||||
|
any.word8 ==0.1.3,
|
||||||
|
any.yaml-streamly ==0.12.4,
|
||||||
|
yaml-streamly +no-examples +no-exe,
|
||||||
|
any.zlib ==0.6.3.0,
|
||||||
|
zlib +bundled-c-zlib -non-blocking-ffi -pkg-config
|
||||||
|
index-state: hackage.haskell.org 2024-03-15T23:51:46Z
|
@ -1,29 +1,8 @@
|
|||||||
packages: ./ghcup.cabal
|
if os(mingw32)
|
||||||
|
import: cabal.ghc8107.Win32.project
|
||||||
optional-packages: ./vendored/*/*.cabal
|
import: cabal.ghc8107.Win32.project.freeze
|
||||||
|
else
|
||||||
optimization: 2
|
import: cabal.ghc8107.Unix.project
|
||||||
|
import: cabal.ghc8107.Unix.project.freeze
|
||||||
package ghcup
|
|
||||||
flags: +tui
|
|
||||||
|
|
||||||
constraints: http-io-streams -brotli,
|
|
||||||
any.aeson >= 2.0.1.0
|
|
||||||
|
|
||||||
package libarchive
|
|
||||||
flags: -system-libarchive
|
|
||||||
|
|
||||||
package aeson-pretty
|
|
||||||
flags: +lib-only
|
|
||||||
|
|
||||||
package cabal-plan
|
|
||||||
flags: -exe
|
|
||||||
|
|
||||||
package aeson
|
|
||||||
flags: +ordered-keymap
|
|
||||||
|
|
||||||
package streamly
|
|
||||||
flags: +use-unliftio
|
|
||||||
|
|
||||||
|
|
||||||
with-compiler: ghc-8.10.7
|
with-compiler: ghc-8.10.7
|
||||||
|
60
cabal.ghc902.Unix.project
Normal file
60
cabal.ghc902.Unix.project
Normal file
@ -0,0 +1,60 @@
|
|||||||
|
packages: ./ghcup.cabal
|
||||||
|
|
||||||
|
optional-packages: ./vendored/*/*.cabal
|
||||||
|
|
||||||
|
if impl(ghc < 9.0)
|
||||||
|
package ghcup
|
||||||
|
flags: +tui -tar
|
||||||
|
else
|
||||||
|
package ghcup
|
||||||
|
flags: +tui +tar
|
||||||
|
|
||||||
|
constraints: http-io-streams -brotli,
|
||||||
|
any.aeson >= 2.0.1.0,
|
||||||
|
any.hsc2hs ==0.68.8,
|
||||||
|
bzlib-conduit >= 0.3.0.3,
|
||||||
|
bz2 >= 1.0.1.1,
|
||||||
|
bzlib >= 0.5.2.0,
|
||||||
|
directory >= 1.3.8.3,
|
||||||
|
filepath == 1.4.101.0 || == 1.4.300.1 || >= 1.5.2.0
|
||||||
|
|
||||||
|
if os(mingw32)
|
||||||
|
constraints: zlib +bundled-c-zlib,
|
||||||
|
lzma +static,
|
||||||
|
text -simdutf,
|
||||||
|
vty-windows >=0.2.0.2
|
||||||
|
|
||||||
|
if impl(ghc >= 9.4)
|
||||||
|
constraints: language-c >= 0.9.3
|
||||||
|
|
||||||
|
|
||||||
|
source-repository-package
|
||||||
|
type: git
|
||||||
|
location: https://github.com/haskell/tar.git
|
||||||
|
tag: d94a988be4311b830149a9f8fc16739927e5fc1c
|
||||||
|
|
||||||
|
source-repository-package
|
||||||
|
type: git
|
||||||
|
location: https://github.com/hasufell/uri-bytestring.git
|
||||||
|
tag: 4fb5ed14b500c192e6e7a97f6b2b1eb478806001
|
||||||
|
|
||||||
|
package libarchive
|
||||||
|
flags: -system-libarchive
|
||||||
|
|
||||||
|
package aeson-pretty
|
||||||
|
flags: +lib-only
|
||||||
|
|
||||||
|
package cabal-plan
|
||||||
|
flags: -exe
|
||||||
|
|
||||||
|
package aeson
|
||||||
|
flags: +ordered-keymap
|
||||||
|
|
||||||
|
package streamly
|
||||||
|
flags: +use-unliftio
|
||||||
|
|
||||||
|
package *
|
||||||
|
test-show-details: direct
|
||||||
|
|
||||||
|
allow-newer: cabal-install-parsers:tar, streamly:Win32
|
||||||
|
|
273
cabal.ghc902.Unix.project.freeze
Normal file
273
cabal.ghc902.Unix.project.freeze
Normal file
@ -0,0 +1,273 @@
|
|||||||
|
active-repositories: hackage.haskell.org:merge
|
||||||
|
constraints: any.Cabal ==3.10.2.1,
|
||||||
|
any.Cabal-syntax ==3.10.2.0,
|
||||||
|
any.HUnit ==1.6.2.0,
|
||||||
|
any.HsOpenSSL ==0.11.7.6,
|
||||||
|
HsOpenSSL -fast-bignum -homebrew-openssl -macports-openssl -use-pkg-config,
|
||||||
|
any.OneTuple ==0.4.1.1,
|
||||||
|
any.QuickCheck ==2.14.3,
|
||||||
|
QuickCheck -old-random +templatehaskell,
|
||||||
|
any.StateVar ==1.2.2,
|
||||||
|
any.abstract-deque ==0.3,
|
||||||
|
abstract-deque -usecas,
|
||||||
|
any.aeson ==2.2.1.0,
|
||||||
|
aeson +ordered-keymap,
|
||||||
|
any.aeson-pretty ==0.8.10,
|
||||||
|
aeson-pretty +lib-only,
|
||||||
|
any.alex ==3.5.1.0,
|
||||||
|
any.ansi-terminal ==1.0.2,
|
||||||
|
ansi-terminal -example,
|
||||||
|
any.ansi-terminal-types ==0.11.5,
|
||||||
|
any.ansi-wl-pprint ==0.6.9,
|
||||||
|
ansi-wl-pprint -example,
|
||||||
|
any.array ==0.5.4.0,
|
||||||
|
any.assoc ==1.1,
|
||||||
|
assoc +tagged,
|
||||||
|
any.async ==2.2.5,
|
||||||
|
async -bench,
|
||||||
|
any.atomic-primops ==0.8.5,
|
||||||
|
atomic-primops -debug,
|
||||||
|
any.attoparsec ==0.14.4,
|
||||||
|
attoparsec -developer,
|
||||||
|
any.base ==4.15.1.0,
|
||||||
|
any.base-compat ==0.13.1,
|
||||||
|
any.base-orphans ==0.9.1,
|
||||||
|
any.base16-bytestring ==1.0.2.0,
|
||||||
|
any.base64-bytestring ==1.2.1.0,
|
||||||
|
any.bifunctors ==5.6.1,
|
||||||
|
bifunctors +tagged,
|
||||||
|
any.bimap ==0.5.0,
|
||||||
|
any.binary ==0.8.9.1,
|
||||||
|
any.binary-instances ==1.0.4,
|
||||||
|
any.binary-orphans ==1.0.4.1,
|
||||||
|
any.bindings-DSL ==1.0.25,
|
||||||
|
any.bitvec ==1.1.5.0,
|
||||||
|
bitvec +simd,
|
||||||
|
any.blaze-builder ==0.4.2.3,
|
||||||
|
any.brick ==2.1.1,
|
||||||
|
brick -demos,
|
||||||
|
any.bytestring ==0.11.5.3,
|
||||||
|
any.bz2 ==1.0.1.1,
|
||||||
|
bz2 -cross +with-bzlib,
|
||||||
|
any.bzip2-clib ==1.0.8,
|
||||||
|
any.bzlib-conduit ==0.3.0.3,
|
||||||
|
any.c2hs ==0.28.8,
|
||||||
|
c2hs +base3 -regression,
|
||||||
|
any.cabal-install-parsers ==0.6.1.1,
|
||||||
|
any.cabal-plan ==0.7.3.0,
|
||||||
|
cabal-plan -_ -exe -license-report,
|
||||||
|
any.call-stack ==0.4.0,
|
||||||
|
any.case-insensitive ==1.2.1.0,
|
||||||
|
any.casing ==0.1.4.1,
|
||||||
|
any.cereal ==0.5.8.3,
|
||||||
|
cereal -bytestring-builder,
|
||||||
|
any.colour ==2.3.6,
|
||||||
|
any.comonad ==5.0.8,
|
||||||
|
comonad +containers +distributive +indexed-traversable,
|
||||||
|
any.conduit ==1.3.5,
|
||||||
|
any.conduit-extra ==1.3.6,
|
||||||
|
any.conduit-zstd ==0.0.2.0,
|
||||||
|
any.config-ini ==0.2.7.0,
|
||||||
|
config-ini -enable-doctests,
|
||||||
|
any.containers ==0.6.4.1,
|
||||||
|
any.contravariant ==1.5.5,
|
||||||
|
contravariant +semigroups +statevar +tagged,
|
||||||
|
any.cryptohash-sha1 ==0.11.101.0,
|
||||||
|
any.cryptohash-sha256 ==0.11.102.1,
|
||||||
|
cryptohash-sha256 -exe +use-cbits,
|
||||||
|
any.data-array-byte ==0.1.0.1,
|
||||||
|
any.data-clist ==0.2,
|
||||||
|
any.data-default-class ==0.1.2.0,
|
||||||
|
any.data-fix ==0.3.2,
|
||||||
|
any.deepseq ==1.4.5.0,
|
||||||
|
any.digest ==0.0.2.1,
|
||||||
|
digest -have_arm64_crc32c -have_builtin_prefetch -have_mm_prefetch -have_sse42 -have_strong_getauxval -have_weak_getauxval +pkg-config,
|
||||||
|
any.directory ==1.3.8.3,
|
||||||
|
directory -os-string,
|
||||||
|
any.disk-free-space ==0.1.0.1,
|
||||||
|
any.distributive ==0.6.2.1,
|
||||||
|
distributive +semigroups +tagged,
|
||||||
|
any.dlist ==1.0,
|
||||||
|
dlist -werror,
|
||||||
|
any.exceptions ==0.10.4,
|
||||||
|
any.file-uri ==0.1.0.0,
|
||||||
|
any.filepath ==1.4.101.0,
|
||||||
|
filepath -cpphs,
|
||||||
|
any.foldable1-classes-compat ==0.1,
|
||||||
|
foldable1-classes-compat +tagged,
|
||||||
|
any.free ==5.2,
|
||||||
|
any.fusion-plugin-types ==0.1.0,
|
||||||
|
any.generic-arbitrary ==0.2.2,
|
||||||
|
any.generically ==0.1.1,
|
||||||
|
any.ghc-bignum ==1.1,
|
||||||
|
any.ghc-boot-th ==9.0.2,
|
||||||
|
any.ghc-byteorder ==4.11.0.0.10,
|
||||||
|
any.ghc-prim ==0.7.0,
|
||||||
|
any.happy ==1.20.1.1,
|
||||||
|
any.hashable ==1.4.3.0,
|
||||||
|
hashable +integer-gmp -random-initial-seed,
|
||||||
|
any.haskell-lexer ==1.1.1,
|
||||||
|
any.haskus-utils-data ==1.4,
|
||||||
|
any.haskus-utils-types ==1.5.1,
|
||||||
|
any.haskus-utils-variant ==3.3,
|
||||||
|
any.heaps ==0.4,
|
||||||
|
any.hsc2hs ==0.68.8,
|
||||||
|
hsc2hs -in-ghc-tree,
|
||||||
|
any.hspec ==2.10.10,
|
||||||
|
any.hspec-core ==2.10.10,
|
||||||
|
any.hspec-discover ==2.10.10,
|
||||||
|
any.hspec-expectations ==0.8.2,
|
||||||
|
any.hspec-golden-aeson ==0.9.0.0,
|
||||||
|
any.http-io-streams ==0.1.7.0,
|
||||||
|
http-io-streams -brotli +fast-xor,
|
||||||
|
any.indexed-profunctors ==0.1.1.1,
|
||||||
|
any.indexed-traversable ==0.1.3,
|
||||||
|
any.indexed-traversable-instances ==0.1.1.2,
|
||||||
|
any.integer-conversion ==0.1.0.1,
|
||||||
|
any.integer-logarithms ==1.0.3.1,
|
||||||
|
integer-logarithms -check-bounds +integer-gmp,
|
||||||
|
any.io-streams ==1.5.2.2,
|
||||||
|
io-streams +network -nointeractivetests +zlib,
|
||||||
|
any.language-c ==0.9.3,
|
||||||
|
language-c -allwarnings +iecfpextension +usebytestrings,
|
||||||
|
any.libyaml-streamly ==0.2.2.1,
|
||||||
|
libyaml-streamly -no-unicode +system-libyaml,
|
||||||
|
any.lockfree-queue ==0.2.4,
|
||||||
|
any.lukko ==0.1.1.3,
|
||||||
|
lukko +ofd-locking,
|
||||||
|
any.lzma-static ==5.2.5.5,
|
||||||
|
any.megaparsec ==9.2.2,
|
||||||
|
megaparsec -dev,
|
||||||
|
any.microlens ==0.4.13.1,
|
||||||
|
any.microlens-mtl ==0.2.0.3,
|
||||||
|
any.microlens-th ==0.4.3.14,
|
||||||
|
any.monad-control ==1.0.3.1,
|
||||||
|
any.mono-traversable ==1.0.17.0,
|
||||||
|
any.mtl ==2.2.2,
|
||||||
|
any.mtl-compat ==0.2.2,
|
||||||
|
mtl-compat -two-point-one -two-point-two,
|
||||||
|
any.network ==3.1.4.0,
|
||||||
|
network -devel,
|
||||||
|
any.network-uri ==2.6.4.2,
|
||||||
|
any.openssl-streams ==1.2.3.0,
|
||||||
|
any.optics ==0.4.2.1,
|
||||||
|
any.optics-core ==0.4.1.1,
|
||||||
|
optics-core -explicit-generic-labels,
|
||||||
|
any.optics-extra ==0.4.2.1,
|
||||||
|
any.optics-th ==0.4.1,
|
||||||
|
any.optparse-applicative ==0.17.1.0,
|
||||||
|
optparse-applicative +process,
|
||||||
|
any.os-release ==1.0.2.1,
|
||||||
|
os-release -devel,
|
||||||
|
any.parsec ==3.1.17.0,
|
||||||
|
any.parser-combinators ==1.3.0,
|
||||||
|
parser-combinators -dev,
|
||||||
|
any.pretty ==1.1.3.6,
|
||||||
|
any.pretty-terminal ==0.1.0.0,
|
||||||
|
any.primitive ==0.8.0.0,
|
||||||
|
any.process ==1.6.18.0,
|
||||||
|
any.profunctors ==5.6.2,
|
||||||
|
any.quickcheck-arbitrary-adt ==0.3.1.0,
|
||||||
|
any.quickcheck-io ==0.2.0,
|
||||||
|
any.random ==1.2.1.2,
|
||||||
|
any.recursion-schemes ==5.2.2.5,
|
||||||
|
recursion-schemes +template-haskell,
|
||||||
|
any.regex-base ==0.94.0.2,
|
||||||
|
any.regex-posix ==0.96.0.1,
|
||||||
|
regex-posix -_regex-posix-clib,
|
||||||
|
any.resourcet ==1.2.6,
|
||||||
|
any.retry ==0.9.3.1,
|
||||||
|
retry -lib-werror,
|
||||||
|
any.rts ==1.0.2,
|
||||||
|
any.safe ==0.3.21,
|
||||||
|
any.safe-exceptions ==0.1.7.4,
|
||||||
|
any.scientific ==0.3.7.0,
|
||||||
|
scientific -bytestring-builder -integer-simple,
|
||||||
|
any.semialign ==1.3,
|
||||||
|
semialign +semigroupoids,
|
||||||
|
any.semigroupoids ==6.0.0.1,
|
||||||
|
semigroupoids +comonad +containers +contravariant +distributive +tagged +unordered-containers,
|
||||||
|
any.setenv ==0.1.1.3,
|
||||||
|
any.split ==0.2.5,
|
||||||
|
any.splitmix ==0.1.0.5,
|
||||||
|
splitmix -optimised-mixer,
|
||||||
|
any.stm ==2.5.0.0,
|
||||||
|
any.streaming-commons ==0.2.2.6,
|
||||||
|
streaming-commons -use-bytestring-builder,
|
||||||
|
any.streamly ==0.8.3,
|
||||||
|
streamly -debug -dev -fusion-plugin -has-llvm -inspection -limit-build-mem -no-fusion +opt -streamk -streamly-core -use-c-malloc +use-unliftio,
|
||||||
|
any.strict ==0.5,
|
||||||
|
any.strict-base ==0.4.0.0,
|
||||||
|
any.tagged ==0.8.8,
|
||||||
|
tagged +deepseq +transformers,
|
||||||
|
any.tagsoup ==0.14.8,
|
||||||
|
any.tar ==0.6.0.0,
|
||||||
|
any.tasty ==1.5,
|
||||||
|
tasty +unix,
|
||||||
|
any.tasty-hunit ==0.10.1,
|
||||||
|
any.template-haskell ==2.17.0.0,
|
||||||
|
any.temporary ==1.3,
|
||||||
|
any.terminal-progress-bar ==0.4.2,
|
||||||
|
any.terminal-size ==0.3.4,
|
||||||
|
any.terminfo ==0.4.1.5,
|
||||||
|
any.text ==2.0.2,
|
||||||
|
text -developer +simdutf,
|
||||||
|
any.text-binary ==0.2.1.1,
|
||||||
|
any.text-iso8601 ==0.1,
|
||||||
|
any.text-short ==0.1.5,
|
||||||
|
text-short -asserts,
|
||||||
|
any.text-zipper ==0.13,
|
||||||
|
any.tf-random ==0.5,
|
||||||
|
any.th-abstraction ==0.6.0.0,
|
||||||
|
any.th-compat ==0.1.4,
|
||||||
|
any.th-lift ==0.8.4,
|
||||||
|
any.th-lift-instances ==0.1.20,
|
||||||
|
any.these ==1.2,
|
||||||
|
any.time ==1.9.3,
|
||||||
|
any.time-compat ==1.9.6.1,
|
||||||
|
time-compat -old-locale,
|
||||||
|
any.transformers ==0.5.6.2,
|
||||||
|
any.transformers-base ==0.4.6,
|
||||||
|
transformers-base +orphaninstances,
|
||||||
|
any.transformers-compat ==0.7.2,
|
||||||
|
transformers-compat -five +five-three -four +generic-deriving +mtl -three -two,
|
||||||
|
any.typed-process ==0.2.11.1,
|
||||||
|
any.unicode-data ==0.3.1,
|
||||||
|
unicode-data -ucd2haskell,
|
||||||
|
any.unix ==2.8.5.0,
|
||||||
|
unix -os-string,
|
||||||
|
any.unix-bytestring ==0.3.7.8,
|
||||||
|
any.unix-compat ==0.7.1,
|
||||||
|
unix-compat -old-time,
|
||||||
|
any.unliftio-core ==0.2.1.0,
|
||||||
|
any.unordered-containers ==0.2.20,
|
||||||
|
unordered-containers -debug,
|
||||||
|
any.uri-bytestring ==0.3.3.1,
|
||||||
|
uri-bytestring -lib-werror,
|
||||||
|
any.utf8-string ==1.0.2,
|
||||||
|
any.uuid-types ==1.0.5.1,
|
||||||
|
any.vector ==0.13.1.0,
|
||||||
|
vector +boundschecks -internalchecks -unsafechecks -wall,
|
||||||
|
any.vector-algorithms ==0.9.0.1,
|
||||||
|
vector-algorithms +bench +boundschecks -internalchecks -llvm +properties -unsafechecks,
|
||||||
|
any.vector-binary-instances ==0.2.5.2,
|
||||||
|
any.vector-stream ==0.1.0.1,
|
||||||
|
any.versions ==6.0.6,
|
||||||
|
any.vty ==6.2,
|
||||||
|
any.vty-crossplatform ==0.4.0.0,
|
||||||
|
vty-crossplatform -demos,
|
||||||
|
any.vty-unix ==0.2.0.0,
|
||||||
|
any.witherable ==0.4.2,
|
||||||
|
any.word-wrap ==0.5,
|
||||||
|
any.word8 ==0.1.3,
|
||||||
|
any.xor ==0.0.1.2,
|
||||||
|
any.yaml-streamly ==0.12.4,
|
||||||
|
yaml-streamly +no-examples +no-exe,
|
||||||
|
any.zip ==2.0.0,
|
||||||
|
zip -dev -disable-bzip2 -disable-zstd,
|
||||||
|
any.zlib ==0.6.3.0,
|
||||||
|
zlib -bundled-c-zlib -non-blocking-ffi -pkg-config,
|
||||||
|
any.zlib-bindings ==0.1.1.5,
|
||||||
|
any.zstd ==0.1.3.0,
|
||||||
|
zstd +standalone
|
||||||
|
index-state: hackage.haskell.org 2024-03-13T09:43:35Z
|
61
cabal.ghc902.Win32.project
Normal file
61
cabal.ghc902.Win32.project
Normal file
@ -0,0 +1,61 @@
|
|||||||
|
packages: ./ghcup.cabal
|
||||||
|
|
||||||
|
optional-packages: ./vendored/*/*.cabal
|
||||||
|
|
||||||
|
if impl(ghc < 9.0)
|
||||||
|
package ghcup
|
||||||
|
flags: +tui -tar
|
||||||
|
else
|
||||||
|
package ghcup
|
||||||
|
flags: +tui +tar
|
||||||
|
|
||||||
|
constraints: http-io-streams -brotli,
|
||||||
|
any.aeson >= 2.0.1.0,
|
||||||
|
any.hsc2hs ==0.68.8,
|
||||||
|
bzlib-conduit >= 0.3.0.3,
|
||||||
|
bz2 >= 1.0.1.1,
|
||||||
|
bzlib >= 0.5.2.0,
|
||||||
|
directory >= 1.3.8.3,
|
||||||
|
filepath == 1.4.101.0 || == 1.4.300.1 || >= 1.5.2.0
|
||||||
|
|
||||||
|
if os(mingw32)
|
||||||
|
constraints: zlib +bundled-c-zlib,
|
||||||
|
lzma +static,
|
||||||
|
text -simdutf,
|
||||||
|
vty-windows >=0.2.0.2
|
||||||
|
|
||||||
|
if impl(ghc >= 9.4)
|
||||||
|
constraints: language-c >= 0.9.3
|
||||||
|
|
||||||
|
|
||||||
|
source-repository-package
|
||||||
|
type: git
|
||||||
|
location: https://github.com/haskell/tar.git
|
||||||
|
tag: d94a988be4311b830149a9f8fc16739927e5fc1c
|
||||||
|
|
||||||
|
source-repository-package
|
||||||
|
type: git
|
||||||
|
location: https://github.com/hasufell/uri-bytestring.git
|
||||||
|
tag: 4fb5ed14b500c192e6e7a97f6b2b1eb478806001
|
||||||
|
|
||||||
|
package libarchive
|
||||||
|
flags: -system-libarchive
|
||||||
|
|
||||||
|
package aeson-pretty
|
||||||
|
flags: +lib-only
|
||||||
|
|
||||||
|
package cabal-plan
|
||||||
|
flags: -exe
|
||||||
|
|
||||||
|
package aeson
|
||||||
|
flags: +ordered-keymap
|
||||||
|
|
||||||
|
package streamly
|
||||||
|
flags: +use-unliftio
|
||||||
|
|
||||||
|
package *
|
||||||
|
test-show-details: direct
|
||||||
|
|
||||||
|
allow-newer: cabal-install-parsers:tar, streamly:Win32
|
||||||
|
|
||||||
|
|
258
cabal.ghc902.Win32.project.freeze
Normal file
258
cabal.ghc902.Win32.project.freeze
Normal file
@ -0,0 +1,258 @@
|
|||||||
|
active-repositories: hackage.haskell.org:merge
|
||||||
|
constraints: any.Cabal ==3.10.2.1,
|
||||||
|
any.Cabal-syntax ==3.10.2.0,
|
||||||
|
any.HUnit ==1.6.2.0,
|
||||||
|
any.OneTuple ==0.4.1.1,
|
||||||
|
any.QuickCheck ==2.14.3,
|
||||||
|
QuickCheck -old-random +templatehaskell,
|
||||||
|
any.StateVar ==1.2.2,
|
||||||
|
any.Win32 ==2.12.0.1 || ==2.13.4.0,
|
||||||
|
any.abstract-deque ==0.3,
|
||||||
|
abstract-deque -usecas,
|
||||||
|
any.aeson ==2.2.1.0,
|
||||||
|
aeson +ordered-keymap,
|
||||||
|
any.aeson-pretty ==0.8.10,
|
||||||
|
aeson-pretty +lib-only,
|
||||||
|
any.alex ==3.5.1.0,
|
||||||
|
any.ansi-terminal ==1.0.2,
|
||||||
|
ansi-terminal -example,
|
||||||
|
any.ansi-terminal-types ==0.11.5,
|
||||||
|
any.ansi-wl-pprint ==0.6.9,
|
||||||
|
ansi-wl-pprint -example,
|
||||||
|
any.array ==0.5.4.0,
|
||||||
|
any.assoc ==1.1,
|
||||||
|
assoc +tagged,
|
||||||
|
any.async ==2.2.5,
|
||||||
|
async -bench,
|
||||||
|
any.atomic-primops ==0.8.5,
|
||||||
|
atomic-primops -debug,
|
||||||
|
any.attoparsec ==0.14.4,
|
||||||
|
attoparsec -developer,
|
||||||
|
any.base ==4.15.1.0,
|
||||||
|
any.base-compat ==0.13.1,
|
||||||
|
any.base-orphans ==0.9.1,
|
||||||
|
any.base16-bytestring ==1.0.2.0,
|
||||||
|
any.bifunctors ==5.6.1,
|
||||||
|
bifunctors +tagged,
|
||||||
|
any.bimap ==0.5.0,
|
||||||
|
any.binary ==0.8.9.1,
|
||||||
|
any.binary-instances ==1.0.4,
|
||||||
|
any.binary-orphans ==1.0.4.1,
|
||||||
|
any.bindings-DSL ==1.0.25,
|
||||||
|
any.bitvec ==1.1.5.0,
|
||||||
|
bitvec +simd,
|
||||||
|
any.blaze-builder ==0.4.2.3,
|
||||||
|
any.brick ==2.1.1,
|
||||||
|
brick -demos,
|
||||||
|
any.bytestring ==0.11.5.3,
|
||||||
|
any.bz2 ==1.0.1.1,
|
||||||
|
bz2 -cross +with-bzlib,
|
||||||
|
any.bzip2-clib ==1.0.8,
|
||||||
|
any.bzlib-conduit ==0.3.0.3,
|
||||||
|
any.c2hs ==0.28.8,
|
||||||
|
c2hs +base3 -regression,
|
||||||
|
any.cabal-install-parsers ==0.6.1.1,
|
||||||
|
any.cabal-plan ==0.7.3.0,
|
||||||
|
cabal-plan -_ -exe -license-report,
|
||||||
|
any.call-stack ==0.4.0,
|
||||||
|
any.case-insensitive ==1.2.1.0,
|
||||||
|
any.casing ==0.1.4.1,
|
||||||
|
any.cereal ==0.5.8.3,
|
||||||
|
cereal -bytestring-builder,
|
||||||
|
any.colour ==2.3.6,
|
||||||
|
any.comonad ==5.0.8,
|
||||||
|
comonad +containers +distributive +indexed-traversable,
|
||||||
|
any.conduit ==1.3.5,
|
||||||
|
any.conduit-extra ==1.3.6,
|
||||||
|
any.conduit-zstd ==0.0.2.0,
|
||||||
|
any.config-ini ==0.2.7.0,
|
||||||
|
config-ini -enable-doctests,
|
||||||
|
any.containers ==0.6.4.1,
|
||||||
|
any.contravariant ==1.5.5,
|
||||||
|
contravariant +semigroups +statevar +tagged,
|
||||||
|
any.cryptohash-sha256 ==0.11.102.1,
|
||||||
|
cryptohash-sha256 -exe +use-cbits,
|
||||||
|
any.data-array-byte ==0.1.0.1,
|
||||||
|
any.data-clist ==0.2,
|
||||||
|
any.data-default-class ==0.1.2.0,
|
||||||
|
any.data-fix ==0.3.2,
|
||||||
|
any.deepseq ==1.4.5.0,
|
||||||
|
any.digest ==0.0.2.1,
|
||||||
|
digest -have_arm64_crc32c -have_builtin_prefetch -have_mm_prefetch -have_sse42 -have_strong_getauxval -have_weak_getauxval +pkg-config,
|
||||||
|
any.directory ==1.3.6.2 || ==1.3.8.3,
|
||||||
|
directory -os-string,
|
||||||
|
any.disk-free-space ==0.1.0.1,
|
||||||
|
any.distributive ==0.6.2.1,
|
||||||
|
distributive +semigroups +tagged,
|
||||||
|
any.dlist ==1.0,
|
||||||
|
dlist -werror,
|
||||||
|
any.exceptions ==0.10.4,
|
||||||
|
any.file-uri ==0.1.0.0,
|
||||||
|
any.filepath ==1.4.2.1 || ==1.4.101.0,
|
||||||
|
filepath -cpphs,
|
||||||
|
any.foldable1-classes-compat ==0.1,
|
||||||
|
foldable1-classes-compat +tagged,
|
||||||
|
any.free ==5.2,
|
||||||
|
any.fusion-plugin-types ==0.1.0,
|
||||||
|
any.generic-arbitrary ==0.2.2,
|
||||||
|
any.generically ==0.1.1,
|
||||||
|
any.ghc-bignum ==1.1,
|
||||||
|
any.ghc-boot-th ==9.0.2,
|
||||||
|
any.ghc-prim ==0.7.0,
|
||||||
|
any.happy ==1.20.1.1,
|
||||||
|
any.hashable ==1.4.3.0,
|
||||||
|
hashable +integer-gmp -random-initial-seed,
|
||||||
|
any.haskell-lexer ==1.1.1,
|
||||||
|
any.haskus-utils-data ==1.4,
|
||||||
|
any.haskus-utils-types ==1.5.1,
|
||||||
|
any.haskus-utils-variant ==3.3,
|
||||||
|
any.heaps ==0.4,
|
||||||
|
any.hsc2hs ==0.68.8,
|
||||||
|
hsc2hs -in-ghc-tree,
|
||||||
|
any.hspec ==2.10.10,
|
||||||
|
any.hspec-core ==2.10.10,
|
||||||
|
any.hspec-discover ==2.10.10,
|
||||||
|
any.hspec-expectations ==0.8.2,
|
||||||
|
any.hspec-golden-aeson ==0.9.0.0,
|
||||||
|
any.indexed-profunctors ==0.1.1.1,
|
||||||
|
any.indexed-traversable ==0.1.3,
|
||||||
|
any.indexed-traversable-instances ==0.1.1.2,
|
||||||
|
any.integer-conversion ==0.1.0.1,
|
||||||
|
any.integer-logarithms ==1.0.3.1,
|
||||||
|
integer-logarithms -check-bounds +integer-gmp,
|
||||||
|
any.language-c ==0.9.3,
|
||||||
|
language-c -allwarnings +iecfpextension +usebytestrings,
|
||||||
|
any.libyaml-clib ==0.2.5,
|
||||||
|
any.libyaml-streamly ==0.2.2.1,
|
||||||
|
libyaml-streamly -no-unicode -system-libyaml,
|
||||||
|
any.lockfree-queue ==0.2.4,
|
||||||
|
any.lukko ==0.1.1.3,
|
||||||
|
lukko +ofd-locking,
|
||||||
|
any.lzma-static ==5.2.5.5,
|
||||||
|
any.megaparsec ==9.2.2,
|
||||||
|
megaparsec -dev,
|
||||||
|
any.microlens ==0.4.13.1,
|
||||||
|
any.microlens-mtl ==0.2.0.3,
|
||||||
|
any.microlens-th ==0.4.3.14,
|
||||||
|
any.monad-control ==1.0.3.1,
|
||||||
|
any.mono-traversable ==1.0.17.0,
|
||||||
|
any.mtl ==2.2.2,
|
||||||
|
any.mtl-compat ==0.2.2,
|
||||||
|
mtl-compat -two-point-one -two-point-two,
|
||||||
|
any.network ==3.1.4.0,
|
||||||
|
network -devel,
|
||||||
|
any.network-uri ==2.6.4.2,
|
||||||
|
any.optics ==0.4.2.1,
|
||||||
|
any.optics-core ==0.4.1.1,
|
||||||
|
optics-core -explicit-generic-labels,
|
||||||
|
any.optics-extra ==0.4.2.1,
|
||||||
|
any.optics-th ==0.4.1,
|
||||||
|
any.optparse-applicative ==0.17.1.0,
|
||||||
|
optparse-applicative +process,
|
||||||
|
any.os-release ==1.0.2.1,
|
||||||
|
os-release -devel,
|
||||||
|
any.parsec ==3.1.17.0,
|
||||||
|
any.parser-combinators ==1.3.0,
|
||||||
|
parser-combinators -dev,
|
||||||
|
any.pretty ==1.1.3.6,
|
||||||
|
any.pretty-terminal ==0.1.0.0,
|
||||||
|
any.primitive ==0.8.0.0,
|
||||||
|
any.process ==1.6.13.2 || ==1.6.18.0,
|
||||||
|
any.profunctors ==5.6.2,
|
||||||
|
any.quickcheck-arbitrary-adt ==0.3.1.0,
|
||||||
|
any.quickcheck-io ==0.2.0,
|
||||||
|
any.random ==1.2.1.2,
|
||||||
|
any.recursion-schemes ==5.2.2.5,
|
||||||
|
recursion-schemes +template-haskell,
|
||||||
|
any.regex-base ==0.94.0.2,
|
||||||
|
any.regex-posix ==0.96.0.1,
|
||||||
|
regex-posix -_regex-posix-clib,
|
||||||
|
any.regex-posix-clib ==2.7,
|
||||||
|
any.resourcet ==1.2.6,
|
||||||
|
any.retry ==0.9.3.1,
|
||||||
|
retry -lib-werror,
|
||||||
|
any.rts ==1.0.2,
|
||||||
|
any.safe ==0.3.21,
|
||||||
|
any.safe-exceptions ==0.1.7.4,
|
||||||
|
any.scientific ==0.3.7.0,
|
||||||
|
scientific -bytestring-builder -integer-simple,
|
||||||
|
any.semialign ==1.3,
|
||||||
|
semialign +semigroupoids,
|
||||||
|
any.semigroupoids ==6.0.0.1,
|
||||||
|
semigroupoids +comonad +containers +contravariant +distributive +tagged +unordered-containers,
|
||||||
|
any.setenv ==0.1.1.3,
|
||||||
|
any.split ==0.2.5,
|
||||||
|
any.splitmix ==0.1.0.5,
|
||||||
|
splitmix -optimised-mixer,
|
||||||
|
any.stm ==2.5.0.0,
|
||||||
|
any.streaming-commons ==0.2.2.6,
|
||||||
|
streaming-commons -use-bytestring-builder,
|
||||||
|
any.streamly ==0.8.3,
|
||||||
|
streamly -debug -dev -fusion-plugin -has-llvm -inspection -limit-build-mem -no-fusion +opt -streamk -streamly-core -use-c-malloc +use-unliftio,
|
||||||
|
any.strict ==0.5,
|
||||||
|
any.strict-base ==0.4.0.0,
|
||||||
|
any.tagged ==0.8.8,
|
||||||
|
tagged +deepseq +transformers,
|
||||||
|
any.tagsoup ==0.14.8,
|
||||||
|
any.tar ==0.6.0.0,
|
||||||
|
any.tasty ==1.5,
|
||||||
|
tasty +unix,
|
||||||
|
any.tasty-hunit ==0.10.1,
|
||||||
|
any.template-haskell ==2.17.0.0,
|
||||||
|
any.temporary ==1.3,
|
||||||
|
any.text ==2.0.2,
|
||||||
|
text -developer -simdutf,
|
||||||
|
any.text-binary ==0.2.1.1,
|
||||||
|
any.text-iso8601 ==0.1,
|
||||||
|
any.text-short ==0.1.5,
|
||||||
|
text-short -asserts,
|
||||||
|
any.text-zipper ==0.13,
|
||||||
|
any.tf-random ==0.5,
|
||||||
|
any.th-abstraction ==0.6.0.0,
|
||||||
|
any.th-compat ==0.1.4,
|
||||||
|
any.th-lift ==0.8.4,
|
||||||
|
any.th-lift-instances ==0.1.20,
|
||||||
|
any.these ==1.2,
|
||||||
|
any.time ==1.9.3 || ==1.11.1.2,
|
||||||
|
any.time-compat ==1.9.6.1,
|
||||||
|
time-compat -old-locale,
|
||||||
|
any.transformers ==0.5.6.2,
|
||||||
|
any.transformers-base ==0.4.6,
|
||||||
|
transformers-base +orphaninstances,
|
||||||
|
any.transformers-compat ==0.7.2,
|
||||||
|
transformers-compat -five +five-three -four +generic-deriving +mtl -three -two,
|
||||||
|
any.typed-process ==0.2.11.1,
|
||||||
|
any.unicode-data ==0.3.1,
|
||||||
|
unicode-data -ucd2haskell,
|
||||||
|
any.unix-compat ==0.7.1,
|
||||||
|
unix-compat -old-time,
|
||||||
|
any.unliftio-core ==0.2.1.0,
|
||||||
|
any.unordered-containers ==0.2.20,
|
||||||
|
unordered-containers -debug,
|
||||||
|
any.uri-bytestring ==0.3.3.1,
|
||||||
|
uri-bytestring -lib-werror,
|
||||||
|
any.utf8-string ==1.0.2,
|
||||||
|
any.uuid-types ==1.0.5.1,
|
||||||
|
any.vector ==0.13.1.0,
|
||||||
|
vector +boundschecks -internalchecks -unsafechecks -wall,
|
||||||
|
any.vector-algorithms ==0.9.0.1,
|
||||||
|
vector-algorithms +bench +boundschecks -internalchecks -llvm +properties -unsafechecks,
|
||||||
|
any.vector-binary-instances ==0.2.5.2,
|
||||||
|
any.vector-stream ==0.1.0.1,
|
||||||
|
any.versions ==6.0.6,
|
||||||
|
any.vty ==6.2,
|
||||||
|
any.vty-crossplatform ==0.4.0.0,
|
||||||
|
vty-crossplatform -demos,
|
||||||
|
any.vty-windows ==0.2.0.2,
|
||||||
|
any.witherable ==0.4.2,
|
||||||
|
any.word-wrap ==0.5,
|
||||||
|
any.word8 ==0.1.3,
|
||||||
|
any.yaml-streamly ==0.12.4,
|
||||||
|
yaml-streamly +no-examples +no-exe,
|
||||||
|
any.zip ==2.0.0,
|
||||||
|
zip -dev -disable-bzip2 -disable-zstd,
|
||||||
|
any.zlib ==0.6.3.0,
|
||||||
|
zlib +bundled-c-zlib -non-blocking-ffi -pkg-config,
|
||||||
|
any.zstd ==0.1.3.0,
|
||||||
|
zstd +standalone
|
||||||
|
index-state: hackage.haskell.org 2024-03-15T23:51:46Z
|
8
cabal.ghc902.project
Normal file
8
cabal.ghc902.project
Normal file
@ -0,0 +1,8 @@
|
|||||||
|
if os(mingw32)
|
||||||
|
import: cabal.ghc902.Win32.project
|
||||||
|
import: cabal.ghc902.Win32.project.freeze
|
||||||
|
else
|
||||||
|
import: cabal.ghc902.Unix.project
|
||||||
|
import: cabal.ghc902.Unix.project.freeze
|
||||||
|
|
||||||
|
with-compiler: ghc-9.0.2
|
60
cabal.ghc928.Unix.project
Normal file
60
cabal.ghc928.Unix.project
Normal file
@ -0,0 +1,60 @@
|
|||||||
|
packages: ./ghcup.cabal
|
||||||
|
|
||||||
|
optional-packages: ./vendored/*/*.cabal
|
||||||
|
|
||||||
|
if impl(ghc < 9.0)
|
||||||
|
package ghcup
|
||||||
|
flags: +tui -tar
|
||||||
|
else
|
||||||
|
package ghcup
|
||||||
|
flags: +tui +tar
|
||||||
|
|
||||||
|
constraints: http-io-streams -brotli,
|
||||||
|
any.aeson >= 2.0.1.0,
|
||||||
|
any.hsc2hs ==0.68.8,
|
||||||
|
bzlib-conduit >= 0.3.0.3,
|
||||||
|
bz2 >= 1.0.1.1,
|
||||||
|
bzlib >= 0.5.2.0,
|
||||||
|
directory >= 1.3.8.3,
|
||||||
|
filepath == 1.4.101.0 || == 1.4.300.1 || >= 1.5.2.0
|
||||||
|
|
||||||
|
if os(mingw32)
|
||||||
|
constraints: zlib +bundled-c-zlib,
|
||||||
|
lzma +static,
|
||||||
|
text -simdutf,
|
||||||
|
vty-windows >=0.2.0.2
|
||||||
|
|
||||||
|
if impl(ghc >= 9.4)
|
||||||
|
constraints: language-c >= 0.9.3
|
||||||
|
|
||||||
|
|
||||||
|
source-repository-package
|
||||||
|
type: git
|
||||||
|
location: https://github.com/haskell/tar.git
|
||||||
|
tag: d94a988be4311b830149a9f8fc16739927e5fc1c
|
||||||
|
|
||||||
|
source-repository-package
|
||||||
|
type: git
|
||||||
|
location: https://github.com/hasufell/uri-bytestring.git
|
||||||
|
tag: 4fb5ed14b500c192e6e7a97f6b2b1eb478806001
|
||||||
|
|
||||||
|
package libarchive
|
||||||
|
flags: -system-libarchive
|
||||||
|
|
||||||
|
package aeson-pretty
|
||||||
|
flags: +lib-only
|
||||||
|
|
||||||
|
package cabal-plan
|
||||||
|
flags: -exe
|
||||||
|
|
||||||
|
package aeson
|
||||||
|
flags: +ordered-keymap
|
||||||
|
|
||||||
|
package streamly
|
||||||
|
flags: +use-unliftio
|
||||||
|
|
||||||
|
package *
|
||||||
|
test-show-details: direct
|
||||||
|
|
||||||
|
allow-newer: cabal-install-parsers:tar, streamly:Win32
|
||||||
|
|
273
cabal.ghc928.Unix.project.freeze
Normal file
273
cabal.ghc928.Unix.project.freeze
Normal file
@ -0,0 +1,273 @@
|
|||||||
|
active-repositories: hackage.haskell.org:merge
|
||||||
|
constraints: any.Cabal ==3.10.2.1,
|
||||||
|
any.Cabal-syntax ==3.10.2.0,
|
||||||
|
any.HUnit ==1.6.2.0,
|
||||||
|
any.HsOpenSSL ==0.11.7.6,
|
||||||
|
HsOpenSSL -fast-bignum -homebrew-openssl -macports-openssl -use-pkg-config,
|
||||||
|
any.OneTuple ==0.4.1.1,
|
||||||
|
any.QuickCheck ==2.14.3,
|
||||||
|
QuickCheck -old-random +templatehaskell,
|
||||||
|
any.StateVar ==1.2.2,
|
||||||
|
any.abstract-deque ==0.3,
|
||||||
|
abstract-deque -usecas,
|
||||||
|
any.aeson ==2.2.1.0,
|
||||||
|
aeson +ordered-keymap,
|
||||||
|
any.aeson-pretty ==0.8.10,
|
||||||
|
aeson-pretty +lib-only,
|
||||||
|
any.alex ==3.5.1.0,
|
||||||
|
any.ansi-terminal ==1.0.2,
|
||||||
|
ansi-terminal -example,
|
||||||
|
any.ansi-terminal-types ==0.11.5,
|
||||||
|
any.ansi-wl-pprint ==0.6.9,
|
||||||
|
ansi-wl-pprint -example,
|
||||||
|
any.array ==0.5.4.0,
|
||||||
|
any.assoc ==1.1,
|
||||||
|
assoc +tagged,
|
||||||
|
any.async ==2.2.5,
|
||||||
|
async -bench,
|
||||||
|
any.atomic-primops ==0.8.5,
|
||||||
|
atomic-primops -debug,
|
||||||
|
any.attoparsec ==0.14.4,
|
||||||
|
attoparsec -developer,
|
||||||
|
any.base ==4.16.4.0,
|
||||||
|
any.base-compat ==0.13.1,
|
||||||
|
any.base-orphans ==0.9.1,
|
||||||
|
any.base16-bytestring ==1.0.2.0,
|
||||||
|
any.base64-bytestring ==1.2.1.0,
|
||||||
|
any.bifunctors ==5.6.1,
|
||||||
|
bifunctors +tagged,
|
||||||
|
any.bimap ==0.5.0,
|
||||||
|
any.binary ==0.8.9.0,
|
||||||
|
any.binary-instances ==1.0.4,
|
||||||
|
any.binary-orphans ==1.0.4.1,
|
||||||
|
any.bindings-DSL ==1.0.25,
|
||||||
|
any.bitvec ==1.1.5.0,
|
||||||
|
bitvec +simd,
|
||||||
|
any.blaze-builder ==0.4.2.3,
|
||||||
|
any.brick ==2.1.1,
|
||||||
|
brick -demos,
|
||||||
|
any.bytestring ==0.11.4.0,
|
||||||
|
any.bz2 ==1.0.1.1,
|
||||||
|
bz2 -cross +with-bzlib,
|
||||||
|
any.bzip2-clib ==1.0.8,
|
||||||
|
any.bzlib-conduit ==0.3.0.3,
|
||||||
|
any.c2hs ==0.28.8,
|
||||||
|
c2hs +base3 -regression,
|
||||||
|
any.cabal-install-parsers ==0.6.1.1,
|
||||||
|
any.cabal-plan ==0.7.3.0,
|
||||||
|
cabal-plan -_ -exe -license-report,
|
||||||
|
any.call-stack ==0.4.0,
|
||||||
|
any.case-insensitive ==1.2.1.0,
|
||||||
|
any.casing ==0.1.4.1,
|
||||||
|
any.cereal ==0.5.8.3,
|
||||||
|
cereal -bytestring-builder,
|
||||||
|
any.colour ==2.3.6,
|
||||||
|
any.comonad ==5.0.8,
|
||||||
|
comonad +containers +distributive +indexed-traversable,
|
||||||
|
any.conduit ==1.3.5,
|
||||||
|
any.conduit-extra ==1.3.6,
|
||||||
|
any.conduit-zstd ==0.0.2.0,
|
||||||
|
any.config-ini ==0.2.7.0,
|
||||||
|
config-ini -enable-doctests,
|
||||||
|
any.containers ==0.6.5.1,
|
||||||
|
any.contravariant ==1.5.5,
|
||||||
|
contravariant +semigroups +statevar +tagged,
|
||||||
|
any.cryptohash-sha1 ==0.11.101.0,
|
||||||
|
any.cryptohash-sha256 ==0.11.102.1,
|
||||||
|
cryptohash-sha256 -exe +use-cbits,
|
||||||
|
any.data-array-byte ==0.1.0.1,
|
||||||
|
any.data-clist ==0.2,
|
||||||
|
any.data-default-class ==0.1.2.0,
|
||||||
|
any.data-fix ==0.3.2,
|
||||||
|
any.deepseq ==1.4.6.1,
|
||||||
|
any.digest ==0.0.2.1,
|
||||||
|
digest -have_arm64_crc32c -have_builtin_prefetch -have_mm_prefetch -have_sse42 -have_strong_getauxval -have_weak_getauxval +pkg-config,
|
||||||
|
any.directory ==1.3.8.3,
|
||||||
|
directory -os-string,
|
||||||
|
any.disk-free-space ==0.1.0.1,
|
||||||
|
any.distributive ==0.6.2.1,
|
||||||
|
distributive +semigroups +tagged,
|
||||||
|
any.dlist ==1.0,
|
||||||
|
dlist -werror,
|
||||||
|
any.exceptions ==0.10.4,
|
||||||
|
any.file-uri ==0.1.0.0,
|
||||||
|
any.filepath ==1.4.101.0,
|
||||||
|
filepath -cpphs,
|
||||||
|
any.foldable1-classes-compat ==0.1,
|
||||||
|
foldable1-classes-compat +tagged,
|
||||||
|
any.free ==5.2,
|
||||||
|
any.fusion-plugin-types ==0.1.0,
|
||||||
|
any.generic-arbitrary ==0.2.2,
|
||||||
|
any.generically ==0.1.1,
|
||||||
|
any.ghc-bignum ==1.2,
|
||||||
|
any.ghc-boot-th ==9.2.8,
|
||||||
|
any.ghc-byteorder ==4.11.0.0.10,
|
||||||
|
any.ghc-prim ==0.8.0,
|
||||||
|
any.happy ==1.20.1.1,
|
||||||
|
any.hashable ==1.4.3.0,
|
||||||
|
hashable +integer-gmp -random-initial-seed,
|
||||||
|
any.haskell-lexer ==1.1.1,
|
||||||
|
any.haskus-utils-data ==1.4,
|
||||||
|
any.haskus-utils-types ==1.5.1,
|
||||||
|
any.haskus-utils-variant ==3.3,
|
||||||
|
any.heaps ==0.4,
|
||||||
|
any.hsc2hs ==0.68.8,
|
||||||
|
hsc2hs -in-ghc-tree,
|
||||||
|
any.hspec ==2.10.10,
|
||||||
|
any.hspec-core ==2.10.10,
|
||||||
|
any.hspec-discover ==2.10.10,
|
||||||
|
any.hspec-expectations ==0.8.2,
|
||||||
|
any.hspec-golden-aeson ==0.9.0.0,
|
||||||
|
any.http-io-streams ==0.1.7.0,
|
||||||
|
http-io-streams -brotli +fast-xor,
|
||||||
|
any.indexed-profunctors ==0.1.1.1,
|
||||||
|
any.indexed-traversable ==0.1.3,
|
||||||
|
any.indexed-traversable-instances ==0.1.1.2,
|
||||||
|
any.integer-conversion ==0.1.0.1,
|
||||||
|
any.integer-logarithms ==1.0.3.1,
|
||||||
|
integer-logarithms -check-bounds +integer-gmp,
|
||||||
|
any.io-streams ==1.5.2.2,
|
||||||
|
io-streams +network -nointeractivetests +zlib,
|
||||||
|
any.language-c ==0.9.3,
|
||||||
|
language-c -allwarnings +iecfpextension +usebytestrings,
|
||||||
|
any.libyaml-streamly ==0.2.2.1,
|
||||||
|
libyaml-streamly -no-unicode +system-libyaml,
|
||||||
|
any.lockfree-queue ==0.2.4,
|
||||||
|
any.lukko ==0.1.1.3,
|
||||||
|
lukko +ofd-locking,
|
||||||
|
any.lzma-static ==5.2.5.5,
|
||||||
|
any.megaparsec ==9.2.2,
|
||||||
|
megaparsec -dev,
|
||||||
|
any.microlens ==0.4.13.1,
|
||||||
|
any.microlens-mtl ==0.2.0.3,
|
||||||
|
any.microlens-th ==0.4.3.14,
|
||||||
|
any.monad-control ==1.0.3.1,
|
||||||
|
any.mono-traversable ==1.0.17.0,
|
||||||
|
any.mtl ==2.2.2,
|
||||||
|
any.mtl-compat ==0.2.2,
|
||||||
|
mtl-compat -two-point-one -two-point-two,
|
||||||
|
any.network ==3.1.4.0,
|
||||||
|
network -devel,
|
||||||
|
any.network-uri ==2.6.4.2,
|
||||||
|
any.openssl-streams ==1.2.3.0,
|
||||||
|
any.optics ==0.4.2.1,
|
||||||
|
any.optics-core ==0.4.1.1,
|
||||||
|
optics-core -explicit-generic-labels,
|
||||||
|
any.optics-extra ==0.4.2.1,
|
||||||
|
any.optics-th ==0.4.1,
|
||||||
|
any.optparse-applicative ==0.17.1.0,
|
||||||
|
optparse-applicative +process,
|
||||||
|
any.os-release ==1.0.2.1,
|
||||||
|
os-release -devel,
|
||||||
|
any.parsec ==3.1.17.0,
|
||||||
|
any.parser-combinators ==1.3.0,
|
||||||
|
parser-combinators -dev,
|
||||||
|
any.pretty ==1.1.3.6,
|
||||||
|
any.pretty-terminal ==0.1.0.0,
|
||||||
|
any.primitive ==0.8.0.0,
|
||||||
|
any.process ==1.6.18.0,
|
||||||
|
any.profunctors ==5.6.2,
|
||||||
|
any.quickcheck-arbitrary-adt ==0.3.1.0,
|
||||||
|
any.quickcheck-io ==0.2.0,
|
||||||
|
any.random ==1.2.1.2,
|
||||||
|
any.recursion-schemes ==5.2.2.5,
|
||||||
|
recursion-schemes +template-haskell,
|
||||||
|
any.regex-base ==0.94.0.2,
|
||||||
|
any.regex-posix ==0.96.0.1,
|
||||||
|
regex-posix -_regex-posix-clib,
|
||||||
|
any.resourcet ==1.2.6,
|
||||||
|
any.retry ==0.9.3.1,
|
||||||
|
retry -lib-werror,
|
||||||
|
any.rts ==1.0.2,
|
||||||
|
any.safe ==0.3.21,
|
||||||
|
any.safe-exceptions ==0.1.7.4,
|
||||||
|
any.scientific ==0.3.7.0,
|
||||||
|
scientific -bytestring-builder -integer-simple,
|
||||||
|
any.semialign ==1.3,
|
||||||
|
semialign +semigroupoids,
|
||||||
|
any.semigroupoids ==6.0.0.1,
|
||||||
|
semigroupoids +comonad +containers +contravariant +distributive +tagged +unordered-containers,
|
||||||
|
any.setenv ==0.1.1.3,
|
||||||
|
any.split ==0.2.5,
|
||||||
|
any.splitmix ==0.1.0.5,
|
||||||
|
splitmix -optimised-mixer,
|
||||||
|
any.stm ==2.5.0.2,
|
||||||
|
any.streaming-commons ==0.2.2.6,
|
||||||
|
streaming-commons -use-bytestring-builder,
|
||||||
|
any.streamly ==0.8.3,
|
||||||
|
streamly -debug -dev -fusion-plugin -has-llvm -inspection -limit-build-mem -no-fusion +opt -streamk -streamly-core -use-c-malloc +use-unliftio,
|
||||||
|
any.strict ==0.5,
|
||||||
|
any.strict-base ==0.4.0.0,
|
||||||
|
any.tagged ==0.8.8,
|
||||||
|
tagged +deepseq +transformers,
|
||||||
|
any.tagsoup ==0.14.8,
|
||||||
|
any.tar ==0.6.0.0,
|
||||||
|
any.tasty ==1.5,
|
||||||
|
tasty +unix,
|
||||||
|
any.tasty-hunit ==0.10.1,
|
||||||
|
any.template-haskell ==2.18.0.0,
|
||||||
|
any.temporary ==1.3,
|
||||||
|
any.terminal-progress-bar ==0.4.2,
|
||||||
|
any.terminal-size ==0.3.4,
|
||||||
|
any.terminfo ==0.4.1.5,
|
||||||
|
any.text ==2.0.2,
|
||||||
|
text -developer +simdutf,
|
||||||
|
any.text-binary ==0.2.1.1,
|
||||||
|
any.text-iso8601 ==0.1,
|
||||||
|
any.text-short ==0.1.5,
|
||||||
|
text-short -asserts,
|
||||||
|
any.text-zipper ==0.13,
|
||||||
|
any.tf-random ==0.5,
|
||||||
|
any.th-abstraction ==0.6.0.0,
|
||||||
|
any.th-compat ==0.1.4,
|
||||||
|
any.th-lift ==0.8.4,
|
||||||
|
any.th-lift-instances ==0.1.20,
|
||||||
|
any.these ==1.2,
|
||||||
|
any.time ==1.11.1.1,
|
||||||
|
any.time-compat ==1.9.6.1,
|
||||||
|
time-compat -old-locale,
|
||||||
|
any.transformers ==0.5.6.2,
|
||||||
|
any.transformers-base ==0.4.6,
|
||||||
|
transformers-base +orphaninstances,
|
||||||
|
any.transformers-compat ==0.7.2,
|
||||||
|
transformers-compat -five +five-three -four +generic-deriving +mtl -three -two,
|
||||||
|
any.typed-process ==0.2.11.1,
|
||||||
|
any.unicode-data ==0.3.1,
|
||||||
|
unicode-data -ucd2haskell,
|
||||||
|
any.unix ==2.8.5.0,
|
||||||
|
unix -os-string,
|
||||||
|
any.unix-bytestring ==0.3.7.8,
|
||||||
|
any.unix-compat ==0.7.1,
|
||||||
|
unix-compat -old-time,
|
||||||
|
any.unliftio-core ==0.2.1.0,
|
||||||
|
any.unordered-containers ==0.2.20,
|
||||||
|
unordered-containers -debug,
|
||||||
|
any.uri-bytestring ==0.3.3.1,
|
||||||
|
uri-bytestring -lib-werror,
|
||||||
|
any.utf8-string ==1.0.2,
|
||||||
|
any.uuid-types ==1.0.5.1,
|
||||||
|
any.vector ==0.13.1.0,
|
||||||
|
vector +boundschecks -internalchecks -unsafechecks -wall,
|
||||||
|
any.vector-algorithms ==0.9.0.1,
|
||||||
|
vector-algorithms +bench +boundschecks -internalchecks -llvm +properties -unsafechecks,
|
||||||
|
any.vector-binary-instances ==0.2.5.2,
|
||||||
|
any.vector-stream ==0.1.0.1,
|
||||||
|
any.versions ==6.0.6,
|
||||||
|
any.vty ==6.2,
|
||||||
|
any.vty-crossplatform ==0.4.0.0,
|
||||||
|
vty-crossplatform -demos,
|
||||||
|
any.vty-unix ==0.2.0.0,
|
||||||
|
any.witherable ==0.4.2,
|
||||||
|
any.word-wrap ==0.5,
|
||||||
|
any.word8 ==0.1.3,
|
||||||
|
any.xor ==0.0.1.2,
|
||||||
|
any.yaml-streamly ==0.12.4,
|
||||||
|
yaml-streamly +no-examples +no-exe,
|
||||||
|
any.zip ==2.0.0,
|
||||||
|
zip -dev -disable-bzip2 -disable-zstd,
|
||||||
|
any.zlib ==0.6.3.0,
|
||||||
|
zlib -bundled-c-zlib -non-blocking-ffi -pkg-config,
|
||||||
|
any.zlib-bindings ==0.1.1.5,
|
||||||
|
any.zstd ==0.1.3.0,
|
||||||
|
zstd +standalone
|
||||||
|
index-state: hackage.haskell.org 2024-03-13T09:43:35Z
|
60
cabal.ghc928.Win32.project
Normal file
60
cabal.ghc928.Win32.project
Normal file
@ -0,0 +1,60 @@
|
|||||||
|
packages: ./ghcup.cabal
|
||||||
|
|
||||||
|
optional-packages: ./vendored/*/*.cabal
|
||||||
|
|
||||||
|
if impl(ghc < 9.0)
|
||||||
|
package ghcup
|
||||||
|
flags: +tui -tar
|
||||||
|
else
|
||||||
|
package ghcup
|
||||||
|
flags: +tui +tar
|
||||||
|
|
||||||
|
constraints: http-io-streams -brotli,
|
||||||
|
any.aeson >= 2.0.1.0,
|
||||||
|
any.hsc2hs ==0.68.8,
|
||||||
|
bzlib-conduit >= 0.3.0.3,
|
||||||
|
bz2 >= 1.0.1.1,
|
||||||
|
bzlib >= 0.5.2.0,
|
||||||
|
directory >= 1.3.8.3,
|
||||||
|
filepath == 1.4.101.0 || == 1.4.300.1 || >= 1.5.2.0
|
||||||
|
|
||||||
|
if os(mingw32)
|
||||||
|
constraints: zlib +bundled-c-zlib,
|
||||||
|
lzma +static,
|
||||||
|
text -simdutf,
|
||||||
|
vty-windows >=0.2.0.2
|
||||||
|
|
||||||
|
if impl(ghc >= 9.4)
|
||||||
|
constraints: language-c >= 0.9.3
|
||||||
|
|
||||||
|
|
||||||
|
source-repository-package
|
||||||
|
type: git
|
||||||
|
location: https://github.com/haskell/tar.git
|
||||||
|
tag: d94a988be4311b830149a9f8fc16739927e5fc1c
|
||||||
|
|
||||||
|
source-repository-package
|
||||||
|
type: git
|
||||||
|
location: https://github.com/hasufell/uri-bytestring.git
|
||||||
|
tag: 4fb5ed14b500c192e6e7a97f6b2b1eb478806001
|
||||||
|
|
||||||
|
package libarchive
|
||||||
|
flags: -system-libarchive
|
||||||
|
|
||||||
|
package aeson-pretty
|
||||||
|
flags: +lib-only
|
||||||
|
|
||||||
|
package cabal-plan
|
||||||
|
flags: -exe
|
||||||
|
|
||||||
|
package aeson
|
||||||
|
flags: +ordered-keymap
|
||||||
|
|
||||||
|
package streamly
|
||||||
|
flags: +use-unliftio
|
||||||
|
|
||||||
|
package *
|
||||||
|
test-show-details: direct
|
||||||
|
|
||||||
|
allow-newer: cabal-install-parsers:tar, streamly:Win32
|
||||||
|
|
258
cabal.ghc928.Win32.project.freeze
Normal file
258
cabal.ghc928.Win32.project.freeze
Normal file
@ -0,0 +1,258 @@
|
|||||||
|
active-repositories: hackage.haskell.org:merge
|
||||||
|
constraints: any.Cabal ==3.10.2.1,
|
||||||
|
any.Cabal-syntax ==3.10.2.0,
|
||||||
|
any.HUnit ==1.6.2.0,
|
||||||
|
any.OneTuple ==0.4.1.1,
|
||||||
|
any.QuickCheck ==2.14.3,
|
||||||
|
QuickCheck -old-random +templatehaskell,
|
||||||
|
any.StateVar ==1.2.2,
|
||||||
|
any.Win32 ==2.12.0.1 || ==2.13.4.0,
|
||||||
|
any.abstract-deque ==0.3,
|
||||||
|
abstract-deque -usecas,
|
||||||
|
any.aeson ==2.2.1.0,
|
||||||
|
aeson +ordered-keymap,
|
||||||
|
any.aeson-pretty ==0.8.10,
|
||||||
|
aeson-pretty +lib-only,
|
||||||
|
any.alex ==3.5.1.0,
|
||||||
|
any.ansi-terminal ==1.0.2,
|
||||||
|
ansi-terminal -example,
|
||||||
|
any.ansi-terminal-types ==0.11.5,
|
||||||
|
any.ansi-wl-pprint ==0.6.9,
|
||||||
|
ansi-wl-pprint -example,
|
||||||
|
any.array ==0.5.4.0,
|
||||||
|
any.assoc ==1.1,
|
||||||
|
assoc +tagged,
|
||||||
|
any.async ==2.2.5,
|
||||||
|
async -bench,
|
||||||
|
any.atomic-primops ==0.8.5,
|
||||||
|
atomic-primops -debug,
|
||||||
|
any.attoparsec ==0.14.4,
|
||||||
|
attoparsec -developer,
|
||||||
|
any.base ==4.16.4.0,
|
||||||
|
any.base-compat ==0.13.1,
|
||||||
|
any.base-orphans ==0.9.1,
|
||||||
|
any.base16-bytestring ==1.0.2.0,
|
||||||
|
any.bifunctors ==5.6.1,
|
||||||
|
bifunctors +tagged,
|
||||||
|
any.bimap ==0.5.0,
|
||||||
|
any.binary ==0.8.9.0,
|
||||||
|
any.binary-instances ==1.0.4,
|
||||||
|
any.binary-orphans ==1.0.4.1,
|
||||||
|
any.bindings-DSL ==1.0.25,
|
||||||
|
any.bitvec ==1.1.5.0,
|
||||||
|
bitvec +simd,
|
||||||
|
any.blaze-builder ==0.4.2.3,
|
||||||
|
any.brick ==2.1.1,
|
||||||
|
brick -demos,
|
||||||
|
any.bytestring ==0.11.4.0,
|
||||||
|
any.bz2 ==1.0.1.1,
|
||||||
|
bz2 -cross +with-bzlib,
|
||||||
|
any.bzip2-clib ==1.0.8,
|
||||||
|
any.bzlib-conduit ==0.3.0.3,
|
||||||
|
any.c2hs ==0.28.8,
|
||||||
|
c2hs +base3 -regression,
|
||||||
|
any.cabal-install-parsers ==0.6.1.1,
|
||||||
|
any.cabal-plan ==0.7.3.0,
|
||||||
|
cabal-plan -_ -exe -license-report,
|
||||||
|
any.call-stack ==0.4.0,
|
||||||
|
any.case-insensitive ==1.2.1.0,
|
||||||
|
any.casing ==0.1.4.1,
|
||||||
|
any.cereal ==0.5.8.3,
|
||||||
|
cereal -bytestring-builder,
|
||||||
|
any.colour ==2.3.6,
|
||||||
|
any.comonad ==5.0.8,
|
||||||
|
comonad +containers +distributive +indexed-traversable,
|
||||||
|
any.conduit ==1.3.5,
|
||||||
|
any.conduit-extra ==1.3.6,
|
||||||
|
any.conduit-zstd ==0.0.2.0,
|
||||||
|
any.config-ini ==0.2.7.0,
|
||||||
|
config-ini -enable-doctests,
|
||||||
|
any.containers ==0.6.5.1,
|
||||||
|
any.contravariant ==1.5.5,
|
||||||
|
contravariant +semigroups +statevar +tagged,
|
||||||
|
any.cryptohash-sha256 ==0.11.102.1,
|
||||||
|
cryptohash-sha256 -exe +use-cbits,
|
||||||
|
any.data-array-byte ==0.1.0.1,
|
||||||
|
any.data-clist ==0.2,
|
||||||
|
any.data-default-class ==0.1.2.0,
|
||||||
|
any.data-fix ==0.3.2,
|
||||||
|
any.deepseq ==1.4.6.1,
|
||||||
|
any.digest ==0.0.2.1,
|
||||||
|
digest -have_arm64_crc32c -have_builtin_prefetch -have_mm_prefetch -have_sse42 -have_strong_getauxval -have_weak_getauxval +pkg-config,
|
||||||
|
any.directory ==1.3.6.2 || ==1.3.8.3,
|
||||||
|
directory -os-string,
|
||||||
|
any.disk-free-space ==0.1.0.1,
|
||||||
|
any.distributive ==0.6.2.1,
|
||||||
|
distributive +semigroups +tagged,
|
||||||
|
any.dlist ==1.0,
|
||||||
|
dlist -werror,
|
||||||
|
any.exceptions ==0.10.4,
|
||||||
|
any.file-uri ==0.1.0.0,
|
||||||
|
any.filepath ==1.4.2.2 || ==1.4.101.0,
|
||||||
|
filepath -cpphs,
|
||||||
|
any.foldable1-classes-compat ==0.1,
|
||||||
|
foldable1-classes-compat +tagged,
|
||||||
|
any.free ==5.2,
|
||||||
|
any.fusion-plugin-types ==0.1.0,
|
||||||
|
any.generic-arbitrary ==0.2.2,
|
||||||
|
any.generically ==0.1.1,
|
||||||
|
any.ghc-bignum ==1.2,
|
||||||
|
any.ghc-boot-th ==9.2.8,
|
||||||
|
any.ghc-prim ==0.8.0,
|
||||||
|
any.happy ==1.20.1.1,
|
||||||
|
any.hashable ==1.4.3.0,
|
||||||
|
hashable +integer-gmp -random-initial-seed,
|
||||||
|
any.haskell-lexer ==1.1.1,
|
||||||
|
any.haskus-utils-data ==1.4,
|
||||||
|
any.haskus-utils-types ==1.5.1,
|
||||||
|
any.haskus-utils-variant ==3.3,
|
||||||
|
any.heaps ==0.4,
|
||||||
|
any.hsc2hs ==0.68.8,
|
||||||
|
hsc2hs -in-ghc-tree,
|
||||||
|
any.hspec ==2.10.10,
|
||||||
|
any.hspec-core ==2.10.10,
|
||||||
|
any.hspec-discover ==2.10.10,
|
||||||
|
any.hspec-expectations ==0.8.2,
|
||||||
|
any.hspec-golden-aeson ==0.9.0.0,
|
||||||
|
any.indexed-profunctors ==0.1.1.1,
|
||||||
|
any.indexed-traversable ==0.1.3,
|
||||||
|
any.indexed-traversable-instances ==0.1.1.2,
|
||||||
|
any.integer-conversion ==0.1.0.1,
|
||||||
|
any.integer-logarithms ==1.0.3.1,
|
||||||
|
integer-logarithms -check-bounds +integer-gmp,
|
||||||
|
any.language-c ==0.9.3,
|
||||||
|
language-c -allwarnings +iecfpextension +usebytestrings,
|
||||||
|
any.libyaml-clib ==0.2.5,
|
||||||
|
any.libyaml-streamly ==0.2.2.1,
|
||||||
|
libyaml-streamly -no-unicode -system-libyaml,
|
||||||
|
any.lockfree-queue ==0.2.4,
|
||||||
|
any.lukko ==0.1.1.3,
|
||||||
|
lukko +ofd-locking,
|
||||||
|
any.lzma-static ==5.2.5.5,
|
||||||
|
any.megaparsec ==9.2.2,
|
||||||
|
megaparsec -dev,
|
||||||
|
any.microlens ==0.4.13.1,
|
||||||
|
any.microlens-mtl ==0.2.0.3,
|
||||||
|
any.microlens-th ==0.4.3.14,
|
||||||
|
any.monad-control ==1.0.3.1,
|
||||||
|
any.mono-traversable ==1.0.17.0,
|
||||||
|
any.mtl ==2.2.2,
|
||||||
|
any.mtl-compat ==0.2.2,
|
||||||
|
mtl-compat -two-point-one -two-point-two,
|
||||||
|
any.network ==3.1.4.0,
|
||||||
|
network -devel,
|
||||||
|
any.network-uri ==2.6.4.2,
|
||||||
|
any.optics ==0.4.2.1,
|
||||||
|
any.optics-core ==0.4.1.1,
|
||||||
|
optics-core -explicit-generic-labels,
|
||||||
|
any.optics-extra ==0.4.2.1,
|
||||||
|
any.optics-th ==0.4.1,
|
||||||
|
any.optparse-applicative ==0.17.1.0,
|
||||||
|
optparse-applicative +process,
|
||||||
|
any.os-release ==1.0.2.1,
|
||||||
|
os-release -devel,
|
||||||
|
any.parsec ==3.1.17.0,
|
||||||
|
any.parser-combinators ==1.3.0,
|
||||||
|
parser-combinators -dev,
|
||||||
|
any.pretty ==1.1.3.6,
|
||||||
|
any.pretty-terminal ==0.1.0.0,
|
||||||
|
any.primitive ==0.8.0.0,
|
||||||
|
any.process ==1.6.16.0 || ==1.6.18.0,
|
||||||
|
any.profunctors ==5.6.2,
|
||||||
|
any.quickcheck-arbitrary-adt ==0.3.1.0,
|
||||||
|
any.quickcheck-io ==0.2.0,
|
||||||
|
any.random ==1.2.1.2,
|
||||||
|
any.recursion-schemes ==5.2.2.5,
|
||||||
|
recursion-schemes +template-haskell,
|
||||||
|
any.regex-base ==0.94.0.2,
|
||||||
|
any.regex-posix ==0.96.0.1,
|
||||||
|
regex-posix -_regex-posix-clib,
|
||||||
|
any.regex-posix-clib ==2.7,
|
||||||
|
any.resourcet ==1.2.6,
|
||||||
|
any.retry ==0.9.3.1,
|
||||||
|
retry -lib-werror,
|
||||||
|
any.rts ==1.0.2,
|
||||||
|
any.safe ==0.3.21,
|
||||||
|
any.safe-exceptions ==0.1.7.4,
|
||||||
|
any.scientific ==0.3.7.0,
|
||||||
|
scientific -bytestring-builder -integer-simple,
|
||||||
|
any.semialign ==1.3,
|
||||||
|
semialign +semigroupoids,
|
||||||
|
any.semigroupoids ==6.0.0.1,
|
||||||
|
semigroupoids +comonad +containers +contravariant +distributive +tagged +unordered-containers,
|
||||||
|
any.setenv ==0.1.1.3,
|
||||||
|
any.split ==0.2.5,
|
||||||
|
any.splitmix ==0.1.0.5,
|
||||||
|
splitmix -optimised-mixer,
|
||||||
|
any.stm ==2.5.0.2,
|
||||||
|
any.streaming-commons ==0.2.2.6,
|
||||||
|
streaming-commons -use-bytestring-builder,
|
||||||
|
any.streamly ==0.8.3,
|
||||||
|
streamly -debug -dev -fusion-plugin -has-llvm -inspection -limit-build-mem -no-fusion +opt -streamk -streamly-core -use-c-malloc +use-unliftio,
|
||||||
|
any.strict ==0.5,
|
||||||
|
any.strict-base ==0.4.0.0,
|
||||||
|
any.tagged ==0.8.8,
|
||||||
|
tagged +deepseq +transformers,
|
||||||
|
any.tagsoup ==0.14.8,
|
||||||
|
any.tar ==0.6.0.0,
|
||||||
|
any.tasty ==1.5,
|
||||||
|
tasty +unix,
|
||||||
|
any.tasty-hunit ==0.10.1,
|
||||||
|
any.template-haskell ==2.18.0.0,
|
||||||
|
any.temporary ==1.3,
|
||||||
|
any.text ==2.0.2,
|
||||||
|
text -developer -simdutf,
|
||||||
|
any.text-binary ==0.2.1.1,
|
||||||
|
any.text-iso8601 ==0.1,
|
||||||
|
any.text-short ==0.1.5,
|
||||||
|
text-short -asserts,
|
||||||
|
any.text-zipper ==0.13,
|
||||||
|
any.tf-random ==0.5,
|
||||||
|
any.th-abstraction ==0.6.0.0,
|
||||||
|
any.th-compat ==0.1.4,
|
||||||
|
any.th-lift ==0.8.4,
|
||||||
|
any.th-lift-instances ==0.1.20,
|
||||||
|
any.these ==1.2,
|
||||||
|
any.time ==1.11.1.1 || ==1.11.1.2,
|
||||||
|
any.time-compat ==1.9.6.1,
|
||||||
|
time-compat -old-locale,
|
||||||
|
any.transformers ==0.5.6.2,
|
||||||
|
any.transformers-base ==0.4.6,
|
||||||
|
transformers-base +orphaninstances,
|
||||||
|
any.transformers-compat ==0.7.2,
|
||||||
|
transformers-compat -five +five-three -four +generic-deriving +mtl -three -two,
|
||||||
|
any.typed-process ==0.2.11.1,
|
||||||
|
any.unicode-data ==0.3.1,
|
||||||
|
unicode-data -ucd2haskell,
|
||||||
|
any.unix-compat ==0.7.1,
|
||||||
|
unix-compat -old-time,
|
||||||
|
any.unliftio-core ==0.2.1.0,
|
||||||
|
any.unordered-containers ==0.2.20,
|
||||||
|
unordered-containers -debug,
|
||||||
|
any.uri-bytestring ==0.3.3.1,
|
||||||
|
uri-bytestring -lib-werror,
|
||||||
|
any.utf8-string ==1.0.2,
|
||||||
|
any.uuid-types ==1.0.5.1,
|
||||||
|
any.vector ==0.13.1.0,
|
||||||
|
vector +boundschecks -internalchecks -unsafechecks -wall,
|
||||||
|
any.vector-algorithms ==0.9.0.1,
|
||||||
|
vector-algorithms +bench +boundschecks -internalchecks -llvm +properties -unsafechecks,
|
||||||
|
any.vector-binary-instances ==0.2.5.2,
|
||||||
|
any.vector-stream ==0.1.0.1,
|
||||||
|
any.versions ==6.0.6,
|
||||||
|
any.vty ==6.2,
|
||||||
|
any.vty-crossplatform ==0.4.0.0,
|
||||||
|
vty-crossplatform -demos,
|
||||||
|
any.vty-windows ==0.2.0.2,
|
||||||
|
any.witherable ==0.4.2,
|
||||||
|
any.word-wrap ==0.5,
|
||||||
|
any.word8 ==0.1.3,
|
||||||
|
any.yaml-streamly ==0.12.4,
|
||||||
|
yaml-streamly +no-examples +no-exe,
|
||||||
|
any.zip ==2.0.0,
|
||||||
|
zip -dev -disable-bzip2 -disable-zstd,
|
||||||
|
any.zlib ==0.6.3.0,
|
||||||
|
zlib +bundled-c-zlib -non-blocking-ffi -pkg-config,
|
||||||
|
any.zstd ==0.1.3.0,
|
||||||
|
zstd +standalone
|
||||||
|
index-state: hackage.haskell.org 2024-03-15T23:51:46Z
|
8
cabal.ghc928.project
Normal file
8
cabal.ghc928.project
Normal file
@ -0,0 +1,8 @@
|
|||||||
|
if os(mingw32)
|
||||||
|
import: cabal.ghc928.Win32.project
|
||||||
|
import: cabal.ghc928.Win32.project.freeze
|
||||||
|
else
|
||||||
|
import: cabal.ghc928.Unix.project
|
||||||
|
import: cabal.ghc928.Unix.project.freeze
|
||||||
|
|
||||||
|
with-compiler: ghc-9.2.8
|
60
cabal.ghc948.Unix.project
Normal file
60
cabal.ghc948.Unix.project
Normal file
@ -0,0 +1,60 @@
|
|||||||
|
packages: ./ghcup.cabal
|
||||||
|
|
||||||
|
optional-packages: ./vendored/*/*.cabal
|
||||||
|
|
||||||
|
if impl(ghc < 9.0)
|
||||||
|
package ghcup
|
||||||
|
flags: +tui -tar
|
||||||
|
else
|
||||||
|
package ghcup
|
||||||
|
flags: +tui +tar
|
||||||
|
|
||||||
|
constraints: http-io-streams -brotli,
|
||||||
|
any.aeson >= 2.0.1.0,
|
||||||
|
any.hsc2hs ==0.68.8,
|
||||||
|
bzlib-conduit >= 0.3.0.3,
|
||||||
|
bz2 >= 1.0.1.1,
|
||||||
|
bzlib >= 0.5.2.0,
|
||||||
|
directory >= 1.3.8.3,
|
||||||
|
filepath == 1.4.101.0 || == 1.4.300.1 || >= 1.5.2.0
|
||||||
|
|
||||||
|
if os(mingw32)
|
||||||
|
constraints: zlib +bundled-c-zlib,
|
||||||
|
lzma +static,
|
||||||
|
text -simdutf,
|
||||||
|
vty-windows >=0.2.0.2
|
||||||
|
|
||||||
|
if impl(ghc >= 9.4)
|
||||||
|
constraints: language-c >= 0.9.3
|
||||||
|
|
||||||
|
|
||||||
|
source-repository-package
|
||||||
|
type: git
|
||||||
|
location: https://github.com/haskell/tar.git
|
||||||
|
tag: d94a988be4311b830149a9f8fc16739927e5fc1c
|
||||||
|
|
||||||
|
source-repository-package
|
||||||
|
type: git
|
||||||
|
location: https://github.com/hasufell/uri-bytestring.git
|
||||||
|
tag: 4fb5ed14b500c192e6e7a97f6b2b1eb478806001
|
||||||
|
|
||||||
|
package libarchive
|
||||||
|
flags: -system-libarchive
|
||||||
|
|
||||||
|
package aeson-pretty
|
||||||
|
flags: +lib-only
|
||||||
|
|
||||||
|
package cabal-plan
|
||||||
|
flags: -exe
|
||||||
|
|
||||||
|
package aeson
|
||||||
|
flags: +ordered-keymap
|
||||||
|
|
||||||
|
package streamly
|
||||||
|
flags: +use-unliftio
|
||||||
|
|
||||||
|
package *
|
||||||
|
test-show-details: direct
|
||||||
|
|
||||||
|
allow-newer: cabal-install-parsers:tar, streamly:Win32
|
||||||
|
|
271
cabal.ghc948.Unix.project.freeze
Normal file
271
cabal.ghc948.Unix.project.freeze
Normal file
@ -0,0 +1,271 @@
|
|||||||
|
active-repositories: hackage.haskell.org:merge
|
||||||
|
constraints: any.Cabal ==3.10.2.1,
|
||||||
|
any.Cabal-syntax ==3.10.2.0,
|
||||||
|
any.HUnit ==1.6.2.0,
|
||||||
|
any.HsOpenSSL ==0.11.7.6,
|
||||||
|
HsOpenSSL -fast-bignum -homebrew-openssl -macports-openssl -use-pkg-config,
|
||||||
|
any.OneTuple ==0.4.1.1,
|
||||||
|
any.QuickCheck ==2.14.3,
|
||||||
|
QuickCheck -old-random +templatehaskell,
|
||||||
|
any.StateVar ==1.2.2,
|
||||||
|
any.abstract-deque ==0.3,
|
||||||
|
abstract-deque -usecas,
|
||||||
|
any.aeson ==2.2.1.0,
|
||||||
|
aeson +ordered-keymap,
|
||||||
|
any.aeson-pretty ==0.8.10,
|
||||||
|
aeson-pretty +lib-only,
|
||||||
|
any.alex ==3.5.1.0,
|
||||||
|
any.ansi-terminal ==1.0.2,
|
||||||
|
ansi-terminal -example,
|
||||||
|
any.ansi-terminal-types ==0.11.5,
|
||||||
|
any.ansi-wl-pprint ==0.6.9,
|
||||||
|
ansi-wl-pprint -example,
|
||||||
|
any.array ==0.5.4.0,
|
||||||
|
any.assoc ==1.1,
|
||||||
|
assoc +tagged,
|
||||||
|
any.async ==2.2.5,
|
||||||
|
async -bench,
|
||||||
|
any.atomic-primops ==0.8.5,
|
||||||
|
atomic-primops -debug,
|
||||||
|
any.attoparsec ==0.14.4,
|
||||||
|
attoparsec -developer,
|
||||||
|
any.base ==4.17.2.1,
|
||||||
|
any.base-compat ==0.13.1,
|
||||||
|
any.base-orphans ==0.9.1,
|
||||||
|
any.base16-bytestring ==1.0.2.0,
|
||||||
|
any.base64-bytestring ==1.2.1.0,
|
||||||
|
any.bifunctors ==5.6.1,
|
||||||
|
bifunctors +tagged,
|
||||||
|
any.bimap ==0.5.0,
|
||||||
|
any.binary ==0.8.9.1,
|
||||||
|
any.binary-instances ==1.0.4,
|
||||||
|
any.binary-orphans ==1.0.4.1,
|
||||||
|
any.bindings-DSL ==1.0.25,
|
||||||
|
any.bitvec ==1.1.5.0,
|
||||||
|
bitvec +simd,
|
||||||
|
any.blaze-builder ==0.4.2.3,
|
||||||
|
any.brick ==2.1.1,
|
||||||
|
brick -demos,
|
||||||
|
any.bytestring ==0.11.5.3,
|
||||||
|
any.bz2 ==1.0.1.1,
|
||||||
|
bz2 -cross +with-bzlib,
|
||||||
|
any.bzip2-clib ==1.0.8,
|
||||||
|
any.bzlib-conduit ==0.3.0.3,
|
||||||
|
any.c2hs ==0.28.8,
|
||||||
|
c2hs +base3 -regression,
|
||||||
|
any.cabal-install-parsers ==0.6.1.1,
|
||||||
|
any.cabal-plan ==0.7.3.0,
|
||||||
|
cabal-plan -_ -exe -license-report,
|
||||||
|
any.call-stack ==0.4.0,
|
||||||
|
any.case-insensitive ==1.2.1.0,
|
||||||
|
any.casing ==0.1.4.1,
|
||||||
|
any.cereal ==0.5.8.3,
|
||||||
|
cereal -bytestring-builder,
|
||||||
|
any.colour ==2.3.6,
|
||||||
|
any.comonad ==5.0.8,
|
||||||
|
comonad +containers +distributive +indexed-traversable,
|
||||||
|
any.conduit ==1.3.5,
|
||||||
|
any.conduit-extra ==1.3.6,
|
||||||
|
any.conduit-zstd ==0.0.2.0,
|
||||||
|
any.config-ini ==0.2.7.0,
|
||||||
|
config-ini -enable-doctests,
|
||||||
|
any.containers ==0.6.7,
|
||||||
|
any.contravariant ==1.5.5,
|
||||||
|
contravariant +semigroups +statevar +tagged,
|
||||||
|
any.cryptohash-sha1 ==0.11.101.0,
|
||||||
|
any.cryptohash-sha256 ==0.11.102.1,
|
||||||
|
cryptohash-sha256 -exe +use-cbits,
|
||||||
|
any.data-clist ==0.2,
|
||||||
|
any.data-default-class ==0.1.2.0,
|
||||||
|
any.data-fix ==0.3.2,
|
||||||
|
any.deepseq ==1.4.8.0,
|
||||||
|
any.digest ==0.0.2.1,
|
||||||
|
digest -have_arm64_crc32c -have_builtin_prefetch -have_mm_prefetch -have_sse42 -have_strong_getauxval -have_weak_getauxval +pkg-config,
|
||||||
|
any.directory ==1.3.8.3,
|
||||||
|
directory -os-string,
|
||||||
|
any.disk-free-space ==0.1.0.1,
|
||||||
|
any.distributive ==0.6.2.1,
|
||||||
|
distributive +semigroups +tagged,
|
||||||
|
any.dlist ==1.0,
|
||||||
|
dlist -werror,
|
||||||
|
any.exceptions ==0.10.5,
|
||||||
|
any.file-uri ==0.1.0.0,
|
||||||
|
any.filepath ==1.4.101.0,
|
||||||
|
filepath -cpphs,
|
||||||
|
any.foldable1-classes-compat ==0.1,
|
||||||
|
foldable1-classes-compat +tagged,
|
||||||
|
any.free ==5.2,
|
||||||
|
any.fusion-plugin-types ==0.1.0,
|
||||||
|
any.generic-arbitrary ==0.2.2,
|
||||||
|
any.generically ==0.1.1,
|
||||||
|
any.ghc-bignum ==1.3,
|
||||||
|
any.ghc-boot-th ==9.4.8,
|
||||||
|
any.ghc-byteorder ==4.11.0.0.10,
|
||||||
|
any.ghc-prim ==0.9.1,
|
||||||
|
any.happy ==1.20.1.1,
|
||||||
|
any.hashable ==1.4.3.0,
|
||||||
|
hashable +integer-gmp -random-initial-seed,
|
||||||
|
any.haskell-lexer ==1.1.1,
|
||||||
|
any.haskus-utils-data ==1.4,
|
||||||
|
any.haskus-utils-types ==1.5.1,
|
||||||
|
any.haskus-utils-variant ==3.3,
|
||||||
|
any.heaps ==0.4,
|
||||||
|
any.hsc2hs ==0.68.8,
|
||||||
|
hsc2hs -in-ghc-tree,
|
||||||
|
any.hspec ==2.10.10,
|
||||||
|
any.hspec-core ==2.10.10,
|
||||||
|
any.hspec-discover ==2.10.10,
|
||||||
|
any.hspec-expectations ==0.8.2,
|
||||||
|
any.hspec-golden-aeson ==0.9.0.0,
|
||||||
|
any.http-io-streams ==0.1.7.0,
|
||||||
|
http-io-streams -brotli +fast-xor,
|
||||||
|
any.indexed-profunctors ==0.1.1.1,
|
||||||
|
any.indexed-traversable ==0.1.3,
|
||||||
|
any.indexed-traversable-instances ==0.1.1.2,
|
||||||
|
any.integer-conversion ==0.1.0.1,
|
||||||
|
any.integer-logarithms ==1.0.3.1,
|
||||||
|
integer-logarithms -check-bounds +integer-gmp,
|
||||||
|
any.io-streams ==1.5.2.2,
|
||||||
|
io-streams +network -nointeractivetests +zlib,
|
||||||
|
any.language-c ==0.9.3,
|
||||||
|
language-c -allwarnings +iecfpextension +usebytestrings,
|
||||||
|
any.libyaml-streamly ==0.2.2.1,
|
||||||
|
libyaml-streamly -no-unicode +system-libyaml,
|
||||||
|
any.lockfree-queue ==0.2.4,
|
||||||
|
any.lukko ==0.1.1.3,
|
||||||
|
lukko +ofd-locking,
|
||||||
|
any.lzma-static ==5.2.5.5,
|
||||||
|
any.megaparsec ==9.2.2,
|
||||||
|
megaparsec -dev,
|
||||||
|
any.microlens ==0.4.13.1,
|
||||||
|
any.microlens-mtl ==0.2.0.3,
|
||||||
|
any.microlens-th ==0.4.3.14,
|
||||||
|
any.monad-control ==1.0.3.1,
|
||||||
|
any.mono-traversable ==1.0.17.0,
|
||||||
|
any.mtl ==2.2.2,
|
||||||
|
any.mtl-compat ==0.2.2,
|
||||||
|
mtl-compat -two-point-one -two-point-two,
|
||||||
|
any.network ==3.1.4.0,
|
||||||
|
network -devel,
|
||||||
|
any.network-uri ==2.6.4.2,
|
||||||
|
any.openssl-streams ==1.2.3.0,
|
||||||
|
any.optics ==0.4.2.1,
|
||||||
|
any.optics-core ==0.4.1.1,
|
||||||
|
optics-core -explicit-generic-labels,
|
||||||
|
any.optics-extra ==0.4.2.1,
|
||||||
|
any.optics-th ==0.4.1,
|
||||||
|
any.optparse-applicative ==0.17.1.0,
|
||||||
|
optparse-applicative +process,
|
||||||
|
any.os-release ==1.0.2.1,
|
||||||
|
os-release -devel,
|
||||||
|
any.parsec ==3.1.16.1,
|
||||||
|
any.parser-combinators ==1.3.0,
|
||||||
|
parser-combinators -dev,
|
||||||
|
any.pretty ==1.1.3.6,
|
||||||
|
any.pretty-terminal ==0.1.0.0,
|
||||||
|
any.primitive ==0.8.0.0,
|
||||||
|
any.process ==1.6.18.0,
|
||||||
|
any.profunctors ==5.6.2,
|
||||||
|
any.quickcheck-arbitrary-adt ==0.3.1.0,
|
||||||
|
any.quickcheck-io ==0.2.0,
|
||||||
|
any.random ==1.2.1.2,
|
||||||
|
any.recursion-schemes ==5.2.2.5,
|
||||||
|
recursion-schemes +template-haskell,
|
||||||
|
any.regex-base ==0.94.0.2,
|
||||||
|
any.regex-posix ==0.96.0.1,
|
||||||
|
regex-posix -_regex-posix-clib,
|
||||||
|
any.resourcet ==1.2.6,
|
||||||
|
any.retry ==0.9.3.1,
|
||||||
|
retry -lib-werror,
|
||||||
|
any.rts ==1.0.2,
|
||||||
|
any.safe ==0.3.21,
|
||||||
|
any.safe-exceptions ==0.1.7.4,
|
||||||
|
any.scientific ==0.3.7.0,
|
||||||
|
scientific -bytestring-builder -integer-simple,
|
||||||
|
any.semialign ==1.3,
|
||||||
|
semialign +semigroupoids,
|
||||||
|
any.semigroupoids ==6.0.0.1,
|
||||||
|
semigroupoids +comonad +containers +contravariant +distributive +tagged +unordered-containers,
|
||||||
|
any.setenv ==0.1.1.3,
|
||||||
|
any.split ==0.2.5,
|
||||||
|
any.splitmix ==0.1.0.5,
|
||||||
|
splitmix -optimised-mixer,
|
||||||
|
any.stm ==2.5.1.0,
|
||||||
|
any.streaming-commons ==0.2.2.6,
|
||||||
|
streaming-commons -use-bytestring-builder,
|
||||||
|
any.streamly ==0.8.3,
|
||||||
|
streamly -debug -dev -fusion-plugin -has-llvm -inspection -limit-build-mem -no-fusion +opt -streamk -streamly-core -use-c-malloc +use-unliftio,
|
||||||
|
any.strict ==0.5,
|
||||||
|
any.strict-base ==0.4.0.0,
|
||||||
|
any.tagged ==0.8.8,
|
||||||
|
tagged +deepseq +transformers,
|
||||||
|
any.tagsoup ==0.14.8,
|
||||||
|
any.tar ==0.6.0.0,
|
||||||
|
any.tasty ==1.5,
|
||||||
|
tasty +unix,
|
||||||
|
any.tasty-hunit ==0.10.1,
|
||||||
|
any.template-haskell ==2.19.0.0,
|
||||||
|
any.temporary ==1.3,
|
||||||
|
any.terminal-progress-bar ==0.4.2,
|
||||||
|
any.terminal-size ==0.3.4,
|
||||||
|
any.terminfo ==0.4.1.5,
|
||||||
|
any.text ==2.0.2,
|
||||||
|
any.text-binary ==0.2.1.1,
|
||||||
|
any.text-iso8601 ==0.1,
|
||||||
|
any.text-short ==0.1.5,
|
||||||
|
text-short -asserts,
|
||||||
|
any.text-zipper ==0.13,
|
||||||
|
any.tf-random ==0.5,
|
||||||
|
any.th-abstraction ==0.6.0.0,
|
||||||
|
any.th-compat ==0.1.4,
|
||||||
|
any.th-lift ==0.8.4,
|
||||||
|
any.th-lift-instances ==0.1.20,
|
||||||
|
any.these ==1.2,
|
||||||
|
any.time ==1.11.1.2,
|
||||||
|
any.time-compat ==1.9.6.1,
|
||||||
|
time-compat -old-locale,
|
||||||
|
any.transformers ==0.5.6.2,
|
||||||
|
any.transformers-base ==0.4.6,
|
||||||
|
transformers-base +orphaninstances,
|
||||||
|
any.transformers-compat ==0.7.2,
|
||||||
|
transformers-compat -five +five-three -four +generic-deriving +mtl -three -two,
|
||||||
|
any.typed-process ==0.2.11.1,
|
||||||
|
any.unicode-data ==0.3.1,
|
||||||
|
unicode-data -ucd2haskell,
|
||||||
|
any.unix ==2.8.5.0,
|
||||||
|
unix -os-string,
|
||||||
|
any.unix-bytestring ==0.3.7.8,
|
||||||
|
any.unix-compat ==0.7.1,
|
||||||
|
unix-compat -old-time,
|
||||||
|
any.unliftio-core ==0.2.1.0,
|
||||||
|
any.unordered-containers ==0.2.20,
|
||||||
|
unordered-containers -debug,
|
||||||
|
any.uri-bytestring ==0.3.3.1,
|
||||||
|
uri-bytestring -lib-werror,
|
||||||
|
any.utf8-string ==1.0.2,
|
||||||
|
any.uuid-types ==1.0.5.1,
|
||||||
|
any.vector ==0.13.1.0,
|
||||||
|
vector +boundschecks -internalchecks -unsafechecks -wall,
|
||||||
|
any.vector-algorithms ==0.9.0.1,
|
||||||
|
vector-algorithms +bench +boundschecks -internalchecks -llvm +properties -unsafechecks,
|
||||||
|
any.vector-binary-instances ==0.2.5.2,
|
||||||
|
any.vector-stream ==0.1.0.1,
|
||||||
|
any.versions ==6.0.6,
|
||||||
|
any.vty ==6.2,
|
||||||
|
any.vty-crossplatform ==0.4.0.0,
|
||||||
|
vty-crossplatform -demos,
|
||||||
|
any.vty-unix ==0.2.0.0,
|
||||||
|
any.witherable ==0.4.2,
|
||||||
|
any.word-wrap ==0.5,
|
||||||
|
any.word8 ==0.1.3,
|
||||||
|
any.xor ==0.0.1.2,
|
||||||
|
any.yaml-streamly ==0.12.4,
|
||||||
|
yaml-streamly +no-examples +no-exe,
|
||||||
|
any.zip ==2.0.0,
|
||||||
|
zip -dev -disable-bzip2 -disable-zstd,
|
||||||
|
any.zlib ==0.6.3.0,
|
||||||
|
zlib -bundled-c-zlib -non-blocking-ffi -pkg-config,
|
||||||
|
any.zlib-bindings ==0.1.1.5,
|
||||||
|
any.zstd ==0.1.3.0,
|
||||||
|
zstd +standalone
|
||||||
|
index-state: hackage.haskell.org 2024-03-13T09:43:35Z
|
61
cabal.ghc948.Win32.project
Normal file
61
cabal.ghc948.Win32.project
Normal file
@ -0,0 +1,61 @@
|
|||||||
|
packages: ./ghcup.cabal
|
||||||
|
|
||||||
|
optional-packages: ./vendored/*/*.cabal
|
||||||
|
|
||||||
|
if impl(ghc < 9.0)
|
||||||
|
package ghcup
|
||||||
|
flags: +tui -tar
|
||||||
|
else
|
||||||
|
package ghcup
|
||||||
|
flags: +tui +tar
|
||||||
|
|
||||||
|
constraints: http-io-streams -brotli,
|
||||||
|
any.aeson >= 2.0.1.0,
|
||||||
|
any.hsc2hs ==0.68.8,
|
||||||
|
bzlib-conduit >= 0.3.0.3,
|
||||||
|
bz2 >= 1.0.1.1,
|
||||||
|
bzlib >= 0.5.2.0,
|
||||||
|
directory >= 1.3.8.3,
|
||||||
|
filepath == 1.4.101.0 || == 1.4.300.1 || >= 1.5.2.0
|
||||||
|
|
||||||
|
if os(mingw32)
|
||||||
|
constraints: zlib +bundled-c-zlib,
|
||||||
|
lzma +static,
|
||||||
|
text -simdutf,
|
||||||
|
vty-windows >=0.2.0.2
|
||||||
|
|
||||||
|
if impl(ghc >= 9.4)
|
||||||
|
constraints: language-c >= 0.9.3
|
||||||
|
|
||||||
|
|
||||||
|
source-repository-package
|
||||||
|
type: git
|
||||||
|
location: https://github.com/haskell/tar.git
|
||||||
|
tag: d94a988be4311b830149a9f8fc16739927e5fc1c
|
||||||
|
|
||||||
|
source-repository-package
|
||||||
|
type: git
|
||||||
|
location: https://github.com/hasufell/uri-bytestring.git
|
||||||
|
tag: 4fb5ed14b500c192e6e7a97f6b2b1eb478806001
|
||||||
|
|
||||||
|
package libarchive
|
||||||
|
flags: -system-libarchive
|
||||||
|
|
||||||
|
package aeson-pretty
|
||||||
|
flags: +lib-only
|
||||||
|
|
||||||
|
package cabal-plan
|
||||||
|
flags: -exe
|
||||||
|
|
||||||
|
package aeson
|
||||||
|
flags: +ordered-keymap
|
||||||
|
|
||||||
|
package streamly
|
||||||
|
flags: +use-unliftio
|
||||||
|
|
||||||
|
package *
|
||||||
|
test-show-details: direct
|
||||||
|
|
||||||
|
allow-newer: cabal-install-parsers:tar, streamly:Win32
|
||||||
|
|
||||||
|
|
256
cabal.ghc948.Win32.project.freeze
Normal file
256
cabal.ghc948.Win32.project.freeze
Normal file
@ -0,0 +1,256 @@
|
|||||||
|
active-repositories: hackage.haskell.org:merge
|
||||||
|
constraints: any.Cabal ==3.10.2.1,
|
||||||
|
any.Cabal-syntax ==3.10.2.0,
|
||||||
|
any.HUnit ==1.6.2.0,
|
||||||
|
any.OneTuple ==0.4.1.1,
|
||||||
|
any.QuickCheck ==2.14.3,
|
||||||
|
QuickCheck -old-random +templatehaskell,
|
||||||
|
any.StateVar ==1.2.2,
|
||||||
|
any.Win32 ==2.12.0.1 || ==2.13.4.0,
|
||||||
|
any.abstract-deque ==0.3,
|
||||||
|
abstract-deque -usecas,
|
||||||
|
any.aeson ==2.2.1.0,
|
||||||
|
aeson +ordered-keymap,
|
||||||
|
any.aeson-pretty ==0.8.10,
|
||||||
|
aeson-pretty +lib-only,
|
||||||
|
any.alex ==3.5.1.0,
|
||||||
|
any.ansi-terminal ==1.0.2,
|
||||||
|
ansi-terminal -example,
|
||||||
|
any.ansi-terminal-types ==0.11.5,
|
||||||
|
any.ansi-wl-pprint ==0.6.9,
|
||||||
|
ansi-wl-pprint -example,
|
||||||
|
any.array ==0.5.4.0,
|
||||||
|
any.assoc ==1.1,
|
||||||
|
assoc +tagged,
|
||||||
|
any.async ==2.2.5,
|
||||||
|
async -bench,
|
||||||
|
any.atomic-primops ==0.8.5,
|
||||||
|
atomic-primops -debug,
|
||||||
|
any.attoparsec ==0.14.4,
|
||||||
|
attoparsec -developer,
|
||||||
|
any.base ==4.17.2.1,
|
||||||
|
any.base-compat ==0.13.1,
|
||||||
|
any.base-orphans ==0.9.1,
|
||||||
|
any.base16-bytestring ==1.0.2.0,
|
||||||
|
any.bifunctors ==5.6.1,
|
||||||
|
bifunctors +tagged,
|
||||||
|
any.bimap ==0.5.0,
|
||||||
|
any.binary ==0.8.9.1,
|
||||||
|
any.binary-instances ==1.0.4,
|
||||||
|
any.binary-orphans ==1.0.4.1,
|
||||||
|
any.bindings-DSL ==1.0.25,
|
||||||
|
any.bitvec ==1.1.5.0,
|
||||||
|
bitvec +simd,
|
||||||
|
any.blaze-builder ==0.4.2.3,
|
||||||
|
any.brick ==2.1.1,
|
||||||
|
brick -demos,
|
||||||
|
any.bytestring ==0.11.5.3,
|
||||||
|
any.bz2 ==1.0.1.1,
|
||||||
|
bz2 -cross +with-bzlib,
|
||||||
|
any.bzip2-clib ==1.0.8,
|
||||||
|
any.bzlib-conduit ==0.3.0.3,
|
||||||
|
any.c2hs ==0.28.8,
|
||||||
|
c2hs +base3 -regression,
|
||||||
|
any.cabal-install-parsers ==0.6.1.1,
|
||||||
|
any.cabal-plan ==0.7.3.0,
|
||||||
|
cabal-plan -_ -exe -license-report,
|
||||||
|
any.call-stack ==0.4.0,
|
||||||
|
any.case-insensitive ==1.2.1.0,
|
||||||
|
any.casing ==0.1.4.1,
|
||||||
|
any.cereal ==0.5.8.3,
|
||||||
|
cereal -bytestring-builder,
|
||||||
|
any.colour ==2.3.6,
|
||||||
|
any.comonad ==5.0.8,
|
||||||
|
comonad +containers +distributive +indexed-traversable,
|
||||||
|
any.conduit ==1.3.5,
|
||||||
|
any.conduit-extra ==1.3.6,
|
||||||
|
any.conduit-zstd ==0.0.2.0,
|
||||||
|
any.config-ini ==0.2.7.0,
|
||||||
|
config-ini -enable-doctests,
|
||||||
|
any.containers ==0.6.7,
|
||||||
|
any.contravariant ==1.5.5,
|
||||||
|
contravariant +semigroups +statevar +tagged,
|
||||||
|
any.cryptohash-sha256 ==0.11.102.1,
|
||||||
|
cryptohash-sha256 -exe +use-cbits,
|
||||||
|
any.data-clist ==0.2,
|
||||||
|
any.data-default-class ==0.1.2.0,
|
||||||
|
any.data-fix ==0.3.2,
|
||||||
|
any.deepseq ==1.4.8.0,
|
||||||
|
any.digest ==0.0.2.1,
|
||||||
|
digest -have_arm64_crc32c -have_builtin_prefetch -have_mm_prefetch -have_sse42 -have_strong_getauxval -have_weak_getauxval +pkg-config,
|
||||||
|
any.directory ==1.3.7.1 || ==1.3.8.3,
|
||||||
|
directory -os-string,
|
||||||
|
any.disk-free-space ==0.1.0.1,
|
||||||
|
any.distributive ==0.6.2.1,
|
||||||
|
distributive +semigroups +tagged,
|
||||||
|
any.dlist ==1.0,
|
||||||
|
dlist -werror,
|
||||||
|
any.exceptions ==0.10.5,
|
||||||
|
any.file-uri ==0.1.0.0,
|
||||||
|
any.filepath ==1.4.2.2 || ==1.4.101.0,
|
||||||
|
filepath -cpphs,
|
||||||
|
any.foldable1-classes-compat ==0.1,
|
||||||
|
foldable1-classes-compat +tagged,
|
||||||
|
any.free ==5.2,
|
||||||
|
any.fusion-plugin-types ==0.1.0,
|
||||||
|
any.generic-arbitrary ==0.2.2,
|
||||||
|
any.generically ==0.1.1,
|
||||||
|
any.ghc-bignum ==1.3,
|
||||||
|
any.ghc-boot-th ==9.4.8,
|
||||||
|
any.ghc-prim ==0.9.1,
|
||||||
|
any.happy ==1.20.1.1,
|
||||||
|
any.hashable ==1.4.3.0,
|
||||||
|
hashable +integer-gmp -random-initial-seed,
|
||||||
|
any.haskell-lexer ==1.1.1,
|
||||||
|
any.haskus-utils-data ==1.4,
|
||||||
|
any.haskus-utils-types ==1.5.1,
|
||||||
|
any.haskus-utils-variant ==3.3,
|
||||||
|
any.heaps ==0.4,
|
||||||
|
any.hsc2hs ==0.68.8,
|
||||||
|
hsc2hs -in-ghc-tree,
|
||||||
|
any.hspec ==2.10.10,
|
||||||
|
any.hspec-core ==2.10.10,
|
||||||
|
any.hspec-discover ==2.10.10,
|
||||||
|
any.hspec-expectations ==0.8.2,
|
||||||
|
any.hspec-golden-aeson ==0.9.0.0,
|
||||||
|
any.indexed-profunctors ==0.1.1.1,
|
||||||
|
any.indexed-traversable ==0.1.3,
|
||||||
|
any.indexed-traversable-instances ==0.1.1.2,
|
||||||
|
any.integer-conversion ==0.1.0.1,
|
||||||
|
any.integer-logarithms ==1.0.3.1,
|
||||||
|
integer-logarithms -check-bounds +integer-gmp,
|
||||||
|
any.language-c ==0.9.3,
|
||||||
|
language-c -allwarnings +iecfpextension +usebytestrings,
|
||||||
|
any.libyaml-clib ==0.2.5,
|
||||||
|
any.libyaml-streamly ==0.2.2.1,
|
||||||
|
libyaml-streamly -no-unicode -system-libyaml,
|
||||||
|
any.lockfree-queue ==0.2.4,
|
||||||
|
any.lukko ==0.1.1.3,
|
||||||
|
lukko +ofd-locking,
|
||||||
|
any.lzma-static ==5.2.5.5,
|
||||||
|
any.megaparsec ==9.2.2,
|
||||||
|
megaparsec -dev,
|
||||||
|
any.microlens ==0.4.13.1,
|
||||||
|
any.microlens-mtl ==0.2.0.3,
|
||||||
|
any.microlens-th ==0.4.3.14,
|
||||||
|
any.monad-control ==1.0.3.1,
|
||||||
|
any.mono-traversable ==1.0.17.0,
|
||||||
|
any.mtl ==2.2.2,
|
||||||
|
any.mtl-compat ==0.2.2,
|
||||||
|
mtl-compat -two-point-one -two-point-two,
|
||||||
|
any.network ==3.1.4.0,
|
||||||
|
network -devel,
|
||||||
|
any.network-uri ==2.6.4.2,
|
||||||
|
any.optics ==0.4.2.1,
|
||||||
|
any.optics-core ==0.4.1.1,
|
||||||
|
optics-core -explicit-generic-labels,
|
||||||
|
any.optics-extra ==0.4.2.1,
|
||||||
|
any.optics-th ==0.4.1,
|
||||||
|
any.optparse-applicative ==0.17.1.0,
|
||||||
|
optparse-applicative +process,
|
||||||
|
any.os-release ==1.0.2.1,
|
||||||
|
os-release -devel,
|
||||||
|
any.parsec ==3.1.16.1,
|
||||||
|
any.parser-combinators ==1.3.0,
|
||||||
|
parser-combinators -dev,
|
||||||
|
any.pretty ==1.1.3.6,
|
||||||
|
any.pretty-terminal ==0.1.0.0,
|
||||||
|
any.primitive ==0.8.0.0,
|
||||||
|
any.process ==1.6.18.0,
|
||||||
|
any.profunctors ==5.6.2,
|
||||||
|
any.quickcheck-arbitrary-adt ==0.3.1.0,
|
||||||
|
any.quickcheck-io ==0.2.0,
|
||||||
|
any.random ==1.2.1.2,
|
||||||
|
any.recursion-schemes ==5.2.2.5,
|
||||||
|
recursion-schemes +template-haskell,
|
||||||
|
any.regex-base ==0.94.0.2,
|
||||||
|
any.regex-posix ==0.96.0.1,
|
||||||
|
regex-posix -_regex-posix-clib,
|
||||||
|
any.regex-posix-clib ==2.7,
|
||||||
|
any.resourcet ==1.2.6,
|
||||||
|
any.retry ==0.9.3.1,
|
||||||
|
retry -lib-werror,
|
||||||
|
any.rts ==1.0.2,
|
||||||
|
any.safe ==0.3.21,
|
||||||
|
any.safe-exceptions ==0.1.7.4,
|
||||||
|
any.scientific ==0.3.7.0,
|
||||||
|
scientific -bytestring-builder -integer-simple,
|
||||||
|
any.semialign ==1.3,
|
||||||
|
semialign +semigroupoids,
|
||||||
|
any.semigroupoids ==6.0.0.1,
|
||||||
|
semigroupoids +comonad +containers +contravariant +distributive +tagged +unordered-containers,
|
||||||
|
any.setenv ==0.1.1.3,
|
||||||
|
any.split ==0.2.5,
|
||||||
|
any.splitmix ==0.1.0.5,
|
||||||
|
splitmix -optimised-mixer,
|
||||||
|
any.stm ==2.5.1.0,
|
||||||
|
any.streaming-commons ==0.2.2.6,
|
||||||
|
streaming-commons -use-bytestring-builder,
|
||||||
|
any.streamly ==0.8.3,
|
||||||
|
streamly -debug -dev -fusion-plugin -has-llvm -inspection -limit-build-mem -no-fusion +opt -streamk -streamly-core -use-c-malloc +use-unliftio,
|
||||||
|
any.strict ==0.5,
|
||||||
|
any.strict-base ==0.4.0.0,
|
||||||
|
any.tagged ==0.8.8,
|
||||||
|
tagged +deepseq +transformers,
|
||||||
|
any.tagsoup ==0.14.8,
|
||||||
|
any.tar ==0.6.0.0,
|
||||||
|
any.tasty ==1.5,
|
||||||
|
tasty +unix,
|
||||||
|
any.tasty-hunit ==0.10.1,
|
||||||
|
any.template-haskell ==2.19.0.0,
|
||||||
|
any.temporary ==1.3,
|
||||||
|
any.text ==2.0.2,
|
||||||
|
any.text-binary ==0.2.1.1,
|
||||||
|
any.text-iso8601 ==0.1,
|
||||||
|
any.text-short ==0.1.5,
|
||||||
|
text-short -asserts,
|
||||||
|
any.text-zipper ==0.13,
|
||||||
|
any.tf-random ==0.5,
|
||||||
|
any.th-abstraction ==0.6.0.0,
|
||||||
|
any.th-compat ==0.1.4,
|
||||||
|
any.th-lift ==0.8.4,
|
||||||
|
any.th-lift-instances ==0.1.20,
|
||||||
|
any.these ==1.2,
|
||||||
|
any.time ==1.11.1.2 || ==1.12.2,
|
||||||
|
any.time-compat ==1.9.6.1,
|
||||||
|
time-compat -old-locale,
|
||||||
|
any.transformers ==0.5.6.2,
|
||||||
|
any.transformers-base ==0.4.6,
|
||||||
|
transformers-base +orphaninstances,
|
||||||
|
any.transformers-compat ==0.7.2,
|
||||||
|
transformers-compat -five +five-three -four +generic-deriving +mtl -three -two,
|
||||||
|
any.typed-process ==0.2.11.1,
|
||||||
|
any.unicode-data ==0.3.1,
|
||||||
|
unicode-data -ucd2haskell,
|
||||||
|
any.unix-compat ==0.7.1,
|
||||||
|
unix-compat -old-time,
|
||||||
|
any.unliftio-core ==0.2.1.0,
|
||||||
|
any.unordered-containers ==0.2.20,
|
||||||
|
unordered-containers -debug,
|
||||||
|
any.uri-bytestring ==0.3.3.1,
|
||||||
|
uri-bytestring -lib-werror,
|
||||||
|
any.utf8-string ==1.0.2,
|
||||||
|
any.uuid-types ==1.0.5.1,
|
||||||
|
any.vector ==0.13.1.0,
|
||||||
|
vector +boundschecks -internalchecks -unsafechecks -wall,
|
||||||
|
any.vector-algorithms ==0.9.0.1,
|
||||||
|
vector-algorithms +bench +boundschecks -internalchecks -llvm +properties -unsafechecks,
|
||||||
|
any.vector-binary-instances ==0.2.5.2,
|
||||||
|
any.vector-stream ==0.1.0.1,
|
||||||
|
any.versions ==6.0.6,
|
||||||
|
any.vty ==6.2,
|
||||||
|
any.vty-crossplatform ==0.4.0.0,
|
||||||
|
vty-crossplatform -demos,
|
||||||
|
any.vty-windows ==0.2.0.2,
|
||||||
|
any.witherable ==0.4.2,
|
||||||
|
any.word-wrap ==0.5,
|
||||||
|
any.word8 ==0.1.3,
|
||||||
|
any.yaml-streamly ==0.12.4,
|
||||||
|
yaml-streamly +no-examples +no-exe,
|
||||||
|
any.zip ==2.0.0,
|
||||||
|
zip -dev -disable-bzip2 -disable-zstd,
|
||||||
|
any.zlib ==0.6.3.0,
|
||||||
|
zlib +bundled-c-zlib -non-blocking-ffi -pkg-config,
|
||||||
|
any.zstd ==0.1.3.0,
|
||||||
|
zstd +standalone
|
||||||
|
index-state: hackage.haskell.org 2024-03-15T23:51:46Z
|
8
cabal.ghc948.project
Normal file
8
cabal.ghc948.project
Normal file
@ -0,0 +1,8 @@
|
|||||||
|
if os(mingw32)
|
||||||
|
import: cabal.ghc948.Win32.project
|
||||||
|
import: cabal.ghc948.Win32.project.freeze
|
||||||
|
else
|
||||||
|
import: cabal.ghc948.Unix.project
|
||||||
|
import: cabal.ghc948.Unix.project.freeze
|
||||||
|
|
||||||
|
with-compiler: ghc-9.4.8
|
@ -2,16 +2,41 @@ packages: ./ghcup.cabal
|
|||||||
|
|
||||||
optional-packages: ./vendored/*/*.cabal
|
optional-packages: ./vendored/*/*.cabal
|
||||||
|
|
||||||
|
if impl(ghc < 9.0)
|
||||||
package ghcup
|
package ghcup
|
||||||
flags: +tui
|
flags: +tui -tar
|
||||||
|
else
|
||||||
|
package ghcup
|
||||||
|
flags: +tui +tar
|
||||||
|
|
||||||
constraints: http-io-streams -brotli,
|
constraints: http-io-streams -brotli,
|
||||||
any.aeson >= 2.0.1.0
|
any.aeson >= 2.0.1.0,
|
||||||
|
any.hsc2hs ==0.68.8,
|
||||||
|
bzlib-conduit >= 0.3.0.3,
|
||||||
|
bz2 >= 1.0.1.1,
|
||||||
|
bzlib >= 0.5.2.0,
|
||||||
|
directory >= 1.3.8.3,
|
||||||
|
filepath == 1.4.101.0 || == 1.4.300.1 || >= 1.5.2.0
|
||||||
|
|
||||||
|
if os(mingw32)
|
||||||
|
constraints: zlib +bundled-c-zlib,
|
||||||
|
lzma +static,
|
||||||
|
text -simdutf,
|
||||||
|
vty-windows >=0.2.0.2
|
||||||
|
|
||||||
|
if impl(ghc >= 9.4)
|
||||||
|
constraints: language-c >= 0.9.3
|
||||||
|
|
||||||
|
|
||||||
source-repository-package
|
source-repository-package
|
||||||
type: git
|
type: git
|
||||||
location: https://github.com/fosskers/versions.git
|
location: https://github.com/haskell/tar.git
|
||||||
tag: 7bc3355348aac3510771d4622aff09ac38c9924d
|
tag: d94a988be4311b830149a9f8fc16739927e5fc1c
|
||||||
|
|
||||||
|
source-repository-package
|
||||||
|
type: git
|
||||||
|
location: https://github.com/hasufell/uri-bytestring.git
|
||||||
|
tag: 4fb5ed14b500c192e6e7a97f6b2b1eb478806001
|
||||||
|
|
||||||
package libarchive
|
package libarchive
|
||||||
flags: -system-libarchive
|
flags: -system-libarchive
|
||||||
@ -30,3 +55,6 @@ package streamly
|
|||||||
|
|
||||||
package *
|
package *
|
||||||
test-show-details: direct
|
test-show-details: direct
|
||||||
|
|
||||||
|
allow-newer: cabal-install-parsers:tar, streamly:Win32
|
||||||
|
|
||||||
|
@ -1,2 +0,0 @@
|
|||||||
-- windows picks weird version
|
|
||||||
constraints: any.hsc2hs ==0.68.8
|
|
@ -5,7 +5,7 @@ optional-packages: ./vendored/*/*.cabal
|
|||||||
optimization: 2
|
optimization: 2
|
||||||
|
|
||||||
package ghcup
|
package ghcup
|
||||||
flags: +tui
|
flags: +tui -tar
|
||||||
|
|
||||||
if os(linux)
|
if os(linux)
|
||||||
if arch(x86_64) || arch(i386)
|
if arch(x86_64) || arch(i386)
|
||||||
@ -18,20 +18,30 @@ elif os(mingw32)
|
|||||||
constraints: zlib +bundled-c-zlib,
|
constraints: zlib +bundled-c-zlib,
|
||||||
lzma +static,
|
lzma +static,
|
||||||
text -simdutf,
|
text -simdutf,
|
||||||
vty-windows >=0.1.0.3
|
vty-windows >=0.2.0.2
|
||||||
|
if impl(ghc >= 9.4)
|
||||||
|
constraints: language-c >= 0.9.3
|
||||||
elif os(freebsd)
|
elif os(freebsd)
|
||||||
constraints: zlib +bundled-c-zlib,
|
constraints: zlib +bundled-c-zlib,
|
||||||
zip +disable-zstd
|
zip +disable-zstd
|
||||||
package *
|
package *
|
||||||
ghc-options: -split-sections -pgmc clang++14
|
ghc-options: -split-sections
|
||||||
|
|
||||||
constraints: http-io-streams -brotli,
|
constraints: http-io-streams -brotli,
|
||||||
any.aeson >= 2.0.1.0,
|
any.aeson >= 2.0.1.0,
|
||||||
any.hsc2hs ==0.68.8
|
any.hsc2hs ==0.68.8,
|
||||||
|
bzlib-conduit >= 0.3.0.3,
|
||||||
|
bz2 >= 1.0.1.1,
|
||||||
|
bzlib >= 0.5.2.0,
|
||||||
|
directory >= 1.3.8.3,
|
||||||
|
filepath == 1.4.101.0 || == 1.4.300.1 || >= 1.5.2.0
|
||||||
|
|
||||||
package libarchive
|
package libarchive
|
||||||
flags: -system-libarchive
|
flags: -system-libarchive
|
||||||
|
|
||||||
|
package libyaml-streamly
|
||||||
|
flags: -system-libyaml
|
||||||
|
|
||||||
package aeson-pretty
|
package aeson-pretty
|
||||||
flags: +lib-only
|
flags: +lib-only
|
||||||
|
|
||||||
@ -44,3 +54,15 @@ package aeson
|
|||||||
package streamly
|
package streamly
|
||||||
flags: +use-unliftio
|
flags: +use-unliftio
|
||||||
|
|
||||||
|
source-repository-package
|
||||||
|
type: git
|
||||||
|
location: https://github.com/haskell/tar.git
|
||||||
|
tag: d94a988be4311b830149a9f8fc16739927e5fc1c
|
||||||
|
|
||||||
|
source-repository-package
|
||||||
|
type: git
|
||||||
|
location: https://github.com/hasufell/uri-bytestring.git
|
||||||
|
tag: 4fb5ed14b500c192e6e7a97f6b2b1eb478806001
|
||||||
|
|
||||||
|
allow-newer: cabal-install-parsers:tar, streamly:Win32
|
||||||
|
|
||||||
|
@ -92,7 +92,7 @@ url-source:
|
|||||||
# sha256: b48f3d3a508d0c140d1c801e04afc65e80c0d25e7e939a8a41edb387b26b81b3
|
# sha256: b48f3d3a508d0c140d1c801e04afc65e80c0d25e7e939a8a41edb387b26b81b3
|
||||||
|
|
||||||
# This is a way to override platform detection, e.g. when you're running
|
# This is a way to override platform detection, e.g. when you're running
|
||||||
# a Ubuntu derivate based on 18.04, you could do:
|
# a Ubuntu derivative based on 18.04, you could do:
|
||||||
#
|
#
|
||||||
# platform-override:
|
# platform-override:
|
||||||
# arch: A_64
|
# arch: A_64
|
||||||
@ -128,3 +128,12 @@ mirrors:
|
|||||||
authority:
|
authority:
|
||||||
host: "mirror.sjtu.edu.cn"
|
host: "mirror.sjtu.edu.cn"
|
||||||
|
|
||||||
|
# Arguments to pass to the configure script of the prebuilt bindist.
|
||||||
|
#
|
||||||
|
# Do not pass '--prefix' here.
|
||||||
|
#
|
||||||
|
# GHCup by default passes '--disable-ld-override', so if you want to enable
|
||||||
|
# the vanilla way, which aggressively favors 'ld.gold' linker, add the following:
|
||||||
|
def-ghc-conf-options:
|
||||||
|
- "--enable-ld-override"
|
||||||
|
|
||||||
|
@ -1 +1 @@
|
|||||||
Subproject commit 2efadd4588e387836bcc60974d5807f6b5e49515
|
Subproject commit c9dae0c58799854823e8c41858ca4cc172ef4c8b
|
@ -1,4 +1,4 @@
|
|||||||
FROM --platform=linux/i386 i386/alpine:3.12
|
FROM --platform=linux/i386 i386/alpine:3.16
|
||||||
|
|
||||||
ENV LANG C.UTF-8
|
ENV LANG C.UTF-8
|
||||||
|
|
||||||
@ -37,8 +37,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 +51,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 +63,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
|
||||||
|
|
||||||
|
@ -37,8 +37,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 +52,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 +64,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
|
||||||
|
|
||||||
|
@ -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
|
||||||
|
@ -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
|
||||||
|
@ -1 +0,0 @@
|
|||||||
# Known BUGS
|
|
39
docs/TODO.md
39
docs/TODO.md
@ -1,39 +0,0 @@
|
|||||||
# TODOs and Remarks
|
|
||||||
|
|
||||||
## Now
|
|
||||||
|
|
||||||
* ghcup init?
|
|
||||||
* merge two download files
|
|
||||||
* fetch/unpack functionality
|
|
||||||
* installing multiple versions of the same
|
|
||||||
* post-install
|
|
||||||
|
|
||||||
* proper test suite
|
|
||||||
|
|
||||||
* !! update of 0.1.5 must go in ghcup-0.0.1.json !!
|
|
||||||
|
|
||||||
* try to run exe before upgrade (backup to ~/.ghcup/bin/ghcup.old)
|
|
||||||
* stdout flushing?
|
|
||||||
* resume support (for make-install only)
|
|
||||||
|
|
||||||
## Maybe
|
|
||||||
|
|
||||||
* version ranges in json
|
|
||||||
* sign the JSON? (Or check gpg keys?)
|
|
||||||
* testing (especially distro detection -> unit tests)
|
|
||||||
|
|
||||||
## Later
|
|
||||||
|
|
||||||
* add support for RC/alpha/HEAD versions
|
|
||||||
|
|
||||||
## Cleanups
|
|
||||||
|
|
||||||
* avoid alternative for IO
|
|
||||||
* use plucky or oops instead of Excepts
|
|
||||||
|
|
||||||
## Questions
|
|
||||||
|
|
||||||
* move out GHCup.Version module, bc it's not library-ish?
|
|
||||||
* mirror support
|
|
||||||
* interactive handling when distro doesn't exist and we know the tarball is incompatible?
|
|
||||||
* ghcup-with wrapper to execute a command with a given ghc in PATH?
|
|
@ -40,6 +40,80 @@ All you wanted to know about GHCup.
|
|||||||
* [haskell.org](https://www.haskell.org/haskell-org-committee/) via CI and infrastructure
|
* [haskell.org](https://www.haskell.org/haskell-org-committee/) via CI and infrastructure
|
||||||
* [Haskell Foundation](https://haskell.foundation/affiliates/) via affiliation
|
* [Haskell Foundation](https://haskell.foundation/affiliates/) via affiliation
|
||||||
|
|
||||||
|
## Project ownership and hierarchy
|
||||||
|
|
||||||
|
The project at the time of writing (2024-04-22) follows the model of
|
||||||
|
[benevolent dictator for life](https://en.wikipedia.org/wiki/Benevolent_dictator_for_life), which is
|
||||||
|
Julian Ospald at the moment.
|
||||||
|
|
||||||
|
Ideally, the ownership should be shared across a core team of collaborators sharing the same vision and
|
||||||
|
engagement in the future.
|
||||||
|
|
||||||
|
I do not believe in people making decisions over projects they are barely involved in. Instead I believe
|
||||||
|
in listening to end users needs very carefully and making decisions based on that. People who want a direct
|
||||||
|
influence on the decision process have to both demonstrate they share the vision of GHCup and do the actual
|
||||||
|
work.
|
||||||
|
|
||||||
|
"Work" here doesn't have to be "writing code". There are many ways to be engaged in a project.
|
||||||
|
|
||||||
|
### Transition plan in case of maintainer absence
|
||||||
|
|
||||||
|
In case the current maintainer of GHCup (Julian Ospald) is unreachable for a prolonged period of time (3 months),
|
||||||
|
the ownership of this project will be automatically transferred to the following individuals:
|
||||||
|
|
||||||
|
- [Moritz Angerman](https://github.com/angerman)
|
||||||
|
- [Andrew Lelechenko](https://github.com/Bodigrim)
|
||||||
|
|
||||||
|
They will be tasked with finding new maintainers in whatever way they see fit (be it appointing themselves or asking HF for help).
|
||||||
|
|
||||||
|
The appointed owners may choose to stay owners after the transition period (whether it's in a passive or active capacity) or
|
||||||
|
fully transfer ownership to someone else or an organization.
|
||||||
|
|
||||||
|
The community shall be informed about this process.
|
||||||
|
|
||||||
|
If not otherwise specified by the newly appointed owners, the following principles shall apply to the *transition period*:
|
||||||
|
|
||||||
|
#### During the transition period
|
||||||
|
|
||||||
|
During the transition period, no other individual or organization is allowed to drive changes to
|
||||||
|
[ghcup-hs](https://github.com/haskell/ghcup-hs) repository, unless they are explicitly allowed to do so by the appointed owners.
|
||||||
|
|
||||||
|
The following people (in addition to the owners) shall have full write access to the
|
||||||
|
[ghcup-metadata](https://github.com/haskell/ghcup-metadata) repository
|
||||||
|
(all files) for the length of the transition period, unless otherwise specified by the appointed owners:
|
||||||
|
|
||||||
|
- [Ben Gamari](https://github.com/bgamari)
|
||||||
|
- [Hécate Moonlight](https://github.com/Kleidukos)
|
||||||
|
- [Mike Pilgrem](https://github.com/mpilgrem)
|
||||||
|
- [Jens Petersen](https://github.com/juhp)
|
||||||
|
|
||||||
|
Contributions to the metadata are expected to follow a review process. If that turns out to be impractical due to lack of engagement, a wait
|
||||||
|
time of 2 days before merging shall be followed anyway, except for the `-vanilla` files, which may be merged at any time.
|
||||||
|
|
||||||
|
#### Access
|
||||||
|
|
||||||
|
The GHCup website, various scripts and unofficial bindists are hosted on haskell.org infrastructure. Contact the
|
||||||
|
[Haskell.org committee](https://www.haskell.org/haskell-org-committee/) for access.
|
||||||
|
|
||||||
|
The backup owners should already have admin rights on the GHCup repositories, which are hosted on the
|
||||||
|
[Github haskell namespace](https://github.com/haskell). In case of issues contact one of the
|
||||||
|
organization admins for access, e.g.:
|
||||||
|
|
||||||
|
- [Andrew Lelechenko](https://github.com/orgs/haskell/people/Bodigrim)
|
||||||
|
- [gbaz](https://github.com/orgs/haskell/people/gbaz)
|
||||||
|
- [Hécate Moonlight](https://github.com/Kleidukos)
|
||||||
|
- [davean](https://github.com/orgs/haskell/people/davean)
|
||||||
|
- [chessai](https://github.com/orgs/haskell/people/chessai)
|
||||||
|
|
||||||
|
The owners should already have access to the [hackage package](https://hackage.haskell.org/package/ghcup/maintainers/).
|
||||||
|
In case of issues contact the [hackage trustees](https://github.com/haskell-infra/hackage-trustees).
|
||||||
|
|
||||||
|
#### Private runners
|
||||||
|
|
||||||
|
Private runners maintained by Julian Ospald may cease to work. Moritz Angerman will have SSH access to the machines.
|
||||||
|
However, no one will have access to the Hetzner account and billing information. As such, those runners will simply
|
||||||
|
have to be replaced.
|
||||||
|
|
||||||
## How to help
|
## How to help
|
||||||
|
|
||||||
* if you want to contribute code or documentation, check out the [issue tracker](https://github.com/haskell/ghcup-hs/issues) and the [Development guide](./dev.md)
|
* if you want to contribute code or documentation, check out the [issue tracker](https://github.com/haskell/ghcup-hs/issues) and the [Development guide](./dev.md)
|
||||||
@ -113,7 +187,7 @@ cabal-install/HLS/stack are installed in `~/.ghcup/bin/<tool>-<ver>` and have un
|
|||||||
### Custom ghc version names
|
### Custom ghc version names
|
||||||
|
|
||||||
When installing ghc bindists with custom version names as outlined in
|
When installing ghc bindists with custom version names as outlined in
|
||||||
[installing custom bindists](#installing-custom-bindists), then cabal might
|
[installing custom bindists](guide.md#installing-custom-bindists), then cabal might
|
||||||
be unable to find the correct `ghc-pkg` (also see [#73](https://gitlab.haskell.org/haskell/ghcup-hs/-/issues/73))
|
be unable to find the correct `ghc-pkg` (also see [#73](https://gitlab.haskell.org/haskell/ghcup-hs/-/issues/73))
|
||||||
if you use `cabal build --with-compiler=ghc-foo`. Instead, point it to the full path, such as:
|
if you use `cabal build --with-compiler=ghc-foo`. Instead, point it to the full path, such as:
|
||||||
`cabal build --with-compiler=$HOME/.ghcup/ghc/<version-name>/bin/ghc` or set that GHC version
|
`cabal build --with-compiler=$HOME/.ghcup/ghc/<version-name>/bin/ghc` or set that GHC version
|
||||||
|
@ -146,6 +146,14 @@ a:hover {
|
|||||||
color: #996FC2;
|
color: #996FC2;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#toc-collapse a.nav-link {
|
||||||
|
color: var(--link-pink);
|
||||||
|
}
|
||||||
|
|
||||||
|
#toc-collapse a:hover.nav-link {
|
||||||
|
color: #996FC2;
|
||||||
|
}
|
||||||
|
|
||||||
.col-md-9 img.main-logo {
|
.col-md-9 img.main-logo {
|
||||||
border: 0px;
|
border: 0px;
|
||||||
padding: 0px;
|
padding: 0px;
|
||||||
|
24
docs/dev.md
24
docs/dev.md
@ -1,7 +1,27 @@
|
|||||||
# Development
|
# Development and contribution
|
||||||
|
|
||||||
All you wanted to know about GHCup development.
|
All you wanted to know about GHCup development.
|
||||||
|
|
||||||
|
## Building
|
||||||
|
|
||||||
|
GHCup supports development via cabal and stack. E.g.:
|
||||||
|
|
||||||
|
* build via stack: `stack build`
|
||||||
|
* build via cabal (with whatever GHC version): `cabal build`
|
||||||
|
* build via cabal reproducibly with a specific GHC version
|
||||||
|
- GHC 8.10.7: `cabal build --project-file=cabal.ghc8107.project`
|
||||||
|
- GHC 9.0.2: `cabal build --project-file=cabal.ghc902.project`
|
||||||
|
- and so on (check supported versions via `ls cabal.ghc+([0-9]).project`)
|
||||||
|
* build the release binaries: `cabal build --project-file=cabal.project.release`
|
||||||
|
|
||||||
|
## Contribution process and expectations
|
||||||
|
|
||||||
|
* discuss your idea first before implementing anything
|
||||||
|
* GHCup is a dictatorship, so the final decisions are made by the author
|
||||||
|
* we don't manage contributors... you can work on anything you like
|
||||||
|
* reviews focus on logic and design, not on style and formatting
|
||||||
|
* remember that features, decisions and bugs are high impact, since GHCup is used in CIs, github workflows, etc.
|
||||||
|
|
||||||
## Module graph
|
## Module graph
|
||||||
|
|
||||||
[![Module graph](./modules_small.svg){: .center style="width:900px"}](./modules_wide.svg)
|
[![Module graph](./modules_small.svg){: .center style="width:900px"}](./modules_wide.svg)
|
||||||
@ -61,7 +81,7 @@ Some light suggestions:
|
|||||||
3. use `where` a lot, so the main function body reads like prose
|
3. use `where` a lot, so the main function body reads like prose
|
||||||
4. documentation is part of the code
|
4. documentation is part of the code
|
||||||
|
|
||||||
## Common Tasks
|
## Common tasks
|
||||||
|
|
||||||
### Adding a new GHC version
|
### Adding a new GHC version
|
||||||
|
|
||||||
|
277
docs/guide.md
277
docs/guide.md
@ -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
|
||||||
|
|
||||||
@ -79,7 +78,7 @@ Partial configuration is fine. Command line options always override the config f
|
|||||||
|
|
||||||
## Overriding distro detection
|
## Overriding distro detection
|
||||||
|
|
||||||
If you're running e.g. an Ubuntu derivate based on 18.04 and ghcup is picking bindists that
|
If you're running e.g. an Ubuntu derivative based on 18.04 and ghcup is picking bindists that
|
||||||
don't work well, you could do this in `config.yaml`:
|
don't work well, you could do this in `config.yaml`:
|
||||||
|
|
||||||
```yml
|
```yml
|
||||||
@ -95,7 +94,7 @@ platform-override:
|
|||||||
|
|
||||||
This is the complete list of env variables that change GHCup behavior:
|
This is the complete list of env variables that change GHCup behavior:
|
||||||
|
|
||||||
* `GHCUP_USE_XDG_DIRS`: see [XDG support](#xdg-support) above
|
* `GHCUP_USE_XDG_DIRS`: see [XDG support](#xdg-support) below
|
||||||
* `GHCUP_INSTALL_BASE_PREFIX`: the base of ghcup (default: `$HOME`)
|
* `GHCUP_INSTALL_BASE_PREFIX`: the base of ghcup (default: `$HOME`)
|
||||||
* `GHCUP_CURL_OPTS`: additional options that can be passed to curl
|
* `GHCUP_CURL_OPTS`: additional options that can be passed to curl
|
||||||
* `GHCUP_WGET_OPTS`: additional options that can be passed to wget
|
* `GHCUP_WGET_OPTS`: additional options that can be passed to wget
|
||||||
@ -106,6 +105,7 @@ This is the complete list of env variables that change GHCup behavior:
|
|||||||
On windows, there's additionally:
|
On windows, there's additionally:
|
||||||
|
|
||||||
* `GHCUP_MSYS2`: Has to point to the root of an existing MSYS2 installation (when installed by GHCup, that's e.g. `C:\ghcup\msys64`). GHCup bootstrap takes care of this usually.
|
* `GHCUP_MSYS2`: Has to point to the root of an existing MSYS2 installation (when installed by GHCup, that's e.g. `C:\ghcup\msys64`). GHCup bootstrap takes care of this usually.
|
||||||
|
* `GHCUP_MSYS2_ENV`: The [MSYS2 environment](https://www.msys2.org/docs/environments/) to use when executing e.g. `ghcup run --mingw-path`. Possible values are `MSYS`, `UCRT64`, `CLANG64`, `CLANGARM64`, `CLANG32`, `MINGW64`, `MINGW32`. Defaults to `MINGW64`, `MINGW32` or `CLANGARM64`, depending on the architecture. `MSYS` is always added as the last component. If you change this value after running the bootstrap script, you may need to make sure that the cabal config reflects this change, more specifically `extra-prog-path`, `extra-include-dirs` and `extra-lib-dirs`. (**NOTE: specifying anything other than the default is considered experimental**)
|
||||||
|
|
||||||
### XDG support
|
### XDG support
|
||||||
|
|
||||||
@ -142,49 +142,29 @@ If you experience problems, consider clearing the cache via `ghcup gc --cache`.
|
|||||||
|
|
||||||
## Metadata
|
## Metadata
|
||||||
|
|
||||||
The metadata are the files that describe tool versions, where to download them etc. and
|
Metadata files are also called release or distribution channels. They describe tool versions, where to download them etc. and
|
||||||
can be viewed here: [https://github.com/haskell/ghcup-metadata](https://github.com/haskell/ghcup-metadata)
|
can be viewed here: [https://github.com/haskell/ghcup-metadata](https://github.com/haskell/ghcup-metadata).
|
||||||
|
|
||||||
### Mirrors
|
See the [description](https://github.com/haskell/ghcup-metadata#metadata-variants-distribution-channels)
|
||||||
|
of metadata files to understand their purpose. These can be combined.
|
||||||
|
|
||||||
GHCup allows to use custom mirrors/download-info hosted by yourself or 3rd parties.
|
For example, if you want access to both prerelease and cross bindists, you'd do:
|
||||||
|
|
||||||
To use a mirror, set the following option in `~/.ghcup/config.yaml`:
|
|
||||||
|
|
||||||
```yml
|
|
||||||
url-source:
|
|
||||||
- https://some-url/ghcup-0.0.6.yaml
|
|
||||||
```
|
|
||||||
|
|
||||||
See [config.yaml](https://github.com/haskell/ghcup-hs/blob/master/data/config.yaml)
|
|
||||||
for more options.
|
|
||||||
|
|
||||||
Alternatively you can do it via a cli switch:
|
|
||||||
|
|
||||||
```sh
|
```sh
|
||||||
ghcup --url-source=https://some-url/ghcup-0.0.6.yaml list
|
ghcup config add-release-channel https://raw.githubusercontent.com/haskell/ghcup-metadata/master/ghcup-prereleases-0.0.8.yaml
|
||||||
|
ghcup config add-release-channel https://raw.githubusercontent.com/haskell/ghcup-metadata/master/ghcup-cross-0.0.8.yaml
|
||||||
```
|
```
|
||||||
|
|
||||||
#### Known mirrors
|
This results in the following configuration in `~/.ghcup/config.yaml`:
|
||||||
|
|
||||||
1. [https://mirror.sjtu.edu.cn/docs/ghcup](https://mirror.sjtu.edu.cn/docs/ghcup)
|
```yaml
|
||||||
2. [https://mirrors.ustc.edu.cn/help/ghcup.html](https://mirrors.ustc.edu.cn/help/ghcup.html)
|
|
||||||
|
|
||||||
### (Pre-)Release channels
|
|
||||||
|
|
||||||
A release channel is basically just a metadata file location. You can add additional release
|
|
||||||
channels that complement the default one, such as the **prerelease channel** like so:
|
|
||||||
|
|
||||||
```sh
|
|
||||||
ghcup config add-release-channel https://raw.githubusercontent.com/haskell/ghcup-metadata/master/ghcup-prereleases-0.0.7.yaml
|
|
||||||
```
|
|
||||||
|
|
||||||
This will result in `~/.ghcup/config.yaml` to contain this record:
|
|
||||||
|
|
||||||
```yml
|
|
||||||
url-source:
|
url-source:
|
||||||
|
# the base url that contains all the release bindists
|
||||||
- GHCupURL
|
- GHCupURL
|
||||||
- https://raw.githubusercontent.com/haskell/ghcup-metadata/master/ghcup-prereleases-0.0.7.yaml
|
# prereleases
|
||||||
|
- https://raw.githubusercontent.com/haskell/ghcup-metadata/master/ghcup-prereleases-0.0.8.yaml
|
||||||
|
# cross bindists
|
||||||
|
- https://raw.githubusercontent.com/haskell/ghcup-metadata/master/ghcup-cross-0.0.8.yaml
|
||||||
```
|
```
|
||||||
|
|
||||||
You can add as many channels as you like. They are combined under *Last*, so versions from the prerelease channel
|
You can add as many channels as you like. They are combined under *Last*, so versions from the prerelease channel
|
||||||
@ -197,14 +177,65 @@ url-source:
|
|||||||
- GHCupURL
|
- GHCupURL
|
||||||
```
|
```
|
||||||
|
|
||||||
If you want to combine your release channel with a mirror, you'd do it like so:
|
Also see [config.yaml](https://github.com/haskell/ghcup-hs/blob/master/data/config.yaml)
|
||||||
|
for more options.
|
||||||
|
|
||||||
|
You can also use an alternative metadata via the one-shot CLI option:
|
||||||
|
|
||||||
|
```sh
|
||||||
|
ghcup --url-source=https://some-url/ghcup-0.0.8.yaml tui
|
||||||
|
```
|
||||||
|
|
||||||
|
One main caveat of using URLs is that you might need to check whether there are new versions
|
||||||
|
of the file (e.g. `ghcup-0.0.7.yaml` vs `ghcup-0.0.8.yaml`). Although old metadata files
|
||||||
|
are supported for some time, they are not so indefinitely.
|
||||||
|
|
||||||
|
### Mirrors
|
||||||
|
|
||||||
|
Metadata files can also be used to operate 3rd party mirrors, in which case you want to use
|
||||||
|
a URL instead of the `GHCupURL` alias. E.g. in `~/.ghcup/config.yaml`, you'd do:
|
||||||
|
|
||||||
```yml
|
```yml
|
||||||
url-source:
|
url-source:
|
||||||
# base metadata
|
- https://mirror.sjtu.edu.cn/ghcup/yaml/ghcup/data/ghcup-0.0.6.yaml
|
||||||
- "https://mirror.sjtu.edu.cn/ghcup/yaml/ghcup/data/ghcup-0.0.6.yaml"
|
```
|
||||||
# prerelease channel
|
|
||||||
- "https://raw.githubusercontent.com/haskell/ghcup-metadata/master/ghcup-prereleases-0.0.7.yaml"
|
Note that later versions of GHCup allow more sophisticated mirror support, see [here](#mirrors-proper).
|
||||||
|
|
||||||
|
#### Known mirrors
|
||||||
|
|
||||||
|
1. [https://mirror.sjtu.edu.cn/docs/ghcup](https://mirror.sjtu.edu.cn/docs/ghcup)
|
||||||
|
2. [https://mirrors.ustc.edu.cn/help/ghcup.html](https://mirrors.ustc.edu.cn/help/ghcup.html)
|
||||||
|
|
||||||
|
### Git-based metadata config
|
||||||
|
|
||||||
|
If you don't like the way ghcup updates its metadata with caching and fetching via curl, you can also do as follows:
|
||||||
|
|
||||||
|
Clone the metadata git repo:
|
||||||
|
|
||||||
|
```sh
|
||||||
|
mkdir -p /home/user/git/
|
||||||
|
cd /home/user/git/
|
||||||
|
git clone -b master https://github.com/haskell/ghcup-metadata.git
|
||||||
|
```
|
||||||
|
|
||||||
|
Then tell ghcup to use file locations in `~/.ghcup/config.yaml`, e.g.:
|
||||||
|
|
||||||
|
```yaml
|
||||||
|
url-source:
|
||||||
|
- file:///home/user/git/ghcup-metadata/ghcup-0.0.8.yaml
|
||||||
|
- file:///home/user/git/ghcup-metadata/ghcup-cross-0.0.8.yaml
|
||||||
|
- file:///home/user/git/ghcup-metadata/ghcup-prereleases-0.0.8.yaml
|
||||||
|
```
|
||||||
|
|
||||||
|
Now, if you invoke `ghcup tui`, it will open instantly without any download, since it just
|
||||||
|
reads the metadata from local disk.
|
||||||
|
|
||||||
|
You'll have to update the metadata manually though, like so:
|
||||||
|
|
||||||
|
```sh
|
||||||
|
cd /home/user/git/
|
||||||
|
git pull --ff-only origin master
|
||||||
```
|
```
|
||||||
|
|
||||||
## Stack integration
|
## Stack integration
|
||||||
@ -291,11 +322,82 @@ Stack metadata doesn't have a concept of those and we don't try to be smart when
|
|||||||
|
|
||||||
### Windows
|
### Windows
|
||||||
|
|
||||||
On windows, you may find the following config options useful too:
|
#### Using GHCup's MSYS2 installation
|
||||||
`skip-msys`, `extra-path`, `extra-include-dirs`, `extra-lib-dirs`.
|
|
||||||
|
Stack usually maintains its own msys2 installation. However, you can instruct it to use GHCup's MSYS2 or any other. E.g. if you
|
||||||
|
had GHCup install msys2 into `C:\ghcup\msys64\`, then you would add the following config to stack's `config.yaml`
|
||||||
|
(you can find its location via `stack path --stack-root`):
|
||||||
|
|
||||||
|
```yaml
|
||||||
|
skip-msys: true
|
||||||
|
extra-lib-dirs:
|
||||||
|
- C:\ghcup\msys64\mingw64\lib
|
||||||
|
- C:\ghcup\msys64\mingw64\bin
|
||||||
|
extra-path:
|
||||||
|
- C:\ghcup\msys64\mingw64\bin
|
||||||
|
- C:\ghcup\msys64\usr\bin
|
||||||
|
- C:\ghcup\msys64\usr\local\bin
|
||||||
|
extra-include-dirs:
|
||||||
|
- C:\ghcup\msys64\mingw64\include
|
||||||
|
```
|
||||||
|
|
||||||
Also check out: [https://docs.haskellstack.org/en/stable/yaml_configuration](https://docs.haskellstack.org/en/stable/yaml_configuration)
|
Also check out: [https://docs.haskellstack.org/en/stable/yaml_configuration](https://docs.haskellstack.org/en/stable/yaml_configuration)
|
||||||
|
|
||||||
|
## Mirrors (proper)
|
||||||
|
|
||||||
|
Mirrors are now supported via configuration, instead of specifying alternative metadata files.
|
||||||
|
|
||||||
|
As an example, this would be a complete mirror configuration in `~/.ghcup/config.yaml`:
|
||||||
|
|
||||||
|
```yaml
|
||||||
|
mirrors:
|
||||||
|
# yaml download location, would result in:
|
||||||
|
# https://raw.githubusercontent.com/haskell/ghcup-metadata/develop/ghcup-0.0.8.yaml
|
||||||
|
# -> https://mirror.sjtu.edu.cn/ghcup/yaml/haskell/ghcup-metadata/master/ghcup-0.0.8.yaml
|
||||||
|
"raw.githubusercontent.com":
|
||||||
|
authority:
|
||||||
|
host: "mirror.sjtu.edu.cn"
|
||||||
|
pathPrefix: "ghcup/yaml"
|
||||||
|
# for stack and some older HLS versions, would result in e.g.
|
||||||
|
# https://github.com/haskell/haskell-language-server/releases/download/1.2.0/haskell-language-server-Windows-1.2.0.tar.gz
|
||||||
|
# -> https://mirror.sjtu.edu.cn/ghcup/github/haskell/haskell-language-server/releases/download/1.2.0/haskell-language-server-Windows-1.2.0.tar.gz
|
||||||
|
"github.com":
|
||||||
|
authority:
|
||||||
|
host: "mirror.sjtu.edu.cn"
|
||||||
|
pathPrefix: "ghcup/github"
|
||||||
|
# for all haskell.org hosted bindists, would result in e.g.
|
||||||
|
# https://downloads.haskell.org/~ghc/9.8.1/ghc-9.8.1-x86_64-deb10-linux.tar.xz
|
||||||
|
# -> https://mirror.sjtu.edu.cn/ghcup/haskell-downloads/~ghc/9.8.1/ghc-9.8.1-x86_64-deb10-linux.tar.xz
|
||||||
|
"downloads.haskell.org":
|
||||||
|
authority:
|
||||||
|
host: "mirror.sjtu.edu.cn"
|
||||||
|
pathPrefix: "downloads.haskell.org"
|
||||||
|
```
|
||||||
|
|
||||||
|
The configuration depends on the host of the mirror and they have to provide the correct configuration.
|
||||||
|
|
||||||
|
## Linkers
|
||||||
|
|
||||||
|
The GHC bindist configure script by default doesn't honour the system `ld` that is set, but instead
|
||||||
|
probes for `ld.lld`, `ld.gold` and only then `ld` in order, see
|
||||||
|
[find_ld.m4](https://gitlab.haskell.org/ghc/ghc/-/blob/master/m4/find_ld.m4?ref_type=heads).
|
||||||
|
|
||||||
|
This is controlled by the configure switch `--enable-ld-override`/`--disable-ld-override`, which is enabled by default in GHC.
|
||||||
|
GHCup however [has decided](https://github.com/haskell/ghcup-hs/issues/1032) **to disable this switch by default**,
|
||||||
|
for reasons of stability and simplicity.
|
||||||
|
|
||||||
|
That means, when `--disable-ld-override` is passed, the linker is picked simply by:
|
||||||
|
|
||||||
|
* checking if `LD` env var is set, then use whatever is specified
|
||||||
|
* otherwise use `ld` binary in PATH (system/distro default)
|
||||||
|
|
||||||
|
You can restore the GHC vanilla default by adding this to your `~/.ghcup/config.yaml`:
|
||||||
|
|
||||||
|
```yaml
|
||||||
|
def-ghc-conf-options:
|
||||||
|
- "--enable-ld-override"
|
||||||
|
```
|
||||||
|
|
||||||
# More on installation
|
# More on installation
|
||||||
|
|
||||||
## Customisation of the installation scripts
|
## Customisation of the installation scripts
|
||||||
@ -432,9 +534,9 @@ ghcup compile hls --git-ref master --git-describe-version --ghc 8.10.7 --ghc 9.2
|
|||||||
|
|
||||||
This however will create a new HLS version in ghcup, e.g. `1.7.0.0-105-gdc682ba1`, for both 8.10.7 and 9.2.4. If you want to switch back to the official bindists, run `ghcup set hls 1.7.0.0`.
|
This however will create a new HLS version in ghcup, e.g. `1.7.0.0-105-gdc682ba1`, for both 8.10.7 and 9.2.4. If you want to switch back to the official bindists, run `ghcup set hls 1.7.0.0`.
|
||||||
|
|
||||||
### Cross support
|
## Cross support
|
||||||
|
|
||||||
ghcup can compile and install a cross GHC for any target. However, this
|
ghcup can compile a cross GHC for any target. However, this
|
||||||
requires that the build host has a complete cross toolchain and various
|
requires that the build host has a complete cross toolchain and various
|
||||||
libraries installed for the target platform.
|
libraries installed for the target platform.
|
||||||
|
|
||||||
@ -443,6 +545,83 @@ For distributions with non-standard locations of cross toolchain and
|
|||||||
libraries, this may need some tweaking of `build.mk` or configure args.
|
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.
|
||||||
|
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:
|
||||||
|
|
||||||
|
```sh
|
||||||
|
ghcup config add-release-channel https://raw.githubusercontent.com/haskell/ghcup-metadata/develop/ghcup-cross-0.0.8.yaml
|
||||||
|
```
|
||||||
|
|
||||||
|
The next sections explain how to install each cross bindist.
|
||||||
|
|
||||||
|
### GHC JS cross bindists (experimental)
|
||||||
|
|
||||||
|
You need the required emscripten JS toolchain. GHC JS cross bindists might require you to install a specific
|
||||||
|
version of emscripten. If that is the case, then ghcup will display the required emscripten version in the
|
||||||
|
pre install message. You can use the following commands to install the emscripten toolchain on your system,
|
||||||
|
substituting the required version for the bindist that you want to install.
|
||||||
|
(Cf. [GHC-MR 10918](https://gitlab.haskell.org/ghc/ghc/-/merge_requests/10918))
|
||||||
|
|
||||||
|
```sh
|
||||||
|
git clone https://github.com/emscripten-core/emsdk.git
|
||||||
|
cd emsdk
|
||||||
|
./emsdk install VERSION
|
||||||
|
./emsdk activate VERSION
|
||||||
|
source ./emsdk_env.sh
|
||||||
|
```
|
||||||
|
|
||||||
|
Instructions are also here: [Download and install — Emscripten documentation](https://emscripten.org/docs/getting_started/downloads.html).
|
||||||
|
|
||||||
|
To install you can either use the tui interface by invoking `emconfigure ghcup tui` or
|
||||||
|
you can install directly like so:
|
||||||
|
|
||||||
|
```sh
|
||||||
|
emconfigure ghcup install ghc --set javascript-unknown-ghcjs-9.6.2
|
||||||
|
```
|
||||||
|
|
||||||
|
You'll now have the compiler `javascript-unknown-ghcjs-ghc`. To build a hello world, do e.g.:
|
||||||
|
|
||||||
|
```sh
|
||||||
|
echo 'main = putStrLn "hello world"' > hello.hs
|
||||||
|
javascript-unknown-ghcjs-ghc -fforce-recomp hello.hs
|
||||||
|
./hello
|
||||||
|
```
|
||||||
|
|
||||||
|
You can follow the instructions [here](https://gitlab.haskell.org/ghc/ghc/-/wikis/javascript-backend/building#compiling-hello-world).
|
||||||
|
|
||||||
|
### GHC WASM cross bindists (experimental)
|
||||||
|
|
||||||
|
You need the required wasm toolchain:
|
||||||
|
|
||||||
|
```sh
|
||||||
|
git clone https://gitlab.haskell.org/ghc/ghc-wasm-meta.git
|
||||||
|
cd ghc-wasm-meta/
|
||||||
|
export SKIP_GHC=yes
|
||||||
|
./setup.sh
|
||||||
|
source ~/.ghc-wasm/env
|
||||||
|
```
|
||||||
|
|
||||||
|
**Note that some wasm bindists don't work with the master branch of ghc-wasm-meta. GHCup will warn you about such cases prior to installation and point you to the right commit.**
|
||||||
|
|
||||||
|
To install, we need to invoke ghcup like so also passing the `--host=<host>` flag (adjust as needed):
|
||||||
|
|
||||||
|
```sh
|
||||||
|
ghcup install ghc --set wasm32-wasi-9.6.3.20230927 -- --host=x86_64-linux --with-intree-gmp --with-system-libffi
|
||||||
|
```
|
||||||
|
|
||||||
|
Also check the documentation here: [Glasgow Haskell Compiler / ghc-wasm-meta](https://gitlab.haskell.org/ghc/ghc-wasm-meta).
|
||||||
|
|
||||||
|
You'll now have the compiler `wasm32-wasi-ghc`. To build a hello world, do e.g.:
|
||||||
|
|
||||||
|
```sh
|
||||||
|
echo 'main = putStrLn "hello world"' > hello.hs
|
||||||
|
wasm32-wasi-ghc hello.hs -o hello.wasm
|
||||||
|
wasmtime ./hello.wasm
|
||||||
|
```
|
||||||
|
|
||||||
## Isolated installs
|
## Isolated installs
|
||||||
|
|
||||||
**Before using isolated installs, make sure to have at least GHCup version 0.1.17.8!**
|
**Before using isolated installs, make sure to have at least GHCup version 0.1.17.8!**
|
||||||
@ -477,7 +656,7 @@ Examples:
|
|||||||
## Continuous integration
|
## Continuous integration
|
||||||
|
|
||||||
On Windows, GHCup can be installed automatically on a CI runner
|
On Windows, GHCup can be installed automatically on a CI runner
|
||||||
non-interactively, as below. The paramaters to the PowerShell script are
|
non-interactively, as below. The parameters to the PowerShell script are
|
||||||
specified positionally, after `-ArgumentList`:
|
specified positionally, after `-ArgumentList`:
|
||||||
|
|
||||||
```ps
|
```ps
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
# Installation
|
# Installation
|
||||||
|
|
||||||
GHCup makes it easy to install specific versions of GHC on GNU/Linux,
|
GHCup makes it easy to install specific versions of GHC on GNU/Linux,
|
||||||
macOS (aka Darwin), FreeBSD and Windows and can also bootstrap a fresh [Haskell developer environment](./#supported-tools) from scratch.
|
macOS (aka Darwin), FreeBSD and Windows and can also bootstrap a fresh [Haskell developer environment](#supported-tools) from scratch.
|
||||||
It follows the UNIX philosophy of [do one thing and do it well](https://en.wikipedia.org/wiki/Unix_philosophy#Do_One_Thing_and_Do_It_Well). Similar in scope to [rustup](https://github.com/rust-lang-nursery/rustup.rs), [pyenv](https://github.com/pyenv/pyenv) and [jenv](http://www.jenv.be).
|
It follows the UNIX philosophy of [do one thing and do it well](https://en.wikipedia.org/wiki/Unix_philosophy#Do_One_Thing_and_Do_It_Well). Similar in scope to [rustup](https://github.com/rust-lang-nursery/rustup.rs), [pyenv](https://github.com/pyenv/pyenv) and [jenv](http://www.jenv.be).
|
||||||
|
|
||||||
## How to install
|
## How to install
|
||||||
@ -32,7 +32,7 @@ GHCup has two main channels for every tool: **recommended** and **latest**. By d
|
|||||||
|
|
||||||
*latest* follows the latest release of every tool, while *recommended* is at the discretion of the GHCup maintainers and based on community adoption (hackage libraries, tools like HLS, stackage support, etc.) and known bugs.
|
*latest* follows the latest release of every tool, while *recommended* is at the discretion of the GHCup maintainers and based on community adoption (hackage libraries, tools like HLS, stackage support, etc.) and known bugs.
|
||||||
|
|
||||||
Also see [tags and shortcuts](../guide/#tags-and-shortcuts) for more information.
|
Also see [tags and shortcuts](guide.md#tags-and-shortcuts) for more information.
|
||||||
|
|
||||||
## System requirements
|
## System requirements
|
||||||
|
|
||||||
@ -121,9 +121,9 @@ On Windows, msys2 should already have been set up during the installation, so mo
|
|||||||
|
|
||||||
## Next steps
|
## Next steps
|
||||||
|
|
||||||
1. Follow the [First steps guide](../steps) on how to build a "Hello world" program, use `ghc`, run an interactive REPL and create a Haskell project
|
1. Follow the [First steps guide](steps.md) on how to build a "Hello world" program, use `ghc`, run an interactive REPL and create a Haskell project
|
||||||
2. To understand the difference and overlap of `stack` and `cabal`, read on [here](https://gist.github.com/merijn/8152d561fb8b011f9313c48d876ceb07)
|
2. To understand the difference and overlap of `stack` and `cabal`, read on [here](https://gist.github.com/merijn/8152d561fb8b011f9313c48d876ceb07)
|
||||||
3. To learn Haskell proper check out the links at [How to learn Haskell proper](../steps#how-to-learn-haskell-proper)
|
3. To learn Haskell proper check out the links at [How to learn Haskell proper](steps.md#how-to-learn-haskell-proper)
|
||||||
4. To learn more about Haskell Toolchain management, check out the [ghcup user guide](./guide.md)
|
4. To learn more about Haskell Toolchain management, check out the [ghcup user guide](./guide.md)
|
||||||
|
|
||||||
## Uninstallation
|
## Uninstallation
|
||||||
@ -140,16 +140,18 @@ GHCup supports the following tools, which are also known as the **Haskell Toolch
|
|||||||
<table>
|
<table>
|
||||||
<thead><tr><th>GHC Version</th><th>Tags</th></tr></thead>
|
<thead><tr><th>GHC Version</th><th>Tags</th></tr></thead>
|
||||||
<tbody>
|
<tbody>
|
||||||
<tr><td>9.6.2</td><td><span style="color:blue">latest</span>, base-4.18.0.0</td></tr>
|
<tr><td>9.8.1</td><td><span style="color:blue">latest</span>, base-4.19.0.0</td></tr>
|
||||||
|
<tr><td>9.6.3</td><td>base-4.18.1.0</td></tr>
|
||||||
|
<tr><td>9.6.2</td><td>base-4.18.0.0</td></tr>
|
||||||
<tr><td>9.6.1</td><td>base-4.18.0.0</td></tr>
|
<tr><td>9.6.1</td><td>base-4.18.0.0</td></tr>
|
||||||
<tr><td>9.4.7</td><td>base-4.17.2.0</td></tr>
|
<tr><td>9.4.7</td><td><span style="color:green">recommended</span>, base-4.17.2.0</td></tr>
|
||||||
<tr><td>9.4.6</td><td>base-4.17.2.0</td></tr>
|
<tr><td>9.4.6</td><td>base-4.17.2.0</td></tr>
|
||||||
<tr><td>9.4.5</td><td>base-4.17.1.0</td></tr>
|
<tr><td>9.4.5</td><td>base-4.17.1.0</td></tr>
|
||||||
<tr><td>9.4.4</td><td>base-4.17.0.0</td></tr>
|
<tr><td>9.4.4</td><td>base-4.17.0.0</td></tr>
|
||||||
<tr><td>9.4.3</td><td>base-4.17.0.0</td></tr>
|
<tr><td>9.4.3</td><td>base-4.17.0.0</td></tr>
|
||||||
<tr><td>9.4.2</td><td>base-4.17.0.0</td></tr>
|
<tr><td>9.4.2</td><td>base-4.17.0.0</td></tr>
|
||||||
<tr><td>9.4.1</td><td>base-4.17.0.0</td></tr>
|
<tr><td>9.4.1</td><td>base-4.17.0.0</td></tr>
|
||||||
<tr><td>9.2.8</td><td><span style="color:green">recommended</span>, base-4.16.4.0</td></tr>
|
<tr><td>9.2.8</td><td>base-4.16.4.0</td></tr>
|
||||||
<tr><td>9.2.7</td><td>base-4.16.4.0</td></tr>
|
<tr><td>9.2.7</td><td>base-4.16.4.0</td></tr>
|
||||||
<tr><td>9.2.6</td><td>base-4.16.4.0</td></tr>
|
<tr><td>9.2.6</td><td>base-4.16.4.0</td></tr>
|
||||||
<tr><td>9.2.5</td><td>base-4.16.4.0</td></tr>
|
<tr><td>9.2.5</td><td>base-4.16.4.0</td></tr>
|
||||||
@ -190,7 +192,8 @@ GHCup supports the following tools, which are also known as the **Haskell Toolch
|
|||||||
<table>
|
<table>
|
||||||
<thead><tr><th>Cabal Version</th><th>Tags</th></tr></thead>
|
<thead><tr><th>Cabal Version</th><th>Tags</th></tr></thead>
|
||||||
<tbody>
|
<tbody>
|
||||||
<tr><td>3.10.1.0</td><td><span style="color:blue">latest</span></td></tr>
|
<tr><td>3.10.2.0</td><td><span style="color:blue">latest</span></td></tr>
|
||||||
|
<tr><td>3.10.1.0</td><td></td></tr>
|
||||||
<tr><td>3.8.1.0</td><td></td></tr>
|
<tr><td>3.8.1.0</td><td></td></tr>
|
||||||
<tr><td>3.6.2.0</td><td><span style="color:green">recommended</span></td></tr>
|
<tr><td>3.6.2.0</td><td><span style="color:green">recommended</span></td></tr>
|
||||||
<tr><td>3.6.0.0</td><td></td></tr>
|
<tr><td>3.6.0.0</td><td></td></tr>
|
||||||
@ -234,8 +237,9 @@ GHCup supports the following tools, which are also known as the **Haskell Toolch
|
|||||||
<table>
|
<table>
|
||||||
<thead><tr><th>Stack Version</th><th>Tags</th></tr></thead>
|
<thead><tr><th>Stack Version</th><th>Tags</th></tr></thead>
|
||||||
<tbody>
|
<tbody>
|
||||||
<tr><td>2.11.1</td><td><span style="color:blue">latest</span></td></tr>
|
<tr><td>2.13.1</td><td><span style="color:blue">latest</span></td></tr>
|
||||||
<tr><td>2.9.3</td><td><span style="color:green">recommended</span></td></tr>
|
<tr><td>2.11.1</td><td><span style="color:green">recommended</span></td></tr>
|
||||||
|
<tr><td>2.9.3</td><td></td></tr>
|
||||||
<tr><td>2.9.1</td><td></td></tr>
|
<tr><td>2.9.1</td><td></td></tr>
|
||||||
<tr><td>2.7.5</td><td></td></tr>
|
<tr><td>2.7.5</td><td></td></tr>
|
||||||
<tr><td>2.7.3</td><td></td></tr>
|
<tr><td>2.7.3</td><td></td></tr>
|
||||||
@ -251,7 +255,7 @@ This list may not be exhaustive and specifies support for bindists only.
|
|||||||
|
|
||||||
| Platform | Architecture | ghcup | GHC | cabal | HLS | stack |
|
| Platform | Architecture | ghcup | GHC | cabal | HLS | stack |
|
||||||
| ------ | ------ | ------ | ------ | ------ | ------ | ------ |
|
| ------ | ------ | ------ | ------ | ------ | ------ | ------ |
|
||||||
| Windows 7 | amd64 | ❔ | ✅ | ✅ | ✅ | ✅ |
|
| Windows 8.1 | amd64 | ✅ | ✅ | ✅ | ✅ | ✅ |
|
||||||
| Windows 10 | amd64 | ✅ | ✅ | ✅ | ✅ | ✅ |
|
| Windows 10 | amd64 | ✅ | ✅ | ✅ | ✅ | ✅ |
|
||||||
| Windows Server 2016 | amd64 | ✅ | ✅ | ✅ | ✅ | ✅ |
|
| Windows Server 2016 | amd64 | ✅ | ✅ | ✅ | ✅ | ✅ |
|
||||||
| Windows Server 2019 | amd64 | ✅ | ✅ | ✅ | ✅ | ✅ |
|
| Windows Server 2019 | amd64 | ✅ | ✅ | ✅ | ✅ | ✅ |
|
||||||
@ -267,12 +271,11 @@ This list may not be exhaustive and specifies support for bindists only.
|
|||||||
| Linux generic | aarch64 | ✅ | ⚠️ | ✅ | ⚠️ | ❌ |
|
| Linux generic | aarch64 | ✅ | ⚠️ | ✅ | ⚠️ | ❌ |
|
||||||
| Linux generic | armv7 | ✅ | ⚠️ | ✅ | ⚠️ | ❌ |
|
| Linux generic | armv7 | ✅ | ⚠️ | ✅ | ⚠️ | ❌ |
|
||||||
|
|
||||||
### Windows 7
|
### Windows <8.1
|
||||||
|
|
||||||
May or may not work, several issues:
|
No longer supported for recent GHCs, according to manual testing of GHC 9.8.1 on Windows 7.
|
||||||
|
According to [msys2 documentation](https://www.msys2.org/docs/windows_support), the minimum Windows
|
||||||
* [https://gitlab.haskell.org/haskell/ghcup-hs/-/issues/140](https://gitlab.haskell.org/haskell/ghcup-hs/-/issues/140)
|
version is now 8.1.
|
||||||
* [https://gitlab.haskell.org/haskell/ghcup-hs/-/issues/197](https://gitlab.haskell.org/haskell/ghcup-hs/-/issues/197)
|
|
||||||
|
|
||||||
### WSL1
|
### WSL1
|
||||||
|
|
||||||
@ -379,7 +382,7 @@ All set. You can run `cabal init` now in an empty directory to start a project.
|
|||||||
### Void Linux
|
### Void Linux
|
||||||
|
|
||||||
Since void linux can be installed with glibc and musl, it's hard to support correctly with ghcup.
|
Since void linux can be installed with glibc and musl, it's hard to support correctly with ghcup.
|
||||||
One way to make ghcup work on **Void Linux musl** is to follow the [Overriding distro detection](../guide/#overriding-distro-detection)
|
One way to make ghcup work on **Void Linux musl** is to follow the [Overriding distro detection](guide.md#overriding-distro-detection)
|
||||||
section and tell it to consider Alpine bindists only. E.g.:
|
section and tell it to consider Alpine bindists only. E.g.:
|
||||||
|
|
||||||
```sh
|
```sh
|
||||||
|
File diff suppressed because it is too large
Load Diff
Before Width: | Height: | Size: 40 KiB After Width: | Height: | Size: 27 KiB |
File diff suppressed because it is too large
Load Diff
Before Width: | Height: | Size: 40 KiB After Width: | Height: | Size: 28 KiB |
@ -13,7 +13,7 @@ installed a Haskell toolchain:
|
|||||||
The Glorious Glasgow Haskell Compilation System, version 8.10.7
|
The Glorious Glasgow Haskell Compilation System, version 8.10.7
|
||||||
```
|
```
|
||||||
|
|
||||||
If this fails, consult [the Getting started page](../install) for information on
|
If this fails, consult [the Getting started page](install.md) for information on
|
||||||
how to install Haskell on your computer.
|
how to install Haskell on your computer.
|
||||||
|
|
||||||
This guide is partly based on [Gil Mizrahi's blog](https://gilmi.me/blog/post/2021/08/14/hs-core-tools).
|
This guide is partly based on [Gil Mizrahi's blog](https://gilmi.me/blog/post/2021/08/14/hs-core-tools).
|
||||||
|
79
ghcup.cabal
79
ghcup.cabal
@ -1,9 +1,9 @@
|
|||||||
cabal-version: 2.4
|
cabal-version: 2.4
|
||||||
name: ghcup
|
name: ghcup
|
||||||
version: 0.1.19.5
|
version: 0.1.22.0
|
||||||
license: LGPL-3.0-only
|
license: LGPL-3.0-only
|
||||||
license-file: LICENSE
|
license-file: LICENSE
|
||||||
copyright: Julian Ospald 2020
|
copyright: Julian Ospald 2024
|
||||||
maintainer: hasufell@posteo.de
|
maintainer: hasufell@posteo.de
|
||||||
author: Julian Ospald
|
author: Julian Ospald
|
||||||
homepage: https://github.com/haskell/ghcup-hs
|
homepage: https://github.com/haskell/ghcup-hs
|
||||||
@ -30,6 +30,11 @@ extra-source-files:
|
|||||||
test/ghcup-test/golden/unix/GHCupInfo.json
|
test/ghcup-test/golden/unix/GHCupInfo.json
|
||||||
test/ghcup-test/golden/windows/GHCupInfo.json
|
test/ghcup-test/golden/windows/GHCupInfo.json
|
||||||
|
|
||||||
|
tested-with: GHC==9.4.8
|
||||||
|
, GHC==9.2.8
|
||||||
|
, GHC==9.0.2
|
||||||
|
, GHC==8.10.7
|
||||||
|
|
||||||
source-repository head
|
source-repository head
|
||||||
type: git
|
type: git
|
||||||
location: https://github.com/haskell/ghcup-hs.git
|
location: https://github.com/haskell/ghcup-hs.git
|
||||||
@ -38,7 +43,7 @@ flag tui
|
|||||||
description:
|
description:
|
||||||
Build the brick powered tui (ghcup tui).
|
Build the brick powered tui (ghcup tui).
|
||||||
|
|
||||||
default: False
|
default: True
|
||||||
manual: True
|
manual: True
|
||||||
|
|
||||||
flag internal-downloader
|
flag internal-downloader
|
||||||
@ -53,6 +58,11 @@ flag no-exe
|
|||||||
default: False
|
default: False
|
||||||
manual: True
|
manual: True
|
||||||
|
|
||||||
|
flag tar
|
||||||
|
description: Use haskell tar instead of libarchive.
|
||||||
|
default: False
|
||||||
|
manual: True
|
||||||
|
|
||||||
common app-common-depends
|
common app-common-depends
|
||||||
build-depends:
|
build-depends:
|
||||||
, aeson >=1.4
|
, aeson >=1.4
|
||||||
@ -65,10 +75,9 @@ common app-common-depends
|
|||||||
, containers ^>=0.6
|
, containers ^>=0.6
|
||||||
, deepseq ^>=1.4
|
, deepseq ^>=1.4
|
||||||
, directory ^>=1.3.6.0
|
, directory ^>=1.3.6.0
|
||||||
, filepath ^>=1.4.2.1
|
, filepath >=1.4.101.0
|
||||||
, haskus-utils-types ^>=1.5
|
, haskus-utils-types ^>=1.5
|
||||||
, haskus-utils-variant ^>=3.2.1
|
, haskus-utils-variant ^>=3.3
|
||||||
, libarchive ^>=3.0.3.0
|
|
||||||
, megaparsec >=8.0.0 && <9.3
|
, megaparsec >=8.0.0 && <9.3
|
||||||
, mtl ^>=2.2
|
, mtl ^>=2.2
|
||||||
, optparse-applicative >=0.15.1.0 && <0.18
|
, optparse-applicative >=0.15.1.0 && <0.18
|
||||||
@ -79,7 +88,7 @@ common app-common-depends
|
|||||||
, safe ^>=0.3.18
|
, safe ^>=0.3.18
|
||||||
, safe-exceptions ^>=0.1
|
, safe-exceptions ^>=0.1
|
||||||
, tagsoup ^>=0.14
|
, tagsoup ^>=0.14
|
||||||
, template-haskell >=2.7 && <2.20
|
, template-haskell >=2.7 && <2.22
|
||||||
, temporary ^>=1.3
|
, temporary ^>=1.3
|
||||||
, text ^>=2.0
|
, text ^>=2.0
|
||||||
, time >=1.9.3 && <1.12
|
, time >=1.9.3 && <1.12
|
||||||
@ -87,9 +96,18 @@ common app-common-depends
|
|||||||
, uri-bytestring ^>=0.3.2.2
|
, uri-bytestring ^>=0.3.2.2
|
||||||
, utf8-string ^>=1.0
|
, utf8-string ^>=1.0
|
||||||
, vector >=0.12 && <0.14
|
, vector >=0.12 && <0.14
|
||||||
, versions >=6.0.3 && <6.1
|
, versions >=6.0.5 && <6.1
|
||||||
, yaml-streamly ^>=0.12.0
|
, yaml-streamly ^>=0.12.0
|
||||||
|
|
||||||
|
if flag(tar)
|
||||||
|
cpp-options: -DTAR
|
||||||
|
build-depends:
|
||||||
|
tar ^>=0.6.0.0
|
||||||
|
, zip ^>=2.0.0
|
||||||
|
|
||||||
|
else
|
||||||
|
build-depends: libarchive ^>=3.0.3.0
|
||||||
|
|
||||||
library
|
library
|
||||||
exposed-modules:
|
exposed-modules:
|
||||||
GHCup
|
GHCup
|
||||||
@ -122,6 +140,9 @@ library
|
|||||||
GHCup.Types.Stack
|
GHCup.Types.Stack
|
||||||
GHCup.Utils
|
GHCup.Utils
|
||||||
GHCup.Utils.Dirs
|
GHCup.Utils.Dirs
|
||||||
|
GHCup.Utils.Tar
|
||||||
|
GHCup.Utils.Tar.Types
|
||||||
|
GHCup.Utils.URI
|
||||||
GHCup.Version
|
GHCup.Version
|
||||||
|
|
||||||
hs-source-dirs: lib
|
hs-source-dirs: lib
|
||||||
@ -154,7 +175,8 @@ library
|
|||||||
, base16-bytestring >=0.1.1.6 && <1.1
|
, base16-bytestring >=0.1.1.6 && <1.1
|
||||||
, binary ^>=0.8.6.0
|
, binary ^>=0.8.6.0
|
||||||
, bytestring >=0.10 && <0.12
|
, bytestring >=0.10 && <0.12
|
||||||
, Cabal ^>=3.0.0.0 || ^>=3.2.0.0 || ^>=3.4.0.0 || ^>=3.6.0.0
|
, bz2 ^>=1.0.1.1
|
||||||
|
, Cabal ^>=3.0.0.0 || ^>=3.2.0.0 || ^>=3.4.0.0 || ^>=3.6.0.0 || ^>=3.8.0.0 || ^>= 3.10.0.0
|
||||||
, case-insensitive ^>=1.2.1.0
|
, case-insensitive ^>=1.2.1.0
|
||||||
, casing ^>=0.1.4.1
|
, casing ^>=0.1.4.1
|
||||||
, containers ^>=0.6
|
, containers ^>=0.6
|
||||||
@ -163,10 +185,10 @@ library
|
|||||||
, directory ^>=1.3.6.0
|
, directory ^>=1.3.6.0
|
||||||
, disk-free-space ^>=0.1.0.1
|
, disk-free-space ^>=0.1.0.1
|
||||||
, exceptions ^>=0.10
|
, exceptions ^>=0.10
|
||||||
, filepath ^>=1.4.2.1
|
, filepath >=1.4.101.0
|
||||||
|
, file-uri ^>=0.1.0.0
|
||||||
, haskus-utils-types ^>=1.5
|
, haskus-utils-types ^>=1.5
|
||||||
, haskus-utils-variant ^>=3.2.1
|
, haskus-utils-variant ^>=3.3
|
||||||
, libarchive ^>=3.0.3.0
|
|
||||||
, lzma-static ^>=5.2.5.3
|
, lzma-static ^>=5.2.5.3
|
||||||
, megaparsec >=8.0.0 && <9.3
|
, megaparsec >=8.0.0 && <9.3
|
||||||
, mtl ^>=2.2
|
, mtl ^>=2.2
|
||||||
@ -182,7 +204,7 @@ library
|
|||||||
, split ^>=0.2.3.4
|
, split ^>=0.2.3.4
|
||||||
, streamly ^>=0.8.2
|
, streamly ^>=0.8.2
|
||||||
, strict-base ^>=0.4
|
, strict-base ^>=0.4
|
||||||
, template-haskell >=2.7 && <2.20
|
, template-haskell >=2.7 && <2.22
|
||||||
, temporary ^>=1.3
|
, temporary ^>=1.3
|
||||||
, text ^>=2.0
|
, text ^>=2.0
|
||||||
, time >=1.9.3 && <1.12
|
, time >=1.9.3 && <1.12
|
||||||
@ -191,11 +213,20 @@ library
|
|||||||
, unordered-containers ^>=0.2.10.0
|
, unordered-containers ^>=0.2.10.0
|
||||||
, uri-bytestring ^>=0.3.2.2
|
, uri-bytestring ^>=0.3.2.2
|
||||||
, vector >=0.12 && <0.14
|
, vector >=0.12 && <0.14
|
||||||
, versions >=6.0.3 && <6.1
|
, versions >=6.0.5 && <6.1
|
||||||
, word8 ^>=0.1.3
|
, word8 ^>=0.1.3
|
||||||
, yaml-streamly ^>=0.12.0
|
, yaml-streamly ^>=0.12.0
|
||||||
, zlib ^>=0.6.2.2
|
, zlib ^>=0.6.2.2
|
||||||
|
|
||||||
|
if flag(tar)
|
||||||
|
cpp-options: -DTAR
|
||||||
|
build-depends:
|
||||||
|
tar ^>=0.6.0.0
|
||||||
|
, zip ^>=2.0.0
|
||||||
|
|
||||||
|
else
|
||||||
|
build-depends: libarchive ^>=3.0.3.0
|
||||||
|
|
||||||
if (flag(internal-downloader) && !os(windows))
|
if (flag(internal-downloader) && !os(windows))
|
||||||
exposed-modules: GHCup.Download.IOStreams
|
exposed-modules: GHCup.Download.IOStreams
|
||||||
cpp-options: -DINTERNAL_DOWNLOADER
|
cpp-options: -DINTERNAL_DOWNLOADER
|
||||||
@ -214,7 +245,6 @@ library
|
|||||||
-- GHCup.OptParse.Run uses this
|
-- GHCup.OptParse.Run uses this
|
||||||
exposed-modules: GHCup.Prelude.Process.Windows
|
exposed-modules: GHCup.Prelude.Process.Windows
|
||||||
build-depends:
|
build-depends:
|
||||||
, bzlib
|
|
||||||
, process ^>=1.6.11.0
|
, process ^>=1.6.11.0
|
||||||
, Win32 >=2.10
|
, Win32 >=2.10
|
||||||
|
|
||||||
@ -231,14 +261,13 @@ library
|
|||||||
install-includes: dirutils.h
|
install-includes: dirutils.h
|
||||||
c-sources: cbits/dirutils.c
|
c-sources: cbits/dirutils.c
|
||||||
build-depends:
|
build-depends:
|
||||||
, bz2 >=0.5.0.5 && <1.1
|
|
||||||
, terminal-size ^>=0.3.3
|
, terminal-size ^>=0.3.3
|
||||||
, unix ^>=2.7
|
, unix ^>=2.7 || ^>=2.8
|
||||||
, unix-bytestring ^>=0.3.7.3
|
, unix-bytestring ^>=0.3.7.3
|
||||||
|
|
||||||
if flag(tui)
|
if flag(tui)
|
||||||
cpp-options: -DBRICK
|
cpp-options: -DBRICK
|
||||||
build-depends: vty ^>=6.0
|
build-depends: vty ^>=6.0 || ^>=6.1 || ^>=6.2
|
||||||
|
|
||||||
library ghcup-optparse
|
library ghcup-optparse
|
||||||
import: app-common-depends
|
import: app-common-depends
|
||||||
@ -291,7 +320,7 @@ library ghcup-optparse
|
|||||||
cpp-options: -DIS_WINDOWS
|
cpp-options: -DIS_WINDOWS
|
||||||
|
|
||||||
else
|
else
|
||||||
build-depends: unix ^>=2.7
|
build-depends: unix ^>=2.7 || ^>=2.8
|
||||||
|
|
||||||
executable ghcup
|
executable ghcup
|
||||||
import: app-common-depends
|
import: app-common-depends
|
||||||
@ -326,13 +355,13 @@ executable ghcup
|
|||||||
build-depends:
|
build-depends:
|
||||||
, brick ^>=2.1
|
, brick ^>=2.1
|
||||||
, transformers ^>=0.5
|
, transformers ^>=0.5
|
||||||
, vty ^>=6.0
|
, vty ^>=6.0 || ^>=6.1 || ^>=6.2
|
||||||
|
, 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 || ^>=2.8
|
||||||
|
|
||||||
if flag(no-exe)
|
if flag(no-exe)
|
||||||
buildable: False
|
buildable: False
|
||||||
@ -367,7 +396,7 @@ test-suite ghcup-test
|
|||||||
, bytestring >=0.10 && <0.12
|
, bytestring >=0.10 && <0.12
|
||||||
, containers ^>=0.6
|
, containers ^>=0.6
|
||||||
, directory ^>=1.3.6.0
|
, directory ^>=1.3.6.0
|
||||||
, filepath ^>=1.4.2.1
|
, filepath >=1.4.101.0
|
||||||
, generic-arbitrary >=0.1.0 && <0.2.1 || >=0.2.2 && <0.3
|
, generic-arbitrary >=0.1.0 && <0.2.1 || >=0.2.2 && <0.3
|
||||||
, ghcup
|
, ghcup
|
||||||
, hspec >=2.7.10 && <2.11
|
, hspec >=2.7.10 && <2.11
|
||||||
@ -378,13 +407,13 @@ test-suite ghcup-test
|
|||||||
, text ^>=2.0
|
, text ^>=2.0
|
||||||
, time >=1.9.3 && <1.12
|
, time >=1.9.3 && <1.12
|
||||||
, uri-bytestring ^>=0.3.2.2
|
, uri-bytestring ^>=0.3.2.2
|
||||||
, versions >=6.0.3 && <6.1
|
, versions >=6.0.5 && <6.1
|
||||||
|
|
||||||
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 || ^>=2.8
|
||||||
|
|
||||||
test-suite ghcup-optparse-test
|
test-suite ghcup-optparse-test
|
||||||
type: exitcode-stdio-1.0
|
type: exitcode-stdio-1.0
|
||||||
|
6
hie.yaml
6
hie.yaml
@ -4,7 +4,9 @@ cradle:
|
|||||||
path: ./lib
|
path: ./lib
|
||||||
- component: "ghcup:exe:ghcup"
|
- component: "ghcup:exe:ghcup"
|
||||||
path: ./app/ghcup
|
path: ./app/ghcup
|
||||||
|
- component: "ghcup:lib:ghcup-optparse"
|
||||||
|
path: "./lib-opt"
|
||||||
- component: "ghcup:test:ghcup-test"
|
- component: "ghcup:test:ghcup-test"
|
||||||
path: ./test/ghcup-test
|
path: "./test/ghcup-test"
|
||||||
- component: "ghcup:test:ghcup-optparse-test"
|
- component: "ghcup:test:ghcup-optparse-test"
|
||||||
path: ./test/optparse-test
|
path: "./test/optparse-test"
|
||||||
|
@ -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
|
||||||
|
|
||||||
|
@ -59,7 +59,7 @@ import Safe
|
|||||||
import System.Process ( readProcess )
|
import System.Process ( readProcess )
|
||||||
import System.FilePath
|
import System.FilePath
|
||||||
import Text.HTML.TagSoup hiding ( Tag )
|
import Text.HTML.TagSoup hiding ( Tag )
|
||||||
import URI.ByteString
|
import URI.ByteString hiding (parseURI)
|
||||||
|
|
||||||
import qualified Data.ByteString.UTF8 as UTF8
|
import qualified Data.ByteString.UTF8 as UTF8
|
||||||
import qualified Data.Map.Strict as M
|
import qualified Data.Map.Strict as M
|
||||||
@ -77,7 +77,6 @@ import qualified Cabal.Config as CC
|
|||||||
--[ Types ]--
|
--[ Types ]--
|
||||||
-------------
|
-------------
|
||||||
|
|
||||||
|
|
||||||
-- a superset of ToolVersion
|
-- a superset of ToolVersion
|
||||||
data SetToolVersion = SetGHCVersion GHCTargetVersion
|
data SetToolVersion = SetGHCVersion GHCTargetVersion
|
||||||
| SetToolVersion Version
|
| SetToolVersion Version
|
||||||
@ -215,7 +214,7 @@ platformParser s' = case MP.parse (platformP <* MP.eof) "" (T.pack s') of
|
|||||||
|
|
||||||
|
|
||||||
uriParser :: String -> Either String URI
|
uriParser :: String -> Either String URI
|
||||||
uriParser = first show . parseURI strictURIParserOptions . UTF8.fromString
|
uriParser = first show . parseURI . UTF8.fromString
|
||||||
|
|
||||||
|
|
||||||
absolutePathParser :: FilePath -> Either String FilePath
|
absolutePathParser :: FilePath -> Either String FilePath
|
||||||
@ -313,6 +312,29 @@ gpgParser s' | t == T.pack "strict" = Right GPGStrict
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
overWriteVersionParser :: String -> Either String [VersionPattern]
|
||||||
|
overWriteVersionParser = first (const "Not a valid version pattern") . MP.parse (MP.many versionPattern <* MP.eof) "" . T.pack
|
||||||
|
where
|
||||||
|
versionPattern :: MP.Parsec Void Text VersionPattern
|
||||||
|
versionPattern = do
|
||||||
|
str' <- T.unpack <$> MP.takeWhileP Nothing (/= '%')
|
||||||
|
if str' /= mempty
|
||||||
|
then pure (S str')
|
||||||
|
else fmap (const CabalVer) v_cabal
|
||||||
|
<|> fmap (const GitBranchName) b_name
|
||||||
|
<|> fmap (const GitHashShort) s_hash
|
||||||
|
<|> fmap (const GitHashLong) l_hash
|
||||||
|
<|> fmap (const GitDescribe) g_desc
|
||||||
|
<|> ((\a b -> S (a : T.unpack b)) <$> MP.satisfy (const True) <*> MP.takeWhileP Nothing (== '%')) -- invalid pattern, e.g. "%k"
|
||||||
|
where
|
||||||
|
v_cabal = MP.chunk "%v"
|
||||||
|
b_name = MP.chunk "%b"
|
||||||
|
s_hash = MP.chunk "%h"
|
||||||
|
l_hash = MP.chunk "%H"
|
||||||
|
g_desc = MP.chunk "%g"
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
------------------
|
------------------
|
||||||
--[ Completers ]--
|
--[ Completers ]--
|
||||||
------------------
|
------------------
|
||||||
@ -834,11 +856,11 @@ parseUrlSource :: String -> Either String URLSource
|
|||||||
parseUrlSource "GHCupURL" = pure GHCupURL
|
parseUrlSource "GHCupURL" = pure GHCupURL
|
||||||
parseUrlSource "StackSetupURL" = pure StackSetupURL
|
parseUrlSource "StackSetupURL" = pure StackSetupURL
|
||||||
parseUrlSource s' = (eitherDecode . LE.encodeUtf8 . LT.pack $ s')
|
parseUrlSource s' = (eitherDecode . LE.encodeUtf8 . LT.pack $ s')
|
||||||
<|> (fmap (OwnSource . (:[]) . Right) . first show . parseURI strictURIParserOptions .UTF8.fromString $ s')
|
<|> (fmap (OwnSource . (:[]) . Right) . first show . parseURI .UTF8.fromString $ s')
|
||||||
|
|
||||||
parseNewUrlSource :: String -> Either String NewURLSource
|
parseNewUrlSource :: String -> Either String NewURLSource
|
||||||
parseNewUrlSource "GHCupURL" = pure NewGHCupURL
|
parseNewUrlSource "GHCupURL" = pure NewGHCupURL
|
||||||
parseNewUrlSource "StackSetupURL" = pure NewStackSetupURL
|
parseNewUrlSource "StackSetupURL" = pure NewStackSetupURL
|
||||||
parseNewUrlSource s' = (eitherDecode . LE.encodeUtf8 . LT.pack $ s')
|
parseNewUrlSource s' = (eitherDecode . LE.encodeUtf8 . LT.pack $ s')
|
||||||
<|> (fmap NewURI . first show . parseURI strictURIParserOptions .UTF8.fromString $ s')
|
<|> (fmap NewURI . first show . parseURI .UTF8.fromString $ s')
|
||||||
|
|
||||||
|
@ -25,7 +25,6 @@ import GHCup.OptParse.Common
|
|||||||
#if !MIN_VERSION_base(4,13,0)
|
#if !MIN_VERSION_base(4,13,0)
|
||||||
import Control.Monad.Fail ( MonadFail )
|
import Control.Monad.Fail ( MonadFail )
|
||||||
#endif
|
#endif
|
||||||
import Codec.Archive ( ArchiveResult )
|
|
||||||
import Control.Concurrent (threadDelay)
|
import Control.Concurrent (threadDelay)
|
||||||
import Control.Monad.Reader
|
import Control.Monad.Reader
|
||||||
import Control.Monad.Trans.Resource
|
import Control.Monad.Trans.Resource
|
||||||
@ -37,7 +36,7 @@ import qualified Data.Versions as V
|
|||||||
import Data.Text ( Text )
|
import Data.Text ( Text )
|
||||||
import Haskus.Utils.Variant.Excepts
|
import Haskus.Utils.Variant.Excepts
|
||||||
import Options.Applicative hiding ( style )
|
import Options.Applicative hiding ( style )
|
||||||
import Options.Applicative.Help.Pretty ( text )
|
import Options.Applicative.Help.Pretty ( text, vsep )
|
||||||
import Prelude hiding ( appendFile )
|
import Prelude hiding ( appendFile )
|
||||||
import System.Exit
|
import System.Exit
|
||||||
|
|
||||||
@ -75,7 +74,7 @@ data GHCCompileOptions = GHCCompileOptions
|
|||||||
, crossTarget :: Maybe Text
|
, crossTarget :: Maybe Text
|
||||||
, addConfArgs :: [Text]
|
, addConfArgs :: [Text]
|
||||||
, setCompile :: Bool
|
, setCompile :: Bool
|
||||||
, ovewrwiteVer :: Maybe Version
|
, overwriteVer :: Maybe [VersionPattern]
|
||||||
, buildFlavour :: Maybe String
|
, buildFlavour :: Maybe String
|
||||||
, buildSystem :: Maybe BuildSystem
|
, buildSystem :: Maybe BuildSystem
|
||||||
, isolateDir :: Maybe FilePath
|
, isolateDir :: Maybe FilePath
|
||||||
@ -87,7 +86,7 @@ data HLSCompileOptions = HLSCompileOptions
|
|||||||
, jobs :: Maybe Int
|
, jobs :: Maybe Int
|
||||||
, setCompile :: Bool
|
, setCompile :: Bool
|
||||||
, updateCabal :: Bool
|
, updateCabal :: Bool
|
||||||
, ovewrwiteVer :: Either Bool Version
|
, overwriteVer :: Maybe [VersionPattern]
|
||||||
, isolateDir :: Maybe FilePath
|
, isolateDir :: Maybe FilePath
|
||||||
, cabalProject :: Maybe (Either FilePath URI)
|
, cabalProject :: Maybe (Either FilePath URI)
|
||||||
, cabalProjectLocal :: Maybe URI
|
, cabalProjectLocal :: Maybe URI
|
||||||
@ -156,9 +155,9 @@ Examples:
|
|||||||
Examples:
|
Examples:
|
||||||
# compile 1.7.0.0 from hackage for 8.10.7, running 'cabal update' before the build
|
# compile 1.7.0.0 from hackage for 8.10.7, running 'cabal update' before the build
|
||||||
ghcup compile hls --version 1.7.0.0 --ghc 8.10.7 --cabal-update
|
ghcup compile hls --version 1.7.0.0 --ghc 8.10.7 --cabal-update
|
||||||
# compile from master for ghc 9.2.3 using 'git describe' to name the binary and ignore the pinned index state
|
# compile from master for ghc 9.2.3, appending the short git commit hash to the version and ignore the pinned index state
|
||||||
ghcup compile hls -g master --git-describe-version --ghc 9.2.3 -- --index-state=@(date '+%s')
|
ghcup compile hls -g master -o '%v-%h' --ghc 9.2.3 -- --index-state=@(date '+%s')
|
||||||
# compile a specific commit for ghc 9.2.3 and set a specifc version for the binary name
|
# compile a specific commit for ghc 9.2.3 and set a specific version for the binary name
|
||||||
ghcup compile hls -g a32db0b -o 1.7.0.0-p1 --ghc 9.2.3|]
|
ghcup compile hls -g a32db0b -o 1.7.0.0-p1 --ghc 9.2.3|]
|
||||||
|
|
||||||
|
|
||||||
@ -254,11 +253,16 @@ ghcCompileOpts =
|
|||||||
<*> fmap (fromMaybe False) (invertableSwitch "set" Nothing False (help "Set as active version after install"))
|
<*> fmap (fromMaybe False) (invertableSwitch "set" Nothing False (help "Set as active version after install"))
|
||||||
<*> optional
|
<*> optional
|
||||||
(option
|
(option
|
||||||
(eitherReader
|
(eitherReader overWriteVersionParser
|
||||||
(first (const "Not a valid version") . version . T.pack)
|
|
||||||
)
|
)
|
||||||
(short 'o' <> long "overwrite-version" <> metavar "OVERWRITE_VERSION" <> help
|
(short 'o' <> long "overwrite-version" <> metavar "OVERWRITE_VERSION"
|
||||||
"Allows to overwrite the finally installed VERSION with a different one, e.g. when you build 8.10.4 with your own patches, you might want to set this to '8.10.4-p1'"
|
<> helpDoc (Just $ vsep [ text "Overwrite the finally installed VERSION with a different one. Allows to specify patterns"
|
||||||
|
, text "%v version"
|
||||||
|
, text "%b branch name"
|
||||||
|
, text "%h short commit hash"
|
||||||
|
, text "%H long commit hash"
|
||||||
|
, text "%g 'git describe' output"
|
||||||
|
])
|
||||||
<> (completer $ versionCompleter [] GHC)
|
<> (completer $ versionCompleter [] GHC)
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
@ -344,19 +348,25 @@ hlsCompileOpts =
|
|||||||
<*> switch (long "cabal-update" <> help "Run 'cabal update' before the build")
|
<*> switch (long "cabal-update" <> help "Run 'cabal update' before the build")
|
||||||
<*>
|
<*>
|
||||||
(
|
(
|
||||||
(Right <$> option
|
optional (option
|
||||||
(eitherReader
|
(eitherReader overWriteVersionParser
|
||||||
(first (const "Not a valid version") . version . T.pack)
|
|
||||||
)
|
)
|
||||||
(short 'o' <> long "overwrite-version" <> metavar "OVERWRITE_VERSION" <> help
|
(short 'o' <> long "overwrite-version" <> metavar "OVERWRITE_VERSION"
|
||||||
"Allows to overwrite the finally installed VERSION with a different one, e.g. when you build 8.10.4 with your own patches, you might want to set this to '8.10.4-p1'"
|
<> helpDoc (Just $ vsep [ text "Overwrite the finally installed VERSION with a different one. Allows to specify patterns"
|
||||||
|
, text "%v version from cabal file"
|
||||||
|
, text "%b branch name"
|
||||||
|
, text "%h short commit hash"
|
||||||
|
, text "%H long commit hash"
|
||||||
|
, text "%g 'git describe' output"
|
||||||
|
])
|
||||||
<> (completer $ versionCompleter [] HLS)
|
<> (completer $ versionCompleter [] HLS)
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
<|>
|
<|>
|
||||||
(Left <$> (switch
|
((\b -> if b then Just [GitDescribe] else Nothing) <$> (switch
|
||||||
(long "git-describe-version"
|
(long "git-describe-version"
|
||||||
<> help "Use the output of 'git describe' (if building from git) as the VERSION component of the installed binary."
|
<> help "Use the output of 'git describe' (if building from git) as the VERSION component of the installed binary."
|
||||||
|
<> internal
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
@ -519,9 +529,14 @@ compile compileCommand settings Dirs{..} runAppState runLogger = do
|
|||||||
HLS.SourceDist targetVer -> do
|
HLS.SourceDist targetVer -> do
|
||||||
GHCupInfo { _ghcupDownloads = dls } <- lift getGHCupInfo
|
GHCupInfo { _ghcupDownloads = dls } <- lift getGHCupInfo
|
||||||
let vi = getVersionInfo (mkTVer targetVer) HLS dls
|
let vi = getVersionInfo (mkTVer targetVer) HLS dls
|
||||||
|
forM_ (_viPreInstall =<< vi) $ \msg -> do
|
||||||
|
lift $ logWarn msg
|
||||||
|
lift $ logWarn
|
||||||
|
"...waiting for 5 seconds, you can still abort..."
|
||||||
|
liftIO $ threadDelay 5000000 -- give the user a sec to intervene
|
||||||
forM_ (_viPreCompile =<< vi) $ \msg -> do
|
forM_ (_viPreCompile =<< vi) $ \msg -> do
|
||||||
lift $ logInfo msg
|
lift $ logWarn msg
|
||||||
lift $ logInfo
|
lift $ logWarn
|
||||||
"...waiting for 5 seconds, you can still abort..."
|
"...waiting for 5 seconds, you can still abort..."
|
||||||
liftIO $ threadDelay 5000000 -- for compilation, give the user a sec to intervene
|
liftIO $ threadDelay 5000000 -- for compilation, give the user a sec to intervene
|
||||||
_ -> pure ()
|
_ -> pure ()
|
||||||
@ -530,7 +545,7 @@ compile compileCommand settings Dirs{..} runAppState runLogger = do
|
|||||||
targetHLS
|
targetHLS
|
||||||
ghcs
|
ghcs
|
||||||
jobs
|
jobs
|
||||||
ovewrwiteVer
|
overwriteVer
|
||||||
(maybe GHCupInternal IsolateDir isolateDir)
|
(maybe GHCupInternal IsolateDir isolateDir)
|
||||||
cabalProject
|
cabalProject
|
||||||
cabalProjectLocal
|
cabalProjectLocal
|
||||||
@ -568,16 +583,21 @@ compile compileCommand settings Dirs{..} runAppState runLogger = do
|
|||||||
GHC.SourceDist targetVer -> do
|
GHC.SourceDist targetVer -> do
|
||||||
GHCupInfo { _ghcupDownloads = dls } <- lift getGHCupInfo
|
GHCupInfo { _ghcupDownloads = dls } <- lift getGHCupInfo
|
||||||
let vi = getVersionInfo (mkTVer targetVer) GHC dls
|
let vi = getVersionInfo (mkTVer targetVer) GHC dls
|
||||||
|
forM_ (_viPreInstall =<< vi) $ \msg -> do
|
||||||
|
lift $ logWarn msg
|
||||||
|
lift $ logWarn
|
||||||
|
"...waiting for 5 seconds, you can still abort..."
|
||||||
|
liftIO $ threadDelay 5000000 -- give the user a sec to intervene
|
||||||
forM_ (_viPreCompile =<< vi) $ \msg -> do
|
forM_ (_viPreCompile =<< vi) $ \msg -> do
|
||||||
lift $ logInfo msg
|
lift $ logWarn msg
|
||||||
lift $ logInfo
|
lift $ logWarn
|
||||||
"...waiting for 5 seconds, you can still abort..."
|
"...waiting for 5 seconds, you can still abort..."
|
||||||
liftIO $ threadDelay 5000000 -- for compilation, give the user a sec to intervene
|
liftIO $ threadDelay 5000000 -- for compilation, give the user a sec to intervene
|
||||||
_ -> pure ()
|
_ -> pure ()
|
||||||
targetVer <- liftE $ compileGHC
|
targetVer <- liftE $ compileGHC
|
||||||
targetGhc
|
targetGhc
|
||||||
crossTarget
|
crossTarget
|
||||||
ovewrwiteVer
|
overwriteVer
|
||||||
bootstrapGhc
|
bootstrapGhc
|
||||||
jobs
|
jobs
|
||||||
buildConfig
|
buildConfig
|
||||||
|
@ -67,7 +67,6 @@ configP = subparser
|
|||||||
<> command "show" showP
|
<> command "show" showP
|
||||||
<> command "add-release-channel" addP
|
<> command "add-release-channel" addP
|
||||||
)
|
)
|
||||||
<|> argsP -- add show for a single option
|
|
||||||
<|> pure ShowConfig
|
<|> pure ShowConfig
|
||||||
where
|
where
|
||||||
initP = info (pure InitConfig) (progDesc "Write default config to ~/.ghcup/config.yaml")
|
initP = info (pure InitConfig) (progDesc "Write default config to ~/.ghcup/config.yaml")
|
||||||
@ -134,7 +133,8 @@ updateSettings usl usr =
|
|||||||
gpgSetting' = uGPGSetting usl <|> uGPGSetting usr
|
gpgSetting' = uGPGSetting usl <|> uGPGSetting usr
|
||||||
platformOverride' = uPlatformOverride usl <|> uPlatformOverride usr
|
platformOverride' = uPlatformOverride usl <|> uPlatformOverride usr
|
||||||
mirrors' = uMirrors usl <|> uMirrors usr
|
mirrors' = uMirrors usl <|> uMirrors usr
|
||||||
in UserSettings cache' metaCache' metaMode' noVerify' verbose' keepDirs' downloader' (updateKeyBindings (uKeyBindings usl) (uKeyBindings usr)) urlSource' noNetwork' gpgSetting' platformOverride' mirrors'
|
defGHCconfOptions' = uDefGHCConfOptions usl <|> uDefGHCConfOptions usr
|
||||||
|
in UserSettings cache' metaCache' metaMode' noVerify' verbose' keepDirs' downloader' (updateKeyBindings (uKeyBindings usl) (uKeyBindings usr)) urlSource' noNetwork' gpgSetting' platformOverride' mirrors' defGHCconfOptions'
|
||||||
where
|
where
|
||||||
updateKeyBindings :: Maybe UserKeyBindings -> Maybe UserKeyBindings -> Maybe UserKeyBindings
|
updateKeyBindings :: Maybe UserKeyBindings -> Maybe UserKeyBindings -> Maybe UserKeyBindings
|
||||||
updateKeyBindings Nothing Nothing = Nothing
|
updateKeyBindings Nothing Nothing = Nothing
|
||||||
@ -150,7 +150,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
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -193,10 +192,14 @@ config configCommand settings userConf keybindings runLogger = case configComman
|
|||||||
throwE $ ParseError "Empty values are not allowed"
|
throwE $ ParseError "Empty values are not allowed"
|
||||||
Nothing -> do
|
Nothing -> do
|
||||||
usersettings <- decodeSettings k
|
usersettings <- decodeSettings k
|
||||||
|
when (usersettings == defaultUserSettings)
|
||||||
|
$ throwE $ ParseError ("Failed to parse setting (maybe typo?): " <> k)
|
||||||
lift $ doConfig usersettings
|
lift $ doConfig usersettings
|
||||||
pure ()
|
pure ()
|
||||||
Just v -> do
|
Just v -> do
|
||||||
usersettings <- decodeSettings (k <> ": " <> v <> "\n")
|
usersettings <- decodeSettings (k <> ": " <> v <> "\n")
|
||||||
|
when (usersettings == defaultUserSettings)
|
||||||
|
$ throwE $ ParseError ("Failed to parse key '" <> k <> "' with value '" <> v <> "' as user setting. Maybe typo?")
|
||||||
lift $ doConfig usersettings
|
lift $ doConfig usersettings
|
||||||
pure ()
|
pure ()
|
||||||
case r of
|
case r of
|
||||||
@ -204,7 +207,9 @@ config configCommand settings userConf keybindings runLogger = case configComman
|
|||||||
VLeft (V (JSONDecodeError e)) -> do
|
VLeft (V (JSONDecodeError e)) -> do
|
||||||
runLogger $ logError $ "Error decoding config: " <> T.pack e
|
runLogger $ logError $ "Error decoding config: " <> T.pack e
|
||||||
pure $ ExitFailure 65
|
pure $ ExitFailure 65
|
||||||
VLeft _ -> pure $ ExitFailure 65
|
VLeft e -> do
|
||||||
|
runLogger (logError $ T.pack $ prettyHFError e)
|
||||||
|
pure $ ExitFailure 65
|
||||||
|
|
||||||
AddReleaseChannel force new -> do
|
AddReleaseChannel force new -> do
|
||||||
r <- runE @'[DuplicateReleaseChannel] $ do
|
r <- runE @'[DuplicateReleaseChannel] $ do
|
||||||
|
@ -47,6 +47,7 @@ data GCOptions = GCOptions
|
|||||||
, gcHLSNoGHC :: Bool
|
, gcHLSNoGHC :: Bool
|
||||||
, gcCache :: Bool
|
, gcCache :: Bool
|
||||||
, gcTmp :: Bool
|
, gcTmp :: Bool
|
||||||
|
, gcUnset :: Bool
|
||||||
} deriving (Eq, Show)
|
} deriving (Eq, Show)
|
||||||
|
|
||||||
|
|
||||||
@ -77,6 +78,9 @@ gcP =
|
|||||||
<*>
|
<*>
|
||||||
switch
|
switch
|
||||||
(short 't' <> long "tmpdirs" <> help "Remove tmpdir leftovers")
|
(short 't' <> long "tmpdirs" <> help "Remove tmpdir leftovers")
|
||||||
|
<*>
|
||||||
|
switch
|
||||||
|
(short 'u' <> long "unset" <> help "Remove all tool versions that are not 'set'")
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@ -134,6 +138,7 @@ gc GCOptions{..} runAppState runLogger = runGC runAppState (do
|
|||||||
liftE $ when gcHLSNoGHC rmHLSNoGHC
|
liftE $ when gcHLSNoGHC rmHLSNoGHC
|
||||||
lift $ when gcCache rmCache
|
lift $ when gcCache rmCache
|
||||||
lift $ when gcTmp rmTmp
|
lift $ when gcTmp rmTmp
|
||||||
|
liftE $ when gcUnset rmUnsetTools
|
||||||
) >>= \case
|
) >>= \case
|
||||||
VRight _ -> do
|
VRight _ -> do
|
||||||
pure ExitSuccess
|
pure ExitSuccess
|
||||||
|
@ -24,7 +24,7 @@ import GHCup.Prelude
|
|||||||
import GHCup.Prelude.Logger
|
import GHCup.Prelude.Logger
|
||||||
import GHCup.Prelude.String.QQ
|
import GHCup.Prelude.String.QQ
|
||||||
|
|
||||||
import Codec.Archive
|
import Control.Concurrent (threadDelay)
|
||||||
#if !MIN_VERSION_base(4,13,0)
|
#if !MIN_VERSION_base(4,13,0)
|
||||||
import Control.Monad.Fail ( MonadFail )
|
import Control.Monad.Fail ( MonadFail )
|
||||||
#endif
|
#endif
|
||||||
@ -328,6 +328,11 @@ install installCommand settings getAppState' runLogger = case installCommand of
|
|||||||
(case instBindist of
|
(case instBindist of
|
||||||
Nothing -> runInstGHC s' $ do
|
Nothing -> runInstGHC s' $ do
|
||||||
(v, vi) <- liftE $ fromVersion instVer GHC
|
(v, vi) <- liftE $ fromVersion instVer GHC
|
||||||
|
forM_ (_viPreInstall =<< vi) $ \msg -> do
|
||||||
|
lift $ logWarn msg
|
||||||
|
lift $ logWarn
|
||||||
|
"...waiting for 5 seconds, you can still abort..."
|
||||||
|
liftIO $ threadDelay 5000000 -- give the user a sec to intervene
|
||||||
liftE $ runBothE' (installGHCBin
|
liftE $ runBothE' (installGHCBin
|
||||||
v
|
v
|
||||||
(maybe GHCupInternal IsolateDir isolateDir)
|
(maybe GHCupInternal IsolateDir isolateDir)
|
||||||
@ -339,6 +344,11 @@ install installCommand settings getAppState' runLogger = case installCommand of
|
|||||||
Just uri -> do
|
Just uri -> do
|
||||||
runInstGHC s'{ settings = settings {noVerify = True}} $ do
|
runInstGHC s'{ settings = settings {noVerify = True}} $ do
|
||||||
(v, vi) <- liftE $ fromVersion instVer GHC
|
(v, vi) <- liftE $ fromVersion instVer GHC
|
||||||
|
forM_ (_viPreInstall =<< vi) $ \msg -> do
|
||||||
|
lift $ logWarn msg
|
||||||
|
lift $ logWarn
|
||||||
|
"...waiting for 5 seconds, you can still abort..."
|
||||||
|
liftIO $ threadDelay 5000000 -- give the user a sec to intervene
|
||||||
liftE $ runBothE' (installGHCBindist
|
liftE $ runBothE' (installGHCBindist
|
||||||
(DownloadInfo uri (Just $ RegexDir "ghc-.*") "" Nothing Nothing)
|
(DownloadInfo uri (Just $ RegexDir "ghc-.*") "" Nothing Nothing)
|
||||||
v
|
v
|
||||||
@ -400,6 +410,11 @@ install installCommand settings getAppState' runLogger = case installCommand of
|
|||||||
(case instBindist of
|
(case instBindist of
|
||||||
Nothing -> runInstTool s' $ do
|
Nothing -> runInstTool s' $ do
|
||||||
(_tvVersion -> v, vi) <- liftE $ fromVersion instVer Cabal
|
(_tvVersion -> v, vi) <- liftE $ fromVersion instVer Cabal
|
||||||
|
forM_ (_viPreInstall =<< vi) $ \msg -> do
|
||||||
|
lift $ logWarn msg
|
||||||
|
lift $ logWarn
|
||||||
|
"...waiting for 5 seconds, you can still abort..."
|
||||||
|
liftIO $ threadDelay 5000000 -- give the user a sec to intervene
|
||||||
liftE $ runBothE' (installCabalBin
|
liftE $ runBothE' (installCabalBin
|
||||||
v
|
v
|
||||||
(maybe GHCupInternal IsolateDir isolateDir)
|
(maybe GHCupInternal IsolateDir isolateDir)
|
||||||
@ -409,6 +424,11 @@ install installCommand settings getAppState' runLogger = case installCommand of
|
|||||||
Just uri -> do
|
Just uri -> do
|
||||||
runInstTool s'{ settings = settings { noVerify = True}} $ do
|
runInstTool s'{ settings = settings { noVerify = True}} $ do
|
||||||
(_tvVersion -> v, vi) <- liftE $ fromVersion instVer Cabal
|
(_tvVersion -> v, vi) <- liftE $ fromVersion instVer Cabal
|
||||||
|
forM_ (_viPreInstall =<< vi) $ \msg -> do
|
||||||
|
lift $ logWarn msg
|
||||||
|
lift $ logWarn
|
||||||
|
"...waiting for 5 seconds, you can still abort..."
|
||||||
|
liftIO $ threadDelay 5000000 -- give the user a sec to intervene
|
||||||
liftE $ runBothE' (installCabalBindist
|
liftE $ runBothE' (installCabalBindist
|
||||||
(DownloadInfo uri Nothing "" Nothing Nothing)
|
(DownloadInfo uri Nothing "" Nothing Nothing)
|
||||||
v
|
v
|
||||||
@ -449,6 +469,11 @@ install installCommand settings getAppState' runLogger = case installCommand of
|
|||||||
(case instBindist of
|
(case instBindist of
|
||||||
Nothing -> runInstTool s' $ do
|
Nothing -> runInstTool s' $ do
|
||||||
(_tvVersion -> v, vi) <- liftE $ fromVersion instVer HLS
|
(_tvVersion -> v, vi) <- liftE $ fromVersion instVer HLS
|
||||||
|
forM_ (_viPreInstall =<< vi) $ \msg -> do
|
||||||
|
lift $ logWarn msg
|
||||||
|
lift $ logWarn
|
||||||
|
"...waiting for 5 seconds, you can still abort..."
|
||||||
|
liftIO $ threadDelay 5000000 -- give the user a sec to intervene
|
||||||
liftE $ runBothE' (installHLSBin
|
liftE $ runBothE' (installHLSBin
|
||||||
v
|
v
|
||||||
(maybe GHCupInternal IsolateDir isolateDir)
|
(maybe GHCupInternal IsolateDir isolateDir)
|
||||||
@ -458,6 +483,11 @@ install installCommand settings getAppState' runLogger = case installCommand of
|
|||||||
Just uri -> do
|
Just uri -> do
|
||||||
runInstTool s'{ settings = settings { noVerify = True}} $ do
|
runInstTool s'{ settings = settings { noVerify = True}} $ do
|
||||||
(_tvVersion -> v, vi) <- liftE $ fromVersion instVer HLS
|
(_tvVersion -> v, vi) <- liftE $ fromVersion instVer HLS
|
||||||
|
forM_ (_viPreInstall =<< vi) $ \msg -> do
|
||||||
|
lift $ logWarn msg
|
||||||
|
lift $ logWarn
|
||||||
|
"...waiting for 5 seconds, you can still abort..."
|
||||||
|
liftIO $ threadDelay 5000000 -- give the user a sec to intervene
|
||||||
-- TODO: support legacy
|
-- TODO: support legacy
|
||||||
liftE $ runBothE' (installHLSBindist
|
liftE $ runBothE' (installHLSBindist
|
||||||
(DownloadInfo uri (if isWindows then Nothing else Just (RegexDir "haskell-language-server-*")) "" Nothing Nothing)
|
(DownloadInfo uri (if isWindows then Nothing else Just (RegexDir "haskell-language-server-*")) "" Nothing Nothing)
|
||||||
@ -499,6 +529,11 @@ install installCommand settings getAppState' runLogger = case installCommand of
|
|||||||
(case instBindist of
|
(case instBindist of
|
||||||
Nothing -> runInstTool s' $ do
|
Nothing -> runInstTool s' $ do
|
||||||
(_tvVersion -> v, vi) <- liftE $ fromVersion instVer Stack
|
(_tvVersion -> v, vi) <- liftE $ fromVersion instVer Stack
|
||||||
|
forM_ (_viPreInstall =<< vi) $ \msg -> do
|
||||||
|
lift $ logWarn msg
|
||||||
|
lift $ logWarn
|
||||||
|
"...waiting for 5 seconds, you can still abort..."
|
||||||
|
liftIO $ threadDelay 5000000 -- give the user a sec to intervene
|
||||||
liftE $ runBothE' (installStackBin
|
liftE $ runBothE' (installStackBin
|
||||||
v
|
v
|
||||||
(maybe GHCupInternal IsolateDir isolateDir)
|
(maybe GHCupInternal IsolateDir isolateDir)
|
||||||
@ -508,6 +543,11 @@ install installCommand settings getAppState' runLogger = case installCommand of
|
|||||||
Just uri -> do
|
Just uri -> do
|
||||||
runInstTool s'{ settings = settings { noVerify = True}} $ do
|
runInstTool s'{ settings = settings { noVerify = True}} $ do
|
||||||
(_tvVersion -> v, vi) <- liftE $ fromVersion instVer Stack
|
(_tvVersion -> v, vi) <- liftE $ fromVersion instVer Stack
|
||||||
|
forM_ (_viPreInstall =<< vi) $ \msg -> do
|
||||||
|
lift $ logWarn msg
|
||||||
|
lift $ logWarn
|
||||||
|
"...waiting for 5 seconds, you can still abort..."
|
||||||
|
liftIO $ threadDelay 5000000 -- give the user a sec to intervene
|
||||||
liftE $ runBothE' (installStackBindist
|
liftE $ runBothE' (installStackBindist
|
||||||
(DownloadInfo uri Nothing "" Nothing Nothing)
|
(DownloadInfo uri Nothing "" Nothing Nothing)
|
||||||
v
|
v
|
||||||
|
@ -199,19 +199,19 @@ prefetch prefetchCommand runAppState runLogger =
|
|||||||
(v, _) <- liftE $ fromVersion mt GHC
|
(v, _) <- liftE $ fromVersion mt GHC
|
||||||
if pfGHCSrc
|
if pfGHCSrc
|
||||||
then liftE $ fetchGHCSrc v pfCacheDir
|
then liftE $ fetchGHCSrc v pfCacheDir
|
||||||
else liftE $ fetchToolBindist (_tvVersion v) GHC pfCacheDir
|
else liftE $ fetchToolBindist v GHC pfCacheDir
|
||||||
PrefetchCabal PrefetchOptions {pfCacheDir} mt -> do
|
PrefetchCabal PrefetchOptions {pfCacheDir} mt -> do
|
||||||
forM_ pfCacheDir (liftIO . createDirRecursive')
|
forM_ pfCacheDir (liftIO . createDirRecursive')
|
||||||
(v, _) <- liftE $ fromVersion mt Cabal
|
(v, _) <- liftE $ fromVersion mt Cabal
|
||||||
liftE $ fetchToolBindist (_tvVersion v) Cabal pfCacheDir
|
liftE $ fetchToolBindist v Cabal pfCacheDir
|
||||||
PrefetchHLS PrefetchOptions {pfCacheDir} mt -> do
|
PrefetchHLS PrefetchOptions {pfCacheDir} mt -> do
|
||||||
forM_ pfCacheDir (liftIO . createDirRecursive')
|
forM_ pfCacheDir (liftIO . createDirRecursive')
|
||||||
(v, _) <- liftE $ fromVersion mt HLS
|
(v, _) <- liftE $ fromVersion mt HLS
|
||||||
liftE $ fetchToolBindist (_tvVersion v) HLS pfCacheDir
|
liftE $ fetchToolBindist v HLS pfCacheDir
|
||||||
PrefetchStack PrefetchOptions {pfCacheDir} mt -> do
|
PrefetchStack PrefetchOptions {pfCacheDir} mt -> do
|
||||||
forM_ pfCacheDir (liftIO . createDirRecursive')
|
forM_ pfCacheDir (liftIO . createDirRecursive')
|
||||||
(v, _) <- liftE $ fromVersion mt Stack
|
(v, _) <- liftE $ fromVersion mt Stack
|
||||||
liftE $ fetchToolBindist (_tvVersion v) Stack pfCacheDir
|
liftE $ fetchToolBindist v Stack pfCacheDir
|
||||||
PrefetchMetadata -> do
|
PrefetchMetadata -> do
|
||||||
pfreq <- lift getPlatformReq
|
pfreq <- lift getPlatformReq
|
||||||
_ <- liftE $ getDownloadsF pfreq
|
_ <- liftE $ getDownloadsF pfreq
|
||||||
|
@ -28,7 +28,6 @@ import Control.Exception.Safe ( MonadMask, MonadCatch )
|
|||||||
#if !MIN_VERSION_base(4,13,0)
|
#if !MIN_VERSION_base(4,13,0)
|
||||||
import Control.Monad.Fail ( MonadFail )
|
import Control.Monad.Fail ( MonadFail )
|
||||||
#endif
|
#endif
|
||||||
import Codec.Archive
|
|
||||||
import Control.Monad.Reader
|
import Control.Monad.Reader
|
||||||
import Control.Monad.Trans.Resource
|
import Control.Monad.Trans.Resource
|
||||||
import Data.Functor
|
import Data.Functor
|
||||||
|
@ -23,7 +23,6 @@ import GHCup.Utils.Dirs
|
|||||||
import GHCup.Prelude.Logger
|
import GHCup.Prelude.Logger
|
||||||
import GHCup.Prelude.String.QQ
|
import GHCup.Prelude.String.QQ
|
||||||
|
|
||||||
import Codec.Archive
|
|
||||||
#if !MIN_VERSION_base(4,13,0)
|
#if !MIN_VERSION_base(4,13,0)
|
||||||
import Control.Monad.Fail ( MonadFail )
|
import Control.Monad.Fail ( MonadFail )
|
||||||
#endif
|
#endif
|
||||||
|
@ -17,6 +17,7 @@ import GHCup.Types
|
|||||||
import GHCup.Prelude.File
|
import GHCup.Prelude.File
|
||||||
import GHCup.Prelude.Logger
|
import GHCup.Prelude.Logger
|
||||||
|
|
||||||
|
import Control.Concurrent (threadDelay)
|
||||||
#if !MIN_VERSION_base(4,13,0)
|
#if !MIN_VERSION_base(4,13,0)
|
||||||
import Control.Monad.Fail ( MonadFail )
|
import Control.Monad.Fail ( MonadFail )
|
||||||
#endif
|
#endif
|
||||||
@ -135,8 +136,15 @@ upgrade uOpts force' fatal Dirs{..} runAppState runLogger = do
|
|||||||
UpgradeGHCupDir -> pure (Just (binDir </> "ghcup" <> exeExt))
|
UpgradeGHCupDir -> pure (Just (binDir </> "ghcup" <> exeExt))
|
||||||
|
|
||||||
runUpgrade runAppState (do
|
runUpgrade runAppState (do
|
||||||
v' <- liftE $ upgradeGHCup target force' fatal
|
|
||||||
GHCupInfo { _ghcupDownloads = dls } <- lift getGHCupInfo
|
GHCupInfo { _ghcupDownloads = dls } <- lift getGHCupInfo
|
||||||
|
Just (tver, vi) <- pure $ getLatest dls GHCup
|
||||||
|
let latestVer = _tvVersion tver
|
||||||
|
forM_ (_viPreInstall vi) $ \msg -> do
|
||||||
|
lift $ logWarn msg
|
||||||
|
lift $ logWarn
|
||||||
|
"...waiting for 5 seconds, you can still abort..."
|
||||||
|
liftIO $ threadDelay 5000000 -- give the user a sec to intervene
|
||||||
|
v' <- liftE $ upgradeGHCup' target force' fatal latestVer
|
||||||
pure (v', dls)
|
pure (v', dls)
|
||||||
) >>= \case
|
) >>= \case
|
||||||
VRight (v', dls) -> do
|
VRight (v', dls) -> do
|
||||||
|
68
lib/GHCup.hs
68
lib/GHCup.hs
@ -100,7 +100,7 @@ fetchToolBindist :: ( MonadFail m
|
|||||||
, MonadIO m
|
, MonadIO m
|
||||||
, MonadUnliftIO m
|
, MonadUnliftIO m
|
||||||
)
|
)
|
||||||
=> Version
|
=> GHCTargetVersion
|
||||||
-> Tool
|
-> Tool
|
||||||
-> Maybe FilePath
|
-> Maybe FilePath
|
||||||
-> Excepts
|
-> Excepts
|
||||||
@ -113,7 +113,7 @@ fetchToolBindist :: ( MonadFail m
|
|||||||
m
|
m
|
||||||
FilePath
|
FilePath
|
||||||
fetchToolBindist v t mfp = do
|
fetchToolBindist v t mfp = do
|
||||||
dlinfo <- liftE $ getDownloadInfo t v
|
dlinfo <- liftE $ getDownloadInfo' t v
|
||||||
liftE $ downloadCached' dlinfo Nothing mfp
|
liftE $ downloadCached' dlinfo Nothing mfp
|
||||||
|
|
||||||
|
|
||||||
@ -273,7 +273,6 @@ getDebugInfo = do
|
|||||||
--[ GHCup upgrade etc ]--
|
--[ GHCup upgrade etc ]--
|
||||||
-------------------------
|
-------------------------
|
||||||
|
|
||||||
|
|
||||||
-- | Upgrade ghcup and place it in @~\/.ghcup\/bin\/ghcup@,
|
-- | Upgrade ghcup and place it in @~\/.ghcup\/bin\/ghcup@,
|
||||||
-- if no path is provided.
|
-- if no path is provided.
|
||||||
upgradeGHCup :: ( MonadMask m
|
upgradeGHCup :: ( MonadMask m
|
||||||
@ -308,11 +307,48 @@ upgradeGHCup :: ( MonadMask m
|
|||||||
m
|
m
|
||||||
Version
|
Version
|
||||||
upgradeGHCup mtarget force' fatal = do
|
upgradeGHCup mtarget force' fatal = do
|
||||||
Dirs {..} <- lift getDirs
|
|
||||||
GHCupInfo { _ghcupDownloads = dls } <- lift getGHCupInfo
|
GHCupInfo { _ghcupDownloads = dls } <- lift getGHCupInfo
|
||||||
|
|
||||||
lift $ logInfo "Upgrading GHCup..."
|
|
||||||
let latestVer = _tvVersion $ fst (fromJust (getLatest dls GHCup))
|
let latestVer = _tvVersion $ fst (fromJust (getLatest dls GHCup))
|
||||||
|
upgradeGHCup' mtarget force' fatal latestVer
|
||||||
|
|
||||||
|
|
||||||
|
-- | Upgrade ghcup and place it in @~\/.ghcup\/bin\/ghcup@,
|
||||||
|
-- if no path is provided.
|
||||||
|
upgradeGHCup' :: ( MonadMask m
|
||||||
|
, MonadReader env m
|
||||||
|
, HasDirs env
|
||||||
|
, HasPlatformReq env
|
||||||
|
, HasGHCupInfo env
|
||||||
|
, HasSettings env
|
||||||
|
, MonadCatch m
|
||||||
|
, HasLog env
|
||||||
|
, MonadThrow m
|
||||||
|
, MonadFail m
|
||||||
|
, MonadResource m
|
||||||
|
, MonadIO m
|
||||||
|
, MonadUnliftIO m
|
||||||
|
)
|
||||||
|
=> Maybe FilePath -- ^ full file destination to write ghcup into
|
||||||
|
-> Bool -- ^ whether to force update regardless
|
||||||
|
-- of currently installed version
|
||||||
|
-> Bool -- ^ whether to throw an error if ghcup is shadowed
|
||||||
|
-> Version
|
||||||
|
-> Excepts
|
||||||
|
'[ CopyError
|
||||||
|
, DigestError
|
||||||
|
, ContentLengthError
|
||||||
|
, GPGError
|
||||||
|
, GPGError
|
||||||
|
, DownloadFailed
|
||||||
|
, NoDownload
|
||||||
|
, NoUpdate
|
||||||
|
, ToolShadowed
|
||||||
|
]
|
||||||
|
m
|
||||||
|
Version
|
||||||
|
upgradeGHCup' mtarget force' fatal latestVer = do
|
||||||
|
Dirs {..} <- lift getDirs
|
||||||
|
lift $ logInfo "Upgrading GHCup..."
|
||||||
(Just ghcupPVPVer) <- pure $ pvpToVersion ghcUpVer ""
|
(Just ghcupPVPVer) <- pure $ pvpToVersion ghcUpVer ""
|
||||||
when (not force' && (latestVer <= ghcupPVPVer)) $ throwE NoUpdate
|
when (not force' && (latestVer <= ghcupPVPVer)) $ throwE NoUpdate
|
||||||
dli <- liftE $ getDownloadInfo GHCup latestVer
|
dli <- liftE $ getDownloadInfo GHCup latestVer
|
||||||
@ -506,6 +542,26 @@ rmOldGHC = do
|
|||||||
forM_ ghcs $ \ghc -> when (ghc `elem` oldGHCs) $ rmGHCVer ghc
|
forM_ ghcs $ \ghc -> when (ghc `elem` oldGHCs) $ rmGHCVer ghc
|
||||||
|
|
||||||
|
|
||||||
|
rmUnsetTools :: ( MonadReader env m
|
||||||
|
, HasGHCupInfo env
|
||||||
|
, HasPlatformReq env
|
||||||
|
, HasDirs env
|
||||||
|
, HasLog env
|
||||||
|
, MonadIO m
|
||||||
|
, MonadFail m
|
||||||
|
, MonadMask m
|
||||||
|
, MonadUnliftIO m
|
||||||
|
)
|
||||||
|
=> Excepts '[NotInstalled, UninstallFailed] m ()
|
||||||
|
rmUnsetTools = do
|
||||||
|
vers <- lift $ listVersions Nothing [ListInstalled True, ListSet False] False True (Nothing, Nothing)
|
||||||
|
forM_ vers $ \ListResult{..} -> case lTool of
|
||||||
|
GHC -> liftE $ rmGHCVer (GHCTargetVersion lCross lVer)
|
||||||
|
HLS -> liftE $ rmHLSVer lVer
|
||||||
|
Cabal -> liftE $ rmCabalVer lVer
|
||||||
|
Stack -> liftE $ rmStackVer lVer
|
||||||
|
GHCup -> pure ()
|
||||||
|
|
||||||
|
|
||||||
rmProfilingLibs :: ( MonadReader env m
|
rmProfilingLibs :: ( MonadReader env m
|
||||||
, HasDirs env
|
, HasDirs env
|
||||||
|
@ -26,7 +26,6 @@ import GHCup.Prelude
|
|||||||
import GHCup.Prelude.File
|
import GHCup.Prelude.File
|
||||||
import GHCup.Prelude.Logger
|
import GHCup.Prelude.Logger
|
||||||
|
|
||||||
import Codec.Archive ( ArchiveResult )
|
|
||||||
import Control.Applicative
|
import Control.Applicative
|
||||||
import Control.Exception.Safe
|
import Control.Exception.Safe
|
||||||
import Control.Monad
|
import Control.Monad
|
||||||
|
@ -34,6 +34,7 @@ import qualified GHCup.Types.Stack as Stack
|
|||||||
import GHCup.Types.Optics
|
import GHCup.Types.Optics
|
||||||
import GHCup.Types.JSON ( )
|
import GHCup.Types.JSON ( )
|
||||||
import GHCup.Utils.Dirs
|
import GHCup.Utils.Dirs
|
||||||
|
import GHCup.Utils.URI
|
||||||
import GHCup.Platform
|
import GHCup.Platform
|
||||||
import GHCup.Prelude
|
import GHCup.Prelude
|
||||||
import GHCup.Prelude.File
|
import GHCup.Prelude.File
|
||||||
@ -77,7 +78,7 @@ import System.Exit
|
|||||||
import System.FilePath
|
import System.FilePath
|
||||||
import System.IO.Error
|
import System.IO.Error
|
||||||
import System.IO.Temp
|
import System.IO.Temp
|
||||||
import URI.ByteString
|
import URI.ByteString hiding (parseURI)
|
||||||
|
|
||||||
import qualified Crypto.Hash.SHA256 as SHA256
|
import qualified Crypto.Hash.SHA256 as SHA256
|
||||||
import qualified Data.ByteString as B
|
import qualified Data.ByteString as B
|
||||||
@ -91,6 +92,8 @@ import qualified Data.Yaml.Aeson as Y
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
-- $setup
|
||||||
|
-- >>> :set -XOverloadedStrings
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@ -149,32 +152,36 @@ getDownloadsF pfreq@(PlatformRequest arch plat _) = do
|
|||||||
-> Excepts
|
-> Excepts
|
||||||
'[DownloadFailed, GPGError, DigestError, ContentLengthError, JSONError, FileDoesNotExistError]
|
'[DownloadFailed, GPGError, DigestError, ContentLengthError, JSONError, FileDoesNotExistError]
|
||||||
m (Either GHCupInfo Stack.SetupInfo)
|
m (Either GHCupInfo Stack.SetupInfo)
|
||||||
dl' NewGHCupURL = fmap Left $ liftE $ getBase @GHCupInfo ghcupURL
|
dl' NewGHCupURL = fmap Left $ liftE (getBase ghcupURL) >>= liftE . decodeMetadata @GHCupInfo
|
||||||
dl' NewStackSetupURL = fmap Right $ liftE $ getBase @Stack.SetupInfo stackSetupURL
|
dl' NewStackSetupURL = fmap Right $ liftE (getBase stackSetupURL) >>= liftE . decodeMetadata @Stack.SetupInfo
|
||||||
dl' (NewGHCupInfo gi) = pure (Left gi)
|
dl' (NewGHCupInfo gi) = pure (Left gi)
|
||||||
dl' (NewSetupInfo si) = pure (Right si)
|
dl' (NewSetupInfo si) = pure (Right si)
|
||||||
dl' (NewURI uri) = catchE @JSONError (\(JSONDecodeError _) -> Right <$> getBase @Stack.SetupInfo uri)
|
dl' (NewURI uri) = do
|
||||||
$ fmap Left $ getBase @GHCupInfo uri
|
base <- liftE $ getBase uri
|
||||||
|
catchE @JSONError (\(JSONDecodeError _) -> do
|
||||||
|
logDebug $ "Couldn't decode " <> T.pack base <> " as GHCupInfo, trying as SetupInfo: "
|
||||||
|
Right <$> decodeMetadata @Stack.SetupInfo base)
|
||||||
|
$ fmap Left (decodeMetadata @GHCupInfo base >>= \gI -> warnOnMetadataUpdate uri gI >> pure gI)
|
||||||
|
|
||||||
fromStackSetupInfo :: MonadThrow m
|
fromStackSetupInfo :: MonadThrow m
|
||||||
=> Stack.SetupInfo
|
=> Stack.SetupInfo
|
||||||
-> [String]
|
-> [String]
|
||||||
-> m GHCupInfo
|
-> m GHCupInfo
|
||||||
fromStackSetupInfo (Stack.siGHCs -> ghcDli) keys = do
|
fromStackSetupInfo (Stack.siGHCs -> ghcDli) keys = do
|
||||||
let ghcVersionsPerKey = (`M.lookup` ghcDli) <$> (T.pack <$> keys)
|
let ghcVersionsPerKey = (`M.lookup` ghcDli) . T.pack <$> keys
|
||||||
ghcVersions = fromMaybe mempty . listToMaybe . catMaybes $ ghcVersionsPerKey
|
ghcVersions = fromMaybe mempty . listToMaybe . catMaybes $ ghcVersionsPerKey
|
||||||
(ghcupInfo' :: M.Map GHCTargetVersion DownloadInfo) <-
|
(ghcupInfo' :: M.Map GHCTargetVersion DownloadInfo) <-
|
||||||
M.mapKeys mkTVer <$> M.traverseMaybeWithKey (\_ a -> pure $ fromStackDownloadInfo a) ghcVersions
|
M.mapKeys mkTVer <$> M.traverseMaybeWithKey (\_ a -> pure $ fromStackDownloadInfo a) ghcVersions
|
||||||
let ghcupDownloads' = M.singleton GHC (M.map fromDownloadInfo ghcupInfo')
|
let ghcupDownloads' = M.singleton GHC (M.map fromDownloadInfo ghcupInfo')
|
||||||
pure (GHCupInfo mempty ghcupDownloads' mempty)
|
pure (GHCupInfo mempty ghcupDownloads' Nothing)
|
||||||
where
|
where
|
||||||
fromDownloadInfo :: DownloadInfo -> VersionInfo
|
fromDownloadInfo :: DownloadInfo -> VersionInfo
|
||||||
fromDownloadInfo dli = let aspec = M.singleton arch (M.singleton plat (M.singleton Nothing dli))
|
fromDownloadInfo dli = let aspec = M.singleton arch (M.singleton plat (M.singleton Nothing dli))
|
||||||
in VersionInfo [] Nothing Nothing Nothing Nothing aspec Nothing Nothing Nothing
|
in VersionInfo [] Nothing Nothing Nothing Nothing aspec Nothing Nothing Nothing Nothing
|
||||||
|
|
||||||
fromStackDownloadInfo :: MonadThrow m => Stack.GHCDownloadInfo -> m DownloadInfo
|
fromStackDownloadInfo :: MonadThrow m => Stack.GHCDownloadInfo -> m DownloadInfo
|
||||||
fromStackDownloadInfo (Stack.GHCDownloadInfo { gdiDownloadInfo = Stack.DownloadInfo{..} }) = do
|
fromStackDownloadInfo (Stack.GHCDownloadInfo { gdiDownloadInfo = Stack.DownloadInfo{..} }) = do
|
||||||
url <- either (\e -> throwM $ ParseError (show e)) pure $ parseURI strictURIParserOptions . E.encodeUtf8 $ downloadInfoUrl
|
url <- either (\e -> throwM $ ParseError (show e)) pure $ parseURI . E.encodeUtf8 $ downloadInfoUrl
|
||||||
sha256 <- maybe (throwM $ DigestMissing url) (pure . E.decodeUtf8) downloadInfoSha256
|
sha256 <- maybe (throwM $ DigestMissing url) (pure . E.decodeUtf8) downloadInfoSha256
|
||||||
pure $ DownloadInfo url (Just $ RegexDir "ghc-.*") sha256 Nothing Nothing
|
pure $ DownloadInfo url (Just $ RegexDir "ghc-.*") sha256 Nothing Nothing
|
||||||
|
|
||||||
@ -185,9 +192,8 @@ getDownloadsF pfreq@(PlatformRequest arch plat _) = do
|
|||||||
mergeGhcupInfo [] = fail "mergeGhcupInfo: internal error: need at least one GHCupInfo"
|
mergeGhcupInfo [] = fail "mergeGhcupInfo: internal error: need at least one GHCupInfo"
|
||||||
mergeGhcupInfo xs@(GHCupInfo{}: _) =
|
mergeGhcupInfo xs@(GHCupInfo{}: _) =
|
||||||
let newDownloads = M.unionsWith (M.unionWith (\_ b2 -> b2)) (_ghcupDownloads <$> xs)
|
let newDownloads = M.unionsWith (M.unionWith (\_ b2 -> b2)) (_ghcupDownloads <$> xs)
|
||||||
newGlobalTools = M.unionsWith (\_ a2 -> a2 ) (_globalTools <$> xs)
|
|
||||||
newToolReqs = M.unionsWith (M.unionWith (\_ b2 -> b2)) (_toolRequirements <$> xs)
|
newToolReqs = M.unionsWith (M.unionWith (\_ b2 -> b2)) (_toolRequirements <$> xs)
|
||||||
in pure $ GHCupInfo newToolReqs newDownloads newGlobalTools
|
in pure $ GHCupInfo newToolReqs newDownloads Nothing
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@ -201,7 +207,7 @@ etagsFile :: FilePath -> FilePath
|
|||||||
etagsFile = (<.> "etags")
|
etagsFile = (<.> "etags")
|
||||||
|
|
||||||
|
|
||||||
getBase :: forall j m env . ( MonadReader env m
|
getBase :: forall m env . ( MonadReader env m
|
||||||
, HasDirs env
|
, HasDirs env
|
||||||
, HasSettings env
|
, HasSettings env
|
||||||
, MonadFail m
|
, MonadFail m
|
||||||
@ -209,10 +215,9 @@ getBase :: forall j m env . ( MonadReader env m
|
|||||||
, MonadCatch m
|
, MonadCatch m
|
||||||
, HasLog env
|
, HasLog env
|
||||||
, MonadMask m
|
, MonadMask m
|
||||||
, FromJSON j
|
|
||||||
)
|
)
|
||||||
=> URI
|
=> URI
|
||||||
-> Excepts '[DownloadFailed, GPGError, DigestError, ContentLengthError, JSONError, FileDoesNotExistError] m j
|
-> Excepts '[DownloadFailed, GPGError, DigestError, ContentLengthError] m FilePath
|
||||||
getBase uri = do
|
getBase uri = do
|
||||||
Settings { noNetwork, downloader, metaMode } <- lift getSettings
|
Settings { noNetwork, downloader, metaMode } <- lift getSettings
|
||||||
|
|
||||||
@ -232,25 +237,8 @@ getBase uri = do
|
|||||||
$ uri
|
$ uri
|
||||||
|
|
||||||
-- if we didn't get a filepath from the download, use the cached yaml
|
-- if we didn't get a filepath from the download, use the cached yaml
|
||||||
actualYaml <- maybe (lift $ yamlFromCache uri) pure mYaml
|
maybe (lift $ yamlFromCache uri) pure mYaml
|
||||||
lift $ logDebug $ "Decoding yaml at: " <> T.pack actualYaml
|
|
||||||
|
|
||||||
liftE
|
|
||||||
. onE_ (onError actualYaml)
|
|
||||||
. lEM' @_ @_ @'[JSONError] (\(displayException -> e) -> JSONDecodeError $ unlines [e, "Consider removing " <> actualYaml <> " manually."])
|
|
||||||
. liftIO
|
|
||||||
. Y.decodeFileEither
|
|
||||||
$ actualYaml
|
|
||||||
where
|
where
|
||||||
-- On error, remove the etags file and set access time to 0. This should ensure the next invocation
|
|
||||||
-- may re-download and succeed.
|
|
||||||
onError :: (MonadReader env m, HasLog env, MonadMask m, MonadCatch m, MonadIO m) => FilePath -> m ()
|
|
||||||
onError fp = do
|
|
||||||
let efp = etagsFile fp
|
|
||||||
handleIO (\e -> logWarn $ "Couldn't remove file " <> T.pack efp <> ", error was: " <> T.pack (displayException e))
|
|
||||||
(hideError doesNotExistErrorType $ rmFile efp)
|
|
||||||
liftIO $ hideError doesNotExistErrorType $ setAccessTime fp (posixSecondsToUTCTime (fromIntegral @Int 0))
|
|
||||||
|
|
||||||
warnCache :: (MonadReader env m, HasLog env, MonadMask m, MonadCatch m, MonadIO m) => FilePath -> Downloader -> m ()
|
warnCache :: (MonadReader env m, HasLog env, MonadMask m, MonadCatch m, MonadIO m) => FilePath -> Downloader -> m ()
|
||||||
warnCache s downloader' = do
|
warnCache s downloader' = do
|
||||||
let tryDownloder = case downloader' of
|
let tryDownloder = case downloader' of
|
||||||
@ -322,6 +310,69 @@ getBase uri = do
|
|||||||
|
|
||||||
pure f
|
pure f
|
||||||
|
|
||||||
|
warnOnMetadataUpdate ::
|
||||||
|
( MonadReader env m
|
||||||
|
, MonadIO m
|
||||||
|
, HasLog env
|
||||||
|
, HasDirs env
|
||||||
|
)
|
||||||
|
=> URI
|
||||||
|
-> GHCupInfo
|
||||||
|
-> m ()
|
||||||
|
warnOnMetadataUpdate uri (GHCupInfo { _metadataUpdate = Just newUri })
|
||||||
|
| scheme' uri == "file"
|
||||||
|
, urlBase' uri /= urlBase' newUri = do
|
||||||
|
confFile <- getConfigFilePath'
|
||||||
|
logWarn $ "New metadata version detected"
|
||||||
|
<> "\n old URI: " <> (decUTF8Safe . serializeURIRef') uri
|
||||||
|
<> "\n new URI: " <> (decUTF8Safe . serializeURIRef') newUri
|
||||||
|
<> "\nYou might need to update your " <> T.pack confFile
|
||||||
|
| scheme' uri /= "file"
|
||||||
|
, uri /= newUri = do
|
||||||
|
confFile <- getConfigFilePath'
|
||||||
|
logWarn $ "New metadata version detected"
|
||||||
|
<> "\n old URI: " <> (decUTF8Safe . serializeURIRef') uri
|
||||||
|
<> "\n new URI: " <> (decUTF8Safe . serializeURIRef') newUri
|
||||||
|
<> "\nYou might need to update your " <> T.pack confFile
|
||||||
|
where
|
||||||
|
scheme' = view (uriSchemeL' % schemeBSL')
|
||||||
|
urlBase' = T.unpack . decUTF8Safe . urlBaseName . view pathL'
|
||||||
|
warnOnMetadataUpdate _ _ = pure ()
|
||||||
|
|
||||||
|
|
||||||
|
decodeMetadata :: forall j m env .
|
||||||
|
( MonadReader env m
|
||||||
|
, HasDirs env
|
||||||
|
, HasSettings env
|
||||||
|
, MonadFail m
|
||||||
|
, MonadIO m
|
||||||
|
, MonadCatch m
|
||||||
|
, HasLog env
|
||||||
|
, MonadMask m
|
||||||
|
, FromJSON j
|
||||||
|
)
|
||||||
|
=> FilePath
|
||||||
|
-> Excepts '[JSONError, FileDoesNotExistError] m j
|
||||||
|
decodeMetadata actualYaml = do
|
||||||
|
lift $ logDebug $ "Decoding yaml at: " <> T.pack actualYaml
|
||||||
|
|
||||||
|
liftE
|
||||||
|
. onE_ (onError actualYaml)
|
||||||
|
. lEM' @_ @_ @'[JSONError] (\(displayException -> e) -> JSONDecodeError $ unlines [e, "Consider removing " <> actualYaml <> " manually."])
|
||||||
|
. liftIO
|
||||||
|
. Y.decodeFileEither
|
||||||
|
$ actualYaml
|
||||||
|
where
|
||||||
|
-- On error, remove the etags file and set access time to 0. This should ensure the next invocation
|
||||||
|
-- may re-download and succeed.
|
||||||
|
onError :: (MonadReader env m, HasLog env, MonadMask m, MonadCatch m, MonadIO m) => FilePath -> m ()
|
||||||
|
onError fp = do
|
||||||
|
let efp = etagsFile fp
|
||||||
|
handleIO (\e -> logWarn $ "Couldn't remove file " <> T.pack efp <> ", error was: " <> T.pack (displayException e))
|
||||||
|
(hideError doesNotExistErrorType $ rmFile efp)
|
||||||
|
liftIO $ hideError doesNotExistErrorType $ setAccessTime fp (posixSecondsToUTCTime (fromIntegral @Int 0))
|
||||||
|
|
||||||
|
|
||||||
getDownloadInfo :: ( MonadReader env m
|
getDownloadInfo :: ( MonadReader env m
|
||||||
, HasPlatformReq env
|
, HasPlatformReq env
|
||||||
, HasGHCupInfo env
|
, HasGHCupInfo env
|
||||||
@ -807,7 +858,7 @@ getGpgOpts =
|
|||||||
-- "baz"
|
-- "baz"
|
||||||
urlBaseName :: ByteString -- ^ the url path (without scheme and host)
|
urlBaseName :: ByteString -- ^ the url path (without scheme and host)
|
||||||
-> ByteString
|
-> ByteString
|
||||||
urlBaseName = snd . B.breakEnd (== _slash) . urlDecode False
|
urlBaseName = snd . B.breakEnd (== _slash)
|
||||||
|
|
||||||
|
|
||||||
-- | Curl saves all intermediate connect headers as well, not just the last one, so we make an effort to take the
|
-- | Curl saves all intermediate connect headers as well, not just the last one, so we make an effort to take the
|
||||||
|
@ -11,6 +11,7 @@ import GHCup.Download.Utils
|
|||||||
import GHCup.Errors
|
import GHCup.Errors
|
||||||
import GHCup.Types.JSON ( )
|
import GHCup.Types.JSON ( )
|
||||||
import GHCup.Prelude
|
import GHCup.Prelude
|
||||||
|
import GHCup.Utils.URI
|
||||||
|
|
||||||
import Control.Applicative
|
import Control.Applicative
|
||||||
import Control.Exception.Safe
|
import Control.Exception.Safe
|
||||||
@ -28,7 +29,7 @@ import Prelude hiding ( abs
|
|||||||
, writeFile
|
, writeFile
|
||||||
)
|
)
|
||||||
import System.ProgressBar
|
import System.ProgressBar
|
||||||
import URI.ByteString
|
import URI.ByteString hiding (parseURI)
|
||||||
|
|
||||||
import qualified Data.ByteString as BS
|
import qualified Data.ByteString as BS
|
||||||
import qualified Data.Map.Strict as M
|
import qualified Data.Map.Strict as M
|
||||||
@ -114,7 +115,7 @@ downloadInternal = go (5 :: Int)
|
|||||||
| otherwise -> throwE $ HTTPStatusError scode (getHeaderMap r)
|
| otherwise -> throwE $ HTTPStatusError scode (getHeaderMap r)
|
||||||
)
|
)
|
||||||
|
|
||||||
followRedirectURL bs = case parseURI strictURIParserOptions bs of
|
followRedirectURL bs = case parseURI bs of
|
||||||
Right uri' -> do
|
Right uri' -> do
|
||||||
(https', host', fullPath', port') <- liftE $ uriToQuadruple uri'
|
(https', host', fullPath', port') <- liftE $ uriToQuadruple uri'
|
||||||
go (redirs - 1) progressBar https' host' fullPath' port' consumer setup addHeaders eCSize
|
go (redirs - 1) progressBar https' host' fullPath' port' consumer setup addHeaders eCSize
|
||||||
|
@ -21,7 +21,6 @@ module GHCup.Errors where
|
|||||||
|
|
||||||
import GHCup.Types
|
import GHCup.Types
|
||||||
|
|
||||||
import Codec.Archive
|
|
||||||
import Control.Exception.Safe
|
import Control.Exception.Safe
|
||||||
import Data.ByteString ( ByteString )
|
import Data.ByteString ( ByteString )
|
||||||
import Data.CaseInsensitive ( CI )
|
import Data.CaseInsensitive ( CI )
|
||||||
@ -209,25 +208,25 @@ instance HFErrorProject NoCompatiblePlatform where
|
|||||||
|
|
||||||
-- | Unable to find a download for the requested version/distro.
|
-- | Unable to find a download for the requested version/distro.
|
||||||
data NoDownload = NoDownload GHCTargetVersion Tool (Maybe PlatformRequest)
|
data NoDownload = NoDownload GHCTargetVersion Tool (Maybe PlatformRequest)
|
||||||
| NoDownload' GlobalTool
|
|
||||||
deriving Show
|
deriving Show
|
||||||
|
|
||||||
instance Pretty NoDownload where
|
instance Pretty NoDownload where
|
||||||
pPrint (NoDownload tver@(GHCTargetVersion mtarget vv) tool mpfreq)
|
pPrint (NoDownload tver@(GHCTargetVersion mtarget vv) tool mpfreq) =
|
||||||
|
let helperMsg
|
||||||
| (Just target) <- mtarget
|
| (Just target) <- mtarget
|
||||||
, target `elem` (T.pack . prettyShow <$> enumFromTo (minBound :: Tool) (maxBound :: Tool))
|
, target `elem` (T.pack . prettyShow <$> enumFromTo (minBound :: Tool) (maxBound :: Tool)) =
|
||||||
= text $ "Unable to find a download for "
|
"\nPerhaps you meant: 'ghcup <command> "
|
||||||
<> show tool
|
|
||||||
<> " version '"
|
|
||||||
<> T.unpack (tVerToText tver)
|
|
||||||
<> maybe "'\n" (\pfreq -> "' on detected platform " <> pfReqToString pfreq <> "\n") mpfreq
|
|
||||||
<> "Perhaps you meant: 'ghcup <command> "
|
|
||||||
<> T.unpack target
|
<> T.unpack target
|
||||||
<> " "
|
<> " "
|
||||||
<> T.unpack (prettyVer vv)
|
<> T.unpack (prettyVer vv)
|
||||||
<> "'"
|
<> "'"
|
||||||
| otherwise = text $ "Unable to find a download for " <> T.unpack (tVerToText tver)
|
| otherwise = ""
|
||||||
pPrint (NoDownload' globalTool) = text $ "Unable to find a download for " <> prettyShow globalTool
|
in text $ "Unable to find a download for "
|
||||||
|
<> show tool
|
||||||
|
<> " version "
|
||||||
|
<> "'" <> T.unpack (tVerToText tver) <> "'"
|
||||||
|
<> maybe "" (\pfreq -> " on detected platform " <> pfReqToString pfreq) mpfreq
|
||||||
|
<> helperMsg
|
||||||
|
|
||||||
instance HFErrorProject NoDownload where
|
instance HFErrorProject NoDownload where
|
||||||
eBase _ = 10
|
eBase _ = 10
|
||||||
@ -389,7 +388,7 @@ data NotInstalled = NotInstalled Tool GHCTargetVersion
|
|||||||
|
|
||||||
instance Pretty NotInstalled where
|
instance Pretty NotInstalled where
|
||||||
pPrint (NotInstalled tool ver) =
|
pPrint (NotInstalled tool ver) =
|
||||||
text "The version" <+> pPrint ver <+> text "of the tool" <+> pPrint tool <+> text "is not installed."
|
text "The version" <+> (text "'" <> pPrint ver <> text "'") <+> text "of the tool" <+> pPrint tool <+> text "is not installed."
|
||||||
|
|
||||||
instance HFErrorProject NotInstalled where
|
instance HFErrorProject NotInstalled where
|
||||||
eBase _ = 130
|
eBase _ = 130
|
||||||
@ -526,7 +525,7 @@ data HTTPNotModified = HTTPNotModified Text
|
|||||||
|
|
||||||
instance Pretty HTTPNotModified where
|
instance Pretty HTTPNotModified where
|
||||||
pPrint (HTTPNotModified etag) =
|
pPrint (HTTPNotModified etag) =
|
||||||
text "Remote resource not modifed, etag was:" <+> pPrint etag
|
text "Remote resource not modified, etag was:" <+> pPrint etag
|
||||||
|
|
||||||
instance HFErrorProject HTTPNotModified where
|
instance HFErrorProject HTTPNotModified where
|
||||||
eBase _ = 240
|
eBase _ = 240
|
||||||
@ -724,7 +723,7 @@ data InstallSetError = forall xs1 xs2 . (Show (V xs1), Pretty (V xs1), HFErrorPr
|
|||||||
|
|
||||||
instance Pretty InstallSetError where
|
instance Pretty InstallSetError where
|
||||||
pPrint (InstallSetError reason1 reason2) =
|
pPrint (InstallSetError reason1 reason2) =
|
||||||
text "Both installation and setting the tool failed. Install error was:"
|
text "Both installation and setting the tool failed.\nInstall error was:"
|
||||||
<+> pPrint reason1
|
<+> pPrint reason1
|
||||||
<+> text "\nSet error was:"
|
<+> text "\nSet error was:"
|
||||||
<+> pPrint reason2
|
<+> pPrint reason2
|
||||||
@ -821,7 +820,7 @@ instance Exception ParseError
|
|||||||
|
|
||||||
instance HFErrorProject ParseError where
|
instance HFErrorProject ParseError where
|
||||||
eBase _ = 500
|
eBase _ = 500
|
||||||
eDesc _ = "A parse error occured."
|
eDesc _ = "A parse error occurred."
|
||||||
|
|
||||||
|
|
||||||
data UnexpectedListLength = UnexpectedListLength String
|
data UnexpectedListLength = UnexpectedListLength String
|
||||||
|
@ -34,7 +34,6 @@ import GHCup.Prelude.String.QQ
|
|||||||
import GHCup.Prelude.Version.QQ
|
import GHCup.Prelude.Version.QQ
|
||||||
import GHCup.Prelude.MegaParsec
|
import GHCup.Prelude.MegaParsec
|
||||||
|
|
||||||
import Codec.Archive ( ArchiveResult )
|
|
||||||
import Control.Applicative
|
import Control.Applicative
|
||||||
import Control.Concurrent ( threadDelay )
|
import Control.Concurrent ( threadDelay )
|
||||||
import Control.Exception.Safe
|
import Control.Exception.Safe
|
||||||
@ -440,18 +439,18 @@ installUnpackedGHC path inst tver forceInstall addConfArgs
|
|||||||
liftE $ mergeGHCFileTree path inst tver forceInstall
|
liftE $ mergeGHCFileTree path inst tver forceInstall
|
||||||
| otherwise = do
|
| otherwise = do
|
||||||
PlatformRequest {..} <- lift getPlatformReq
|
PlatformRequest {..} <- lift getPlatformReq
|
||||||
|
Settings {..} <- lift getSettings
|
||||||
|
|
||||||
let ldOverride
|
addConfArgs' <- sanitizefGHCconfOptions (T.unpack <$> addConfArgs)
|
||||||
| _tvVersion tver >= [vver|8.2.2|]
|
defGHCConfOptions' <- sanitizefGHCconfOptions defGHCConfOptions
|
||||||
, _rPlatform `elem` [Linux Alpine, Darwin]
|
|
||||||
= ["--disable-ld-override"]
|
|
||||||
| otherwise
|
|
||||||
= []
|
|
||||||
|
|
||||||
lift $ logInfo "Installing GHC (this may take a while)"
|
lift $ logInfo "Installing GHC (this may take a while)"
|
||||||
lEM $ execLogged "sh"
|
lEM $ execLogged "sh"
|
||||||
("./configure" : ("--prefix=" <> fromInstallDir inst)
|
("./configure" : ("--prefix=" <> fromInstallDir inst)
|
||||||
: (maybe mempty (\x -> ["--target=" <> T.unpack x]) (_tvTarget tver) <> ldOverride <> (T.unpack <$> addConfArgs))
|
: (maybe mempty (\x -> ["--target=" <> T.unpack x]) (_tvTarget tver)
|
||||||
|
<> ldOverride (_tvVersion tver)
|
||||||
|
<> defGHCConfOptions'
|
||||||
|
<> addConfArgs')
|
||||||
)
|
)
|
||||||
(Just $ fromGHCupPath path)
|
(Just $ fromGHCupPath path)
|
||||||
"ghc-configure"
|
"ghc-configure"
|
||||||
@ -463,6 +462,7 @@ installUnpackedGHC path inst tver forceInstall addConfArgs
|
|||||||
pure ()
|
pure ()
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
mergeGHCFileTree :: ( MonadReader env m
|
mergeGHCFileTree :: ( MonadReader env m
|
||||||
, HasPlatformReq env
|
, HasPlatformReq env
|
||||||
, HasDirs env
|
, HasDirs env
|
||||||
@ -763,6 +763,7 @@ rmGHCVer ver = do
|
|||||||
|
|
||||||
Dirs {..} <- lift getDirs
|
Dirs {..} <- lift getDirs
|
||||||
|
|
||||||
|
when isSetGHC $ do
|
||||||
lift $ hideError doesNotExistErrorType $ rmDirectoryLink (fromGHCupPath baseDir </> "share")
|
lift $ hideError doesNotExistErrorType $ rmDirectoryLink (fromGHCupPath baseDir </> "share")
|
||||||
|
|
||||||
|
|
||||||
@ -790,7 +791,7 @@ compileGHC :: ( MonadMask m
|
|||||||
)
|
)
|
||||||
=> GHCVer
|
=> GHCVer
|
||||||
-> Maybe Text -- ^ cross target
|
-> Maybe Text -- ^ cross target
|
||||||
-> Maybe Version -- ^ overwrite version
|
-> Maybe [VersionPattern]
|
||||||
-> Either Version FilePath -- ^ version to bootstrap with
|
-> Either Version FilePath -- ^ version to bootstrap with
|
||||||
-> Maybe Int -- ^ jobs
|
-> Maybe Int -- ^ jobs
|
||||||
-> Maybe FilePath -- ^ build config
|
-> Maybe FilePath -- ^ build config
|
||||||
@ -826,12 +827,12 @@ compileGHC :: ( MonadMask m
|
|||||||
]
|
]
|
||||||
m
|
m
|
||||||
GHCTargetVersion
|
GHCTargetVersion
|
||||||
compileGHC targetGhc crossTarget ov bstrap jobs mbuildConfig patches aargs buildFlavour buildSystem installDir
|
compileGHC targetGhc crossTarget vps bstrap jobs mbuildConfig patches aargs buildFlavour buildSystem installDir
|
||||||
= do
|
= do
|
||||||
pfreq@PlatformRequest { .. } <- lift getPlatformReq
|
pfreq@PlatformRequest { .. } <- lift getPlatformReq
|
||||||
GHCupInfo { _ghcupDownloads = dls } <- lift getGHCupInfo
|
GHCupInfo { _ghcupDownloads = dls } <- lift getGHCupInfo
|
||||||
|
|
||||||
(workdir, tmpUnpack, tver) <- case targetGhc of
|
(workdir, tmpUnpack, tver, ov) <- case targetGhc of
|
||||||
-- unpack from version tarball
|
-- unpack from version tarball
|
||||||
SourceDist ver -> do
|
SourceDist ver -> do
|
||||||
lift $ logDebug $ "Requested to compile: " <> prettyVer ver <> " with " <> either prettyVer T.pack bstrap
|
lift $ logDebug $ "Requested to compile: " <> prettyVer ver <> " with " <> either prettyVer T.pack bstrap
|
||||||
@ -853,7 +854,11 @@ compileGHC targetGhc crossTarget ov bstrap jobs mbuildConfig patches aargs build
|
|||||||
(view dlSubdir dlInfo)
|
(view dlSubdir dlInfo)
|
||||||
liftE $ applyAnyPatch patches (fromGHCupPath workdir)
|
liftE $ applyAnyPatch patches (fromGHCupPath workdir)
|
||||||
|
|
||||||
pure (workdir, tmpUnpack, Just (GHCTargetVersion crossTarget ver))
|
ov <- case vps of
|
||||||
|
Just vps' -> fmap Just $ expandVersionPattern (Just ver) "" "" "" "" vps'
|
||||||
|
Nothing -> pure Nothing
|
||||||
|
|
||||||
|
pure (workdir, tmpUnpack, Just (GHCTargetVersion crossTarget ver), ov)
|
||||||
|
|
||||||
RemoteDist uri -> do
|
RemoteDist uri -> do
|
||||||
lift $ logDebug $ "Requested to compile (from uri): " <> T.pack (show uri)
|
lift $ logDebug $ "Requested to compile (from uri): " <> T.pack (show uri)
|
||||||
@ -877,13 +882,17 @@ compileGHC targetGhc crossTarget ov bstrap jobs mbuildConfig patches aargs build
|
|||||||
|
|
||||||
let workdir = appendGHCupPath tmpUnpack (takeDirectory bf)
|
let workdir = appendGHCupPath tmpUnpack (takeDirectory bf)
|
||||||
|
|
||||||
pure (workdir, tmpUnpack, GHCTargetVersion crossTarget <$> tver)
|
ov <- case vps of
|
||||||
|
Just vps' -> fmap Just $ expandVersionPattern tver "" "" "" "" vps'
|
||||||
|
Nothing -> pure Nothing
|
||||||
|
|
||||||
|
pure (workdir, tmpUnpack, GHCTargetVersion crossTarget <$> tver, ov)
|
||||||
|
|
||||||
-- clone from git
|
-- clone from git
|
||||||
GitDist GitBranch{..} -> do
|
GitDist GitBranch{..} -> do
|
||||||
tmpUnpack <- lift mkGhcupTmpDir
|
tmpUnpack <- lift mkGhcupTmpDir
|
||||||
let git args = execLogged "git" ("--no-pager":args) (Just $ fromGHCupPath tmpUnpack) "git" Nothing
|
let git args = execLogged "git" ("--no-pager":args) (Just $ fromGHCupPath tmpUnpack) "git" Nothing
|
||||||
tver <- reThrowAll @_ @'[PatchFailed, ProcessError, NotFoundInPATH, DigestError, ContentLengthError, DownloadFailed, GPGError] DownloadFailed $ do
|
(tver, ov) <- cleanUpOnError tmpUnpack $ reThrowAll @_ @'[PatchFailed, ProcessError, NotFoundInPATH, DigestError, ContentLengthError, DownloadFailed, GPGError] DownloadFailed $ do
|
||||||
let rep = fromMaybe "https://gitlab.haskell.org/ghc/ghc.git" repo
|
let rep = fromMaybe "https://gitlab.haskell.org/ghc/ghc.git" repo
|
||||||
lift $ logInfo $ "Fetching git repo " <> T.pack rep <> " at ref " <> T.pack ref <> " (this may take a while)"
|
lift $ logInfo $ "Fetching git repo " <> T.pack rep <> " at ref " <> T.pack ref <> " (this may take a while)"
|
||||||
lEM $ git [ "init" ]
|
lEM $ git [ "init" ]
|
||||||
@ -915,6 +924,7 @@ compileGHC targetGhc crossTarget ov bstrap jobs mbuildConfig patches aargs build
|
|||||||
then pure Nothing
|
then pure Nothing
|
||||||
else fmap Just $ liftE $ gitOut ["describe", "--tags"] (fromGHCupPath tmpUnpack)
|
else fmap Just $ liftE $ gitOut ["describe", "--tags"] (fromGHCupPath tmpUnpack)
|
||||||
chash <- liftE $ gitOut ["rev-parse", "HEAD" ] (fromGHCupPath tmpUnpack)
|
chash <- liftE $ gitOut ["rev-parse", "HEAD" ] (fromGHCupPath tmpUnpack)
|
||||||
|
branch <- liftE $ gitOut ["rev-parse", "--abbrev-ref", "HEAD" ] (fromGHCupPath tmpUnpack)
|
||||||
|
|
||||||
-- clone submodules
|
-- clone submodules
|
||||||
lEM $ git [ "submodule", "update", "--init", "--depth", "1" ]
|
lEM $ git [ "submodule", "update", "--init", "--depth", "1" ]
|
||||||
@ -932,9 +942,19 @@ compileGHC targetGhc crossTarget ov bstrap jobs mbuildConfig patches aargs build
|
|||||||
(if isCommitHash ref then mempty else "\n " <> "commit hash: " <> chash)
|
(if isCommitHash ref then mempty else "\n " <> "commit hash: " <> chash)
|
||||||
liftIO $ threadDelay 5000000 -- give the user a sec to intervene
|
liftIO $ threadDelay 5000000 -- give the user a sec to intervene
|
||||||
|
|
||||||
pure tver
|
ov <- case vps of
|
||||||
|
Just vps' -> fmap Just $ expandVersionPattern
|
||||||
|
tver
|
||||||
|
(take 7 $ T.unpack chash)
|
||||||
|
(T.unpack chash)
|
||||||
|
(maybe "" T.unpack git_describe)
|
||||||
|
(T.unpack branch)
|
||||||
|
vps'
|
||||||
|
Nothing -> pure Nothing
|
||||||
|
|
||||||
pure (tmpUnpack, tmpUnpack, GHCTargetVersion crossTarget <$> tver)
|
pure (tver, ov)
|
||||||
|
|
||||||
|
pure (tmpUnpack, tmpUnpack, GHCTargetVersion crossTarget <$> tver, ov)
|
||||||
-- the version that's installed may differ from the
|
-- the version that's installed may differ from the
|
||||||
-- compiled version, so the user can overwrite it
|
-- compiled version, so the user can overwrite it
|
||||||
installVer <- if | Just ov' <- ov -> pure (GHCTargetVersion crossTarget ov')
|
installVer <- if | Just ov' <- ov -> pure (GHCTargetVersion crossTarget ov')
|
||||||
@ -1074,7 +1094,7 @@ compileGHC targetGhc crossTarget ov bstrap jobs mbuildConfig patches aargs build
|
|||||||
compileHadrianBindist tver workdir ghcdir = do
|
compileHadrianBindist tver workdir ghcdir = do
|
||||||
liftE $ configureBindist tver workdir ghcdir
|
liftE $ configureBindist tver workdir ghcdir
|
||||||
|
|
||||||
lift $ logInfo "Building (this may take a while)..."
|
lift $ logInfo $ "Building GHC version " <> tVerToText tver <> " (this may take a while)..."
|
||||||
hadrian_build <- liftE $ findHadrianFile workdir
|
hadrian_build <- liftE $ findHadrianFile workdir
|
||||||
lEM $ execLogged hadrian_build
|
lEM $ execLogged hadrian_build
|
||||||
( maybe [] (\j -> ["-j" <> show j] ) jobs
|
( maybe [] (\j -> ["-j" <> show j] ) jobs
|
||||||
@ -1101,8 +1121,8 @@ compileGHC targetGhc crossTarget ov bstrap jobs mbuildConfig patches aargs build
|
|||||||
let possible_files = if isWindows
|
let possible_files = if isWindows
|
||||||
then ((workdir </> "hadrian") </>) <$> ["build.bat"]
|
then ((workdir </> "hadrian") </>) <$> ["build.bat"]
|
||||||
else ((workdir </> "hadrian") </>) <$> ["build", "build.sh"]
|
else ((workdir </> "hadrian") </>) <$> ["build", "build.sh"]
|
||||||
exsists <- forM possible_files (\f -> liftIO (doesFileExist f) <&> (,f))
|
exists <- forM possible_files (\f -> liftIO (doesFileExist f) <&> (,f))
|
||||||
case filter fst exsists of
|
case filter fst exists of
|
||||||
[] -> throwE HadrianNotFound
|
[] -> throwE HadrianNotFound
|
||||||
((_, x):_) -> pure x
|
((_, x):_) -> pure x
|
||||||
|
|
||||||
@ -1146,7 +1166,7 @@ compileGHC targetGhc crossTarget ov bstrap jobs mbuildConfig patches aargs build
|
|||||||
|
|
||||||
liftE $ checkBuildConfig (build_mk workdir)
|
liftE $ checkBuildConfig (build_mk workdir)
|
||||||
|
|
||||||
lift $ logInfo "Building (this may take a while)..."
|
lift $ logInfo $ "Building GHC version " <> tVerToText tver <> " (this may take a while)..."
|
||||||
lEM $ make (maybe [] (\j -> ["-j" <> fS (show j)]) jobs) (Just workdir)
|
lEM $ make (maybe [] (\j -> ["-j" <> fS (show j)]) jobs) (Just workdir)
|
||||||
|
|
||||||
if | isCross tver -> do
|
if | isCross tver -> do
|
||||||
@ -1277,6 +1297,8 @@ compileGHC targetGhc crossTarget ov bstrap jobs mbuildConfig patches aargs build
|
|||||||
(_tvTarget tver)
|
(_tvTarget tver)
|
||||||
++ ["--prefix=" <> ghcdir]
|
++ ["--prefix=" <> ghcdir]
|
||||||
++ (if isWindows then ["--enable-tarballs-autodownload"] else [])
|
++ (if isWindows then ["--enable-tarballs-autodownload"] else [])
|
||||||
|
-- https://github.com/haskell/ghcup-hs/issues/1032
|
||||||
|
++ ldOverride (_tvVersion tver)
|
||||||
++ fmap T.unpack aargs
|
++ fmap T.unpack aargs
|
||||||
)
|
)
|
||||||
(Just workdir)
|
(Just workdir)
|
||||||
@ -1351,3 +1373,16 @@ postGHCInstall ver@GHCTargetVersion {..} = do
|
|||||||
forM_ v' $ \(mj, mi) -> lift (getGHCForPVP (PVP (fromIntegral mj :| [fromIntegral mi])) _tvTarget)
|
forM_ v' $ \(mj, mi) -> lift (getGHCForPVP (PVP (fromIntegral mj :| [fromIntegral mi])) _tvTarget)
|
||||||
>>= mapM_ (\v -> liftE $ setGHC v SetGHC_XY Nothing)
|
>>= mapM_ (\v -> liftE $ setGHC v SetGHC_XY Nothing)
|
||||||
|
|
||||||
|
|
||||||
|
ldOverride :: Version -> [String]
|
||||||
|
ldOverride ver
|
||||||
|
| ver >= [vver|8.2.2|]
|
||||||
|
= ["--disable-ld-override"]
|
||||||
|
| otherwise
|
||||||
|
= []
|
||||||
|
|
||||||
|
sanitizefGHCconfOptions :: MonadFail m => [String] -> m [String]
|
||||||
|
sanitizefGHCconfOptions args
|
||||||
|
| "--prefix" `elem` fmap (takeWhile (/= '=')) args = fail "Don't explicitly set --prefix ...aborting"
|
||||||
|
| otherwise = pure args
|
||||||
|
|
||||||
|
@ -30,7 +30,6 @@ import GHCup.Prelude.Logger
|
|||||||
import GHCup.Prelude.Process
|
import GHCup.Prelude.Process
|
||||||
import GHCup.Prelude.String.QQ
|
import GHCup.Prelude.String.QQ
|
||||||
|
|
||||||
import Codec.Archive ( ArchiveResult )
|
|
||||||
import Control.Applicative
|
import Control.Applicative
|
||||||
import Control.Exception.Safe
|
import Control.Exception.Safe
|
||||||
import Control.Monad
|
import Control.Monad
|
||||||
@ -336,7 +335,7 @@ compileHLS :: ( MonadMask m
|
|||||||
=> HLSVer
|
=> HLSVer
|
||||||
-> [Version]
|
-> [Version]
|
||||||
-> Maybe Int
|
-> Maybe Int
|
||||||
-> Either Bool Version
|
-> Maybe [VersionPattern]
|
||||||
-> InstallDir
|
-> InstallDir
|
||||||
-> Maybe (Either FilePath URI)
|
-> Maybe (Either FilePath URI)
|
||||||
-> Maybe URI
|
-> Maybe URI
|
||||||
@ -354,7 +353,7 @@ compileHLS :: ( MonadMask m
|
|||||||
, BuildFailed
|
, BuildFailed
|
||||||
, NotInstalled
|
, NotInstalled
|
||||||
] m Version
|
] m Version
|
||||||
compileHLS targetHLS ghcs jobs ov installDir cabalProject cabalProjectLocal updateCabal patches cabalArgs = do
|
compileHLS targetHLS ghcs jobs vps installDir cabalProject cabalProjectLocal updateCabal patches cabalArgs = do
|
||||||
pfreq@PlatformRequest { .. } <- lift getPlatformReq
|
pfreq@PlatformRequest { .. } <- lift getPlatformReq
|
||||||
GHCupInfo { _ghcupDownloads = dls } <- lift getGHCupInfo
|
GHCupInfo { _ghcupDownloads = dls } <- lift getGHCupInfo
|
||||||
Dirs { .. } <- lift getDirs
|
Dirs { .. } <- lift getDirs
|
||||||
@ -363,7 +362,7 @@ compileHLS targetHLS ghcs jobs ov installDir cabalProject cabalProjectLocal upda
|
|||||||
lift $ logInfo "Updating cabal DB"
|
lift $ logInfo "Updating cabal DB"
|
||||||
lEM $ exec "cabal" ["update"] (Just $ fromGHCupPath tmpDir) Nothing
|
lEM $ exec "cabal" ["update"] (Just $ fromGHCupPath tmpDir) Nothing
|
||||||
|
|
||||||
(workdir, tmpUnpack, tver, git_describe) <- case targetHLS of
|
(workdir, tmpUnpack, tver, ov) <- case targetHLS of
|
||||||
-- unpack from version tarball
|
-- unpack from version tarball
|
||||||
SourceDist tver -> do
|
SourceDist tver -> do
|
||||||
lift $ logDebug $ "Requested to compile: " <> prettyVer tver
|
lift $ logDebug $ "Requested to compile: " <> prettyVer tver
|
||||||
@ -383,7 +382,11 @@ compileHLS targetHLS ghcs jobs ov installDir cabalProject cabalProjectLocal upda
|
|||||||
(liftE . intoSubdir tmpUnpack)
|
(liftE . intoSubdir tmpUnpack)
|
||||||
(view dlSubdir dlInfo)
|
(view dlSubdir dlInfo)
|
||||||
|
|
||||||
pure (workdir, tmpUnpack, tver, Nothing)
|
ov <- case vps of
|
||||||
|
Just vps' -> fmap Just $ expandVersionPattern (Just tver) "" "" "" "" vps'
|
||||||
|
Nothing -> pure Nothing
|
||||||
|
|
||||||
|
pure (workdir, tmpUnpack, tver, ov)
|
||||||
|
|
||||||
HackageDist tver -> do
|
HackageDist tver -> do
|
||||||
lift $ logDebug $ "Requested to compile (from hackage): " <> prettyVer tver
|
lift $ logDebug $ "Requested to compile (from hackage): " <> prettyVer tver
|
||||||
@ -397,7 +400,11 @@ compileHLS targetHLS ghcs jobs ov installDir cabalProject cabalProjectLocal upda
|
|||||||
|
|
||||||
let workdir = appendGHCupPath tmpUnpack hls
|
let workdir = appendGHCupPath tmpUnpack hls
|
||||||
|
|
||||||
pure (workdir, tmpUnpack, tver, Nothing)
|
ov <- case vps of
|
||||||
|
Just vps' -> fmap Just $ expandVersionPattern (Just tver) "" "" "" "" vps'
|
||||||
|
Nothing -> pure Nothing
|
||||||
|
|
||||||
|
pure (workdir, tmpUnpack, tver, ov)
|
||||||
|
|
||||||
RemoteDist uri -> do
|
RemoteDist uri -> do
|
||||||
lift $ logDebug $ "Requested to compile (from uri): " <> T.pack (show uri)
|
lift $ logDebug $ "Requested to compile (from uri): " <> T.pack (show uri)
|
||||||
@ -420,13 +427,17 @@ compileHLS targetHLS ghcs jobs ov installDir cabalProject cabalProjectLocal upda
|
|||||||
|
|
||||||
let workdir = appendGHCupPath tmpUnpack (takeDirectory cf)
|
let workdir = appendGHCupPath tmpUnpack (takeDirectory cf)
|
||||||
|
|
||||||
pure (workdir, tmpUnpack, tver, Nothing)
|
ov <- case vps of
|
||||||
|
Just vps' -> fmap Just $ expandVersionPattern (Just tver) "" "" "" "" vps'
|
||||||
|
Nothing -> pure Nothing
|
||||||
|
|
||||||
|
pure (workdir, tmpUnpack, tver, ov)
|
||||||
|
|
||||||
-- clone from git
|
-- clone from git
|
||||||
GitDist GitBranch{..} -> do
|
GitDist GitBranch{..} -> do
|
||||||
tmpUnpack <- lift mkGhcupTmpDir
|
tmpUnpack <- lift mkGhcupTmpDir
|
||||||
let git args = execLogged "git" ("--no-pager":args) (Just $ fromGHCupPath tmpUnpack) "git" Nothing
|
let git args = execLogged "git" ("--no-pager":args) (Just $ fromGHCupPath tmpUnpack) "git" Nothing
|
||||||
reThrowAll @_ @'[ProcessError] DownloadFailed $ do
|
cleanUpOnError tmpUnpack $ reThrowAll @_ @'[ProcessError] DownloadFailed $ do
|
||||||
let rep = fromMaybe "https://github.com/haskell/haskell-language-server.git" repo
|
let rep = fromMaybe "https://github.com/haskell/haskell-language-server.git" repo
|
||||||
lift $ logInfo $ "Fetching git repo " <> T.pack rep <> " at ref " <> T.pack ref <> " (this may take a while)"
|
lift $ logInfo $ "Fetching git repo " <> T.pack rep <> " at ref " <> T.pack ref <> " (this may take a while)"
|
||||||
lEM $ git [ "init" ]
|
lEM $ git [ "init" ]
|
||||||
@ -460,28 +471,31 @@ compileHLS targetHLS ghcs jobs ov installDir cabalProject cabalProjectLocal upda
|
|||||||
then pure Nothing
|
then pure Nothing
|
||||||
else fmap Just $ gitOut ["describe", "--tags"] (fromGHCupPath tmpUnpack)
|
else fmap Just $ gitOut ["describe", "--tags"] (fromGHCupPath tmpUnpack)
|
||||||
chash <- gitOut ["rev-parse", "HEAD" ] (fromGHCupPath tmpUnpack)
|
chash <- gitOut ["rev-parse", "HEAD" ] (fromGHCupPath tmpUnpack)
|
||||||
|
branch <- gitOut ["rev-parse", "--abbrev-ref", "HEAD" ] (fromGHCupPath tmpUnpack)
|
||||||
tver <- getCabalVersion (fromGHCupPath tmpUnpack </> "haskell-language-server.cabal")
|
tver <- getCabalVersion (fromGHCupPath tmpUnpack </> "haskell-language-server.cabal")
|
||||||
|
|
||||||
liftE $ catchWarn $ lEM @_ @'[ProcessError] $ darwinNotarization _rPlatform (fromGHCupPath tmpUnpack)
|
liftE $ catchWarn $ lEM @_ @'[ProcessError] $ darwinNotarization _rPlatform (fromGHCupPath tmpUnpack)
|
||||||
|
|
||||||
|
ov <- case vps of
|
||||||
|
Just vps' -> fmap Just $ expandVersionPattern
|
||||||
|
(Just tver)
|
||||||
|
(take 7 $ T.unpack chash)
|
||||||
|
(T.unpack chash)
|
||||||
|
(maybe "" T.unpack git_describe)
|
||||||
|
(T.unpack branch)
|
||||||
|
vps'
|
||||||
|
Nothing -> pure Nothing
|
||||||
|
|
||||||
lift $ logInfo $ "Examining git ref " <> T.pack ref <> "\n " <>
|
lift $ logInfo $ "Examining git ref " <> T.pack ref <> "\n " <>
|
||||||
"HLS version (from cabal file): " <> prettyVer tver <>
|
"HLS version (from cabal file): " <> prettyVer tver <>
|
||||||
|
"\n branch: " <> branch <>
|
||||||
(if not shallow_clone then "\n " <> "'git describe' output: " <> fromJust git_describe else mempty) <>
|
(if not shallow_clone then "\n " <> "'git describe' output: " <> fromJust git_describe else mempty) <>
|
||||||
(if isCommitHash ref then mempty else "\n " <> "commit hash: " <> chash)
|
(if isCommitHash ref then mempty else "\n " <> "commit hash: " <> chash)
|
||||||
|
pure (tmpUnpack, tmpUnpack, tver, ov)
|
||||||
pure (tmpUnpack, tmpUnpack, tver, git_describe)
|
|
||||||
|
|
||||||
-- the version that's installed may differ from the
|
-- the version that's installed may differ from the
|
||||||
-- compiled version, so the user can overwrite it
|
-- compiled version, so the user can overwrite it
|
||||||
installVer <- case ov of
|
installVer <- maybe (pure tver) pure ov
|
||||||
Left True -> case git_describe of
|
|
||||||
-- git describe
|
|
||||||
Just h -> either (fail . displayException) pure . version $ h
|
|
||||||
-- git describe, but not building from git, lol
|
|
||||||
Nothing -> pure tver
|
|
||||||
-- default: use detected version
|
|
||||||
Left False -> pure tver
|
|
||||||
-- overwrite version with users value
|
|
||||||
Right v -> pure v
|
|
||||||
|
|
||||||
liftE $ runBuildAction
|
liftE $ runBuildAction
|
||||||
tmpUnpack
|
tmpUnpack
|
||||||
@ -559,9 +573,7 @@ compileHLS targetHLS ghcs jobs ov installDir cabalProject cabalProjectLocal upda
|
|||||||
|
|
||||||
pure installVer
|
pure installVer
|
||||||
where
|
where
|
||||||
gitDescribeRequested = case ov of
|
gitDescribeRequested = maybe False (GitDescribe `elem`) vps
|
||||||
Left b -> b
|
|
||||||
_ -> False
|
|
||||||
|
|
||||||
|
|
||||||
-----------------
|
-----------------
|
||||||
|
@ -8,7 +8,7 @@
|
|||||||
|
|
||||||
|
|
||||||
{-|
|
{-|
|
||||||
Module : GHCup.Plaform
|
Module : GHCup.Platform
|
||||||
Description : Retrieving platform information
|
Description : Retrieving platform information
|
||||||
Copyright : (c) Julian Ospald, 2020
|
Copyright : (c) Julian Ospald, 2020
|
||||||
License : LGPL-3.0
|
License : LGPL-3.0
|
||||||
@ -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
|
||||||
|
@ -387,7 +387,7 @@ rmLink fp
|
|||||||
--
|
--
|
||||||
-- This overwrites previously existing files.
|
-- This overwrites previously existing files.
|
||||||
--
|
--
|
||||||
-- On windows, this requires that 'ensureGlobalTools' was run beforehand.
|
-- On windows, this requires that 'ensureShimGen' was run beforehand.
|
||||||
createLink :: ( MonadMask m
|
createLink :: ( MonadMask m
|
||||||
, MonadThrow m
|
, MonadThrow m
|
||||||
, HasLog env
|
, HasLog env
|
||||||
|
@ -240,7 +240,7 @@ recreateSymlink symsource newsym fail' = do
|
|||||||
createSymbolicLink sympoint newsym
|
createSymbolicLink sympoint newsym
|
||||||
|
|
||||||
|
|
||||||
-- copys files, recreates symlinks, fails on all other types
|
-- copies files, recreates symlinks, fails on all other types
|
||||||
install :: FilePath -> FilePath -> Bool -> IO ()
|
install :: FilePath -> FilePath -> Bool -> IO ()
|
||||||
install from to fail' = do
|
install from to fail' = do
|
||||||
fs <- PF.getSymbolicLinkStatus from
|
fs <- PF.getSymbolicLinkStatus from
|
||||||
|
@ -57,12 +57,10 @@ import qualified Data.Text.Lazy.Encoding as TLE
|
|||||||
|
|
||||||
-- $setup
|
-- $setup
|
||||||
-- >>> import Data.ByteString.Internal (c2w, w2c)
|
-- >>> import Data.ByteString.Internal (c2w, w2c)
|
||||||
-- >>> import Test.QuickCheck
|
|
||||||
-- >>> import Data.Word8
|
-- >>> import Data.Word8
|
||||||
-- >>> import qualified Data.Text as T
|
-- >>> import qualified Data.Text as T
|
||||||
-- >>> import qualified Data.Char as C
|
-- >>> import qualified Data.Char as C
|
||||||
-- >>> import Data.List
|
-- >>> import Data.List
|
||||||
-- >>> instance Arbitrary T.Text where arbitrary = T.pack <$> arbitrary
|
|
||||||
|
|
||||||
|
|
||||||
fS :: IsString a => String -> a
|
fS :: IsString a => String -> a
|
||||||
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue
Block a user