Compare commits
18 Commits
issue-992
...
issue-1019
| Author | SHA1 | Date | |
|---|---|---|---|
| 065b307d60 | |||
| 5eaae9916d | |||
| 5d0a7b71a2 | |||
| b4600b8183 | |||
| f465243fc6 | |||
| e4b0e8debf | |||
| d9d13dda5f | |||
| aef10a699e | |||
| 190d308ddf | |||
| 4314146247 | |||
| 4831798c9e | |||
| e999e6f5b8 | |||
| 3ad785c116 | |||
| be3db87410 | |||
| 57d23c477d | |||
| 0ec07636fb | |||
| bdd15ad6e7 | |||
| 96f7aa5c62 |
6
.github/scripts/test.sh
vendored
6
.github/scripts/test.sh
vendored
@@ -39,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}")"
|
||||||
|
|||||||
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
|
||||||
|
|
||||||
|
|||||||
32
CHANGELOG.md
32
CHANGELOG.md
@@ -1,5 +1,37 @@
|
|||||||
# Revision history for ghcup
|
# Revision history for ghcup
|
||||||
|
|
||||||
|
## 0.1.22.0 -- ????-??-??
|
||||||
|
|
||||||
|
### New features
|
||||||
|
|
||||||
|
* 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)
|
||||||
|
|
||||||
|
### Improvements and bug fixes
|
||||||
|
|
||||||
|
* 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
|
## 0.1.20.0 -- 2023-11-10
|
||||||
|
|
||||||
### New features
|
### New features
|
||||||
|
|||||||
@@ -10,12 +10,18 @@ else
|
|||||||
flags: +tui +tar
|
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,
|
||||||
|
bzlib-conduit >= 0.3.0.3,
|
||||||
|
bz2 >= 1.0.1.1,
|
||||||
|
bzlib >= 0.5.2.0
|
||||||
|
|
||||||
if os(mingw32)
|
if os(mingw32)
|
||||||
|
constraints: vty-windows >=0.2.0.2
|
||||||
|
|
||||||
if impl(ghc >= 9.4)
|
if impl(ghc >= 9.4)
|
||||||
constraints: language-c >= 0.9.3
|
constraints: language-c >= 0.9.3
|
||||||
|
|
||||||
|
|
||||||
source-repository-package
|
source-repository-package
|
||||||
type: git
|
type: git
|
||||||
location: https://github.com/haskell/tar.git
|
location: https://github.com/haskell/tar.git
|
||||||
@@ -26,11 +32,6 @@ source-repository-package
|
|||||||
location: https://github.com/hasufell/uri-bytestring.git
|
location: https://github.com/hasufell/uri-bytestring.git
|
||||||
tag: 4fb5ed14b500c192e6e7a97f6b2b1eb478806001
|
tag: 4fb5ed14b500c192e6e7a97f6b2b1eb478806001
|
||||||
|
|
||||||
source-repository-package
|
|
||||||
type: git
|
|
||||||
location: https://github.com/hasufell/versions.git
|
|
||||||
tag: 79e18fbc44fae3064d8957c550cc0229465db320
|
|
||||||
|
|
||||||
package libarchive
|
package libarchive
|
||||||
flags: -system-libarchive
|
flags: -system-libarchive
|
||||||
|
|
||||||
@@ -49,7 +50,7 @@ package streamly
|
|||||||
package *
|
package *
|
||||||
test-show-details: direct
|
test-show-details: direct
|
||||||
|
|
||||||
allow-newer: cabal-install-parsers:tar
|
allow-newer: cabal-install-parsers:tar, streamly:Win32
|
||||||
|
|
||||||
|
|
||||||
with-compiler: ghc-8.10.7
|
with-compiler: ghc-8.10.7
|
||||||
|
|||||||
@@ -1,6 +1,5 @@
|
|||||||
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.10.2.0,
|
||||||
any.HUnit ==1.6.2.0,
|
any.HUnit ==1.6.2.0,
|
||||||
any.HsOpenSSL ==0.11.7.6,
|
any.HsOpenSSL ==0.11.7.6,
|
||||||
@@ -11,11 +10,11 @@ constraints: any.Cabal ==3.6.3.0,
|
|||||||
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.2.1,
|
any.aeson ==2.2.1.0,
|
||||||
aeson -cffi +ordered-keymap,
|
aeson +ordered-keymap,
|
||||||
any.aeson-pretty ==0.8.10,
|
any.aeson-pretty ==0.8.10,
|
||||||
aeson-pretty +lib-only,
|
aeson-pretty +lib-only,
|
||||||
any.alex ==3.5.0.0,
|
any.alex ==3.5.1.0,
|
||||||
any.ansi-terminal ==1.0.2,
|
any.ansi-terminal ==1.0.2,
|
||||||
ansi-terminal -example,
|
ansi-terminal -example,
|
||||||
any.ansi-terminal-types ==0.11.5,
|
any.ansi-terminal-types ==0.11.5,
|
||||||
@@ -26,31 +25,31 @@ constraints: any.Cabal ==3.6.3.0,
|
|||||||
assoc +tagged,
|
assoc +tagged,
|
||||||
any.async ==2.2.5,
|
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.13.1,
|
any.base-compat ==0.13.1,
|
||||||
any.base-compat-batteries ==0.13.1,
|
|
||||||
any.base-orphans ==0.9.1,
|
any.base-orphans ==0.9.1,
|
||||||
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.6.1,
|
any.bifunctors ==5.6.1,
|
||||||
bifunctors +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.4,
|
any.binary-instances ==1.0.4,
|
||||||
any.binary-orphans ==1.0.4.1,
|
any.binary-orphans ==1.0.4.1,
|
||||||
any.blaze-builder ==0.4.2.3,
|
any.blaze-builder ==0.4.2.3,
|
||||||
any.brick ==2.1.1,
|
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.6.1,
|
any.cabal-install-parsers ==0.6.1.1,
|
||||||
any.cabal-plan ==0.7.3.0,
|
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,
|
||||||
@@ -78,7 +77,7 @@ 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.1,
|
||||||
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,
|
||||||
@@ -86,7 +85,8 @@ constraints: any.Cabal ==3.6.3.0,
|
|||||||
dlist -werror,
|
dlist -werror,
|
||||||
any.exceptions ==0.10.4,
|
any.exceptions ==0.10.4,
|
||||||
any.file-uri ==0.1.0.0,
|
any.file-uri ==0.1.0.0,
|
||||||
any.filepath ==1.4.2.1,
|
any.filepath ==1.4.300.1,
|
||||||
|
filepath -cpphs,
|
||||||
any.foldable1-classes-compat ==0.1,
|
any.foldable1-classes-compat ==0.1,
|
||||||
foldable1-classes-compat +tagged,
|
foldable1-classes-compat +tagged,
|
||||||
any.free ==5.2,
|
any.free ==5.2,
|
||||||
@@ -111,17 +111,18 @@ constraints: any.Cabal ==3.6.3.0,
|
|||||||
any.hspec-discover ==2.10.10,
|
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.3,
|
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.1,
|
any.indexed-profunctors ==0.1.1.1,
|
||||||
any.indexed-traversable ==0.1.3,
|
any.indexed-traversable ==0.1.3,
|
||||||
any.indexed-traversable-instances ==0.1.1.2,
|
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.4.2,
|
any.libarchive ==3.0.4.2,
|
||||||
libarchive -cross -low-memory +no-exe -system-libarchive,
|
libarchive -cross -low-memory +no-exe -system-libarchive,
|
||||||
@@ -159,11 +160,11 @@ constraints: any.Cabal ==3.6.3.0,
|
|||||||
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.8.0.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.5,
|
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,
|
||||||
@@ -205,11 +206,12 @@ constraints: any.Cabal ==3.6.3.0,
|
|||||||
any.text ==2.0.2,
|
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.13,
|
any.text-zipper ==0.13,
|
||||||
any.tf-random ==0.5,
|
any.tf-random ==0.5,
|
||||||
any.th-abstraction ==0.5.0.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.4,
|
any.th-lift ==0.8.4,
|
||||||
any.th-lift-instances ==0.1.20,
|
any.th-lift-instances ==0.1.20,
|
||||||
@@ -224,7 +226,8 @@ 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.7.1,
|
any.unix-compat ==0.7.1,
|
||||||
unix-compat -old-time,
|
unix-compat -old-time,
|
||||||
@@ -239,11 +242,11 @@ constraints: any.Cabal ==3.6.3.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.vector-stream ==0.1.0.1,
|
any.vector-stream ==0.1.0.1,
|
||||||
any.versions ==6.0.4,
|
any.versions ==6.0.6,
|
||||||
any.vty ==6.0,
|
any.vty ==6.2,
|
||||||
any.vty-crossplatform ==0.2.0.0,
|
any.vty-crossplatform ==0.4.0.0,
|
||||||
vty-crossplatform -demos,
|
vty-crossplatform -demos,
|
||||||
any.vty-unix ==0.1.0.0,
|
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,
|
||||||
@@ -253,4 +256,4 @@ constraints: any.Cabal ==3.6.3.0,
|
|||||||
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 2024-01-19T19:48:54Z
|
index-state: hackage.haskell.org 2024-03-10T10:13:56Z
|
||||||
|
|||||||
@@ -10,12 +10,18 @@ else
|
|||||||
flags: +tui +tar
|
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,
|
||||||
|
bzlib-conduit >= 0.3.0.3,
|
||||||
|
bz2 >= 1.0.1.1,
|
||||||
|
bzlib >= 0.5.2.0
|
||||||
|
|
||||||
if os(mingw32)
|
if os(mingw32)
|
||||||
|
constraints: vty-windows >=0.2.0.2
|
||||||
|
|
||||||
if impl(ghc >= 9.4)
|
if impl(ghc >= 9.4)
|
||||||
constraints: language-c >= 0.9.3
|
constraints: language-c >= 0.9.3
|
||||||
|
|
||||||
|
|
||||||
source-repository-package
|
source-repository-package
|
||||||
type: git
|
type: git
|
||||||
location: https://github.com/haskell/tar.git
|
location: https://github.com/haskell/tar.git
|
||||||
@@ -26,11 +32,6 @@ source-repository-package
|
|||||||
location: https://github.com/hasufell/uri-bytestring.git
|
location: https://github.com/hasufell/uri-bytestring.git
|
||||||
tag: 4fb5ed14b500c192e6e7a97f6b2b1eb478806001
|
tag: 4fb5ed14b500c192e6e7a97f6b2b1eb478806001
|
||||||
|
|
||||||
source-repository-package
|
|
||||||
type: git
|
|
||||||
location: https://github.com/hasufell/versions.git
|
|
||||||
tag: 79e18fbc44fae3064d8957c550cc0229465db320
|
|
||||||
|
|
||||||
package libarchive
|
package libarchive
|
||||||
flags: -system-libarchive
|
flags: -system-libarchive
|
||||||
|
|
||||||
@@ -49,7 +50,7 @@ package streamly
|
|||||||
package *
|
package *
|
||||||
test-show-details: direct
|
test-show-details: direct
|
||||||
|
|
||||||
allow-newer: cabal-install-parsers:tar
|
allow-newer: cabal-install-parsers:tar, streamly:Win32
|
||||||
|
|
||||||
|
|
||||||
with-compiler: ghc-9.0.2
|
with-compiler: ghc-9.0.2
|
||||||
|
|||||||
@@ -1,6 +1,5 @@
|
|||||||
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.10.2.0,
|
||||||
any.HUnit ==1.6.2.0,
|
any.HUnit ==1.6.2.0,
|
||||||
any.HsOpenSSL ==0.11.7.6,
|
any.HsOpenSSL ==0.11.7.6,
|
||||||
@@ -11,11 +10,11 @@ constraints: any.Cabal ==3.6.3.0,
|
|||||||
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.2.1,
|
any.aeson ==2.2.1.0,
|
||||||
aeson -cffi +ordered-keymap,
|
aeson +ordered-keymap,
|
||||||
any.aeson-pretty ==0.8.10,
|
any.aeson-pretty ==0.8.10,
|
||||||
aeson-pretty +lib-only,
|
aeson-pretty +lib-only,
|
||||||
any.alex ==3.5.0.0,
|
any.alex ==3.5.1.0,
|
||||||
any.ansi-terminal ==1.0.2,
|
any.ansi-terminal ==1.0.2,
|
||||||
ansi-terminal -example,
|
ansi-terminal -example,
|
||||||
any.ansi-terminal-types ==0.11.5,
|
any.ansi-terminal-types ==0.11.5,
|
||||||
@@ -26,20 +25,19 @@ constraints: any.Cabal ==3.6.3.0,
|
|||||||
assoc +tagged,
|
assoc +tagged,
|
||||||
any.async ==2.2.5,
|
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.15.1.0,
|
any.base ==4.15.1.0,
|
||||||
any.base-compat ==0.13.1,
|
any.base-compat ==0.13.1,
|
||||||
any.base-compat-batteries ==0.13.1,
|
|
||||||
any.base-orphans ==0.9.1,
|
any.base-orphans ==0.9.1,
|
||||||
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.6.1,
|
any.bifunctors ==5.6.1,
|
||||||
bifunctors +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.4,
|
any.binary-instances ==1.0.4,
|
||||||
any.binary-orphans ==1.0.4.1,
|
any.binary-orphans ==1.0.4.1,
|
||||||
any.bindings-DSL ==1.0.25,
|
any.bindings-DSL ==1.0.25,
|
||||||
@@ -48,13 +46,14 @@ constraints: any.Cabal ==3.6.3.0,
|
|||||||
any.blaze-builder ==0.4.2.3,
|
any.blaze-builder ==0.4.2.3,
|
||||||
any.brick ==2.1.1,
|
any.brick ==2.1.1,
|
||||||
brick -demos,
|
brick -demos,
|
||||||
any.bytestring ==0.10.12.1,
|
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.bzlib-conduit ==0.3.0.2,
|
any.bzip2-clib ==1.0.8,
|
||||||
|
any.bzlib-conduit ==0.3.0.3,
|
||||||
any.c2hs ==0.28.8,
|
any.c2hs ==0.28.8,
|
||||||
c2hs +base3 -regression,
|
c2hs +base3 -regression,
|
||||||
any.cabal-install-parsers ==0.6.1,
|
any.cabal-install-parsers ==0.6.1.1,
|
||||||
any.cabal-plan ==0.7.3.0,
|
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,
|
||||||
@@ -81,9 +80,9 @@ constraints: any.Cabal ==3.6.3.0,
|
|||||||
any.data-default-class ==0.1.2.0,
|
any.data-default-class ==0.1.2.0,
|
||||||
any.data-fix ==0.3.2,
|
any.data-fix ==0.3.2,
|
||||||
any.deepseq ==1.4.5.0,
|
any.deepseq ==1.4.5.0,
|
||||||
any.digest ==0.0.2.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,
|
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,
|
any.directory ==1.3.8.1,
|
||||||
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,
|
||||||
@@ -91,7 +90,8 @@ constraints: any.Cabal ==3.6.3.0,
|
|||||||
dlist -werror,
|
dlist -werror,
|
||||||
any.exceptions ==0.10.4,
|
any.exceptions ==0.10.4,
|
||||||
any.file-uri ==0.1.0.0,
|
any.file-uri ==0.1.0.0,
|
||||||
any.filepath ==1.4.2.1,
|
any.filepath ==1.4.300.1,
|
||||||
|
filepath -cpphs,
|
||||||
any.foldable1-classes-compat ==0.1,
|
any.foldable1-classes-compat ==0.1,
|
||||||
foldable1-classes-compat +tagged,
|
foldable1-classes-compat +tagged,
|
||||||
any.free ==5.2,
|
any.free ==5.2,
|
||||||
@@ -117,16 +117,17 @@ constraints: any.Cabal ==3.6.3.0,
|
|||||||
any.hspec-discover ==2.10.10,
|
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.3,
|
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.1,
|
any.indexed-profunctors ==0.1.1.1,
|
||||||
any.indexed-traversable ==0.1.3,
|
any.indexed-traversable ==0.1.3,
|
||||||
any.indexed-traversable-instances ==0.1.1.2,
|
any.indexed-traversable-instances ==0.1.1.2,
|
||||||
|
any.integer-conversion ==0.1.0.1,
|
||||||
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.libyaml-streamly ==0.2.2,
|
any.libyaml-streamly ==0.2.2,
|
||||||
libyaml-streamly -no-unicode -system-libyaml,
|
libyaml-streamly -no-unicode -system-libyaml,
|
||||||
@@ -140,7 +141,7 @@ constraints: any.Cabal ==3.6.3.0,
|
|||||||
any.microlens-mtl ==0.2.0.3,
|
any.microlens-mtl ==0.2.0.3,
|
||||||
any.microlens-th ==0.4.3.14,
|
any.microlens-th ==0.4.3.14,
|
||||||
any.monad-control ==1.0.3.1,
|
any.monad-control ==1.0.3.1,
|
||||||
any.mono-traversable ==1.0.15.3,
|
any.mono-traversable ==1.0.17.0,
|
||||||
any.mtl ==2.2.2,
|
any.mtl ==2.2.2,
|
||||||
any.mtl-compat ==0.2.2,
|
any.mtl-compat ==0.2.2,
|
||||||
mtl-compat -two-point-one -two-point-two,
|
mtl-compat -two-point-one -two-point-two,
|
||||||
@@ -163,11 +164,11 @@ constraints: any.Cabal ==3.6.3.0,
|
|||||||
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.8.0.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.5,
|
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,
|
||||||
@@ -211,11 +212,12 @@ constraints: any.Cabal ==3.6.3.0,
|
|||||||
any.text ==2.0.2,
|
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.13,
|
any.text-zipper ==0.13,
|
||||||
any.tf-random ==0.5,
|
any.tf-random ==0.5,
|
||||||
any.th-abstraction ==0.5.0.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.4,
|
any.th-lift ==0.8.4,
|
||||||
any.th-lift-instances ==0.1.20,
|
any.th-lift-instances ==0.1.20,
|
||||||
@@ -231,7 +233,8 @@ constraints: any.Cabal ==3.6.3.0,
|
|||||||
any.typed-process ==0.2.11.1,
|
any.typed-process ==0.2.11.1,
|
||||||
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.7.1,
|
any.unix-compat ==0.7.1,
|
||||||
unix-compat -old-time,
|
unix-compat -old-time,
|
||||||
@@ -248,11 +251,11 @@ constraints: any.Cabal ==3.6.3.0,
|
|||||||
vector-algorithms +bench +boundschecks -internalchecks -llvm +properties -unsafechecks,
|
vector-algorithms +bench +boundschecks -internalchecks -llvm +properties -unsafechecks,
|
||||||
any.vector-binary-instances ==0.2.5.2,
|
any.vector-binary-instances ==0.2.5.2,
|
||||||
any.vector-stream ==0.1.0.1,
|
any.vector-stream ==0.1.0.1,
|
||||||
any.versions ==6.0.4,
|
any.versions ==6.0.6,
|
||||||
any.vty ==6.0,
|
any.vty ==6.2,
|
||||||
any.vty-crossplatform ==0.2.0.0,
|
any.vty-crossplatform ==0.4.0.0,
|
||||||
vty-crossplatform -demos,
|
vty-crossplatform -demos,
|
||||||
any.vty-unix ==0.1.0.0,
|
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,
|
||||||
@@ -266,4 +269,4 @@ constraints: any.Cabal ==3.6.3.0,
|
|||||||
any.zlib-bindings ==0.1.1.5,
|
any.zlib-bindings ==0.1.1.5,
|
||||||
any.zstd ==0.1.3.0,
|
any.zstd ==0.1.3.0,
|
||||||
zstd +standalone
|
zstd +standalone
|
||||||
index-state: hackage.haskell.org 2024-01-19T19:48:54Z
|
index-state: hackage.haskell.org 2024-03-10T10:13:56Z
|
||||||
|
|||||||
@@ -10,12 +10,18 @@ else
|
|||||||
flags: +tui +tar
|
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,
|
||||||
|
bzlib-conduit >= 0.3.0.3,
|
||||||
|
bz2 >= 1.0.1.1,
|
||||||
|
bzlib >= 0.5.2.0
|
||||||
|
|
||||||
if os(mingw32)
|
if os(mingw32)
|
||||||
|
constraints: vty-windows >=0.2.0.2
|
||||||
|
|
||||||
if impl(ghc >= 9.4)
|
if impl(ghc >= 9.4)
|
||||||
constraints: language-c >= 0.9.3
|
constraints: language-c >= 0.9.3
|
||||||
|
|
||||||
|
|
||||||
source-repository-package
|
source-repository-package
|
||||||
type: git
|
type: git
|
||||||
location: https://github.com/haskell/tar.git
|
location: https://github.com/haskell/tar.git
|
||||||
@@ -26,11 +32,6 @@ source-repository-package
|
|||||||
location: https://github.com/hasufell/uri-bytestring.git
|
location: https://github.com/hasufell/uri-bytestring.git
|
||||||
tag: 4fb5ed14b500c192e6e7a97f6b2b1eb478806001
|
tag: 4fb5ed14b500c192e6e7a97f6b2b1eb478806001
|
||||||
|
|
||||||
source-repository-package
|
|
||||||
type: git
|
|
||||||
location: https://github.com/hasufell/versions.git
|
|
||||||
tag: 79e18fbc44fae3064d8957c550cc0229465db320
|
|
||||||
|
|
||||||
package libarchive
|
package libarchive
|
||||||
flags: -system-libarchive
|
flags: -system-libarchive
|
||||||
|
|
||||||
@@ -49,7 +50,7 @@ package streamly
|
|||||||
package *
|
package *
|
||||||
test-show-details: direct
|
test-show-details: direct
|
||||||
|
|
||||||
allow-newer: cabal-install-parsers:tar
|
allow-newer: cabal-install-parsers:tar, streamly:Win32
|
||||||
|
|
||||||
|
|
||||||
with-compiler: ghc-9.2.8
|
with-compiler: ghc-9.2.8
|
||||||
|
|||||||
@@ -1,6 +1,5 @@
|
|||||||
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.10.2.0,
|
||||||
any.HUnit ==1.6.2.0,
|
any.HUnit ==1.6.2.0,
|
||||||
any.HsOpenSSL ==0.11.7.6,
|
any.HsOpenSSL ==0.11.7.6,
|
||||||
@@ -11,11 +10,11 @@ constraints: any.Cabal ==3.6.3.0,
|
|||||||
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.2.1,
|
any.aeson ==2.2.1.0,
|
||||||
aeson -cffi +ordered-keymap,
|
aeson +ordered-keymap,
|
||||||
any.aeson-pretty ==0.8.10,
|
any.aeson-pretty ==0.8.10,
|
||||||
aeson-pretty +lib-only,
|
aeson-pretty +lib-only,
|
||||||
any.alex ==3.5.0.0,
|
any.alex ==3.5.1.0,
|
||||||
any.ansi-terminal ==1.0.2,
|
any.ansi-terminal ==1.0.2,
|
||||||
ansi-terminal -example,
|
ansi-terminal -example,
|
||||||
any.ansi-terminal-types ==0.11.5,
|
any.ansi-terminal-types ==0.11.5,
|
||||||
@@ -26,13 +25,12 @@ constraints: any.Cabal ==3.6.3.0,
|
|||||||
assoc +tagged,
|
assoc +tagged,
|
||||||
any.async ==2.2.5,
|
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.16.4.0,
|
any.base ==4.16.4.0,
|
||||||
any.base-compat ==0.13.1,
|
any.base-compat ==0.13.1,
|
||||||
any.base-compat-batteries ==0.13.1,
|
|
||||||
any.base-orphans ==0.9.1,
|
any.base-orphans ==0.9.1,
|
||||||
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,
|
||||||
@@ -49,12 +47,13 @@ constraints: any.Cabal ==3.6.3.0,
|
|||||||
any.brick ==2.1.1,
|
any.brick ==2.1.1,
|
||||||
brick -demos,
|
brick -demos,
|
||||||
any.bytestring ==0.11.4.0,
|
any.bytestring ==0.11.4.0,
|
||||||
any.bz2 ==1.0.1.0,
|
any.bz2 ==1.0.1.1,
|
||||||
bz2 -cross +with-bzlib,
|
bz2 -cross +with-bzlib,
|
||||||
any.bzlib-conduit ==0.3.0.2,
|
any.bzip2-clib ==1.0.8,
|
||||||
|
any.bzlib-conduit ==0.3.0.3,
|
||||||
any.c2hs ==0.28.8,
|
any.c2hs ==0.28.8,
|
||||||
c2hs +base3 -regression,
|
c2hs +base3 -regression,
|
||||||
any.cabal-install-parsers ==0.6.1,
|
any.cabal-install-parsers ==0.6.1.1,
|
||||||
any.cabal-plan ==0.7.3.0,
|
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,
|
||||||
@@ -81,9 +80,9 @@ constraints: any.Cabal ==3.6.3.0,
|
|||||||
any.data-default-class ==0.1.2.0,
|
any.data-default-class ==0.1.2.0,
|
||||||
any.data-fix ==0.3.2,
|
any.data-fix ==0.3.2,
|
||||||
any.deepseq ==1.4.6.1,
|
any.deepseq ==1.4.6.1,
|
||||||
any.digest ==0.0.2.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,
|
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,
|
any.directory ==1.3.7.1,
|
||||||
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,
|
||||||
@@ -91,7 +90,8 @@ constraints: any.Cabal ==3.6.3.0,
|
|||||||
dlist -werror,
|
dlist -werror,
|
||||||
any.exceptions ==0.10.4,
|
any.exceptions ==0.10.4,
|
||||||
any.file-uri ==0.1.0.0,
|
any.file-uri ==0.1.0.0,
|
||||||
any.filepath ==1.4.2.2,
|
any.filepath ==1.4.300.1,
|
||||||
|
filepath -cpphs,
|
||||||
any.foldable1-classes-compat ==0.1,
|
any.foldable1-classes-compat ==0.1,
|
||||||
foldable1-classes-compat +tagged,
|
foldable1-classes-compat +tagged,
|
||||||
any.free ==5.2,
|
any.free ==5.2,
|
||||||
@@ -117,16 +117,17 @@ constraints: any.Cabal ==3.6.3.0,
|
|||||||
any.hspec-discover ==2.10.10,
|
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.3,
|
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.1,
|
any.indexed-profunctors ==0.1.1.1,
|
||||||
any.indexed-traversable ==0.1.3,
|
any.indexed-traversable ==0.1.3,
|
||||||
any.indexed-traversable-instances ==0.1.1.2,
|
any.indexed-traversable-instances ==0.1.1.2,
|
||||||
|
any.integer-conversion ==0.1.0.1,
|
||||||
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.libyaml-streamly ==0.2.2,
|
any.libyaml-streamly ==0.2.2,
|
||||||
libyaml-streamly -no-unicode -system-libyaml,
|
libyaml-streamly -no-unicode -system-libyaml,
|
||||||
@@ -140,7 +141,7 @@ constraints: any.Cabal ==3.6.3.0,
|
|||||||
any.microlens-mtl ==0.2.0.3,
|
any.microlens-mtl ==0.2.0.3,
|
||||||
any.microlens-th ==0.4.3.14,
|
any.microlens-th ==0.4.3.14,
|
||||||
any.monad-control ==1.0.3.1,
|
any.monad-control ==1.0.3.1,
|
||||||
any.mono-traversable ==1.0.15.3,
|
any.mono-traversable ==1.0.17.0,
|
||||||
any.mtl ==2.2.2,
|
any.mtl ==2.2.2,
|
||||||
any.mtl-compat ==0.2.2,
|
any.mtl-compat ==0.2.2,
|
||||||
mtl-compat -two-point-one -two-point-two,
|
mtl-compat -two-point-one -two-point-two,
|
||||||
@@ -163,11 +164,11 @@ constraints: any.Cabal ==3.6.3.0,
|
|||||||
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.8.0.0,
|
any.primitive ==0.8.0.0,
|
||||||
any.process ==1.6.16.0,
|
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.5,
|
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,
|
||||||
@@ -211,11 +212,12 @@ constraints: any.Cabal ==3.6.3.0,
|
|||||||
any.text ==2.0.2,
|
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.13,
|
any.text-zipper ==0.13,
|
||||||
any.tf-random ==0.5,
|
any.tf-random ==0.5,
|
||||||
any.th-abstraction ==0.5.0.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.4,
|
any.th-lift ==0.8.4,
|
||||||
any.th-lift-instances ==0.1.20,
|
any.th-lift-instances ==0.1.20,
|
||||||
@@ -248,11 +250,11 @@ constraints: any.Cabal ==3.6.3.0,
|
|||||||
vector-algorithms +bench +boundschecks -internalchecks -llvm +properties -unsafechecks,
|
vector-algorithms +bench +boundschecks -internalchecks -llvm +properties -unsafechecks,
|
||||||
any.vector-binary-instances ==0.2.5.2,
|
any.vector-binary-instances ==0.2.5.2,
|
||||||
any.vector-stream ==0.1.0.1,
|
any.vector-stream ==0.1.0.1,
|
||||||
any.versions ==6.0.4,
|
any.versions ==6.0.6,
|
||||||
any.vty ==6.0,
|
any.vty ==6.2,
|
||||||
any.vty-crossplatform ==0.2.0.0,
|
any.vty-crossplatform ==0.4.0.0,
|
||||||
vty-crossplatform -demos,
|
vty-crossplatform -demos,
|
||||||
any.vty-unix ==0.1.0.0,
|
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,
|
||||||
@@ -266,4 +268,4 @@ constraints: any.Cabal ==3.6.3.0,
|
|||||||
any.zlib-bindings ==0.1.1.5,
|
any.zlib-bindings ==0.1.1.5,
|
||||||
any.zstd ==0.1.3.0,
|
any.zstd ==0.1.3.0,
|
||||||
zstd +standalone
|
zstd +standalone
|
||||||
index-state: hackage.haskell.org 2024-01-19T19:48:54Z
|
index-state: hackage.haskell.org 2024-03-10T10:13:56Z
|
||||||
|
|||||||
@@ -10,12 +10,18 @@ else
|
|||||||
flags: +tui +tar
|
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,
|
||||||
|
bzlib-conduit >= 0.3.0.3,
|
||||||
|
bz2 >= 1.0.1.1,
|
||||||
|
bzlib >= 0.5.2.0
|
||||||
|
|
||||||
if os(mingw32)
|
if os(mingw32)
|
||||||
|
constraints: vty-windows >=0.2.0.2
|
||||||
|
|
||||||
if impl(ghc >= 9.4)
|
if impl(ghc >= 9.4)
|
||||||
constraints: language-c >= 0.9.3
|
constraints: language-c >= 0.9.3
|
||||||
|
|
||||||
|
|
||||||
source-repository-package
|
source-repository-package
|
||||||
type: git
|
type: git
|
||||||
location: https://github.com/haskell/tar.git
|
location: https://github.com/haskell/tar.git
|
||||||
@@ -26,11 +32,6 @@ source-repository-package
|
|||||||
location: https://github.com/hasufell/uri-bytestring.git
|
location: https://github.com/hasufell/uri-bytestring.git
|
||||||
tag: 4fb5ed14b500c192e6e7a97f6b2b1eb478806001
|
tag: 4fb5ed14b500c192e6e7a97f6b2b1eb478806001
|
||||||
|
|
||||||
source-repository-package
|
|
||||||
type: git
|
|
||||||
location: https://github.com/hasufell/versions.git
|
|
||||||
tag: 79e18fbc44fae3064d8957c550cc0229465db320
|
|
||||||
|
|
||||||
package libarchive
|
package libarchive
|
||||||
flags: -system-libarchive
|
flags: -system-libarchive
|
||||||
|
|
||||||
@@ -49,7 +50,7 @@ package streamly
|
|||||||
package *
|
package *
|
||||||
test-show-details: direct
|
test-show-details: direct
|
||||||
|
|
||||||
allow-newer: cabal-install-parsers:tar
|
allow-newer: cabal-install-parsers:tar, streamly:Win32
|
||||||
|
|
||||||
|
|
||||||
with-compiler: ghc-9.4.8
|
with-compiler: ghc-9.4.8
|
||||||
|
|||||||
@@ -1,7 +1,6 @@
|
|||||||
active-repositories: hackage.haskell.org:merge
|
active-repositories: hackage.haskell.org:merge
|
||||||
constraints: any.Cabal ==3.6.3.0 || ==3.8.1.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 || ==3.10.2.0,
|
|
||||||
any.HUnit ==1.6.2.0,
|
any.HUnit ==1.6.2.0,
|
||||||
any.HsOpenSSL ==0.11.7.6,
|
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,
|
||||||
@@ -11,11 +10,11 @@ constraints: any.Cabal ==3.6.3.0 || ==3.8.1.0,
|
|||||||
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.2.1,
|
any.aeson ==2.2.1.0,
|
||||||
aeson -cffi +ordered-keymap,
|
aeson +ordered-keymap,
|
||||||
any.aeson-pretty ==0.8.10,
|
any.aeson-pretty ==0.8.10,
|
||||||
aeson-pretty +lib-only,
|
aeson-pretty +lib-only,
|
||||||
any.alex ==3.5.0.0,
|
any.alex ==3.5.1.0,
|
||||||
any.ansi-terminal ==1.0.2,
|
any.ansi-terminal ==1.0.2,
|
||||||
ansi-terminal -example,
|
ansi-terminal -example,
|
||||||
any.ansi-terminal-types ==0.11.5,
|
any.ansi-terminal-types ==0.11.5,
|
||||||
@@ -26,13 +25,12 @@ constraints: any.Cabal ==3.6.3.0 || ==3.8.1.0,
|
|||||||
assoc +tagged,
|
assoc +tagged,
|
||||||
any.async ==2.2.5,
|
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.17.2.1,
|
any.base ==4.17.2.1,
|
||||||
any.base-compat ==0.13.1,
|
any.base-compat ==0.13.1,
|
||||||
any.base-compat-batteries ==0.13.1,
|
|
||||||
any.base-orphans ==0.9.1,
|
any.base-orphans ==0.9.1,
|
||||||
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,
|
||||||
@@ -49,12 +47,13 @@ constraints: any.Cabal ==3.6.3.0 || ==3.8.1.0,
|
|||||||
any.brick ==2.1.1,
|
any.brick ==2.1.1,
|
||||||
brick -demos,
|
brick -demos,
|
||||||
any.bytestring ==0.11.5.3,
|
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.bzlib-conduit ==0.3.0.2,
|
any.bzip2-clib ==1.0.8,
|
||||||
|
any.bzlib-conduit ==0.3.0.3,
|
||||||
any.c2hs ==0.28.8,
|
any.c2hs ==0.28.8,
|
||||||
c2hs +base3 -regression,
|
c2hs +base3 -regression,
|
||||||
any.cabal-install-parsers ==0.6.1,
|
any.cabal-install-parsers ==0.6.1.1,
|
||||||
any.cabal-plan ==0.7.3.0,
|
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,
|
||||||
@@ -80,9 +79,9 @@ constraints: any.Cabal ==3.6.3.0 || ==3.8.1.0,
|
|||||||
any.data-default-class ==0.1.2.0,
|
any.data-default-class ==0.1.2.0,
|
||||||
any.data-fix ==0.3.2,
|
any.data-fix ==0.3.2,
|
||||||
any.deepseq ==1.4.8.0,
|
any.deepseq ==1.4.8.0,
|
||||||
any.digest ==0.0.2.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,
|
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,
|
any.directory ==1.3.8.1,
|
||||||
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,
|
||||||
@@ -90,7 +89,8 @@ constraints: any.Cabal ==3.6.3.0 || ==3.8.1.0,
|
|||||||
dlist -werror,
|
dlist -werror,
|
||||||
any.exceptions ==0.10.5,
|
any.exceptions ==0.10.5,
|
||||||
any.file-uri ==0.1.0.0,
|
any.file-uri ==0.1.0.0,
|
||||||
any.filepath ==1.4.2.2,
|
any.filepath ==1.4.300.1,
|
||||||
|
filepath -cpphs,
|
||||||
any.foldable1-classes-compat ==0.1,
|
any.foldable1-classes-compat ==0.1,
|
||||||
foldable1-classes-compat +tagged,
|
foldable1-classes-compat +tagged,
|
||||||
any.free ==5.2,
|
any.free ==5.2,
|
||||||
@@ -116,16 +116,17 @@ constraints: any.Cabal ==3.6.3.0 || ==3.8.1.0,
|
|||||||
any.hspec-discover ==2.10.10,
|
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.3,
|
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.1,
|
any.indexed-profunctors ==0.1.1.1,
|
||||||
any.indexed-traversable ==0.1.3,
|
any.indexed-traversable ==0.1.3,
|
||||||
any.indexed-traversable-instances ==0.1.1.2,
|
any.indexed-traversable-instances ==0.1.1.2,
|
||||||
|
any.integer-conversion ==0.1.0.1,
|
||||||
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.libyaml-streamly ==0.2.2,
|
any.libyaml-streamly ==0.2.2,
|
||||||
libyaml-streamly -no-unicode -system-libyaml,
|
libyaml-streamly -no-unicode -system-libyaml,
|
||||||
@@ -139,7 +140,7 @@ constraints: any.Cabal ==3.6.3.0 || ==3.8.1.0,
|
|||||||
any.microlens-mtl ==0.2.0.3,
|
any.microlens-mtl ==0.2.0.3,
|
||||||
any.microlens-th ==0.4.3.14,
|
any.microlens-th ==0.4.3.14,
|
||||||
any.monad-control ==1.0.3.1,
|
any.monad-control ==1.0.3.1,
|
||||||
any.mono-traversable ==1.0.15.3,
|
any.mono-traversable ==1.0.17.0,
|
||||||
any.mtl ==2.2.2,
|
any.mtl ==2.2.2,
|
||||||
any.mtl-compat ==0.2.2,
|
any.mtl-compat ==0.2.2,
|
||||||
mtl-compat -two-point-one -two-point-two,
|
mtl-compat -two-point-one -two-point-two,
|
||||||
@@ -166,7 +167,7 @@ constraints: any.Cabal ==3.6.3.0 || ==3.8.1.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.5,
|
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,
|
||||||
@@ -209,16 +210,17 @@ constraints: any.Cabal ==3.6.3.0 || ==3.8.1.0,
|
|||||||
any.terminfo ==0.4.1.5,
|
any.terminfo ==0.4.1.5,
|
||||||
any.text ==2.0.2,
|
any.text ==2.0.2,
|
||||||
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.13,
|
any.text-zipper ==0.13,
|
||||||
any.tf-random ==0.5,
|
any.tf-random ==0.5,
|
||||||
any.th-abstraction ==0.5.0.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.4,
|
any.th-lift ==0.8.4,
|
||||||
any.th-lift-instances ==0.1.20,
|
any.th-lift-instances ==0.1.20,
|
||||||
any.these ==1.2,
|
any.these ==1.2,
|
||||||
any.time ==1.11.1.2 || ==1.12.2,
|
any.time ==1.11.1.2,
|
||||||
any.time-compat ==1.9.6.1,
|
any.time-compat ==1.9.6.1,
|
||||||
time-compat -old-locale,
|
time-compat -old-locale,
|
||||||
any.transformers ==0.5.6.2,
|
any.transformers ==0.5.6.2,
|
||||||
@@ -229,7 +231,8 @@ constraints: any.Cabal ==3.6.3.0 || ==3.8.1.0,
|
|||||||
any.typed-process ==0.2.11.1,
|
any.typed-process ==0.2.11.1,
|
||||||
any.unicode-data ==0.3.1,
|
any.unicode-data ==0.3.1,
|
||||||
unicode-data -ucd2haskell,
|
unicode-data -ucd2haskell,
|
||||||
any.unix ==2.7.3,
|
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.7.1,
|
any.unix-compat ==0.7.1,
|
||||||
unix-compat -old-time,
|
unix-compat -old-time,
|
||||||
@@ -246,11 +249,11 @@ constraints: any.Cabal ==3.6.3.0 || ==3.8.1.0,
|
|||||||
vector-algorithms +bench +boundschecks -internalchecks -llvm +properties -unsafechecks,
|
vector-algorithms +bench +boundschecks -internalchecks -llvm +properties -unsafechecks,
|
||||||
any.vector-binary-instances ==0.2.5.2,
|
any.vector-binary-instances ==0.2.5.2,
|
||||||
any.vector-stream ==0.1.0.1,
|
any.vector-stream ==0.1.0.1,
|
||||||
any.versions ==6.0.4,
|
any.versions ==6.0.6,
|
||||||
any.vty ==6.0,
|
any.vty ==6.2,
|
||||||
any.vty-crossplatform ==0.2.0.0,
|
any.vty-crossplatform ==0.4.0.0,
|
||||||
vty-crossplatform -demos,
|
vty-crossplatform -demos,
|
||||||
any.vty-unix ==0.1.0.0,
|
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,
|
||||||
@@ -264,4 +267,4 @@ constraints: any.Cabal ==3.6.3.0 || ==3.8.1.0,
|
|||||||
any.zlib-bindings ==0.1.1.5,
|
any.zlib-bindings ==0.1.1.5,
|
||||||
any.zstd ==0.1.3.0,
|
any.zstd ==0.1.3.0,
|
||||||
zstd +standalone
|
zstd +standalone
|
||||||
index-state: hackage.haskell.org 2024-01-19T19:48:54Z
|
index-state: hackage.haskell.org 2024-03-10T10:13:56Z
|
||||||
|
|||||||
@@ -10,12 +10,18 @@ else
|
|||||||
flags: +tui +tar
|
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,
|
||||||
|
bzlib-conduit >= 0.3.0.3,
|
||||||
|
bz2 >= 1.0.1.1,
|
||||||
|
bzlib >= 0.5.2.0
|
||||||
|
|
||||||
if os(mingw32)
|
if os(mingw32)
|
||||||
|
constraints: vty-windows >=0.2.0.2
|
||||||
|
|
||||||
if impl(ghc >= 9.4)
|
if impl(ghc >= 9.4)
|
||||||
constraints: language-c >= 0.9.3
|
constraints: language-c >= 0.9.3
|
||||||
|
|
||||||
|
|
||||||
source-repository-package
|
source-repository-package
|
||||||
type: git
|
type: git
|
||||||
location: https://github.com/haskell/tar.git
|
location: https://github.com/haskell/tar.git
|
||||||
@@ -26,11 +32,6 @@ source-repository-package
|
|||||||
location: https://github.com/hasufell/uri-bytestring.git
|
location: https://github.com/hasufell/uri-bytestring.git
|
||||||
tag: 4fb5ed14b500c192e6e7a97f6b2b1eb478806001
|
tag: 4fb5ed14b500c192e6e7a97f6b2b1eb478806001
|
||||||
|
|
||||||
source-repository-package
|
|
||||||
type: git
|
|
||||||
location: https://github.com/hasufell/versions.git
|
|
||||||
tag: 79e18fbc44fae3064d8957c550cc0229465db320
|
|
||||||
|
|
||||||
package libarchive
|
package libarchive
|
||||||
flags: -system-libarchive
|
flags: -system-libarchive
|
||||||
|
|
||||||
@@ -49,5 +50,5 @@ package streamly
|
|||||||
package *
|
package *
|
||||||
test-show-details: direct
|
test-show-details: direct
|
||||||
|
|
||||||
allow-newer: cabal-install-parsers:tar
|
allow-newer: cabal-install-parsers:tar, streamly:Win32
|
||||||
|
|
||||||
|
|||||||
@@ -1,2 +0,0 @@
|
|||||||
-- windows picks weird version
|
|
||||||
constraints: any.hsc2hs ==0.68.8
|
|
||||||
@@ -18,7 +18,7 @@ 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)
|
if impl(ghc >= 9.4)
|
||||||
constraints: language-c >= 0.9.3
|
constraints: language-c >= 0.9.3
|
||||||
elif os(freebsd)
|
elif os(freebsd)
|
||||||
@@ -29,7 +29,12 @@ elif os(freebsd)
|
|||||||
|
|
||||||
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
|
||||||
@@ -56,10 +61,5 @@ source-repository-package
|
|||||||
location: https://github.com/hasufell/uri-bytestring.git
|
location: https://github.com/hasufell/uri-bytestring.git
|
||||||
tag: 4fb5ed14b500c192e6e7a97f6b2b1eb478806001
|
tag: 4fb5ed14b500c192e6e7a97f6b2b1eb478806001
|
||||||
|
|
||||||
source-repository-package
|
allow-newer: cabal-install-parsers:tar, streamly:Win32
|
||||||
type: git
|
|
||||||
location: https://github.com/hasufell/versions.git
|
|
||||||
tag: 79e18fbc44fae3064d8957c550cc0229465db320
|
|
||||||
|
|
||||||
allow-newer: cabal-install-parsers:tar
|
|
||||||
|
|
||||||
|
|||||||
@@ -105,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
|
||||||
|
|
||||||
@@ -508,7 +509,7 @@ See `ghcup compile ghc --help` for further information.
|
|||||||
|
|
||||||
Since ghcup version 0.1.20.0, we provide cross bindists for GHC JS and WASM. These can be installed conveniently.
|
Since ghcup version 0.1.20.0, we provide cross bindists for GHC JS and WASM. These can be installed conveniently.
|
||||||
However, these are intended as a developer preview only. By using these GHC variants, you are implicitly signing up to participate in GHC development!
|
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.
|
If you run into bugs or missing behavior, join the dev chat at https://matrix.to/#/#GHC:matrix.org.
|
||||||
|
|
||||||
First, add the cross release channel:
|
First, add the cross release channel:
|
||||||
|
|
||||||
|
|||||||
27
ghcup.cabal
27
ghcup.cabal
@@ -1,9 +1,9 @@
|
|||||||
cabal-version: 2.4
|
cabal-version: 2.4
|
||||||
name: ghcup
|
name: ghcup
|
||||||
version: 0.1.20.0
|
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
|
||||||
@@ -43,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
|
||||||
@@ -75,7 +75,7 @@ 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.3
|
, haskus-utils-variant ^>=3.3
|
||||||
, megaparsec >=8.0.0 && <9.3
|
, megaparsec >=8.0.0 && <9.3
|
||||||
@@ -96,7 +96,7 @@ 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)
|
if flag(tar)
|
||||||
@@ -175,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
|
||||||
@@ -184,7 +185,7 @@ 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
|
, file-uri ^>=0.1.0.0
|
||||||
, haskus-utils-types ^>=1.5
|
, haskus-utils-types ^>=1.5
|
||||||
, haskus-utils-variant ^>=3.3
|
, haskus-utils-variant ^>=3.3
|
||||||
@@ -212,7 +213,7 @@ 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
|
||||||
@@ -244,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
|
||||||
|
|
||||||
@@ -261,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 || ^>=2.8
|
, 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
|
||||||
@@ -356,7 +355,7 @@ 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
|
, optics ^>=0.4
|
||||||
|
|
||||||
if os(windows)
|
if os(windows)
|
||||||
@@ -397,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
|
||||||
@@ -408,7 +407,7 @@ 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
|
||||||
|
|||||||
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"
|
||||||
|
|||||||
@@ -529,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 ()
|
||||||
@@ -578,9 +583,14 @@ 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 ()
|
||||||
|
|||||||
@@ -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,6 +24,7 @@ import GHCup.Prelude
|
|||||||
import GHCup.Prelude.Logger
|
import GHCup.Prelude.Logger
|
||||||
import GHCup.Prelude.String.QQ
|
import GHCup.Prelude.String.QQ
|
||||||
|
|
||||||
|
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
|
||||||
@@ -327,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)
|
||||||
@@ -338,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
|
||||||
@@ -399,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)
|
||||||
@@ -408,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
|
||||||
@@ -448,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)
|
||||||
@@ -457,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)
|
||||||
@@ -498,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)
|
||||||
@@ -507,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
|
||||||
|
|||||||
@@ -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
|
||||||
|
|||||||
64
lib/GHCup.hs
64
lib/GHCup.hs
@@ -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
|
||||||
|
|||||||
@@ -92,6 +92,8 @@ import qualified Data.Yaml.Aeson as Y
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
-- $setup
|
||||||
|
-- >>> :set -XOverloadedStrings
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@@ -175,7 +177,7 @@ getDownloadsF pfreq@(PlatformRequest arch plat _) = do
|
|||||||
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
|
||||||
|
|||||||
@@ -908,7 +908,7 @@ compileGHC targetGhc crossTarget vps bstrap jobs mbuildConfig patches aargs buil
|
|||||||
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, ov) <- 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" ]
|
||||||
|
|||||||
@@ -437,7 +437,7 @@ compileHLS targetHLS ghcs jobs vps installDir cabalProject cabalProjectLocal upd
|
|||||||
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" ]
|
||||||
|
|||||||
@@ -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
|
||||||
@@ -299,7 +297,7 @@ escapeVerRex = B.pack . go . B.unpack . verToBS
|
|||||||
|
|
||||||
|
|
||||||
recover :: (MonadIO m, MonadMask m) => m a -> m a
|
recover :: (MonadIO m, MonadMask m) => m a -> m a
|
||||||
recover action =
|
recover action =
|
||||||
recovering (fullJitterBackoff 25000 <> limitRetries 10)
|
recovering (fullJitterBackoff 25000 <> limitRetries 10)
|
||||||
[\_ -> Handler (\e -> pure $ isPermissionError e)
|
[\_ -> Handler (\e -> pure $ isPermissionError e)
|
||||||
,\_ -> Handler (\e -> pure (ioeGetErrorType e == InappropriateType))
|
,\_ -> Handler (\e -> pure (ioeGetErrorType e == InappropriateType))
|
||||||
|
|||||||
@@ -1,3 +1,4 @@
|
|||||||
|
{-# LANGUAGE CPP #-}
|
||||||
{-# LANGUAGE OverloadedStrings #-}
|
{-# LANGUAGE OverloadedStrings #-}
|
||||||
{-# LANGUAGE FlexibleContexts #-}
|
{-# LANGUAGE FlexibleContexts #-}
|
||||||
{-# LANGUAGE DataKinds #-}
|
{-# LANGUAGE DataKinds #-}
|
||||||
@@ -98,7 +99,12 @@ execLogged exe args chdir lfile env = do
|
|||||||
Dirs {..} <- getDirs
|
Dirs {..} <- getDirs
|
||||||
logDebug $ T.pack $ "Running " <> exe <> " with arguments " <> show args
|
logDebug $ T.pack $ "Running " <> exe <> " with arguments " <> show args
|
||||||
let logfile = fromGHCupPath logsDir </> lfile <> ".log"
|
let logfile = fromGHCupPath logsDir </> lfile <> ".log"
|
||||||
liftIO $ bracket (openFd logfile WriteOnly (Just newFilePerms) defaultFileFlags{ append = True })
|
liftIO $ bracket
|
||||||
|
#if MIN_VERSION_unix(2,8,0)
|
||||||
|
(openFd logfile WriteOnly defaultFileFlags{ append = True, creat = Just newFilePerms })
|
||||||
|
#else
|
||||||
|
(openFd logfile WriteOnly (Just newFilePerms) defaultFileFlags{ append = True })
|
||||||
|
#endif
|
||||||
closeFd
|
closeFd
|
||||||
(action verbose noColor)
|
(action verbose noColor)
|
||||||
where
|
where
|
||||||
@@ -339,7 +345,11 @@ cleanup fds = for_ fds $ \fd -> handleIO (\_ -> pure ()) $ closeFd fd
|
|||||||
-- | Create a new regular file in write-only mode. The file must not exist.
|
-- | Create a new regular file in write-only mode. The file must not exist.
|
||||||
createRegularFileFd :: FileMode -> FilePath -> IO Fd
|
createRegularFileFd :: FileMode -> FilePath -> IO Fd
|
||||||
createRegularFileFd fm dest =
|
createRegularFileFd fm dest =
|
||||||
|
#if MIN_VERSION_unix(2,8,0)
|
||||||
|
openFd dest WriteOnly defaultFileFlags{ exclusive = True, creat = Just fm }
|
||||||
|
#else
|
||||||
openFd dest WriteOnly (Just fm) defaultFileFlags{ exclusive = True }
|
openFd dest WriteOnly (Just fm) defaultFileFlags{ exclusive = True }
|
||||||
|
#endif
|
||||||
|
|
||||||
|
|
||||||
-- | Thin wrapper around `executeFile`.
|
-- | Thin wrapper around `executeFile`.
|
||||||
|
|||||||
@@ -263,12 +263,9 @@ createProcessWithMingwPath :: MonadIO m
|
|||||||
=> CreateProcess
|
=> CreateProcess
|
||||||
-> m CreateProcess
|
-> m CreateProcess
|
||||||
createProcessWithMingwPath cp = do
|
createProcessWithMingwPath cp = do
|
||||||
msys2Dir <- liftIO ghcupMsys2Dir
|
|
||||||
cEnv <- Map.fromList <$> maybe (liftIO getEnvironment) pure (env cp)
|
cEnv <- Map.fromList <$> maybe (liftIO getEnvironment) pure (env cp)
|
||||||
let mingWPaths = [msys2Dir </> "mingw64" </> "bin"
|
mingWPaths <- liftIO ghcupMsys2BinDirs'
|
||||||
,msys2Dir </> "usr" </> "bin"
|
let paths = ["PATH", "Path"]
|
||||||
]
|
|
||||||
paths = ["PATH", "Path"]
|
|
||||||
curPaths = (\x -> maybe [] splitSearchPath (Map.lookup x cEnv)) =<< paths
|
curPaths = (\x -> maybe [] splitSearchPath (Map.lookup x cEnv)) =<< paths
|
||||||
newPath = intercalate [searchPathSeparator] (mingWPaths ++ curPaths)
|
newPath = intercalate [searchPathSeparator] (mingWPaths ++ curPaths)
|
||||||
envWithoutPath = foldr (\x y -> Map.delete x y) cEnv paths
|
envWithoutPath = foldr (\x y -> Map.delete x y) cEnv paths
|
||||||
@@ -276,11 +273,4 @@ createProcessWithMingwPath cp = do
|
|||||||
liftIO $ setEnv "Path" newPath
|
liftIO $ setEnv "Path" newPath
|
||||||
pure $ cp { env = Just $ Map.toList envWithNewPath }
|
pure $ cp { env = Just $ Map.toList envWithNewPath }
|
||||||
|
|
||||||
ghcupMsys2Dir :: IO FilePath
|
|
||||||
ghcupMsys2Dir =
|
|
||||||
lookupEnv "GHCUP_MSYS2" >>= \case
|
|
||||||
Just fp -> pure fp
|
|
||||||
Nothing -> do
|
|
||||||
baseDir <- liftIO ghcupBaseDir
|
|
||||||
pure (fromGHCupPath baseDir </> "msys64")
|
|
||||||
|
|
||||||
|
|||||||
@@ -149,6 +149,7 @@ data VersionInfo = VersionInfo
|
|||||||
, _viTestDL :: Maybe DownloadInfo -- ^ test tarball
|
, _viTestDL :: Maybe DownloadInfo -- ^ test tarball
|
||||||
, _viArch :: ArchitectureSpec -- ^ descend for binary downloads per arch
|
, _viArch :: ArchitectureSpec -- ^ descend for binary downloads per arch
|
||||||
-- informative messages
|
-- informative messages
|
||||||
|
, _viPreInstall :: Maybe Text
|
||||||
, _viPostInstall :: Maybe Text
|
, _viPostInstall :: Maybe Text
|
||||||
, _viPostRemove :: Maybe Text
|
, _viPostRemove :: Maybe Text
|
||||||
, _viPreCompile :: Maybe Text
|
, _viPreCompile :: Maybe Text
|
||||||
@@ -544,11 +545,23 @@ data Dirs = Dirs
|
|||||||
, dbDir :: GHCupPath
|
, dbDir :: GHCupPath
|
||||||
, recycleDir :: GHCupPath -- mainly used on windows
|
, recycleDir :: GHCupPath -- mainly used on windows
|
||||||
, tmpDir :: GHCupPath
|
, tmpDir :: GHCupPath
|
||||||
|
, msys2Dir :: FilePath
|
||||||
}
|
}
|
||||||
deriving (Show, GHC.Generic)
|
deriving (Show, GHC.Generic)
|
||||||
|
|
||||||
instance NFData Dirs
|
instance NFData Dirs
|
||||||
|
|
||||||
|
data MSYS2Env = MSYS
|
||||||
|
| UCRT64
|
||||||
|
| CLANG64
|
||||||
|
| CLANGARM64
|
||||||
|
| CLANG32
|
||||||
|
| MINGW64
|
||||||
|
| MINGW32
|
||||||
|
deriving (Eq, Show, Ord, GHC.Generic, Read)
|
||||||
|
|
||||||
|
instance NFData MSYS2Env
|
||||||
|
|
||||||
data KeepDirs = Always
|
data KeepDirs = Always
|
||||||
| Errors
|
| Errors
|
||||||
| Never
|
| Never
|
||||||
|
|||||||
@@ -108,6 +108,7 @@ import Data.Time (Day(..), diffDays, addDays)
|
|||||||
-- >>> import GHCup.Errors
|
-- >>> import GHCup.Errors
|
||||||
-- >>> import GHCup.Types
|
-- >>> import GHCup.Types
|
||||||
-- >>> import GHCup.Types.Optics
|
-- >>> import GHCup.Types.Optics
|
||||||
|
-- >>> import Data.Versions
|
||||||
-- >>> import Optics
|
-- >>> import Optics
|
||||||
-- >>> import GHCup.Prelude.Version.QQ
|
-- >>> import GHCup.Prelude.Version.QQ
|
||||||
-- >>> import qualified Data.Text.Encoding as E
|
-- >>> import qualified Data.Text.Encoding as E
|
||||||
@@ -120,8 +121,8 @@ import Data.Time (Day(..), diffDays, addDays)
|
|||||||
-- >>> let settings = defaultSettings { cache = True, metaCache = 0, noNetwork = True }
|
-- >>> let settings = defaultSettings { cache = True, metaCache = 0, noNetwork = True }
|
||||||
-- >>> let leanAppState = LeanAppState settings dirs' defaultKeyBindings lc
|
-- >>> let leanAppState = LeanAppState settings dirs' defaultKeyBindings lc
|
||||||
-- >>> cwd <- getCurrentDirectory
|
-- >>> cwd <- getCurrentDirectory
|
||||||
-- >>> (Right ref) <- pure $ parseURI strictURIParserOptions $ "file://" <> E.encodeUtf8 (T.pack cwd) <> "/data/metadata/" <> (urlBaseName . view pathL' $ ghcupURL)
|
-- >>> (Right ref) <- pure $ GHCup.Utils.parseURI $ "file://" <> E.encodeUtf8 (T.pack cwd) <> "/data/metadata/" <> (urlBaseName . view pathL' $ ghcupURL)
|
||||||
-- >>> (VRight r) <- (fmap . fmap) _ghcupDownloads $ flip runReaderT leanAppState . runE @'[DigestError, GPGError, JSONError , DownloadFailed , FileDoesNotExistError, ContentLengthError] $ liftE $ getBase ref
|
-- >>> (VRight r) <- (fmap . fmap) _ghcupDownloads $ flip runReaderT leanAppState . runE @'[DigestError, GPGError, JSONError , DownloadFailed , FileDoesNotExistError, ContentLengthError] $ liftE (getBase ref) >>= liftE . decodeMetadata @GHCupInfo
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@@ -1083,27 +1084,6 @@ cleanUpOnError bdir action = do
|
|||||||
flip onException (lift exAction) $ onE_ exAction action
|
flip onException (lift exAction) $ onE_ exAction action
|
||||||
|
|
||||||
|
|
||||||
-- | Clean up the given directory if the action fails,
|
|
||||||
-- depending on the Settings.
|
|
||||||
cleanFinally :: ( MonadReader env m
|
|
||||||
, HasDirs env
|
|
||||||
, HasSettings env
|
|
||||||
, MonadIO m
|
|
||||||
, MonadMask m
|
|
||||||
, HasLog env
|
|
||||||
, MonadUnliftIO m
|
|
||||||
, MonadFail m
|
|
||||||
, MonadCatch m
|
|
||||||
)
|
|
||||||
=> GHCupPath -- ^ build directory (cleaned up depending on Settings)
|
|
||||||
-> Excepts e m a
|
|
||||||
-> Excepts e m a
|
|
||||||
cleanFinally bdir action = do
|
|
||||||
Settings {..} <- lift getSettings
|
|
||||||
let exAction = when (keepDirs == Never) $ rmBDir bdir
|
|
||||||
flip finally (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) => GHCupPath -> m ()
|
rmBDir :: (MonadReader env m, HasLog env, MonadUnliftIO m, MonadIO m) => GHCupPath -> m ()
|
||||||
@@ -1155,7 +1135,7 @@ ensureShimGen
|
|||||||
|
|
||||||
-- | Ensure ghcup directory structure exists.
|
-- | Ensure ghcup directory structure exists.
|
||||||
ensureDirectories :: Dirs -> IO ()
|
ensureDirectories :: Dirs -> IO ()
|
||||||
ensureDirectories (Dirs baseDir binDir cacheDir logsDir confDir trashDir dbDir tmpDir) = do
|
ensureDirectories (Dirs baseDir binDir cacheDir logsDir confDir trashDir dbDir tmpDir _) = do
|
||||||
createDirRecursive' (fromGHCupPath baseDir)
|
createDirRecursive' (fromGHCupPath baseDir)
|
||||||
createDirRecursive' (fromGHCupPath baseDir </> "ghc")
|
createDirRecursive' (fromGHCupPath baseDir </> "ghc")
|
||||||
createDirRecursive' (fromGHCupPath baseDir </> "hls")
|
createDirRecursive' (fromGHCupPath baseDir </> "hls")
|
||||||
@@ -1282,6 +1262,10 @@ processBranches str' = let lines' = lines (T.unpack str')
|
|||||||
------------------
|
------------------
|
||||||
|
|
||||||
|
|
||||||
|
-- | Expand a list of version patterns describing a string such as "%v-%h".
|
||||||
|
--
|
||||||
|
-- >>> expandVersionPattern (either (const Nothing) Just $ version "3.4.3") "a386748" "a3867484ccc391daad1a42002c3a2ba6a93c5221" "v0.1.20.0-119-ga386748" "issue-998" [CabalVer, S "-", GitHashShort, S "-", GitHashLong, S "-", GitBranchName, S "-", GitDescribe, S "-coco"]
|
||||||
|
-- Version {_vEpoch = Nothing, _vChunks = Chunks (Numeric 3 :| [Numeric 4,Numeric 3]), _vRel = Just (Release (Alphanum "a386748-a3867484ccc391daad1a42002c3a2ba6a93c5221-issue-998-v0" :| [Numeric 1,Numeric 20,Alphanum "0-119-ga386748-coco"])), _vMeta = Nothing}
|
||||||
expandVersionPattern :: MonadFail m
|
expandVersionPattern :: MonadFail m
|
||||||
=> Maybe Version -- ^ cabal ver
|
=> Maybe Version -- ^ cabal ver
|
||||||
-> String -- ^ git hash (short), if any
|
-> String -- ^ git hash (short), if any
|
||||||
|
|||||||
@@ -32,6 +32,8 @@ module GHCup.Utils.Dirs
|
|||||||
, getConfigFilePath'
|
, getConfigFilePath'
|
||||||
, useXDG
|
, useXDG
|
||||||
, cleanupTrash
|
, cleanupTrash
|
||||||
|
, ghcupMsys2BinDirs
|
||||||
|
, ghcupMsys2BinDirs'
|
||||||
|
|
||||||
, GHCupPath
|
, GHCupPath
|
||||||
, appendGHCupPath
|
, appendGHCupPath
|
||||||
@@ -136,6 +138,7 @@ import GHC.IO.Exception ( IOErrorType(NoSuchThing) )
|
|||||||
import Haskus.Utils.Variant.Excepts
|
import Haskus.Utils.Variant.Excepts
|
||||||
import Optics hiding ( uncons )
|
import Optics hiding ( uncons )
|
||||||
import Safe
|
import Safe
|
||||||
|
import System.Info
|
||||||
import System.Directory hiding ( removeDirectory
|
import System.Directory hiding ( removeDirectory
|
||||||
, removeDirectoryRecursive
|
, removeDirectoryRecursive
|
||||||
, removePathForcibly
|
, removePathForcibly
|
||||||
@@ -338,6 +341,48 @@ ghcupTMPDir
|
|||||||
else ghcupBaseDir <&> (\(GHCupPath gp) -> GHCupPath (gp </> "tmp"))
|
else ghcupBaseDir <&> (\(GHCupPath gp) -> GHCupPath (gp </> "tmp"))
|
||||||
|
|
||||||
|
|
||||||
|
ghcupMsys2Dir :: IO FilePath
|
||||||
|
ghcupMsys2Dir =
|
||||||
|
lookupEnv "GHCUP_MSYS2" >>= \case
|
||||||
|
Just fp -> pure fp
|
||||||
|
Nothing -> do
|
||||||
|
baseDir <- liftIO ghcupBaseDir
|
||||||
|
pure (fromGHCupPath baseDir </> "msys64")
|
||||||
|
|
||||||
|
ghcupMsys2BinDirs :: (MonadFail m, MonadIO m, MonadReader env m, HasDirs env) => m [FilePath]
|
||||||
|
ghcupMsys2BinDirs = do
|
||||||
|
Dirs{..} <- getDirs
|
||||||
|
liftIO $ ghcupMsys2BinDirs_ msys2Dir
|
||||||
|
|
||||||
|
ghcupMsys2BinDirs' :: IO [FilePath]
|
||||||
|
ghcupMsys2BinDirs' = do
|
||||||
|
msys2Dir <- ghcupMsys2Dir
|
||||||
|
ghcupMsys2BinDirs_ msys2Dir
|
||||||
|
|
||||||
|
ghcupMsys2BinDirs_ :: FilePath -> IO [FilePath]
|
||||||
|
ghcupMsys2BinDirs_ msys2Dir' = do
|
||||||
|
env <- liftIO (lookupEnv "GHCUP_MSYS2_ENV") >>= \case
|
||||||
|
Just env -> maybe (fail parseFailMsg) pure $ readMay @MSYS2Env env
|
||||||
|
Nothing
|
||||||
|
| "x86_64" <- arch -> pure MINGW64
|
||||||
|
| "i386" <- arch -> pure MINGW32
|
||||||
|
| "aarch64" <- arch -> pure CLANGARM64
|
||||||
|
| otherwise -> fail "No compatible architecture for msys2"
|
||||||
|
pure [msys2Dir' </> toEnvDir env </> "bin", msys2Dir' </> toEnvDir MSYS </> "bin"]
|
||||||
|
where
|
||||||
|
-- https://www.msys2.org/docs/environments/
|
||||||
|
toEnvDir :: MSYS2Env -> FilePath
|
||||||
|
toEnvDir MSYS = "usr"
|
||||||
|
toEnvDir UCRT64 = "ucrt64"
|
||||||
|
toEnvDir CLANG64 = "clang64"
|
||||||
|
toEnvDir CLANGARM64 = "clangarm64"
|
||||||
|
toEnvDir CLANG32 = "clang32"
|
||||||
|
toEnvDir MINGW64 = "mingw64"
|
||||||
|
toEnvDir MINGW32 = "mingw32"
|
||||||
|
|
||||||
|
parseFailMsg = "Invalid value for GHCUP_MSYS2_ENV. Valid values are: MSYS, UCRT64, CLANG64, CLANGARM64, CLANG32, MINGW64, MINGW32"
|
||||||
|
|
||||||
|
|
||||||
getAllDirs :: IO Dirs
|
getAllDirs :: IO Dirs
|
||||||
getAllDirs = do
|
getAllDirs = do
|
||||||
baseDir <- ghcupBaseDir
|
baseDir <- ghcupBaseDir
|
||||||
@@ -348,6 +393,7 @@ getAllDirs = do
|
|||||||
recycleDir <- ghcupRecycleDir
|
recycleDir <- ghcupRecycleDir
|
||||||
tmpDir <- ghcupTMPDir
|
tmpDir <- ghcupTMPDir
|
||||||
dbDir <- ghcupDbDir
|
dbDir <- ghcupDbDir
|
||||||
|
msys2Dir <- ghcupMsys2Dir
|
||||||
pure Dirs { .. }
|
pure Dirs { .. }
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -20,6 +20,7 @@
|
|||||||
# * BOOTSTRAP_HASKELL_ADJUST_CABAL_CONFIG - whether to adjust mingw paths in cabal.config on windows
|
# * BOOTSTRAP_HASKELL_ADJUST_CABAL_CONFIG - whether to adjust mingw paths in cabal.config on windows
|
||||||
# * BOOTSTRAP_HASKELL_DOWNLOADER - which downloader to use (default: curl)
|
# * BOOTSTRAP_HASKELL_DOWNLOADER - which downloader to use (default: curl)
|
||||||
# * GHCUP_BASE_URL - the base url for ghcup binary download (use this to overwrite https://downloads.haskell.org/~ghcup with a mirror)
|
# * GHCUP_BASE_URL - the base url for ghcup binary download (use this to overwrite https://downloads.haskell.org/~ghcup with a mirror)
|
||||||
|
# * GHCUP_MSYS2_ENV - the msys2 environment to use on windows, see https://www.msys2.org/docs/environments/ (defauts to MINGW64, MINGW32 or CLANGARM64, depending on the architecture)
|
||||||
|
|
||||||
# License: LGPL-3.0
|
# License: LGPL-3.0
|
||||||
|
|
||||||
@@ -27,6 +28,15 @@
|
|||||||
# safety subshell to avoid executing anything in case this script is not downloaded properly
|
# safety subshell to avoid executing anything in case this script is not downloaded properly
|
||||||
(
|
(
|
||||||
|
|
||||||
|
die() {
|
||||||
|
if [ -n "${NO_COLOR}" ] ; then
|
||||||
|
(>&2 printf "%s\\n" "$1")
|
||||||
|
else
|
||||||
|
(>&2 printf "\\033[0;31m%s\\033[0m\\n" "$1")
|
||||||
|
fi
|
||||||
|
exit 2
|
||||||
|
}
|
||||||
|
|
||||||
plat="$(uname -s)"
|
plat="$(uname -s)"
|
||||||
arch=$(uname -m)
|
arch=$(uname -m)
|
||||||
ghver="0.1.20.0"
|
ghver="0.1.20.0"
|
||||||
@@ -55,18 +65,40 @@ case "${plat}" in
|
|||||||
;;
|
;;
|
||||||
esac
|
esac
|
||||||
|
|
||||||
|
case "${GHCUP_MSYS2_ENV}" in
|
||||||
|
"")
|
||||||
|
case "${arch}" in
|
||||||
|
x86_64|amd64)
|
||||||
|
GHCUP_MSYS2_ENV_DIR="mingw64" ;;
|
||||||
|
i*86)
|
||||||
|
GHCUP_MSYS2_ENV_DIR="mingw32" ;;
|
||||||
|
aarch64|arm64)
|
||||||
|
GHCUP_MSYS2_ENV_DIR="clangarm64" ;;
|
||||||
|
*) die "Unknown architecture: ${arch}" ;;
|
||||||
|
esac
|
||||||
|
;;
|
||||||
|
MSYS)
|
||||||
|
GHCUP_MSYS2_ENV_DIR="usr" ;;
|
||||||
|
UCRT64)
|
||||||
|
GHCUP_MSYS2_ENV_DIR="ucrt64" ;;
|
||||||
|
CLANG64)
|
||||||
|
GHCUP_MSYS2_ENV_DIR="clang64" ;;
|
||||||
|
CLANGARM64)
|
||||||
|
GHCUP_MSYS2_ENV_DIR="clangarm64" ;;
|
||||||
|
CLANG32)
|
||||||
|
GHCUP_MSYS2_ENV_DIR="clang32" ;;
|
||||||
|
MINGW64)
|
||||||
|
GHCUP_MSYS2_ENV_DIR="mingw64" ;;
|
||||||
|
MINGW32)
|
||||||
|
GHCUP_MSYS2_ENV_DIR="mingw32" ;;
|
||||||
|
*)
|
||||||
|
die "Invalid value for GHCUP_MSYS2_ENV. Valid values are: MSYS, UCRT64, CLANG64, CLANGARM64, CLANG32, MINGW64, MINGW32" ;;
|
||||||
|
esac
|
||||||
|
|
||||||
: "${BOOTSTRAP_HASKELL_GHC_VERSION:=recommended}"
|
: "${BOOTSTRAP_HASKELL_GHC_VERSION:=recommended}"
|
||||||
: "${BOOTSTRAP_HASKELL_CABAL_VERSION:=recommended}"
|
: "${BOOTSTRAP_HASKELL_CABAL_VERSION:=recommended}"
|
||||||
|
|
||||||
|
|
||||||
die() {
|
|
||||||
if [ -n "${NO_COLOR}" ] ; then
|
|
||||||
(>&2 printf "%s\\n" "$1")
|
|
||||||
else
|
|
||||||
(>&2 printf "\\033[0;31m%s\\033[0m\\n" "$1")
|
|
||||||
fi
|
|
||||||
exit 2
|
|
||||||
}
|
|
||||||
|
|
||||||
warn() {
|
warn() {
|
||||||
if [ -n "${NO_COLOR}" ] ; then
|
if [ -n "${NO_COLOR}" ] ; then
|
||||||
@@ -595,7 +627,7 @@ adjust_cabal_config() {
|
|||||||
else
|
else
|
||||||
cabal_bin="$HOME/AppData/Roaming/cabal/bin"
|
cabal_bin="$HOME/AppData/Roaming/cabal/bin"
|
||||||
fi
|
fi
|
||||||
ecabal user-config -a "extra-prog-path: $(cygpath -w "$GHCUP_BIN"), $(cygpath -w "$cabal_bin"), $(cygpath -w "$GHCUP_MSYS2"/mingw64/bin), $(cygpath -w "$GHCUP_MSYS2"/usr/bin)" -a "extra-include-dirs: $(cygpath -w "$GHCUP_MSYS2"/mingw64/include)" -a "extra-lib-dirs: $(cygpath -w "$GHCUP_MSYS2"/mingw64/lib)" -f init
|
ecabal user-config -a "extra-prog-path: $(cygpath -w "$GHCUP_BIN"), $(cygpath -w "$cabal_bin"), $(cygpath -w "$GHCUP_MSYS2"/${GHCUP_MSYS2_ENV_DIR}/bin), $(cygpath -w "$GHCUP_MSYS2"/usr/bin)" -a "extra-include-dirs: $(cygpath -w "$GHCUP_MSYS2"/${GHCUP_MSYS2_ENV_DIR}/include)" -a "extra-lib-dirs: $(cygpath -w "$GHCUP_MSYS2"/${GHCUP_MSYS2_ENV_DIR}/lib)" -f init
|
||||||
}
|
}
|
||||||
|
|
||||||
ask_cabal_config_init() {
|
ask_cabal_config_init() {
|
||||||
|
|||||||
@@ -46,7 +46,9 @@ param (
|
|||||||
# Whether to disable creation of several desktop shortcuts
|
# Whether to disable creation of several desktop shortcuts
|
||||||
[switch]$DontWriteDesktopShortcuts,
|
[switch]$DontWriteDesktopShortcuts,
|
||||||
# Whether to disable adjusting bashrc (in msys2 env) with PATH
|
# Whether to disable adjusting bashrc (in msys2 env) with PATH
|
||||||
[switch]$DontAdjustBashRc
|
[switch]$DontAdjustBashRc,
|
||||||
|
# The msys2 environment to use, see https://www.msys2.org/docs/environments/ (defauts to MINGW64, MINGW32 or CLANGARM64, depending on the architecture)
|
||||||
|
[string]$Msys2Env
|
||||||
)
|
)
|
||||||
|
|
||||||
$DefaultMsys2Version = "20221216"
|
$DefaultMsys2Version = "20221216"
|
||||||
@@ -194,6 +196,36 @@ if (!$SupportedArchitectures.contains($env:PROCESSOR_ARCHITECTURE)) {
|
|||||||
Exit 1
|
Exit 1
|
||||||
}
|
}
|
||||||
|
|
||||||
|
# set default Msys2Env if not set
|
||||||
|
if (!$Msys2Env) {
|
||||||
|
if ($env:PROCESSOR_ARCHITECTURE -eq 'x86') {
|
||||||
|
$Msys2Env = 'MINGW32'
|
||||||
|
} elseif ($env:PROCESSOR_ARCHITECTURE -eq 'AMD64') {
|
||||||
|
$Msys2Env = 'MINGW64'
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
# parse Msys2Env and set the corresponding variables
|
||||||
|
if ($Msys2Env -eq 'MINGW32') {
|
||||||
|
$ShellType = '-mingw32'
|
||||||
|
$PkgConf = 'mingw-w64-i686-pkgconf'
|
||||||
|
} elseif ($Msys2Env -eq 'MINGW64') {
|
||||||
|
$ShellType = '-mingw64'
|
||||||
|
$PkgConf = 'mingw-w64-x86_64-pkgconf'
|
||||||
|
} elseif ($Msys2Env -eq 'MSYS') {
|
||||||
|
$ShellType = '-msys2'
|
||||||
|
$PkgConf = 'pkgconf'
|
||||||
|
} elseif ($Msys2Env -eq 'UCRT64') {
|
||||||
|
$ShellType = '-ucrt64'
|
||||||
|
$PkgConf = 'mingw-w64-ucrt-x86_64-pkgconf'
|
||||||
|
} elseif ($Msys2Env -eq 'CLANG64') {
|
||||||
|
$ShellType = '-clang64'
|
||||||
|
$PkgConf = 'mingw-w64-clang-x86_64-pkgconf'
|
||||||
|
} else {
|
||||||
|
Print-Msg -color Red -msg ("Unsupported Msys2 environment: {0}. Supported environments are: MINGW64, MINGW32, MSYS, UCRT64, CLANG64" -f $Msys2Env)
|
||||||
|
Exit 1
|
||||||
|
}
|
||||||
|
|
||||||
$ErrorActionPreference = 'Stop'
|
$ErrorActionPreference = 'Stop'
|
||||||
|
|
||||||
$GhcupBasePrefixEnv = [System.Environment]::GetEnvironmentVariable('GHCUP_INSTALL_BASE_PREFIX', 'user')
|
$GhcupBasePrefixEnv = [System.Environment]::GetEnvironmentVariable('GHCUP_INSTALL_BASE_PREFIX', 'user')
|
||||||
@@ -501,7 +533,7 @@ if (!(Test-Path -Path ('{0}' -f $MsysDir))) {
|
|||||||
Exec "$Bash" '-lc' 'pacman --noconfirm -Syuu'
|
Exec "$Bash" '-lc' 'pacman --noconfirm -Syuu'
|
||||||
|
|
||||||
Print-Msg -msg 'Installing Dependencies...'
|
Print-Msg -msg 'Installing Dependencies...'
|
||||||
Exec "$Bash" '-lc' 'pacman --noconfirm -S --needed curl autoconf mingw-w64-x86_64-pkgconf'
|
Exec "$Bash" '-lc' ('pacman --noconfirm -S --needed curl autoconf {0}' -f $PkgConf)
|
||||||
|
|
||||||
Print-Msg -msg 'Updating SSL root certificate authorities...'
|
Print-Msg -msg 'Updating SSL root certificate authorities...'
|
||||||
Exec "$Bash" '-lc' 'pacman --noconfirm -S ca-certificates'
|
Exec "$Bash" '-lc' 'pacman --noconfirm -S ca-certificates'
|
||||||
@@ -609,9 +641,9 @@ if ($Host.Name -eq "ConsoleHost")
|
|||||||
}
|
}
|
||||||
'@
|
'@
|
||||||
|
|
||||||
$GhcInstArgs = '-mingw64 -mintty -c "pacman --noconfirm -S --needed base-devel gettext autoconf make libtool automake python p7zip patch unzip"'
|
$GhcInstArgs = ('{0} -mintty -c "pacman --noconfirm -S --needed base-devel gettext autoconf make libtool automake python p7zip patch unzip"' -f $ShellType)
|
||||||
Create-Shortcut -SourceExe ('{0}\msys2_shell.cmd' -f $MsysDir) -ArgumentsToSourceExe $GhcInstArgs -DestinationPath 'Install GHC dev dependencies.lnk' -TempPath $GhcupDir
|
Create-Shortcut -SourceExe ('{0}\msys2_shell.cmd' -f $MsysDir) -ArgumentsToSourceExe $GhcInstArgs -DestinationPath 'Install GHC dev dependencies.lnk' -TempPath $GhcupDir
|
||||||
Create-Shortcut -SourceExe ('{0}\msys2_shell.cmd' -f $MsysDir) -ArgumentsToSourceExe '-mingw64' -DestinationPath 'Mingw haskell shell.lnk' -TempPath $GhcupDir
|
Create-Shortcut -SourceExe ('{0}\msys2_shell.cmd' -f $MsysDir) -ArgumentsToSourceExe $ShellType -DestinationPath 'Mingw haskell shell.lnk' -TempPath $GhcupDir
|
||||||
Create-Shortcut -SourceExe 'https://www.msys2.org/docs/package-management' -ArgumentsToSourceExe '' -DestinationPath 'Mingw package management docs.url' -TempPath $GhcupDir
|
Create-Shortcut -SourceExe 'https://www.msys2.org/docs/package-management' -ArgumentsToSourceExe '' -DestinationPath 'Mingw package management docs.url' -TempPath $GhcupDir
|
||||||
$DesktopDir = [Environment]::GetFolderPath("Desktop")
|
$DesktopDir = [Environment]::GetFolderPath("Desktop")
|
||||||
$null = New-Item -Path $DesktopDir -Name "Uninstall Haskell.ps1" -ItemType "file" -Force -Value $uninstallShortCut
|
$null = New-Item -Path $DesktopDir -Name "Uninstall Haskell.ps1" -ItemType "file" -Force -Value $uninstallShortCut
|
||||||
@@ -660,10 +692,15 @@ if (!($DontAdjustBashRc)) {
|
|||||||
$AdjustBashRcExport = 'export BOOTSTRAP_HASKELL_ADJUST_BASHRC=1 ;'
|
$AdjustBashRcExport = 'export BOOTSTRAP_HASKELL_ADJUST_BASHRC=1 ;'
|
||||||
}
|
}
|
||||||
|
|
||||||
|
# set msys2 env export for the shell bootstrap script
|
||||||
|
$Msys2EnvExport = ('export GHCUP_MSYS2_ENV={0} ;' -f $Msys2Env)
|
||||||
|
# export GHCUP_MSYS2_ENV
|
||||||
|
$null = [Environment]::SetEnvironmentVariable("GHCUP_MSYS2_ENV", $Msys2Env, [System.EnvironmentVariableTarget]::User)
|
||||||
|
|
||||||
if ((Get-Process -ID $PID).ProcessName.StartsWith("bootstrap-haskell") -Or $InBash) {
|
if ((Get-Process -ID $PID).ProcessName.StartsWith("bootstrap-haskell") -Or $InBash) {
|
||||||
Exec "$Bash" '-lc' ('{4} {6} {7} {8} {9} {10} {12} [ -n ''{1}'' ] && export GHCUP_MSYS2=$(cygpath -m ''{1}'') ; [ -n ''{2}'' ] && export GHCUP_INSTALL_BASE_PREFIX=$(cygpath -m ''{2}/'') ; export PATH=$(cygpath -u ''{3}/bin''):$PATH ; export CABAL_DIR=''{5}'' ; [[ ''{0}'' = https* ]] && {11} {0} | bash || cat $(cygpath -m ''{0}'') | bash' -f $BootstrapUrl, $MsysDir, $GhcupBasePrefix, $GhcupDir, $SilentExport, $CabalDirFull, $StackInstallExport, $HLSInstallExport, $AdjustCabalConfigExport, $MinimalExport, $BootstrapDownloader, $DownloadScript, $AdjustBashRcExport)
|
Exec "$Bash" '-lc' ('{4} {6} {7} {8} {9} {10} {12} {13} [ -n ''{1}'' ] && export GHCUP_MSYS2=$(cygpath -m ''{1}'') ; [ -n ''{2}'' ] && export GHCUP_INSTALL_BASE_PREFIX=$(cygpath -m ''{2}/'') ; export PATH=$(cygpath -u ''{3}/bin''):$PATH ; export CABAL_DIR=''{5}'' ; [[ ''{0}'' = https* ]] && {11} {0} | bash || cat $(cygpath -m ''{0}'') | bash' -f $BootstrapUrl, $MsysDir, $GhcupBasePrefix, $GhcupDir, $SilentExport, $CabalDirFull, $StackInstallExport, $HLSInstallExport, $AdjustCabalConfigExport, $MinimalExport, $BootstrapDownloader, $DownloadScript, $AdjustBashRcExport, $Msys2EnvExport)
|
||||||
} else {
|
} else {
|
||||||
Exec "$Msys2Shell" '-mingw64' '-mintty' '-shell' 'bash' '-c' ('{4} {6} {7} {8} {9} {10} {12} [ -n ''{1}'' ] && export GHCUP_MSYS2=$(cygpath -m ''{1}'') ; [ -n ''{2}'' ] && export GHCUP_INSTALL_BASE_PREFIX=$(cygpath -m ''{2}/'') ; export PATH=$(cygpath -u ''{3}/bin''):$PATH ; export CABAL_DIR=''{5}'' ; trap ''echo Press any key to exit && read -n 1 && exit'' 2 ; [[ ''{0}'' = https* ]] && {11} {0} | bash || cat $(cygpath -m ''{0}'') | bash ; echo ''Press any key to exit'' && read -n 1' -f $BootstrapUrl, $MsysDir, $GhcupBasePrefix, $GhcupDir, $SilentExport, $CabalDirFull, $StackInstallExport, $HLSInstallExport, $AdjustCabalConfigExport, $MinimalExport, $BootstrapDownloader, $DownloadScript, $AdjustBashRcExport)
|
Exec "$Msys2Shell" $ShellType '-mintty' '-shell' 'bash' '-c' ('{4} {6} {7} {8} {9} {10} {12} {13} [ -n ''{1}'' ] && export GHCUP_MSYS2=$(cygpath -m ''{1}'') ; [ -n ''{2}'' ] && export GHCUP_INSTALL_BASE_PREFIX=$(cygpath -m ''{2}/'') ; export PATH=$(cygpath -u ''{3}/bin''):$PATH ; export CABAL_DIR=''{5}'' ; trap ''echo Press any key to exit && read -n 1 && exit'' 2 ; [[ ''{0}'' = https* ]] && {11} {0} | bash || cat $(cygpath -m ''{0}'') | bash ; echo ''Press any key to exit'' && read -n 1' -f $BootstrapUrl, $MsysDir, $GhcupBasePrefix, $GhcupDir, $SilentExport, $CabalDirFull, $StackInstallExport, $HLSInstallExport, $AdjustCabalConfigExport, $MinimalExport, $BootstrapDownloader, $DownloadScript, $AdjustBashRcExport, $Msys2EnvExport)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
70
stack.yaml
70
stack.yaml
@@ -1,38 +1,66 @@
|
|||||||
resolver: lts-20.26
|
resolver: lts-21.25
|
||||||
|
|
||||||
packages:
|
packages:
|
||||||
- .
|
- .
|
||||||
|
|
||||||
extra-deps:
|
extra-deps:
|
||||||
- Cabal-3.6.3.0
|
- Cabal-3.8.1.0
|
||||||
- Cabal-syntax-3.10.1.0
|
- Cabal-syntax-3.8.1.0
|
||||||
- aeson-2.1.2.1
|
- Win32-2.14.0.0@sha256:e34af84fec733b5c0c8f052ec39499785e719e2fbbe308983adf26c82ea3704d,5942
|
||||||
- cabal-install-parsers-0.6.1
|
- brick-2.1.1@sha256:ff36d64f1027eac17a14a83de053067413accb58b79e5002dce2a79cb8a3dcb3,17385
|
||||||
- chs-cabal-0.1.1.1
|
- bzlib-0.5.1.0@sha256:197ea0ba028dd1fe274f7601dae58d23607c4760119bf40bc2087720f6734e6c,2288
|
||||||
- chs-deps-0.1.0.0
|
- cabal-install-parsers-0.6
|
||||||
|
- cabal-plan-0.7.3.0
|
||||||
|
- chs-cabal-0.1.1.1@sha256:e8c8c1bf1dbeec64ad86d67ae6dca1c45afd644d20869546dfdcd03910d3848d,1149
|
||||||
|
- chs-deps-0.1.0.0@sha256:0cdada6d2c682c41b20331b8c63c2ecfc7e806928585195fd544c9d41f3074fd,2496
|
||||||
|
- directory-1.3.8.3
|
||||||
|
- file-uri-0.1.0.0@sha256:d6dcc12bde249362c93e413f87a41558b827333dfe3f97d953e47e1070c0da6f,1857
|
||||||
|
- filepath-1.4.101.0
|
||||||
- generic-arbitrary-0.2.2@sha256:202ffbf2032672a51318f2e80d7e75b72f8950e690346b4314f38bc7e39215f7,1189
|
- generic-arbitrary-0.2.2@sha256:202ffbf2032672a51318f2e80d7e75b72f8950e690346b4314f38bc7e39215f7,1189
|
||||||
- generically-0.1.1
|
|
||||||
- haskus-utils-data-1.4@sha256:bfa94363b94b14779edd6834fbd59dbb847c3d7b8f48e3844f456ffdc077da4a,1466
|
- haskus-utils-data-1.4@sha256:bfa94363b94b14779edd6834fbd59dbb847c3d7b8f48e3844f456ffdc077da4a,1466
|
||||||
- haskus-utils-types-1.5.1@sha256:991c472f4e751e2f0d7aab6ad4220ef151d6160876dcf0511bbf876bbd432020,1298
|
- haskus-utils-types-1.5.1@sha256:991c472f4e751e2f0d7aab6ad4220ef151d6160876dcf0511bbf876bbd432020,1298
|
||||||
- haskus-utils-variant-3.2.1
|
- haskus-utils-variant-3.3@sha256:3df3fa0a557d75c0e8f94fe9954f76a692eaf8d368c401e30ab028624d55386b,2198
|
||||||
- libarchive-3.0.3.2
|
- language-c-0.9.3
|
||||||
- libyaml-streamly-0.2.1
|
- libarchive-3.0.4.2
|
||||||
- lzma-static-5.2.5.5
|
- libyaml-streamly-0.2.2@sha256:619b15826a4e221cae4f91cfc040f262cd19a4a81858b75e8270e4b009866969,2206
|
||||||
- os-release-1.0.2.1
|
- lzma-static-5.2.5.5@sha256:55ed074cda2b82008e020a51e2f8c22f2487a58a4989ab359bf04dd6c903b894,7431
|
||||||
- parsec-3.1.15.0
|
- megaparsec-9.2.2@sha256:c306a135ec25d91d252032c6128f03598a00e87ea12fcf5fc4878fdffc75c768,3219
|
||||||
- streamly-0.8.2@sha256:ec521b7c1c4db068501c35804af77f40b7d34232f5e29d9b99e722229040eb80,23500
|
- os-release-1.0.2.1@sha256:2c3e8f7a9a0e17d5042d14d2036d52b42c8d5606e8d004697af462a95c87a9e2,2718
|
||||||
- strict-base-0.4.0.0
|
- process-1.6.18.0@sha256:69fbbca4151e1a6d1a5da41a1e17c254871675a4f2aed5213bbdfb10b5e52742,3148
|
||||||
- text-2.0.2
|
- streamly-0.8.3@sha256:c8f1eed7a99d02c902f0338d8c5f53579cf5cf421a5c886405f331bd948214d5,24141
|
||||||
- yaml-streamly-0.12.2
|
- strict-base-0.4.0.0@sha256:2ff4e43cb95eedf2995558d7fc34d19362846413dd39e6aa6a5b3ea8228fef9f,1248
|
||||||
- github: fosskers/versions
|
- time-1.11.1.2@sha256:a957467595420495c2dd440d9efa1f58c62277cf9438c7e7a515d7a4c65571ec,6287
|
||||||
commit: 7bc3355348aac3510771d4622aff09ac38c9924d
|
- unicode-data-0.3.1@sha256:ae3a3aca89a32b912ddde7a644c0c04eaf23ee42014c74fe3d6b9aaf36ce7ec9,5481
|
||||||
|
- unix-2.8.5.0@sha256:633f15ef0bd50a16a7b5c5e86e6659fee6e4e211e098cc8bd0029f452bfcfddc,9808
|
||||||
|
- unix-bytestring-0.3.7.8@sha256:b8070935929a7654ce398fdecc9b5f90b02c455407db8ea7989256e821e33b1f,3053
|
||||||
|
- versions-6.0.5
|
||||||
|
- vty-6.2@sha256:3536dc83a3fee17d9a114baf58fe47b6f080c24987266f0cd0b7b4b1fcd9cf19,3520
|
||||||
|
- vty-crossplatform-0.4.0.0@sha256:50593f91ad16777d921138475a8d2784d538fd206addd30664c620278d6c8544,3172
|
||||||
|
- vty-unix-0.2.0.0@sha256:2af3d0bdae3c4b7b7e567ee374efe32c7439fabdf9096465ce011a6c6736e9ae,2932
|
||||||
|
- vty-windows-0.2.0.2
|
||||||
|
- yaml-streamly-0.12.4@sha256:b5250c5dc71d668c43c42ed6f86f956d69125136ea960858527a4b2ff712d3d1,5165
|
||||||
|
- github: hasufell/uri-bytestring
|
||||||
|
commit: 4fb5ed14b500c192e6e7a97f6b2b1eb478806001
|
||||||
|
- github: haskell/tar
|
||||||
|
commit: d94a988be4311b830149a9f8fc16739927e5fc1c
|
||||||
|
|
||||||
|
allow-newer: true
|
||||||
|
|
||||||
|
allow-newer-deps:
|
||||||
|
- Cabal
|
||||||
|
- Cabal-syntax
|
||||||
|
- ansi-terminal
|
||||||
|
- mintty
|
||||||
|
- process
|
||||||
|
- streamly
|
||||||
|
- cabal-install-parsers
|
||||||
|
|
||||||
flags:
|
flags:
|
||||||
http-io-streams:
|
http-io-streams:
|
||||||
brotli: false
|
brotli: false
|
||||||
|
|
||||||
libarchive:
|
libarchive:
|
||||||
system-libarchive: true
|
system-libarchive: false
|
||||||
|
|
||||||
regex-posix:
|
regex-posix:
|
||||||
_regex-posix-clib: true
|
_regex-posix-clib: true
|
||||||
|
|||||||
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
@@ -98,8 +98,8 @@ compileGhcCheckList = mapSecond CompileGHC
|
|||||||
, (baseCmd <> "--hadrian", baseOptions{GHC.buildSystem = Just Hadrian})
|
, (baseCmd <> "--hadrian", baseOptions{GHC.buildSystem = Just Hadrian})
|
||||||
, (baseCmd <> "--make", baseOptions{GHC.buildSystem = Just Make})
|
, (baseCmd <> "--make", baseOptions{GHC.buildSystem = Just Make})
|
||||||
#ifdef IS_WINDOWS
|
#ifdef IS_WINDOWS
|
||||||
, (baseCmd <> "-i C:\\\\tmp\\out_dir", baseOptions{GHC.isolateDir = Just "C:\\\\tmp\\out_dir"})
|
, (baseCmd <> "-i C:\\\\tmp\\out_dir", baseOptions{GHC.isolateDir = Just "C:\\tmp\\out_dir"})
|
||||||
, (baseCmd <> "--isolate C:\\\\tmp\\out_dir", baseOptions{GHC.isolateDir = Just "C:\\\\tmp\\out_dir"})
|
, (baseCmd <> "--isolate C:\\\\tmp\\out_dir", baseOptions{GHC.isolateDir = Just "C:\\tmp\\out_dir"})
|
||||||
#else
|
#else
|
||||||
, (baseCmd <> "-i /tmp/out_dir", baseOptions{GHC.isolateDir = Just "/tmp/out_dir"})
|
, (baseCmd <> "-i /tmp/out_dir", baseOptions{GHC.isolateDir = Just "/tmp/out_dir"})
|
||||||
, (baseCmd <> "--isolate /tmp/out_dir", baseOptions{GHC.isolateDir = Just "/tmp/out_dir"})
|
, (baseCmd <> "--isolate /tmp/out_dir", baseOptions{GHC.isolateDir = Just "/tmp/out_dir"})
|
||||||
@@ -160,10 +160,12 @@ compileHlsCheckList = mapSecond CompileHLS
|
|||||||
, (baseCmd <> "--cabal-update", baseOptions{HLS.updateCabal = True})
|
, (baseCmd <> "--cabal-update", baseOptions{HLS.updateCabal = True})
|
||||||
, (baseCmd <> "-o 2.0.0.0-p1", baseOptions{HLS.overwriteVer = Just [S "2.0.0.0-p1"]})
|
, (baseCmd <> "-o 2.0.0.0-p1", baseOptions{HLS.overwriteVer = Just [S "2.0.0.0-p1"]})
|
||||||
, (baseCmd <> "--overwrite-version 2.0.0.0-p1", baseOptions{HLS.overwriteVer = Just [S "2.0.0.0-p1"]})
|
, (baseCmd <> "--overwrite-version 2.0.0.0-p1", baseOptions{HLS.overwriteVer = Just [S "2.0.0.0-p1"]})
|
||||||
|
, (baseCmd <> "--overwrite-version %v-%h-%H-%b-%g-coco%l", baseOptions{HLS.overwriteVer
|
||||||
|
= Just [CabalVer, S "-", GitHashShort, S "-", GitHashLong, S "-", GitBranchName, S "-", GitDescribe, S "-coco", S "%", S "l"]})
|
||||||
, (baseCmd <> "--git-describe-version", baseOptions{HLS.overwriteVer = Just [GitDescribe]})
|
, (baseCmd <> "--git-describe-version", baseOptions{HLS.overwriteVer = Just [GitDescribe]})
|
||||||
#ifdef IS_WINDOWS
|
#ifdef IS_WINDOWS
|
||||||
, (baseCmd <> "-i C:\\\\tmp\\out_dir", baseOptions{HLS.isolateDir = Just "C:\\\\tmp\\out_dir"})
|
, (baseCmd <> "-i C:\\\\tmp\\out_dir", baseOptions{HLS.isolateDir = Just "C:\\tmp\\out_dir"})
|
||||||
, (baseCmd <> "--isolate C:\\\\tmp\\out_dir", baseOptions{HLS.isolateDir = Just "C:\\\\tmp\\out_dir"})
|
, (baseCmd <> "--isolate C:\\\\tmp\\out_dir", baseOptions{HLS.isolateDir = Just "C:\\tmp\\out_dir"})
|
||||||
#else
|
#else
|
||||||
, (baseCmd <> "-i /tmp/out_dir", baseOptions{HLS.isolateDir = Just "/tmp/out_dir"})
|
, (baseCmd <> "-i /tmp/out_dir", baseOptions{HLS.isolateDir = Just "/tmp/out_dir"})
|
||||||
, (baseCmd <> "--isolate /tmp/out_dir", baseOptions{HLS.isolateDir = Just "/tmp/out_dir"})
|
, (baseCmd <> "--isolate /tmp/out_dir", baseOptions{HLS.isolateDir = Just "/tmp/out_dir"})
|
||||||
|
|||||||
@@ -17,6 +17,7 @@ defaultOptions =
|
|||||||
False
|
False
|
||||||
False
|
False
|
||||||
False
|
False
|
||||||
|
False
|
||||||
|
|
||||||
gcCheckList :: [(String, GCOptions)]
|
gcCheckList :: [(String, GCOptions)]
|
||||||
gcCheckList =
|
gcCheckList =
|
||||||
@@ -33,7 +34,9 @@ gcCheckList =
|
|||||||
, ("gc --cache", defaultOptions{gcCache = True})
|
, ("gc --cache", defaultOptions{gcCache = True})
|
||||||
, ("gc -t", defaultOptions{gcTmp = True})
|
, ("gc -t", defaultOptions{gcTmp = True})
|
||||||
, ("gc --tmpdirs", defaultOptions{gcTmp = True})
|
, ("gc --tmpdirs", defaultOptions{gcTmp = True})
|
||||||
, ("gc -o -p -s -h -c -t", GCOptions True True True True True True)
|
, ("gc -u", defaultOptions{gcUnset = True})
|
||||||
|
, ("gc --unset", defaultOptions{gcUnset = True})
|
||||||
|
, ("gc -o -p -s -h -c -t -u", GCOptions True True True True True True True)
|
||||||
]
|
]
|
||||||
|
|
||||||
gcParseWith :: [String] -> IO GCOptions
|
gcParseWith :: [String] -> IO GCOptions
|
||||||
|
|||||||
@@ -48,7 +48,7 @@ oldStyleCheckList =
|
|||||||
: ("install --set", Right defaultOptions{instSet = True})
|
: ("install --set", Right defaultOptions{instSet = True})
|
||||||
: ("install --force", Right defaultOptions{forceInstall = True})
|
: ("install --force", Right defaultOptions{forceInstall = True})
|
||||||
#ifdef IS_WINDOWS
|
#ifdef IS_WINDOWS
|
||||||
: ("install -i C:\\\\", Right defaultOptions{Install.isolateDir = Just "C:\\\\"})
|
: ("install -i C:\\\\", Right defaultOptions{Install.isolateDir = Just "C:\\"})
|
||||||
#else
|
#else
|
||||||
: ("install -i /", Right defaultOptions{Install.isolateDir = Just "/"})
|
: ("install -i /", Right defaultOptions{Install.isolateDir = Just "/"})
|
||||||
#endif
|
#endif
|
||||||
|
|||||||
@@ -43,8 +43,8 @@ runCheckList =
|
|||||||
, ("run --hls 2.0", defaultOptions{runHLSVer = Just $ ToolVersion $(versionQ "2.0")})
|
, ("run --hls 2.0", defaultOptions{runHLSVer = Just $ ToolVersion $(versionQ "2.0")})
|
||||||
, ("run --stack 2.9", defaultOptions{runStackVer = Just $ ToolVersion $(versionQ "2.9") })
|
, ("run --stack 2.9", defaultOptions{runStackVer = Just $ ToolVersion $(versionQ "2.9") })
|
||||||
#ifdef IS_WINDOWS
|
#ifdef IS_WINDOWS
|
||||||
, ("run -b C:\\\\tmp\\dir", defaultOptions{runBinDir = Just "C:\\\\tmp\\dir"})
|
, ("run -b C:\\\\tmp\\dir", defaultOptions{runBinDir = Just "C:\\tmp\\dir"})
|
||||||
, ("run --bindir C:\\\\tmp\\dir", defaultOptions{runBinDir = Just "C:\\\\tmp\\dir"})
|
, ("run --bindir C:\\\\tmp\\dir", defaultOptions{runBinDir = Just "C:\\tmp\\dir"})
|
||||||
#else
|
#else
|
||||||
, ("run -b /tmp/dir", defaultOptions{runBinDir = Just "/tmp/dir"})
|
, ("run -b /tmp/dir", defaultOptions{runBinDir = Just "/tmp/dir"})
|
||||||
, ("run --bindir /tmp/dir", defaultOptions{runBinDir = Just "/tmp/dir"})
|
, ("run --bindir /tmp/dir", defaultOptions{runBinDir = Just "/tmp/dir"})
|
||||||
|
|||||||
Reference in New Issue
Block a user