Compare commits
2 Commits
drop-freeb
...
http-clien
| Author | SHA1 | Date | |
|---|---|---|---|
| 6260816ed1 | |||
| f46c8bdd6f |
@@ -37,6 +37,12 @@ variables:
|
|||||||
variables:
|
variables:
|
||||||
OS: "DARWIN"
|
OS: "DARWIN"
|
||||||
|
|
||||||
|
.freebsd:
|
||||||
|
tags:
|
||||||
|
- x86_64-freebsd
|
||||||
|
variables:
|
||||||
|
OS: "FREEBSD"
|
||||||
|
|
||||||
.root_cleanup:
|
.root_cleanup:
|
||||||
after_script:
|
after_script:
|
||||||
- BUILD_DIR=$CI_PROJECT_DIR
|
- BUILD_DIR=$CI_PROJECT_DIR
|
||||||
@@ -68,6 +74,14 @@ variables:
|
|||||||
before_script:
|
before_script:
|
||||||
- ./.gitlab/before_script/darwin/install_deps.sh
|
- ./.gitlab/before_script/darwin/install_deps.sh
|
||||||
|
|
||||||
|
.test_ghcup_version:freebsd:
|
||||||
|
extends:
|
||||||
|
- .test_ghcup_version
|
||||||
|
- .freebsd
|
||||||
|
- .root_cleanup
|
||||||
|
before_script:
|
||||||
|
- ./.gitlab/before_script/freebsd/install_deps.sh
|
||||||
|
|
||||||
.release_ghcup:
|
.release_ghcup:
|
||||||
script:
|
script:
|
||||||
- ./.gitlab/script/ghcup_release.sh
|
- ./.gitlab/script/ghcup_release.sh
|
||||||
@@ -83,7 +97,7 @@ variables:
|
|||||||
test:linux:recommended:
|
test:linux:recommended:
|
||||||
extends: .test_ghcup_version:linux
|
extends: .test_ghcup_version:linux
|
||||||
variables:
|
variables:
|
||||||
GHC_VERSION: "8.8.4"
|
GHC_VERSION: "8.8.3"
|
||||||
CABAL_VERSION: "3.2.0.0"
|
CABAL_VERSION: "3.2.0.0"
|
||||||
|
|
||||||
test:linux:latest:
|
test:linux:latest:
|
||||||
@@ -99,7 +113,7 @@ test:linux:latest:
|
|||||||
test:mac:recommended:
|
test:mac:recommended:
|
||||||
extends: .test_ghcup_version:darwin
|
extends: .test_ghcup_version:darwin
|
||||||
variables:
|
variables:
|
||||||
GHC_VERSION: "8.8.4"
|
GHC_VERSION: "8.8.3"
|
||||||
CABAL_VERSION: "3.2.0.0"
|
CABAL_VERSION: "3.2.0.0"
|
||||||
|
|
||||||
test:mac:latest:
|
test:mac:latest:
|
||||||
@@ -110,6 +124,22 @@ test:mac:latest:
|
|||||||
allow_failure: true
|
allow_failure: true
|
||||||
|
|
||||||
|
|
||||||
|
######## freebsd test ########
|
||||||
|
|
||||||
|
test:freebsd:recommended:
|
||||||
|
extends: .test_ghcup_version:freebsd
|
||||||
|
variables:
|
||||||
|
GHC_VERSION: "8.8.3"
|
||||||
|
CABAL_VERSION: "3.2.0.0"
|
||||||
|
|
||||||
|
test:freebsd:latest:
|
||||||
|
extends: .test_ghcup_version:freebsd
|
||||||
|
variables:
|
||||||
|
GHC_VERSION: "8.10.1"
|
||||||
|
CABAL_VERSION: "3.2.0.0"
|
||||||
|
allow_failure: true
|
||||||
|
|
||||||
|
|
||||||
######## linux release ########
|
######## linux release ########
|
||||||
|
|
||||||
release:linux:64bit:
|
release:linux:64bit:
|
||||||
@@ -120,7 +150,7 @@ release:linux:64bit:
|
|||||||
- ./.gitlab/before_script/linux/alpine/install_deps.sh
|
- ./.gitlab/before_script/linux/alpine/install_deps.sh
|
||||||
variables:
|
variables:
|
||||||
ARTIFACT: "x86_64-linux-ghcup"
|
ARTIFACT: "x86_64-linux-ghcup"
|
||||||
GHC_VERSION: "8.8.4"
|
GHC_VERSION: "8.8.3"
|
||||||
CABAL_VERSION: "3.2.0.0"
|
CABAL_VERSION: "3.2.0.0"
|
||||||
|
|
||||||
|
|
||||||
@@ -132,7 +162,7 @@ release:linux:32bit:
|
|||||||
- ./.gitlab/before_script/linux/alpine/install_deps.sh
|
- ./.gitlab/before_script/linux/alpine/install_deps.sh
|
||||||
variables:
|
variables:
|
||||||
ARTIFACT: "i386-linux-ghcup"
|
ARTIFACT: "i386-linux-ghcup"
|
||||||
GHC_VERSION: "8.8.4"
|
GHC_VERSION: "8.8.3"
|
||||||
CABAL_VERSION: "3.2.0.0"
|
CABAL_VERSION: "3.2.0.0"
|
||||||
|
|
||||||
|
|
||||||
@@ -151,3 +181,18 @@ release:darwin:
|
|||||||
CABAL_VERSION: "3.2.0.0"
|
CABAL_VERSION: "3.2.0.0"
|
||||||
MACOSX_DEPLOYMENT_TARGET: "10.7"
|
MACOSX_DEPLOYMENT_TARGET: "10.7"
|
||||||
|
|
||||||
|
|
||||||
|
######## freebsd release ########
|
||||||
|
|
||||||
|
release:freebsd:
|
||||||
|
extends:
|
||||||
|
- .freebsd
|
||||||
|
- .release_ghcup
|
||||||
|
- .root_cleanup
|
||||||
|
before_script:
|
||||||
|
- ./.gitlab/before_script/freebsd/install_deps.sh
|
||||||
|
variables:
|
||||||
|
ARTIFACT: "x86_64-portbld-freebsd-ghcup"
|
||||||
|
GHC_VERSION: "8.8.3"
|
||||||
|
CABAL_VERSION: "3.2.0.0"
|
||||||
|
|
||||||
|
|||||||
18
.gitlab/before_script/freebsd/install_deps.sh
Executable file
18
.gitlab/before_script/freebsd/install_deps.sh
Executable file
@@ -0,0 +1,18 @@
|
|||||||
|
#!/bin/sh
|
||||||
|
|
||||||
|
set -eux
|
||||||
|
|
||||||
|
# pkg install --force --yes --no-repo-update curl gcc gmp gmake ncurses perl5 libffi libiconv
|
||||||
|
|
||||||
|
. "$( cd "$(dirname "$0")" ; pwd -P )/../../ghcup_env"
|
||||||
|
|
||||||
|
mkdir -p "${TMPDIR}"
|
||||||
|
|
||||||
|
curl -sSfL https://downloads.haskell.org/~ghcup/x86_64-portbld-freebsd-ghcup > ./ghcup-bin
|
||||||
|
chmod +x ghcup-bin
|
||||||
|
|
||||||
|
./ghcup-bin install ${GHC_VERSION}
|
||||||
|
./ghcup-bin install-cabal ${CABAL_VERSION}
|
||||||
|
./ghcup-bin set ${GHC_VERSION}
|
||||||
|
|
||||||
|
exit 0
|
||||||
@@ -19,8 +19,10 @@ if [ "${OS}" = "LINUX" ] ; then
|
|||||||
if [ "${BIT}" = "32" ] ; then
|
if [ "${BIT}" = "32" ] ; then
|
||||||
ecabal build -w ghc-${GHC_VERSION} --ghc-options='-split-sections -optl-static' -ftui -ftar
|
ecabal build -w ghc-${GHC_VERSION} --ghc-options='-split-sections -optl-static' -ftui -ftar
|
||||||
else
|
else
|
||||||
ecabal build -w ghc-${GHC_VERSION} --ghc-options='-split-sections -optl-static' -ftui
|
ecabal build -w ghc-${GHC_VERSION} --ghc-options='-split-sections -optl-static' -ftui -finternal-downloader
|
||||||
fi
|
fi
|
||||||
|
elif [ "${OS}" = "FREEBSD" ] ; then
|
||||||
|
ecabal build -w ghc-${GHC_VERSION} --ghc-options='-split-sections' --constraint="zlib static" -ftui
|
||||||
else
|
else
|
||||||
ecabal build -w ghc-${GHC_VERSION} --constraint="zlib static" --constraint="lzma static" -ftui
|
ecabal build -w ghc-${GHC_VERSION} --constraint="zlib static" --constraint="lzma static" -ftui
|
||||||
fi
|
fi
|
||||||
|
|||||||
@@ -44,6 +44,12 @@ ghcup-gen check -f ghcup-${JSON_VERSION}.json
|
|||||||
|
|
||||||
eghcup --numeric-version
|
eghcup --numeric-version
|
||||||
|
|
||||||
|
# TODO: rm once we have tarballs
|
||||||
|
if [ "${OS}" = "FREEBSD" ] ; then
|
||||||
|
GHC_VERSION=8.6.3
|
||||||
|
CABAL_VERSION=2.4.1.0
|
||||||
|
fi
|
||||||
|
|
||||||
eghcup install ${GHC_VERSION}
|
eghcup install ${GHC_VERSION}
|
||||||
eghcup set ${GHC_VERSION}
|
eghcup set ${GHC_VERSION}
|
||||||
eghcup install-cabal ${CABAL_VERSION}
|
eghcup install-cabal ${CABAL_VERSION}
|
||||||
|
|||||||
12
3rdparty/libarchive/c/archive_write_disk_posix.c
vendored
12
3rdparty/libarchive/c/archive_write_disk_posix.c
vendored
@@ -546,7 +546,6 @@ _archive_write_disk_header(struct archive *_a, struct archive_entry *entry)
|
|||||||
{
|
{
|
||||||
struct archive_write_disk *a = (struct archive_write_disk *)_a;
|
struct archive_write_disk *a = (struct archive_write_disk *)_a;
|
||||||
struct fixup_entry *fe;
|
struct fixup_entry *fe;
|
||||||
const char *linkname;
|
|
||||||
int ret, r;
|
int ret, r;
|
||||||
|
|
||||||
archive_check_magic(&a->archive, ARCHIVE_WRITE_DISK_MAGIC,
|
archive_check_magic(&a->archive, ARCHIVE_WRITE_DISK_MAGIC,
|
||||||
@@ -591,17 +590,6 @@ _archive_write_disk_header(struct archive *_a, struct archive_entry *entry)
|
|||||||
if (ret != ARCHIVE_OK)
|
if (ret != ARCHIVE_OK)
|
||||||
return (ret);
|
return (ret);
|
||||||
|
|
||||||
/*
|
|
||||||
* Check if we have a hardlink that points to itself.
|
|
||||||
*/
|
|
||||||
linkname = archive_entry_hardlink(a->entry);
|
|
||||||
if (linkname != NULL && strcmp(a->name, linkname) == 0) {
|
|
||||||
archive_set_error(&a->archive, ARCHIVE_ERRNO_MISC,
|
|
||||||
"Skipping hardlink pointing to itself: %s",
|
|
||||||
a->name);
|
|
||||||
return (ARCHIVE_WARN);
|
|
||||||
}
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Query the umask so we get predictable mode settings.
|
* Query the umask so we get predictable mode settings.
|
||||||
* This gets done on every call to _write_header in case the
|
* This gets done on every call to _write_header in case the
|
||||||
|
|||||||
11
CHANGELOG.md
11
CHANGELOG.md
@@ -1,16 +1,5 @@
|
|||||||
# Revision history for ghcup
|
# Revision history for ghcup
|
||||||
|
|
||||||
## 0.1.7 -- 2020-07-20
|
|
||||||
|
|
||||||
* Fix a bug in libarchive not unpacking some uncleanly packed bindists
|
|
||||||
* Improved fish support in bootstrap-haskell
|
|
||||||
* Only check for upgrades when not upgrading
|
|
||||||
* Fix platform detection for i386 docker images
|
|
||||||
* Improve alpine support
|
|
||||||
- more/proper bindists
|
|
||||||
- don't fall back to glibc based bindists
|
|
||||||
- install bindists with `--disable-ld-override` to avoid ld.gold bugs
|
|
||||||
|
|
||||||
## 0.1.6 -- 2020-07-13
|
## 0.1.6 -- 2020-07-13
|
||||||
|
|
||||||
* Create a new curses (brick) based TUI, accessible via `ghcup tui` #24
|
* Create a new curses (brick) based TUI, accessible via `ghcup tui` #24
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
`ghcup` makes it easy to install specific versions of `ghc` on GNU/Linux and
|
`ghcup` makes it easy to install specific versions of `ghc` on GNU/Linux,
|
||||||
macOS (aka Darwin) and can also bootstrap a fresh Haskell developer environment from scratch.
|
macOS (aka Darwin) and FreeBSD and can also bootstrap a fresh Haskell developer environment from scratch.
|
||||||
It follows the unix UNIX philosophy of [do one thing and do it well](https://en.wikipedia.org/wiki/Unix_philosophy#Do_One_Thing_and_Do_It_Well).
|
It follows the unix UNIX philosophy of [do one thing and do it well](https://en.wikipedia.org/wiki/Unix_philosophy#Do_One_Thing_and_Do_It_Well).
|
||||||
|
|
||||||
Similar in scope to [rustup](https://github.com/rust-lang-nursery/rustup.rs), [pyenv](https://github.com/pyenv/pyenv) and [jenv](http://www.jenv.be).
|
Similar in scope to [rustup](https://github.com/rust-lang-nursery/rustup.rs), [pyenv](https://github.com/pyenv/pyenv) and [jenv](http://www.jenv.be).
|
||||||
|
|||||||
@@ -85,6 +85,8 @@ validate dls = do
|
|||||||
when ((not $ any (== Darwin) pspecs) && arch == A_64) $ do
|
when ((not $ any (== Darwin) pspecs) && arch == A_64) $ do
|
||||||
lift $ $(logError) [i|Darwin missing for #{t} #{v'} #{arch}|]
|
lift $ $(logError) [i|Darwin missing for #{t} #{v'} #{arch}|]
|
||||||
addError
|
addError
|
||||||
|
when ((not $ any (== FreeBSD) pspecs) && arch == A_64) $ lift $ $(logWarn)
|
||||||
|
[i|FreeBSD missing for #{t} #{v'} #{arch}|]
|
||||||
|
|
||||||
checkUniqueTags tool = do
|
checkUniqueTags tool = do
|
||||||
let allTags = join $ M.elems $ availableToolVersions dls tool
|
let allTags = join $ M.elems $ availableToolVersions dls tool
|
||||||
|
|||||||
@@ -283,6 +283,7 @@ changelog' AppState {..} (_, ListResult {..}) = do
|
|||||||
let cmd = case _rPlatform pfreq of
|
let cmd = case _rPlatform pfreq of
|
||||||
Darwin -> "open"
|
Darwin -> "open"
|
||||||
Linux _ -> "xdg-open"
|
Linux _ -> "xdg-open"
|
||||||
|
FreeBSD -> "xdg-open"
|
||||||
exec cmd True [serializeURIRef' uri] Nothing Nothing >>= \case
|
exec cmd True [serializeURIRef' uri] Nothing Nothing >>= \case
|
||||||
Right _ -> pure $ Right ()
|
Right _ -> pure $ Right ()
|
||||||
Left e -> pure $ Left [i|#{e}|]
|
Left e -> pure $ Left [i|#{e}|]
|
||||||
|
|||||||
@@ -749,7 +749,15 @@ platformParser s' = case MP.parse (platformP <* MP.eof) "" (T.pack s') of
|
|||||||
archP = (MP.try (MP.chunk "x86_64" $> A_64)) <|> (MP.chunk "i386" $> A_32)
|
archP = (MP.try (MP.chunk "x86_64" $> A_64)) <|> (MP.chunk "i386" $> A_32)
|
||||||
platformP :: MP.Parsec Void Text PlatformRequest
|
platformP :: MP.Parsec Void Text PlatformRequest
|
||||||
platformP = choice'
|
platformP = choice'
|
||||||
[ (\a mv -> PlatformRequest a Darwin mv)
|
[ (\a mv -> PlatformRequest a FreeBSD mv)
|
||||||
|
<$> (archP <* MP.chunk "-")
|
||||||
|
<*> ( MP.chunk "portbld"
|
||||||
|
*> ( MP.try (Just <$> verP (MP.chunk "-freebsd" <* MP.eof))
|
||||||
|
<|> pure Nothing
|
||||||
|
)
|
||||||
|
<* MP.chunk "-freebsd"
|
||||||
|
)
|
||||||
|
, (\a mv -> PlatformRequest a Darwin mv)
|
||||||
<$> (archP <* MP.chunk "-")
|
<$> (archP <* MP.chunk "-")
|
||||||
<*> ( MP.chunk "apple"
|
<*> ( MP.chunk "apple"
|
||||||
*> ( MP.try (Just <$> verP (MP.chunk "-darwin" <* MP.eof))
|
*> ( MP.try (Just <$> verP (MP.chunk "-darwin" <* MP.eof))
|
||||||
@@ -1025,10 +1033,7 @@ Report bugs at <https://gitlab.haskell.org/haskell/ghcup-hs/issues>|]
|
|||||||
runLogger
|
runLogger
|
||||||
($(logError) [i|Error fetching download info: #{e}|])
|
($(logError) [i|Error fetching download info: #{e}|])
|
||||||
exitWith (ExitFailure 2)
|
exitWith (ExitFailure 2)
|
||||||
|
runLogger $ checkForUpdates dls pfreq
|
||||||
case optCommand of
|
|
||||||
Upgrade _ _ -> pure ()
|
|
||||||
_ -> runLogger $ checkForUpdates dls pfreq
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@@ -1306,6 +1311,7 @@ Make sure to clean up #{tmpdir} afterwards.|])
|
|||||||
cmd = case _rPlatform pfreq of
|
cmd = case _rPlatform pfreq of
|
||||||
Darwin -> "open"
|
Darwin -> "open"
|
||||||
Linux _ -> "xdg-open"
|
Linux _ -> "xdg-open"
|
||||||
|
FreeBSD -> "xdg-open"
|
||||||
|
|
||||||
if clOpen
|
if clOpen
|
||||||
then
|
then
|
||||||
|
|||||||
@@ -28,22 +28,14 @@ eghcup() {
|
|||||||
download_ghcup() {
|
download_ghcup() {
|
||||||
_plat="$(uname -s)"
|
_plat="$(uname -s)"
|
||||||
_arch=$(uname -m)
|
_arch=$(uname -m)
|
||||||
_ghver="0.1.7"
|
_ghver="0.1.6"
|
||||||
_base_url="https://downloads.haskell.org/~ghcup"
|
_base_url="https://downloads.haskell.org/~ghcup"
|
||||||
|
|
||||||
case "${_plat}" in
|
case "${_plat}" in
|
||||||
"linux"|"Linux")
|
"linux"|"Linux")
|
||||||
case "${_arch}" in
|
case "${_arch}" in
|
||||||
x86_64|amd64)
|
x86_64|amd64)
|
||||||
# we could be in a 32bit docker container, in which
|
_url=${_base_url}/${_ghver}/x86_64-linux-ghcup-${_ghver}
|
||||||
# case uname doesn't give us what we want
|
|
||||||
if [ "$(getconf LONG_BIT)" = "32" ] ; then
|
|
||||||
_url=${_base_url}/${_ghver}/i386-linux-ghcup-${_ghver}
|
|
||||||
elif [ "$(getconf LONG_BIT)" = "64" ] ; then
|
|
||||||
_url=${_base_url}/${_ghver}/x86_64-linux-ghcup-${_ghver}
|
|
||||||
else
|
|
||||||
die "Unknown long bit size: $(getconf LONG_BIT)"
|
|
||||||
fi
|
|
||||||
;;
|
;;
|
||||||
i*86)
|
i*86)
|
||||||
_url=${_base_url}/${_ghver}/i386-linux-ghcup-${_ghver}
|
_url=${_base_url}/${_ghver}/i386-linux-ghcup-${_ghver}
|
||||||
@@ -52,6 +44,18 @@ download_ghcup() {
|
|||||||
;;
|
;;
|
||||||
esac
|
esac
|
||||||
;;
|
;;
|
||||||
|
"FreeBSD"|"freebsd")
|
||||||
|
case "${_arch}" in
|
||||||
|
x86_64|amd64)
|
||||||
|
;;
|
||||||
|
i*86)
|
||||||
|
die "i386 currently not supported!"
|
||||||
|
;;
|
||||||
|
*) die "Unknown architecture: ${_arch}"
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
_url=${_base_url}/${_ghver}/x86_64-portbld-freebsd-ghcup-${_ghver}
|
||||||
|
;;
|
||||||
"Darwin"|"darwin")
|
"Darwin"|"darwin")
|
||||||
case "${_arch}" in
|
case "${_arch}" in
|
||||||
x86_64|amd64)
|
x86_64|amd64)
|
||||||
|
|||||||
350
ghcup-0.0.2.json
350
ghcup-0.0.2.json
@@ -19,6 +19,21 @@
|
|||||||
"notes": ""
|
"notes": ""
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"FreeBSD": {
|
||||||
|
"unknown_versioning": {
|
||||||
|
"distroPKGs": [
|
||||||
|
"curl",
|
||||||
|
"gcc",
|
||||||
|
"gmp",
|
||||||
|
"gmake",
|
||||||
|
"ncurses",
|
||||||
|
"perl5",
|
||||||
|
"libffi",
|
||||||
|
"libiconv"
|
||||||
|
],
|
||||||
|
"notes": ""
|
||||||
|
}
|
||||||
|
},
|
||||||
"Linux_Debian": {
|
"Linux_Debian": {
|
||||||
"unknown_versioning": {
|
"unknown_versioning": {
|
||||||
"distroPKGs": [
|
"distroPKGs": [
|
||||||
@@ -100,6 +115,13 @@
|
|||||||
"8.6.2": {
|
"8.6.2": {
|
||||||
"viArch": {
|
"viArch": {
|
||||||
"A_64": {
|
"A_64": {
|
||||||
|
"Linux_Alpine": {
|
||||||
|
"unknown_versioning": {
|
||||||
|
"dlHash": "5be9f98c25c49dbfb65223e2642335d4a45220f0c4044c8af70bbcaebe688467",
|
||||||
|
"dlSubdir": "ghc-8.6.2",
|
||||||
|
"dlUri": "https://github.com/redneb/ghc-alt-libc/releases/download/ghc-8.6.2-musl/ghc-8.6.2-x86_64-unknown-linux-musl.tar.xz"
|
||||||
|
}
|
||||||
|
},
|
||||||
"Linux_Debian": {
|
"Linux_Debian": {
|
||||||
"unknown_versioning": {
|
"unknown_versioning": {
|
||||||
"dlHash": "13f96e8b83bb5bb60f955786ff9085744c24927a33be8a17773f84c7c248533a",
|
"dlHash": "13f96e8b83bb5bb60f955786ff9085744c24927a33be8a17773f84c7c248533a",
|
||||||
@@ -154,6 +176,13 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"A_32": {
|
"A_32": {
|
||||||
|
"Linux_Alpine": {
|
||||||
|
"unknown_versioning": {
|
||||||
|
"dlHash": "a1add75822258fbb6e57ad049919ef5f757bac10d3c7a6eaeee50d2521ffeb4e",
|
||||||
|
"dlSubdir": "ghc-8.6.2",
|
||||||
|
"dlUri": "https://github.com/redneb/ghc-alt-libc/releases/download/ghc-8.6.2-musl/ghc-8.6.2-i386-unknown-linux-musl.tar.xz"
|
||||||
|
}
|
||||||
|
},
|
||||||
"Linux_Debian": {
|
"Linux_Debian": {
|
||||||
"unknown_versioning": {
|
"unknown_versioning": {
|
||||||
"dlHash": "a288026d9ef22f7ac387edab6b29ef7dcb3b28945c8ea532a15c1fa35d4733ed",
|
"dlHash": "a288026d9ef22f7ac387edab6b29ef7dcb3b28945c8ea532a15c1fa35d4733ed",
|
||||||
@@ -199,9 +228,16 @@
|
|||||||
"A_64": {
|
"A_64": {
|
||||||
"Linux_Alpine": {
|
"Linux_Alpine": {
|
||||||
"unknown_versioning": {
|
"unknown_versioning": {
|
||||||
"dlHash": "517783b660a27ebf95b2568d47292fd633d5f9a4de4c80ad1ccf05e1b9d7313f",
|
"dlHash": "7f9ef3e048ca6f2a2a589e6c168d8c7699fbe32b1b39a9d7c72eff9b26e90c67",
|
||||||
"dlSubdir": "ghc-8.0.2",
|
"dlSubdir": "ghc-8.0.2",
|
||||||
"dlUri": "https://files.hasufell.de/ghc/ghc-8.0.2-x86_64-alpine-linux.tar.xz"
|
"dlUri": "https://github.com/redneb/ghc-alt-libc/releases/download/ghc-8.0.2-musl/ghc-8.0.2-x86_64-unknown-linux-musl.tar.xz"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"FreeBSD": {
|
||||||
|
"unknown_versioning": {
|
||||||
|
"dlHash": "b36a20e5cae24d70bbb6116ae486f21811e9384f15d3892d260f02fba3e3bb8c",
|
||||||
|
"dlSubdir": "ghc-8.0.2",
|
||||||
|
"dlUri": "https://downloads.haskell.org/~ghc/8.0.2/ghc-8.0.2-x86_64-portbld-freebsd.tar.xz"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"Linux_Debian": {
|
"Linux_Debian": {
|
||||||
@@ -248,9 +284,9 @@
|
|||||||
"A_32": {
|
"A_32": {
|
||||||
"Linux_Alpine": {
|
"Linux_Alpine": {
|
||||||
"unknown_versioning": {
|
"unknown_versioning": {
|
||||||
"dlHash": "b4cd12a1048b2fff2f23c9eec0dd3a1174d54d017f8d79ec79af4534118e6881",
|
"dlHash": "815c68181013cd3f4dc748ddb5502a5e7a1a4011ba57d8eff6d66da411c72e84",
|
||||||
"dlSubdir": "ghc-8.0.2",
|
"dlSubdir": "ghc-8.0.2",
|
||||||
"dlUri": "https://files.hasufell.de/ghc/ghc-8.0.2-i386-alpine-linux.tar.xz"
|
"dlUri": "https://github.com/redneb/ghc-alt-libc/releases/download/ghc-8.0.2-musl/ghc-8.0.2-i386-unknown-linux-musl.tar.xz"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"Linux_Debian": {
|
"Linux_Debian": {
|
||||||
@@ -287,6 +323,13 @@
|
|||||||
"8.6.4": {
|
"8.6.4": {
|
||||||
"viArch": {
|
"viArch": {
|
||||||
"A_64": {
|
"A_64": {
|
||||||
|
"Linux_Alpine": {
|
||||||
|
"unknown_versioning": {
|
||||||
|
"dlHash": "ec73167bae1a173a9af07612df5fa1289e924f13ed9241339cb5617337cb2979",
|
||||||
|
"dlSubdir": "ghc-8.6.4",
|
||||||
|
"dlUri": "https://github.com/redneb/ghc-alt-libc/releases/download/ghc-8.6.4-musl/ghc-8.6.4-x86_64-unknown-linux-musl.tar.xz"
|
||||||
|
}
|
||||||
|
},
|
||||||
"Linux_Debian": {
|
"Linux_Debian": {
|
||||||
"unknown_versioning": {
|
"unknown_versioning": {
|
||||||
"dlHash": "ef74222ef3c01c3fc5b926f67e8b4ef612fe8efa40ac937317cff9b0eed8d863",
|
"dlHash": "ef74222ef3c01c3fc5b926f67e8b4ef612fe8efa40ac937317cff9b0eed8d863",
|
||||||
@@ -346,6 +389,13 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"A_32": {
|
"A_32": {
|
||||||
|
"Linux_Alpine": {
|
||||||
|
"unknown_versioning": {
|
||||||
|
"dlHash": "21b39b89edadbb6ab5b98d46dfacc0fd0799f9b16465a05c64e48f41dcbb1f7a",
|
||||||
|
"dlSubdir": "ghc-8.6.4",
|
||||||
|
"dlUri": "https://github.com/redneb/ghc-alt-libc/releases/download/ghc-8.6.4-musl/ghc-8.6.4-i386-unknown-linux-musl.tar.xz"
|
||||||
|
}
|
||||||
|
},
|
||||||
"Linux_Debian": {
|
"Linux_Debian": {
|
||||||
"unknown_versioning": {
|
"unknown_versioning": {
|
||||||
"dlHash": "5e2ce88f4d13d23ac37e278e0c7b51c801008931359b9fa8a631d804d2da552c",
|
"dlHash": "5e2ce88f4d13d23ac37e278e0c7b51c801008931359b9fa8a631d804d2da552c",
|
||||||
@@ -389,6 +439,20 @@
|
|||||||
"8.4.1": {
|
"8.4.1": {
|
||||||
"viArch": {
|
"viArch": {
|
||||||
"A_64": {
|
"A_64": {
|
||||||
|
"Linux_Alpine": {
|
||||||
|
"unknown_versioning": {
|
||||||
|
"dlHash": "82d4ea6247a91e7e76065c0cdf66eec813ab679c1f24de0fb92c89bba3ef27f2",
|
||||||
|
"dlSubdir": "ghc-8.4.1",
|
||||||
|
"dlUri": "https://github.com/redneb/ghc-alt-libc/releases/download/ghc-8.4.1-musl/ghc-8.4.1-x86_64-unknown-linux-musl.tar.xz"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"FreeBSD": {
|
||||||
|
"unknown_versioning": {
|
||||||
|
"dlHash": "e748daec098445c6190090fe32bb2817a1140553be5acd2188e1af05ad24e5aa",
|
||||||
|
"dlSubdir": "ghc-8.4.1",
|
||||||
|
"dlUri": "https://downloads.haskell.org/~ghc/8.4.1/ghc-8.4.1-x86_64-portbld11-freebsd.tar.xz"
|
||||||
|
}
|
||||||
|
},
|
||||||
"Linux_Debian": {
|
"Linux_Debian": {
|
||||||
"unknown_versioning": {
|
"unknown_versioning": {
|
||||||
"dlHash": "427c77a934b30c3f1de992c38c072afb4323fe6fb30dbac919ca8cb6ae98fbd9",
|
"dlHash": "427c77a934b30c3f1de992c38c072afb4323fe6fb30dbac919ca8cb6ae98fbd9",
|
||||||
@@ -433,6 +497,13 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"A_32": {
|
"A_32": {
|
||||||
|
"Linux_Alpine": {
|
||||||
|
"unknown_versioning": {
|
||||||
|
"dlHash": "e5feee34b58c1a1cd6c270fbe696c178a4649675398f4e0d56a4bfad9641b736",
|
||||||
|
"dlSubdir": "ghc-8.4.1",
|
||||||
|
"dlUri": "https://github.com/redneb/ghc-alt-libc/releases/download/ghc-8.4.1-musl/ghc-8.4.1-i386-unknown-linux-musl.tar.xz"
|
||||||
|
}
|
||||||
|
},
|
||||||
"Linux_Debian": {
|
"Linux_Debian": {
|
||||||
"unknown_versioning": {
|
"unknown_versioning": {
|
||||||
"dlHash": "c56c589c76c7ddcb77cdbef885a811761e669d3e76868b723d5be56dedcd4f69",
|
"dlHash": "c56c589c76c7ddcb77cdbef885a811761e669d3e76868b723d5be56dedcd4f69",
|
||||||
@@ -476,6 +547,20 @@
|
|||||||
"8.6.3": {
|
"8.6.3": {
|
||||||
"viArch": {
|
"viArch": {
|
||||||
"A_64": {
|
"A_64": {
|
||||||
|
"Linux_Alpine": {
|
||||||
|
"unknown_versioning": {
|
||||||
|
"dlHash": "274f7ea959e6f1c830b33efd462ab9d0ff32d1cb5be051a2a318464d05d674dd",
|
||||||
|
"dlSubdir": "ghc-8.6.3",
|
||||||
|
"dlUri": "https://github.com/redneb/ghc-alt-libc/releases/download/ghc-8.6.3-musl/ghc-8.6.3-x86_64-unknown-linux-musl.tar.xz"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"FreeBSD": {
|
||||||
|
"unknown_versioning": {
|
||||||
|
"dlHash": "bc2419fa180f8a7808c49775987866435995df9bdd9ce08bcd38352d63ba6031",
|
||||||
|
"dlSubdir": "ghc-8.6.3",
|
||||||
|
"dlUri": "https://downloads.haskell.org/~ghc/8.6.3/ghc-8.6.3-x86_64-portbld-freebsd.tar.xz"
|
||||||
|
}
|
||||||
|
},
|
||||||
"Linux_Debian": {
|
"Linux_Debian": {
|
||||||
"unknown_versioning": {
|
"unknown_versioning": {
|
||||||
"dlHash": "e7954c8ed9b422a09c6ab737e4a0865a2725d034ba0e272bd5c70db910797f99",
|
"dlHash": "e7954c8ed9b422a09c6ab737e4a0865a2725d034ba0e272bd5c70db910797f99",
|
||||||
@@ -556,6 +641,13 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"A_32": {
|
"A_32": {
|
||||||
|
"Linux_Alpine": {
|
||||||
|
"unknown_versioning": {
|
||||||
|
"dlHash": "dc0b53a7f0e52232930abcfad427ccd0917c90797203fbc7b5d72f5335d85a7d",
|
||||||
|
"dlSubdir": "ghc-8.6.3",
|
||||||
|
"dlUri": "https://github.com/redneb/ghc-alt-libc/releases/download/ghc-8.6.3-musl/ghc-8.6.3-i386-unknown-linux-musl.tar.xz"
|
||||||
|
}
|
||||||
|
},
|
||||||
"Linux_Debian": {
|
"Linux_Debian": {
|
||||||
"unknown_versioning": {
|
"unknown_versioning": {
|
||||||
"dlHash": "b57070ba8c70b1333a3e47ce124baf791be39c20a592954772532fd6dd51882f",
|
"dlHash": "b57070ba8c70b1333a3e47ce124baf791be39c20a592954772532fd6dd51882f",
|
||||||
@@ -606,6 +698,13 @@
|
|||||||
"dlUri": "https://downloads.haskell.org/~ghc/8.10.1/ghc-8.10.1-x86_64-alpine3.10-linux-integer-simple.tar.xz"
|
"dlUri": "https://downloads.haskell.org/~ghc/8.10.1/ghc-8.10.1-x86_64-alpine3.10-linux-integer-simple.tar.xz"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"FreeBSD": {
|
||||||
|
"unknown_versioning": {
|
||||||
|
"dlHash": "52d27dbf9de82005dde9bfc521bff612e381b5228af194259c2306d2b75825c2",
|
||||||
|
"dlSubdir": "ghc-8.10.1",
|
||||||
|
"dlUri": "https://downloads.haskell.org/ghc/8.10.1/ghc-8.10.1-x86_64-portbld-freebsd.tar.xz"
|
||||||
|
}
|
||||||
|
},
|
||||||
"Linux_Debian": {
|
"Linux_Debian": {
|
||||||
"unknown_versioning": {
|
"unknown_versioning": {
|
||||||
"dlHash": "d1cf7886f27af070f3b7dbe1975a78b43ef2d32b86362cbe953e79464fe70761",
|
"dlHash": "d1cf7886f27af070f3b7dbe1975a78b43ef2d32b86362cbe953e79464fe70761",
|
||||||
@@ -701,13 +800,6 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"A_32": {
|
"A_32": {
|
||||||
"Linux_Alpine": {
|
|
||||||
"unknown_versioning": {
|
|
||||||
"dlHash": "7360cc6b29e9b4ab08f6ea5bc3bcca6f5c216933e81ef1620dcdd700f1fdb289",
|
|
||||||
"dlSubdir": "ghc-8.10.1",
|
|
||||||
"dlUri": "https://files.hasufell.de/ghc/ghc-8.10.1-i386-alpine-linux.tar.xz"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"Linux_Debian": {
|
"Linux_Debian": {
|
||||||
"unknown_versioning": {
|
"unknown_versioning": {
|
||||||
"dlHash": "8b53eef2c827b5f634d72920a93c0c9dd66ea288691a2bfe28def45d3c686ee2",
|
"dlHash": "8b53eef2c827b5f634d72920a93c0c9dd66ea288691a2bfe28def45d3c686ee2",
|
||||||
@@ -759,9 +851,16 @@
|
|||||||
"A_64": {
|
"A_64": {
|
||||||
"Linux_Alpine": {
|
"Linux_Alpine": {
|
||||||
"unknown_versioning": {
|
"unknown_versioning": {
|
||||||
"dlHash": "b9d3ed7f7aa24ef2d58bb579252289caa0b8877adee3685e3af2fb73d440afdc",
|
"dlHash": "ec6d0417822c3bfafc7aea0b0402294901231bc5d72dd17a2b849e3f44850695",
|
||||||
"dlSubdir": "ghc-8.6.5",
|
"dlSubdir": "ghc-8.6.5",
|
||||||
"dlUri": "https://files.hasufell.de/ghc/ghc-8.6.5-x86_64-alpine-linux.tar.xz"
|
"dlUri": "https://github.com/redneb/ghc-alt-libc/releases/download/ghc-8.6.5-musl/ghc-8.6.5-x86_64-unknown-linux-musl.tar.xz"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"FreeBSD": {
|
||||||
|
"unknown_versioning": {
|
||||||
|
"dlHash": "83a3059a630d40a98e26cb5b520354e12094a96e36ba2f5ab002dad94cf2fb37",
|
||||||
|
"dlSubdir": "ghc-8.6.5",
|
||||||
|
"dlUri": "https://files.hasufell.de/ghc/ghc-8.6.5-x86_64-portbld-freebsd.tar.xz"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"Linux_Debian": {
|
"Linux_Debian": {
|
||||||
@@ -846,9 +945,9 @@
|
|||||||
"A_32": {
|
"A_32": {
|
||||||
"Linux_Alpine": {
|
"Linux_Alpine": {
|
||||||
"unknown_versioning": {
|
"unknown_versioning": {
|
||||||
"dlHash": "3737837550d9b177acfe150e3a3cd4545427ded020487c2ed5194d7b8f116349",
|
"dlHash": "db13ff894faf431f9c64db21c090a1e4e42803794d56720a704c50166c7ca05d",
|
||||||
"dlSubdir": "ghc-8.6.5",
|
"dlSubdir": "ghc-8.6.5",
|
||||||
"dlUri": "https://files.hasufell.de/ghc/ghc-8.6.5-i386-alpine-linux.tar.xz"
|
"dlUri": "https://github.com/redneb/ghc-alt-libc/releases/download/ghc-8.6.5-musl/ghc-8.6.5-i386-unknown-linux-musl.tar.xz"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"Linux_Debian": {
|
"Linux_Debian": {
|
||||||
@@ -894,6 +993,20 @@
|
|||||||
"8.4.2": {
|
"8.4.2": {
|
||||||
"viArch": {
|
"viArch": {
|
||||||
"A_64": {
|
"A_64": {
|
||||||
|
"Linux_Alpine": {
|
||||||
|
"unknown_versioning": {
|
||||||
|
"dlHash": "3ebdb6e8001679e8722bd75a47805f1b3c1b25b37c4d237a7aaa4d66162f699f",
|
||||||
|
"dlSubdir": "ghc-8.4.2",
|
||||||
|
"dlUri": "https://github.com/redneb/ghc-alt-libc/releases/download/ghc-8.4.2-musl/ghc-8.4.2-x86_64-unknown-linux-musl.tar.xz"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"FreeBSD": {
|
||||||
|
"unknown_versioning": {
|
||||||
|
"dlHash": "e9ed417fdf94c2ff2c6e344ed16f332bf6b591511f6442c0d9ea94854882b66c",
|
||||||
|
"dlSubdir": "ghc-8.4.2",
|
||||||
|
"dlUri": "https://downloads.haskell.org/~ghc/8.4.2/ghc-8.4.2-x86_64-portbld-freebsd.tar.xz"
|
||||||
|
}
|
||||||
|
},
|
||||||
"Linux_Debian": {
|
"Linux_Debian": {
|
||||||
"unknown_versioning": {
|
"unknown_versioning": {
|
||||||
"dlHash": "3f4f5bbd2cdab4e7015ada9196d8d9b3a1ad274293cef011f85c46854596cb57",
|
"dlHash": "3f4f5bbd2cdab4e7015ada9196d8d9b3a1ad274293cef011f85c46854596cb57",
|
||||||
@@ -953,6 +1066,13 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"A_32": {
|
"A_32": {
|
||||||
|
"Linux_Alpine": {
|
||||||
|
"unknown_versioning": {
|
||||||
|
"dlHash": "a43ac57214764717f0ffe515ef47b84e938f0a4fa8ff875773d6ba315b940835",
|
||||||
|
"dlSubdir": "ghc-8.4.2",
|
||||||
|
"dlUri": "https://github.com/redneb/ghc-alt-libc/releases/download/ghc-8.4.2-musl/ghc-8.4.2-i386-unknown-linux-musl.tar.xz"
|
||||||
|
}
|
||||||
|
},
|
||||||
"Linux_Debian": {
|
"Linux_Debian": {
|
||||||
"unknown_versioning": {
|
"unknown_versioning": {
|
||||||
"dlHash": "2d849c30b4c1eac25dc74333501920921e22fa483153f404993808bbda93df05",
|
"dlHash": "2d849c30b4c1eac25dc74333501920921e22fa483153f404993808bbda93df05",
|
||||||
@@ -996,6 +1116,13 @@
|
|||||||
"8.8.1": {
|
"8.8.1": {
|
||||||
"viArch": {
|
"viArch": {
|
||||||
"A_64": {
|
"A_64": {
|
||||||
|
"Linux_Alpine": {
|
||||||
|
"unknown_versioning": {
|
||||||
|
"dlHash": "029163c42a219983f4220d73c26b910c3ecf6eda45a3e5e27236e8a66b080890",
|
||||||
|
"dlSubdir": "ghc-8.8.1",
|
||||||
|
"dlUri": "https://github.com/redneb/ghc-alt-libc/releases/download/ghc-8.8.1-musl/ghc-8.8.1-x86_64-unknown-linux-musl.tar.xz"
|
||||||
|
}
|
||||||
|
},
|
||||||
"Linux_Debian": {
|
"Linux_Debian": {
|
||||||
"unknown_versioning": {
|
"unknown_versioning": {
|
||||||
"dlHash": "620fd560535b63cac5f8c97354ccddf93fa940cca78e2d19f6f98b7e67c6a723",
|
"dlHash": "620fd560535b63cac5f8c97354ccddf93fa940cca78e2d19f6f98b7e67c6a723",
|
||||||
@@ -1076,6 +1203,13 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"A_32": {
|
"A_32": {
|
||||||
|
"Linux_Alpine": {
|
||||||
|
"unknown_versioning": {
|
||||||
|
"dlHash": "3f5462341a455a5677fba5cb24da8938878261069da5ee4234b1c6ac2d2ef77e",
|
||||||
|
"dlSubdir": "ghc-8.8.1",
|
||||||
|
"dlUri": "https://github.com/redneb/ghc-alt-libc/releases/download/ghc-8.8.1-musl/ghc-8.8.1-i386-unknown-linux-musl.tar.xz"
|
||||||
|
}
|
||||||
|
},
|
||||||
"Linux_Debian": {
|
"Linux_Debian": {
|
||||||
"unknown_versioning": {
|
"unknown_versioning": {
|
||||||
"dlHash": "3d3bb75aff2dd79ec87ace10483368681fbc328ff00ebf15edad33420f00f7f5",
|
"dlHash": "3d3bb75aff2dd79ec87ace10483368681fbc328ff00ebf15edad33420f00f7f5",
|
||||||
@@ -1119,13 +1253,6 @@
|
|||||||
"8.8.4": {
|
"8.8.4": {
|
||||||
"viArch": {
|
"viArch": {
|
||||||
"A_64": {
|
"A_64": {
|
||||||
"Linux_Alpine": {
|
|
||||||
"unknown_versioning": {
|
|
||||||
"dlHash": "90c6a1661de7f20c7d169cd6270125035b3332063e45103ce028df0beecf434e",
|
|
||||||
"dlSubdir": "ghc-8.8.4",
|
|
||||||
"dlUri": "https://files.hasufell.de/ghc/ghc-8.8.4-x86_64-alpine-linux.tar.xz"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"Linux_Debian": {
|
"Linux_Debian": {
|
||||||
"unknown_versioning": {
|
"unknown_versioning": {
|
||||||
"dlHash": "4862559d221153caf978f4bf2c15a82c114d1e1f43b298b2ecff2ac94b586d20",
|
"dlHash": "4862559d221153caf978f4bf2c15a82c114d1e1f43b298b2ecff2ac94b586d20",
|
||||||
@@ -1206,11 +1333,11 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"A_32": {
|
"A_32": {
|
||||||
"Linux_Alpine": {
|
"FreeBSD": {
|
||||||
"unknown_versioning": {
|
"unknown_versioning": {
|
||||||
"dlHash": "1d18e89ee031197e55c48683e78a7ffc67601ac5fd9f73aac555eb064b3859a2",
|
"dlHash": "8cebe5ccf454e82acd1ff52ca57590d1ab0f3f44a981b46257ec12158c8c447e",
|
||||||
"dlSubdir": "ghc-8.8.4",
|
"dlSubdir": "ghc-8.8.4",
|
||||||
"dlUri": "https://files.hasufell.de/ghc/ghc-8.8.4-i386-alpine-linux.tar.xz"
|
"dlUri": "https://files.hasufell.de/ghc/ghc-8.8.4-x86_64-portbld-freebsd.tar.xz"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"Linux_Debian": {
|
"Linux_Debian": {
|
||||||
@@ -1250,13 +1377,19 @@
|
|||||||
},
|
},
|
||||||
"viChangeLog": "https://downloads.haskell.org/~ghc/8.8.4/docs/html/users_guide/8.8.4-notes.html",
|
"viChangeLog": "https://downloads.haskell.org/~ghc/8.8.4/docs/html/users_guide/8.8.4-notes.html",
|
||||||
"viTags": [
|
"viTags": [
|
||||||
"Recommended",
|
|
||||||
"base-4.13.0.0"
|
"base-4.13.0.0"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
"8.4.3": {
|
"8.4.3": {
|
||||||
"viArch": {
|
"viArch": {
|
||||||
"A_64": {
|
"A_64": {
|
||||||
|
"Linux_Alpine": {
|
||||||
|
"unknown_versioning": {
|
||||||
|
"dlHash": "0f05c67e3fd29a3f505abb77e9c39349d312cdc1a566263b8f4b227d085906bc",
|
||||||
|
"dlSubdir": "ghc-8.4.3",
|
||||||
|
"dlUri": "https://github.com/redneb/ghc-alt-libc/releases/download/ghc-8.4.3-musl/ghc-8.4.3-x86_64-unknown-linux-musl.tar.xz"
|
||||||
|
}
|
||||||
|
},
|
||||||
"Linux_Debian": {
|
"Linux_Debian": {
|
||||||
"unknown_versioning": {
|
"unknown_versioning": {
|
||||||
"dlHash": "2e4f53afb872ad9c640f31aea283b3ff4c5028b65808a1920739900aef7d15c9",
|
"dlHash": "2e4f53afb872ad9c640f31aea283b3ff4c5028b65808a1920739900aef7d15c9",
|
||||||
@@ -1316,6 +1449,13 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"A_32": {
|
"A_32": {
|
||||||
|
"Linux_Alpine": {
|
||||||
|
"unknown_versioning": {
|
||||||
|
"dlHash": "3a9a1ceb8eef234023fc36600245a03772bcb46b2abac41f6394104feaec8c43",
|
||||||
|
"dlSubdir": "ghc-8.4.3",
|
||||||
|
"dlUri": "https://github.com/redneb/ghc-alt-libc/releases/download/ghc-8.4.3-musl/ghc-8.4.3-i386-unknown-linux-musl.tar.xz"
|
||||||
|
}
|
||||||
|
},
|
||||||
"Linux_Debian": {
|
"Linux_Debian": {
|
||||||
"unknown_versioning": {
|
"unknown_versioning": {
|
||||||
"dlHash": "f5763983a26dedd88b65a0b17267359a3981b83a642569b26334423f684f8b8c",
|
"dlHash": "f5763983a26dedd88b65a0b17267359a3981b83a642569b26334423f684f8b8c",
|
||||||
@@ -1359,6 +1499,20 @@
|
|||||||
"8.6.1": {
|
"8.6.1": {
|
||||||
"viArch": {
|
"viArch": {
|
||||||
"A_64": {
|
"A_64": {
|
||||||
|
"Linux_Alpine": {
|
||||||
|
"unknown_versioning": {
|
||||||
|
"dlHash": "2668e12facfa9083150b01b1137693cb3de266a6f8ac8c6b44a2be3826c73177",
|
||||||
|
"dlSubdir": "ghc-8.6.1",
|
||||||
|
"dlUri": "https://github.com/redneb/ghc-alt-libc/releases/download/ghc-8.6.1-musl/ghc-8.6.1-x86_64-unknown-linux-musl.tar.xz"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"FreeBSD": {
|
||||||
|
"unknown_versioning": {
|
||||||
|
"dlHash": "51403b054a3a649039ac988e1d1112561f96750bfced63df864091a3fab36f08",
|
||||||
|
"dlSubdir": "ghc-8.6.1",
|
||||||
|
"dlUri": "https://downloads.haskell.org/~ghc/8.6.1/ghc-8.6.1-x86_64-portbld-freebsd.tar.xz"
|
||||||
|
}
|
||||||
|
},
|
||||||
"Linux_Debian": {
|
"Linux_Debian": {
|
||||||
"unknown_versioning": {
|
"unknown_versioning": {
|
||||||
"dlHash": "97d44f303868d74e4d13a2e99c82ffce3d25fd54c704675e5a1939e0d824dbf0",
|
"dlHash": "97d44f303868d74e4d13a2e99c82ffce3d25fd54c704675e5a1939e0d824dbf0",
|
||||||
@@ -1418,6 +1572,13 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"A_32": {
|
"A_32": {
|
||||||
|
"Linux_Alpine": {
|
||||||
|
"unknown_versioning": {
|
||||||
|
"dlHash": "12b9b5b78be94b57d301b2a31eda145928110fd103fbbcc1e6e6966237a30ed2",
|
||||||
|
"dlSubdir": "ghc-8.6.1",
|
||||||
|
"dlUri": "https://github.com/redneb/ghc-alt-libc/releases/download/ghc-8.6.1-musl/ghc-8.6.1-i386-unknown-linux-musl.tar.xz"
|
||||||
|
}
|
||||||
|
},
|
||||||
"Linux_Debian": {
|
"Linux_Debian": {
|
||||||
"unknown_versioning": {
|
"unknown_versioning": {
|
||||||
"dlHash": "83573af96e3dec8f67c1a844512f92cbf7d51ae7ceca53d948fc2a3300abd05c",
|
"dlHash": "83573af96e3dec8f67c1a844512f92cbf7d51ae7ceca53d948fc2a3300abd05c",
|
||||||
@@ -1461,6 +1622,13 @@
|
|||||||
"8.8.2": {
|
"8.8.2": {
|
||||||
"viArch": {
|
"viArch": {
|
||||||
"A_64": {
|
"A_64": {
|
||||||
|
"Linux_Alpine": {
|
||||||
|
"unknown_versioning": {
|
||||||
|
"dlHash": "09d49c75b5626606409c982b23f70dec241a944928243f32d1b59b2005de6dea",
|
||||||
|
"dlSubdir": "ghc-8.8.2",
|
||||||
|
"dlUri": "https://github.com/redneb/ghc-alt-libc/releases/download/ghc-8.8.2-musl/ghc-8.8.2-x86_64-unknown-linux-musl.tar.xz"
|
||||||
|
}
|
||||||
|
},
|
||||||
"Linux_Debian": {
|
"Linux_Debian": {
|
||||||
"unknown_versioning": {
|
"unknown_versioning": {
|
||||||
"dlHash": "7b2d66c2d5d8c15750da5833d3018634a5eb792a5662282e3abfeb112c2a1cc3",
|
"dlHash": "7b2d66c2d5d8c15750da5833d3018634a5eb792a5662282e3abfeb112c2a1cc3",
|
||||||
@@ -1541,6 +1709,13 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"A_32": {
|
"A_32": {
|
||||||
|
"Linux_Alpine": {
|
||||||
|
"unknown_versioning": {
|
||||||
|
"dlHash": "4ea4a81b6b5ba807c93b21b3cddf1f1b4b0fc1ce018cf6aa255a9ee40137b278",
|
||||||
|
"dlSubdir": "ghc-8.8.2",
|
||||||
|
"dlUri": "https://github.com/redneb/ghc-alt-libc/releases/download/ghc-8.8.2-musl/ghc-8.8.2-i386-unknown-linux-musl.tar.xz"
|
||||||
|
}
|
||||||
|
},
|
||||||
"Linux_Debian": {
|
"Linux_Debian": {
|
||||||
"unknown_versioning": {
|
"unknown_versioning": {
|
||||||
"dlHash": "ad1c628082c32635a436905a7ff83eaa4246347d869be5ef6b33c3bf85e8f00c",
|
"dlHash": "ad1c628082c32635a436905a7ff83eaa4246347d869be5ef6b33c3bf85e8f00c",
|
||||||
@@ -1584,6 +1759,20 @@
|
|||||||
"7.10.3": {
|
"7.10.3": {
|
||||||
"viArch": {
|
"viArch": {
|
||||||
"A_64": {
|
"A_64": {
|
||||||
|
"Linux_Alpine": {
|
||||||
|
"unknown_versioning": {
|
||||||
|
"dlHash": "8b83dfa8b85ba45e24768337254e6eb23c0855df1a5168671a3a8090b6d0964e",
|
||||||
|
"dlSubdir": "ghc-7.10.3",
|
||||||
|
"dlUri": "https://github.com/redneb/ghc-alt-libc/releases/download/ghc-7.10.3-musl/ghc-7.10.3-x86_64-unknown-linux-musl.tar.xz"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"FreeBSD": {
|
||||||
|
"unknown_versioning": {
|
||||||
|
"dlHash": "2aa396edd2bb651f4bc7eef7a396913ea24923de5aafdc76df6295333e487e48",
|
||||||
|
"dlSubdir": "ghc-7.10.3",
|
||||||
|
"dlUri": "https://downloads.haskell.org/~ghc/7.10.3/ghc-7.10.3-x86_64-portbld-freebsd.tar.bz2"
|
||||||
|
}
|
||||||
|
},
|
||||||
"Linux_Debian": {
|
"Linux_Debian": {
|
||||||
"unknown_versioning": {
|
"unknown_versioning": {
|
||||||
"dlHash": "01cfbad8dff1e8b34a5fdca8caeaf843b56e36af919e29cd68870d2588563db5",
|
"dlHash": "01cfbad8dff1e8b34a5fdca8caeaf843b56e36af919e29cd68870d2588563db5",
|
||||||
@@ -1635,6 +1824,13 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"A_32": {
|
"A_32": {
|
||||||
|
"FreeBSD": {
|
||||||
|
"unknown_versioning": {
|
||||||
|
"dlHash": "3dde05577c6f94dcb0ba201ebd53ab88553bbc9a3aa8e72237162ed7a9d588a3",
|
||||||
|
"dlSubdir": "ghc-7.10.3",
|
||||||
|
"dlUri": "https://downloads.haskell.org/~ghc/7.10.3/ghc-7.10.3-i386-portbld-freebsd.tar.bz2"
|
||||||
|
}
|
||||||
|
},
|
||||||
"Linux_Debian": {
|
"Linux_Debian": {
|
||||||
"unknown_versioning": {
|
"unknown_versioning": {
|
||||||
"dlHash": "d2ccf072457fb100503f6f5430a1e3589ca525a97424263d036b0550bc277f0c",
|
"dlHash": "d2ccf072457fb100503f6f5430a1e3589ca525a97424263d036b0550bc277f0c",
|
||||||
@@ -1692,11 +1888,21 @@
|
|||||||
"8.2.2": {
|
"8.2.2": {
|
||||||
"viArch": {
|
"viArch": {
|
||||||
"A_64": {
|
"A_64": {
|
||||||
"Linux_Alpine": {
|
"FreeBSD": {
|
||||||
"unknown_versioning": {
|
"unknown_versioning": {
|
||||||
"dlHash": "adcf3a320a3c402aba07ae9586990dc3c0b550e96aeffb1b9e194313d3ba716d",
|
"dlHash": "cd351c704b92b9af23994024df07de8ca7090ea7675d5c8b14b2be857a46d804",
|
||||||
"dlSubdir": "ghc-8.2.2",
|
"dlSubdir": "ghc-8.2.2",
|
||||||
"dlUri": "https://files.hasufell.de/ghc/ghc-8.2.2-x86_64-alpine-linux.tar.xz"
|
"dlUri": "https://downloads.haskell.org/~ghc/8.2.2/ghc-8.2.2-x86_64-portbld11-freebsd.tar.xz"
|
||||||
|
},
|
||||||
|
"11": {
|
||||||
|
"dlHash": "cd351c704b92b9af23994024df07de8ca7090ea7675d5c8b14b2be857a46d804",
|
||||||
|
"dlSubdir": "ghc-8.2.2",
|
||||||
|
"dlUri": "https://downloads.haskell.org/~ghc/8.2.2/ghc-8.2.2-x86_64-portbld11-freebsd.tar.xz"
|
||||||
|
},
|
||||||
|
"10": {
|
||||||
|
"dlHash": "9e99aaeaec4b2c6d660d80246c0d4dbd41fda88f1eb7a908b29dc8fa8d663949",
|
||||||
|
"dlSubdir": "ghc-8.2.2",
|
||||||
|
"dlUri": "https://downloads.haskell.org/~ghc/8.2.2/ghc-8.2.2-x86_64-portbld10_3-freebsd.tar.xz"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"Linux_Debian": {
|
"Linux_Debian": {
|
||||||
@@ -1741,13 +1947,6 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"A_32": {
|
"A_32": {
|
||||||
"Linux_Alpine": {
|
|
||||||
"unknown_versioning": {
|
|
||||||
"dlHash": "467534c32552cfd318753112dbc70af003693aad4b0081f2a07e61f5b5ea2c22",
|
|
||||||
"dlSubdir": "ghc-8.2.2",
|
|
||||||
"dlUri": "https://files.hasufell.de/ghc/ghc-8.2.2-i386-alpine-linux.tar.xz"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"Linux_Debian": {
|
"Linux_Debian": {
|
||||||
"7": {
|
"7": {
|
||||||
"dlHash": "cd18766b1a9b74fc6c90003a719ecab158f281f9a755d8b1bd3fd764ba6947b5",
|
"dlHash": "cd18766b1a9b74fc6c90003a719ecab158f281f9a755d8b1bd3fd764ba6947b5",
|
||||||
@@ -1798,9 +1997,16 @@
|
|||||||
"A_64": {
|
"A_64": {
|
||||||
"Linux_Alpine": {
|
"Linux_Alpine": {
|
||||||
"unknown_versioning": {
|
"unknown_versioning": {
|
||||||
"dlHash": "336affff8314d3dc5e85d9c09015ae2ba8a7658b459c8c8ae77ecaa551a56ae7",
|
"dlHash": "e15f1cf02adb2cfb77a202050300a92f61456c6e1e90b543fec82d99da893a69",
|
||||||
"dlSubdir": "ghc-8.4.4",
|
"dlSubdir": "ghc-8.4.4",
|
||||||
"dlUri": "https://files.hasufell.de/ghc/ghc-8.4.4-x86_64-alpine-linux.tar.xz"
|
"dlUri": "https://github.com/redneb/ghc-alt-libc/releases/download/ghc-8.4.4-musl/ghc-8.4.4-x86_64-unknown-linux-musl.tar.xz"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"FreeBSD": {
|
||||||
|
"unknown_versioning": {
|
||||||
|
"dlHash": "44fbd142d1c355d6110595c59c760e2c73866ff9259ec85ebf814edb244d1940",
|
||||||
|
"dlSubdir": "ghc-8.4.4",
|
||||||
|
"dlUri": "https://downloads.haskell.org/~ghc/8.4.4/ghc-8.4.4-x86_64-portbld-freebsd11.tar.xz"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"Linux_Debian": {
|
"Linux_Debian": {
|
||||||
@@ -1885,9 +2091,9 @@
|
|||||||
"A_32": {
|
"A_32": {
|
||||||
"Linux_Alpine": {
|
"Linux_Alpine": {
|
||||||
"unknown_versioning": {
|
"unknown_versioning": {
|
||||||
"dlHash": "892888d388ef5c9cadf5cfba1146d62237c25b9b066fb62fee940b2b285fd308",
|
"dlHash": "356f49b1acee0b0267fd8ca687aede14d43cee1f231d7f8a37525d50f07e1428",
|
||||||
"dlSubdir": "ghc-8.4.4",
|
"dlSubdir": "ghc-8.4.4",
|
||||||
"dlUri": "https://files.hasufell.de/ghc/ghc-8.4.4-i386-alpine-linux.tar.xz"
|
"dlUri": "https://github.com/redneb/ghc-alt-libc/releases/download/ghc-8.4.4-musl/ghc-8.4.4-i386-unknown-linux-musl.tar.xz"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"Linux_Debian": {
|
"Linux_Debian": {
|
||||||
@@ -1933,6 +2139,20 @@
|
|||||||
"8.8.3": {
|
"8.8.3": {
|
||||||
"viArch": {
|
"viArch": {
|
||||||
"A_64": {
|
"A_64": {
|
||||||
|
"Linux_Alpine": {
|
||||||
|
"unknown_versioning": {
|
||||||
|
"dlHash": "77a990d76dc10abe2ed19e5fcfef4095f0e9819d4ab84bec6d82f00dd85812a7",
|
||||||
|
"dlSubdir": "ghc-8.8.3",
|
||||||
|
"dlUri": "https://github.com/redneb/ghc-alt-libc/releases/download/ghc-8.8.3-musl/ghc-8.8.3-x86_64-unknown-linux-musl.tar.xz"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"FreeBSD": {
|
||||||
|
"unknown_versioning": {
|
||||||
|
"dlHash": "569719075b4d14b3875a899df522090ae31e6fe085e6dffe518e875b09a2f0be",
|
||||||
|
"dlSubdir": "ghc-8.8.3",
|
||||||
|
"dlUri": "https://files.hasufell.de/ghc/ghc-8.8.3-x86_64-portbld-freebsd.tar.xz"
|
||||||
|
}
|
||||||
|
},
|
||||||
"Linux_Debian": {
|
"Linux_Debian": {
|
||||||
"unknown_versioning": {
|
"unknown_versioning": {
|
||||||
"dlHash": "42fde2ef5a143e1e6b47ae8875162ea2d4d54b06f0f7fa32ee4f0eb86f2be7ad",
|
"dlHash": "42fde2ef5a143e1e6b47ae8875162ea2d4d54b06f0f7fa32ee4f0eb86f2be7ad",
|
||||||
@@ -2013,6 +2233,13 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"A_32": {
|
"A_32": {
|
||||||
|
"Linux_Alpine": {
|
||||||
|
"unknown_versioning": {
|
||||||
|
"dlHash": "7a5f41646d06777e75636291a1855d60a0984552bbdf33c3d107565d302f38a4",
|
||||||
|
"dlSubdir": "ghc-8.8.3",
|
||||||
|
"dlUri": "https://github.com/redneb/ghc-alt-libc/releases/download/ghc-8.8.3-musl/ghc-8.8.3-i386-unknown-linux-musl.tar.xz"
|
||||||
|
}
|
||||||
|
},
|
||||||
"Linux_Debian": {
|
"Linux_Debian": {
|
||||||
"unknown_versioning": {
|
"unknown_versioning": {
|
||||||
"dlHash": "441e2c7a4fc83ebf179712bd939b555cda7c6633545b7c8ac38049f9d85003ae",
|
"dlHash": "441e2c7a4fc83ebf179712bd939b555cda7c6633545b7c8ac38049f9d85003ae",
|
||||||
@@ -2050,6 +2277,7 @@
|
|||||||
},
|
},
|
||||||
"viChangeLog": "https://downloads.haskell.org/~ghc/8.8.3/docs/html/users_guide/8.8.3-notes.html",
|
"viChangeLog": "https://downloads.haskell.org/~ghc/8.8.3/docs/html/users_guide/8.8.3-notes.html",
|
||||||
"viTags": [
|
"viTags": [
|
||||||
|
"Recommended",
|
||||||
"base-4.13.0.0"
|
"base-4.13.0.0"
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
@@ -2065,6 +2293,13 @@
|
|||||||
"dlUri": "https://downloads.haskell.org/~cabal/cabal-install-3.0.0.0/cabal-install-3.0.0.0-x86_64-alpine-linux-musl.tar.xz"
|
"dlUri": "https://downloads.haskell.org/~cabal/cabal-install-3.0.0.0/cabal-install-3.0.0.0-x86_64-alpine-linux-musl.tar.xz"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"FreeBSD": {
|
||||||
|
"unknown_versioning": {
|
||||||
|
"dlHash": "2240842ab2ae7b955feb8b526aba1c7991248c803383107adf39990441294d2a",
|
||||||
|
"dlSubdir": null,
|
||||||
|
"dlUri": "https://downloads.haskell.org/~cabal/cabal-install-3.0.0.0/cabal-install-3.0.0.0-x86_64-portbld-freebsd.tar.xz"
|
||||||
|
}
|
||||||
|
},
|
||||||
"Darwin": {
|
"Darwin": {
|
||||||
"unknown_versioning": {
|
"unknown_versioning": {
|
||||||
"dlHash": "d4857e068560515e4cbb0e8ca124c370e07892f2a28804d87152834e5fe2b845",
|
"dlHash": "d4857e068560515e4cbb0e8ca124c370e07892f2a28804d87152834e5fe2b845",
|
||||||
@@ -2115,6 +2350,13 @@
|
|||||||
"dlUri": "https://downloads.haskell.org/~cabal/cabal-install-3.2.0.0/cabal-install-3.2.0.0-x86_64-alpine-linux-musl.tar.xz"
|
"dlUri": "https://downloads.haskell.org/~cabal/cabal-install-3.2.0.0/cabal-install-3.2.0.0-x86_64-alpine-linux-musl.tar.xz"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"FreeBSD": {
|
||||||
|
"unknown_versioning": {
|
||||||
|
"dlHash": "f1e35151cca91541b0fb4bdb3ed18f3c348038eab751845ad19c11307d66c273",
|
||||||
|
"dlSubdir": null,
|
||||||
|
"dlUri": "https://downloads.haskell.org/~cabal/cabal-install-3.2.0.0/cabal-install-3.2.0.0-x86_64-portbld-freebsd.tar.xz"
|
||||||
|
}
|
||||||
|
},
|
||||||
"Darwin": {
|
"Darwin": {
|
||||||
"unknown_versioning": {
|
"unknown_versioning": {
|
||||||
"dlHash": "9197c17d2ece0f934f5b33e323cfcaf486e4681952687bc3d249488ce3cbe0e9",
|
"dlHash": "9197c17d2ece0f934f5b33e323cfcaf486e4681952687bc3d249488ce3cbe0e9",
|
||||||
@@ -2168,6 +2410,13 @@
|
|||||||
"dlUri": "https://downloads.haskell.org/~cabal/cabal-install-2.4.1.0/cabal-install-2.4.1.0-x86_64-alpine-linux-musl.tar.xz"
|
"dlUri": "https://downloads.haskell.org/~cabal/cabal-install-2.4.1.0/cabal-install-2.4.1.0-x86_64-alpine-linux-musl.tar.xz"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"FreeBSD": {
|
||||||
|
"unknown_versioning": {
|
||||||
|
"dlHash": "33b7d37ea0688c93436eac9ec139d9967687875aa1fa13f2bb73bf05a9a59a1d",
|
||||||
|
"dlSubdir": null,
|
||||||
|
"dlUri": "https://downloads.haskell.org/~cabal/cabal-install-2.4.1.0/cabal-install-2.4.1.0-x86_64-portbld-freebsd.tar.xz"
|
||||||
|
}
|
||||||
|
},
|
||||||
"Darwin": {
|
"Darwin": {
|
||||||
"unknown_versioning": {
|
"unknown_versioning": {
|
||||||
"dlHash": "56361cf4b0d920fe23174751fea1fb82a8e1ce522bd9706a3fbe47a72e458c9c",
|
"dlHash": "56361cf4b0d920fe23174751fea1fb82a8e1ce522bd9706a3fbe47a72e458c9c",
|
||||||
@@ -2203,30 +2452,37 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"GHCup": {
|
"GHCup": {
|
||||||
"0.1.7": {
|
"0.1.6": {
|
||||||
"viArch": {
|
"viArch": {
|
||||||
"A_64": {
|
"A_64": {
|
||||||
|
"FreeBSD": {
|
||||||
|
"unknown_versioning": {
|
||||||
|
"dlHash": "6bbfb1047691ff3ae9249e8805cf9f37bab30a008dae130cb2a4b3aa5253e6e5",
|
||||||
|
"dlSubdir": null,
|
||||||
|
"dlUri": "https://downloads.haskell.org/~ghcup/0.1.6/x86_64-portbld-freebsd-ghcup-0.1.6"
|
||||||
|
}
|
||||||
|
},
|
||||||
"Darwin": {
|
"Darwin": {
|
||||||
"unknown_versioning": {
|
"unknown_versioning": {
|
||||||
"dlHash": "00b2c04755d2b40e568afbfc2a485c36697fc55f210eae0d4cd80413c71032ed",
|
"dlHash": "1e025e66d7f7b75d94f17a7da6120efd7e2df918a8eac88c4711ed11d2aac4ec",
|
||||||
"dlSubdir": null,
|
"dlSubdir": null,
|
||||||
"dlUri": "https://downloads.haskell.org/~ghcup/0.1.7/x86_64-apple-darwin-ghcup-0.1.7"
|
"dlUri": "https://downloads.haskell.org/~ghcup/0.1.6/x86_64-apple-darwin-ghcup-0.1.6"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"Linux_UnknownLinux": {
|
"Linux_UnknownLinux": {
|
||||||
"unknown_versioning": {
|
"unknown_versioning": {
|
||||||
"dlHash": "a1d1e8b3c2b00186957c927d09f2cfb457bbfa65c1ab562ff5683963e205bdd5",
|
"dlHash": "bdbec0cdf4c8511c4082dd83993d15034c0fbcb5722ecf418c1cee40667da8af",
|
||||||
"dlSubdir": null,
|
"dlSubdir": null,
|
||||||
"dlUri": "https://downloads.haskell.org/~ghcup/0.1.7/x86_64-linux-ghcup-0.1.7"
|
"dlUri": "https://downloads.haskell.org/~ghcup/0.1.6/x86_64-linux-ghcup-0.1.6"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"A_32": {
|
"A_32": {
|
||||||
"Linux_UnknownLinux": {
|
"Linux_UnknownLinux": {
|
||||||
"unknown_versioning": {
|
"unknown_versioning": {
|
||||||
"dlHash": "1651cc196e4fdd18995054edebe109833535961f0e2b0d505f1714e83f3e8808",
|
"dlHash": "0366ed6c00862c3c002cdefc3e37523ad80e655387956c7ab58b268aaa6fae5d",
|
||||||
"dlSubdir": null,
|
"dlSubdir": null,
|
||||||
"dlUri": "https://downloads.haskell.org/~ghcup/0.1.7/i386-linux-ghcup-0.1.7"
|
"dlUri": "https://downloads.haskell.org/~ghcup/0.1.6/i386-linux-ghcup-0.1.6"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
29
ghcup.cabal
29
ghcup.cabal
@@ -1,6 +1,6 @@
|
|||||||
cabal-version: 3.0
|
cabal-version: 3.0
|
||||||
name: ghcup
|
name: ghcup
|
||||||
version: 0.1.7
|
version: 0.1.6
|
||||||
synopsis: ghc toolchain installer as an exe/library
|
synopsis: ghc toolchain installer as an exe/library
|
||||||
description:
|
description:
|
||||||
A rewrite of the shell script ghcup, for providing
|
A rewrite of the shell script ghcup, for providing
|
||||||
@@ -105,11 +105,14 @@ common hpath-io
|
|||||||
common hpath-posix
|
common hpath-posix
|
||||||
build-depends: hpath-posix >=0.13.2
|
build-depends: hpath-posix >=0.13.2
|
||||||
|
|
||||||
common http-io-streams
|
common http-client
|
||||||
build-depends: http-io-streams >=0.1.2.0
|
build-depends: http-client >=0.7.1
|
||||||
|
|
||||||
common io-streams
|
common http-client-openssl
|
||||||
build-depends: io-streams >=1.5
|
build-depends: http-client-openssl >=0.3.1.0
|
||||||
|
|
||||||
|
common http-types
|
||||||
|
build-depends: http-types >=0.12.3
|
||||||
|
|
||||||
common libarchive
|
common libarchive
|
||||||
build-depends: libarchive >= 2.2.5.0
|
build-depends: libarchive >= 2.2.5.0
|
||||||
@@ -120,6 +123,9 @@ common lzma
|
|||||||
common megaparsec
|
common megaparsec
|
||||||
build-depends: megaparsec >=8.0.0
|
build-depends: megaparsec >=8.0.0
|
||||||
|
|
||||||
|
common monad-control
|
||||||
|
build-depends: monad-control >=1.0.2.3
|
||||||
|
|
||||||
common monad-logger
|
common monad-logger
|
||||||
build-depends: monad-logger >=0.3.31
|
build-depends: monad-logger >=0.3.31
|
||||||
|
|
||||||
@@ -189,6 +195,9 @@ common time
|
|||||||
common transformers
|
common transformers
|
||||||
build-depends: transformers >=0.5
|
build-depends: transformers >=0.5
|
||||||
|
|
||||||
|
common transformers-base
|
||||||
|
build-depends: transformers-base >=0.4.4
|
||||||
|
|
||||||
common os-release
|
common os-release
|
||||||
build-depends: os-release >=1.0.0
|
build-depends: os-release >=1.0.0
|
||||||
|
|
||||||
@@ -263,6 +272,7 @@ library
|
|||||||
, hpath-posix
|
, hpath-posix
|
||||||
, lzma
|
, lzma
|
||||||
, megaparsec
|
, megaparsec
|
||||||
|
, monad-control
|
||||||
, monad-logger
|
, monad-logger
|
||||||
, mtl
|
, mtl
|
||||||
, optics
|
, optics
|
||||||
@@ -282,6 +292,7 @@ library
|
|||||||
, text
|
, text
|
||||||
, time
|
, time
|
||||||
, transformers
|
, transformers
|
||||||
|
, transformers-base
|
||||||
, os-release
|
, os-release
|
||||||
, unix
|
, unix
|
||||||
, unix-bytestring
|
, unix-bytestring
|
||||||
@@ -299,7 +310,6 @@ library
|
|||||||
GHCup.Data.GHCupInfo
|
GHCup.Data.GHCupInfo
|
||||||
GHCup.Data.ToolRequirements
|
GHCup.Data.ToolRequirements
|
||||||
GHCup.Download
|
GHCup.Download
|
||||||
GHCup.Download.Utils
|
|
||||||
GHCup.Errors
|
GHCup.Errors
|
||||||
GHCup.Platform
|
GHCup.Platform
|
||||||
GHCup.Requirements
|
GHCup.Requirements
|
||||||
@@ -323,10 +333,11 @@ library
|
|||||||
if flag(internal-downloader)
|
if flag(internal-downloader)
|
||||||
import:
|
import:
|
||||||
HsOpenSSL
|
HsOpenSSL
|
||||||
, http-io-streams
|
, http-client
|
||||||
, io-streams
|
, http-client-openssl
|
||||||
|
, http-types
|
||||||
, terminal-progress-bar
|
, terminal-progress-bar
|
||||||
exposed-modules: GHCup.Download.IOStreams
|
exposed-modules: GHCup.Download.Internal
|
||||||
cpp-options: -DINTERNAL_DOWNLOADER
|
cpp-options: -DINTERNAL_DOWNLOADER
|
||||||
|
|
||||||
if flag(tar)
|
if flag(tar)
|
||||||
|
|||||||
@@ -137,18 +137,13 @@ installGHCBin bDls ver pfreq@(PlatformRequest {..}) = do
|
|||||||
lift $ $(logInfo) "Installing GHC (this may take a while)"
|
lift $ $(logInfo) "Installing GHC (this may take a while)"
|
||||||
lEM $ execLogged "./configure"
|
lEM $ execLogged "./configure"
|
||||||
False
|
False
|
||||||
(["--prefix=" <> toFilePath inst] ++ alpineArgs)
|
["--prefix=" <> toFilePath inst]
|
||||||
[rel|ghc-configure|]
|
[rel|ghc-configure|]
|
||||||
(Just path)
|
(Just path)
|
||||||
Nothing
|
Nothing
|
||||||
lEM $ make ["install"] (Just path)
|
lEM $ make ["install"] (Just path)
|
||||||
pure ()
|
pure ()
|
||||||
|
|
||||||
alpineArgs
|
|
||||||
| ver >= [vver|8.2.2|]
|
|
||||||
, Linux Alpine <- _rPlatform = ["--disable-ld-override"]
|
|
||||||
| otherwise = []
|
|
||||||
|
|
||||||
|
|
||||||
installCabalBin :: ( MonadMask m
|
installCabalBin :: ( MonadMask m
|
||||||
, MonadCatch m
|
, MonadCatch m
|
||||||
|
|||||||
@@ -50,6 +50,24 @@ ghc_7103_64_darwin = DownloadInfo
|
|||||||
(Just [rel|ghc-7.10.3|])
|
(Just [rel|ghc-7.10.3|])
|
||||||
"80893e367e8318105f7db2064adf202e3d96b1f014e792b73e92f2cacf0b757a"
|
"80893e367e8318105f7db2064adf202e3d96b1f014e792b73e92f2cacf0b757a"
|
||||||
|
|
||||||
|
ghc_7103_64_freebsd :: DownloadInfo
|
||||||
|
ghc_7103_64_freebsd = DownloadInfo
|
||||||
|
[uri|https://downloads.haskell.org/~ghc/7.10.3/ghc-7.10.3-x86_64-portbld-freebsd.tar.bz2|]
|
||||||
|
(Just [rel|ghc-7.10.3|])
|
||||||
|
"2aa396edd2bb651f4bc7eef7a396913ea24923de5aafdc76df6295333e487e48"
|
||||||
|
|
||||||
|
ghc_7103_32_freebsd :: DownloadInfo
|
||||||
|
ghc_7103_32_freebsd = DownloadInfo
|
||||||
|
[uri|https://downloads.haskell.org/~ghc/7.10.3/ghc-7.10.3-i386-portbld-freebsd.tar.bz2|]
|
||||||
|
(Just [rel|ghc-7.10.3|])
|
||||||
|
"3dde05577c6f94dcb0ba201ebd53ab88553bbc9a3aa8e72237162ed7a9d588a3"
|
||||||
|
|
||||||
|
ghc_7103_64_musl :: DownloadInfo
|
||||||
|
ghc_7103_64_musl = DownloadInfo
|
||||||
|
[uri|https://github.com/redneb/ghc-alt-libc/releases/download/ghc-7.10.3-musl/ghc-7.10.3-x86_64-unknown-linux-musl.tar.xz|]
|
||||||
|
(Just [rel|ghc-7.10.3|])
|
||||||
|
"8b83dfa8b85ba45e24768337254e6eb23c0855df1a5168671a3a8090b6d0964e"
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@@ -82,23 +100,29 @@ ghc_802_32_deb8 = DownloadInfo
|
|||||||
(Just [rel|ghc-8.0.2|])
|
(Just [rel|ghc-8.0.2|])
|
||||||
"818621342a2161b8afcc995a0765816bb40aefbfa1db2c8a7d59c04d8b18228a"
|
"818621342a2161b8afcc995a0765816bb40aefbfa1db2c8a7d59c04d8b18228a"
|
||||||
|
|
||||||
|
ghc_802_64_freebsd :: DownloadInfo
|
||||||
|
ghc_802_64_freebsd = DownloadInfo
|
||||||
|
[uri|https://downloads.haskell.org/~ghc/8.0.2/ghc-8.0.2-x86_64-portbld-freebsd.tar.xz|]
|
||||||
|
(Just [rel|ghc-8.0.2|])
|
||||||
|
"b36a20e5cae24d70bbb6116ae486f21811e9384f15d3892d260f02fba3e3bb8c"
|
||||||
|
|
||||||
ghc_802_64_darwin :: DownloadInfo
|
ghc_802_64_darwin :: DownloadInfo
|
||||||
ghc_802_64_darwin = DownloadInfo
|
ghc_802_64_darwin = DownloadInfo
|
||||||
[uri|https://downloads.haskell.org/~ghc/8.0.2/ghc-8.0.2-x86_64-apple-darwin.tar.xz|]
|
[uri|https://downloads.haskell.org/~ghc/8.0.2/ghc-8.0.2-x86_64-apple-darwin.tar.xz|]
|
||||||
(Just [rel|ghc-8.0.2|])
|
(Just [rel|ghc-8.0.2|])
|
||||||
"ff50a2df9f002f33b9f09717ebf5ec5a47906b9b65cc57b1f9849f8b2e06788d"
|
"ff50a2df9f002f33b9f09717ebf5ec5a47906b9b65cc57b1f9849f8b2e06788d"
|
||||||
|
|
||||||
ghc_802_64_alpine :: DownloadInfo
|
ghc_802_64_musl :: DownloadInfo
|
||||||
ghc_802_64_alpine = DownloadInfo
|
ghc_802_64_musl = DownloadInfo
|
||||||
[uri|https://files.hasufell.de/ghc/ghc-8.0.2-x86_64-alpine-linux.tar.xz|]
|
[uri|https://github.com/redneb/ghc-alt-libc/releases/download/ghc-8.0.2-musl/ghc-8.0.2-x86_64-unknown-linux-musl.tar.xz|]
|
||||||
(Just [rel|ghc-8.0.2|])
|
(Just [rel|ghc-8.0.2|])
|
||||||
"517783b660a27ebf95b2568d47292fd633d5f9a4de4c80ad1ccf05e1b9d7313f"
|
"7f9ef3e048ca6f2a2a589e6c168d8c7699fbe32b1b39a9d7c72eff9b26e90c67"
|
||||||
|
|
||||||
ghc_802_32_alpine :: DownloadInfo
|
ghc_802_32_musl :: DownloadInfo
|
||||||
ghc_802_32_alpine = DownloadInfo
|
ghc_802_32_musl = DownloadInfo
|
||||||
[uri|https://files.hasufell.de/ghc/ghc-8.0.2-i386-alpine-linux.tar.xz|]
|
[uri|https://github.com/redneb/ghc-alt-libc/releases/download/ghc-8.0.2-musl/ghc-8.0.2-i386-unknown-linux-musl.tar.xz|]
|
||||||
(Just [rel|ghc-8.0.2|])
|
(Just [rel|ghc-8.0.2|])
|
||||||
"b4cd12a1048b2fff2f23c9eec0dd3a1174d54d017f8d79ec79af4534118e6881"
|
"815c68181013cd3f4dc748ddb5502a5e7a1a4011ba57d8eff6d66da411c72e84"
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@@ -144,17 +168,17 @@ ghc_822_64_darwin = DownloadInfo
|
|||||||
(Just [rel|ghc-8.2.2|])
|
(Just [rel|ghc-8.2.2|])
|
||||||
"f90fcf62f7e0936a6dfc3601cf663729bfe9bbf85097d2d75f0a16f8c2e95c27"
|
"f90fcf62f7e0936a6dfc3601cf663729bfe9bbf85097d2d75f0a16f8c2e95c27"
|
||||||
|
|
||||||
ghc_822_32_alpine :: DownloadInfo
|
ghc_822_64_freebsd10 :: DownloadInfo
|
||||||
ghc_822_32_alpine = DownloadInfo
|
ghc_822_64_freebsd10 = DownloadInfo
|
||||||
[uri|https://files.hasufell.de/ghc/ghc-8.2.2-i386-alpine-linux.tar.xz|]
|
[uri|https://downloads.haskell.org/~ghc/8.2.2/ghc-8.2.2-x86_64-portbld10_3-freebsd.tar.xz|]
|
||||||
(Just [rel|ghc-8.2.2|])
|
(Just [rel|ghc-8.2.2|])
|
||||||
"467534c32552cfd318753112dbc70af003693aad4b0081f2a07e61f5b5ea2c22"
|
"9e99aaeaec4b2c6d660d80246c0d4dbd41fda88f1eb7a908b29dc8fa8d663949"
|
||||||
|
|
||||||
ghc_822_64_alpine :: DownloadInfo
|
ghc_822_64_freebsd11 :: DownloadInfo
|
||||||
ghc_822_64_alpine = DownloadInfo
|
ghc_822_64_freebsd11 = DownloadInfo
|
||||||
[uri|https://files.hasufell.de/ghc/ghc-8.2.2-x86_64-alpine-linux.tar.xz|]
|
[uri|https://downloads.haskell.org/~ghc/8.2.2/ghc-8.2.2-x86_64-portbld11-freebsd.tar.xz|]
|
||||||
(Just [rel|ghc-8.2.2|])
|
(Just [rel|ghc-8.2.2|])
|
||||||
"adcf3a320a3c402aba07ae9586990dc3c0b550e96aeffb1b9e194313d3ba716d"
|
"cd351c704b92b9af23994024df07de8ca7090ea7675d5c8b14b2be857a46d804"
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@@ -189,7 +213,23 @@ ghc_841_64_darwin = DownloadInfo
|
|||||||
(Just [rel|ghc-8.4.1|])
|
(Just [rel|ghc-8.4.1|])
|
||||||
"d774e39f3a0105843efd06709b214ee332c30203e6c5902dd6ed45e36285f9b7"
|
"d774e39f3a0105843efd06709b214ee332c30203e6c5902dd6ed45e36285f9b7"
|
||||||
|
|
||||||
|
ghc_841_64_freebsd :: DownloadInfo
|
||||||
|
ghc_841_64_freebsd = DownloadInfo
|
||||||
|
[uri|https://downloads.haskell.org/~ghc/8.4.1/ghc-8.4.1-x86_64-portbld11-freebsd.tar.xz|]
|
||||||
|
(Just [rel|ghc-8.4.1|])
|
||||||
|
"e748daec098445c6190090fe32bb2817a1140553be5acd2188e1af05ad24e5aa"
|
||||||
|
|
||||||
|
ghc_841_64_musl :: DownloadInfo
|
||||||
|
ghc_841_64_musl = DownloadInfo
|
||||||
|
[uri|https://github.com/redneb/ghc-alt-libc/releases/download/ghc-8.4.1-musl/ghc-8.4.1-x86_64-unknown-linux-musl.tar.xz|]
|
||||||
|
(Just [rel|ghc-8.4.1|])
|
||||||
|
"82d4ea6247a91e7e76065c0cdf66eec813ab679c1f24de0fb92c89bba3ef27f2"
|
||||||
|
|
||||||
|
ghc_841_32_musl :: DownloadInfo
|
||||||
|
ghc_841_32_musl = DownloadInfo
|
||||||
|
[uri|https://github.com/redneb/ghc-alt-libc/releases/download/ghc-8.4.1-musl/ghc-8.4.1-i386-unknown-linux-musl.tar.xz|]
|
||||||
|
(Just [rel|ghc-8.4.1|])
|
||||||
|
"e5feee34b58c1a1cd6c270fbe696c178a4649675398f4e0d56a4bfad9641b736"
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@@ -229,6 +269,23 @@ ghc_842_64_darwin = DownloadInfo
|
|||||||
(Just [rel|ghc-8.4.2|])
|
(Just [rel|ghc-8.4.2|])
|
||||||
"87469222042b9ac23f9db216a8d4e5107297bdbbb99df71eb4d9e7208455def2"
|
"87469222042b9ac23f9db216a8d4e5107297bdbbb99df71eb4d9e7208455def2"
|
||||||
|
|
||||||
|
ghc_842_64_freebsd :: DownloadInfo
|
||||||
|
ghc_842_64_freebsd = DownloadInfo
|
||||||
|
[uri|https://downloads.haskell.org/~ghc/8.4.2/ghc-8.4.2-x86_64-portbld-freebsd.tar.xz|]
|
||||||
|
(Just [rel|ghc-8.4.2|])
|
||||||
|
"e9ed417fdf94c2ff2c6e344ed16f332bf6b591511f6442c0d9ea94854882b66c"
|
||||||
|
|
||||||
|
ghc_842_64_musl :: DownloadInfo
|
||||||
|
ghc_842_64_musl = DownloadInfo
|
||||||
|
[uri|https://github.com/redneb/ghc-alt-libc/releases/download/ghc-8.4.2-musl/ghc-8.4.2-x86_64-unknown-linux-musl.tar.xz|]
|
||||||
|
(Just [rel|ghc-8.4.2|])
|
||||||
|
"3ebdb6e8001679e8722bd75a47805f1b3c1b25b37c4d237a7aaa4d66162f699f"
|
||||||
|
|
||||||
|
ghc_842_32_musl :: DownloadInfo
|
||||||
|
ghc_842_32_musl = DownloadInfo
|
||||||
|
[uri|https://github.com/redneb/ghc-alt-libc/releases/download/ghc-8.4.2-musl/ghc-8.4.2-i386-unknown-linux-musl.tar.xz|]
|
||||||
|
(Just [rel|ghc-8.4.2|])
|
||||||
|
"a43ac57214764717f0ffe515ef47b84e938f0a4fa8ff875773d6ba315b940835"
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@@ -267,6 +324,17 @@ ghc_843_64_darwin = DownloadInfo
|
|||||||
(Just [rel|ghc-8.4.3|])
|
(Just [rel|ghc-8.4.3|])
|
||||||
"af0b455f6c46b9802b4b48dad996619cfa27cc6e2bf2ce5532387b4a8c00aa64"
|
"af0b455f6c46b9802b4b48dad996619cfa27cc6e2bf2ce5532387b4a8c00aa64"
|
||||||
|
|
||||||
|
ghc_843_64_musl :: DownloadInfo
|
||||||
|
ghc_843_64_musl = DownloadInfo
|
||||||
|
[uri|https://github.com/redneb/ghc-alt-libc/releases/download/ghc-8.4.3-musl/ghc-8.4.3-x86_64-unknown-linux-musl.tar.xz|]
|
||||||
|
(Just [rel|ghc-8.4.3|])
|
||||||
|
"0f05c67e3fd29a3f505abb77e9c39349d312cdc1a566263b8f4b227d085906bc"
|
||||||
|
|
||||||
|
ghc_843_32_musl :: DownloadInfo
|
||||||
|
ghc_843_32_musl = DownloadInfo
|
||||||
|
[uri|https://github.com/redneb/ghc-alt-libc/releases/download/ghc-8.4.3-musl/ghc-8.4.3-i386-unknown-linux-musl.tar.xz|]
|
||||||
|
(Just [rel|ghc-8.4.3|])
|
||||||
|
"3a9a1ceb8eef234023fc36600245a03772bcb46b2abac41f6394104feaec8c43"
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@@ -312,17 +380,23 @@ ghc_844_64_darwin = DownloadInfo
|
|||||||
(Just [rel|ghc-8.4.4|])
|
(Just [rel|ghc-8.4.4|])
|
||||||
"28dc89ebd231335337c656f4c5ead2ae2a1acc166aafe74a14f084393c5ef03a"
|
"28dc89ebd231335337c656f4c5ead2ae2a1acc166aafe74a14f084393c5ef03a"
|
||||||
|
|
||||||
ghc_844_32_alpine :: DownloadInfo
|
ghc_844_64_freebsd :: DownloadInfo
|
||||||
ghc_844_32_alpine = DownloadInfo
|
ghc_844_64_freebsd = DownloadInfo
|
||||||
[uri|https://files.hasufell.de/ghc/ghc-8.4.4-i386-alpine-linux.tar.xz|]
|
[uri|https://downloads.haskell.org/~ghc/8.4.4/ghc-8.4.4-x86_64-portbld-freebsd11.tar.xz|]
|
||||||
(Just [rel|ghc-8.4.4|])
|
(Just [rel|ghc-8.4.4|])
|
||||||
"892888d388ef5c9cadf5cfba1146d62237c25b9b066fb62fee940b2b285fd308"
|
"44fbd142d1c355d6110595c59c760e2c73866ff9259ec85ebf814edb244d1940"
|
||||||
|
|
||||||
ghc_844_64_alpine :: DownloadInfo
|
ghc_844_64_musl :: DownloadInfo
|
||||||
ghc_844_64_alpine = DownloadInfo
|
ghc_844_64_musl = DownloadInfo
|
||||||
[uri|https://files.hasufell.de/ghc/ghc-8.4.4-x86_64-alpine-linux.tar.xz|]
|
[uri|https://github.com/redneb/ghc-alt-libc/releases/download/ghc-8.4.4-musl/ghc-8.4.4-x86_64-unknown-linux-musl.tar.xz|]
|
||||||
(Just [rel|ghc-8.4.4|])
|
(Just [rel|ghc-8.4.4|])
|
||||||
"336affff8314d3dc5e85d9c09015ae2ba8a7658b459c8c8ae77ecaa551a56ae7"
|
"e15f1cf02adb2cfb77a202050300a92f61456c6e1e90b543fec82d99da893a69"
|
||||||
|
|
||||||
|
ghc_844_32_musl :: DownloadInfo
|
||||||
|
ghc_844_32_musl = DownloadInfo
|
||||||
|
[uri|https://github.com/redneb/ghc-alt-libc/releases/download/ghc-8.4.4-musl/ghc-8.4.4-i386-unknown-linux-musl.tar.xz|]
|
||||||
|
(Just [rel|ghc-8.4.4|])
|
||||||
|
"356f49b1acee0b0267fd8ca687aede14d43cee1f231d7f8a37525d50f07e1428"
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@@ -361,6 +435,23 @@ ghc_861_64_darwin = DownloadInfo
|
|||||||
(Just [rel|ghc-8.6.1|])
|
(Just [rel|ghc-8.6.1|])
|
||||||
"9692cdfd202b0e039ea0c3dde5dbf653736c836ca1df46504b179b572100808c"
|
"9692cdfd202b0e039ea0c3dde5dbf653736c836ca1df46504b179b572100808c"
|
||||||
|
|
||||||
|
ghc_861_64_freebsd :: DownloadInfo
|
||||||
|
ghc_861_64_freebsd = DownloadInfo
|
||||||
|
[uri|https://downloads.haskell.org/~ghc/8.6.1/ghc-8.6.1-x86_64-portbld-freebsd.tar.xz|]
|
||||||
|
(Just [rel|ghc-8.6.1|])
|
||||||
|
"51403b054a3a649039ac988e1d1112561f96750bfced63df864091a3fab36f08"
|
||||||
|
|
||||||
|
ghc_861_64_musl :: DownloadInfo
|
||||||
|
ghc_861_64_musl = DownloadInfo
|
||||||
|
[uri|https://github.com/redneb/ghc-alt-libc/releases/download/ghc-8.6.1-musl/ghc-8.6.1-x86_64-unknown-linux-musl.tar.xz|]
|
||||||
|
(Just [rel|ghc-8.6.1|])
|
||||||
|
"2668e12facfa9083150b01b1137693cb3de266a6f8ac8c6b44a2be3826c73177"
|
||||||
|
|
||||||
|
ghc_861_32_musl :: DownloadInfo
|
||||||
|
ghc_861_32_musl = DownloadInfo
|
||||||
|
[uri|https://github.com/redneb/ghc-alt-libc/releases/download/ghc-8.6.1-musl/ghc-8.6.1-i386-unknown-linux-musl.tar.xz|]
|
||||||
|
(Just [rel|ghc-8.6.1|])
|
||||||
|
"12b9b5b78be94b57d301b2a31eda145928110fd103fbbcc1e6e6966237a30ed2"
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@@ -393,6 +484,17 @@ ghc_862_64_darwin = DownloadInfo
|
|||||||
(Just [rel|ghc-8.6.2|])
|
(Just [rel|ghc-8.6.2|])
|
||||||
"8ec46a25872226dd7e5cf7271e3f3450c05f32144b96e6b9cb44cc4079db50dc"
|
"8ec46a25872226dd7e5cf7271e3f3450c05f32144b96e6b9cb44cc4079db50dc"
|
||||||
|
|
||||||
|
ghc_862_64_musl :: DownloadInfo
|
||||||
|
ghc_862_64_musl = DownloadInfo
|
||||||
|
[uri|https://github.com/redneb/ghc-alt-libc/releases/download/ghc-8.6.2-musl/ghc-8.6.2-x86_64-unknown-linux-musl.tar.xz|]
|
||||||
|
(Just [rel|ghc-8.6.2|])
|
||||||
|
"5be9f98c25c49dbfb65223e2642335d4a45220f0c4044c8af70bbcaebe688467"
|
||||||
|
|
||||||
|
ghc_862_32_musl :: DownloadInfo
|
||||||
|
ghc_862_32_musl = DownloadInfo
|
||||||
|
[uri|https://github.com/redneb/ghc-alt-libc/releases/download/ghc-8.6.2-musl/ghc-8.6.2-i386-unknown-linux-musl.tar.xz|]
|
||||||
|
(Just [rel|ghc-8.6.2|])
|
||||||
|
"a1add75822258fbb6e57ad049919ef5f757bac10d3c7a6eaeee50d2521ffeb4e"
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@@ -438,6 +540,24 @@ ghc_863_64_darwin = DownloadInfo
|
|||||||
(Just [rel|ghc-8.6.3|])
|
(Just [rel|ghc-8.6.3|])
|
||||||
"79d069a1a7d74cfdd7ac2a2711c45d3ddc6265b988a0cefa342714b24f997fc1"
|
"79d069a1a7d74cfdd7ac2a2711c45d3ddc6265b988a0cefa342714b24f997fc1"
|
||||||
|
|
||||||
|
ghc_863_64_freebsd :: DownloadInfo
|
||||||
|
ghc_863_64_freebsd = DownloadInfo
|
||||||
|
[uri|https://downloads.haskell.org/~ghc/8.6.3/ghc-8.6.3-x86_64-portbld-freebsd.tar.xz|]
|
||||||
|
(Just [rel|ghc-8.6.3|])
|
||||||
|
"bc2419fa180f8a7808c49775987866435995df9bdd9ce08bcd38352d63ba6031"
|
||||||
|
|
||||||
|
ghc_863_64_musl :: DownloadInfo
|
||||||
|
ghc_863_64_musl = DownloadInfo
|
||||||
|
[uri|https://github.com/redneb/ghc-alt-libc/releases/download/ghc-8.6.3-musl/ghc-8.6.3-x86_64-unknown-linux-musl.tar.xz|]
|
||||||
|
(Just [rel|ghc-8.6.3|])
|
||||||
|
"274f7ea959e6f1c830b33efd462ab9d0ff32d1cb5be051a2a318464d05d674dd"
|
||||||
|
|
||||||
|
ghc_863_32_musl :: DownloadInfo
|
||||||
|
ghc_863_32_musl = DownloadInfo
|
||||||
|
[uri|https://github.com/redneb/ghc-alt-libc/releases/download/ghc-8.6.3-musl/ghc-8.6.3-i386-unknown-linux-musl.tar.xz|]
|
||||||
|
(Just [rel|ghc-8.6.3|])
|
||||||
|
"dc0b53a7f0e52232930abcfad427ccd0917c90797203fbc7b5d72f5335d85a7d"
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@@ -476,6 +596,17 @@ ghc_864_64_darwin = DownloadInfo
|
|||||||
(Just [rel|ghc-8.6.4|])
|
(Just [rel|ghc-8.6.4|])
|
||||||
"cccb58f142fe41b601d73690809f6089f7715b6a50a09aa3d0104176ab4db09e"
|
"cccb58f142fe41b601d73690809f6089f7715b6a50a09aa3d0104176ab4db09e"
|
||||||
|
|
||||||
|
ghc_864_64_musl :: DownloadInfo
|
||||||
|
ghc_864_64_musl = DownloadInfo
|
||||||
|
[uri|https://github.com/redneb/ghc-alt-libc/releases/download/ghc-8.6.4-musl/ghc-8.6.4-x86_64-unknown-linux-musl.tar.xz|]
|
||||||
|
(Just [rel|ghc-8.6.4|])
|
||||||
|
"ec73167bae1a173a9af07612df5fa1289e924f13ed9241339cb5617337cb2979"
|
||||||
|
|
||||||
|
ghc_864_32_musl :: DownloadInfo
|
||||||
|
ghc_864_32_musl = DownloadInfo
|
||||||
|
[uri|https://github.com/redneb/ghc-alt-libc/releases/download/ghc-8.6.4-musl/ghc-8.6.4-i386-unknown-linux-musl.tar.xz|]
|
||||||
|
(Just [rel|ghc-8.6.4|])
|
||||||
|
"21b39b89edadbb6ab5b98d46dfacc0fd0799f9b16465a05c64e48f41dcbb1f7a"
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@@ -521,17 +652,23 @@ ghc_865_64_darwin = DownloadInfo
|
|||||||
(Just [rel|ghc-8.6.5|])
|
(Just [rel|ghc-8.6.5|])
|
||||||
"dfc1bdb1d303a87a8552aa17f5b080e61351f2823c2b99071ec23d0837422169"
|
"dfc1bdb1d303a87a8552aa17f5b080e61351f2823c2b99071ec23d0837422169"
|
||||||
|
|
||||||
ghc_865_64_alpine :: DownloadInfo
|
ghc_865_64_musl :: DownloadInfo
|
||||||
ghc_865_64_alpine = DownloadInfo
|
ghc_865_64_musl = DownloadInfo
|
||||||
[uri|https://files.hasufell.de/ghc/ghc-8.6.5-x86_64-alpine-linux.tar.xz|]
|
[uri|https://github.com/redneb/ghc-alt-libc/releases/download/ghc-8.6.5-musl/ghc-8.6.5-x86_64-unknown-linux-musl.tar.xz|]
|
||||||
(Just [rel|ghc-8.6.5|])
|
(Just [rel|ghc-8.6.5|])
|
||||||
"b9d3ed7f7aa24ef2d58bb579252289caa0b8877adee3685e3af2fb73d440afdc"
|
"ec6d0417822c3bfafc7aea0b0402294901231bc5d72dd17a2b849e3f44850695"
|
||||||
|
|
||||||
ghc_865_32_alpine :: DownloadInfo
|
ghc_865_32_musl :: DownloadInfo
|
||||||
ghc_865_32_alpine = DownloadInfo
|
ghc_865_32_musl = DownloadInfo
|
||||||
[uri|https://files.hasufell.de/ghc/ghc-8.6.5-i386-alpine-linux.tar.xz|]
|
[uri|https://github.com/redneb/ghc-alt-libc/releases/download/ghc-8.6.5-musl/ghc-8.6.5-i386-unknown-linux-musl.tar.xz|]
|
||||||
(Just [rel|ghc-8.6.5|])
|
(Just [rel|ghc-8.6.5|])
|
||||||
"3737837550d9b177acfe150e3a3cd4545427ded020487c2ed5194d7b8f116349"
|
"db13ff894faf431f9c64db21c090a1e4e42803794d56720a704c50166c7ca05d"
|
||||||
|
|
||||||
|
ghc_865_64_freebsd :: DownloadInfo
|
||||||
|
ghc_865_64_freebsd = DownloadInfo
|
||||||
|
[uri|https://files.hasufell.de/ghc/ghc-8.6.5-x86_64-portbld-freebsd.tar.xz|]
|
||||||
|
(Just [rel|ghc-8.6.5|])
|
||||||
|
"83a3059a630d40a98e26cb5b520354e12094a96e36ba2f5ab002dad94cf2fb37"
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@@ -577,6 +714,17 @@ ghc_881_64_darwin = DownloadInfo
|
|||||||
(Just [rel|ghc-8.8.1|])
|
(Just [rel|ghc-8.8.1|])
|
||||||
"38c8917b47c31bedf58c9305dfca3abe198d8d35570366f0773c4e2948bd8abe"
|
"38c8917b47c31bedf58c9305dfca3abe198d8d35570366f0773c4e2948bd8abe"
|
||||||
|
|
||||||
|
ghc_881_64_musl :: DownloadInfo
|
||||||
|
ghc_881_64_musl = DownloadInfo
|
||||||
|
[uri|https://github.com/redneb/ghc-alt-libc/releases/download/ghc-8.8.1-musl/ghc-8.8.1-x86_64-unknown-linux-musl.tar.xz|]
|
||||||
|
(Just [rel|ghc-8.8.1|])
|
||||||
|
"029163c42a219983f4220d73c26b910c3ecf6eda45a3e5e27236e8a66b080890"
|
||||||
|
|
||||||
|
ghc_881_32_musl :: DownloadInfo
|
||||||
|
ghc_881_32_musl = DownloadInfo
|
||||||
|
[uri|https://github.com/redneb/ghc-alt-libc/releases/download/ghc-8.8.1-musl/ghc-8.8.1-i386-unknown-linux-musl.tar.xz|]
|
||||||
|
(Just [rel|ghc-8.8.1|])
|
||||||
|
"3f5462341a455a5677fba5cb24da8938878261069da5ee4234b1c6ac2d2ef77e"
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@@ -622,6 +770,17 @@ ghc_882_64_darwin = DownloadInfo
|
|||||||
(Just [rel|ghc-8.8.2|])
|
(Just [rel|ghc-8.8.2|])
|
||||||
"25c5c1a70036abf3f22b2b19c10d26adfdb08e8f8574f89d4b2042de5947f990"
|
"25c5c1a70036abf3f22b2b19c10d26adfdb08e8f8574f89d4b2042de5947f990"
|
||||||
|
|
||||||
|
ghc_882_64_musl :: DownloadInfo
|
||||||
|
ghc_882_64_musl = DownloadInfo
|
||||||
|
[uri|https://github.com/redneb/ghc-alt-libc/releases/download/ghc-8.8.2-musl/ghc-8.8.2-x86_64-unknown-linux-musl.tar.xz|]
|
||||||
|
(Just [rel|ghc-8.8.2|])
|
||||||
|
"09d49c75b5626606409c982b23f70dec241a944928243f32d1b59b2005de6dea"
|
||||||
|
|
||||||
|
ghc_882_32_musl :: DownloadInfo
|
||||||
|
ghc_882_32_musl = DownloadInfo
|
||||||
|
[uri|https://github.com/redneb/ghc-alt-libc/releases/download/ghc-8.8.2-musl/ghc-8.8.2-i386-unknown-linux-musl.tar.xz|]
|
||||||
|
(Just [rel|ghc-8.8.2|])
|
||||||
|
"4ea4a81b6b5ba807c93b21b3cddf1f1b4b0fc1ce018cf6aa255a9ee40137b278"
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@@ -667,6 +826,24 @@ ghc_883_64_darwin = DownloadInfo
|
|||||||
(Just [rel|ghc-8.8.3|])
|
(Just [rel|ghc-8.8.3|])
|
||||||
"7016de90dd226b06fc79d0759c5d4c83c2ab01d8c678905442c28bd948dbb782"
|
"7016de90dd226b06fc79d0759c5d4c83c2ab01d8c678905442c28bd948dbb782"
|
||||||
|
|
||||||
|
ghc_883_64_musl :: DownloadInfo
|
||||||
|
ghc_883_64_musl = DownloadInfo
|
||||||
|
[uri|https://github.com/redneb/ghc-alt-libc/releases/download/ghc-8.8.3-musl/ghc-8.8.3-x86_64-unknown-linux-musl.tar.xz|]
|
||||||
|
(Just [rel|ghc-8.8.3|])
|
||||||
|
"77a990d76dc10abe2ed19e5fcfef4095f0e9819d4ab84bec6d82f00dd85812a7"
|
||||||
|
|
||||||
|
ghc_883_32_musl :: DownloadInfo
|
||||||
|
ghc_883_32_musl = DownloadInfo
|
||||||
|
[uri|https://github.com/redneb/ghc-alt-libc/releases/download/ghc-8.8.3-musl/ghc-8.8.3-i386-unknown-linux-musl.tar.xz|]
|
||||||
|
(Just [rel|ghc-8.8.3|])
|
||||||
|
"7a5f41646d06777e75636291a1855d60a0984552bbdf33c3d107565d302f38a4"
|
||||||
|
|
||||||
|
ghc_883_64_freebsd :: DownloadInfo
|
||||||
|
ghc_883_64_freebsd = DownloadInfo
|
||||||
|
[uri|https://files.hasufell.de/ghc/ghc-8.8.3-x86_64-portbld-freebsd.tar.xz|]
|
||||||
|
(Just [rel|ghc-8.8.3|])
|
||||||
|
"569719075b4d14b3875a899df522090ae31e6fe085e6dffe518e875b09a2f0be"
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
-----------------
|
-----------------
|
||||||
@@ -711,18 +888,11 @@ ghc_884_64_darwin = DownloadInfo
|
|||||||
(Just [rel|ghc-8.8.4|])
|
(Just [rel|ghc-8.8.4|])
|
||||||
"e80a789e9d8cfb41dd87f3284b75432427c4461c1731d220d04ead8733ccdb5e"
|
"e80a789e9d8cfb41dd87f3284b75432427c4461c1731d220d04ead8733ccdb5e"
|
||||||
|
|
||||||
ghc_884_64_alpine :: DownloadInfo
|
ghc_884_64_freebsd :: DownloadInfo
|
||||||
ghc_884_64_alpine = DownloadInfo
|
ghc_884_64_freebsd = DownloadInfo
|
||||||
[uri|https://files.hasufell.de/ghc/ghc-8.8.4-x86_64-alpine-linux.tar.xz|]
|
[uri|https://files.hasufell.de/ghc/ghc-8.8.4-x86_64-portbld-freebsd.tar.xz|]
|
||||||
(Just [rel|ghc-8.8.4|])
|
(Just [rel|ghc-8.8.4|])
|
||||||
"90c6a1661de7f20c7d169cd6270125035b3332063e45103ce028df0beecf434e"
|
"8cebe5ccf454e82acd1ff52ca57590d1ab0f3f44a981b46257ec12158c8c447e"
|
||||||
|
|
||||||
ghc_884_32_alpine :: DownloadInfo
|
|
||||||
ghc_884_32_alpine = DownloadInfo
|
|
||||||
[uri|https://files.hasufell.de/ghc/ghc-8.8.4-i386-alpine-linux.tar.xz|]
|
|
||||||
(Just [rel|ghc-8.8.4|])
|
|
||||||
"1d18e89ee031197e55c48683e78a7ffc67601ac5fd9f73aac555eb064b3859a2"
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@@ -780,11 +950,12 @@ ghc_8101_64_alpine = DownloadInfo
|
|||||||
(Just [rel|ghc-8.10.1-x86_64-unknown-linux|])
|
(Just [rel|ghc-8.10.1-x86_64-unknown-linux|])
|
||||||
"cb13b645d103e2fba2eb8dfcc4e5f2fbd9550c00c4df42f342b4210436dcb8a8"
|
"cb13b645d103e2fba2eb8dfcc4e5f2fbd9550c00c4df42f342b4210436dcb8a8"
|
||||||
|
|
||||||
ghc_8101_32_alpine :: DownloadInfo
|
|
||||||
ghc_8101_32_alpine = DownloadInfo
|
ghc_8101_64_freebsd :: DownloadInfo
|
||||||
[uri|https://files.hasufell.de/ghc/ghc-8.10.1-i386-alpine-linux.tar.xz|]
|
ghc_8101_64_freebsd = DownloadInfo
|
||||||
|
[uri|https://downloads.haskell.org/ghc/8.10.1/ghc-8.10.1-x86_64-portbld-freebsd.tar.xz|]
|
||||||
(Just [rel|ghc-8.10.1|])
|
(Just [rel|ghc-8.10.1|])
|
||||||
"7360cc6b29e9b4ab08f6ea5bc3bcca6f5c216933e81ef1620dcdd700f1fdb289"
|
"52d27dbf9de82005dde9bfc521bff612e381b5228af194259c2306d2b75825c2"
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@@ -817,6 +988,12 @@ cabal_2410_64_alpine = DownloadInfo
|
|||||||
Nothing
|
Nothing
|
||||||
"720bef015f834a03deb7180be2952a44e7c2e6c8429137570404c3de4f46b984"
|
"720bef015f834a03deb7180be2952a44e7c2e6c8429137570404c3de4f46b984"
|
||||||
|
|
||||||
|
cabal_2410_64_freebsd :: DownloadInfo
|
||||||
|
cabal_2410_64_freebsd = DownloadInfo
|
||||||
|
[uri|https://downloads.haskell.org/~cabal/cabal-install-2.4.1.0/cabal-install-2.4.1.0-x86_64-portbld-freebsd.tar.xz|]
|
||||||
|
Nothing
|
||||||
|
"33b7d37ea0688c93436eac9ec139d9967687875aa1fa13f2bb73bf05a9a59a1d"
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@@ -843,6 +1020,12 @@ cabal_3000_64_darwin = DownloadInfo
|
|||||||
Nothing
|
Nothing
|
||||||
"d4857e068560515e4cbb0e8ca124c370e07892f2a28804d87152834e5fe2b845"
|
"d4857e068560515e4cbb0e8ca124c370e07892f2a28804d87152834e5fe2b845"
|
||||||
|
|
||||||
|
cabal_3000_64_freebsd :: DownloadInfo
|
||||||
|
cabal_3000_64_freebsd = DownloadInfo
|
||||||
|
[uri|https://downloads.haskell.org/~cabal/cabal-install-3.0.0.0/cabal-install-3.0.0.0-x86_64-portbld-freebsd.tar.xz|]
|
||||||
|
Nothing
|
||||||
|
"2240842ab2ae7b955feb8b526aba1c7991248c803383107adf39990441294d2a"
|
||||||
|
|
||||||
cabal_3000_32_alpine :: DownloadInfo
|
cabal_3000_32_alpine :: DownloadInfo
|
||||||
cabal_3000_32_alpine = DownloadInfo
|
cabal_3000_32_alpine = DownloadInfo
|
||||||
[uri|https://downloads.haskell.org/~cabal/cabal-install-3.0.0.0/cabal-install-3.0.0.0-i386-alpine-linux-musl.tar.xz|]
|
[uri|https://downloads.haskell.org/~cabal/cabal-install-3.0.0.0/cabal-install-3.0.0.0-i386-alpine-linux-musl.tar.xz|]
|
||||||
@@ -880,6 +1063,12 @@ cabal_3200_64_darwin = DownloadInfo
|
|||||||
Nothing
|
Nothing
|
||||||
"9197c17d2ece0f934f5b33e323cfcaf486e4681952687bc3d249488ce3cbe0e9"
|
"9197c17d2ece0f934f5b33e323cfcaf486e4681952687bc3d249488ce3cbe0e9"
|
||||||
|
|
||||||
|
cabal_3200_64_freebsd :: DownloadInfo
|
||||||
|
cabal_3200_64_freebsd = DownloadInfo
|
||||||
|
[uri|https://downloads.haskell.org/~cabal/cabal-install-3.2.0.0/cabal-install-3.2.0.0-x86_64-portbld-freebsd.tar.xz|]
|
||||||
|
Nothing
|
||||||
|
"f1e35151cca91541b0fb4bdb3ed18f3c348038eab751845ad19c11307d66c273"
|
||||||
|
|
||||||
cabal_3200_32_alpine :: DownloadInfo
|
cabal_3200_32_alpine :: DownloadInfo
|
||||||
cabal_3200_32_alpine = DownloadInfo
|
cabal_3200_32_alpine = DownloadInfo
|
||||||
[uri|https://downloads.haskell.org/~cabal/cabal-install-3.2.0.0/cabal-install-3.2.0.0-i386-alpine-linux-musl.tar.xz|]
|
[uri|https://downloads.haskell.org/~cabal/cabal-install-3.2.0.0/cabal-install-3.2.0.0-i386-alpine-linux-musl.tar.xz|]
|
||||||
@@ -900,25 +1089,32 @@ cabal_3200_64_alpine = DownloadInfo
|
|||||||
-------------
|
-------------
|
||||||
|
|
||||||
|
|
||||||
ghcup_017_32_linux :: DownloadInfo
|
ghcup_016_32_linux :: DownloadInfo
|
||||||
ghcup_017_32_linux = DownloadInfo
|
ghcup_016_32_linux = DownloadInfo
|
||||||
[uri|https://downloads.haskell.org/~ghcup/0.1.7/i386-linux-ghcup-0.1.7|]
|
[uri|https://downloads.haskell.org/~ghcup/0.1.6/i386-linux-ghcup-0.1.6|]
|
||||||
Nothing
|
Nothing
|
||||||
"1651cc196e4fdd18995054edebe109833535961f0e2b0d505f1714e83f3e8808"
|
"0366ed6c00862c3c002cdefc3e37523ad80e655387956c7ab58b268aaa6fae5d"
|
||||||
|
|
||||||
|
|
||||||
ghcup_017_64_linux :: DownloadInfo
|
ghcup_016_64_linux :: DownloadInfo
|
||||||
ghcup_017_64_linux = DownloadInfo
|
ghcup_016_64_linux = DownloadInfo
|
||||||
[uri|https://downloads.haskell.org/~ghcup/0.1.7/x86_64-linux-ghcup-0.1.7|]
|
[uri|https://downloads.haskell.org/~ghcup/0.1.6/x86_64-linux-ghcup-0.1.6|]
|
||||||
Nothing
|
Nothing
|
||||||
"a1d1e8b3c2b00186957c927d09f2cfb457bbfa65c1ab562ff5683963e205bdd5"
|
"bdbec0cdf4c8511c4082dd83993d15034c0fbcb5722ecf418c1cee40667da8af"
|
||||||
|
|
||||||
|
|
||||||
ghcup_017_64_darwin10_13 :: DownloadInfo
|
ghcup_016_64_freebsd :: DownloadInfo
|
||||||
ghcup_017_64_darwin10_13 = DownloadInfo
|
ghcup_016_64_freebsd = DownloadInfo
|
||||||
[uri|https://downloads.haskell.org/~ghcup/0.1.7/x86_64-apple-darwin-ghcup-0.1.7|]
|
[uri|https://downloads.haskell.org/~ghcup/0.1.6/x86_64-portbld-freebsd-ghcup-0.1.6|]
|
||||||
Nothing
|
Nothing
|
||||||
"00b2c04755d2b40e568afbfc2a485c36697fc55f210eae0d4cd80413c71032ed"
|
"6bbfb1047691ff3ae9249e8805cf9f37bab30a008dae130cb2a4b3aa5253e6e5"
|
||||||
|
|
||||||
|
|
||||||
|
ghcup_016_64_darwin10_13 :: DownloadInfo
|
||||||
|
ghcup_016_64_darwin10_13 = DownloadInfo
|
||||||
|
[uri|https://downloads.haskell.org/~ghcup/0.1.6/x86_64-apple-darwin-ghcup-0.1.6|]
|
||||||
|
Nothing
|
||||||
|
"1e025e66d7f7b75d94f17a7da6120efd7e2df918a8eac88c4711ed11d2aac4ec"
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@@ -958,6 +1154,8 @@ ghcupDownloads = M.fromList
|
|||||||
, M.fromList [(Nothing, ghc_7103_64_cenots67)]
|
, M.fromList [(Nothing, ghc_7103_64_cenots67)]
|
||||||
)
|
)
|
||||||
, (Darwin , M.fromList [(Nothing, ghc_7103_64_darwin)])
|
, (Darwin , M.fromList [(Nothing, ghc_7103_64_darwin)])
|
||||||
|
, (FreeBSD , M.fromList [(Nothing, ghc_7103_64_freebsd)])
|
||||||
|
, (Linux Alpine, M.fromList [(Nothing, ghc_7103_64_musl)])
|
||||||
]
|
]
|
||||||
)
|
)
|
||||||
, ( A_32
|
, ( A_32
|
||||||
@@ -972,6 +1170,7 @@ ghcupDownloads = M.fromList
|
|||||||
, ( Linux AmazonLinux
|
, ( Linux AmazonLinux
|
||||||
, M.fromList [(Nothing, ghc_7103_32_cenots67)]
|
, M.fromList [(Nothing, ghc_7103_32_cenots67)]
|
||||||
)
|
)
|
||||||
|
, (FreeBSD, M.fromList [(Nothing, ghc_7103_32_freebsd)])
|
||||||
]
|
]
|
||||||
)
|
)
|
||||||
]
|
]
|
||||||
@@ -1002,7 +1201,8 @@ ghcupDownloads = M.fromList
|
|||||||
]
|
]
|
||||||
)
|
)
|
||||||
, (Darwin , M.fromList [(Nothing, ghc_802_64_darwin)])
|
, (Darwin , M.fromList [(Nothing, ghc_802_64_darwin)])
|
||||||
, (Linux Alpine , M.fromList [(Nothing, ghc_802_64_alpine)])
|
, (FreeBSD , M.fromList [(Nothing, ghc_802_64_freebsd)])
|
||||||
|
, (Linux Alpine, M.fromList [(Nothing, ghc_802_64_musl)])
|
||||||
]
|
]
|
||||||
)
|
)
|
||||||
, ( A_32
|
, ( A_32
|
||||||
@@ -1016,7 +1216,7 @@ ghcupDownloads = M.fromList
|
|||||||
, (Just [vers|7|], ghc_802_32_deb7)
|
, (Just [vers|7|], ghc_802_32_deb7)
|
||||||
]
|
]
|
||||||
)
|
)
|
||||||
, (Linux Alpine , M.fromList [(Nothing, ghc_802_32_alpine)])
|
, (Linux Alpine, M.fromList [(Nothing, ghc_802_32_musl)])
|
||||||
]
|
]
|
||||||
)
|
)
|
||||||
]
|
]
|
||||||
@@ -1047,7 +1247,13 @@ ghcupDownloads = M.fromList
|
|||||||
]
|
]
|
||||||
)
|
)
|
||||||
, (Darwin, M.fromList [(Nothing, ghc_822_64_darwin)])
|
, (Darwin, M.fromList [(Nothing, ghc_822_64_darwin)])
|
||||||
, (Linux Alpine , M.fromList [(Nothing, ghc_822_64_alpine)])
|
, ( FreeBSD
|
||||||
|
, M.fromList
|
||||||
|
[ (Nothing , ghc_822_64_freebsd11)
|
||||||
|
, (Just [vers|10|], ghc_822_64_freebsd10)
|
||||||
|
, (Just [vers|11|], ghc_822_64_freebsd11)
|
||||||
|
]
|
||||||
|
)
|
||||||
]
|
]
|
||||||
)
|
)
|
||||||
, ( A_32
|
, ( A_32
|
||||||
@@ -1063,7 +1269,6 @@ ghcupDownloads = M.fromList
|
|||||||
, (Just [vers|7|], ghc_822_32_deb7)
|
, (Just [vers|7|], ghc_822_32_deb7)
|
||||||
]
|
]
|
||||||
)
|
)
|
||||||
, (Linux Alpine , M.fromList [(Nothing, ghc_822_32_alpine)])
|
|
||||||
]
|
]
|
||||||
)
|
)
|
||||||
]
|
]
|
||||||
@@ -1090,6 +1295,8 @@ ghcupDownloads = M.fromList
|
|||||||
, (Linux Mint , M.fromList [(Nothing, ghc_841_64_fedora)])
|
, (Linux Mint , M.fromList [(Nothing, ghc_841_64_fedora)])
|
||||||
, (Linux Debian, M.fromList [(Nothing, ghc_841_64_deb8)])
|
, (Linux Debian, M.fromList [(Nothing, ghc_841_64_deb8)])
|
||||||
, (Darwin , M.fromList [(Nothing, ghc_841_64_darwin)])
|
, (Darwin , M.fromList [(Nothing, ghc_841_64_darwin)])
|
||||||
|
, (FreeBSD , M.fromList [(Nothing, ghc_841_64_freebsd)])
|
||||||
|
, (Linux Alpine, M.fromList [(Nothing, ghc_841_64_musl)])
|
||||||
]
|
]
|
||||||
)
|
)
|
||||||
, ( A_32
|
, ( A_32
|
||||||
@@ -1100,6 +1307,7 @@ ghcupDownloads = M.fromList
|
|||||||
, (Linux Ubuntu, M.fromList [(Nothing, ghc_841_32_deb8)])
|
, (Linux Ubuntu, M.fromList [(Nothing, ghc_841_32_deb8)])
|
||||||
, (Linux Mint , M.fromList [(Nothing, ghc_841_32_deb8)])
|
, (Linux Mint , M.fromList [(Nothing, ghc_841_32_deb8)])
|
||||||
, (Linux Debian, M.fromList [(Nothing, ghc_841_32_deb8)])
|
, (Linux Debian, M.fromList [(Nothing, ghc_841_32_deb8)])
|
||||||
|
, (Linux Alpine, M.fromList [(Nothing, ghc_841_32_musl)])
|
||||||
]
|
]
|
||||||
)
|
)
|
||||||
]
|
]
|
||||||
@@ -1137,6 +1345,8 @@ ghcupDownloads = M.fromList
|
|||||||
]
|
]
|
||||||
)
|
)
|
||||||
, (Darwin , M.fromList [(Nothing, ghc_842_64_darwin)])
|
, (Darwin , M.fromList [(Nothing, ghc_842_64_darwin)])
|
||||||
|
, (FreeBSD , M.fromList [(Nothing, ghc_842_64_freebsd)])
|
||||||
|
, (Linux Alpine, M.fromList [(Nothing, ghc_842_64_musl)])
|
||||||
]
|
]
|
||||||
)
|
)
|
||||||
, ( A_32
|
, ( A_32
|
||||||
@@ -1147,6 +1357,7 @@ ghcupDownloads = M.fromList
|
|||||||
, (Linux Ubuntu, M.fromList [(Nothing, ghc_842_32_deb8)])
|
, (Linux Ubuntu, M.fromList [(Nothing, ghc_842_32_deb8)])
|
||||||
, (Linux Mint , M.fromList [(Nothing, ghc_842_32_deb8)])
|
, (Linux Mint , M.fromList [(Nothing, ghc_842_32_deb8)])
|
||||||
, (Linux Debian, M.fromList [(Nothing, ghc_842_32_deb8)])
|
, (Linux Debian, M.fromList [(Nothing, ghc_842_32_deb8)])
|
||||||
|
, (Linux Alpine, M.fromList [(Nothing, ghc_842_32_musl)])
|
||||||
]
|
]
|
||||||
)
|
)
|
||||||
]
|
]
|
||||||
@@ -1184,6 +1395,7 @@ ghcupDownloads = M.fromList
|
|||||||
]
|
]
|
||||||
)
|
)
|
||||||
, (Darwin , M.fromList [(Nothing, ghc_843_64_darwin)])
|
, (Darwin , M.fromList [(Nothing, ghc_843_64_darwin)])
|
||||||
|
, (Linux Alpine, M.fromList [(Nothing, ghc_843_64_musl)])
|
||||||
]
|
]
|
||||||
)
|
)
|
||||||
, ( A_32
|
, ( A_32
|
||||||
@@ -1194,6 +1406,7 @@ ghcupDownloads = M.fromList
|
|||||||
, (Linux Ubuntu, M.fromList [(Nothing, ghc_843_32_deb8)])
|
, (Linux Ubuntu, M.fromList [(Nothing, ghc_843_32_deb8)])
|
||||||
, (Linux Mint , M.fromList [(Nothing, ghc_843_32_deb8)])
|
, (Linux Mint , M.fromList [(Nothing, ghc_843_32_deb8)])
|
||||||
, (Linux Debian, M.fromList [(Nothing, ghc_843_32_deb8)])
|
, (Linux Debian, M.fromList [(Nothing, ghc_843_32_deb8)])
|
||||||
|
, (Linux Alpine, M.fromList [(Nothing, ghc_843_32_musl)])
|
||||||
]
|
]
|
||||||
)
|
)
|
||||||
]
|
]
|
||||||
@@ -1236,7 +1449,8 @@ ghcupDownloads = M.fromList
|
|||||||
]
|
]
|
||||||
)
|
)
|
||||||
, (Darwin , M.fromList [(Nothing, ghc_844_64_darwin)])
|
, (Darwin , M.fromList [(Nothing, ghc_844_64_darwin)])
|
||||||
, (Linux Alpine, M.fromList [(Nothing, ghc_844_64_alpine)])
|
, (FreeBSD , M.fromList [(Nothing, ghc_844_64_freebsd)])
|
||||||
|
, (Linux Alpine, M.fromList [(Nothing, ghc_844_64_musl)])
|
||||||
]
|
]
|
||||||
)
|
)
|
||||||
, ( A_32
|
, ( A_32
|
||||||
@@ -1247,7 +1461,7 @@ ghcupDownloads = M.fromList
|
|||||||
, (Linux Ubuntu, M.fromList [(Nothing, ghc_844_32_deb8)])
|
, (Linux Ubuntu, M.fromList [(Nothing, ghc_844_32_deb8)])
|
||||||
, (Linux Mint , M.fromList [(Nothing, ghc_844_32_deb8)])
|
, (Linux Mint , M.fromList [(Nothing, ghc_844_32_deb8)])
|
||||||
, (Linux Debian, M.fromList [(Nothing, ghc_844_32_deb8)])
|
, (Linux Debian, M.fromList [(Nothing, ghc_844_32_deb8)])
|
||||||
, (Linux Alpine, M.fromList [(Nothing, ghc_844_32_alpine)])
|
, (Linux Alpine, M.fromList [(Nothing, ghc_844_32_musl)])
|
||||||
]
|
]
|
||||||
)
|
)
|
||||||
]
|
]
|
||||||
@@ -1285,6 +1499,8 @@ ghcupDownloads = M.fromList
|
|||||||
]
|
]
|
||||||
)
|
)
|
||||||
, (Darwin , M.fromList [(Nothing, ghc_861_64_darwin)])
|
, (Darwin , M.fromList [(Nothing, ghc_861_64_darwin)])
|
||||||
|
, (FreeBSD , M.fromList [(Nothing, ghc_861_64_freebsd)])
|
||||||
|
, (Linux Alpine, M.fromList [(Nothing, ghc_861_64_musl)])
|
||||||
]
|
]
|
||||||
)
|
)
|
||||||
, ( A_32
|
, ( A_32
|
||||||
@@ -1295,6 +1511,7 @@ ghcupDownloads = M.fromList
|
|||||||
, (Linux Ubuntu, M.fromList [(Nothing, ghc_861_32_deb8)])
|
, (Linux Ubuntu, M.fromList [(Nothing, ghc_861_32_deb8)])
|
||||||
, (Linux Mint , M.fromList [(Nothing, ghc_861_32_deb8)])
|
, (Linux Mint , M.fromList [(Nothing, ghc_861_32_deb8)])
|
||||||
, (Linux Debian, M.fromList [(Nothing, ghc_861_32_deb8)])
|
, (Linux Debian, M.fromList [(Nothing, ghc_861_32_deb8)])
|
||||||
|
, (Linux Alpine, M.fromList [(Nothing, ghc_861_32_musl)])
|
||||||
]
|
]
|
||||||
)
|
)
|
||||||
]
|
]
|
||||||
@@ -1327,6 +1544,7 @@ ghcupDownloads = M.fromList
|
|||||||
, (Linux Mint , M.fromList [(Nothing, ghc_862_64_deb8)])
|
, (Linux Mint , M.fromList [(Nothing, ghc_862_64_deb8)])
|
||||||
, (Linux Debian, M.fromList [(Nothing, ghc_862_64_deb8)])
|
, (Linux Debian, M.fromList [(Nothing, ghc_862_64_deb8)])
|
||||||
, (Darwin , M.fromList [(Nothing, ghc_862_64_darwin)])
|
, (Darwin , M.fromList [(Nothing, ghc_862_64_darwin)])
|
||||||
|
, (Linux Alpine, M.fromList [(Nothing, ghc_862_64_musl)])
|
||||||
]
|
]
|
||||||
)
|
)
|
||||||
, ( A_32
|
, ( A_32
|
||||||
@@ -1337,6 +1555,7 @@ ghcupDownloads = M.fromList
|
|||||||
, (Linux Ubuntu, M.fromList [(Nothing, ghc_862_32_deb8)])
|
, (Linux Ubuntu, M.fromList [(Nothing, ghc_862_32_deb8)])
|
||||||
, (Linux Mint , M.fromList [(Nothing, ghc_862_32_deb8)])
|
, (Linux Mint , M.fromList [(Nothing, ghc_862_32_deb8)])
|
||||||
, (Linux Debian, M.fromList [(Nothing, ghc_862_32_deb8)])
|
, (Linux Debian, M.fromList [(Nothing, ghc_862_32_deb8)])
|
||||||
|
, (Linux Alpine, M.fromList [(Nothing, ghc_862_32_musl)])
|
||||||
]
|
]
|
||||||
)
|
)
|
||||||
]
|
]
|
||||||
@@ -1379,6 +1598,8 @@ ghcupDownloads = M.fromList
|
|||||||
]
|
]
|
||||||
)
|
)
|
||||||
, (Darwin , M.fromList [(Nothing, ghc_863_64_darwin)])
|
, (Darwin , M.fromList [(Nothing, ghc_863_64_darwin)])
|
||||||
|
, (FreeBSD , M.fromList [(Nothing, ghc_863_64_freebsd)])
|
||||||
|
, (Linux Alpine, M.fromList [(Nothing, ghc_863_64_musl)])
|
||||||
]
|
]
|
||||||
)
|
)
|
||||||
, ( A_32
|
, ( A_32
|
||||||
@@ -1389,6 +1610,7 @@ ghcupDownloads = M.fromList
|
|||||||
, (Linux Ubuntu, M.fromList [(Nothing, ghc_863_32_deb8)])
|
, (Linux Ubuntu, M.fromList [(Nothing, ghc_863_32_deb8)])
|
||||||
, (Linux Mint , M.fromList [(Nothing, ghc_863_32_deb8)])
|
, (Linux Mint , M.fromList [(Nothing, ghc_863_32_deb8)])
|
||||||
, (Linux Debian, M.fromList [(Nothing, ghc_863_32_deb8)])
|
, (Linux Debian, M.fromList [(Nothing, ghc_863_32_deb8)])
|
||||||
|
, (Linux Alpine, M.fromList [(Nothing, ghc_863_32_musl)])
|
||||||
]
|
]
|
||||||
)
|
)
|
||||||
]
|
]
|
||||||
@@ -1426,6 +1648,7 @@ ghcupDownloads = M.fromList
|
|||||||
]
|
]
|
||||||
)
|
)
|
||||||
, (Darwin , M.fromList [(Nothing, ghc_864_64_darwin)])
|
, (Darwin , M.fromList [(Nothing, ghc_864_64_darwin)])
|
||||||
|
, (Linux Alpine, M.fromList [(Nothing, ghc_864_64_musl)])
|
||||||
]
|
]
|
||||||
)
|
)
|
||||||
, ( A_32
|
, ( A_32
|
||||||
@@ -1436,6 +1659,7 @@ ghcupDownloads = M.fromList
|
|||||||
, (Linux Ubuntu, M.fromList [(Nothing, ghc_864_32_deb9)])
|
, (Linux Ubuntu, M.fromList [(Nothing, ghc_864_32_deb9)])
|
||||||
, (Linux Mint , M.fromList [(Nothing, ghc_864_32_deb9)])
|
, (Linux Mint , M.fromList [(Nothing, ghc_864_32_deb9)])
|
||||||
, (Linux Debian, M.fromList [(Nothing, ghc_864_32_deb9)])
|
, (Linux Debian, M.fromList [(Nothing, ghc_864_32_deb9)])
|
||||||
|
, (Linux Alpine, M.fromList [(Nothing, ghc_864_32_musl)])
|
||||||
]
|
]
|
||||||
)
|
)
|
||||||
]
|
]
|
||||||
@@ -1478,7 +1702,8 @@ ghcupDownloads = M.fromList
|
|||||||
]
|
]
|
||||||
)
|
)
|
||||||
, (Darwin , M.fromList [(Nothing, ghc_865_64_darwin)])
|
, (Darwin , M.fromList [(Nothing, ghc_865_64_darwin)])
|
||||||
, (Linux Alpine, M.fromList [(Nothing, ghc_865_64_alpine)])
|
, (Linux Alpine, M.fromList [(Nothing, ghc_865_64_musl)])
|
||||||
|
, (FreeBSD , M.fromList [(Nothing, ghc_865_64_freebsd)])
|
||||||
]
|
]
|
||||||
)
|
)
|
||||||
, ( A_32
|
, ( A_32
|
||||||
@@ -1489,7 +1714,7 @@ ghcupDownloads = M.fromList
|
|||||||
, (Linux Ubuntu, M.fromList [(Nothing, ghc_865_32_deb9)])
|
, (Linux Ubuntu, M.fromList [(Nothing, ghc_865_32_deb9)])
|
||||||
, (Linux Mint , M.fromList [(Nothing, ghc_865_32_deb9)])
|
, (Linux Mint , M.fromList [(Nothing, ghc_865_32_deb9)])
|
||||||
, (Linux Debian, M.fromList [(Nothing, ghc_865_32_deb9)])
|
, (Linux Debian, M.fromList [(Nothing, ghc_865_32_deb9)])
|
||||||
, (Linux Alpine, M.fromList [(Nothing, ghc_865_32_alpine)])
|
, (Linux Alpine, M.fromList [(Nothing, ghc_865_32_musl)])
|
||||||
]
|
]
|
||||||
)
|
)
|
||||||
]
|
]
|
||||||
@@ -1532,6 +1757,7 @@ ghcupDownloads = M.fromList
|
|||||||
]
|
]
|
||||||
)
|
)
|
||||||
, (Darwin , M.fromList [(Nothing, ghc_881_64_darwin)])
|
, (Darwin , M.fromList [(Nothing, ghc_881_64_darwin)])
|
||||||
|
, (Linux Alpine, M.fromList [(Nothing, ghc_881_64_musl)])
|
||||||
]
|
]
|
||||||
)
|
)
|
||||||
, ( A_32
|
, ( A_32
|
||||||
@@ -1542,6 +1768,7 @@ ghcupDownloads = M.fromList
|
|||||||
, (Linux Ubuntu, M.fromList [(Nothing, ghc_881_32_deb9)])
|
, (Linux Ubuntu, M.fromList [(Nothing, ghc_881_32_deb9)])
|
||||||
, (Linux Mint , M.fromList [(Nothing, ghc_881_32_deb9)])
|
, (Linux Mint , M.fromList [(Nothing, ghc_881_32_deb9)])
|
||||||
, (Linux Debian, M.fromList [(Nothing, ghc_881_32_deb9)])
|
, (Linux Debian, M.fromList [(Nothing, ghc_881_32_deb9)])
|
||||||
|
, (Linux Alpine, M.fromList [(Nothing, ghc_881_32_musl)])
|
||||||
]
|
]
|
||||||
)
|
)
|
||||||
]
|
]
|
||||||
@@ -1584,6 +1811,7 @@ ghcupDownloads = M.fromList
|
|||||||
]
|
]
|
||||||
)
|
)
|
||||||
, (Darwin , M.fromList [(Nothing, ghc_882_64_darwin)])
|
, (Darwin , M.fromList [(Nothing, ghc_882_64_darwin)])
|
||||||
|
, (Linux Alpine, M.fromList [(Nothing, ghc_882_64_musl)])
|
||||||
]
|
]
|
||||||
)
|
)
|
||||||
, ( A_32
|
, ( A_32
|
||||||
@@ -1594,13 +1822,14 @@ ghcupDownloads = M.fromList
|
|||||||
, (Linux Ubuntu, M.fromList [(Nothing, ghc_882_32_deb9)])
|
, (Linux Ubuntu, M.fromList [(Nothing, ghc_882_32_deb9)])
|
||||||
, (Linux Mint , M.fromList [(Nothing, ghc_882_32_deb9)])
|
, (Linux Mint , M.fromList [(Nothing, ghc_882_32_deb9)])
|
||||||
, (Linux Debian, M.fromList [(Nothing, ghc_882_32_deb9)])
|
, (Linux Debian, M.fromList [(Nothing, ghc_882_32_deb9)])
|
||||||
|
, (Linux Alpine, M.fromList [(Nothing, ghc_882_32_musl)])
|
||||||
]
|
]
|
||||||
)
|
)
|
||||||
]
|
]
|
||||||
)
|
)
|
||||||
, ( [vver|8.8.3|]
|
, ( [vver|8.8.3|]
|
||||||
, VersionInfo
|
, VersionInfo
|
||||||
[Base [pver|4.13.0.0|]]
|
[Recommended, Base [pver|4.13.0.0|]]
|
||||||
(Just
|
(Just
|
||||||
[uri|https://downloads.haskell.org/~ghc/8.8.3/docs/html/users_guide/8.8.3-notes.html|]
|
[uri|https://downloads.haskell.org/~ghc/8.8.3/docs/html/users_guide/8.8.3-notes.html|]
|
||||||
)
|
)
|
||||||
@@ -1636,6 +1865,8 @@ ghcupDownloads = M.fromList
|
|||||||
]
|
]
|
||||||
)
|
)
|
||||||
, (Darwin , M.fromList [(Nothing, ghc_883_64_darwin)])
|
, (Darwin , M.fromList [(Nothing, ghc_883_64_darwin)])
|
||||||
|
, (Linux Alpine, M.fromList [(Nothing, ghc_883_64_musl)])
|
||||||
|
, (FreeBSD , M.fromList [(Nothing, ghc_883_64_freebsd)])
|
||||||
]
|
]
|
||||||
)
|
)
|
||||||
, ( A_32
|
, ( A_32
|
||||||
@@ -1646,13 +1877,14 @@ ghcupDownloads = M.fromList
|
|||||||
, (Linux Ubuntu, M.fromList [(Nothing, ghc_883_32_deb9)])
|
, (Linux Ubuntu, M.fromList [(Nothing, ghc_883_32_deb9)])
|
||||||
, (Linux Mint , M.fromList [(Nothing, ghc_883_32_deb9)])
|
, (Linux Mint , M.fromList [(Nothing, ghc_883_32_deb9)])
|
||||||
, (Linux Debian, M.fromList [(Nothing, ghc_883_32_deb9)])
|
, (Linux Debian, M.fromList [(Nothing, ghc_883_32_deb9)])
|
||||||
|
, (Linux Alpine, M.fromList [(Nothing, ghc_883_32_musl)])
|
||||||
]
|
]
|
||||||
)
|
)
|
||||||
]
|
]
|
||||||
)
|
)
|
||||||
, ( [vver|8.8.4|]
|
, ( [vver|8.8.4|]
|
||||||
, VersionInfo
|
, VersionInfo
|
||||||
[Recommended, Base [pver|4.13.0.0|]]
|
[Base [pver|4.13.0.0|]]
|
||||||
(Just
|
(Just
|
||||||
[uri|https://downloads.haskell.org/~ghc/8.8.4/docs/html/users_guide/8.8.4-notes.html|]
|
[uri|https://downloads.haskell.org/~ghc/8.8.4/docs/html/users_guide/8.8.4-notes.html|]
|
||||||
)
|
)
|
||||||
@@ -1688,7 +1920,6 @@ ghcupDownloads = M.fromList
|
|||||||
]
|
]
|
||||||
)
|
)
|
||||||
, (Darwin, M.fromList [(Nothing, ghc_884_64_darwin)])
|
, (Darwin, M.fromList [(Nothing, ghc_884_64_darwin)])
|
||||||
, (Linux Alpine, M.fromList [(Nothing, ghc_884_64_alpine)])
|
|
||||||
]
|
]
|
||||||
)
|
)
|
||||||
, ( A_32
|
, ( A_32
|
||||||
@@ -1699,7 +1930,7 @@ ghcupDownloads = M.fromList
|
|||||||
, (Linux Ubuntu, M.fromList [(Nothing, ghc_884_32_deb9)])
|
, (Linux Ubuntu, M.fromList [(Nothing, ghc_884_32_deb9)])
|
||||||
, (Linux Mint , M.fromList [(Nothing, ghc_884_32_deb9)])
|
, (Linux Mint , M.fromList [(Nothing, ghc_884_32_deb9)])
|
||||||
, (Linux Debian, M.fromList [(Nothing, ghc_884_32_deb9)])
|
, (Linux Debian, M.fromList [(Nothing, ghc_884_32_deb9)])
|
||||||
, (Linux Alpine, M.fromList [(Nothing, ghc_884_32_alpine)])
|
, (FreeBSD , M.fromList [(Nothing, ghc_884_64_freebsd)])
|
||||||
]
|
]
|
||||||
)
|
)
|
||||||
]
|
]
|
||||||
@@ -1754,6 +1985,7 @@ ghcupDownloads = M.fromList
|
|||||||
)
|
)
|
||||||
, (Darwin , M.fromList [(Nothing, ghc_8101_64_darwin)])
|
, (Darwin , M.fromList [(Nothing, ghc_8101_64_darwin)])
|
||||||
, (Linux Alpine, M.fromList [(Nothing, ghc_8101_64_alpine)])
|
, (Linux Alpine, M.fromList [(Nothing, ghc_8101_64_alpine)])
|
||||||
|
, (FreeBSD , M.fromList [(Nothing, ghc_8101_64_freebsd)])
|
||||||
]
|
]
|
||||||
)
|
)
|
||||||
, ( A_32
|
, ( A_32
|
||||||
@@ -1769,7 +2001,6 @@ ghcupDownloads = M.fromList
|
|||||||
, (Just [vers|9|], ghc_8101_32_deb9)
|
, (Just [vers|9|], ghc_8101_32_deb9)
|
||||||
]
|
]
|
||||||
)
|
)
|
||||||
, (Linux Alpine, M.fromList [(Nothing, ghc_8101_32_alpine)])
|
|
||||||
]
|
]
|
||||||
)
|
)
|
||||||
]
|
]
|
||||||
@@ -1797,6 +2028,7 @@ ghcupDownloads = M.fromList
|
|||||||
)
|
)
|
||||||
, (Linux Alpine, M.fromList [(Nothing, cabal_2410_64_alpine)])
|
, (Linux Alpine, M.fromList [(Nothing, cabal_2410_64_alpine)])
|
||||||
, (Darwin , M.fromList [(Nothing, cabal_2410_64_darwin)])
|
, (Darwin , M.fromList [(Nothing, cabal_2410_64_darwin)])
|
||||||
|
, (FreeBSD, M.fromList [(Nothing, cabal_2410_64_freebsd)])
|
||||||
]
|
]
|
||||||
)
|
)
|
||||||
, ( A_32
|
, ( A_32
|
||||||
@@ -1827,6 +2059,7 @@ ghcupDownloads = M.fromList
|
|||||||
)
|
)
|
||||||
, (Linux Alpine, M.fromList [(Nothing, cabal_3000_64_alpine)])
|
, (Linux Alpine, M.fromList [(Nothing, cabal_3000_64_alpine)])
|
||||||
, (Darwin , M.fromList [(Nothing, cabal_3000_64_darwin)])
|
, (Darwin , M.fromList [(Nothing, cabal_3000_64_darwin)])
|
||||||
|
, (FreeBSD, M.fromList [(Nothing, cabal_3000_64_freebsd)])
|
||||||
]
|
]
|
||||||
)
|
)
|
||||||
, ( A_32
|
, ( A_32
|
||||||
@@ -1858,6 +2091,7 @@ ghcupDownloads = M.fromList
|
|||||||
)
|
)
|
||||||
, (Linux Alpine, M.fromList [(Nothing, cabal_3200_64_alpine)])
|
, (Linux Alpine, M.fromList [(Nothing, cabal_3200_64_alpine)])
|
||||||
, (Darwin , M.fromList [(Nothing, cabal_3200_64_darwin)])
|
, (Darwin , M.fromList [(Nothing, cabal_3200_64_darwin)])
|
||||||
|
, (FreeBSD, M.fromList [(Nothing, cabal_3200_64_freebsd)])
|
||||||
]
|
]
|
||||||
)
|
)
|
||||||
, ( A_32
|
, ( A_32
|
||||||
@@ -1874,7 +2108,7 @@ ghcupDownloads = M.fromList
|
|||||||
)
|
)
|
||||||
, ( GHCup
|
, ( GHCup
|
||||||
, M.fromList
|
, M.fromList
|
||||||
[ ( [vver|0.1.7|]
|
[ ( [vver|0.1.6|]
|
||||||
, VersionInfo
|
, VersionInfo
|
||||||
[Recommended, Latest]
|
[Recommended, Latest]
|
||||||
(Just
|
(Just
|
||||||
@@ -1885,15 +2119,16 @@ ghcupDownloads = M.fromList
|
|||||||
[ ( A_64
|
[ ( A_64
|
||||||
, M.fromList
|
, M.fromList
|
||||||
[ ( Linux UnknownLinux
|
[ ( Linux UnknownLinux
|
||||||
, M.fromList [(Nothing, ghcup_017_64_linux)]
|
, M.fromList [(Nothing, ghcup_016_64_linux)]
|
||||||
)
|
)
|
||||||
, (Darwin , M.fromList [(Nothing, ghcup_017_64_darwin10_13)])
|
, (Darwin , M.fromList [(Nothing, ghcup_016_64_darwin10_13)])
|
||||||
|
, (FreeBSD, M.fromList [(Nothing, ghcup_016_64_freebsd)])
|
||||||
]
|
]
|
||||||
)
|
)
|
||||||
, ( A_32
|
, ( A_32
|
||||||
, M.fromList
|
, M.fromList
|
||||||
[ ( Linux UnknownLinux
|
[ ( Linux UnknownLinux
|
||||||
, M.fromList [(Nothing, ghcup_017_32_linux)]
|
, M.fromList [(Nothing, ghcup_016_32_linux)]
|
||||||
)
|
)
|
||||||
]
|
]
|
||||||
)
|
)
|
||||||
|
|||||||
@@ -123,6 +123,23 @@ toolRequirements = M.fromList
|
|||||||
)
|
)
|
||||||
]
|
]
|
||||||
)
|
)
|
||||||
|
, ( FreeBSD
|
||||||
|
, M.fromList
|
||||||
|
[ ( Nothing
|
||||||
|
, Requirements
|
||||||
|
[ "curl"
|
||||||
|
, "gcc"
|
||||||
|
, "gmp"
|
||||||
|
, "gmake"
|
||||||
|
, "ncurses"
|
||||||
|
, "perl5"
|
||||||
|
, "libffi"
|
||||||
|
, "libiconv"
|
||||||
|
]
|
||||||
|
""
|
||||||
|
)
|
||||||
|
]
|
||||||
|
)
|
||||||
]
|
]
|
||||||
)
|
)
|
||||||
]
|
]
|
||||||
|
|||||||
@@ -12,8 +12,7 @@
|
|||||||
module GHCup.Download where
|
module GHCup.Download where
|
||||||
|
|
||||||
#if defined(INTERNAL_DOWNLOADER)
|
#if defined(INTERNAL_DOWNLOADER)
|
||||||
import GHCup.Download.IOStreams
|
import GHCup.Download.Internal
|
||||||
import GHCup.Download.Utils
|
|
||||||
#endif
|
#endif
|
||||||
import GHCup.Errors
|
import GHCup.Errors
|
||||||
import GHCup.Types
|
import GHCup.Types
|
||||||
@@ -233,16 +232,20 @@ getDownloads urlSource = do
|
|||||||
#if !defined(INTERNAL_DOWNLOADER)
|
#if !defined(INTERNAL_DOWNLOADER)
|
||||||
pure Nothing
|
pure Nothing
|
||||||
#else
|
#else
|
||||||
headers <-
|
Settings{..} <- lift ask
|
||||||
handleIO (\_ -> pure mempty)
|
case downloader of
|
||||||
$ liftE
|
Internal -> do
|
||||||
$ ( catchAllE
|
headers <-
|
||||||
(\_ ->
|
handleIO (\_ -> pure mempty)
|
||||||
pure mempty :: Excepts '[] m1 (M.Map (CI ByteString) ByteString)
|
$ liftE
|
||||||
|
$ ( catchAllE
|
||||||
|
(\_ ->
|
||||||
|
pure mempty :: Excepts '[] m1 (M.Map (CI ByteString) ByteString)
|
||||||
|
)
|
||||||
|
$ getHead uri'
|
||||||
)
|
)
|
||||||
$ getHead uri'
|
pure $ parseModifiedHeader headers
|
||||||
)
|
_ -> pure Nothing
|
||||||
pure $ parseModifiedHeader headers
|
|
||||||
|
|
||||||
parseModifiedHeader :: (M.Map (CI ByteString) ByteString) -> Maybe UTCTime
|
parseModifiedHeader :: (M.Map (CI ByteString) ByteString) -> Maybe UTCTime
|
||||||
parseModifiedHeader headers =
|
parseModifiedHeader headers =
|
||||||
@@ -270,10 +273,7 @@ getDownloadInfo :: Tool
|
|||||||
getDownloadInfo t v (PlatformRequest a p mv) dls = maybe
|
getDownloadInfo t v (PlatformRequest a p mv) dls = maybe
|
||||||
(Left NoDownload)
|
(Left NoDownload)
|
||||||
Right
|
Right
|
||||||
(case p of
|
(with_distro <|> without_distro_ver <|> without_distro)
|
||||||
-- non-musl won't work on alpine
|
|
||||||
Linux Alpine -> with_distro <|> without_distro_ver
|
|
||||||
_ -> with_distro <|> without_distro_ver <|> without_distro)
|
|
||||||
|
|
||||||
where
|
where
|
||||||
with_distro = distro_preview id id
|
with_distro = distro_preview id id
|
||||||
@@ -342,9 +342,7 @@ download dli dest mfn
|
|||||||
liftE $ lEM @_ @'[ProcessError] $ liftIO $ exec "wget" True
|
liftE $ lEM @_ @'[ProcessError] $ liftIO $ exec "wget" True
|
||||||
(o' ++ ["-O", toFilePath destFile , serializeURIRef' $ view dlUri dli]) Nothing Nothing
|
(o' ++ ["-O", toFilePath destFile , serializeURIRef' $ view dlUri dli]) Nothing Nothing
|
||||||
#if defined(INTERNAL_DOWNLOADER)
|
#if defined(INTERNAL_DOWNLOADER)
|
||||||
Internal -> do
|
Internal -> liftE $ downloadToFile (_dlUri dli) destFile
|
||||||
(https, host, fullPath, port) <- liftE $ uriToQuadruple (view dlUri dli)
|
|
||||||
liftE $ downloadToFile https host fullPath port destFile
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
liftE $ checkDigest dli destFile
|
liftE $ checkDigest dli destFile
|
||||||
@@ -411,10 +409,8 @@ downloadBS :: (MonadReader Settings m, MonadCatch m, MonadIO m, MonadLogger m)
|
|||||||
m
|
m
|
||||||
L.ByteString
|
L.ByteString
|
||||||
downloadBS uri'
|
downloadBS uri'
|
||||||
| scheme == "https"
|
| scheme == "https" || scheme == "http"
|
||||||
= dl True
|
= dl
|
||||||
| scheme == "http"
|
|
||||||
= dl False
|
|
||||||
| scheme == "file"
|
| scheme == "file"
|
||||||
= liftIOException doesNotExistErrorType (FileDoesNotExistError path)
|
= liftIOException doesNotExistErrorType (FileDoesNotExistError path)
|
||||||
$ (liftIO $ RD.readFile path)
|
$ (liftIO $ RD.readFile path)
|
||||||
@@ -424,11 +420,7 @@ downloadBS uri'
|
|||||||
where
|
where
|
||||||
scheme = view (uriSchemeL' % schemeBSL') uri'
|
scheme = view (uriSchemeL' % schemeBSL') uri'
|
||||||
path = view pathL' uri'
|
path = view pathL' uri'
|
||||||
#if defined(INTERNAL_DOWNLOADER)
|
dl = do
|
||||||
dl https = do
|
|
||||||
#else
|
|
||||||
dl _ = do
|
|
||||||
#endif
|
|
||||||
lift $ $(logDebug) [i|downloading: #{serializeURIRef' uri'}|]
|
lift $ $(logDebug) [i|downloading: #{serializeURIRef' uri'}|]
|
||||||
lift getDownloader >>= \case
|
lift getDownloader >>= \case
|
||||||
Curl -> do
|
Curl -> do
|
||||||
@@ -448,9 +440,7 @@ downloadBS uri'
|
|||||||
pure $ L.fromStrict stdout
|
pure $ L.fromStrict stdout
|
||||||
CapturedProcess (ExitFailure i') _ _ -> throwE $ NonZeroExit i' (toFilePath exe) args
|
CapturedProcess (ExitFailure i') _ _ -> throwE $ NonZeroExit i' (toFilePath exe) args
|
||||||
#if defined(INTERNAL_DOWNLOADER)
|
#if defined(INTERNAL_DOWNLOADER)
|
||||||
Internal -> do
|
Internal -> liftE $ downloadBS' uri'
|
||||||
(_, host', fullPath', port') <- liftE $ uriToQuadruple uri'
|
|
||||||
liftE $ downloadBS' https host' fullPath' port'
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -1,253 +0,0 @@
|
|||||||
{-# LANGUAGE DataKinds #-}
|
|
||||||
{-# LANGUAGE DeriveGeneric #-}
|
|
||||||
{-# LANGUAGE FlexibleContexts #-}
|
|
||||||
{-# LANGUAGE OverloadedStrings #-}
|
|
||||||
{-# LANGUAGE QuasiQuotes #-}
|
|
||||||
{-# LANGUAGE TemplateHaskell #-}
|
|
||||||
{-# LANGUAGE TypeApplications #-}
|
|
||||||
{-# LANGUAGE TypeFamilies #-}
|
|
||||||
|
|
||||||
|
|
||||||
module GHCup.Download.IOStreams where
|
|
||||||
|
|
||||||
|
|
||||||
import GHCup.Download.Utils
|
|
||||||
import GHCup.Errors
|
|
||||||
import GHCup.Types.Optics
|
|
||||||
import GHCup.Types.JSON ( )
|
|
||||||
import GHCup.Utils.File
|
|
||||||
import GHCup.Utils.Prelude
|
|
||||||
|
|
||||||
import Control.Applicative
|
|
||||||
import Control.Exception.Safe
|
|
||||||
import Control.Monad
|
|
||||||
import Control.Monad.Reader
|
|
||||||
import Data.ByteString ( ByteString )
|
|
||||||
import Data.ByteString.Builder
|
|
||||||
import Data.CaseInsensitive ( CI )
|
|
||||||
import Data.IORef
|
|
||||||
import Data.Maybe
|
|
||||||
import Data.Text.Read
|
|
||||||
import HPath
|
|
||||||
import HPath.IO as HIO
|
|
||||||
import Haskus.Utils.Variant.Excepts
|
|
||||||
import Network.Http.Client hiding ( URL )
|
|
||||||
import Optics
|
|
||||||
import Prelude hiding ( abs
|
|
||||||
, readFile
|
|
||||||
, writeFile
|
|
||||||
)
|
|
||||||
import "unix" System.Posix.IO.ByteString
|
|
||||||
hiding ( fdWrite )
|
|
||||||
import "unix-bytestring" System.Posix.IO.ByteString
|
|
||||||
( fdWrite )
|
|
||||||
import System.ProgressBar
|
|
||||||
import URI.ByteString
|
|
||||||
|
|
||||||
import qualified Data.ByteString as BS
|
|
||||||
import qualified Data.ByteString.Lazy as L
|
|
||||||
import qualified Data.Map.Strict as M
|
|
||||||
import qualified System.IO.Streams as Streams
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
----------------------------
|
|
||||||
--[ Low-level (non-curl) ]--
|
|
||||||
----------------------------
|
|
||||||
|
|
||||||
|
|
||||||
-- | Load the result of this download into memory at once.
|
|
||||||
downloadBS' :: MonadIO m
|
|
||||||
=> Bool -- ^ https?
|
|
||||||
-> ByteString -- ^ host (e.g. "www.example.com")
|
|
||||||
-> ByteString -- ^ path (e.g. "/my/file") including query
|
|
||||||
-> Maybe Int -- ^ optional port (e.g. 3000)
|
|
||||||
-> Excepts
|
|
||||||
'[ HTTPStatusError
|
|
||||||
, URIParseError
|
|
||||||
, UnsupportedScheme
|
|
||||||
, NoLocationHeader
|
|
||||||
, TooManyRedirs
|
|
||||||
]
|
|
||||||
m
|
|
||||||
(L.ByteString)
|
|
||||||
downloadBS' https host path port = do
|
|
||||||
bref <- liftIO $ newIORef (mempty :: Builder)
|
|
||||||
let stepper bs = modifyIORef bref (<> byteString bs)
|
|
||||||
downloadInternal False https host path port stepper
|
|
||||||
liftIO (readIORef bref <&> toLazyByteString)
|
|
||||||
|
|
||||||
|
|
||||||
downloadToFile :: (MonadMask m, MonadIO m)
|
|
||||||
=> Bool -- ^ https?
|
|
||||||
-> ByteString -- ^ host (e.g. "www.example.com")
|
|
||||||
-> ByteString -- ^ path (e.g. "/my/file") including query
|
|
||||||
-> Maybe Int -- ^ optional port (e.g. 3000)
|
|
||||||
-> Path Abs -- ^ destination file to create and write to
|
|
||||||
-> Excepts '[DownloadFailed] m ()
|
|
||||||
downloadToFile https host fullPath port destFile = do
|
|
||||||
fd <- liftIO $ createRegularFileFd newFilePerms destFile
|
|
||||||
let stepper = fdWrite fd
|
|
||||||
flip finally (liftIO $ closeFd fd)
|
|
||||||
$ reThrowAll DownloadFailed $ downloadInternal True https host fullPath port stepper
|
|
||||||
|
|
||||||
|
|
||||||
downloadInternal :: MonadIO m
|
|
||||||
=> Bool -- ^ whether to show a progress bar
|
|
||||||
-> Bool -- ^ https?
|
|
||||||
-> ByteString -- ^ host
|
|
||||||
-> ByteString -- ^ path with query
|
|
||||||
-> Maybe Int -- ^ optional port
|
|
||||||
-> (ByteString -> IO a) -- ^ the consuming step function
|
|
||||||
-> Excepts
|
|
||||||
'[ HTTPStatusError
|
|
||||||
, URIParseError
|
|
||||||
, UnsupportedScheme
|
|
||||||
, NoLocationHeader
|
|
||||||
, TooManyRedirs
|
|
||||||
]
|
|
||||||
m
|
|
||||||
()
|
|
||||||
downloadInternal = go (5 :: Int)
|
|
||||||
|
|
||||||
where
|
|
||||||
go redirs progressBar https host path port consumer = do
|
|
||||||
r <- liftIO $ withConnection' https host port action
|
|
||||||
veitherToExcepts r >>= \case
|
|
||||||
Just r' ->
|
|
||||||
if redirs > 0 then followRedirectURL r' else throwE TooManyRedirs
|
|
||||||
Nothing -> pure ()
|
|
||||||
where
|
|
||||||
action c = do
|
|
||||||
let q = buildRequest1 $ http GET path
|
|
||||||
|
|
||||||
sendRequest c q emptyBody
|
|
||||||
|
|
||||||
receiveResponse
|
|
||||||
c
|
|
||||||
(\r i' -> runE $ do
|
|
||||||
let scode = getStatusCode r
|
|
||||||
if
|
|
||||||
| scode >= 200 && scode < 300 -> downloadStream r i' >> pure Nothing
|
|
||||||
| scode >= 300 && scode < 400 -> case getHeader r "Location" of
|
|
||||||
Just r' -> pure $ Just $ r'
|
|
||||||
Nothing -> throwE NoLocationHeader
|
|
||||||
| otherwise -> throwE $ HTTPStatusError scode
|
|
||||||
)
|
|
||||||
|
|
||||||
followRedirectURL bs = case parseURI strictURIParserOptions bs of
|
|
||||||
Right uri' -> do
|
|
||||||
(https', host', fullPath', port') <- liftE $ uriToQuadruple uri'
|
|
||||||
go (redirs - 1) progressBar https' host' fullPath' port' consumer
|
|
||||||
Left e -> throwE e
|
|
||||||
|
|
||||||
downloadStream r i' = do
|
|
||||||
let size = case getHeader r "Content-Length" of
|
|
||||||
Just x' -> case decimal $ decUTF8Safe x' of
|
|
||||||
Left _ -> 0
|
|
||||||
Right (r', _) -> r'
|
|
||||||
Nothing -> 0
|
|
||||||
|
|
||||||
mpb <- if progressBar
|
|
||||||
then Just <$> (liftIO $ newProgressBar defStyle 10 (Progress 0 size ()))
|
|
||||||
else pure Nothing
|
|
||||||
|
|
||||||
outStream <- liftIO $ Streams.makeOutputStream
|
|
||||||
(\case
|
|
||||||
Just bs -> do
|
|
||||||
forM_ mpb $ \pb -> incProgress pb (BS.length bs)
|
|
||||||
void $ consumer bs
|
|
||||||
Nothing -> pure ()
|
|
||||||
)
|
|
||||||
liftIO $ Streams.connect i' outStream
|
|
||||||
|
|
||||||
|
|
||||||
getHead :: (MonadCatch m, MonadIO m)
|
|
||||||
=> URI
|
|
||||||
-> Excepts
|
|
||||||
'[ HTTPStatusError
|
|
||||||
, URIParseError
|
|
||||||
, UnsupportedScheme
|
|
||||||
, NoLocationHeader
|
|
||||||
, TooManyRedirs
|
|
||||||
, ProcessError
|
|
||||||
]
|
|
||||||
m
|
|
||||||
(M.Map (CI ByteString) ByteString)
|
|
||||||
getHead uri' | scheme == "https" = head' True
|
|
||||||
| scheme == "http" = head' False
|
|
||||||
| otherwise = throwE UnsupportedScheme
|
|
||||||
|
|
||||||
where
|
|
||||||
scheme = view (uriSchemeL' % schemeBSL') uri'
|
|
||||||
head' https = do
|
|
||||||
(_, host', fullPath', port') <- liftE $ uriToQuadruple uri'
|
|
||||||
liftE $ headInternal https host' fullPath' port'
|
|
||||||
|
|
||||||
|
|
||||||
headInternal :: MonadIO m
|
|
||||||
=> Bool -- ^ https?
|
|
||||||
-> ByteString -- ^ host
|
|
||||||
-> ByteString -- ^ path with query
|
|
||||||
-> Maybe Int -- ^ optional port
|
|
||||||
-> Excepts
|
|
||||||
'[ HTTPStatusError
|
|
||||||
, URIParseError
|
|
||||||
, UnsupportedScheme
|
|
||||||
, TooManyRedirs
|
|
||||||
, NoLocationHeader
|
|
||||||
]
|
|
||||||
m
|
|
||||||
(M.Map (CI ByteString) ByteString)
|
|
||||||
headInternal = go (5 :: Int)
|
|
||||||
|
|
||||||
where
|
|
||||||
go redirs https host path port = do
|
|
||||||
r <- liftIO $ withConnection' https host port action
|
|
||||||
veitherToExcepts r >>= \case
|
|
||||||
Left r' ->
|
|
||||||
if redirs > 0 then followRedirectURL r' else throwE TooManyRedirs
|
|
||||||
Right hs -> pure hs
|
|
||||||
where
|
|
||||||
|
|
||||||
action c = do
|
|
||||||
let q = buildRequest1 $ http HEAD path
|
|
||||||
|
|
||||||
sendRequest c q emptyBody
|
|
||||||
|
|
||||||
unsafeReceiveResponse
|
|
||||||
c
|
|
||||||
(\r _ -> runE $ do
|
|
||||||
let scode = getStatusCode r
|
|
||||||
if
|
|
||||||
| scode >= 200 && scode < 300 -> do
|
|
||||||
let headers = getHeaderMap r
|
|
||||||
pure $ Right $ headers
|
|
||||||
| scode >= 300 && scode < 400 -> case getHeader r "Location" of
|
|
||||||
Just r' -> pure $ Left $ r'
|
|
||||||
Nothing -> throwE NoLocationHeader
|
|
||||||
| otherwise -> throwE $ HTTPStatusError scode
|
|
||||||
)
|
|
||||||
|
|
||||||
followRedirectURL bs = case parseURI strictURIParserOptions bs of
|
|
||||||
Right uri' -> do
|
|
||||||
(https', host', fullPath', port') <- liftE $ uriToQuadruple uri'
|
|
||||||
go (redirs - 1) https' host' fullPath' port'
|
|
||||||
Left e -> throwE e
|
|
||||||
|
|
||||||
|
|
||||||
withConnection' :: Bool
|
|
||||||
-> ByteString
|
|
||||||
-> Maybe Int
|
|
||||||
-> (Connection -> IO a)
|
|
||||||
-> IO a
|
|
||||||
withConnection' https host port action = bracket acquire closeConnection action
|
|
||||||
|
|
||||||
where
|
|
||||||
acquire = case https of
|
|
||||||
True -> do
|
|
||||||
ctx <- baselineContextSSL
|
|
||||||
openConnectionSSL ctx host (fromIntegral $ fromMaybe 443 port)
|
|
||||||
False -> openConnection host (fromIntegral $ fromMaybe 80 port)
|
|
||||||
214
lib/GHCup/Download/Internal.hs
Normal file
214
lib/GHCup/Download/Internal.hs
Normal file
@@ -0,0 +1,214 @@
|
|||||||
|
{-# LANGUAGE CPP #-}
|
||||||
|
{-# LANGUAGE DataKinds #-}
|
||||||
|
{-# LANGUAGE DeriveGeneric #-}
|
||||||
|
{-# LANGUAGE FlexibleContexts #-}
|
||||||
|
{-# LANGUAGE OverloadedStrings #-}
|
||||||
|
{-# LANGUAGE QuasiQuotes #-}
|
||||||
|
{-# LANGUAGE TemplateHaskell #-}
|
||||||
|
{-# LANGUAGE TypeApplications #-}
|
||||||
|
{-# LANGUAGE TypeFamilies #-}
|
||||||
|
|
||||||
|
|
||||||
|
module GHCup.Download.Internal where
|
||||||
|
|
||||||
|
|
||||||
|
import GHCup.Errors
|
||||||
|
import GHCup.Types.Optics
|
||||||
|
import GHCup.Types.JSON ( )
|
||||||
|
import GHCup.Utils.File
|
||||||
|
import GHCup.Utils.Prelude
|
||||||
|
|
||||||
|
import Control.Applicative
|
||||||
|
import Control.Exception.Safe
|
||||||
|
import Control.Monad
|
||||||
|
import Control.Monad.Reader
|
||||||
|
import Data.ByteString ( ByteString )
|
||||||
|
import Data.ByteString.Builder
|
||||||
|
import Data.CaseInsensitive ( CI )
|
||||||
|
import Data.IORef
|
||||||
|
import Data.Maybe
|
||||||
|
import Data.Text.Read
|
||||||
|
import HPath
|
||||||
|
import HPath.IO as HIO
|
||||||
|
import Haskus.Utils.Variant.Excepts
|
||||||
|
import Network.HTTP.Client
|
||||||
|
import Network.HTTP.Client.OpenSSL
|
||||||
|
import Network.HTTP.Types.Status
|
||||||
|
import Network.HTTP.Types.Header
|
||||||
|
import Optics
|
||||||
|
import Prelude hiding ( abs
|
||||||
|
, readFile
|
||||||
|
, writeFile
|
||||||
|
)
|
||||||
|
import "unix" System.Posix.IO.ByteString
|
||||||
|
hiding ( fdWrite )
|
||||||
|
import "unix-bytestring" System.Posix.IO.ByteString
|
||||||
|
( fdWrite )
|
||||||
|
import System.ProgressBar
|
||||||
|
import URI.ByteString
|
||||||
|
|
||||||
|
import qualified Data.ByteString as BS
|
||||||
|
import qualified Data.ByteString.Lazy as L
|
||||||
|
import qualified Data.Map.Strict as M
|
||||||
|
import qualified Data.Text as T
|
||||||
|
import qualified OpenSSL.Session as SSL
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
----------------------------
|
||||||
|
--[ Low-level (non-curl) ]--
|
||||||
|
----------------------------
|
||||||
|
|
||||||
|
|
||||||
|
-- | Load the result of this download into memory at once.
|
||||||
|
downloadBS' :: (MonadThrow m, MonadIO m)
|
||||||
|
=> URI
|
||||||
|
-> Excepts
|
||||||
|
'[HTTPStatusError]
|
||||||
|
m
|
||||||
|
(L.ByteString)
|
||||||
|
downloadBS' uri' = do
|
||||||
|
bref <- liftIO $ newIORef (mempty :: Builder)
|
||||||
|
-- TODO: performance
|
||||||
|
let stepper bs = modifyIORef bref (<> byteString bs)
|
||||||
|
downloadInternal False
|
||||||
|
(T.unpack . decUTF8Safe . serializeURIRef' $ uri')
|
||||||
|
stepper
|
||||||
|
liftIO (readIORef bref <&> toLazyByteString)
|
||||||
|
|
||||||
|
|
||||||
|
downloadToFile :: (MonadMask m, MonadIO m)
|
||||||
|
=> URI
|
||||||
|
-> Path Abs -- ^ destination file to create and write to
|
||||||
|
-> Excepts '[DownloadFailed] m ()
|
||||||
|
downloadToFile uri' destFile = do
|
||||||
|
fd <- liftIO $ createRegularFileFd newFilePerms destFile
|
||||||
|
let stepper = fdWrite fd
|
||||||
|
flip finally (liftIO $ closeFd fd)
|
||||||
|
$ reThrowAll DownloadFailed
|
||||||
|
$ downloadInternal True
|
||||||
|
(T.unpack . decUTF8Safe . serializeURIRef' $ uri')
|
||||||
|
stepper
|
||||||
|
|
||||||
|
|
||||||
|
downloadInternal :: (MonadThrow m, MonadIO m)
|
||||||
|
=> Bool -- ^ whether to show a progress bar
|
||||||
|
-> String
|
||||||
|
-> (ByteString -> IO a) -- ^ the consuming step function
|
||||||
|
-> Excepts
|
||||||
|
'[HTTPStatusError]
|
||||||
|
m
|
||||||
|
()
|
||||||
|
downloadInternal progressBar uri' consumer = lEM $ liftIO $ withConnection' action
|
||||||
|
where
|
||||||
|
action :: (MonadThrow m, MonadIO m) => Manager -> m (Either HTTPStatusError ())
|
||||||
|
action m = do
|
||||||
|
request <- parseRequest ("GET " <> uri')
|
||||||
|
liftIO $ withResponse
|
||||||
|
request
|
||||||
|
m
|
||||||
|
(\r -> do
|
||||||
|
let scode = statusCode . responseStatus $ r
|
||||||
|
if
|
||||||
|
| scode >= 200 && scode < 300 ->
|
||||||
|
let headers = M.fromList . responseHeaders $ r
|
||||||
|
in fmap Right $ liftIO $ downloadStream (responseBody r) headers
|
||||||
|
| otherwise -> pure $ Left $ HTTPStatusError scode
|
||||||
|
)
|
||||||
|
|
||||||
|
downloadStream :: BodyReader -> M.Map HeaderName ByteString -> IO ()
|
||||||
|
downloadStream br headers = do
|
||||||
|
let size = case M.lookup "Content-Length" headers of
|
||||||
|
Just x' -> case decimal $ decUTF8Safe x' of
|
||||||
|
Left _ -> 0
|
||||||
|
Right (r', _) -> r'
|
||||||
|
Nothing -> 0
|
||||||
|
|
||||||
|
mpb <- if progressBar
|
||||||
|
then Just <$> (liftIO $ newProgressBar defStyle 10 (Progress 0 size ()))
|
||||||
|
else pure Nothing
|
||||||
|
|
||||||
|
loop mpb
|
||||||
|
|
||||||
|
where
|
||||||
|
loop mpb = do
|
||||||
|
bs <- brRead br
|
||||||
|
if BS.length bs == 0 then pure () else do
|
||||||
|
void $ consumer bs
|
||||||
|
forM_ mpb $ \pb -> incProgress pb (BS.length bs)
|
||||||
|
loop mpb
|
||||||
|
|
||||||
|
|
||||||
|
getHead :: (MonadCatch m, MonadIO m)
|
||||||
|
=> URI
|
||||||
|
-> Excepts
|
||||||
|
'[HTTPStatusError, UnsupportedScheme]
|
||||||
|
m
|
||||||
|
(M.Map (CI ByteString) ByteString)
|
||||||
|
getHead uri' | scheme == "https" || scheme == "http" = head'
|
||||||
|
| otherwise = throwE UnsupportedScheme
|
||||||
|
|
||||||
|
where
|
||||||
|
scheme = view (uriSchemeL' % schemeBSL') uri'
|
||||||
|
head' =
|
||||||
|
liftE $ headInternal (T.unpack . decUTF8Safe . serializeURIRef' $ uri')
|
||||||
|
|
||||||
|
|
||||||
|
headInternal :: (MonadThrow m, MonadIO m)
|
||||||
|
=> String
|
||||||
|
-> Excepts
|
||||||
|
'[HTTPStatusError]
|
||||||
|
m
|
||||||
|
(M.Map (CI ByteString) ByteString)
|
||||||
|
headInternal uri' = lEM $ liftIO $ withConnection' action
|
||||||
|
where
|
||||||
|
action :: (MonadThrow m, MonadIO m)
|
||||||
|
=> Manager
|
||||||
|
-> m (Either HTTPStatusError (M.Map (CI ByteString) ByteString))
|
||||||
|
action m = do
|
||||||
|
request <- parseRequest ("HEAD " <> uri')
|
||||||
|
liftIO $ withResponse
|
||||||
|
request
|
||||||
|
m
|
||||||
|
(\r -> do
|
||||||
|
let scode = statusCode . responseStatus $ r
|
||||||
|
if
|
||||||
|
| scode >= 200 && scode < 300 -> do
|
||||||
|
let headers = responseHeaders r
|
||||||
|
pure $ Right $ M.fromList $ headers
|
||||||
|
| otherwise -> pure $ Left (HTTPStatusError scode)
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
|
withConnection' :: (Manager -> IO a) -> IO a
|
||||||
|
withConnection' action = do
|
||||||
|
mg <- newManager $ opensslManagerSettings baselineContextSSL
|
||||||
|
withOpenSSL (action mg)
|
||||||
|
|
||||||
|
|
||||||
|
baselineContextSSL :: IO SSL.SSLContext
|
||||||
|
baselineContextSSL = withOpenSSL $ do
|
||||||
|
ctx <- SSL.context
|
||||||
|
SSL.contextSetDefaultCiphers ctx
|
||||||
|
#if defined(darwin_HOST_OS)
|
||||||
|
SSL.contextSetVerificationMode ctx SSL.VerifyNone
|
||||||
|
#elif defined(mingw32_HOST_OS)
|
||||||
|
SSL.contextSetVerificationMode ctx SSL.VerifyNone
|
||||||
|
#elif defined(freebsd_HOST_OS)
|
||||||
|
SSL.contextSetCAFile ctx "/usr/local/etc/ssl/cert.pem"
|
||||||
|
SSL.contextSetVerificationMode ctx $ SSL.VerifyPeer True True Nothing
|
||||||
|
#elif defined(openbsd_HOST_OS)
|
||||||
|
SSL.contextSetCAFile ctx "/etc/ssl/cert.pem"
|
||||||
|
SSL.contextSetVerificationMode ctx $ SSL.VerifyPeer True True Nothing
|
||||||
|
#else
|
||||||
|
fedora <- doesDirectoryExist [abs|/etc/pki/tls|]
|
||||||
|
if fedora
|
||||||
|
then do
|
||||||
|
SSL.contextSetCAFile ctx "/etc/pki/tls/certs/ca-bundle.crt"
|
||||||
|
else do
|
||||||
|
SSL.contextSetCADirectory ctx "/etc/ssl/certs"
|
||||||
|
SSL.contextSetVerificationMode ctx $ SSL.VerifyPeer True True Nothing
|
||||||
|
#endif
|
||||||
|
return ctx
|
||||||
@@ -1,64 +0,0 @@
|
|||||||
{-# LANGUAGE DataKinds #-}
|
|
||||||
{-# LANGUAGE DeriveGeneric #-}
|
|
||||||
{-# LANGUAGE FlexibleContexts #-}
|
|
||||||
{-# LANGUAGE OverloadedStrings #-}
|
|
||||||
{-# LANGUAGE QuasiQuotes #-}
|
|
||||||
{-# LANGUAGE TemplateHaskell #-}
|
|
||||||
{-# LANGUAGE TypeApplications #-}
|
|
||||||
{-# LANGUAGE TypeFamilies #-}
|
|
||||||
|
|
||||||
|
|
||||||
module GHCup.Download.Utils where
|
|
||||||
|
|
||||||
|
|
||||||
import GHCup.Errors
|
|
||||||
import GHCup.Types.Optics
|
|
||||||
import GHCup.Types.JSON ( )
|
|
||||||
import GHCup.Utils.Prelude
|
|
||||||
|
|
||||||
import Control.Applicative
|
|
||||||
import Control.Monad
|
|
||||||
import Data.ByteString ( ByteString )
|
|
||||||
import Data.Maybe
|
|
||||||
import Haskus.Utils.Variant.Excepts
|
|
||||||
import Optics
|
|
||||||
import Prelude hiding ( abs
|
|
||||||
, readFile
|
|
||||||
, writeFile
|
|
||||||
)
|
|
||||||
import URI.ByteString
|
|
||||||
|
|
||||||
import qualified Data.Binary.Builder as B
|
|
||||||
import qualified Data.ByteString as BS
|
|
||||||
import qualified Data.ByteString.Lazy as L
|
|
||||||
|
|
||||||
|
|
||||||
-- | Extracts from a URI type: (https?, host, path+query, port)
|
|
||||||
uriToQuadruple :: Monad m
|
|
||||||
=> URI
|
|
||||||
-> Excepts
|
|
||||||
'[UnsupportedScheme]
|
|
||||||
m
|
|
||||||
(Bool, ByteString, ByteString, Maybe Int)
|
|
||||||
uriToQuadruple URI {..} = do
|
|
||||||
let scheme = view schemeBSL' uriScheme
|
|
||||||
|
|
||||||
host <-
|
|
||||||
preview (_Just % authorityHostL' % hostBSL') uriAuthority
|
|
||||||
?? UnsupportedScheme
|
|
||||||
|
|
||||||
https <- if
|
|
||||||
| scheme == "https" -> pure True
|
|
||||||
| scheme == "http" -> pure False
|
|
||||||
| otherwise -> throwE UnsupportedScheme
|
|
||||||
|
|
||||||
let queryBS =
|
|
||||||
BS.intercalate "&"
|
|
||||||
. fmap (\(x, y) -> encodeQuery x <> "=" <> encodeQuery y)
|
|
||||||
$ (queryPairs uriQuery)
|
|
||||||
port =
|
|
||||||
preview (_Just % authorityPortL' % _Just % portNumberL') uriAuthority
|
|
||||||
fullpath = if BS.null queryBS then uriPath else uriPath <> "?" <> queryBS
|
|
||||||
pure (https, host, fullpath, port)
|
|
||||||
where encodeQuery = L.toStrict . B.toLazyByteString . urlEncodeQuery
|
|
||||||
|
|
||||||
@@ -91,11 +91,18 @@ getPlatform = do
|
|||||||
)
|
)
|
||||||
<$> getDarwinVersion
|
<$> getDarwinVersion
|
||||||
pure $ PlatformResult { _platform = Darwin, _distroVersion = ver }
|
pure $ PlatformResult { _platform = Darwin, _distroVersion = ver }
|
||||||
|
"freebsd" -> do
|
||||||
|
ver <-
|
||||||
|
(either (const Nothing) Just . versioning . decUTF8Safe)
|
||||||
|
<$> getFreeBSDVersion
|
||||||
|
pure $ PlatformResult { _platform = FreeBSD, _distroVersion = ver }
|
||||||
what -> throwE $ NoCompatiblePlatform what
|
what -> throwE $ NoCompatiblePlatform what
|
||||||
lift $ $(logDebug) [i|Identified Platform as: #{pfr}|]
|
lift $ $(logDebug) [i|Identified Platform as: #{pfr}|]
|
||||||
pure pfr
|
pure pfr
|
||||||
where
|
where
|
||||||
getMajorVersion = T.intercalate "." . take 2 . T.split (== '.')
|
getMajorVersion = T.intercalate "." . take 2 . T.split (== '.')
|
||||||
|
getFreeBSDVersion =
|
||||||
|
liftIO $ fmap _stdOut $ executeOut [rel|freebsd-version|] [] Nothing
|
||||||
getDarwinVersion = liftIO $ fmap _stdOut $ executeOut [rel|sw_vers|]
|
getDarwinVersion = liftIO $ fmap _stdOut $ executeOut [rel|sw_vers|]
|
||||||
["-productVersion"]
|
["-productVersion"]
|
||||||
Nothing
|
Nothing
|
||||||
|
|||||||
@@ -102,6 +102,8 @@ data Architecture = A_64
|
|||||||
data Platform = Linux LinuxDistro
|
data Platform = Linux LinuxDistro
|
||||||
-- ^ must exit
|
-- ^ must exit
|
||||||
| Darwin
|
| Darwin
|
||||||
|
-- ^ must exit
|
||||||
|
| FreeBSD
|
||||||
deriving (Eq, GHC.Generic, Ord, Show)
|
deriving (Eq, GHC.Generic, Ord, Show)
|
||||||
|
|
||||||
data LinuxDistro = Debian
|
data LinuxDistro = Debian
|
||||||
|
|||||||
@@ -97,11 +97,13 @@ instance FromJSONKey (Maybe Versioning) where
|
|||||||
instance ToJSONKey Platform where
|
instance ToJSONKey Platform where
|
||||||
toJSONKey = toJSONKeyText $ \case
|
toJSONKey = toJSONKeyText $ \case
|
||||||
Darwin -> T.pack "Darwin"
|
Darwin -> T.pack "Darwin"
|
||||||
|
FreeBSD -> T.pack "FreeBSD"
|
||||||
Linux d -> T.pack ("Linux_" <> show d)
|
Linux d -> T.pack ("Linux_" <> show d)
|
||||||
|
|
||||||
instance FromJSONKey Platform where
|
instance FromJSONKey Platform where
|
||||||
fromJSONKey = FromJSONKeyTextParser $ \t -> if
|
fromJSONKey = FromJSONKeyTextParser $ \t -> if
|
||||||
| T.pack "Darwin" == t -> pure Darwin
|
| T.pack "Darwin" == t -> pure Darwin
|
||||||
|
| T.pack "FreeBSD" == t -> pure FreeBSD
|
||||||
| T.pack "Linux_" `T.isPrefixOf` t -> case
|
| T.pack "Linux_" `T.isPrefixOf` t -> case
|
||||||
T.stripPrefix (T.pack "Linux_") t
|
T.stripPrefix (T.pack "Linux_") t
|
||||||
of
|
of
|
||||||
|
|||||||
@@ -1,8 +1,12 @@
|
|||||||
|
{-# OPTIONS_GHC -Wno-orphans #-}
|
||||||
|
|
||||||
{-# LANGUAGE DataKinds #-}
|
{-# LANGUAGE DataKinds #-}
|
||||||
{-# LANGUAGE DeriveLift #-}
|
{-# LANGUAGE DeriveLift #-}
|
||||||
{-# LANGUAGE FlexibleContexts #-}
|
{-# LANGUAGE FlexibleContexts #-}
|
||||||
{-# LANGUAGE FlexibleInstances #-}
|
{-# LANGUAGE FlexibleInstances #-}
|
||||||
{-# LANGUAGE QuasiQuotes #-}
|
{-# LANGUAGE QuasiQuotes #-}
|
||||||
|
{-# LANGUAGE MultiParamTypeClasses #-}
|
||||||
|
{-# LANGUAGE UndecidableInstances #-}
|
||||||
{-# LANGUAGE ScopedTypeVariables #-}
|
{-# LANGUAGE ScopedTypeVariables #-}
|
||||||
{-# LANGUAGE TypeApplications #-}
|
{-# LANGUAGE TypeApplications #-}
|
||||||
{-# LANGUAGE TypeFamilies #-}
|
{-# LANGUAGE TypeFamilies #-}
|
||||||
@@ -13,8 +17,10 @@ module GHCup.Utils.Prelude where
|
|||||||
import Control.Applicative
|
import Control.Applicative
|
||||||
import Control.Exception.Safe
|
import Control.Exception.Safe
|
||||||
import Control.Monad
|
import Control.Monad
|
||||||
|
import Control.Monad.Base
|
||||||
import Control.Monad.IO.Class
|
import Control.Monad.IO.Class
|
||||||
import Control.Monad.Trans.Class ( lift )
|
import Control.Monad.Trans.Class ( lift )
|
||||||
|
import Control.Monad.Trans.Control
|
||||||
import Data.Bifunctor
|
import Data.Bifunctor
|
||||||
import Data.ByteString ( ByteString )
|
import Data.ByteString ( ByteString )
|
||||||
import Data.String
|
import Data.String
|
||||||
@@ -264,3 +270,40 @@ decUTF8Safe = E.decodeUtf8With E.lenientDecode
|
|||||||
|
|
||||||
decUTF8Safe' :: L.ByteString -> Text
|
decUTF8Safe' :: L.ByteString -> Text
|
||||||
decUTF8Safe' = TL.toStrict . TLE.decodeUtf8With E.lenientDecode
|
decUTF8Safe' = TL.toStrict . TLE.decodeUtf8With E.lenientDecode
|
||||||
|
|
||||||
|
|
||||||
|
instance MonadBaseControl b m => MonadBaseControl b (Excepts e m) where
|
||||||
|
type StM (Excepts e m) a = ComposeSt (Excepts e) m a
|
||||||
|
liftBaseWith = defaultLiftBaseWith
|
||||||
|
restoreM = defaultRestoreM
|
||||||
|
{-# INLINABLE liftBaseWith #-}
|
||||||
|
{-# INLINABLE restoreM #-}
|
||||||
|
|
||||||
|
instance MonadTransControl (Excepts e) where
|
||||||
|
type StT (Excepts e) a = VEither e a
|
||||||
|
liftWith f = veitherMToExcepts <$> liftM return $ f $ runE
|
||||||
|
restoreT = veitherMToExcepts
|
||||||
|
{-# INLINABLE liftWith #-}
|
||||||
|
{-# INLINABLE restoreT #-}
|
||||||
|
|
||||||
|
instance MonadBase b m => MonadBase b (Excepts e m) where
|
||||||
|
liftBase = liftBaseDefault
|
||||||
|
{-# INLINABLE liftBase #-}
|
||||||
|
|
||||||
|
instance MonadBaseControl (VEither e) (VEither e) where
|
||||||
|
type StM (VEither e) a = a
|
||||||
|
liftBaseWith f = f id
|
||||||
|
restoreM = return
|
||||||
|
{-# INLINABLE liftBaseWith #-}
|
||||||
|
{-# INLINABLE restoreM #-}
|
||||||
|
|
||||||
|
instance MonadBase (VEither e) (VEither e) where
|
||||||
|
liftBase = id
|
||||||
|
{-# INLINABLE liftBase #-}
|
||||||
|
|
||||||
|
|
||||||
|
veitherMToExcepts :: Monad m => m (VEither es a) -> Excepts es m a
|
||||||
|
veitherMToExcepts ma = do
|
||||||
|
ve <- lift ma
|
||||||
|
veitherToExcepts ve
|
||||||
|
|
||||||
|
|||||||
@@ -16,7 +16,7 @@ ghcupURL :: URI
|
|||||||
ghcupURL = [uri|https://www.haskell.org/ghcup/data/ghcup-0.0.2.json|]
|
ghcupURL = [uri|https://www.haskell.org/ghcup/data/ghcup-0.0.2.json|]
|
||||||
|
|
||||||
ghcUpVer :: PVP
|
ghcUpVer :: PVP
|
||||||
ghcUpVer = [pver|0.1.7|]
|
ghcUpVer = [pver|0.1.6|]
|
||||||
|
|
||||||
numericVer :: String
|
numericVer :: String
|
||||||
numericVer = T.unpack . prettyPVP $ ghcUpVer
|
numericVer = T.unpack . prettyPVP $ ghcUpVer
|
||||||
|
|||||||
@@ -134,6 +134,7 @@ hr {
|
|||||||
|
|
||||||
#platform-instructions-linux > div > pre,
|
#platform-instructions-linux > div > pre,
|
||||||
#platform-instructions-mac > div > pre,
|
#platform-instructions-mac > div > pre,
|
||||||
|
#platform-instructions-freebsd > div > pre,
|
||||||
#platform-instructions-win32 > div > pre,
|
#platform-instructions-win32 > div > pre,
|
||||||
#platform-instructions-win64 > div > pre,
|
#platform-instructions-win64 > div > pre,
|
||||||
#platform-instructions-default > div > div > pre,
|
#platform-instructions-default > div > div > pre,
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
var platforms = ["default", "unknown", "win32", "win64", "linux", "mac"];
|
var platforms = ["default", "unknown", "win32", "win64", "linux", "freebsd", "mac"];
|
||||||
var platform_override = null;
|
var platform_override = null;
|
||||||
|
|
||||||
function detect_platform() {
|
function detect_platform() {
|
||||||
@@ -25,6 +25,8 @@ function detect_platform() {
|
|||||||
if (navigator.platform == "Win64" ||
|
if (navigator.platform == "Win64" ||
|
||||||
navigator.userAgent.indexOf("WOW64") != -1 ||
|
navigator.userAgent.indexOf("WOW64") != -1 ||
|
||||||
navigator.userAgent.indexOf("Win64") != -1) { os = "win64"; }
|
navigator.userAgent.indexOf("Win64") != -1) { os = "win64"; }
|
||||||
|
if (navigator.platform == "FreeBSD x86_64") {os = "freebsd";}
|
||||||
|
if (navigator.platform == "FreeBSD amd64") {os = "freebsd";}
|
||||||
// if (navigator.platform == "NetBSD x86_64") {os = "unix";}
|
// if (navigator.platform == "NetBSD x86_64") {os = "unix";}
|
||||||
// if (navigator.platform == "NetBSD amd64") {os = "unix";}
|
// if (navigator.platform == "NetBSD amd64") {os = "unix";}
|
||||||
|
|
||||||
@@ -32,6 +34,7 @@ function detect_platform() {
|
|||||||
if (os == "unknown") {
|
if (os == "unknown") {
|
||||||
if (navigator.appVersion.indexOf("Win")!=-1) {os = "win32";}
|
if (navigator.appVersion.indexOf("Win")!=-1) {os = "win32";}
|
||||||
if (navigator.appVersion.indexOf("Mac")!=-1) {os = "mac";}
|
if (navigator.appVersion.indexOf("Mac")!=-1) {os = "mac";}
|
||||||
|
if (navigator.appVersion.indexOf("FreeBSD")!=-1) {os = "freebsd";}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Firefox Quantum likes to hide platform and appVersion but oscpu works
|
// Firefox Quantum likes to hide platform and appVersion but oscpu works
|
||||||
@@ -40,6 +43,7 @@ function detect_platform() {
|
|||||||
if (navigator.oscpu.indexOf("Win64")!=-1) {os = "win64";}
|
if (navigator.oscpu.indexOf("Win64")!=-1) {os = "win64";}
|
||||||
if (navigator.oscpu.indexOf("Mac")!=-1) {os = "mac";}
|
if (navigator.oscpu.indexOf("Mac")!=-1) {os = "mac";}
|
||||||
if (navigator.oscpu.indexOf("Linux")!=-1) {os = "linux";}
|
if (navigator.oscpu.indexOf("Linux")!=-1) {os = "linux";}
|
||||||
|
if (navigator.oscpu.indexOf("FreeBSD")!=-1) {os = "freebsd";}
|
||||||
// if (navigator.oscpu.indexOf("NetBSD")!=-1) {os = "unix";}
|
// if (navigator.oscpu.indexOf("NetBSD")!=-1) {os = "unix";}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -36,6 +36,12 @@
|
|||||||
<p class="other-help">If you don't like curl | sh, see <a href="https://gitlab.haskell.org/haskell/ghcup-hs#manual-install">other installation methods</a>.<br/>You appear to be running macOS. If not, <a class="default-platform-button" href="#">display all supported installers</a>.</p>
|
<p class="other-help">If you don't like curl | sh, see <a href="https://gitlab.haskell.org/haskell/ghcup-hs#manual-install">other installation methods</a>.<br/>You appear to be running macOS. If not, <a class="default-platform-button" href="#">display all supported installers</a>.</p>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
<div id="platform-instructions-freebsd" class="instructions" style="display: none;">
|
||||||
|
<p>Run the following in your terminal (as a user other than root), then follow the onscreen instructions.</p>
|
||||||
|
<div class="command-button"><pre><span class='ghcup-command'>curl --proto '=https' --tlsv1.2 -sSf https://get-ghcup.haskell.org | sh</span></pre><button class="tooltip" onclick="copyToClipboard()"><img src="copy.svg" alt="" /><span class="tooltiptext">Copy to clipboard</span></button></div>
|
||||||
|
<p class="other-help">If you don't like curl | sh, see <a href="https://gitlab.haskell.org/haskell/ghcup-hs#manual-install">other installation methods</a>.<br/>You appear to be running FreeBSD. If not, <a class="default-platform-button" href="#">display all supported installers</a>.</p>
|
||||||
|
</div>
|
||||||
|
|
||||||
<div id="platform-instructions-win32" class="instructions">
|
<div id="platform-instructions-win32" class="instructions">
|
||||||
<p>
|
<p>
|
||||||
To install Haskell, follow the instructions on
|
To install Haskell, follow the instructions on
|
||||||
@@ -62,7 +68,7 @@
|
|||||||
<!-- unrecognized platform: ask for help -->
|
<!-- unrecognized platform: ask for help -->
|
||||||
<p>I don't recognize your platform.</p>
|
<p>I don't recognize your platform.</p>
|
||||||
<p>
|
<p>
|
||||||
ghcup runs on Linux and macOS. If
|
ghcup runs on Linux, macOS and FreeBSD. If
|
||||||
you are on one of these platforms and are seeing this then please
|
you are on one of these platforms and are seeing this then please
|
||||||
<a href="https://gitlab.haskell.org/haskell/ghcup-hs/issues">report an issue</a>,
|
<a href="https://gitlab.haskell.org/haskell/ghcup-hs/issues">report an issue</a>,
|
||||||
along with the following values:
|
along with the following values:
|
||||||
@@ -77,7 +83,7 @@
|
|||||||
|
|
||||||
<!-- duplicate the default cross-platform instructions -->
|
<!-- duplicate the default cross-platform instructions -->
|
||||||
<div>
|
<div>
|
||||||
<p>If you are running Linux, macOS or Windows Subsystem for Linux, run the following in your terminal (as a user other than root), then follow the onscreen instructions.</p>
|
<p>If you are running Linux, macOS, FreeBSD or Windows Subsystem for Linux, run the following in your terminal (as a user other than root), then follow the onscreen instructions.</p>
|
||||||
<div class="command-button"><pre><span class='ghcup-command'>curl --proto '=https' --tlsv1.2 -sSf https://get-ghcup.haskell.org | sh</span></pre><button class="tooltip" onclick="copyToClipboard()"><img src="copy.svg" alt="" /><span class="tooltiptext">Copy to clipboard</span></button></div>
|
<div class="command-button"><pre><span class='ghcup-command'>curl --proto '=https' --tlsv1.2 -sSf https://get-ghcup.haskell.org | sh</span></pre><button class="tooltip" onclick="copyToClipboard()"><img src="copy.svg" alt="" /><span class="tooltiptext">Copy to clipboard</span></button></div>
|
||||||
<p class="other-help">If you don't like curl | sh, see <a href="https://gitlab.haskell.org/haskell/ghcup-hs#manual-install">other installation methods</a>.</p>
|
<p class="other-help">If you don't like curl | sh, see <a href="https://gitlab.haskell.org/haskell/ghcup-hs#manual-install">other installation methods</a>.</p>
|
||||||
</div>
|
</div>
|
||||||
@@ -95,7 +101,7 @@
|
|||||||
|
|
||||||
<div id="platform-instructions-default" class="instructions">
|
<div id="platform-instructions-default" class="instructions">
|
||||||
<div>
|
<div>
|
||||||
<p>To install Haskell, if you are running Linux, macOS or Windows Subsystem for Linux, run the following
|
<p>To install Haskell, if you are running Linux, macOS, FreeBSD or Windows Subsystem for Linux, run the following
|
||||||
in your terminal (as a user other than root), then follow the onscreen instructions.</p>
|
in your terminal (as a user other than root), then follow the onscreen instructions.</p>
|
||||||
<div class="command-button"><pre><span class='ghcup-command'>curl --proto '=https' --tlsv1.2 -sSf https://get-ghcup.haskell.org | sh</span></pre><button class="tooltip" onclick="copyToClipboard()"><img src="copy.svg" alt="" /><span class="tooltiptext">Copy to clipboard</span></button></div>
|
<div class="command-button"><pre><span class='ghcup-command'>curl --proto '=https' --tlsv1.2 -sSf https://get-ghcup.haskell.org | sh</span></pre><button class="tooltip" onclick="copyToClipboard()"><img src="copy.svg" alt="" /><span class="tooltiptext">Copy to clipboard</span></button></div>
|
||||||
<p class="other-help">If you don't like curl | sh, see <a href="https://gitlab.haskell.org/haskell/ghcup-hs#manual-install">other installation methods</a>.</p>
|
<p class="other-help">If you don't like curl | sh, see <a href="https://gitlab.haskell.org/haskell/ghcup-hs#manual-install">other installation methods</a>.</p>
|
||||||
@@ -140,7 +146,7 @@
|
|||||||
|
|
||||||
<div id="platform-instructions-default" class="instructions">
|
<div id="platform-instructions-default" class="instructions">
|
||||||
<div>
|
<div>
|
||||||
<p>To install Haskell, if you are running Linux, macOS or Windows Subsystem for Linux, run the following
|
<p>To install Haskell, if you are running Linux, macOS, FreeBSD or Windows Subsystem for Linux, run the following
|
||||||
in your terminal (as a user other than root), then follow the onscreen instructions.</p>
|
in your terminal (as a user other than root), then follow the onscreen instructions.</p>
|
||||||
<pre><span class='ghcup-command'>curl --proto '=https' --tlsv1.2 -sSf https://get-ghcup.haskell.org | sh</span></pre>
|
<pre><span class='ghcup-command'>curl --proto '=https' --tlsv1.2 -sSf https://get-ghcup.haskell.org | sh</span></pre>
|
||||||
<p class="other-help">If you don't like curl | sh, see <a href="https://gitlab.haskell.org/haskell/ghcup-hs#manual-install">other installation methods</a>.</p>
|
<p class="other-help">If you don't like curl | sh, see <a href="https://gitlab.haskell.org/haskell/ghcup-hs#manual-install">other installation methods</a>.</p>
|
||||||
|
|||||||
Reference in New Issue
Block a user