Compare commits
1 Commits
fix-adjust
...
test-M1
| Author | SHA1 | Date | |
|---|---|---|---|
|
5f3e0c494b
|
136
.gitlab-ci.yml
136
.gitlab-ci.yml
@@ -1,8 +1,6 @@
|
|||||||
stages:
|
stages:
|
||||||
- checks
|
- hlint
|
||||||
- quick-test
|
|
||||||
- test
|
- test
|
||||||
- expensive-test
|
|
||||||
- release
|
- release
|
||||||
|
|
||||||
variables:
|
variables:
|
||||||
@@ -168,7 +166,7 @@ variables:
|
|||||||
set -Eeuo pipefail
|
set -Eeuo pipefail
|
||||||
function runInNixShell() {
|
function runInNixShell() {
|
||||||
time nix-shell $CI_PROJECT_DIR/.gitlab/shell.nix \
|
time nix-shell $CI_PROJECT_DIR/.gitlab/shell.nix \
|
||||||
-I nixpkgs=https://github.com/angerman/nixpkgs/archive/75f7281738b.tar.gz \
|
-I nixpkgs=https://github.com/bgamari/nixpkgs/archive/37c60356e3f83c708a78a96fdd914b5ffc1f551c.tar.gz \
|
||||||
--argstr system "aarch64-darwin" \
|
--argstr system "aarch64-darwin" \
|
||||||
--pure \
|
--pure \
|
||||||
--keep CI_PROJECT_DIR \
|
--keep CI_PROJECT_DIR \
|
||||||
@@ -244,21 +242,21 @@ test:linux:stack:
|
|||||||
######## bootstrap test ########
|
######## bootstrap test ########
|
||||||
|
|
||||||
test:linux:bootstrap_script:
|
test:linux:bootstrap_script:
|
||||||
stage: quick-test
|
stage: test
|
||||||
before_script:
|
before_script:
|
||||||
- ./.gitlab/before_script/linux/install_deps_minimal.sh
|
- ./.gitlab/before_script/linux/install_deps_minimal.sh
|
||||||
script:
|
script:
|
||||||
- ./.gitlab/script/ghcup_bootstrap.sh
|
- ./.gitlab/script/ghcup_bootstrap.sh
|
||||||
variables:
|
variables:
|
||||||
GHC_VERSION: "8.10.7"
|
GHC_VERSION: "8.10.6"
|
||||||
CABAL_VERSION: "3.6.2.0"
|
CABAL_VERSION: "3.4.0.0"
|
||||||
extends:
|
extends:
|
||||||
- .debian
|
- .debian
|
||||||
- .root_cleanup
|
- .root_cleanup
|
||||||
needs: []
|
needs: []
|
||||||
|
|
||||||
test:windows:bootstrap_powershell_script:
|
test:windows:bootstrap_powershell_script:
|
||||||
stage: quick-test
|
stage: test
|
||||||
script:
|
script:
|
||||||
- ./scripts/bootstrap/bootstrap-haskell.ps1 -InstallDir $CI_PROJECT_DIR -BootstrapUrl $CI_PROJECT_DIR/bootstrap-haskell -InBash
|
- ./scripts/bootstrap/bootstrap-haskell.ps1 -InstallDir $CI_PROJECT_DIR -BootstrapUrl $CI_PROJECT_DIR/bootstrap-haskell -InBash
|
||||||
after_script:
|
after_script:
|
||||||
@@ -267,8 +265,8 @@ test:windows:bootstrap_powershell_script:
|
|||||||
- "[Environment]::SetEnvironmentVariable('CABAL_DIR', $null, [System.EnvironmentVariableTarget]::User)"
|
- "[Environment]::SetEnvironmentVariable('CABAL_DIR', $null, [System.EnvironmentVariableTarget]::User)"
|
||||||
- bash ./.gitlab/after_script.sh
|
- bash ./.gitlab/after_script.sh
|
||||||
variables:
|
variables:
|
||||||
GHC_VERSION: "8.10.7"
|
GHC_VERSION: "8.10.6"
|
||||||
CABAL_VERSION: "3.6.2.0"
|
CABAL_VERSION: "3.4.0.0"
|
||||||
extends:
|
extends:
|
||||||
- .windows
|
- .windows
|
||||||
needs: []
|
needs: []
|
||||||
@@ -279,19 +277,19 @@ test:linux:
|
|||||||
stage: test
|
stage: test
|
||||||
extends: .test_ghcup_version:linux
|
extends: .test_ghcup_version:linux
|
||||||
variables:
|
variables:
|
||||||
GHC_VERSION: "8.10.7"
|
GHC_VERSION: "8.10.6"
|
||||||
CABAL_VERSION: "3.6.2.0"
|
CABAL_VERSION: "3.4.0.0"
|
||||||
needs: []
|
needs: []
|
||||||
|
|
||||||
test:linux:hls:
|
test:linux:hls:
|
||||||
stage: expensive-test
|
stage: test
|
||||||
extends:
|
extends:
|
||||||
- .test_ghcup_version
|
- .test_ghcup_version
|
||||||
- .debian
|
- .debian
|
||||||
variables:
|
variables:
|
||||||
GHC_VERSION: "8.10.7"
|
GHC_VERSION: "8.10.7"
|
||||||
HLS_TARGET_VERSION: "1.4.0"
|
HLS_TARGET_VERSION: "1.4.0"
|
||||||
CABAL_VERSION: "3.6.2.0"
|
CABAL_VERSION: "3.6.0.0"
|
||||||
needs: []
|
needs: []
|
||||||
when: manual
|
when: manual
|
||||||
allow_failure: true
|
allow_failure: true
|
||||||
@@ -301,14 +299,14 @@ test:linux:hls:
|
|||||||
- ./.gitlab/script/ghcup_hls.sh
|
- ./.gitlab/script/ghcup_hls.sh
|
||||||
|
|
||||||
test:linux:cross-armv7:
|
test:linux:cross-armv7:
|
||||||
stage: expensive-test
|
stage: test
|
||||||
extends:
|
extends:
|
||||||
- .test_ghcup_version
|
- .test_ghcup_version
|
||||||
- .debian
|
- .debian
|
||||||
variables:
|
variables:
|
||||||
GHC_VERSION: "8.10.6"
|
GHC_VERSION: "8.10.5"
|
||||||
GHC_TARGET_VERSION: "8.10.7"
|
GHC_TARGET_VERSION: "8.10.6"
|
||||||
CABAL_VERSION: "3.6.2.0"
|
CABAL_VERSION: "3.4.0.0"
|
||||||
CROSS: "arm-linux-gnueabihf"
|
CROSS: "arm-linux-gnueabihf"
|
||||||
needs: []
|
needs: []
|
||||||
when: manual
|
when: manual
|
||||||
@@ -319,15 +317,15 @@ test:linux:cross-armv7:
|
|||||||
- ./.gitlab/script/ghcup_cross.sh
|
- ./.gitlab/script/ghcup_cross.sh
|
||||||
|
|
||||||
test:linux:git:hadrian:
|
test:linux:git:hadrian:
|
||||||
stage: expensive-test
|
stage: test
|
||||||
extends:
|
extends:
|
||||||
- .test_ghcup_version
|
- .test_ghcup_version
|
||||||
- .debian
|
- .debian
|
||||||
variables:
|
variables:
|
||||||
GHC_VERSION: "8.10.7"
|
GHC_VERSION: "8.10.6"
|
||||||
GHC_GIT_TAG: "ghc-9.0.1-release"
|
GHC_GIT_TAG: "ghc-9.0.1-release"
|
||||||
GHC_GIT_VERSION: "9.0.1"
|
GHC_GIT_VERSION: "9.0.1"
|
||||||
CABAL_VERSION: "3.6.2.0"
|
CABAL_VERSION: "3.4.0.0"
|
||||||
CROSS: ""
|
CROSS: ""
|
||||||
needs: []
|
needs: []
|
||||||
when: manual
|
when: manual
|
||||||
@@ -344,8 +342,8 @@ test:linux:32bit:
|
|||||||
stage: test
|
stage: test
|
||||||
extends: .test_ghcup_version:linux32
|
extends: .test_ghcup_version:linux32
|
||||||
variables:
|
variables:
|
||||||
GHC_VERSION: "8.10.7"
|
GHC_VERSION: "8.10.6"
|
||||||
CABAL_VERSION: "3.6.2.0"
|
CABAL_VERSION: "3.2.0.0"
|
||||||
needs: []
|
needs: []
|
||||||
|
|
||||||
######## arm tests ########
|
######## arm tests ########
|
||||||
@@ -354,8 +352,8 @@ test:linux:armv7:
|
|||||||
stage: test
|
stage: test
|
||||||
extends: .test_ghcup_version:armv7
|
extends: .test_ghcup_version:armv7
|
||||||
variables:
|
variables:
|
||||||
GHC_VERSION: "8.10.7"
|
GHC_VERSION: "8.10.4"
|
||||||
CABAL_VERSION: "3.6.2.0"
|
CABAL_VERSION: "3.4.0.0"
|
||||||
CROSS: ""
|
CROSS: ""
|
||||||
when: manual
|
when: manual
|
||||||
needs: []
|
needs: []
|
||||||
@@ -364,8 +362,8 @@ test:linux:aarch64:
|
|||||||
stage: test
|
stage: test
|
||||||
extends: .test_ghcup_version:aarch64
|
extends: .test_ghcup_version:aarch64
|
||||||
variables:
|
variables:
|
||||||
GHC_VERSION: "8.10.7"
|
GHC_VERSION: "8.10.4"
|
||||||
CABAL_VERSION: "3.6.2.0"
|
CABAL_VERSION: "3.4.0.0"
|
||||||
CROSS: ""
|
CROSS: ""
|
||||||
when: manual
|
when: manual
|
||||||
needs: []
|
needs: []
|
||||||
@@ -376,16 +374,16 @@ test:mac:
|
|||||||
stage: test
|
stage: test
|
||||||
extends: .test_ghcup_version:darwin
|
extends: .test_ghcup_version:darwin
|
||||||
variables:
|
variables:
|
||||||
GHC_VERSION: "8.10.7"
|
GHC_VERSION: "8.10.4"
|
||||||
CABAL_VERSION: "3.6.2.0"
|
CABAL_VERSION: "3.4.0.0"
|
||||||
needs: []
|
needs: []
|
||||||
|
|
||||||
test:mac:aarch64:
|
test:mac:aarch64:
|
||||||
stage: test
|
stage: test
|
||||||
extends: .test_ghcup_version:darwin:aarch64
|
extends: .test_ghcup_version:darwin:aarch64
|
||||||
variables:
|
variables:
|
||||||
GHC_VERSION: "8.10.7"
|
GHC_VERSION: "8.10.6"
|
||||||
CABAL_VERSION: "3.6.2.0"
|
CABAL_VERSION: "3.4.0.0"
|
||||||
needs: []
|
needs: []
|
||||||
allow_failure: true
|
allow_failure: true
|
||||||
|
|
||||||
@@ -396,8 +394,8 @@ test:freebsd12:
|
|||||||
stage: test
|
stage: test
|
||||||
extends: .test_ghcup_version:freebsd12
|
extends: .test_ghcup_version:freebsd12
|
||||||
variables:
|
variables:
|
||||||
GHC_VERSION: "8.10.7"
|
GHC_VERSION: "8.10.4"
|
||||||
CABAL_VERSION: "3.6.2.0"
|
CABAL_VERSION: "3.4.0.0"
|
||||||
allow_failure: true # freebsd runners are unreliable
|
allow_failure: true # freebsd runners are unreliable
|
||||||
when: manual
|
when: manual
|
||||||
needs: []
|
needs: []
|
||||||
@@ -406,8 +404,8 @@ test:freebsd13:
|
|||||||
stage: test
|
stage: test
|
||||||
extends: .test_ghcup_version:freebsd13
|
extends: .test_ghcup_version:freebsd13
|
||||||
variables:
|
variables:
|
||||||
GHC_VERSION: "8.10.7"
|
GHC_VERSION: "8.10.4"
|
||||||
CABAL_VERSION: "3.6.2.0"
|
CABAL_VERSION: "3.4.0.0"
|
||||||
allow_failure: true # freebsd runners are unreliable
|
allow_failure: true # freebsd runners are unreliable
|
||||||
when: manual
|
when: manual
|
||||||
needs: []
|
needs: []
|
||||||
@@ -418,8 +416,8 @@ test:windows:
|
|||||||
stage: test
|
stage: test
|
||||||
extends: .test_ghcup_version:windows
|
extends: .test_ghcup_version:windows
|
||||||
variables:
|
variables:
|
||||||
GHC_VERSION: "8.10.7"
|
GHC_VERSION: "8.10.6"
|
||||||
CABAL_VERSION: "3.6.2.0"
|
CABAL_VERSION: "3.4.0.0"
|
||||||
needs: []
|
needs: []
|
||||||
|
|
||||||
# test:windows:scoop:
|
# test:windows:scoop:
|
||||||
@@ -439,8 +437,8 @@ release:linux:64bit:
|
|||||||
- ./.gitlab/before_script/linux/alpine/install_deps.sh
|
- ./.gitlab/before_script/linux/alpine/install_deps.sh
|
||||||
variables:
|
variables:
|
||||||
ARTIFACT: "x86_64-linux-ghcup"
|
ARTIFACT: "x86_64-linux-ghcup"
|
||||||
GHC_VERSION: "8.10.7"
|
GHC_VERSION: "8.10.6"
|
||||||
CABAL_VERSION: "3.6.2.0"
|
CABAL_VERSION: "3.4.0.0"
|
||||||
|
|
||||||
|
|
||||||
release:linux:32bit:
|
release:linux:32bit:
|
||||||
@@ -453,8 +451,8 @@ release:linux:32bit:
|
|||||||
- ./.gitlab/before_script/linux/alpine/install_deps.sh
|
- ./.gitlab/before_script/linux/alpine/install_deps.sh
|
||||||
variables:
|
variables:
|
||||||
ARTIFACT: "i386-linux-ghcup"
|
ARTIFACT: "i386-linux-ghcup"
|
||||||
GHC_VERSION: "8.10.7"
|
GHC_VERSION: "8.10.6"
|
||||||
CABAL_VERSION: "3.6.2.0"
|
CABAL_VERSION: "3.2.0.0"
|
||||||
|
|
||||||
release:linux:armv7:
|
release:linux:armv7:
|
||||||
stage: release
|
stage: release
|
||||||
@@ -466,8 +464,8 @@ release:linux:armv7:
|
|||||||
- ./.gitlab/before_script/linux/install_deps.sh
|
- ./.gitlab/before_script/linux/install_deps.sh
|
||||||
variables:
|
variables:
|
||||||
ARTIFACT: "armv7-linux-ghcup"
|
ARTIFACT: "armv7-linux-ghcup"
|
||||||
GHC_VERSION: "8.10.7"
|
GHC_VERSION: "8.10.4"
|
||||||
CABAL_VERSION: "3.6.2.0"
|
CABAL_VERSION: "3.4.0.0"
|
||||||
CROSS: ""
|
CROSS: ""
|
||||||
|
|
||||||
release:linux:aarch64:
|
release:linux:aarch64:
|
||||||
@@ -480,8 +478,8 @@ release:linux:aarch64:
|
|||||||
- ./.gitlab/before_script/linux/install_deps.sh
|
- ./.gitlab/before_script/linux/install_deps.sh
|
||||||
variables:
|
variables:
|
||||||
ARTIFACT: "aarch64-linux-ghcup"
|
ARTIFACT: "aarch64-linux-ghcup"
|
||||||
GHC_VERSION: "8.10.7"
|
GHC_VERSION: "8.10.4"
|
||||||
CABAL_VERSION: "3.6.2.0"
|
CABAL_VERSION: "3.4.0.0"
|
||||||
CROSS: ""
|
CROSS: ""
|
||||||
|
|
||||||
######## darwin release ########
|
######## darwin release ########
|
||||||
@@ -497,8 +495,8 @@ release:darwin:
|
|||||||
- ./.gitlab/before_script/darwin/install_deps.sh
|
- ./.gitlab/before_script/darwin/install_deps.sh
|
||||||
variables:
|
variables:
|
||||||
ARTIFACT: "x86_64-apple-darwin-ghcup"
|
ARTIFACT: "x86_64-apple-darwin-ghcup"
|
||||||
GHC_VERSION: "8.10.7"
|
GHC_VERSION: "8.10.6"
|
||||||
CABAL_VERSION: "3.6.2.0"
|
CABAL_VERSION: "3.4.0.0"
|
||||||
MACOSX_DEPLOYMENT_TARGET: "10.7"
|
MACOSX_DEPLOYMENT_TARGET: "10.7"
|
||||||
|
|
||||||
release:darwin:aarch64:
|
release:darwin:aarch64:
|
||||||
@@ -530,8 +528,8 @@ release:darwin:aarch64:
|
|||||||
runInNixShell ./.gitlab/script/ghcup_release.sh 2>&1
|
runInNixShell ./.gitlab/script/ghcup_release.sh 2>&1
|
||||||
variables:
|
variables:
|
||||||
ARTIFACT: "aarch64-apple-darwin-ghcup"
|
ARTIFACT: "aarch64-apple-darwin-ghcup"
|
||||||
GHC_VERSION: "8.10.7"
|
GHC_VERSION: "8.10.6"
|
||||||
CABAL_VERSION: "3.6.2.0"
|
CABAL_VERSION: "3.4.0.0"
|
||||||
MACOSX_DEPLOYMENT_TARGET: "10.7"
|
MACOSX_DEPLOYMENT_TARGET: "10.7"
|
||||||
allow_failure: true
|
allow_failure: true
|
||||||
|
|
||||||
@@ -549,8 +547,8 @@ release:freebsd12:
|
|||||||
- ./.gitlab/before_script/freebsd/install_deps.sh
|
- ./.gitlab/before_script/freebsd/install_deps.sh
|
||||||
variables:
|
variables:
|
||||||
ARTIFACT: "x86_64-portbld-freebsd-ghcup"
|
ARTIFACT: "x86_64-portbld-freebsd-ghcup"
|
||||||
GHC_VERSION: "8.10.7"
|
GHC_VERSION: "8.10.6"
|
||||||
CABAL_VERSION: "3.6.2.0"
|
CABAL_VERSION: "3.4.0.0"
|
||||||
allow_failure: true
|
allow_failure: true
|
||||||
|
|
||||||
release:freebsd13:
|
release:freebsd13:
|
||||||
@@ -564,8 +562,8 @@ release:freebsd13:
|
|||||||
- ./.gitlab/before_script/freebsd/install_deps.sh
|
- ./.gitlab/before_script/freebsd/install_deps.sh
|
||||||
variables:
|
variables:
|
||||||
ARTIFACT: "x86_64-portbld-freebsd-ghcup"
|
ARTIFACT: "x86_64-portbld-freebsd-ghcup"
|
||||||
GHC_VERSION: "8.10.7"
|
GHC_VERSION: "8.10.6"
|
||||||
CABAL_VERSION: "3.6.2.0"
|
CABAL_VERSION: "3.4.0.0"
|
||||||
allow_failure: true
|
allow_failure: true
|
||||||
|
|
||||||
######## windows release ########
|
######## windows release ########
|
||||||
@@ -581,13 +579,13 @@ release:windows:
|
|||||||
- bash ./.gitlab/before_script/windows/install_deps.sh
|
- bash ./.gitlab/before_script/windows/install_deps.sh
|
||||||
variables:
|
variables:
|
||||||
ARTIFACT: "x86_64-mingw64-ghcup"
|
ARTIFACT: "x86_64-mingw64-ghcup"
|
||||||
GHC_VERSION: "8.10.7"
|
GHC_VERSION: "8.10.6"
|
||||||
CABAL_VERSION: "3.6.2.0"
|
CABAL_VERSION: "3.4.0.0"
|
||||||
|
|
||||||
######## hlint ########
|
######## hlint ########
|
||||||
|
|
||||||
hlint:
|
hlint:
|
||||||
stage: checks
|
stage: hlint
|
||||||
extends:
|
extends:
|
||||||
- .debian
|
- .debian
|
||||||
script:
|
script:
|
||||||
@@ -598,29 +596,3 @@ hlint:
|
|||||||
paths:
|
paths:
|
||||||
- report.html
|
- report.html
|
||||||
when: on_failure
|
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
|
|
||||||
|
|
||||||
|
|||||||
@@ -23,10 +23,10 @@ if [ $ARCH = 'ARM64' ] ; then
|
|||||||
cabal update
|
cabal update
|
||||||
mkdir vendored
|
mkdir vendored
|
||||||
cd vendored
|
cd vendored
|
||||||
cabal unpack network-3.1.2.1
|
curl -O https://downloads.haskell.org/~ghcup/tmp/network-3.1.2.3.tar.gz
|
||||||
cd network*
|
tar xf network-3.1.2.3.tar.gz
|
||||||
autoreconf -fi
|
rm network-3.1.2.3.tar.gz
|
||||||
cd ../..
|
cd ..
|
||||||
fi
|
fi
|
||||||
|
|
||||||
exit 0
|
exit 0
|
||||||
|
|||||||
@@ -434,7 +434,6 @@ install' _ (_, ListResult {..}) = do
|
|||||||
, NoUpdate
|
, NoUpdate
|
||||||
, TarDirDoesNotExist
|
, TarDirDoesNotExist
|
||||||
, FileAlreadyExistsError
|
, FileAlreadyExistsError
|
||||||
, ProcessError
|
|
||||||
]
|
]
|
||||||
|
|
||||||
run (do
|
run (do
|
||||||
|
|||||||
@@ -1852,7 +1852,6 @@ Report bugs at <https://gitlab.haskell.org/haskell/ghcup-hs/issues>|]
|
|||||||
, NextVerNotFound
|
, NextVerNotFound
|
||||||
, NoToolVersionSet
|
, NoToolVersionSet
|
||||||
, FileAlreadyExistsError
|
, FileAlreadyExistsError
|
||||||
, ProcessError
|
|
||||||
]
|
]
|
||||||
|
|
||||||
let runInstTool mInstPlatform action' = do
|
let runInstTool mInstPlatform action' = do
|
||||||
@@ -1954,12 +1953,6 @@ Report bugs at <https://gitlab.haskell.org/haskell/ghcup-hs/issues>|]
|
|||||||
, NotInstalled
|
, NotInstalled
|
||||||
, DirNotEmpty
|
, DirNotEmpty
|
||||||
, ArchiveResult
|
, ArchiveResult
|
||||||
, FileDoesNotExistError
|
|
||||||
, HadrianNotFound
|
|
||||||
, InvalidBuildConfig
|
|
||||||
, ProcessError
|
|
||||||
, CopyError
|
|
||||||
, BuildFailed
|
|
||||||
]
|
]
|
||||||
|
|
||||||
let runCompileHLS =
|
let runCompileHLS =
|
||||||
|
|||||||
@@ -8,9 +8,7 @@ package ghcup
|
|||||||
tests: True
|
tests: True
|
||||||
flags: +tui
|
flags: +tui
|
||||||
|
|
||||||
constraints: http-io-streams -brotli,
|
constraints: http-io-streams -brotli
|
||||||
any.Cabal ==3.4.0.0 || ==3.6.2.0
|
|
||||||
|
|
||||||
|
|
||||||
package libarchive
|
package libarchive
|
||||||
flags: -system-libarchive
|
flags: -system-libarchive
|
||||||
|
|||||||
@@ -2183,7 +2183,7 @@ ghcupDownloads:
|
|||||||
dlHash: 2b3ac28549916de5f3379241797eaf60e84b6c001f2abbe73d9fadbbaf768e93
|
dlHash: 2b3ac28549916de5f3379241797eaf60e84b6c001f2abbe73d9fadbbaf768e93
|
||||||
3.4.0.0:
|
3.4.0.0:
|
||||||
viTags:
|
viTags:
|
||||||
- old
|
- Recommended
|
||||||
viChangeLog: https://github.com/haskell/cabal/blob/master/release-notes/cabal-install-3.4.0.0.md
|
viChangeLog: https://github.com/haskell/cabal/blob/master/release-notes/cabal-install-3.4.0.0.md
|
||||||
viArch:
|
viArch:
|
||||||
A_64:
|
A_64:
|
||||||
@@ -2232,58 +2232,9 @@ ghcupDownloads:
|
|||||||
unknown_versioning:
|
unknown_versioning:
|
||||||
dlUri: https://downloads.haskell.org/~ghcup/unofficial-bindists/cabal/3.4.0.0/cabal-install-3.4.0.0-armv7-linux-bootstrapped.tar.xz
|
dlUri: https://downloads.haskell.org/~ghcup/unofficial-bindists/cabal/3.4.0.0/cabal-install-3.4.0.0-armv7-linux-bootstrapped.tar.xz
|
||||||
dlHash: 16c0d1eaba24bed14f3e152970179a45d9f9bb5cc839b2c210ad06eb7d4826ed
|
dlHash: 16c0d1eaba24bed14f3e152970179a45d9f9bb5cc839b2c210ad06eb7d4826ed
|
||||||
3.4.1.0:
|
|
||||||
viTags:
|
|
||||||
- Recommended
|
|
||||||
viChangeLog: https://github.com/haskell/cabal/blob/master/release-notes/cabal-install-3.4.1.0.md
|
|
||||||
viArch:
|
|
||||||
A_64:
|
|
||||||
Linux_UnknownLinux:
|
|
||||||
unknown_versioning: &cabal-3410-64
|
|
||||||
dlUri: https://downloads.haskell.org/~ghcup/unofficial-bindists/cabal/3.4.1.0/cabal-install-3.4.1.0-x86_64-linux-alpine-static.tar.xz
|
|
||||||
dlHash: f8cae8b5e6346b56676f734de1afd9b4b5f27eab6ab87852c19a30f7850f17fe
|
|
||||||
Linux_Alpine:
|
|
||||||
unknown_versioning: *cabal-3410-64
|
|
||||||
Darwin:
|
|
||||||
unknown_versioning:
|
|
||||||
dlUri: https://downloads.haskell.org/~cabal/cabal-install-3.4.1.0/cabal-install-3.4.1.0-x86_64-darwin.tar.xz
|
|
||||||
dlHash: c45f9503a60cb580c0ef13c7d9c0069fb953ee4c173835454d1e8f708ed2b574
|
|
||||||
FreeBSD:
|
|
||||||
'( >= 12 && < 13 )':
|
|
||||||
dlUri: https://downloads.haskell.org/~cabal/cabal-install-3.4.1.0/cabal-install-3.4.1.0-x86_64-freebsd12.tar.xz
|
|
||||||
dlHash: 54563fb7624d871dec0d852c156f4826e31078def99d376bbebb4d066d3aa7ae
|
|
||||||
'( >= 13 )':
|
|
||||||
dlUri: https://downloads.haskell.org/~cabal/cabal-install-3.4.1.0/cabal-install-3.4.1.0-x86_64-freebsd13.tar.xz
|
|
||||||
dlHash: 3cc9e9a8f9dadcb97b777907bb884042edc5a2f89c81a782b086554a48852506
|
|
||||||
Windows:
|
|
||||||
unknown_versioning:
|
|
||||||
dlUri: https://downloads.haskell.org/~cabal/cabal-install-3.4.1.0/cabal-install-3.4.1.0-x86_64-windows.zip
|
|
||||||
dlSubdir:
|
|
||||||
dlHash: b86761a55a0899e33b6e9b64c75a52b33716430de93ea47bfd07d8f11417e800
|
|
||||||
A_32:
|
|
||||||
Linux_UnknownLinux:
|
|
||||||
unknown_versioning: &cabal-3410-32
|
|
||||||
dlUri: https://downloads.haskell.org/~ghcup/unofficial-bindists/cabal/3.4.1.0/cabal-install-3.4.1.0-i386-linux-alpine.tar.xz
|
|
||||||
dlHash: 7622c64b9382443a43494a992c836654d6554110acf34a4331271e1b438e2ab8
|
|
||||||
Linux_Alpine:
|
|
||||||
unknown_versioning: *cabal-3410-32
|
|
||||||
A_ARM64:
|
|
||||||
Linux_UnknownLinux:
|
|
||||||
unknown_versioning:
|
|
||||||
dlUri: https://downloads.haskell.org/~cabal/cabal-install-3.4.1.0/cabal-install-3.4.1.0-aarch64-linux-deb10.tar.xz
|
|
||||||
dlHash: 67a7d253e2f4069d47c321fb1b72ca8156e7387a05801417569b95c2654e18ce
|
|
||||||
Darwin:
|
|
||||||
unknown_versioning:
|
|
||||||
dlUri: https://downloads.haskell.org/~cabal/cabal-install-3.4.1.0/cabal-install-3.4.1.0-aarch64-darwin.tar.xz
|
|
||||||
dlHash: f1fb07f1e385ef12d6c3a26ee6caa5223463b095373f1ea1ef74ab5922b0302f
|
|
||||||
A_ARM:
|
|
||||||
Linux_UnknownLinux:
|
|
||||||
unknown_versioning:
|
|
||||||
dlUri: https://downloads.haskell.org/~ghcup/unofficial-bindists/cabal/3.4.1.0/cabal-install-3.4.1.0-armv7-linux-deb10.tar.xz
|
|
||||||
dlHash: 7c5b75ded319629ff47b17dd283b90ad1ba2635cf65c1a0d2b5be9610e843968
|
|
||||||
3.6.0.0:
|
3.6.0.0:
|
||||||
viTags:
|
viTags:
|
||||||
- old
|
- Latest
|
||||||
viChangeLog: https://github.com/haskell/cabal/blob/master/release-notes/cabal-install-3.6.0.0.md
|
viChangeLog: https://github.com/haskell/cabal/blob/master/release-notes/cabal-install-3.6.0.0.md
|
||||||
viArch:
|
viArch:
|
||||||
A_64:
|
A_64:
|
||||||
@@ -2332,55 +2283,6 @@ ghcupDownloads:
|
|||||||
unknown_versioning:
|
unknown_versioning:
|
||||||
dlUri: https://downloads.haskell.org/~ghcup/unofficial-bindists/cabal/3.6.0.0/cabal-install-3.6.0.0-armv7-linux.tar.xz
|
dlUri: https://downloads.haskell.org/~ghcup/unofficial-bindists/cabal/3.6.0.0/cabal-install-3.6.0.0-armv7-linux.tar.xz
|
||||||
dlHash: 11b5ca042a8bf45971224f2127a3e9d6b803f09210042ca80a254bea06f01a2e
|
dlHash: 11b5ca042a8bf45971224f2127a3e9d6b803f09210042ca80a254bea06f01a2e
|
||||||
3.6.2.0:
|
|
||||||
viTags:
|
|
||||||
- Latest
|
|
||||||
viChangeLog: https://github.com/haskell/cabal/blob/master/release-notes/cabal-install-3.6.2.0.md
|
|
||||||
viArch:
|
|
||||||
A_64:
|
|
||||||
Linux_UnknownLinux:
|
|
||||||
unknown_versioning: &cabal-3620-32
|
|
||||||
dlUri: https://downloads.haskell.org/~ghcup/unofficial-bindists/cabal/3.6.2.0/cabal-install-3.6.2.0-x86_64-linux-alpine-static.tar.xz
|
|
||||||
dlHash: 7810d31f35ca7649355647abc6406ad2a3696648ce848e49409e86bd70f6a2c6
|
|
||||||
Linux_Alpine:
|
|
||||||
unknown_versioning: *cabal-3620-32
|
|
||||||
Darwin:
|
|
||||||
unknown_versioning:
|
|
||||||
dlUri: https://downloads.haskell.org/~cabal/cabal-install-3.6.2.0/cabal-install-3.6.2.0-x86_64-darwin.tar.xz
|
|
||||||
dlHash: d616284712f052e599cf1940b10fa2dca4fc6ae1308c32db03f5bd2c23eb2419
|
|
||||||
FreeBSD:
|
|
||||||
'( >= 12 && < 13 )':
|
|
||||||
dlUri: https://downloads.haskell.org/~cabal/cabal-install-3.6.2.0/cabal-install-3.6.2.0-x86_64-freebsd12.tar.xz
|
|
||||||
dlHash: eaabbc6f6f4782ad21f8df95d1902eb29b66d8fafe6c8278aaa3d48da772aecb
|
|
||||||
'( >= 13 )':
|
|
||||||
dlUri: https://downloads.haskell.org/~cabal/cabal-install-3.6.2.0/cabal-install-3.6.2.0-x86_64-freebsd13.tar.xz
|
|
||||||
dlHash: b22965d2cc70061e6efb3b4a0e901906c83fb448810e79aca97b9e61bce22692
|
|
||||||
Windows:
|
|
||||||
unknown_versioning:
|
|
||||||
dlUri: https://downloads.haskell.org/~cabal/cabal-install-3.6.2.0/cabal-install-3.6.2.0-x86_64-windows.zip
|
|
||||||
dlSubdir:
|
|
||||||
dlHash: 89aa3aa3f76d15182c0d03227639890cd537627ba0bf0ef9ab451fee504b24c6
|
|
||||||
A_32:
|
|
||||||
Linux_UnknownLinux:
|
|
||||||
unknown_versioning: &cabal-3620-32
|
|
||||||
dlUri: https://downloads.haskell.org/~ghcup/unofficial-bindists/cabal/3.6.2.0/cabal-install-3.6.2.0-i386-linux-alpine.tar.xz
|
|
||||||
dlHash: 902b15de4ec5935474c62a72b373a76f727684449d7425996f0ad067a5481bd0
|
|
||||||
Linux_Alpine:
|
|
||||||
unknown_versioning: *cabal-3620-32
|
|
||||||
A_ARM64:
|
|
||||||
Linux_UnknownLinux:
|
|
||||||
unknown_versioning:
|
|
||||||
dlUri: https://downloads.haskell.org/~cabal/cabal-install-3.6.2.0/cabal-install-3.6.2.0-aarch64-linux-deb10.tar.xz
|
|
||||||
dlHash: d9acee67d4308bc5c22d27bee034d388cc4192a25deff9e7e491e2396572b030
|
|
||||||
Darwin:
|
|
||||||
unknown_versioning:
|
|
||||||
dlUri: https://downloads.haskell.org/~cabal/cabal-install-3.6.2.0/cabal-install-3.6.2.0-aarch64-darwin.tar.xz
|
|
||||||
dlHash: 859c526cde4498879a935e38422d3a0b70ae012dff034913331be8dd429a4a74
|
|
||||||
A_ARM:
|
|
||||||
Linux_UnknownLinux:
|
|
||||||
unknown_versioning:
|
|
||||||
dlUri: https://downloads.haskell.org/~ghcup/unofficial-bindists/cabal/3.6.2.0/cabal-install-3.6.2.0-armv7-linux-deb10.tar.xz
|
|
||||||
dlHash: 694ba7c14f8d720c6e790ab0488dbff2d8a07d9c6de97b4deeba31088f825bc2
|
|
||||||
GHCup:
|
GHCup:
|
||||||
0.1.17.2:
|
0.1.17.2:
|
||||||
viTags:
|
viTags:
|
||||||
|
|||||||
@@ -1,10 +0,0 @@
|
|||||||
<svg width="71" height="55" viewBox="0 0 71 55" fill="none" xmlns="http://www.w3.org/2000/svg">
|
|
||||||
<g clip-path="url(#clip0)">
|
|
||||||
<path d="M60.1045 4.8978C55.5792 2.8214 50.7265 1.2916 45.6527 0.41542C45.5603 0.39851 45.468 0.440769 45.4204 0.525289C44.7963 1.6353 44.105 3.0834 43.6209 4.2216C38.1637 3.4046 32.7345 3.4046 27.3892 4.2216C26.905 3.0581 26.1886 1.6353 25.5617 0.525289C25.5141 0.443589 25.4218 0.40133 25.3294 0.41542C20.2584 1.2888 15.4057 2.8186 10.8776 4.8978C10.8384 4.9147 10.8048 4.9429 10.7825 4.9795C1.57795 18.7309 -0.943561 32.1443 0.293408 45.3914C0.299005 45.4562 0.335386 45.5182 0.385761 45.5576C6.45866 50.0174 12.3413 52.7249 18.1147 54.5195C18.2071 54.5477 18.305 54.5139 18.3638 54.4378C19.7295 52.5728 20.9469 50.6063 21.9907 48.5383C22.0523 48.4172 21.9935 48.2735 21.8676 48.2256C19.9366 47.4931 18.0979 46.6 16.3292 45.5858C16.1893 45.5041 16.1781 45.304 16.3068 45.2082C16.679 44.9293 17.0513 44.6391 17.4067 44.3461C17.471 44.2926 17.5606 44.2813 17.6362 44.3151C29.2558 49.6202 41.8354 49.6202 53.3179 44.3151C53.3935 44.2785 53.4831 44.2898 53.5502 44.3433C53.9057 44.6363 54.2779 44.9293 54.6529 45.2082C54.7816 45.304 54.7732 45.5041 54.6333 45.5858C52.8646 46.6197 51.0259 47.4931 49.0921 48.2228C48.9662 48.2707 48.9102 48.4172 48.9718 48.5383C50.038 50.6034 51.2554 52.5699 52.5959 54.435C52.6519 54.5139 52.7526 54.5477 52.845 54.5195C58.6464 52.7249 64.529 50.0174 70.6019 45.5576C70.6551 45.5182 70.6887 45.459 70.6943 45.3942C72.1747 30.0791 68.2147 16.7757 60.1968 4.9823C60.1772 4.9429 60.1437 4.9147 60.1045 4.8978ZM23.7259 37.3253C20.2276 37.3253 17.3451 34.1136 17.3451 30.1693C17.3451 26.225 20.1717 23.0133 23.7259 23.0133C27.308 23.0133 30.1626 26.2532 30.1066 30.1693C30.1066 34.1136 27.28 37.3253 23.7259 37.3253ZM47.3178 37.3253C43.8196 37.3253 40.9371 34.1136 40.9371 30.1693C40.9371 26.225 43.7636 23.0133 47.3178 23.0133C50.9 23.0133 53.7545 26.2532 53.6986 30.1693C53.6986 34.1136 50.9 37.3253 47.3178 37.3253Z" fill="#23272A"/>
|
|
||||||
</g>
|
|
||||||
<defs>
|
|
||||||
<clipPath id="clip0">
|
|
||||||
<rect width="71" height="55" fill="white"/>
|
|
||||||
</clipPath>
|
|
||||||
</defs>
|
|
||||||
</svg>
|
|
||||||
|
Before Width: | Height: | Size: 2.0 KiB |
@@ -1,7 +0,0 @@
|
|||||||
<?xml version="1.0" encoding="UTF-8"?>
|
|
||||||
<svg version="1.1" viewBox="0 0 75 32" xmlns="http://www.w3.org/2000/svg" xmlns:cc="http://creativecommons.org/ns#" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#">
|
|
||||||
<title>Matrix (protocol) logo</title>
|
|
||||||
<g fill="#040404">
|
|
||||||
<path d="m0.936 0.732v30.52h2.194v0.732h-3.035v-31.98h3.034v0.732zm8.45 9.675v1.544h0.044a4.461 4.461 0 0 1 1.487-1.368c0.58-0.323 1.245-0.485 1.993-0.485 0.72 0 1.377 0.14 1.972 0.42 0.595 0.279 1.047 0.771 1.355 1.477 0.338-0.5 0.796-0.941 1.377-1.323 0.58-0.383 1.266-0.574 2.06-0.574 0.602 0 1.16 0.074 1.674 0.22 0.514 0.148 0.954 0.383 1.322 0.707 0.366 0.323 0.653 0.746 0.859 1.268 0.205 0.522 0.308 1.15 0.308 1.887v7.633h-3.127v-6.464c0-0.383-0.015-0.743-0.044-1.082a2.305 2.305 0 0 0-0.242-0.882 1.473 1.473 0 0 0-0.584-0.596c-0.257-0.146-0.606-0.22-1.047-0.22-0.44 0-0.796 0.085-1.068 0.253-0.272 0.17-0.485 0.39-0.639 0.662a2.654 2.654 0 0 0-0.308 0.927 7.074 7.074 0 0 0-0.078 1.048v6.354h-3.128v-6.398c0-0.338-7e-3 -0.673-0.021-1.004a2.825 2.825 0 0 0-0.188-0.916 1.411 1.411 0 0 0-0.55-0.673c-0.258-0.168-0.636-0.253-1.135-0.253a2.33 2.33 0 0 0-0.584 0.1 1.94 1.94 0 0 0-0.705 0.374c-0.228 0.184-0.422 0.449-0.584 0.794-0.161 0.346-0.242 0.798-0.242 1.357v6.619h-3.129v-11.41zm16.46 1.677a3.751 3.751 0 0 1 1.233-1.17 5.37 5.37 0 0 1 1.685-0.629 9.579 9.579 0 0 1 1.884-0.187c0.573 0 1.153 0.04 1.74 0.121 0.588 0.081 1.124 0.24 1.609 0.475 0.484 0.235 0.88 0.562 1.19 0.981 0.308 0.42 0.462 0.975 0.462 1.666v5.934c0 0.516 0.03 1.008 0.088 1.478 0.058 0.471 0.161 0.824 0.308 1.06h-3.171a4.435 4.435 0 0 1-0.22-1.104c-0.5 0.515-1.087 0.876-1.762 1.081a7.084 7.084 0 0 1-2.071 0.31c-0.544 0-1.05-0.067-1.52-0.2a3.472 3.472 0 0 1-1.234-0.617 2.87 2.87 0 0 1-0.826-1.059c-0.199-0.426-0.298-0.934-0.298-1.522 0-0.647 0.114-1.18 0.342-1.6 0.227-0.419 0.52-0.753 0.881-1.004 0.36-0.25 0.771-0.437 1.234-0.562 0.462-0.125 0.929-0.224 1.399-0.298 0.47-0.073 0.932-0.132 1.387-0.176 0.456-0.044 0.86-0.11 1.212-0.199 0.353-0.088 0.631-0.217 0.837-0.386s0.301-0.415 0.287-0.74c0-0.337-0.055-0.606-0.166-0.804a1.217 1.217 0 0 0-0.44-0.464 1.737 1.737 0 0 0-0.639-0.22 5.292 5.292 0 0 0-0.782-0.055c-0.617 0-1.101 0.132-1.454 0.397-0.352 0.264-0.558 0.706-0.617 1.323h-3.128c0.044-0.735 0.227-1.345 0.55-1.83zm6.179 4.423a5.095 5.095 0 0 1-0.639 0.165 9.68 9.68 0 0 1-0.716 0.11c-0.25 0.03-0.5 0.067-0.749 0.11a5.616 5.616 0 0 0-0.694 0.177 2.057 2.057 0 0 0-0.594 0.298c-0.17 0.125-0.305 0.284-0.408 0.474-0.103 0.192-0.154 0.434-0.154 0.728 0 0.28 0.051 0.515 0.154 0.706 0.103 0.192 0.242 0.342 0.419 0.453 0.176 0.11 0.381 0.187 0.617 0.231 0.234 0.044 0.477 0.066 0.726 0.066 0.617 0 1.094-0.102 1.432-0.309 0.338-0.205 0.587-0.452 0.75-0.739 0.16-0.286 0.26-0.576 0.297-0.87 0.036-0.295 0.055-0.53 0.055-0.707v-1.17a1.4 1.4 0 0 1-0.496 0.277zm11.86-6.1v2.096h-2.291v5.647c0 0.53 0.088 0.883 0.264 1.059 0.176 0.177 0.529 0.265 1.057 0.265 0.177 0 0.345-7e-3 0.507-0.022 0.161-0.015 0.316-0.037 0.463-0.066v2.426a7.49 7.49 0 0 1-0.882 0.089 21.67 21.67 0 0 1-0.947 0.022c-0.484 0-0.944-0.034-1.377-0.1a3.233 3.233 0 0 1-1.145-0.386 2.04 2.04 0 0 1-0.782-0.816c-0.191-0.353-0.287-0.816-0.287-1.39v-6.728h-1.894v-2.096h1.894v-3.42h3.129v3.42h2.29zm4.471 0v2.118h0.044a3.907 3.907 0 0 1 1.454-1.754 4.213 4.213 0 0 1 1.036-0.497 3.734 3.734 0 0 1 1.145-0.176c0.206 0 0.433 0.037 0.683 0.11v2.912a5.862 5.862 0 0 0-0.528-0.077 5.566 5.566 0 0 0-0.595-0.033c-0.573 0-1.058 0.096-1.454 0.287a2.52 2.52 0 0 0-0.958 0.783 3.143 3.143 0 0 0-0.518 1.158 6.32 6.32 0 0 0-0.154 1.434v5.14h-3.128v-11.4zm5.684-1.765v-2.582h3.128v2.582h-3.127zm3.128 1.765v11.4h-3.127v-11.4h3.128zm1.63 0h3.569l2.005 2.978 1.982-2.978h3.459l-3.745 5.339 4.208 6.067h-3.57l-2.378-3.596-2.38 3.596h-3.502l4.097-6.001zm15.3 20.84v-30.52h-2.194v-0.732h3.035v31.98h-3.035v-0.732z"/>
|
|
||||||
</g>
|
|
||||||
</svg>
|
|
||||||
|
Before Width: | Height: | Size: 3.8 KiB |
@@ -1,36 +0,0 @@
|
|||||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
|
||||||
<svg
|
|
||||||
height="800.3468"
|
|
||||||
width="733.88495"
|
|
||||||
version="1.1"
|
|
||||||
id="svg4"
|
|
||||||
sodipodi:docname="Octicons-bug.svg"
|
|
||||||
inkscape:version="1.1 (c68e22c387, 2021-05-23)"
|
|
||||||
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
|
||||||
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
|
||||||
xmlns="http://www.w3.org/2000/svg"
|
|
||||||
xmlns:svg="http://www.w3.org/2000/svg">
|
|
||||||
<defs
|
|
||||||
id="defs8" />
|
|
||||||
<sodipodi:namedview
|
|
||||||
id="namedview6"
|
|
||||||
pagecolor="#ffffff"
|
|
||||||
bordercolor="#666666"
|
|
||||||
borderopacity="1.0"
|
|
||||||
inkscape:pageshadow="2"
|
|
||||||
inkscape:pageopacity="0.0"
|
|
||||||
inkscape:pagecheckerboard="0"
|
|
||||||
showgrid="false"
|
|
||||||
inkscape:zoom="0.85253906"
|
|
||||||
inkscape:cx="367.1386"
|
|
||||||
inkscape:cy="432.23826"
|
|
||||||
inkscape:window-width="3828"
|
|
||||||
inkscape:window-height="2081"
|
|
||||||
inkscape:window-x="0"
|
|
||||||
inkscape:window-y="46"
|
|
||||||
inkscape:window-maximized="1"
|
|
||||||
inkscape:current-layer="svg4" />
|
|
||||||
<path
|
|
||||||
d="m 243.6206,76.877783 c -52.874,56.780997 -38.281,147.468997 -38.281,147.468997 0,0 53.968,64 160,64 106.031,0 160.031,-64 160.031,-64 0,0 14.375,-89.469 -37.375,-146.311997 32.375,-18.031 51.438,-44.094 43.562,-61.812 -8.938,-19.9689999 -48.375,-21.7499999 -88.25,-3.969 -14.812,6.594 -27.438,14.969 -37.25,23.875 -12.438,-2.25 -25.625,-3.781 -40.72,-3.781 -14.061,0 -26.561,1.344 -38.344,3.25 -9.656,-8.75 -22.062,-16.875 -36.531,-23.344 -39.875,-17.7189999 -79.375,-15.9379999 -88.25,3.969 -7.748,17.343 10.284,42.686 41.408,60.655 z m 401.125,413.218997 c -8.25,-1.75 -16.125,-2.75 -23.75,-3.5 0,-2.125 0.375,-4.125 0.375,-6.312 0,-33.594 -4.75,-65.654 -12.438,-96.125 16.438,1.406 37.375,-2.375 58.562,-11.779 39.875,-17.781 65,-48.375 56.125,-68.219 -8.875,-19.969 -48.375,-21.75 -88.25,-3.969 -18.625,8.312 -33.812,19.469 -44,30.906 -7.75,-18.25 -16.5,-35.781 -26.812,-51.719 -30.188,25.156 -87.312,62.719 -167.062,71.062 v 321.781 c 0,0 -0.25,32 -32.031,32 -31.75,0 -32,-32 -32,-32 v -321.657 c -79.811,-8.344 -136.968,-45.969 -167.093,-71.062 -9.875,15.312 -18.375,32 -25.938,49.344 -10.281,-10.625 -24.625,-20.844 -41.969,-28.594 -39.875,-17.719 -79.375,-15.938 -88.25,3.969 -8.9060001,19.906 16.25,50.438 56.125,68.219 19.844,8.846 39.531,12.812 55.469,12.096 -7.656,30.404 -12.469,62.344 -12.469,95.812 0,2.188 0.375,4.25 0.438,6.5 -6.719,0.75 -13.688,1.75 -20.781,3.25 -51.969,10.75 -91.7810001,37.625 -88.84400014,59.812 2.93800004,22.312 47.50000014,31.5 99.59400014,20.688 6.781,-1.375 13.438,-3.125 19.781,-5.062 9.156,40.809 23.812,78.684 44.094,111.309 -12.031,6.062 -24.531,15 -36.031,26.625 -31.876,31.875 -44.812,70.625 -28.876,86.563 15.938,15.937 54.656,3 86.531,-28.812 9.344,-9.375 16.844,-19.25 22.656,-29 43.532,42.624 98.063,68.124 157.563,68.124 60.343,0 115.781,-26.25 159.531,-69.938 5.875,10.312 13.75,20.812 23.625,30.688 31.812,31.875 70.625,44.812 86.562,28.875 15.937,-15.937 3,-54.625 -28.875,-86.5 -12.312,-12.375 -25.688,-21.75 -38.438,-27.938 20.125,-32.5 34.625,-70.375 43.688,-111.062 7.188,2.25 14.688,4.375 22.562,6.062 52.061,10.812 96.625,1.562 99.625,-20.688 2.813,-22.124 -36.999,-48.999 -88.999,-59.749 z"
|
|
||||||
id="path2" />
|
|
||||||
</svg>
|
|
||||||
|
Before Width: | Height: | Size: 3.1 KiB |
@@ -34,12 +34,6 @@ All you wanted to know about GHCup.
|
|||||||
* Colin Barrett
|
* Colin Barrett
|
||||||
* Artur Gajowy
|
* Artur Gajowy
|
||||||
|
|
||||||
### Sponsors
|
|
||||||
|
|
||||||
* All [opencollective](https://opencollective.com/ghcup#category-CONTRIBUTE) contributors
|
|
||||||
* [haskell.org](https://www.haskell.org/haskell-org-committee/) via CI and infrastructure
|
|
||||||
* [Haskell Foundation](https://haskell.foundation/affiliates/) via affiliation
|
|
||||||
|
|
||||||
## Design goals
|
## Design goals
|
||||||
|
|
||||||
1. simplicity
|
1. simplicity
|
||||||
|
|||||||
@@ -1,336 +1,223 @@
|
|||||||
h2
|
h2
|
||||||
{
|
{
|
||||||
border-bottom:1px solid #CCC;
|
border-bottom:1px solid #CCC;
|
||||||
padding-bottom:5px;
|
padding-bottom:5px;
|
||||||
padding-top:15px;
|
padding-top:15px;
|
||||||
}
|
}
|
||||||
|
|
||||||
h1 {
|
h1 {
|
||||||
text-align: center;
|
text-align: center;
|
||||||
font-size: 60px;
|
font-size: 60px;
|
||||||
font-weight: 300;
|
font-weight: 300;
|
||||||
padding-top:15px;
|
padding-top:15px;
|
||||||
}
|
}
|
||||||
|
|
||||||
h3 {
|
h3 {
|
||||||
font-size: 30px;
|
font-size: 30px;
|
||||||
padding-top:10px;
|
padding-top:10px;
|
||||||
}
|
}
|
||||||
|
|
||||||
h4 {
|
h4 {
|
||||||
font-size: 25px;
|
font-size: 25px;
|
||||||
padding-top:10px;
|
padding-top:10px;
|
||||||
}
|
}
|
||||||
|
|
||||||
.index-ghcup-hero {
|
|
||||||
display: flex;
|
|
||||||
flex-direction: row;
|
|
||||||
justify-content: center;
|
|
||||||
align-items: center;
|
|
||||||
}
|
|
||||||
|
|
||||||
.index-ghcup-hero img {
|
|
||||||
width: 10%;
|
|
||||||
min-width: 110px;
|
|
||||||
max-width: 120px;
|
|
||||||
border: none;
|
|
||||||
margin: 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
.index-ghcup-hero h1 {
|
|
||||||
}
|
|
||||||
|
|
||||||
div.col-md-9 h1:first-of-type {
|
div.col-md-9 h1:first-of-type {
|
||||||
text-align: center;
|
text-align: center;
|
||||||
font-size: 60px;
|
font-size: 60px;
|
||||||
font-weight: 300;
|
font-weight: 300;
|
||||||
}
|
}
|
||||||
|
|
||||||
div.col-md-9>p:first-of-type {
|
div.col-md-9>p:first-of-type {
|
||||||
text-align: center;
|
text-align: center;
|
||||||
}
|
}
|
||||||
|
|
||||||
div.col-md-9 p.admonition-title:first-of-type {
|
div.col-md-9 p.admonition-title:first-of-type {
|
||||||
text-align: left;
|
text-align: left;
|
||||||
}
|
}
|
||||||
|
|
||||||
div.col-md-9 h1:first-of-type .headerlink {
|
div.col-md-9 h1:first-of-type .headerlink {
|
||||||
display: none;
|
display: none;
|
||||||
}
|
}
|
||||||
|
|
||||||
code.no-highlight {
|
code.no-highlight {
|
||||||
color: black;
|
color: black;
|
||||||
}
|
}
|
||||||
|
|
||||||
div.gh-badge img {
|
div.gh-badge img {
|
||||||
margin: 0;
|
margin: 0;
|
||||||
padding: 0;
|
padding: 0;
|
||||||
height: 25px;
|
height: 25px;
|
||||||
|
}
|
||||||
|
|
||||||
|
a.donate-badge img {
|
||||||
|
margin-top: 10;
|
||||||
|
margin-bottom: 0;
|
||||||
|
padding: 0;
|
||||||
|
height: 35px;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Definition List styles */
|
/* Definition List styles */
|
||||||
|
|
||||||
dd {
|
dd {
|
||||||
padding-left: 20px;
|
padding-left: 20px;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Homepage */
|
/* Homepage */
|
||||||
|
|
||||||
body.homepage div.jumbotron {
|
body.homepage div.jumbotron {
|
||||||
margin-top: 1.5rem;
|
margin-top: 1.5rem;
|
||||||
padding-top: 1rem;
|
padding-top: 1rem;
|
||||||
padding-bottom: 0;
|
padding-bottom: 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
body.homepage div.jumbotron div.card {
|
body.homepage div.jumbotron div.card {
|
||||||
margin-bottom: 2rem;
|
margin-bottom: 2rem;
|
||||||
}
|
}
|
||||||
|
|
||||||
body.homepage>div.container div.col-md-3 {
|
body.homepage>div.container div.col-md-3 {
|
||||||
display: none;
|
display: none;
|
||||||
}
|
}
|
||||||
|
|
||||||
body.homepage>div.container div.col-md-9 {
|
body.homepage>div.container div.col-md-9 {
|
||||||
/* margin-left: 0; */
|
margin-left: 0;
|
||||||
/* padding-left: 0; */
|
padding-left: 0;
|
||||||
flex: 0 0 100%;
|
flex: 0 0 100%;
|
||||||
max-width: 100%;
|
max-width: 100%;
|
||||||
}
|
}
|
||||||
|
|
||||||
.center {
|
.center {
|
||||||
display: block !important;
|
display: block !important;
|
||||||
}
|
}
|
||||||
|
|
||||||
.bg-primary {
|
.bg-primary {
|
||||||
background-image: -webkit-gradient(linear, left top, left bottom, from(#996FC2), color-stop(60%, #6A478D), to(#5E5086)) !important;
|
background-image: -webkit-gradient(linear, left top, left bottom, from(#996FC2), color-stop(60%, #6A478D), to(#5E5086)) !important;
|
||||||
background-image: linear-gradient(#996FC2, #6A478D 60%, #5E5086) !important;
|
background-image: linear-gradient(#996FC2, #6A478D 60%, #5E5086) !important;
|
||||||
background-repeat: no-repeat !important;
|
background-repeat: no-repeat !important;
|
||||||
}
|
}
|
||||||
|
|
||||||
.btn-primary {
|
.btn-primary {
|
||||||
background-image: -webkit-gradient(linear, left top, left bottom, from(#996FC2), color-stop(60%, #6A478D), to(#5E5086)) !important;
|
background-image: -webkit-gradient(linear, left top, left bottom, from(#996FC2), color-stop(60%, #6A478D), to(#5E5086)) !important;
|
||||||
background-image: linear-gradient(#996FC2, #6A478D 60%, #5E5086) !important;
|
background-image: linear-gradient(#996FC2, #6A478D 60%, #5E5086) !important;
|
||||||
background-repeat: no-repeat !important;
|
background-repeat: no-repeat !important;
|
||||||
|
|
||||||
color: #fff;
|
color: #fff;
|
||||||
background-color: #996FC1;
|
background-color: #996FC1;
|
||||||
border-color: #996FC1;
|
border-color: #996FC1;
|
||||||
|
|
||||||
border-bottom: 1px solid #453A62;
|
border-bottom: 1px solid #453A62;
|
||||||
}
|
}
|
||||||
|
|
||||||
.navbar {
|
.navbar {
|
||||||
background-image: -webkit-gradient(linear, left top, left bottom, from(#996FC2), color-stop(60%, #6A478D), to(#5E5086)) !important;
|
background-image: -webkit-gradient(linear, left top, left bottom, from(#996FC2), color-stop(60%, #6A478D), to(#5E5086)) !important;
|
||||||
background-image: linear-gradient(#996FC2, #6A478D 60%, #5E5086) !important;
|
background-image: linear-gradient(#996FC2, #6A478D 60%, #5E5086) !important;
|
||||||
background-repeat: no-repeat !important;
|
background-repeat: no-repeat !important;
|
||||||
|
|
||||||
color: #fff;
|
color: #fff;
|
||||||
background-color: #996FC1;
|
background-color: #996FC1;
|
||||||
border-color: #996FC1;
|
border-color: #996FC1;
|
||||||
|
|
||||||
border-bottom: 1px solid #453A62;
|
border-bottom: 1px solid #453A62;
|
||||||
}
|
}
|
||||||
|
|
||||||
a {
|
a {
|
||||||
color: #996FC2;
|
color: #996FC2;
|
||||||
}
|
}
|
||||||
|
|
||||||
a:hover {
|
a:hover {
|
||||||
color: #674489;
|
color: #674489;
|
||||||
}
|
}
|
||||||
|
|
||||||
.col-md-9 img.main-logo {
|
.col-md-9 img.main-logo {
|
||||||
border: 0px;
|
border: 0px;
|
||||||
padding: 0px;
|
padding: 0px;
|
||||||
margin: 0px;
|
margin: 0px;
|
||||||
}
|
}
|
||||||
|
|
||||||
.navbar-default .navbar-nav>.active>a, .navbar-default .navbar-nav>.active>a:hover, .navbar-default .navbar-nav>.active>a:focus {
|
.navbar-default .navbar-nav>.active>a, .navbar-default .navbar-nav>.active>a:hover, .navbar-default .navbar-nav>.active>a:focus {
|
||||||
color: #fff;
|
color: #fff;
|
||||||
background-color: #453A62;
|
background-color: #453A62;
|
||||||
border-color: #996FC1;
|
border-color: #996FC1;
|
||||||
}
|
}
|
||||||
|
|
||||||
.navbar-default .navbar-nav>li>a:hover, .navbar-default .navbar-nav>li>a:focus {
|
.navbar-default .navbar-nav>li>a:hover, .navbar-default .navbar-nav>li>a:focus {
|
||||||
color: #fff;
|
color: #fff;
|
||||||
background-color: #453A62;
|
background-color: #453A62;
|
||||||
}
|
|
||||||
|
|
||||||
.ghcup-intro {
|
|
||||||
text-align: center;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
.main-buttons {
|
.main-buttons {
|
||||||
display: flex;
|
display: flex;
|
||||||
align-items: center;
|
align-items: center;
|
||||||
flex-wrap: wrap;
|
flex-wrap: wrap;
|
||||||
justify-content: center;
|
justify-content: center;
|
||||||
}
|
}
|
||||||
|
|
||||||
.main-buttons a {
|
.main-buttons a {
|
||||||
margin-right: 5px;
|
margin-right: 5px;
|
||||||
margin-bottom: 5px;
|
margin-bottom: 5px;
|
||||||
}
|
}
|
||||||
|
|
||||||
.command-button {
|
.command-button {
|
||||||
display: flex;
|
display: flex;
|
||||||
align-items: center;
|
align-items: center;
|
||||||
}
|
}
|
||||||
|
|
||||||
.command-button > pre {
|
.command-button > pre {
|
||||||
flex: 0 1 80%;
|
background-color: #515151;
|
||||||
margin: 0;
|
color: white;
|
||||||
padding: 10px;
|
margin: auto;
|
||||||
text-align: center;
|
margin-top: 0px;
|
||||||
background-color: #515151;
|
padding-top: 1rem;
|
||||||
color: white;
|
padding-bottom: 1rem;
|
||||||
border-radius: 3px;
|
padding-right: 1rem;
|
||||||
box-shadow: inset 0px 0px 20px 0px #333333;
|
text-align: center;
|
||||||
font-size: 1em;
|
border-radius: 3px;
|
||||||
white-space: nowrap;
|
box-shadow: inset 0px 0px 20px 0px #333333;
|
||||||
overflow: auto;
|
font-size: 1em;
|
||||||
|
width: 55rem;
|
||||||
|
overflow: auto;
|
||||||
|
white-space: nowrap;
|
||||||
}
|
}
|
||||||
|
|
||||||
.ghcup-command:before {
|
.ghcup-command:before {
|
||||||
color: #999;
|
color: #999;
|
||||||
content: " $ ";
|
content: " $ ";
|
||||||
margin-left: 15px;
|
margin-left: 15px;
|
||||||
}
|
}
|
||||||
|
|
||||||
div.command-button {
|
div.command-button {
|
||||||
display: flex;
|
display: flex;
|
||||||
align-items: center;
|
align-items: center;
|
||||||
justify-content: center;
|
|
||||||
}
|
|
||||||
|
|
||||||
.command-button pre {
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
div.command-button button {
|
div.command-button button {
|
||||||
color: #515151;
|
color: #515151;
|
||||||
background: rgb(230, 230, 230);
|
/* border: none; */
|
||||||
border: 1px solid grey;
|
background: rgb(230, 230, 230);
|
||||||
margin: 0 0 0 10px;
|
border-width: 2px !important;
|
||||||
padding: 10px;
|
border-style: solid !important;
|
||||||
flex-basis: 0 0 20%;
|
border-radius: 3px !important;
|
||||||
|
border: grey;
|
||||||
|
|
||||||
|
margin-left: 0.5rem !important;
|
||||||
|
margin-right: auto !important;
|
||||||
|
text-align: center !important;
|
||||||
|
|
||||||
|
padding: 18px;
|
||||||
|
padding-bottom: 16px;
|
||||||
}
|
}
|
||||||
|
|
||||||
div.command-button button .fa {
|
div.command-button button .fa {
|
||||||
font-size: x-large;
|
font-size: x-large;
|
||||||
}
|
}
|
||||||
|
|
||||||
div.command-button button:hover {
|
div.command-button button:hover {
|
||||||
background: rgb(220, 220, 220);
|
background: rgb(220, 220, 220);
|
||||||
color: black;
|
color: black;
|
||||||
border: 1px solid black;
|
border: black;
|
||||||
}
|
}
|
||||||
|
|
||||||
div.command-button button:focus {
|
div.command-button button:focus {
|
||||||
background-color: #04aa6d;
|
color: green;
|
||||||
}
|
}
|
||||||
|
|
||||||
footer > hr {
|
|
||||||
border-top: 0.5px solid #CCC;
|
|
||||||
}
|
|
||||||
|
|
||||||
.qi-container {
|
|
||||||
display: flex;
|
|
||||||
flex-direction: column;
|
|
||||||
align-items: center;
|
|
||||||
box-sizing: border-box;
|
|
||||||
padding: 0.75rem;
|
|
||||||
background-color: rgb(250, 250, 250);
|
|
||||||
margin-top: 2rem;
|
|
||||||
margin-bottom: 2rem;
|
|
||||||
margin-left: auto;
|
|
||||||
margin-right: auto;
|
|
||||||
border-radius: 3px;
|
|
||||||
border: 1px solid rgb(204, 204, 204);
|
|
||||||
box-shadow:
|
|
||||||
4px 8px 10px -6px rgb(204, 204, 204),
|
|
||||||
4px 8px 10px -6px rgb(153, 111, 194);
|
|
||||||
}
|
|
||||||
|
|
||||||
@media only screen and (max-width:1000px) {
|
|
||||||
.qi-container {
|
|
||||||
box-shadow:
|
|
||||||
4px 10px 10px -6px rgb(204, 204, 204),
|
|
||||||
4px 10px 10px -9px rgb(153, 111, 194);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
.index-cta-donate .donate-button a {
|
|
||||||
position: absolute;
|
|
||||||
top:0;
|
|
||||||
left: 0;
|
|
||||||
width: 100%;
|
|
||||||
height: 100%;
|
|
||||||
}
|
|
||||||
|
|
||||||
.index-cta-donate .donate-button {
|
|
||||||
margin: 10px auto;
|
|
||||||
position: relative;
|
|
||||||
display: block;
|
|
||||||
background: none;
|
|
||||||
padding: none;
|
|
||||||
border: none;
|
|
||||||
background: url("https://opencollective.com/webpack/donate/button@2x.png?color=blue");
|
|
||||||
width: 35%;
|
|
||||||
min-width: 240px;
|
|
||||||
max-width: 280px;
|
|
||||||
height: 40px;
|
|
||||||
background-size: contain;
|
|
||||||
background-repeat: no-repeat;
|
|
||||||
}
|
|
||||||
|
|
||||||
.ghcup-os-container {
|
|
||||||
width: 100%;
|
|
||||||
margin: 10px 0;
|
|
||||||
}
|
|
||||||
.ghcup-os-container > * {
|
|
||||||
text-align: center;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* fix list overflows (esp about page) */
|
|
||||||
ul > li {
|
|
||||||
overflow-wrap: anywhere;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
.footer {
|
|
||||||
color: grey;
|
|
||||||
font-size: 0.7em;
|
|
||||||
margin-top: 1rem;
|
|
||||||
margin-bottom: 1rem;
|
|
||||||
}
|
|
||||||
|
|
||||||
.footer div.show-all-platforms {
|
|
||||||
display: inline-block;
|
|
||||||
}
|
|
||||||
|
|
||||||
#help, #collective {
|
|
||||||
margin-bottom: 0px;
|
|
||||||
display: block;
|
|
||||||
|
|
||||||
margin-left: auto;
|
|
||||||
margin-right: auto;
|
|
||||||
margin-top: 15px;
|
|
||||||
text-align: center;
|
|
||||||
}
|
|
||||||
|
|
||||||
#help img {
|
|
||||||
border: none;
|
|
||||||
margin: 0px;
|
|
||||||
height: 24px;
|
|
||||||
}
|
|
||||||
|
|
||||||
#collective img {
|
|
||||||
border: none;
|
|
||||||
margin: 0px;
|
|
||||||
}
|
|
||||||
|
|
||||||
#collective {
|
|
||||||
margin-top: 10px;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|||||||
@@ -76,7 +76,7 @@ Some light suggestions:
|
|||||||
|
|
||||||
### Adding a new CLI command
|
### Adding a new CLI command
|
||||||
|
|
||||||
An example illustration on how to deal with [optparse-applicative](https://hackage.haskell.org/package/optparse-applicative) can be seen here: [https://gitlab.haskell.org/haskell/ghcup-hs/-/commit/c19dd5ee8b2edbaf0336af143f1c75b6f4843e26](https://gitlab.haskell.org/haskell/ghcup-hs/-/commit/c19dd5ee8b2edbaf0336af143f1c75b6f4843e26)
|
An example illustration on how to deal with [optparse-applicative](https://hackage.haskell.org/package/optparse-applicative) can be seen here: https://gitlab.haskell.org/haskell/ghcup-hs/-/commit/c19dd5ee8b2edbaf0336af143f1c75b6f4843e26
|
||||||
|
|
||||||
## Major refactors
|
## Major refactors
|
||||||
|
|
||||||
|
|||||||
@@ -199,7 +199,7 @@ For the full list of env variables and parameters to tweak the script behavior,
|
|||||||
|
|
||||||
### Example github workflow
|
### Example github workflow
|
||||||
|
|
||||||
On github workflows you can use [https://github.com/haskell/actions/](https://github.com/haskell/actions/)
|
On github workflows you can use https://github.com/haskell/actions/
|
||||||
|
|
||||||
If you want to install ghcup manually though, here's an example config:
|
If you want to install ghcup manually though, here's an example config:
|
||||||
|
|
||||||
|
|||||||
@@ -8,70 +8,55 @@ hide:
|
|||||||
<script src="javascripts/extra.js"></script>
|
<script src="javascripts/extra.js"></script>
|
||||||
|
|
||||||
|
|
||||||
<section class="index-ghcup-hero">
|
# {: .main-logo style="width:100px"} GHCup
|
||||||
<img alt="haskell logo" src="./haskell_logo.png" />
|
|
||||||
<h1>GHCup</h1>
|
|
||||||
</section>
|
|
||||||
|
|
||||||
<p class="ghcup-intro">GHCup is an installer for the general purpose language <a href="https://www.haskell.org">Haskell</a>.</p>
|
GHCup is an installer for the general purpose language [Haskell](https://www.haskell.org/).
|
||||||
|
|
||||||
|
<div class="text-center gh-badge">
|
||||||
|
<a href="https://kiwiirc.com/nextclient/irc.libera.chat/?nick=Guest%7C?#haskell,#haskell-ghcup"><img src="https://img.shields.io/badge/chat-on%20libera%20IRC-brightgreen.svg" alt="Join the chat at Libera.chat"></a>
|
||||||
|
<a href="https://app.element.io/#/room/#haskell-tooling:matrix.org"><img src="https://img.shields.io/matrix/haskell-tooling:matrix.org?label=chat%20on%20matrix.org" alt="Join the chat at Matrix.org"></a>
|
||||||
|
<a href="https://discord.gg/pKYf3zDQU7"><img src="https://img.shields.io/discord/280033776820813825?label=chat%20on%20discord" alt="Join the chat at Discord"></a>
|
||||||
|
<a href="https://gitter.im/haskell/ghcup?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge"><img src="https://badges.gitter.im/haskell/ghcup.svg" alt="Join the chat at https://gitter.im/haskell/ghcup"></a>
|
||||||
|
<a href="https://opencollective.com/ghcup#category-CONTRIBUTE" class="donate-badge"><img src="https://opencollective.com/webpack/donate/button@2x.png?color=blue" alt="Donate"></a>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
----
|
||||||
|
|
||||||
|
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](./install/#supported-tools) from scratch.
|
||||||
|
It follows the unix 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).
|
||||||
|
|
||||||
<div class="text-center main-buttons">
|
<div class="text-center main-buttons">
|
||||||
|
<a href="#quick-install" class="btn btn-primary" role="button">Quick Install</a>
|
||||||
<a href="install/" class="btn btn-primary" role="button">Getting Started</a>
|
<a href="install/" class="btn btn-primary" role="button">Getting Started</a>
|
||||||
<a href="guide/" class="btn btn-primary" role="button">User Guide</a>
|
<a href="guide/" class="btn btn-primary" role="button">User Guide</a>
|
||||||
<a href="https://gitlab.haskell.org/haskell/ghcup-hs/-/issues" class="btn btn-primary" role="button">Issue tracker</a>
|
<a href="https://gitlab.haskell.org/haskell/ghcup-hs/-/issues" class="btn btn-primary" role="button">Issue tracker</a>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<section class="qi-container">
|
[{: .center style="width:700px"}](install#installation)
|
||||||
|
|
||||||
<div class="ghcup-os-container" id="ghcup-instructions-unix">
|
<h2 class="text-center" id="quick-install">Quick Install<a class="headerlink" href="#quick-install" title="Permanent link"></a>
|
||||||
<h3>To install on Linux, macOS, FreeBSD or <a href="https://docs.microsoft.com/en-us/windows/wsl/"> WSL2</a></h3>
|
</h2>
|
||||||
<p>run the following in a terminal (as a non-root user):<p>
|
|
||||||
<div class="command-button">
|
|
||||||
<pre>
|
|
||||||
<span class="ghcup-command" id="ghcup-command-linux">curl --proto '=https' --tlsv1.2 -sSf https://get-ghcup.haskell.org | sh</span>
|
|
||||||
</pre>
|
|
||||||
<button class="btn" onclick="copyToClipboardNux()" id="ghcup-linux-button"><i class="fa fa-copy"></i></button>
|
|
||||||
</div>
|
|
||||||
<span>
|
|
||||||
</span>
|
|
||||||
<div class="footer">
|
|
||||||
<a href="https://gitlab.haskell.org/haskell/ghcup-hs/-/blob/master/scripts/bootstrap/bootstrap-haskell" target="_blank">What does this do?</a> <b> · </b> <a href="https://www.haskell.org/ghcup/install/#manual-install">I don't like curl | sh</a> <div class="show-all-platforms"><b> · </b> <a class="show-all-platforms-button" href="#">Show all platforms</a></div></p>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div class="ghcup-os-container" id="ghcup-instructions-win">
|
### Linux, macOS, FreeBSD or [WSL2](https://docs.microsoft.com/en-us/windows/wsl/)
|
||||||
<h3>To install on Windows</h3>
|
|
||||||
<p>run the following in a PowerShell session (as a non-admin user):<p>
|
|
||||||
|
|
||||||
<div class="command-button">
|
Run the following in a terminal (as a non-root user):
|
||||||
<pre>
|
|
||||||
<span class="ghcup-command" id="ghcup-command-windows">Set-ExecutionPolicy Bypass -Scope Process -Force;[System.Net.ServicePointManager]::SecurityProtocol = [System.Net.ServicePointManager]::SecurityProtocol -bor 3072;Invoke-Command -ScriptBlock ([ScriptBlock]::Create((Invoke-WebRequest https://www.haskell.org/ghcup/sh/bootstrap-haskell.ps1 -UseBasicParsing))) -ArgumentList $true
|
|
||||||
</span>
|
|
||||||
</pre>
|
|
||||||
<button class="btn" onclick="copyToClipboardWin()" id="ghcup-windows-button"><i class="fa fa-copy"></i></button>
|
|
||||||
</div>
|
|
||||||
<div class="footer">
|
|
||||||
<a href="https://gitlab.haskell.org/haskell/ghcup-hs/-/blob/master/scripts/bootstrap/bootstrap-haskell.ps1" target="_blank">What does this do?</a> <b> · </b> <a href="https://www.haskell.org/ghcup/install/#manual-install">I don't like curl | sh</a> <div class="show-all-platforms"><b> · </b> <a class="show-all-platforms-button" href="#">Show all platforms</a></div></p>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</section>
|
|
||||||
|
|
||||||
<section class="index-cta-donate">
|
<div class="command-button">
|
||||||
<button class="donate-button">
|
<pre><span class="ghcup-command" id="ghcup-command-linux">curl --proto '=https' --tlsv1.2 -sSf https://get-ghcup.haskell.org | sh</span></pre>
|
||||||
<a href="https://opencollective.com/ghcup#category-CONTRIBUTE" class="donate-badge" />
|
<button class="btn" onclick="copyToClipboardNux()" id="ghcup-linux-button"><i class="fa fa-copy"></i></button>
|
||||||
</a>
|
</div>
|
||||||
</button>
|
<span>
|
||||||
</section>
|
|
||||||
|
|
||||||
----
|
</span>
|
||||||
|
|
||||||
{: .center style="width:700px"}
|
### Windows
|
||||||
|
|
||||||
|
Run the following in a PowerShell session (as a non-admin user):
|
||||||
|
|
||||||
|
<div class="command-button">
|
||||||
|
<pre><span class="ghcup-command" id="ghcup-command-windows">Set-ExecutionPolicy Bypass -Scope Process -Force;[System.Net.ServicePointManager]::SecurityProtocol = [System.Net.ServicePointManager]::SecurityProtocol -bor 3072;Invoke-Command -ScriptBlock ([ScriptBlock]::Create((Invoke-WebRequest https://www.haskell.org/ghcup/sh/bootstrap-haskell.ps1 -UseBasicParsing))) -ArgumentList $true</span></pre>
|
||||||
|
<button class="btn" onclick="copyToClipboardWin()" id="ghcup-windows-button"><i class="fa fa-copy"></i></button>
|
||||||
|
</div>
|
||||||
|
|
||||||
<p id="help">
|
|
||||||
Need help? Ask on
|
|
||||||
<a href="https://kiwiirc.com/nextclient/irc.libera.chat/?nick=Guest%7C?#haskell,#haskell-ghcup">
|
|
||||||
<img src="irc.svg" alt="" />IRC</a>,
|
|
||||||
<a href="https://discord.gg/pKYf3zDQU7"><img src="Discord-Logo-Black.svg" alt="" />Discord</a>, <a href="https://app.element.io/#/room/#haskell-tooling:matrix.org"><img src="Matrix_logo.svg" alt=""/></a> or <a href="https://gitlab.haskell.org/haskell/ghcup-hs/issues">report a bug <img src="Octicons-bug.svg" alt="" /></a>
|
|
||||||
</p>
|
|
||||||
|
|
||||||
<script type="text/javascript" src="javascripts/ghcup.js"></script>
|
|
||||||
|
|||||||
@@ -1,8 +1,6 @@
|
|||||||
# Getting started
|
# Getting started
|
||||||
|
|
||||||
GHCup makes it easy to install specific versions of GHC on GNU/Linux,
|
Let's get started....
|
||||||
macOS (aka Darwin), FreeBSD and Windows and can also bootstrap a fresh [Haskell developer environment](./install/#supported-tools) from scratch.
|
|
||||||
It follows the unix 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).
|
|
||||||
|
|
||||||
## Installation
|
## Installation
|
||||||
|
|
||||||
@@ -22,9 +20,7 @@ For Windows, run this in a PowerShell session:
|
|||||||
Set-ExecutionPolicy Bypass -Scope Process -Force;[System.Net.ServicePointManager]::SecurityProtocol = [System.Net.ServicePointManager]::SecurityProtocol -bor 3072;Invoke-Command -ScriptBlock ([ScriptBlock]::Create((Invoke-WebRequest https://www.haskell.org/ghcup/sh/bootstrap-haskell.ps1 -UseBasicParsing))) -ArgumentList $true
|
Set-ExecutionPolicy Bypass -Scope Process -Force;[System.Net.ServicePointManager]::SecurityProtocol = [System.Net.ServicePointManager]::SecurityProtocol -bor 3072;Invoke-Command -ScriptBlock ([ScriptBlock]::Create((Invoke-WebRequest https://www.haskell.org/ghcup/sh/bootstrap-haskell.ps1 -UseBasicParsing))) -ArgumentList $true
|
||||||
```
|
```
|
||||||
|
|
||||||
If you want to know what these scripts do, check out the [source code at the repository](https://gitlab.haskell.org/haskell/ghcup-hs/-/tree/master/scripts/bootstrap). Advanced users may want to perform a [manual installation](#manual-install) and GPG verify the binaries.
|
Advanced users may want to perform a [manual installation](#manual-install) and GPG verify the binaries.
|
||||||
|
|
||||||
**Advice: Make sure to check out the [Haskell documentation](https://www.haskell.org/documentation/) after installation.**
|
|
||||||
|
|
||||||
## Supported tools
|
## Supported tools
|
||||||
|
|
||||||
@@ -61,8 +57,8 @@ This list may not be exhaustive and specifies support for bindists only.
|
|||||||
|
|
||||||
May or may not work, several issues:
|
May or may not work, several issues:
|
||||||
|
|
||||||
* [https://gitlab.haskell.org/haskell/ghcup-hs/-/issues/140](https://gitlab.haskell.org/haskell/ghcup-hs/-/issues/140)
|
* https://gitlab.haskell.org/haskell/ghcup-hs/-/issues/140
|
||||||
* [https://gitlab.haskell.org/haskell/ghcup-hs/-/issues/197](https://gitlab.haskell.org/haskell/ghcup-hs/-/issues/197)
|
* https://gitlab.haskell.org/haskell/ghcup-hs/-/issues/197
|
||||||
|
|
||||||
### WSL1
|
### WSL1
|
||||||
|
|
||||||
@@ -103,10 +99,3 @@ export PATH="$HOME/.cabal/bin:$HOME/.ghcup/bin:$PATH"
|
|||||||
|
|
||||||
See [ghcup.vim](https://github.com/hasufell/ghcup.vim).
|
See [ghcup.vim](https://github.com/hasufell/ghcup.vim).
|
||||||
|
|
||||||
## Get help
|
|
||||||
|
|
||||||
* [Libera IRC chat on #haskell-ghcup or #haskell](https://kiwiirc.com/nextclient/irc.libera.chat/?nick=Guest%7C?#haskell,#haskell-ghcup)
|
|
||||||
* [GHCup issue tracker](https://gitlab.haskell.org/haskell/ghcup-hs/issues)
|
|
||||||
* [Matrix](https://app.element.io/#/room/#haskell-tooling:matrix.org)
|
|
||||||
* [Discord](https://discord.gg/pKYf3zDQU7)
|
|
||||||
|
|
||||||
|
|||||||
38
docs/irc.svg
38
docs/irc.svg
@@ -1,38 +0,0 @@
|
|||||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
|
||||||
<svg
|
|
||||||
height="18.043058"
|
|
||||||
viewBox="0 0 18 18.043058"
|
|
||||||
width="18"
|
|
||||||
version="1.1"
|
|
||||||
id="svg4"
|
|
||||||
sodipodi:docname="irc.svg"
|
|
||||||
inkscape:version="1.1 (c68e22c387, 2021-05-23)"
|
|
||||||
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
|
||||||
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
|
||||||
xmlns="http://www.w3.org/2000/svg"
|
|
||||||
xmlns:svg="http://www.w3.org/2000/svg">
|
|
||||||
<defs
|
|
||||||
id="defs8" />
|
|
||||||
<sodipodi:namedview
|
|
||||||
id="namedview6"
|
|
||||||
pagecolor="#ffffff"
|
|
||||||
bordercolor="#666666"
|
|
||||||
borderopacity="1.0"
|
|
||||||
inkscape:pageshadow="2"
|
|
||||||
inkscape:pageopacity="0.0"
|
|
||||||
inkscape:pagecheckerboard="0"
|
|
||||||
showgrid="false"
|
|
||||||
inkscape:zoom="36.375"
|
|
||||||
inkscape:cx="3.3814433"
|
|
||||||
inkscape:cy="9.0309278"
|
|
||||||
inkscape:window-width="3828"
|
|
||||||
inkscape:window-height="2081"
|
|
||||||
inkscape:window-x="0"
|
|
||||||
inkscape:window-y="46"
|
|
||||||
inkscape:window-maximized="1"
|
|
||||||
inkscape:current-layer="svg4" />
|
|
||||||
<path
|
|
||||||
class="heroicon-ui"
|
|
||||||
d="m 8.03,5.0375961 h 3.94 l 1.06,-4.23999995 a 1,1 0 1 1 1.94,0.47999995 l -0.94,3.76 H 17 a 1,1 0 0 1 0,2 h -3.47 l -1,3.9999999 H 15 a 1,1 0 1 1 0,2 h -2.97 l -1.06,4.25 a 1.0004624,1.0004624 0 1 1 -1.94,-0.49 l 0.94,-3.76 H 6.03 l -1.06,4.25 a 1.0004624,1.0004624 0 1 1 -1.94,-0.49 l 0.94,-3.76 H 1 a 1,1 0 0 1 0,-2 h 3.47 l 1,-3.9999999 H 3 a 1,1 0 0 1 0,-2 H 5.97 L 7.03,0.79759615 A 1,1 0 1 1 8.97,1.2775961 Z m -0.5,2 -1,3.9999999 h 3.94 l 1,-3.9999999 z"
|
|
||||||
id="path2" />
|
|
||||||
</svg>
|
|
||||||
|
Before Width: | Height: | Size: 1.5 KiB |
@@ -1,93 +1,3 @@
|
|||||||
var platforms = ["win", "unix"];
|
|
||||||
var platform_override = null;
|
|
||||||
|
|
||||||
function detect_platform() {
|
|
||||||
"use strict";
|
|
||||||
|
|
||||||
if (platform_override !== null) {
|
|
||||||
return "unknown";
|
|
||||||
}
|
|
||||||
|
|
||||||
var os = "unknown";
|
|
||||||
|
|
||||||
if (navigator.platform == "Linux x86_64") {os = "unix";}
|
|
||||||
if (navigator.platform == "Linux i686") {os = "unix";}
|
|
||||||
if (navigator.platform == "Linux i686 on x86_64") {os = "unix";}
|
|
||||||
if (navigator.platform == "Linux aarch64") {os = "unix";}
|
|
||||||
if (navigator.platform == "Linux armv6l") {os = "unix";}
|
|
||||||
if (navigator.platform == "Linux armv7l") {os = "unix";}
|
|
||||||
if (navigator.platform == "Linux armv8l") {os = "unix";}
|
|
||||||
if (navigator.platform == "Linux ppc64") {os = "unix";}
|
|
||||||
if (navigator.platform == "Linux mips") {os = "unix";}
|
|
||||||
if (navigator.platform == "Linux mips64") {os = "unix";}
|
|
||||||
if (navigator.platform == "Mac") {os = "unix";}
|
|
||||||
if (navigator.platform == "Win32") {os = "win";}
|
|
||||||
if (navigator.platform == "Win64" ||
|
|
||||||
navigator.userAgent.indexOf("WOW64") != -1 ||
|
|
||||||
navigator.userAgent.indexOf("Win64") != -1) {os = "win";}
|
|
||||||
if (navigator.platform == "FreeBSD x86_64") {os = "unix";}
|
|
||||||
if (navigator.platform == "FreeBSD amd64") {os = "unix";}
|
|
||||||
// if (navigator.platform == "NetBSD x86_64") {os = "unix";}
|
|
||||||
// if (navigator.platform == "NetBSD amd64") {os = "unix";}
|
|
||||||
|
|
||||||
// I wish I knew by now, but I don't. Try harder.
|
|
||||||
if (os == "unknown") {
|
|
||||||
if (navigator.appVersion.indexOf("Win")!=-1) {os = "win";}
|
|
||||||
if (navigator.appVersion.indexOf("Mac")!=-1) {os = "unix";}
|
|
||||||
if (navigator.appVersion.indexOf("FreeBSD")!=-1) {os = "unix";}
|
|
||||||
}
|
|
||||||
|
|
||||||
// Firefox Quantum likes to hide platform and appVersion but oscpu works
|
|
||||||
if (navigator.oscpu) {
|
|
||||||
if (navigator.oscpu.indexOf("Win32")!=-1) {os = "win";}
|
|
||||||
if (navigator.oscpu.indexOf("Win64")!=-1) {os = "win";}
|
|
||||||
if (navigator.oscpu.indexOf("Mac")!=-1) {os = "unix";}
|
|
||||||
if (navigator.oscpu.indexOf("Linux")!=-1) {os = "unix";}
|
|
||||||
if (navigator.oscpu.indexOf("FreeBSD")!=-1) {os = "unix";}
|
|
||||||
// if (navigator.oscpu.indexOf("NetBSD")!=-1) {os = "unix";}
|
|
||||||
}
|
|
||||||
|
|
||||||
return os;
|
|
||||||
}
|
|
||||||
|
|
||||||
function adjust_for_platform() {
|
|
||||||
"use strict";
|
|
||||||
|
|
||||||
var platform = detect_platform();
|
|
||||||
|
|
||||||
if (platforms.includes(platform)) {
|
|
||||||
platforms.forEach(function (platform_elem) {
|
|
||||||
var platform_div = document.getElementById("ghcup-instructions-" + platform_elem);
|
|
||||||
platform_div.style.display = "none";
|
|
||||||
if (platform == platform_elem) {
|
|
||||||
platform_div.style.display = "block";
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
function show_all_platforms() {
|
|
||||||
platforms.forEach(function (platform_elem) {
|
|
||||||
var platform_div = document.getElementById("ghcup-instructions-" + platform_elem);
|
|
||||||
platform_div.style.display = "block";
|
|
||||||
});
|
|
||||||
|
|
||||||
var buttons = document.getElementsByClassName("show-all-platforms");
|
|
||||||
console.log(buttons);
|
|
||||||
Array.from(buttons).forEach(function (button) {
|
|
||||||
button.style.display = "none";
|
|
||||||
});
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
function set_up_default_platform_buttons() {
|
|
||||||
var defaults_buttons = document.getElementsByClassName('show-all-platforms-button');
|
|
||||||
for (var i = 0; i < defaults_buttons.length; i++) {
|
|
||||||
defaults_buttons[i].onclick = show_all_platforms;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
function copyToClipboardNux() {
|
function copyToClipboardNux() {
|
||||||
const text = document.getElementById("ghcup-command-linux").innerText;
|
const text = document.getElementById("ghcup-command-linux").innerText;
|
||||||
const el = document.createElement('textarea');
|
const el = document.createElement('textarea');
|
||||||
@@ -111,9 +21,3 @@ function copyToClipboardWin() {
|
|||||||
const button = document.getElementById("ghcup-windows-button");
|
const button = document.getElementById("ghcup-windows-button");
|
||||||
button.focus();
|
button.focus();
|
||||||
}
|
}
|
||||||
|
|
||||||
(function () {
|
|
||||||
adjust_for_platform();
|
|
||||||
set_up_default_platform_buttons();
|
|
||||||
}());
|
|
||||||
|
|
||||||
|
|||||||
@@ -98,7 +98,7 @@ 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
|
, bytestring ^>=0.10
|
||||||
, Cabal ^>=3.6.2.0
|
, Cabal
|
||||||
, 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
|
||||||
|
|||||||
23
lib/GHCup.hs
23
lib/GHCup.hs
@@ -205,7 +205,6 @@ installGHCBindist :: ( MonadFail m
|
|||||||
, TarDirDoesNotExist
|
, TarDirDoesNotExist
|
||||||
, DirNotEmpty
|
, DirNotEmpty
|
||||||
, ArchiveResult
|
, ArchiveResult
|
||||||
, ProcessError
|
|
||||||
]
|
]
|
||||||
m
|
m
|
||||||
()
|
()
|
||||||
@@ -284,7 +283,6 @@ installPackedGHC :: ( MonadMask m
|
|||||||
, TarDirDoesNotExist
|
, TarDirDoesNotExist
|
||||||
, DirNotEmpty
|
, DirNotEmpty
|
||||||
, ArchiveResult
|
, ArchiveResult
|
||||||
, ProcessError
|
|
||||||
] m ()
|
] m ()
|
||||||
installPackedGHC dl msubdir inst ver forceInstall = do
|
installPackedGHC dl msubdir inst ver forceInstall = do
|
||||||
PlatformRequest {..} <- lift getPlatformReq
|
PlatformRequest {..} <- lift getPlatformReq
|
||||||
@@ -294,7 +292,7 @@ installPackedGHC dl msubdir inst ver forceInstall = do
|
|||||||
|
|
||||||
-- unpack
|
-- unpack
|
||||||
tmpUnpack <- lift mkGhcupTmpDir
|
tmpUnpack <- lift mkGhcupTmpDir
|
||||||
liftE $ cleanUpOnError tmpUnpack (unpackToDir tmpUnpack dl)
|
liftE $ unpackToDir tmpUnpack dl
|
||||||
liftE $ catchWarn $ lEM @_ @'[ProcessError] $ darwinNotarization _rPlatform tmpUnpack
|
liftE $ catchWarn $ lEM @_ @'[ProcessError] $ darwinNotarization _rPlatform tmpUnpack
|
||||||
|
|
||||||
-- the subdir of the archive where we do the work
|
-- the subdir of the archive where we do the work
|
||||||
@@ -404,13 +402,12 @@ installGHCBin :: ( MonadFail m
|
|||||||
, TarDirDoesNotExist
|
, TarDirDoesNotExist
|
||||||
, DirNotEmpty
|
, DirNotEmpty
|
||||||
, ArchiveResult
|
, ArchiveResult
|
||||||
, ProcessError
|
|
||||||
]
|
]
|
||||||
m
|
m
|
||||||
()
|
()
|
||||||
installGHCBin ver isoFilepath forceInstall = do
|
installGHCBin ver isoFilepath forceInstall = do
|
||||||
dlinfo <- liftE $ getDownloadInfo GHC ver
|
dlinfo <- liftE $ getDownloadInfo GHC ver
|
||||||
liftE $ installGHCBindist dlinfo ver isoFilepath forceInstall
|
installGHCBindist dlinfo ver isoFilepath forceInstall
|
||||||
|
|
||||||
|
|
||||||
-- | Like 'installCabalBin', except takes the 'DownloadInfo' as
|
-- | Like 'installCabalBin', except takes the 'DownloadInfo' as
|
||||||
@@ -475,7 +472,7 @@ installCabalBindist dlinfo ver isoFilepath forceInstall = do
|
|||||||
|
|
||||||
-- unpack
|
-- unpack
|
||||||
tmpUnpack <- lift withGHCupTmpDir
|
tmpUnpack <- lift withGHCupTmpDir
|
||||||
liftE $ cleanUpOnError tmpUnpack (unpackToDir tmpUnpack dl)
|
liftE $ unpackToDir tmpUnpack dl
|
||||||
liftE $ catchWarn $ lEM @_ @'[ProcessError] $ darwinNotarization _rPlatform tmpUnpack
|
liftE $ catchWarn $ lEM @_ @'[ProcessError] $ darwinNotarization _rPlatform tmpUnpack
|
||||||
|
|
||||||
-- the subdir of the archive where we do the work
|
-- the subdir of the archive where we do the work
|
||||||
@@ -617,7 +614,7 @@ installHLSBindist dlinfo ver isoFilepath forceInstall = do
|
|||||||
|
|
||||||
-- unpack
|
-- unpack
|
||||||
tmpUnpack <- lift withGHCupTmpDir
|
tmpUnpack <- lift withGHCupTmpDir
|
||||||
liftE $ cleanUpOnError tmpUnpack (unpackToDir tmpUnpack dl)
|
liftE $ unpackToDir tmpUnpack dl
|
||||||
liftE $ catchWarn $ lEM @_ @'[ProcessError] $ darwinNotarization _rPlatform tmpUnpack
|
liftE $ catchWarn $ lEM @_ @'[ProcessError] $ darwinNotarization _rPlatform tmpUnpack
|
||||||
|
|
||||||
-- the subdir of the archive where we do the work
|
-- the subdir of the archive where we do the work
|
||||||
@@ -787,7 +784,7 @@ compileHLS targetHLS ghcs jobs ov isolateDir cabalProject cabalProjectLocal patc
|
|||||||
|
|
||||||
-- unpack
|
-- unpack
|
||||||
tmpUnpack <- lift mkGhcupTmpDir
|
tmpUnpack <- lift mkGhcupTmpDir
|
||||||
liftE $ cleanUpOnError tmpUnpack (unpackToDir tmpUnpack dl)
|
liftE $ unpackToDir tmpUnpack dl
|
||||||
liftE $ catchWarn $ lEM @_ @'[ProcessError] $ darwinNotarization _rPlatform tmpUnpack
|
liftE $ catchWarn $ lEM @_ @'[ProcessError] $ darwinNotarization _rPlatform tmpUnpack
|
||||||
|
|
||||||
workdir <- maybe (pure tmpUnpack)
|
workdir <- maybe (pure tmpUnpack)
|
||||||
@@ -1004,7 +1001,7 @@ installStackBindist dlinfo ver isoFilepath forceInstall = do
|
|||||||
|
|
||||||
-- unpack
|
-- unpack
|
||||||
tmpUnpack <- lift withGHCupTmpDir
|
tmpUnpack <- lift withGHCupTmpDir
|
||||||
liftE $ cleanUpOnError tmpUnpack (unpackToDir tmpUnpack dl)
|
liftE $ unpackToDir tmpUnpack dl
|
||||||
liftE $ catchWarn $ lEM @_ @'[ProcessError] $ darwinNotarization _rPlatform tmpUnpack
|
liftE $ catchWarn $ lEM @_ @'[ProcessError] $ darwinNotarization _rPlatform tmpUnpack
|
||||||
|
|
||||||
-- the subdir of the archive where we do the work
|
-- the subdir of the archive where we do the work
|
||||||
@@ -2117,12 +2114,6 @@ compileGHC :: ( MonadMask m
|
|||||||
, NotInstalled
|
, NotInstalled
|
||||||
, DirNotEmpty
|
, DirNotEmpty
|
||||||
, ArchiveResult
|
, ArchiveResult
|
||||||
, FileDoesNotExistError
|
|
||||||
, HadrianNotFound
|
|
||||||
, InvalidBuildConfig
|
|
||||||
, ProcessError
|
|
||||||
, CopyError
|
|
||||||
, BuildFailed
|
|
||||||
]
|
]
|
||||||
m
|
m
|
||||||
GHCTargetVersion
|
GHCTargetVersion
|
||||||
@@ -2144,7 +2135,7 @@ compileGHC targetGhc ov bstrap jobs mbuildConfig patchdir aargs buildFlavour had
|
|||||||
|
|
||||||
-- unpack
|
-- unpack
|
||||||
tmpUnpack <- lift mkGhcupTmpDir
|
tmpUnpack <- lift mkGhcupTmpDir
|
||||||
liftE $ cleanUpOnError tmpUnpack (unpackToDir tmpUnpack dl)
|
liftE $ unpackToDir tmpUnpack dl
|
||||||
liftE $ catchWarn $ lEM @_ @'[ProcessError] $ darwinNotarization _rPlatform tmpUnpack
|
liftE $ catchWarn $ lEM @_ @'[ProcessError] $ darwinNotarization _rPlatform tmpUnpack
|
||||||
|
|
||||||
workdir <- maybe (pure tmpUnpack)
|
workdir <- maybe (pure tmpUnpack)
|
||||||
|
|||||||
@@ -74,6 +74,7 @@ import System.Win32.Console
|
|||||||
import System.Win32.File hiding ( copyFile )
|
import System.Win32.File hiding ( copyFile )
|
||||||
import System.Win32.Types
|
import System.Win32.Types
|
||||||
#endif
|
#endif
|
||||||
|
import Text.PrettyPrint.HughesPJClass hiding ( (<>) )
|
||||||
import Text.Regex.Posix
|
import Text.Regex.Posix
|
||||||
import URI.ByteString
|
import URI.ByteString
|
||||||
|
|
||||||
@@ -925,7 +926,11 @@ getChangeLog dls tool (Right tag) =
|
|||||||
--
|
--
|
||||||
-- 1. the build directory, depending on the KeepDirs setting
|
-- 1. the build directory, depending on the KeepDirs setting
|
||||||
-- 2. the install destination, depending on whether the build failed
|
-- 2. the install destination, depending on whether the build failed
|
||||||
runBuildAction :: ( MonadReader env m
|
runBuildAction :: ( Pretty (V e)
|
||||||
|
, Show (V e)
|
||||||
|
, PopVariant BuildFailed e
|
||||||
|
, ToVariantMaybe BuildFailed e
|
||||||
|
, MonadReader env m
|
||||||
, HasDirs env
|
, HasDirs env
|
||||||
, HasSettings env
|
, HasSettings env
|
||||||
, MonadIO m
|
, MonadIO m
|
||||||
@@ -938,43 +943,26 @@ runBuildAction :: ( MonadReader env m
|
|||||||
=> FilePath -- ^ build directory (cleaned up depending on Settings)
|
=> FilePath -- ^ build directory (cleaned up depending on Settings)
|
||||||
-> Maybe FilePath -- ^ dir to *always* clean up on exception
|
-> Maybe FilePath -- ^ dir to *always* clean up on exception
|
||||||
-> Excepts e m a
|
-> Excepts e m a
|
||||||
-> Excepts e m a
|
-> Excepts '[BuildFailed] m a
|
||||||
runBuildAction bdir instdir action = do
|
runBuildAction bdir instdir action = do
|
||||||
Settings {..} <- lift getSettings
|
Settings {..} <- lift getSettings
|
||||||
let exAction = do
|
let exAction = do
|
||||||
forM_ instdir $ \dir ->
|
forM_ instdir $ \dir ->
|
||||||
hideError doesNotExistErrorType $ recyclePathForcibly dir
|
lift $ hideError doesNotExistErrorType $ recyclePathForcibly dir
|
||||||
when (keepDirs == Never)
|
when (keepDirs == Never)
|
||||||
$ rmBDir bdir
|
$ lift $ rmBDir bdir
|
||||||
v <-
|
v <-
|
||||||
flip onException (lift exAction)
|
flip onException exAction
|
||||||
$ onE_ exAction action
|
$ catchAllE
|
||||||
|
(\es -> do
|
||||||
|
exAction
|
||||||
|
throwE (BuildFailed bdir es)
|
||||||
|
) action
|
||||||
|
|
||||||
when (keepDirs == Never || keepDirs == Errors) $ lift $ rmBDir bdir
|
when (keepDirs == Never || keepDirs == Errors) $ lift $ rmBDir bdir
|
||||||
pure v
|
pure v
|
||||||
|
|
||||||
|
|
||||||
-- | Clean up the given directory if the action fails,
|
|
||||||
-- depending on the Settings.
|
|
||||||
cleanUpOnError :: ( MonadReader env m
|
|
||||||
, HasDirs env
|
|
||||||
, HasSettings env
|
|
||||||
, MonadIO m
|
|
||||||
, MonadMask m
|
|
||||||
, HasLog env
|
|
||||||
, MonadUnliftIO m
|
|
||||||
, MonadFail m
|
|
||||||
, MonadCatch m
|
|
||||||
)
|
|
||||||
=> FilePath -- ^ build directory (cleaned up depending on Settings)
|
|
||||||
-> Excepts e m a
|
|
||||||
-> Excepts e m a
|
|
||||||
cleanUpOnError bdir action = do
|
|
||||||
Settings {..} <- lift getSettings
|
|
||||||
let exAction = when (keepDirs == Never) $ rmBDir bdir
|
|
||||||
flip onException (lift exAction) $ onE_ exAction action
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
-- | Remove a build directory, ignoring if it doesn't exist and gracefully
|
-- | Remove a build directory, ignoring if it doesn't exist and gracefully
|
||||||
-- printing other errors without crashing.
|
-- printing other errors without crashing.
|
||||||
rmBDir :: (MonadReader env m, HasLog env, MonadUnliftIO m, MonadIO m) => FilePath -> m ()
|
rmBDir :: (MonadReader env m, HasLog env, MonadUnliftIO m, MonadIO m) => FilePath -> m ()
|
||||||
|
|||||||
@@ -70,7 +70,6 @@ warn() {
|
|||||||
else
|
else
|
||||||
case "${plat}" in
|
case "${plat}" in
|
||||||
MSYS*|MINGW*)
|
MSYS*|MINGW*)
|
||||||
# shellcheck disable=SC3037
|
|
||||||
echo -e "\\033[0;35m$1\\033[0m"
|
echo -e "\\033[0;35m$1\\033[0m"
|
||||||
;;
|
;;
|
||||||
*)
|
*)
|
||||||
@@ -86,7 +85,6 @@ yellow() {
|
|||||||
else
|
else
|
||||||
case "${plat}" in
|
case "${plat}" in
|
||||||
MSYS*|MINGW*)
|
MSYS*|MINGW*)
|
||||||
# shellcheck disable=SC3037
|
|
||||||
echo -e "\\033[0;33m$1\\033[0m"
|
echo -e "\\033[0;33m$1\\033[0m"
|
||||||
;;
|
;;
|
||||||
*)
|
*)
|
||||||
@@ -102,7 +100,6 @@ green() {
|
|||||||
else
|
else
|
||||||
case "${plat}" in
|
case "${plat}" in
|
||||||
MSYS*|MINGW*)
|
MSYS*|MINGW*)
|
||||||
# shellcheck disable=SC3037
|
|
||||||
echo -e "\\033[0;32m$1\\033[0m"
|
echo -e "\\033[0;32m$1\\033[0m"
|
||||||
;;
|
;;
|
||||||
*)
|
*)
|
||||||
@@ -125,10 +122,8 @@ _eghcup() {
|
|||||||
args="-s ${BOOTSTRAP_HASKELL_YAML}"
|
args="-s ${BOOTSTRAP_HASKELL_YAML}"
|
||||||
fi
|
fi
|
||||||
if [ -z "${BOOTSTRAP_HASKELL_VERBOSE}" ] ; then
|
if [ -z "${BOOTSTRAP_HASKELL_VERBOSE}" ] ; then
|
||||||
# shellcheck disable=SC2086
|
|
||||||
"${GHCUP_BIN}/ghcup" ${args} "$@"
|
"${GHCUP_BIN}/ghcup" ${args} "$@"
|
||||||
else
|
else
|
||||||
# shellcheck disable=SC2086
|
|
||||||
"${GHCUP_BIN}/ghcup" ${args} --verbose "$@"
|
"${GHCUP_BIN}/ghcup" ${args} --verbose "$@"
|
||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
@@ -157,8 +152,6 @@ _done() {
|
|||||||
green "open the \"Mingw haskell shell\""
|
green "open the \"Mingw haskell shell\""
|
||||||
green "and the \"Mingw package management docs\""
|
green "and the \"Mingw package management docs\""
|
||||||
green "desktop shortcuts."
|
green "desktop shortcuts."
|
||||||
green
|
|
||||||
green "If you are net to Haskell, check out https://www.haskell.org/documentation/"
|
|
||||||
;;
|
;;
|
||||||
*)
|
*)
|
||||||
green
|
green
|
||||||
@@ -172,8 +165,6 @@ _done() {
|
|||||||
green
|
green
|
||||||
green "To install other GHC versions and tools, run:"
|
green "To install other GHC versions and tools, run:"
|
||||||
green " ghcup tui"
|
green " ghcup tui"
|
||||||
green
|
|
||||||
green "If you are net to Haskell, check out https://www.haskell.org/documentation/"
|
|
||||||
;;
|
;;
|
||||||
|
|
||||||
esac
|
esac
|
||||||
@@ -398,7 +389,7 @@ adjust_bashrc() {
|
|||||||
echo "set -q GHCUP_INSTALL_BASE_PREFIX[1]; or set GHCUP_INSTALL_BASE_PREFIX \$HOME ; set -gx PATH \$HOME/.cabal/bin \$PATH $GHCUP_BIN # ghcup-env" >> "${GHCUP_PROFILE_FILE}"
|
echo "set -q GHCUP_INSTALL_BASE_PREFIX[1]; or set GHCUP_INSTALL_BASE_PREFIX \$HOME ; set -gx PATH \$HOME/.cabal/bin \$PATH $GHCUP_BIN # ghcup-env" >> "${GHCUP_PROFILE_FILE}"
|
||||||
;;
|
;;
|
||||||
esac
|
esac
|
||||||
;;
|
break ;;
|
||||||
bash)
|
bash)
|
||||||
sed -i -e '/# ghcup-env$/ s/^#*/#/' "${GHCUP_PROFILE_FILE}"
|
sed -i -e '/# ghcup-env$/ s/^#*/#/' "${GHCUP_PROFILE_FILE}"
|
||||||
echo "[ -f \"${GHCUP_DIR}/env\" ] && source \"${GHCUP_DIR}/env\" # ghcup-env" >> "${GHCUP_PROFILE_FILE}"
|
echo "[ -f \"${GHCUP_DIR}/env\" ] && source \"${GHCUP_DIR}/env\" # ghcup-env" >> "${GHCUP_PROFILE_FILE}"
|
||||||
@@ -416,12 +407,12 @@ adjust_bashrc() {
|
|||||||
fi
|
fi
|
||||||
;;
|
;;
|
||||||
esac
|
esac
|
||||||
;;
|
break ;;
|
||||||
|
|
||||||
zsh)
|
zsh)
|
||||||
sed -i -e '/# ghcup-env$/ s/^#*/#/' "${GHCUP_PROFILE_FILE}"
|
sed -i -e '/# ghcup-env$/ s/^#*/#/' "${GHCUP_PROFILE_FILE}"
|
||||||
echo "[ -f \"${GHCUP_DIR}/env\" ] && source \"${GHCUP_DIR}/env\" # ghcup-env" >> "${GHCUP_PROFILE_FILE}"
|
echo "[ -f \"${GHCUP_DIR}/env\" ] && source \"${GHCUP_DIR}/env\" # ghcup-env" >> "${GHCUP_PROFILE_FILE}"
|
||||||
;;
|
break ;;
|
||||||
esac
|
esac
|
||||||
echo
|
echo
|
||||||
echo "==============================================================================="
|
echo "==============================================================================="
|
||||||
@@ -448,12 +439,7 @@ warn_path() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
adjust_cabal_config() {
|
adjust_cabal_config() {
|
||||||
if [ -n "${CABAL_DIR}" ] ; then
|
edo cabal user-config -a "extra-prog-path: $(cygpath -w "$GHCUP_BIN"), $(cygpath -w "$HOME"/AppData/Roaming/cabal/bin), $(cygpath -w "$GHCUP_MSYS2"/usr/bin), $(cygpath -w "$GHCUP_MSYS2"/mingw64/bin)" -a "extra-include-dirs: $(cygpath -w "$GHCUP_MSYS2"/mingw64/include)" -a "extra-lib-dirs: $(cygpath -w "$GHCUP_MSYS2"/mingw64/lib)" -f init
|
||||||
cabal_bin="${CABAL_DIR}/bin"
|
|
||||||
else
|
|
||||||
cabal_bin="$HOME/AppData/Roaming/cabal/bin"
|
|
||||||
fi
|
|
||||||
edo cabal user-config -a "extra-prog-path: $(cygpath -w "$GHCUP_BIN"), $(cygpath -w "$cabal_bin"), $(cygpath -w "$GHCUP_MSYS2"/usr/bin), $(cygpath -w "$GHCUP_MSYS2"/mingw64/bin)" -a "extra-include-dirs: $(cygpath -w "$GHCUP_MSYS2"/mingw64/include)" -a "extra-lib-dirs: $(cygpath -w "$GHCUP_MSYS2"/mingw64/lib)" -f init
|
|
||||||
}
|
}
|
||||||
|
|
||||||
ask_cabal_config_init() {
|
ask_cabal_config_init() {
|
||||||
@@ -658,7 +644,7 @@ else
|
|||||||
fi
|
fi
|
||||||
|
|
||||||
echo
|
echo
|
||||||
if [ -n "${BOOTSTRAP_HASKELL_YAML}" ] ; then (>&2 ghcup -s "${BOOTSTRAP_HASKELL_YAML}" tool-requirements) ; else (>&2 ghcup tool-requirements) ; fi
|
echo "$(if [ -n "${BOOTSTRAP_HASKELL_YAML}" ] ; then ghcup -s "${BOOTSTRAP_HASKELL_YAML}" tool-requirements ; else ghcup tool-requirements ; fi)"
|
||||||
echo
|
echo
|
||||||
|
|
||||||
if [ -z "${BOOTSTRAP_HASKELL_NONINTERACTIVE}" ] ; then
|
if [ -z "${BOOTSTRAP_HASKELL_NONINTERACTIVE}" ] ; then
|
||||||
|
|||||||
@@ -4,14 +4,13 @@ packages:
|
|||||||
- .
|
- .
|
||||||
|
|
||||||
extra-deps:
|
extra-deps:
|
||||||
- Cabal-3.6.2.0@sha256:e2266e14758c1f799220fad7f0d4b0b4ec567d81b7ba3faea17ff76d4c31de95,12437
|
|
||||||
- IfElse-0.85@sha256:6939b94acc6a55f545f63a168a349dd2fbe4b9a7cca73bf60282db5cc6aa47d2,445
|
- IfElse-0.85@sha256:6939b94acc6a55f545f63a168a349dd2fbe4b9a7cca73bf60282db5cc6aa47d2,445
|
||||||
- ascii-string-1.0.1.4@sha256:fa34f1d9ba57e8e89c0d4c9cef5e01ba32cb2d4373d13f92dcc0b531a6c6749b,2582
|
- ascii-string-1.0.1.4@sha256:fa34f1d9ba57e8e89c0d4c9cef5e01ba32cb2d4373d13f92dcc0b531a6c6749b,2582
|
||||||
- base16-bytestring-0.1.1.7@sha256:0021256a9628971c08da95cb8f4d0d72192f3bb8a7b30b55c080562d17c43dd3,2231
|
- base16-bytestring-0.1.1.7@sha256:0021256a9628971c08da95cb8f4d0d72192f3bb8a7b30b55c080562d17c43dd3,2231
|
||||||
- brick-0.64@sha256:f03fa14607c22cf48af99e24c44f79a0fb073f7ec229f15e969fed9ff73c93f6,16530
|
- brick-0.64@sha256:f03fa14607c22cf48af99e24c44f79a0fb073f7ec229f15e969fed9ff73c93f6,16530
|
||||||
- brotli-0.0.0.0@sha256:2bf383a4cd308745740986be0b18381c5a0784393fe69b91456aacb2d603de46,2964
|
- brotli-0.0.0.0@sha256:2bf383a4cd308745740986be0b18381c5a0784393fe69b91456aacb2d603de46,2964
|
||||||
- brotli-streams-0.0.0.0@sha256:1af1e22f67b8bfd6ad0d05e61825e7a178d738f689ebbb21c1aab5f1bbcae176,2331
|
- brotli-streams-0.0.0.0@sha256:1af1e22f67b8bfd6ad0d05e61825e7a178d738f689ebbb21c1aab5f1bbcae176,2331
|
||||||
- chs-cabal-0.1.1.1
|
- chs-cabal-0.1.1.0@sha256:20ec6a9fb5ab6991f1a4adf157c537bd5d3b98d08d3c09c387c954c7c50bd011,1153
|
||||||
- chs-deps-0.1.0.0@sha256:0cdada6d2c682c41b20331b8c63c2ecfc7e806928585195fd544c9d41f3074fd,2496
|
- chs-deps-0.1.0.0@sha256:0cdada6d2c682c41b20331b8c63c2ecfc7e806928585195fd544c9d41f3074fd,2496
|
||||||
- composition-prelude-3.0.0.2@sha256:1ffed216bd28d810fce0b5be83a661e2a892696d73b3f8de5c0f5edb9b5f0090,1216
|
- composition-prelude-3.0.0.2@sha256:1ffed216bd28d810fce0b5be83a661e2a892696d73b3f8de5c0f5edb9b5f0090,1216
|
||||||
- haskus-utils-data-1.4@sha256:bfa94363b94b14779edd6834fbd59dbb847c3d7b8f48e3844f456ffdc077da4a,1466
|
- haskus-utils-data-1.4@sha256:bfa94363b94b14779edd6834fbd59dbb847c3d7b8f48e3844f456ffdc077da4a,1466
|
||||||
|
|||||||
Reference in New Issue
Block a user