Compare commits
No commits in common. "master" and "cabal-plan" have entirely different histories.
master
...
cabal-plan
@ -1,11 +0,0 @@
|
|||||||
root = true
|
|
||||||
|
|
||||||
[*]
|
|
||||||
end_of_line = LF
|
|
||||||
trim_trailing_whitespace = true
|
|
||||||
insert_final_newline = true
|
|
||||||
|
|
||||||
[*.hs]
|
|
||||||
indent_style = space
|
|
||||||
indent_size = 2
|
|
||||||
max_line_length = 80
|
|
4946
.github/ghc-8.10.3-linux.alpine.files
vendored
4946
.github/ghc-8.10.3-linux.alpine.files
vendored
File diff suppressed because it is too large
Load Diff
37
.github/ghcup-run.files
vendored
37
.github/ghcup-run.files
vendored
@ -1,37 +0,0 @@
|
|||||||
.
|
|
||||||
./cabal
|
|
||||||
./ghc
|
|
||||||
./ghc-8.10.7
|
|
||||||
./ghc-pkg
|
|
||||||
./ghc-pkg-8.10.7
|
|
||||||
./ghci
|
|
||||||
./ghci-8.10.7
|
|
||||||
./haddock
|
|
||||||
./haddock-8.10.7
|
|
||||||
./haskell-language-server-8.10.6
|
|
||||||
./haskell-language-server-8.10.6~1.6.1.0
|
|
||||||
./haskell-language-server-8.10.7
|
|
||||||
./haskell-language-server-8.10.7~1.6.1.0
|
|
||||||
./haskell-language-server-8.6.5
|
|
||||||
./haskell-language-server-8.6.5~1.6.1.0
|
|
||||||
./haskell-language-server-8.8.4
|
|
||||||
./haskell-language-server-8.8.4~1.6.1.0
|
|
||||||
./haskell-language-server-9.0.1
|
|
||||||
./haskell-language-server-9.0.1~1.6.1.0
|
|
||||||
./haskell-language-server-9.0.2
|
|
||||||
./haskell-language-server-9.0.2~1.6.1.0
|
|
||||||
./haskell-language-server-9.2.1
|
|
||||||
./haskell-language-server-9.2.1~1.6.1.0
|
|
||||||
./haskell-language-server-wrapper
|
|
||||||
./haskell-language-server-wrapper-1.6.1.0
|
|
||||||
./hp2ps
|
|
||||||
./hp2ps-8.10.7
|
|
||||||
./hpc
|
|
||||||
./hpc-8.10.7
|
|
||||||
./hsc2hs
|
|
||||||
./hsc2hs-8.10.7
|
|
||||||
./runghc
|
|
||||||
./runghc-8.10.7
|
|
||||||
./runhaskell
|
|
||||||
./runhaskell-8.10.7
|
|
||||||
./stack
|
|
31
.github/ghcup-run.files.alpine
vendored
31
.github/ghcup-run.files.alpine
vendored
@ -1,31 +0,0 @@
|
|||||||
.
|
|
||||||
./cabal
|
|
||||||
./ghc
|
|
||||||
./ghc-8.10.7
|
|
||||||
./ghc-pkg
|
|
||||||
./ghc-pkg-8.10.7
|
|
||||||
./ghci
|
|
||||||
./ghci-8.10.7
|
|
||||||
./haddock
|
|
||||||
./haddock-8.10.7
|
|
||||||
./haskell-language-server-8.10.7
|
|
||||||
./haskell-language-server-8.10.7~1.6.1.0
|
|
||||||
./haskell-language-server-8.8.4
|
|
||||||
./haskell-language-server-8.8.4~1.6.1.0
|
|
||||||
./haskell-language-server-9.0.2
|
|
||||||
./haskell-language-server-9.0.2~1.6.1.0
|
|
||||||
./haskell-language-server-9.2.1
|
|
||||||
./haskell-language-server-9.2.1~1.6.1.0
|
|
||||||
./haskell-language-server-wrapper
|
|
||||||
./haskell-language-server-wrapper-1.6.1.0
|
|
||||||
./hp2ps
|
|
||||||
./hp2ps-8.10.7
|
|
||||||
./hpc
|
|
||||||
./hpc-8.10.7
|
|
||||||
./hsc2hs
|
|
||||||
./hsc2hs-8.10.7
|
|
||||||
./runghc
|
|
||||||
./runghc-8.10.7
|
|
||||||
./runhaskell
|
|
||||||
./runhaskell-8.10.7
|
|
||||||
./stack
|
|
81
.github/ghcup-run.files.windows
vendored
81
.github/ghcup-run.files.windows
vendored
@ -1,81 +0,0 @@
|
|||||||
.
|
|
||||||
./cabal.exe
|
|
||||||
./cabal.shim
|
|
||||||
./ghc-8.10.7.exe
|
|
||||||
./ghc-8.10.7.shim
|
|
||||||
./ghc-pkg-8.10.7.exe
|
|
||||||
./ghc-pkg-8.10.7.shim
|
|
||||||
./ghc-pkg.exe
|
|
||||||
./ghc-pkg.shim
|
|
||||||
./ghc.exe
|
|
||||||
./ghc.shim
|
|
||||||
./ghci-8.10.7.exe
|
|
||||||
./ghci-8.10.7.shim
|
|
||||||
./ghci.exe
|
|
||||||
./ghci.shim
|
|
||||||
./ghcii-8.10.7.sh-8.10.7.exe
|
|
||||||
./ghcii-8.10.7.sh-8.10.7.shim
|
|
||||||
./ghcii-8.10.7.sh.exe
|
|
||||||
./ghcii-8.10.7.sh.shim
|
|
||||||
./ghcii.sh-8.10.7.exe
|
|
||||||
./ghcii.sh-8.10.7.shim
|
|
||||||
./ghcii.sh.exe
|
|
||||||
./ghcii.sh.shim
|
|
||||||
./haddock-8.10.7.exe
|
|
||||||
./haddock-8.10.7.shim
|
|
||||||
./haddock.exe
|
|
||||||
./haddock.shim
|
|
||||||
./haskell-language-server-8.10.6.exe
|
|
||||||
./haskell-language-server-8.10.6.shim
|
|
||||||
./haskell-language-server-8.10.6~1.6.1.0.exe
|
|
||||||
./haskell-language-server-8.10.6~1.6.1.0.shim
|
|
||||||
./haskell-language-server-8.10.7.exe
|
|
||||||
./haskell-language-server-8.10.7.shim
|
|
||||||
./haskell-language-server-8.10.7~1.6.1.0.exe
|
|
||||||
./haskell-language-server-8.10.7~1.6.1.0.shim
|
|
||||||
./haskell-language-server-8.6.5.exe
|
|
||||||
./haskell-language-server-8.6.5.shim
|
|
||||||
./haskell-language-server-8.6.5~1.6.1.0.exe
|
|
||||||
./haskell-language-server-8.6.5~1.6.1.0.shim
|
|
||||||
./haskell-language-server-8.8.4.exe
|
|
||||||
./haskell-language-server-8.8.4.shim
|
|
||||||
./haskell-language-server-8.8.4~1.6.1.0.exe
|
|
||||||
./haskell-language-server-8.8.4~1.6.1.0.shim
|
|
||||||
./haskell-language-server-9.0.1.exe
|
|
||||||
./haskell-language-server-9.0.1.shim
|
|
||||||
./haskell-language-server-9.0.1~1.6.1.0.exe
|
|
||||||
./haskell-language-server-9.0.1~1.6.1.0.shim
|
|
||||||
./haskell-language-server-9.0.2.exe
|
|
||||||
./haskell-language-server-9.0.2.shim
|
|
||||||
./haskell-language-server-9.0.2~1.6.1.0.exe
|
|
||||||
./haskell-language-server-9.0.2~1.6.1.0.shim
|
|
||||||
./haskell-language-server-9.2.1.exe
|
|
||||||
./haskell-language-server-9.2.1.shim
|
|
||||||
./haskell-language-server-9.2.1~1.6.1.0.exe
|
|
||||||
./haskell-language-server-9.2.1~1.6.1.0.shim
|
|
||||||
./haskell-language-server-wrapper-1.6.1.0.exe
|
|
||||||
./haskell-language-server-wrapper-1.6.1.0.shim
|
|
||||||
./haskell-language-server-wrapper.exe
|
|
||||||
./haskell-language-server-wrapper.shim
|
|
||||||
./hp2ps-8.10.7.exe
|
|
||||||
./hp2ps-8.10.7.shim
|
|
||||||
./hp2ps.exe
|
|
||||||
./hp2ps.shim
|
|
||||||
./hpc-8.10.7.exe
|
|
||||||
./hpc-8.10.7.shim
|
|
||||||
./hpc.exe
|
|
||||||
./hpc.shim
|
|
||||||
./hsc2hs-8.10.7.exe
|
|
||||||
./hsc2hs-8.10.7.shim
|
|
||||||
./hsc2hs.exe
|
|
||||||
./hsc2hs.shim
|
|
||||||
./runghc-8.10.7.exe
|
|
||||||
./runghc-8.10.7.shim
|
|
||||||
./runghc.exe
|
|
||||||
./runghc.shim
|
|
||||||
./runhaskell-8.10.7.exe
|
|
||||||
./runhaskell-8.10.7.shim
|
|
||||||
./runhaskell.exe
|
|
||||||
./runhaskell.shim
|
|
||||||
./stack.exe
|
|
||||||
./stack.shim
|
|
18
.github/scripts/bootstrap.sh
vendored
18
.github/scripts/bootstrap.sh
vendored
@ -1,18 +0,0 @@
|
|||||||
#!/usr/bin/env bash
|
|
||||||
|
|
||||||
set -eux
|
|
||||||
|
|
||||||
. .github/scripts/env.sh
|
|
||||||
|
|
||||||
mkdir -p "$CI_PROJECT_DIR"/.local/bin
|
|
||||||
|
|
||||||
git describe --always
|
|
||||||
|
|
||||||
### build
|
|
||||||
|
|
||||||
./scripts/bootstrap/bootstrap-haskell
|
|
||||||
|
|
||||||
[ "$(ghc --numeric-version)" = "${BOOTSTRAP_HASKELL_GHC_VERSION}" ]
|
|
||||||
# https://github.com/actions/runner-images/issues/7061
|
|
||||||
[ "$(ghcup config | grep --color=never meta-mode)" = "meta-mode: Lax" ]
|
|
||||||
|
|
27
.github/scripts/brew.sh
vendored
27
.github/scripts/brew.sh
vendored
@ -1,27 +0,0 @@
|
|||||||
#!/bin/sh
|
|
||||||
|
|
||||||
set -eux
|
|
||||||
|
|
||||||
. .github/scripts/env.sh
|
|
||||||
|
|
||||||
if [ -e "$HOME/.brew" ] ; then
|
|
||||||
(
|
|
||||||
cd "$HOME/.brew"
|
|
||||||
git fetch --depth 1
|
|
||||||
git reset --hard origin/master
|
|
||||||
)
|
|
||||||
else
|
|
||||||
git clone --depth=1 https://github.com/Homebrew/brew "$HOME/.brew"
|
|
||||||
fi
|
|
||||||
export PATH="$HOME/.brew/bin:$HOME/.brew/sbin:$PATH"
|
|
||||||
|
|
||||||
mkdir -p $CI_PROJECT_DIR/.brew_cache
|
|
||||||
export HOMEBREW_CACHE=$CI_PROJECT_DIR/.brew_cache
|
|
||||||
mkdir -p $CI_PROJECT_DIR/.brew_logs
|
|
||||||
export HOMEBREW_LOGS=$CI_PROJECT_DIR/.brew_logs
|
|
||||||
mkdir -p /private/tmp/.brew_tmp
|
|
||||||
export HOMEBREW_TEMP=/private/tmp/.brew_tmp
|
|
||||||
|
|
||||||
brew update
|
|
||||||
brew install ${1+"$@"}
|
|
||||||
|
|
37
.github/scripts/build.sh
vendored
37
.github/scripts/build.sh
vendored
@ -1,37 +0,0 @@
|
|||||||
#!/bin/sh
|
|
||||||
|
|
||||||
set -eux
|
|
||||||
|
|
||||||
. .github/scripts/common.sh
|
|
||||||
|
|
||||||
git_describe
|
|
||||||
|
|
||||||
# ensure ghcup
|
|
||||||
install_ghcup
|
|
||||||
|
|
||||||
# ensure cabal-cache
|
|
||||||
download_cabal_cache "$HOME/.local/bin/cabal-cache"
|
|
||||||
|
|
||||||
# install toolchain (if necessary)
|
|
||||||
ghcup -v install ghc --set --force "$GHC_VER"
|
|
||||||
ghcup -v install cabal --force "$CABAL_VER"
|
|
||||||
ghc --version
|
|
||||||
cabal --version
|
|
||||||
GHC="ghc-${GHC_VER}"
|
|
||||||
|
|
||||||
# build
|
|
||||||
ecabal update
|
|
||||||
build_with_cache --project-file=cabal.project.release -w "${GHC}" --enable-tests
|
|
||||||
|
|
||||||
# set up artifacts
|
|
||||||
mkdir -p out
|
|
||||||
binary=$(cabal --project-file=cabal.project.release list-bin ghcup)
|
|
||||||
binary_test=$(cabal --project-file=cabal.project.release list-bin ghcup-test)
|
|
||||||
binary_opttest=$(cabal --project-file=cabal.project.release list-bin ghcup-optparse-test)
|
|
||||||
ver=$("${binary}" --numeric-version)
|
|
||||||
strip_binary "${binary}"
|
|
||||||
cp "${binary}" "out/${ARTIFACT}-${ver}${ext}"
|
|
||||||
cp "${binary_test}" "out/test-${ARTIFACT}-${ver}${ext}"
|
|
||||||
cp "${binary_opttest}" "out/test-optparse-${ARTIFACT}-${ver}${ext}"
|
|
||||||
cp ./dist-newstyle/cache/plan.json "out/${ARTIFACT}.plan.json"
|
|
||||||
|
|
13
.github/scripts/cabal-cache.sh
vendored
13
.github/scripts/cabal-cache.sh
vendored
@ -1,13 +0,0 @@
|
|||||||
#!/usr/bin/env bash
|
|
||||||
|
|
||||||
case "$(uname -s)" in
|
|
||||||
MSYS_*|MINGW*)
|
|
||||||
ext=".exe"
|
|
||||||
;;
|
|
||||||
*)
|
|
||||||
ext=""
|
|
||||||
;;
|
|
||||||
esac
|
|
||||||
|
|
||||||
echo "cabal-cache disabled (CABAL_CACHE_DISABLE set)"
|
|
||||||
|
|
174
.github/scripts/common.sh
vendored
174
.github/scripts/common.sh
vendored
@ -1,174 +0,0 @@
|
|||||||
#!/bin/sh
|
|
||||||
|
|
||||||
. .github/scripts/env.sh
|
|
||||||
|
|
||||||
ecabal() {
|
|
||||||
cabal "$@"
|
|
||||||
}
|
|
||||||
|
|
||||||
nonfatal() {
|
|
||||||
"$@" || "$* failed"
|
|
||||||
}
|
|
||||||
|
|
||||||
sync_from() {
|
|
||||||
if [ "${RUNNER_OS}" != "Windows" ] ; then
|
|
||||||
cabal_store_path="$(dirname "$(cabal help user-config | tail -n 1 | xargs)")/store"
|
|
||||||
fi
|
|
||||||
|
|
||||||
cabal-cache.sh sync-from-archive \
|
|
||||||
--host-name-override=${S3_HOST} \
|
|
||||||
--host-port-override=443 \
|
|
||||||
--host-ssl-override=True \
|
|
||||||
--region us-west-2 \
|
|
||||||
$([ "${RUNNER_OS}" != "Windows" ] && echo --store-path="$cabal_store_path") \
|
|
||||||
--archive-uri "s3://ghcup-hs/${RUNNER_OS}-${ARCH}-${DISTRO}"
|
|
||||||
}
|
|
||||||
|
|
||||||
sync_to() {
|
|
||||||
if [ "${RUNNER_OS}" != "Windows" ] ; then
|
|
||||||
cabal_store_path="$(dirname "$(cabal help user-config | tail -n 1 | xargs)")/store"
|
|
||||||
fi
|
|
||||||
|
|
||||||
cabal-cache.sh sync-to-archive \
|
|
||||||
--host-name-override=${S3_HOST} \
|
|
||||||
--host-port-override=443 \
|
|
||||||
--host-ssl-override=True \
|
|
||||||
--region us-west-2 \
|
|
||||||
$([ "${RUNNER_OS}" != "Windows" ] && echo --store-path="$cabal_store_path") \
|
|
||||||
--archive-uri "s3://ghcup-hs/${RUNNER_OS}-${ARCH}-${DISTRO}"
|
|
||||||
}
|
|
||||||
|
|
||||||
raw_eghcup() {
|
|
||||||
"$GHCUP_BIN/ghcup${ext}" -v -c "$@"
|
|
||||||
}
|
|
||||||
|
|
||||||
eghcup() {
|
|
||||||
if [ "${OS}" = "Windows" ] ; then
|
|
||||||
"$GHCUP_BIN/ghcup${ext}" -c -s "file:${GITHUB_WORKSPACE//\\//}/data/metadata/ghcup-${JSON_VERSION}.yaml" "$@"
|
|
||||||
else
|
|
||||||
"$GHCUP_BIN/ghcup${ext}" -c -s "file://$CI_PROJECT_DIR/data/metadata/ghcup-${JSON_VERSION}.yaml" "$@"
|
|
||||||
fi
|
|
||||||
}
|
|
||||||
|
|
||||||
sha_sum() {
|
|
||||||
if [ "${OS}" = "FreeBSD" ] ; then
|
|
||||||
sha256 "$@"
|
|
||||||
else
|
|
||||||
sha256sum "$@"
|
|
||||||
fi
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
git_describe() {
|
|
||||||
git config --global --get-all safe.directory | grep '^\*$' || git config --global --add safe.directory "*"
|
|
||||||
git describe --always
|
|
||||||
}
|
|
||||||
|
|
||||||
download_cabal_cache() {
|
|
||||||
(
|
|
||||||
set -e
|
|
||||||
mkdir -p "$HOME/.local/bin"
|
|
||||||
dest="$HOME/.local/bin/cabal-cache"
|
|
||||||
url=""
|
|
||||||
exe=""
|
|
||||||
cd /tmp
|
|
||||||
case "${RUNNER_OS}" in
|
|
||||||
"Linux")
|
|
||||||
case "${ARCH}" in
|
|
||||||
"32") url=https://downloads.haskell.org/~ghcup/unofficial-bindists/cabal-cache/experimental5/i386-linux-cabal-cache
|
|
||||||
;;
|
|
||||||
"64") url=https://downloads.haskell.org/~ghcup/unofficial-bindists/cabal-cache/experimental5/x86_64-linux-cabal-cache
|
|
||||||
;;
|
|
||||||
"ARM64") url=https://downloads.haskell.org/~ghcup/unofficial-bindists/cabal-cache/experimental5/aarch64-linux-cabal-cache
|
|
||||||
;;
|
|
||||||
"ARM") url=https://downloads.haskell.org/~ghcup/unofficial-bindists/cabal-cache/experimental5/armv7-linux-cabal-cache
|
|
||||||
;;
|
|
||||||
esac
|
|
||||||
;;
|
|
||||||
"FreeBSD")
|
|
||||||
url=https://downloads.haskell.org/~ghcup/unofficial-bindists/cabal-cache/experimental5/x86_64-portbld-freebsd-cabal-cache
|
|
||||||
;;
|
|
||||||
"Windows")
|
|
||||||
exe=".exe"
|
|
||||||
url=https://downloads.haskell.org/~ghcup/unofficial-bindists/cabal-cache/experimental5/x86_64-mingw64-cabal-cache
|
|
||||||
;;
|
|
||||||
"macOS")
|
|
||||||
case "${ARCH}" in
|
|
||||||
"ARM64") url=https://downloads.haskell.org/~ghcup/unofficial-bindists/cabal-cache/experimental5/aarch64-apple-darwin-cabal-cache
|
|
||||||
;;
|
|
||||||
"64") url=https://downloads.haskell.org/~ghcup/unofficial-bindists/cabal-cache/experimental5/x86_64-apple-darwin-cabal-cache
|
|
||||||
;;
|
|
||||||
esac
|
|
||||||
;;
|
|
||||||
esac
|
|
||||||
|
|
||||||
if [ -n "${url}" ] ; then
|
|
||||||
case "${url##*.}" in
|
|
||||||
"gz")
|
|
||||||
curl -L -o - "${url}" | gunzip > cabal-cache${exe}
|
|
||||||
;;
|
|
||||||
*)
|
|
||||||
curl -o cabal-cache${exe} -L "${url}"
|
|
||||||
;;
|
|
||||||
esac
|
|
||||||
sha_sum cabal-cache${exe}
|
|
||||||
mv "cabal-cache${exe}" "${dest}${exe}"
|
|
||||||
chmod +x "${dest}${exe}"
|
|
||||||
fi
|
|
||||||
|
|
||||||
# install shell wrapper
|
|
||||||
cp "${CI_PROJECT_DIR}"/.github/scripts/cabal-cache.sh "$HOME"/.local/bin/
|
|
||||||
chmod +x "$HOME"/.local/bin/cabal-cache.sh
|
|
||||||
)
|
|
||||||
}
|
|
||||||
|
|
||||||
build_with_cache() {
|
|
||||||
ecabal configure "$@"
|
|
||||||
ecabal build --dependencies-only "$@" --dry-run
|
|
||||||
sync_from
|
|
||||||
ecabal build --dependencies-only "$@" || sync_to
|
|
||||||
sync_to
|
|
||||||
ecabal build "$@"
|
|
||||||
sync_to
|
|
||||||
}
|
|
||||||
|
|
||||||
install_ghcup() {
|
|
||||||
case "${RUNNER_OS}" in
|
|
||||||
"Linux")
|
|
||||||
case "${ARCH}" in
|
|
||||||
"ARM"*)
|
|
||||||
if command -v ghcup ; then
|
|
||||||
mkdir -p "$GHCUP_BIN"
|
|
||||||
cp "$(command -v ghcup)" "$GHCUP_BIN/ghcup${ext}"
|
|
||||||
else
|
|
||||||
install_ghcup_curl_sh
|
|
||||||
fi
|
|
||||||
;;
|
|
||||||
*) install_ghcup_curl_sh
|
|
||||||
;;
|
|
||||||
esac
|
|
||||||
;;
|
|
||||||
*) install_ghcup_curl_sh
|
|
||||||
;;
|
|
||||||
esac
|
|
||||||
}
|
|
||||||
|
|
||||||
install_ghcup_curl_sh() {
|
|
||||||
curl --proto '=https' --tlsv1.2 -sSf https://get-ghcup.haskell.org | BOOTSTRAP_HASKELL_NONINTERACTIVE=1 BOOTSTRAP_HASKELL_MINIMAL=1 BOOTSTRAP_HASKELL_INSTALL_NO_STACK=yes sh
|
|
||||||
}
|
|
||||||
|
|
||||||
strip_binary() {
|
|
||||||
(
|
|
||||||
set -e
|
|
||||||
local binary=$1
|
|
||||||
case "$(uname -s)" in
|
|
||||||
"Darwin"|"darwin")
|
|
||||||
;;
|
|
||||||
MSYS_*|MINGW*)
|
|
||||||
;;
|
|
||||||
*)
|
|
||||||
strip -s "${binary}"
|
|
||||||
;;
|
|
||||||
esac
|
|
||||||
)
|
|
||||||
}
|
|
74
.github/scripts/cross.sh
vendored
74
.github/scripts/cross.sh
vendored
@ -1,74 +0,0 @@
|
|||||||
#!/usr/bin/env bash
|
|
||||||
|
|
||||||
set -ex
|
|
||||||
|
|
||||||
. .github/scripts/common.sh
|
|
||||||
|
|
||||||
run() {
|
|
||||||
"$@"
|
|
||||||
}
|
|
||||||
|
|
||||||
if [ "${OS}" = "Windows" ] ; then
|
|
||||||
GHCUP_DIR="${GHCUP_INSTALL_BASE_PREFIX}"/ghcup
|
|
||||||
else
|
|
||||||
GHCUP_DIR="${GHCUP_INSTALL_BASE_PREFIX}"/.ghcup
|
|
||||||
fi
|
|
||||||
|
|
||||||
git_describe
|
|
||||||
|
|
||||||
rm -rf "${GHCUP_DIR}"
|
|
||||||
mkdir -p "${GHCUP_BIN}"
|
|
||||||
|
|
||||||
cp "out/${ARTIFACT}"-* "$GHCUP_BIN/ghcup${ext}"
|
|
||||||
cp "out/test-${ARTIFACT}"-* "ghcup-test${ext}"
|
|
||||||
chmod +x "$GHCUP_BIN/ghcup${ext}"
|
|
||||||
chmod +x "ghcup-test${ext}"
|
|
||||||
|
|
||||||
"$GHCUP_BIN/ghcup${ext}" --version
|
|
||||||
eghcup --version
|
|
||||||
sha_sum "$GHCUP_BIN/ghcup${ext}"
|
|
||||||
sha_sum "$(raw_eghcup --offline whereis ghcup)"
|
|
||||||
|
|
||||||
|
|
||||||
### cross build
|
|
||||||
|
|
||||||
eghcup --numeric-version
|
|
||||||
|
|
||||||
eghcup install ghc "${GHC_VER}"
|
|
||||||
eghcup set ghc "${GHC_VER}"
|
|
||||||
eghcup install cabal "${CABAL_VER}"
|
|
||||||
|
|
||||||
cabal --version
|
|
||||||
|
|
||||||
eghcup debug-info
|
|
||||||
|
|
||||||
ecabal update
|
|
||||||
|
|
||||||
"${WRAPPER}" "$GHCUP_BIN/ghcup${ext}" -c -s "file://$CI_PROJECT_DIR/data/metadata/ghcup-${JSON_VERSION}.yaml" -v \
|
|
||||||
compile ghc \
|
|
||||||
$(if [ -n "${HADRIAN_FLAVOUR}" ] ; then printf "%s" "--flavour=${HADRIAN_FLAVOUR}" ; else true ; fi) \
|
|
||||||
-j "$(nproc)" \
|
|
||||||
-v "${GHC_TARGET_VERSION}" \
|
|
||||||
-b "${GHC_VER}" \
|
|
||||||
-x "${CROSS}" \
|
|
||||||
-- ${BUILD_CONF_ARGS}
|
|
||||||
eghcup set ghc "${CROSS}-${GHC_TARGET_VERSION}"
|
|
||||||
|
|
||||||
[ "$($(eghcup whereis ghc "${CROSS}-${GHC_TARGET_VERSION}") --numeric-version)" = "${GHC_TARGET_VERSION}" ]
|
|
||||||
|
|
||||||
# test that doing fishy symlinks into GHCup dir doesn't cause weird stuff on 'ghcup nuke'
|
|
||||||
mkdir no_nuke/
|
|
||||||
mkdir no_nuke/bar
|
|
||||||
echo 'foo' > no_nuke/file
|
|
||||||
echo 'bar' > no_nuke/bar/file
|
|
||||||
ln -s "$CI_PROJECT_DIR"/no_nuke/ "${GHCUP_DIR}"/cache/no_nuke
|
|
||||||
ln -s "$CI_PROJECT_DIR"/no_nuke/ "${GHCUP_DIR}"/logs/no_nuke
|
|
||||||
|
|
||||||
# nuke
|
|
||||||
eghcup nuke
|
|
||||||
[ ! -e "${GHCUP_DIR}" ]
|
|
||||||
|
|
||||||
# make sure nuke doesn't resolve symlinks
|
|
||||||
[ -e "$CI_PROJECT_DIR"/no_nuke/file ]
|
|
||||||
[ -e "$CI_PROJECT_DIR"/no_nuke/bar/file ]
|
|
||||||
|
|
34
.github/scripts/env.sh
vendored
34
.github/scripts/env.sh
vendored
@ -1,34 +0,0 @@
|
|||||||
#!/bin/sh
|
|
||||||
|
|
||||||
if [ "${RUNNER_OS}" = "Windows" ] ; then
|
|
||||||
ext=".exe"
|
|
||||||
else
|
|
||||||
ext=''
|
|
||||||
fi
|
|
||||||
|
|
||||||
export DEBIAN_FRONTEND=noninteractive
|
|
||||||
export TZ=Asia/Singapore
|
|
||||||
|
|
||||||
if [ "${RUNNER_OS}" = "freebsd" ] ; then
|
|
||||||
export RUNNER_OS=FreeBSD
|
|
||||||
fi
|
|
||||||
|
|
||||||
export OS="$RUNNER_OS"
|
|
||||||
export PATH="$HOME/.local/bin:$PATH"
|
|
||||||
|
|
||||||
if [ "${RUNNER_OS}" = "Windows" ] ; then
|
|
||||||
# on windows use pwd to get unix style path
|
|
||||||
CI_PROJECT_DIR="$(pwd)"
|
|
||||||
export CI_PROJECT_DIR
|
|
||||||
export GHCUP_INSTALL_BASE_PREFIX="/c"
|
|
||||||
export GHCUP_BIN="$GHCUP_INSTALL_BASE_PREFIX/ghcup/bin"
|
|
||||||
export PATH="$GHCUP_BIN:$PATH"
|
|
||||||
export CABAL_DIR="C:\\Users\\runneradmin\\AppData\\Roaming\\cabal"
|
|
||||||
else
|
|
||||||
export CI_PROJECT_DIR="${GITHUB_WORKSPACE}"
|
|
||||||
export GHCUP_INSTALL_BASE_PREFIX="$CI_PROJECT_DIR"
|
|
||||||
export GHCUP_BIN="$GHCUP_INSTALL_BASE_PREFIX/.ghcup/bin"
|
|
||||||
export PATH="$GHCUP_BIN:$PATH"
|
|
||||||
export CABAL_DIR="$CI_PROJECT_DIR/cabal"
|
|
||||||
export CABAL_CACHE="$CI_PROJECT_DIR/cabal-cache"
|
|
||||||
fi
|
|
72
.github/scripts/hls.sh
vendored
72
.github/scripts/hls.sh
vendored
@ -1,72 +0,0 @@
|
|||||||
#!/usr/bin/env bash
|
|
||||||
|
|
||||||
set -eux
|
|
||||||
|
|
||||||
. .github/scripts/common.sh
|
|
||||||
|
|
||||||
mkdir -p "$CI_PROJECT_DIR"/.local/bin
|
|
||||||
|
|
||||||
### build
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
if [ "${OS}" = "Windows" ] ; then
|
|
||||||
GHCUP_DIR="${GHCUP_INSTALL_BASE_PREFIX}"/ghcup
|
|
||||||
else
|
|
||||||
GHCUP_DIR="${GHCUP_INSTALL_BASE_PREFIX}"/.ghcup
|
|
||||||
fi
|
|
||||||
|
|
||||||
rm -rf "${GHCUP_DIR}"
|
|
||||||
mkdir -p "${GHCUP_BIN}"
|
|
||||||
|
|
||||||
ls -lah out
|
|
||||||
find out
|
|
||||||
cp "out/${ARTIFACT}"-* "$GHCUP_BIN/ghcup${ext}"
|
|
||||||
chmod +x "$GHCUP_BIN/ghcup${ext}"
|
|
||||||
echo "$PATH"
|
|
||||||
|
|
||||||
"$GHCUP_BIN/ghcup${ext}" --version
|
|
||||||
eghcup --version
|
|
||||||
sha_sum "$GHCUP_BIN/ghcup${ext}"
|
|
||||||
sha_sum "$(raw_eghcup --offline whereis ghcup)"
|
|
||||||
|
|
||||||
git_describe
|
|
||||||
|
|
||||||
eghcup install ghc "${GHC_VERSION}"
|
|
||||||
eghcup install cabal "${CABAL_VERSION}"
|
|
||||||
|
|
||||||
ecabal update
|
|
||||||
|
|
||||||
if ! command -v cabal-cache ; then
|
|
||||||
download_cabal_cache "$HOME/.local/bin/cabal-cache"
|
|
||||||
fi
|
|
||||||
|
|
||||||
if ! cabal-cache version ; then
|
|
||||||
build_cabal_cache "$HOME/.local/bin"
|
|
||||||
fi
|
|
||||||
|
|
||||||
|
|
||||||
eghcup debug-info
|
|
||||||
|
|
||||||
(
|
|
||||||
cd /tmp
|
|
||||||
git clone --depth 1 --branch "${HLS_TARGET_VERSION}" \
|
|
||||||
https://github.com/haskell/haskell-language-server.git \
|
|
||||||
"haskell-language-server-${HLS_TARGET_VERSION}"
|
|
||||||
cd "haskell-language-server-${HLS_TARGET_VERSION}/"
|
|
||||||
ecabal configure -w "ghc-${GHC_VERSION}" --disable-profiling --disable-tests --jobs="$(nproc)"
|
|
||||||
ecabal build --dependencies-only -w "ghc-${GHC_VERSION}" --disable-profiling --disable-tests --jobs="$(nproc)" --dry-run
|
|
||||||
sync_from
|
|
||||||
ecabal build --dependencies-only -w "ghc-${GHC_VERSION}" --disable-profiling --disable-tests --jobs="$(nproc)" || sync_to
|
|
||||||
sync_to
|
|
||||||
)
|
|
||||||
|
|
||||||
eghcup -v compile hls -j "$(nproc)" -g "${HLS_TARGET_VERSION}" --ghc "${GHC_VERSION}"
|
|
||||||
|
|
||||||
[ "$($(eghcup whereis hls "${HLS_TARGET_VERSION}") --numeric-version)" = "${HLS_TARGET_VERSION}" ] ||
|
|
||||||
[ "$($(eghcup whereis hls "${HLS_TARGET_VERSION}") --numeric-version | sed 's/.0$//')" = "${HLS_TARGET_VERSION}" ]
|
|
||||||
|
|
||||||
# nuke
|
|
||||||
eghcup nuke
|
|
||||||
[ ! -e "${GHCUP_DIR}" ]
|
|
||||||
|
|
272
.github/scripts/test.sh
vendored
272
.github/scripts/test.sh
vendored
@ -1,272 +0,0 @@
|
|||||||
#!/usr/bin/env bash
|
|
||||||
|
|
||||||
set -eux
|
|
||||||
|
|
||||||
. .github/scripts/common.sh
|
|
||||||
|
|
||||||
|
|
||||||
if [ "${OS}" = "Windows" ] ; then
|
|
||||||
GHCUP_DIR="${GHCUP_INSTALL_BASE_PREFIX}"/ghcup
|
|
||||||
else
|
|
||||||
GHCUP_DIR="${GHCUP_INSTALL_BASE_PREFIX}"/.ghcup
|
|
||||||
fi
|
|
||||||
|
|
||||||
env
|
|
||||||
git_describe
|
|
||||||
|
|
||||||
rm -rf "${GHCUP_DIR}"
|
|
||||||
mkdir -p "${GHCUP_BIN}"
|
|
||||||
|
|
||||||
cp "out/${ARTIFACT}"-* "$GHCUP_BIN/ghcup${ext}"
|
|
||||||
cp "out/test-${ARTIFACT}"-* "ghcup-test${ext}"
|
|
||||||
cp "out/test-optparse-${ARTIFACT}"-* "ghcup-test-optparse${ext}"
|
|
||||||
chmod +x "$GHCUP_BIN/ghcup${ext}"
|
|
||||||
chmod +x "ghcup-test${ext}"
|
|
||||||
chmod +x "ghcup-test-optparse${ext}"
|
|
||||||
|
|
||||||
"$GHCUP_BIN/ghcup${ext}" --version
|
|
||||||
eghcup --version
|
|
||||||
sha_sum "$GHCUP_BIN/ghcup${ext}"
|
|
||||||
sha_sum "$(raw_eghcup --offline whereis ghcup)"
|
|
||||||
|
|
||||||
### Haskell test suite
|
|
||||||
|
|
||||||
./"ghcup-test${ext}"
|
|
||||||
./"ghcup-test-optparse${ext}"
|
|
||||||
rm "ghcup-test${ext}" "ghcup-test-optparse${ext}"
|
|
||||||
|
|
||||||
### manual cli based testing
|
|
||||||
|
|
||||||
eghcup --numeric-version
|
|
||||||
|
|
||||||
# test PATH on windows wrt msys2
|
|
||||||
# https://github.com/haskell/ghcup-hs/pull/992/checks
|
|
||||||
if [ "${OS}" = "Windows" ] ; then
|
|
||||||
eghcup run -m -- sh -c 'echo $PATH' | sed 's/:/\n/' | grep '^/mingw64/bin$'
|
|
||||||
fi
|
|
||||||
|
|
||||||
eghcup install ghc "${GHC_VER}"
|
|
||||||
eghcup unset ghc "${GHC_VER}"
|
|
||||||
ls -lah "$(eghcup whereis -d ghc "${GHC_VER}")"
|
|
||||||
[ "$($(eghcup whereis ghc "${GHC_VER}") --numeric-version)" = "${GHC_VER}" ]
|
|
||||||
[ "$(eghcup run -q --ghc "${GHC_VER}" -- ghc --numeric-version)" = "${GHC_VER}" ]
|
|
||||||
[ "$(ghcup run -q --ghc "${GHC_VER}" -- ghc -e 'Control.Monad.join (Control.Monad.fmap System.IO.putStr System.Environment.getExecutablePath)')" = "$($(ghcup whereis ghc "${GHC_VER}") -e 'Control.Monad.join (Control.Monad.fmap System.IO.putStr System.Environment.getExecutablePath)')" ]
|
|
||||||
eghcup set ghc "${GHC_VER}"
|
|
||||||
eghcup install cabal "${CABAL_VER}"
|
|
||||||
[ "$($(eghcup whereis cabal "${CABAL_VER}") --numeric-version)" = "${CABAL_VER}" ]
|
|
||||||
eghcup unset cabal
|
|
||||||
"$GHCUP_BIN"/cabal --version && exit 1 || echo yes
|
|
||||||
|
|
||||||
# make sure no cabal is set when running 'ghcup run' to check that PATH propagages properly
|
|
||||||
# https://gitlab.haskell.org/haskell/ghcup-hs/-/issues/375
|
|
||||||
[ "$(eghcup run -q --cabal "${CABAL_VER}" -- cabal --numeric-version)" = "${CABAL_VER}" ]
|
|
||||||
eghcup set cabal "${CABAL_VER}"
|
|
||||||
|
|
||||||
[ "$($(eghcup whereis cabal "${CABAL_VER}") --numeric-version)" = "${CABAL_VER}" ]
|
|
||||||
|
|
||||||
if [ "${OS}" != "FreeBSD" ] ; then
|
|
||||||
if [ "${ARCH}" = "64" ] && [ "${DISTRO}" != "Alpine" ] ; then
|
|
||||||
eghcup run --ghc 8.10.7 --cabal 3.4.1.0 --hls 1.6.1.0 --stack 2.7.3 --install --bindir "$(pwd)/.bin"
|
|
||||||
if [ "${OS}" = "Windows" ] ; then
|
|
||||||
cat "$( cd "$(dirname "$0")" ; pwd -P )/../ghcup-run.files.windows" | sort > expected.txt
|
|
||||||
elif [ "${DISTRO}" = "Alpine" ] ; then
|
|
||||||
cat "$( cd "$(dirname "$0")" ; pwd -P )/../ghcup-run.files.alpine" | sort > expected.txt
|
|
||||||
else
|
|
||||||
cat "$( cd "$(dirname "$0")" ; pwd -P )/../ghcup-run.files" | sort > expected.txt
|
|
||||||
fi
|
|
||||||
(cd ".bin" && find . | sort) > actual.txt
|
|
||||||
diff --strip-trailing-cr -w -u actual.txt expected.txt
|
|
||||||
rm actual.txt expected.txt
|
|
||||||
rm -rf .bin
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
|
|
||||||
cabal --version
|
|
||||||
|
|
||||||
eghcup debug-info
|
|
||||||
|
|
||||||
# also test etags
|
|
||||||
eghcup list
|
|
||||||
eghcup list -t ghc
|
|
||||||
eghcup list -t cabal
|
|
||||||
|
|
||||||
ghc_ver=$(ghc --numeric-version)
|
|
||||||
ghc --version
|
|
||||||
"ghc-${ghc_ver}" --version
|
|
||||||
if [ "${OS}" != "Windows" ] ; then
|
|
||||||
ghci --version
|
|
||||||
"ghci-${ghc_ver}" --version
|
|
||||||
fi
|
|
||||||
|
|
||||||
|
|
||||||
if [ "${OS}" = "macOS" ] && [ "${ARCH}" = "ARM64" ] ; then
|
|
||||||
# missing bindists
|
|
||||||
echo
|
|
||||||
elif [ "${OS}" = "FreeBSD" ] ; then
|
|
||||||
# not enough space
|
|
||||||
echo
|
|
||||||
else
|
|
||||||
# test installing new ghc doesn't mess with currently set GHC
|
|
||||||
# https://gitlab.haskell.org/haskell/ghcup-hs/issues/7
|
|
||||||
if [ "${OS}" = "Linux" ] ; then
|
|
||||||
eghcup --downloader=wget prefetch ghc 8.10.3
|
|
||||||
eghcup --offline install ghc 8.10.3
|
|
||||||
if [ "${ARCH}" = "64" ] ; then
|
|
||||||
if [ "${DISTRO}" = "Alpine" ] ; then
|
|
||||||
(cat "$( cd "$(dirname "$0")" ; pwd -P )/../ghc-8.10.3-linux.alpine.files" | sort) > expected.txt
|
|
||||||
else
|
|
||||||
(cat "$( cd "$(dirname "$0")" ; pwd -P )/../ghc-8.10.3-linux.files" | sort) > expected.txt
|
|
||||||
fi
|
|
||||||
(cd "${GHCUP_DIR}/ghc/8.10.3/" && find . | sort) > actual.txt
|
|
||||||
# ignore docs
|
|
||||||
sed -i '/share\/doc/d' actual.txt
|
|
||||||
sed -i '/share\/doc/d' expected.txt
|
|
||||||
diff --strip-trailing-cr -w -u actual.txt expected.txt
|
|
||||||
rm actual.txt expected.txt
|
|
||||||
fi
|
|
||||||
elif [ "${OS}" = "Windows" ] ; then
|
|
||||||
eghcup prefetch ghc 8.10.3
|
|
||||||
eghcup --offline install ghc 8.10.3
|
|
||||||
(cat "$( cd "$(dirname "$0")" ; pwd -P )/../ghc-8.10.3-windows.files" | sort) > expected.txt
|
|
||||||
(cd "${GHCUP_DIR}/ghc/8.10.3/" && find . | sort) > actual.txt
|
|
||||||
diff --strip-trailing-cr -w -u actual.txt expected.txt
|
|
||||||
rm actual.txt expected.txt
|
|
||||||
else
|
|
||||||
eghcup prefetch ghc 8.10.3
|
|
||||||
eghcup --offline install ghc 8.10.3
|
|
||||||
fi
|
|
||||||
[ "$(ghc --numeric-version)" = "${ghc_ver}" ]
|
|
||||||
eghcup --offline set 8.10.3
|
|
||||||
eghcup set 8.10.3
|
|
||||||
[ "$(ghc --numeric-version)" = "8.10.3" ]
|
|
||||||
eghcup set "${GHC_VER}"
|
|
||||||
[ "$(ghc --numeric-version)" = "${ghc_ver}" ]
|
|
||||||
eghcup unset ghc
|
|
||||||
"$GHCUP_BIN"/ghc --numeric-version && exit 1 || echo yes
|
|
||||||
eghcup set "${GHC_VER}"
|
|
||||||
eghcup --offline rm 8.10.3
|
|
||||||
[ "$(ghc --numeric-version)" = "${ghc_ver}" ]
|
|
||||||
|
|
||||||
|
|
||||||
ls -lah "$GHCUP_BIN"
|
|
||||||
|
|
||||||
if [ "${OS}" = "macOS" ] ; then
|
|
||||||
eghcup install hls
|
|
||||||
$(eghcup whereis hls) --version
|
|
||||||
|
|
||||||
eghcup install stack
|
|
||||||
$(eghcup whereis stack) --version
|
|
||||||
elif [ "${OS}" = "Linux" ] ; then
|
|
||||||
if [ "${ARCH}" = "64" ] && [ "${DISTRO}" != "Alpine" ] ; then
|
|
||||||
eghcup install hls
|
|
||||||
haskell-language-server-wrapper --version
|
|
||||||
eghcup unset hls
|
|
||||||
"$GHCUP_BIN"/haskell-language-server-wrapper --version && exit 1 || echo yes
|
|
||||||
|
|
||||||
eghcup install stack
|
|
||||||
stack --version
|
|
||||||
eghcup unset stack
|
|
||||||
"$GHCUP_BIN"/stack --version && exit 1 || echo yes
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
# check that lazy loading works for 'whereis'
|
|
||||||
cp "$CI_PROJECT_DIR/data/metadata/ghcup-${JSON_VERSION}.yaml" "$CI_PROJECT_DIR/data/metadata/ghcup-${JSON_VERSION}.yaml.bak"
|
|
||||||
echo '**' > "$CI_PROJECT_DIR/data/metadata/ghcup-${JSON_VERSION}.yaml"
|
|
||||||
eghcup whereis ghc "$(ghc --numeric-version)"
|
|
||||||
mv -f "$CI_PROJECT_DIR/data/metadata/ghcup-${JSON_VERSION}.yaml.bak" "$CI_PROJECT_DIR/data/metadata/ghcup-${JSON_VERSION}.yaml"
|
|
||||||
|
|
||||||
eghcup rm "$(ghc --numeric-version)"
|
|
||||||
|
|
||||||
# https://gitlab.haskell.org/haskell/ghcup-hs/-/issues/116
|
|
||||||
if [ "${OS}" = "Linux" ] ; then
|
|
||||||
if [ "${ARCH}" = "64" ] ; then
|
|
||||||
eghcup install cabal -u https://downloads.haskell.org/~ghcup/unofficial-bindists/cabal/3.7.0.0-pre20220407/cabal-install-3.7-x86_64-linux-alpine.tar.xz 3.4.0.0-rc4
|
|
||||||
eghcup rm cabal 3.4.0.0-rc4
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
|
|
||||||
eghcup gc -c
|
|
||||||
|
|
||||||
# test etags
|
|
||||||
rm -f "${GHCUP_DIR}/cache/ghcup-${JSON_VERSION}.yaml"
|
|
||||||
raw_eghcup -s "https://www.haskell.org/ghcup/data/ghcup-${JSON_VERSION}.yaml" list
|
|
||||||
# snapshot yaml and etags file
|
|
||||||
etag=$(cat "${GHCUP_DIR}/cache/ghcup-${JSON_VERSION}.yaml.etags")
|
|
||||||
sha=$(sha_sum "${GHCUP_DIR}/cache/ghcup-${JSON_VERSION}.yaml")
|
|
||||||
# invalidate access time timer, which is 5minutes, so we re-download
|
|
||||||
touch -a -m -t '199901010101' "${GHCUP_DIR}/cache/ghcup-${JSON_VERSION}.yaml"
|
|
||||||
# redownload same file with some newlines added
|
|
||||||
raw_eghcup -s https://raw.githubusercontent.com/haskell/ghcup-metadata/exp/ghcup-${JSON_VERSION}.yaml list
|
|
||||||
# snapshot new yaml and etags file
|
|
||||||
etag2=$(cat "${GHCUP_DIR}/cache/ghcup-${JSON_VERSION}.yaml.etags")
|
|
||||||
sha2=$(sha_sum "${GHCUP_DIR}/cache/ghcup-${JSON_VERSION}.yaml")
|
|
||||||
# compare
|
|
||||||
[ "${etag}" != "${etag2}" ]
|
|
||||||
[ "${sha}" != "${sha2}" ]
|
|
||||||
# invalidate access time timer, which is 5minutes, but don't expect a re-download
|
|
||||||
touch -a -m -t '199901010101' "${GHCUP_DIR}/cache/ghcup-${JSON_VERSION}.yaml"
|
|
||||||
# this time, we expect the same hash and etag
|
|
||||||
raw_eghcup -s https://raw.githubusercontent.com/haskell/ghcup-metadata/exp/ghcup-${JSON_VERSION}.yaml list
|
|
||||||
etag3=$(cat "${GHCUP_DIR}/cache/ghcup-${JSON_VERSION}.yaml.etags")
|
|
||||||
sha3=$(sha_sum "${GHCUP_DIR}/cache/ghcup-${JSON_VERSION}.yaml")
|
|
||||||
[ "${etag2}" = "${etag3}" ]
|
|
||||||
[ "${sha2}" = "${sha3}" ]
|
|
||||||
|
|
||||||
# test isolated installs
|
|
||||||
if [ "${DISTRO}" != "Alpine" ] ; then
|
|
||||||
eghcup install ghc -i "$(pwd)/isolated" 8.10.5
|
|
||||||
[ "$(isolated/bin/ghc --numeric-version)" = "8.10.5" ]
|
|
||||||
! eghcup install ghc -i "$(pwd)/isolated" 8.10.5
|
|
||||||
if [ "${ARCH}" = "64" ] ; then
|
|
||||||
if [ "${OS}" = "Linux" ] || [ "${OS}" = "Windows" ] ; then
|
|
||||||
eghcup install cabal -i "$(pwd)/isolated" 3.4.0.0
|
|
||||||
[ "$(isolated/cabal --numeric-version)" = "3.4.0.0" ]
|
|
||||||
eghcup install stack -i "$(pwd)/isolated" 2.7.3
|
|
||||||
[ "$(isolated/stack --numeric-version)" = "2.7.3" ]
|
|
||||||
eghcup install hls -i "$(pwd)/isolated" 1.3.0
|
|
||||||
[ "$(isolated/haskell-language-server-wrapper --numeric-version)" = "1.3.0" ] ||
|
|
||||||
[ "$(isolated/haskell-language-server-wrapper --numeric-version)" = "1.3.0.0" ]
|
|
||||||
|
|
||||||
# test that isolated installs don't clean up target directory
|
|
||||||
cat <<EOF > "${GHCUP_BIN}/gmake"
|
|
||||||
#!/bin/bash
|
|
||||||
exit 1
|
|
||||||
EOF
|
|
||||||
chmod +x "${GHCUP_BIN}/gmake"
|
|
||||||
mkdir isolated_tainted/
|
|
||||||
touch isolated_tainted/lol
|
|
||||||
|
|
||||||
! eghcup install ghc -i "$(pwd)/isolated_tainted" 8.10.5 --force
|
|
||||||
[ -e "$(pwd)/isolated_tainted/lol" ]
|
|
||||||
rm "${GHCUP_BIN}/gmake"
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
|
|
||||||
eghcup upgrade
|
|
||||||
eghcup upgrade -f
|
|
||||||
|
|
||||||
# restore old ghcup, because we want to test nuke
|
|
||||||
cp "out/${ARTIFACT}"-* "$GHCUP_BIN/ghcup${ext}"
|
|
||||||
chmod +x "$GHCUP_BIN/ghcup${ext}"
|
|
||||||
|
|
||||||
# test that doing fishy symlinks into GHCup dir doesn't cause weird stuff on 'ghcup nuke'
|
|
||||||
mkdir no_nuke/
|
|
||||||
mkdir no_nuke/bar
|
|
||||||
echo 'foo' > no_nuke/file
|
|
||||||
echo 'bar' > no_nuke/bar/file
|
|
||||||
ln -s "$CI_PROJECT_DIR"/no_nuke/ "${GHCUP_DIR}"/cache/no_nuke
|
|
||||||
ln -s "$CI_PROJECT_DIR"/no_nuke/ "${GHCUP_DIR}"/logs/no_nuke
|
|
||||||
|
|
||||||
# nuke
|
|
||||||
eghcup nuke
|
|
||||||
[ ! -e "${GHCUP_DIR}" ]
|
|
||||||
|
|
||||||
# make sure nuke doesn't resolve symlinks
|
|
||||||
[ -e "$CI_PROJECT_DIR"/no_nuke/file ]
|
|
||||||
[ -e "$CI_PROJECT_DIR"/no_nuke/bar/file ]
|
|
||||||
|
|
60
.github/workflows/bootstrap.yaml
vendored
60
.github/workflows/bootstrap.yaml
vendored
@ -1,60 +0,0 @@
|
|||||||
name: Bootstrap tests
|
|
||||||
|
|
||||||
on:
|
|
||||||
push:
|
|
||||||
branches:
|
|
||||||
- master
|
|
||||||
tags:
|
|
||||||
- 'v*'
|
|
||||||
pull_request:
|
|
||||||
branches:
|
|
||||||
- master
|
|
||||||
|
|
||||||
jobs:
|
|
||||||
bootstrap:
|
|
||||||
name: bootstrap
|
|
||||||
runs-on: ${{ matrix.os }}
|
|
||||||
env:
|
|
||||||
BOOTSTRAP_HASKELL_CABAL_VERSION: 3.6.2.0
|
|
||||||
BOOTSTRAP_HASKELL_GHC_VERSION: 8.10.7
|
|
||||||
BOOTSTRAP_HASKELL_NONINTERACTIVE: yes
|
|
||||||
ARCH: 64
|
|
||||||
JSON_VERSION: "0.0.7"
|
|
||||||
strategy:
|
|
||||||
matrix:
|
|
||||||
include:
|
|
||||||
- os: ubuntu-latest
|
|
||||||
DISTRO: Ubuntu
|
|
||||||
- os: macOS-11
|
|
||||||
DISTRO: na
|
|
||||||
- os: windows-latest
|
|
||||||
DISTRO: na
|
|
||||||
steps:
|
|
||||||
- name: Checkout code
|
|
||||||
uses: actions/checkout@v3
|
|
||||||
with:
|
|
||||||
submodules: 'true'
|
|
||||||
|
|
||||||
- if: runner.os == 'Linux'
|
|
||||||
name: Run bootstrap
|
|
||||||
run: |
|
|
||||||
sudo apt-get install -y libnuma-dev zlib1g-dev libgmp-dev libgmp10 libssl-dev liblzma-dev libbz2-dev git wget lsb-release software-properties-common gnupg2 apt-transport-https gcc autoconf automake build-essential curl gzip
|
|
||||||
sh ./.github/scripts/bootstrap.sh
|
|
||||||
env:
|
|
||||||
DISTRO: ${{ matrix.DISTRO }}
|
|
||||||
|
|
||||||
- if: runner.os == 'macOS'
|
|
||||||
name: Run bootstrap
|
|
||||||
run: sh ./.github/scripts/bootstrap.sh
|
|
||||||
env:
|
|
||||||
DISTRO: ${{ matrix.DISTRO }}
|
|
||||||
|
|
||||||
- if: runner.os == 'Windows'
|
|
||||||
name: Run bootstrap
|
|
||||||
run: |
|
|
||||||
$ErrorActionPreference = [System.Management.Automation.ActionPreference]::Stop
|
|
||||||
$curDir = Get-Location
|
|
||||||
Write-Host "Current Working Directory: $curDir"
|
|
||||||
./scripts/bootstrap/bootstrap-haskell.ps1 -InstallDir ${GITHUB_WORKSPACE} -BootstrapUrl ("{0}/scripts/bootstrap/bootstrap-haskell" -f $curDir) -InBash -Msys2Env "MINGW64"
|
|
||||||
shell: pwsh
|
|
||||||
|
|
39
.github/workflows/cabal.project.yaml
vendored
39
.github/workflows/cabal.project.yaml
vendored
@ -1,39 +0,0 @@
|
|||||||
name: Test cabal.project files
|
|
||||||
|
|
||||||
on:
|
|
||||||
push:
|
|
||||||
branches:
|
|
||||||
- master
|
|
||||||
tags:
|
|
||||||
- 'v*'
|
|
||||||
pull_request:
|
|
||||||
branches:
|
|
||||||
- master
|
|
||||||
schedule:
|
|
||||||
- cron: '0 2 * * *'
|
|
||||||
|
|
||||||
jobs:
|
|
||||||
build:
|
|
||||||
name: Build binary
|
|
||||||
runs-on: ${{ matrix.os }}
|
|
||||||
strategy:
|
|
||||||
fail-fast: false
|
|
||||||
matrix:
|
|
||||||
os: [macOS-latest, macOS-11, windows-latest, ubuntu-latest]
|
|
||||||
ghc: ["8.10.7", "9.0.2", "9.2.8", "9.4.8"]
|
|
||||||
steps:
|
|
||||||
- name: Checkout code
|
|
||||||
uses: actions/checkout@v4
|
|
||||||
with:
|
|
||||||
submodules: 'true'
|
|
||||||
|
|
||||||
- name: Run build
|
|
||||||
run: |
|
|
||||||
env
|
|
||||||
ghcup --version
|
|
||||||
ghcup run -i --cabal latest -- cabal update
|
|
||||||
ghcup run -i --cabal latest --ghc ${GHC_VER} -- cabal build --project-file=cabal.ghc${GHC_VER//./}.project
|
|
||||||
env:
|
|
||||||
GHC_VER: ${{ matrix.ghc }}
|
|
||||||
shell: bash
|
|
||||||
|
|
37
.github/workflows/cache.yaml
vendored
37
.github/workflows/cache.yaml
vendored
@ -1,37 +0,0 @@
|
|||||||
name: Cache eviction
|
|
||||||
|
|
||||||
on:
|
|
||||||
workflow_dispatch:
|
|
||||||
inputs:
|
|
||||||
key:
|
|
||||||
description: Which cache to evict
|
|
||||||
required: true
|
|
||||||
default: '/'
|
|
||||||
type: choice
|
|
||||||
options:
|
|
||||||
- FreeBSD-64-na
|
|
||||||
- Linux-32-Alpine
|
|
||||||
- Linux-64-Alpine
|
|
||||||
- Linux-64-Ubuntu
|
|
||||||
- Linux-ARM-Ubuntu
|
|
||||||
- Linux-ARM64-Ubuntu
|
|
||||||
- Windows-64-na
|
|
||||||
- macOS-64-na
|
|
||||||
- macOS-ARM64-na
|
|
||||||
- /
|
|
||||||
jobs:
|
|
||||||
evict:
|
|
||||||
runs-on: ubuntu-latest
|
|
||||||
|
|
||||||
steps:
|
|
||||||
- name: Remove from S3
|
|
||||||
uses: vitorsgomes/s3-rm-action@master
|
|
||||||
with:
|
|
||||||
args: --recursive
|
|
||||||
env:
|
|
||||||
AWS_S3_ENDPOINT: https://${{ secrets.S3_HOST }}
|
|
||||||
AWS_S3_BUCKET: ghcup-hs
|
|
||||||
AWS_REGION: us-west-2
|
|
||||||
AWS_ACCESS_KEY_ID: ${{ secrets.AWS_ACCESS_KEY_ID }}
|
|
||||||
AWS_SECRET_ACCESS_KEY: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
|
|
||||||
PATH_TO_DELETE: ${{ github.event.inputs.key }}
|
|
147
.github/workflows/cross.yaml
vendored
147
.github/workflows/cross.yaml
vendored
@ -1,147 +0,0 @@
|
|||||||
name: Test cross bindists
|
|
||||||
|
|
||||||
on:
|
|
||||||
push:
|
|
||||||
branches:
|
|
||||||
- master
|
|
||||||
tags:
|
|
||||||
- 'v*'
|
|
||||||
pull_request:
|
|
||||||
branches:
|
|
||||||
- master
|
|
||||||
schedule:
|
|
||||||
- cron: '0 2 * * *'
|
|
||||||
|
|
||||||
env:
|
|
||||||
CABAL_CACHE_DISABLE: ${{ vars.CABAL_CACHE_DISABLE }}
|
|
||||||
CABAL_CACHE_NONFATAL: yes
|
|
||||||
|
|
||||||
jobs:
|
|
||||||
build:
|
|
||||||
name: Build linux binary
|
|
||||||
runs-on: [self-hosted, Linux, X64, maerwald]
|
|
||||||
env:
|
|
||||||
CABAL_VER: 3.10.3.0
|
|
||||||
JSON_VERSION: "0.0.8"
|
|
||||||
AWS_SECRET_ACCESS_KEY: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
|
|
||||||
AWS_ACCESS_KEY_ID: ${{ secrets.AWS_ACCESS_KEY_ID }}
|
|
||||||
S3_HOST: ${{ secrets.S3_HOST }}
|
|
||||||
ARTIFACT: "x86_64-linux-ghcup"
|
|
||||||
GHC_VER: 8.10.7
|
|
||||||
ARCH: 64
|
|
||||||
steps:
|
|
||||||
- name: Checkout code
|
|
||||||
uses: actions/checkout@v4
|
|
||||||
with:
|
|
||||||
submodules: 'true'
|
|
||||||
|
|
||||||
- name: Run build
|
|
||||||
uses: docker://hasufell/alpine-haskell:3.12
|
|
||||||
with:
|
|
||||||
args: sh .github/scripts/build.sh
|
|
||||||
env:
|
|
||||||
ARTIFACT: ${{ env.ARTIFACT }}
|
|
||||||
ARCH: ${{ env.ARCH }}
|
|
||||||
GHC_VER: ${{ env.GHC_VER }}
|
|
||||||
DISTRO: Alpine
|
|
||||||
AWS_SECRET_ACCESS_KEY: ${{ env.AWS_SECRET_ACCESS_KEY }}
|
|
||||||
AWS_ACCESS_KEY_ID: ${{ env.AWS_ACCESS_KEY_ID }}
|
|
||||||
S3_HOST: ${{ env.S3_HOST }}
|
|
||||||
|
|
||||||
- if: always()
|
|
||||||
name: Upload artifact
|
|
||||||
uses: actions/upload-artifact@v4
|
|
||||||
with:
|
|
||||||
name: artifacts
|
|
||||||
path: |
|
|
||||||
./out/*
|
|
||||||
|
|
||||||
test-cross-linux:
|
|
||||||
name: Test linux cross
|
|
||||||
needs: "build"
|
|
||||||
runs-on: [self-hosted, Linux, X64]
|
|
||||||
container:
|
|
||||||
image: registry.gitlab.haskell.org/ghc/ci-images/x86_64-linux-deb12:a9297a370025101b479cfd4977f8f910814e03ab
|
|
||||||
options: --user root
|
|
||||||
env:
|
|
||||||
CABAL_VER: 3.10.3.0
|
|
||||||
BUILD_CONF_ARGS: "--enable-unregisterised"
|
|
||||||
HADRIAN_FLAVOUR: ""
|
|
||||||
JSON_VERSION: "0.0.8"
|
|
||||||
GHC_VER: 8.10.6
|
|
||||||
GHC_TARGET_VERSION: "8.10.7"
|
|
||||||
ARCH: 64
|
|
||||||
DISTRO: Debian
|
|
||||||
ARTIFACT: "x86_64-linux-ghcup"
|
|
||||||
CROSS: "arm-linux-gnueabihf"
|
|
||||||
WRAPPER: "run"
|
|
||||||
steps:
|
|
||||||
- name: Checkout code
|
|
||||||
uses: actions/checkout@v4
|
|
||||||
with:
|
|
||||||
submodules: 'true'
|
|
||||||
|
|
||||||
- uses: actions/download-artifact@v4
|
|
||||||
with:
|
|
||||||
name: artifacts
|
|
||||||
path: ./out
|
|
||||||
|
|
||||||
- name: Run test (64 bit linux)
|
|
||||||
run: |
|
|
||||||
sudo apt-get update -y
|
|
||||||
sudo apt-get install -y libnuma-dev zlib1g-dev libgmp-dev libgmp10 libssl-dev liblzma-dev libbz2-dev git wget lsb-release software-properties-common gnupg2 apt-transport-https gcc autoconf automake build-essential curl gzip libstdc++-11-dev
|
|
||||||
sudo apt-get install -y gcc-arm-linux-gnueabihf g++-arm-linux-gnueabihf
|
|
||||||
sudo dpkg --add-architecture armhf
|
|
||||||
sudo apt-get update -y
|
|
||||||
sudo apt-get install -y libncurses-dev:armhf libstdc++-11-dev:armhf
|
|
||||||
# ld.bfd is broken on armv7: https://sourceware.org/bugzilla/show_bug.cgi?id=16177
|
|
||||||
update-alternatives --install "/usr/bin/x86_64-linux-gnu-ld" "ld" "/usr/bin/x86_64-linux-gnu-ld.gold" 20
|
|
||||||
update-alternatives --install "/usr/bin/x86_64-linux-gnu-ld" "ld" "/usr/bin/x86_64-linux-gnu-ld.bfd" 10
|
|
||||||
update-alternatives --set "ld" "/usr/bin/x86_64-linux-gnu-ld.gold"
|
|
||||||
update-alternatives --install "/usr/bin/arm-linux-gnueabihf-ld" "ld-arm" "/usr/bin/arm-linux-gnueabihf-ld.gold" 20
|
|
||||||
update-alternatives --install "/usr/bin/arm-linux-gnueabihf-ld" "ld-arm" "/usr/bin/arm-linux-gnueabihf-ld.bfd" 10
|
|
||||||
update-alternatives --set "ld-arm" "/usr/bin/arm-linux-gnueabihf-ld.gold"
|
|
||||||
sh .github/scripts/cross.sh
|
|
||||||
|
|
||||||
test-cross-js:
|
|
||||||
name: Test GHC JS cross
|
|
||||||
needs: "build"
|
|
||||||
runs-on: [self-hosted, Linux, X64]
|
|
||||||
container:
|
|
||||||
image: registry.gitlab.haskell.org/ghc/ci-images/x86_64-linux-deb12:a9297a370025101b479cfd4977f8f910814e03ab
|
|
||||||
options: --user root
|
|
||||||
env:
|
|
||||||
CABAL_VER: 3.10.3.0
|
|
||||||
BUILD_CONF_ARGS: ""
|
|
||||||
HADRIAN_FLAVOUR: "default+native_bignum"
|
|
||||||
JSON_VERSION: "0.0.8"
|
|
||||||
GHC_VER: 9.6.2
|
|
||||||
GHC_TARGET_VERSION: "9.6.2"
|
|
||||||
ARCH: 64
|
|
||||||
DISTRO: Debian
|
|
||||||
ARTIFACT: "x86_64-linux-ghcup"
|
|
||||||
CROSS: "javascript-unknown-ghcjs"
|
|
||||||
WRAPPER: "emconfigure"
|
|
||||||
steps:
|
|
||||||
- name: Checkout code
|
|
||||||
uses: actions/checkout@v4
|
|
||||||
with:
|
|
||||||
submodules: 'true'
|
|
||||||
|
|
||||||
- uses: actions/download-artifact@v4
|
|
||||||
with:
|
|
||||||
name: artifacts
|
|
||||||
path: ./out
|
|
||||||
|
|
||||||
- name: Run test (64 bit linux)
|
|
||||||
run: |
|
|
||||||
sudo apt-get update -y
|
|
||||||
sudo apt-get install -y libnuma-dev zlib1g-dev libgmp-dev libgmp10 libssl-dev liblzma-dev libbz2-dev git wget lsb-release software-properties-common gnupg2 apt-transport-https gcc autoconf automake build-essential curl gzip
|
|
||||||
git clone https://github.com/emscripten-core/emsdk.git
|
|
||||||
cd emsdk
|
|
||||||
./emsdk install latest
|
|
||||||
./emsdk activate latest
|
|
||||||
. ./emsdk_env.sh
|
|
||||||
cd ..
|
|
||||||
bash .github/scripts/cross.sh
|
|
||||||
|
|
127
.github/workflows/docker.yaml
vendored
127
.github/workflows/docker.yaml
vendored
@ -1,127 +0,0 @@
|
|||||||
name: Docker image builds
|
|
||||||
|
|
||||||
on:
|
|
||||||
workflow_dispatch:
|
|
||||||
schedule:
|
|
||||||
- cron: '0 0 * * *'
|
|
||||||
|
|
||||||
jobs:
|
|
||||||
docker-alpine32:
|
|
||||||
runs-on: ubuntu-latest
|
|
||||||
steps:
|
|
||||||
- name: Checkout
|
|
||||||
uses: actions/checkout@v3
|
|
||||||
- name: Set up QEMU
|
|
||||||
uses: docker/setup-qemu-action@v2
|
|
||||||
- name: Set up Docker Buildx
|
|
||||||
uses: docker/setup-buildx-action@v2
|
|
||||||
- name: Login to Docker Hub
|
|
||||||
uses: docker/login-action@v2
|
|
||||||
with:
|
|
||||||
username: ${{ secrets.DOCKERHUB_USERNAME }}
|
|
||||||
password: ${{ secrets.DOCKERHUB_TOKEN }}
|
|
||||||
- name: Build and push (alpine 32bit)
|
|
||||||
uses: docker/build-push-action@v3
|
|
||||||
with:
|
|
||||||
context: ./docker/alpine32
|
|
||||||
push: true
|
|
||||||
tags: hasufell/i386-alpine-haskell:3.12
|
|
||||||
platforms: |
|
|
||||||
linux/i386
|
|
||||||
linux/amd64
|
|
||||||
|
|
||||||
docker-alpine:
|
|
||||||
runs-on: ubuntu-latest
|
|
||||||
steps:
|
|
||||||
- name: Checkout
|
|
||||||
uses: actions/checkout@v3
|
|
||||||
- name: Set up QEMU
|
|
||||||
uses: docker/setup-qemu-action@v2
|
|
||||||
- name: Set up Docker Buildx
|
|
||||||
uses: docker/setup-buildx-action@v2
|
|
||||||
- name: Login to Docker Hub
|
|
||||||
uses: docker/login-action@v2
|
|
||||||
with:
|
|
||||||
username: ${{ secrets.DOCKERHUB_USERNAME }}
|
|
||||||
password: ${{ secrets.DOCKERHUB_TOKEN }}
|
|
||||||
- name: Build and push (alpine 64bit)
|
|
||||||
uses: docker/build-push-action@v3
|
|
||||||
with:
|
|
||||||
context: ./docker/alpine64
|
|
||||||
push: true
|
|
||||||
tags: hasufell/alpine-haskell:3.12
|
|
||||||
platforms: linux/amd64
|
|
||||||
|
|
||||||
docker-arm32:
|
|
||||||
runs-on: [self-hosted, Linux, ARM64]
|
|
||||||
steps:
|
|
||||||
- uses: docker://arm64v8/ubuntu:focal
|
|
||||||
name: Cleanup (aarch64 linux)
|
|
||||||
continue-on-error: true
|
|
||||||
with:
|
|
||||||
args: "find . -mindepth 1 -maxdepth 1 -exec rm -rf -- {} +"
|
|
||||||
|
|
||||||
- name: Checkout
|
|
||||||
uses: actions/checkout@v3
|
|
||||||
|
|
||||||
- name: Set up Docker Buildx
|
|
||||||
uses: docker/setup-buildx-action@v2
|
|
||||||
|
|
||||||
- name: Login to Docker Hub
|
|
||||||
uses: docker/login-action@v2
|
|
||||||
with:
|
|
||||||
username: ${{ secrets.DOCKERHUB_USERNAME }}
|
|
||||||
password: ${{ secrets.DOCKERHUB_TOKEN }}
|
|
||||||
|
|
||||||
- name: Build and push (debian buster)
|
|
||||||
uses: docker/build-push-action@v3
|
|
||||||
with:
|
|
||||||
context: ./docker/arm32v7/buster
|
|
||||||
push: true
|
|
||||||
tags: hasufell/arm32v7-debian-haskell:10
|
|
||||||
platforms: linux/arm
|
|
||||||
|
|
||||||
- name: Build and push (ubuntu focal)
|
|
||||||
uses: docker/build-push-action@v3
|
|
||||||
with:
|
|
||||||
context: ./docker/arm32v7/focal
|
|
||||||
push: true
|
|
||||||
tags: hasufell/arm32v7-ubuntu-haskell:focal
|
|
||||||
platforms: linux/arm
|
|
||||||
|
|
||||||
docker-aarch:
|
|
||||||
runs-on: [self-hosted, Linux, ARM64]
|
|
||||||
steps:
|
|
||||||
- uses: docker://arm64v8/ubuntu:focal
|
|
||||||
name: Cleanup (aarch64 linux)
|
|
||||||
continue-on-error: true
|
|
||||||
with:
|
|
||||||
args: "find . -mindepth 1 -maxdepth 1 -exec rm -rf -- {} +"
|
|
||||||
|
|
||||||
- name: Checkout
|
|
||||||
uses: actions/checkout@v3
|
|
||||||
|
|
||||||
- name: Set up Docker Buildx
|
|
||||||
uses: docker/setup-buildx-action@v2
|
|
||||||
|
|
||||||
- name: Login to Docker Hub
|
|
||||||
uses: docker/login-action@v2
|
|
||||||
with:
|
|
||||||
username: ${{ secrets.DOCKERHUB_USERNAME }}
|
|
||||||
password: ${{ secrets.DOCKERHUB_TOKEN }}
|
|
||||||
|
|
||||||
- name: Build and push (debian buster)
|
|
||||||
uses: docker/build-push-action@v3
|
|
||||||
with:
|
|
||||||
context: ./docker/arm64v8/buster
|
|
||||||
push: true
|
|
||||||
tags: hasufell/arm64v8-debian-haskell:10
|
|
||||||
platforms: linux/arm64
|
|
||||||
|
|
||||||
- name: Build and push (ubuntu focal)
|
|
||||||
uses: docker/build-push-action@v3
|
|
||||||
with:
|
|
||||||
context: ./docker/arm64v8/focal
|
|
||||||
push: true
|
|
||||||
tags: hasufell/arm64v8-ubuntu-haskell:focal
|
|
||||||
platforms: linux/arm64
|
|
26
.github/workflows/hlint.yaml
vendored
26
.github/workflows/hlint.yaml
vendored
@ -1,26 +0,0 @@
|
|||||||
name: Hlint
|
|
||||||
|
|
||||||
on:
|
|
||||||
push:
|
|
||||||
branches:
|
|
||||||
- master
|
|
||||||
tags:
|
|
||||||
- 'v*'
|
|
||||||
pull_request:
|
|
||||||
branches:
|
|
||||||
- master
|
|
||||||
|
|
||||||
jobs:
|
|
||||||
hlint:
|
|
||||||
name: hlint
|
|
||||||
runs-on: ubuntu-latest
|
|
||||||
env:
|
|
||||||
JSON_VERSION: "0.0.7"
|
|
||||||
steps:
|
|
||||||
- name: Checkout code
|
|
||||||
uses: actions/checkout@v3
|
|
||||||
with:
|
|
||||||
submodules: 'true'
|
|
||||||
|
|
||||||
- name: Run hlint
|
|
||||||
run: curl -sSL https://raw.github.com/ndmitchell/hlint/master/misc/run.sh | sh -s -- -r lib/ test/
|
|
33
.github/workflows/mkdocs.yaml
vendored
33
.github/workflows/mkdocs.yaml
vendored
@ -1,33 +0,0 @@
|
|||||||
name: MkDocs
|
|
||||||
|
|
||||||
on:
|
|
||||||
push:
|
|
||||||
branches:
|
|
||||||
- master
|
|
||||||
tags:
|
|
||||||
- 'v*'
|
|
||||||
pull_request:
|
|
||||||
branches:
|
|
||||||
- master
|
|
||||||
|
|
||||||
jobs:
|
|
||||||
mkdocs:
|
|
||||||
name: mkdocs
|
|
||||||
runs-on: ubuntu-latest
|
|
||||||
env:
|
|
||||||
JSON_VERSION: "0.0.7"
|
|
||||||
steps:
|
|
||||||
- name: Checkout code
|
|
||||||
uses: actions/checkout@v3
|
|
||||||
with:
|
|
||||||
submodules: 'true'
|
|
||||||
|
|
||||||
- name: Install mkdocs deps
|
|
||||||
run: |
|
|
||||||
sudo apt-get update -y
|
|
||||||
sudo apt-get install -y python3-pip
|
|
||||||
sudo pip3 install mkdocs
|
|
||||||
|
|
||||||
- name: Run mkdocs
|
|
||||||
run: |
|
|
||||||
mkdocs build
|
|
642
.github/workflows/release.yaml
vendored
642
.github/workflows/release.yaml
vendored
@ -1,581 +1,109 @@
|
|||||||
name: Build and release
|
name: Create Release
|
||||||
|
|
||||||
on:
|
on:
|
||||||
push:
|
push:
|
||||||
branches:
|
|
||||||
- master
|
|
||||||
tags:
|
tags:
|
||||||
- 'v*'
|
- 'v*'
|
||||||
pull_request:
|
|
||||||
branches:
|
|
||||||
- master
|
|
||||||
schedule:
|
|
||||||
- cron: '0 2 * * *'
|
|
||||||
|
|
||||||
env:
|
|
||||||
CABAL_CACHE_DISABLE: ${{ vars.CABAL_CACHE_DISABLE }}
|
|
||||||
CABAL_CACHE_NONFATAL: yes
|
|
||||||
|
|
||||||
jobs:
|
jobs:
|
||||||
build-linux:
|
draft_release:
|
||||||
name: Build linux binary
|
name: Draft Release
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
outputs:
|
||||||
|
upload_url: ${{ steps.create_release.outputs.upload_url }}
|
||||||
|
|
||||||
|
steps:
|
||||||
|
- name: Create Release
|
||||||
|
id: create_release
|
||||||
|
uses: actions/create-release@v1
|
||||||
|
env:
|
||||||
|
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||||
|
with:
|
||||||
|
tag_name: ${{ github.ref }}
|
||||||
|
release_name: Release ${{ github.ref }}
|
||||||
|
body: |
|
||||||
|
Changes in this Release
|
||||||
|
- First Change
|
||||||
|
- Second Change
|
||||||
|
draft: true
|
||||||
|
prerelease: false
|
||||||
|
|
||||||
|
release-mac:
|
||||||
|
name: Create Release
|
||||||
|
needs: draft_release
|
||||||
runs-on: ${{ matrix.os }}
|
runs-on: ${{ matrix.os }}
|
||||||
env:
|
env:
|
||||||
CABAL_VER: 3.10.2.0
|
MACOSX_DEPLOYMENT_TARGET: 10.13
|
||||||
JSON_VERSION: "0.0.8"
|
|
||||||
AWS_SECRET_ACCESS_KEY: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
|
|
||||||
AWS_ACCESS_KEY_ID: ${{ secrets.AWS_ACCESS_KEY_ID }}
|
|
||||||
S3_HOST: ${{ secrets.S3_HOST }}
|
|
||||||
strategy:
|
strategy:
|
||||||
fail-fast: true
|
|
||||||
matrix:
|
matrix:
|
||||||
include:
|
os:
|
||||||
- os: ubuntu-latest
|
- macOS-10.15
|
||||||
ARTIFACT: "i386-linux-ghcup"
|
|
||||||
GHC_VER: 8.10.7
|
|
||||||
ARCH: 32
|
|
||||||
- os: ubuntu-latest
|
|
||||||
ARTIFACT: "x86_64-linux-ghcup"
|
|
||||||
GHC_VER: 9.4.8
|
|
||||||
ARCH: 64
|
|
||||||
steps:
|
steps:
|
||||||
- name: Checkout code
|
- name: Checkout code
|
||||||
uses: actions/checkout@v4
|
uses: actions/checkout@v2
|
||||||
|
|
||||||
|
- uses: haskell/actions/setup@v1.2
|
||||||
with:
|
with:
|
||||||
submodules: 'true'
|
ghc-version: 8.10.4
|
||||||
|
cabal-version: 3.4.0.0
|
||||||
|
|
||||||
- if: matrix.ARCH == '32'
|
- name: create ~/.local/bin
|
||||||
name: Run build (32 bit linux)
|
run: mkdir -p "$HOME/.local/bin"
|
||||||
uses: docker://hasufell/i386-alpine-haskell:3.12
|
|
||||||
with:
|
|
||||||
args: sh .github/scripts/build.sh
|
|
||||||
env:
|
|
||||||
ARTIFACT: ${{ matrix.ARTIFACT }}
|
|
||||||
ARCH: ${{ matrix.ARCH }}
|
|
||||||
GHC_VER: ${{ matrix.GHC_VER }}
|
|
||||||
DISTRO: Alpine
|
|
||||||
AWS_SECRET_ACCESS_KEY: ${{ env.AWS_SECRET_ACCESS_KEY }}
|
|
||||||
AWS_ACCESS_KEY_ID: ${{ env.AWS_ACCESS_KEY_ID }}
|
|
||||||
S3_HOST: ${{ env.S3_HOST }}
|
|
||||||
|
|
||||||
- if: matrix.ARCH == '64'
|
|
||||||
name: Run build (64 bit linux)
|
|
||||||
uses: docker://hasufell/alpine-haskell:3.12
|
|
||||||
with:
|
|
||||||
args: sh .github/scripts/build.sh
|
|
||||||
env:
|
|
||||||
ARTIFACT: ${{ matrix.ARTIFACT }}
|
|
||||||
ARCH: ${{ matrix.ARCH }}
|
|
||||||
GHC_VER: ${{ matrix.GHC_VER }}
|
|
||||||
DISTRO: Alpine
|
|
||||||
AWS_SECRET_ACCESS_KEY: ${{ env.AWS_SECRET_ACCESS_KEY }}
|
|
||||||
AWS_ACCESS_KEY_ID: ${{ env.AWS_ACCESS_KEY_ID }}
|
|
||||||
S3_HOST: ${{ env.S3_HOST }}
|
|
||||||
|
|
||||||
- if: always()
|
|
||||||
name: Upload artifact
|
|
||||||
uses: actions/upload-artifact@v3
|
|
||||||
with:
|
|
||||||
name: artifacts
|
|
||||||
path: |
|
|
||||||
./out/*
|
|
||||||
|
|
||||||
|
|
||||||
build-arm:
|
|
||||||
name: Build ARM binary
|
|
||||||
runs-on: ${{ matrix.os }}
|
|
||||||
env:
|
|
||||||
CABAL_VER: 3.6.2.0
|
|
||||||
JSON_VERSION: "0.0.8"
|
|
||||||
AWS_SECRET_ACCESS_KEY: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
|
|
||||||
AWS_ACCESS_KEY_ID: ${{ secrets.AWS_ACCESS_KEY_ID }}
|
|
||||||
S3_HOST: ${{ secrets.S3_HOST }}
|
|
||||||
strategy:
|
|
||||||
fail-fast: true
|
|
||||||
matrix:
|
|
||||||
include:
|
|
||||||
- os: [self-hosted, Linux, ARM64, maerwald]
|
|
||||||
ARTIFACT: "armv7-linux-ghcup"
|
|
||||||
GHC_VER: 9.2.8
|
|
||||||
ARCH: ARM
|
|
||||||
- os: [self-hosted, Linux, ARM64, maerwald]
|
|
||||||
ARTIFACT: "aarch64-linux-ghcup"
|
|
||||||
GHC_VER: 9.4.8
|
|
||||||
ARCH: ARM64
|
|
||||||
steps:
|
|
||||||
- name: git config
|
|
||||||
run: |
|
|
||||||
git config --global --get-all safe.directory | grep '^\*$' || git config --global --add safe.directory "*"
|
|
||||||
shell: bash
|
shell: bash
|
||||||
|
|
||||||
- name: Checkout code
|
- name: Add ~/.local/bin to PATH
|
||||||
uses: actions/checkout@v4
|
run: echo "$HOME/.local/bin" >> $GITHUB_PATH
|
||||||
with:
|
shell: bash
|
||||||
submodules: 'true'
|
|
||||||
|
|
||||||
- if: matrix.ARCH == 'ARM'
|
- name: Update cabal cache
|
||||||
uses: docker://hasufell/arm32v7-debian-haskell:10
|
run: cabal update
|
||||||
name: Run build (armv7 linux)
|
shell: bash
|
||||||
with:
|
|
||||||
args: sh .github/scripts/build.sh
|
|
||||||
env:
|
|
||||||
ARTIFACT: ${{ matrix.ARTIFACT }}
|
|
||||||
ARCH: ${{ matrix.ARCH }}
|
|
||||||
GHC_VER: ${{ matrix.GHC_VER }}
|
|
||||||
DISTRO: Ubuntu
|
|
||||||
AWS_SECRET_ACCESS_KEY: ${{ env.AWS_SECRET_ACCESS_KEY }}
|
|
||||||
AWS_ACCESS_KEY_ID: ${{ env.AWS_ACCESS_KEY_ID }}
|
|
||||||
S3_HOST: ${{ env.S3_HOST }}
|
|
||||||
LD: ld.gold
|
|
||||||
|
|
||||||
- if: matrix.ARCH == 'ARM64'
|
- name: Install cabal dependencies
|
||||||
uses: docker://hasufell/arm64v8-debian-haskell:10
|
run: cabal build --only-dependencies --constraint="zlib +bundled-c-zlib" --constraint="lzma +static" -ftui
|
||||||
name: Run build (aarch64 linux)
|
shell: bash
|
||||||
with:
|
|
||||||
args: sh .github/scripts/build.sh
|
- name: Build
|
||||||
|
run: cabal build --constraint="zlib +bundled-c-zlib" --constraint="lzma +static" -ftui
|
||||||
|
shell: bash
|
||||||
|
|
||||||
|
- name: Install
|
||||||
|
run: cp "$(cabal list-bin exe:ghcup)" ~/.local/bin/ghcup
|
||||||
|
shell: bash
|
||||||
|
|
||||||
|
- name: Strip
|
||||||
|
run: strip ~/.local/bin/ghcup
|
||||||
|
shell: bash
|
||||||
|
|
||||||
|
- name: Run tests
|
||||||
|
run: cabal test --constraint="zlib +bundled-c-zlib" --constraint="lzma +static" all
|
||||||
|
shell: bash
|
||||||
|
|
||||||
|
- name: Install git
|
||||||
|
run: brew install git
|
||||||
|
|
||||||
|
- name: set HOME
|
||||||
|
run: echo "HOME=$HOME" >> $GITHUB_ENV
|
||||||
|
shell: bash
|
||||||
|
|
||||||
|
- name: Set ASSET_PATH
|
||||||
|
run: echo "ASSET_PATH=$HOME/.local/bin/ghcup" >> $GITHUB_ENV
|
||||||
|
shell: bash
|
||||||
|
|
||||||
|
- name: Upload Release Asset
|
||||||
|
id: upload-release-asset
|
||||||
|
uses: actions/upload-release-asset@v1
|
||||||
env:
|
env:
|
||||||
ARTIFACT: ${{ matrix.ARTIFACT }}
|
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||||
ARCH: ${{ matrix.ARCH }}
|
with:
|
||||||
GHC_VER: ${{ matrix.GHC_VER }}
|
upload_url: ${{ needs.draft_release.outputs.upload_url }}
|
||||||
DISTRO: Ubuntu
|
asset_path: ${{ env.ASSET_PATH }}
|
||||||
AWS_SECRET_ACCESS_KEY: ${{ env.AWS_SECRET_ACCESS_KEY }}
|
asset_name: ghcup-${{ matrix.os }}
|
||||||
AWS_ACCESS_KEY_ID: ${{ env.AWS_ACCESS_KEY_ID }}
|
asset_content_type: application/octet-stream
|
||||||
S3_HOST: ${{ env.S3_HOST }}
|
|
||||||
|
|
||||||
- if: always()
|
- if: always()
|
||||||
name: Upload artifact
|
uses: actions/upload-artifact@v2
|
||||||
uses: actions/upload-artifact@v3
|
|
||||||
with:
|
with:
|
||||||
name: artifacts
|
name: plan.json
|
||||||
path: |
|
path: ./dist-newstyle/cache/plan.json
|
||||||
./out/*
|
|
||||||
|
|
||||||
build-macwin:
|
|
||||||
name: Build binary (Mac/Win)
|
|
||||||
runs-on: ${{ matrix.os }}
|
|
||||||
env:
|
|
||||||
CABAL_VER: 3.10.2.0
|
|
||||||
MACOSX_DEPLOYMENT_TARGET: 10.13
|
|
||||||
JSON_VERSION: "0.0.8"
|
|
||||||
AWS_SECRET_ACCESS_KEY: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
|
|
||||||
AWS_ACCESS_KEY_ID: ${{ secrets.AWS_ACCESS_KEY_ID }}
|
|
||||||
S3_HOST: ${{ secrets.S3_HOST }}
|
|
||||||
strategy:
|
|
||||||
fail-fast: false
|
|
||||||
matrix:
|
|
||||||
include:
|
|
||||||
- os: [self-hosted, macOS, ARM64]
|
|
||||||
ARTIFACT: "aarch64-apple-darwin-ghcup"
|
|
||||||
GHC_VER: 9.4.8
|
|
||||||
ARCH: ARM64
|
|
||||||
- os: macOS-11
|
|
||||||
ARTIFACT: "x86_64-apple-darwin-ghcup"
|
|
||||||
GHC_VER: 9.4.8
|
|
||||||
ARCH: 64
|
|
||||||
- os: windows-latest
|
|
||||||
ARTIFACT: "x86_64-mingw64-ghcup"
|
|
||||||
GHC_VER: 9.4.8
|
|
||||||
ARCH: 64
|
|
||||||
steps:
|
|
||||||
- name: Checkout code
|
|
||||||
uses: actions/checkout@v4
|
|
||||||
with:
|
|
||||||
submodules: 'true'
|
|
||||||
|
|
||||||
- if: matrix.ARCH == 'ARM64' && runner.os == 'macOS'
|
|
||||||
name: Run build
|
|
||||||
run: |
|
|
||||||
bash .github/scripts/brew.sh git coreutils llvm@13 autoconf automake
|
|
||||||
export PATH="$HOME/.brew/bin:$HOME/.brew/sbin:$HOME/.brew/opt/llvm@13/bin:$PATH"
|
|
||||||
export CC="$HOME/.brew/opt/llvm@13/bin/clang"
|
|
||||||
export CXX="$HOME/.brew/opt/llvm@13/bin/clang++"
|
|
||||||
export LD=ld
|
|
||||||
export AR="$HOME/.brew/opt/llvm@13/bin/llvm-ar"
|
|
||||||
export RANLIB="$HOME/.brew/opt/llvm@13/bin/llvm-ranlib"
|
|
||||||
bash .github/scripts/build.sh
|
|
||||||
env:
|
|
||||||
ARTIFACT: ${{ matrix.ARTIFACT }}
|
|
||||||
ARCH: ${{ matrix.ARCH }}
|
|
||||||
GHC_VER: ${{ matrix.GHC_VER }}
|
|
||||||
DISTRO: na
|
|
||||||
AWS_SECRET_ACCESS_KEY: ${{ env.AWS_SECRET_ACCESS_KEY }}
|
|
||||||
AWS_ACCESS_KEY_ID: ${{ env.AWS_ACCESS_KEY_ID }}
|
|
||||||
S3_HOST: ${{ env.S3_HOST }}
|
|
||||||
HOMEBREW_CHANGE_ARCH_TO_ARM: 1
|
|
||||||
|
|
||||||
- if: matrix.ARCH == '64' && runner.os == 'macOS'
|
|
||||||
name: Run build (windows/mac)
|
|
||||||
run: |
|
|
||||||
bash .github/scripts/brew.sh coreutils
|
|
||||||
export PATH="$HOME/.brew/bin:$HOME/.brew/sbin:$PATH"
|
|
||||||
bash .github/scripts/build.sh
|
|
||||||
env:
|
|
||||||
ARTIFACT: ${{ matrix.ARTIFACT }}
|
|
||||||
ARCH: ${{ matrix.ARCH }}
|
|
||||||
GHC_VER: ${{ matrix.GHC_VER }}
|
|
||||||
DISTRO: na
|
|
||||||
AWS_SECRET_ACCESS_KEY: ${{ env.AWS_SECRET_ACCESS_KEY }}
|
|
||||||
AWS_ACCESS_KEY_ID: ${{ env.AWS_ACCESS_KEY_ID }}
|
|
||||||
S3_HOST: ${{ env.S3_HOST }}
|
|
||||||
HOMEBREW_CHANGE_ARCH_TO_ARM: 1
|
|
||||||
|
|
||||||
- if: runner.os == 'Windows'
|
|
||||||
name: Run build (windows/mac)
|
|
||||||
run: |
|
|
||||||
bash .github/scripts/brew.sh git coreutils autoconf automake
|
|
||||||
bash .github/scripts/build.sh
|
|
||||||
env:
|
|
||||||
ARTIFACT: ${{ matrix.ARTIFACT }}
|
|
||||||
ARCH: ${{ matrix.ARCH }}
|
|
||||||
GHC_VER: ${{ matrix.GHC_VER }}
|
|
||||||
DISTRO: na
|
|
||||||
AWS_SECRET_ACCESS_KEY: ${{ env.AWS_SECRET_ACCESS_KEY }}
|
|
||||||
AWS_ACCESS_KEY_ID: ${{ env.AWS_ACCESS_KEY_ID }}
|
|
||||||
S3_HOST: ${{ env.S3_HOST }}
|
|
||||||
HOMEBREW_CHANGE_ARCH_TO_ARM: 1
|
|
||||||
|
|
||||||
- if: always()
|
|
||||||
name: Upload artifact
|
|
||||||
uses: actions/upload-artifact@v3
|
|
||||||
with:
|
|
||||||
name: artifacts
|
|
||||||
path: |
|
|
||||||
./out/*
|
|
||||||
|
|
||||||
build-freebsd:
|
|
||||||
name: Build binary (FreeBSD)
|
|
||||||
runs-on: [self-hosted, FreeBSD, X64]
|
|
||||||
env:
|
|
||||||
CABAL_VER: 3.10.2.0
|
|
||||||
MACOSX_DEPLOYMENT_TARGET: 10.13
|
|
||||||
JSON_VERSION: "0.0.8"
|
|
||||||
AWS_SECRET_ACCESS_KEY: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
|
|
||||||
AWS_ACCESS_KEY_ID: ${{ secrets.AWS_ACCESS_KEY_ID }}
|
|
||||||
S3_HOST: ${{ secrets.S3_HOST }}
|
|
||||||
ARTIFACT: "x86_64-portbld-freebsd-ghcup"
|
|
||||||
GHC_VER: 9.4.8
|
|
||||||
ARCH: 64
|
|
||||||
DISTRO: na
|
|
||||||
RUNNER_OS: FreeBSD
|
|
||||||
steps:
|
|
||||||
- name: Checkout code
|
|
||||||
uses: actions/checkout@v4
|
|
||||||
with:
|
|
||||||
submodules: 'true'
|
|
||||||
|
|
||||||
- name: Run build
|
|
||||||
run: |
|
|
||||||
sed -i.bak -e 's/quarterly/latest/' /etc/pkg/FreeBSD.conf
|
|
||||||
pkg install -y ghc hs-cabal-install git bash misc/compat10x misc/compat11x misc/compat12x gmake llvm14 libiconv
|
|
||||||
tzsetup Etc/GMT
|
|
||||||
adjkerntz -a
|
|
||||||
bash .github/scripts/build.sh
|
|
||||||
- if: always()
|
|
||||||
name: Upload artifact
|
|
||||||
uses: actions/upload-artifact@v3
|
|
||||||
with:
|
|
||||||
name: artifacts
|
|
||||||
path: |
|
|
||||||
./out/*
|
|
||||||
|
|
||||||
test-linux:
|
|
||||||
name: Test linux
|
|
||||||
needs: "build-linux"
|
|
||||||
runs-on: ${{ matrix.os }}
|
|
||||||
env:
|
|
||||||
CABAL_VER: 3.10.2.0
|
|
||||||
JSON_VERSION: "0.0.8"
|
|
||||||
strategy:
|
|
||||||
matrix:
|
|
||||||
include:
|
|
||||||
- os: ubuntu-latest
|
|
||||||
ARTIFACT: "i386-linux-ghcup"
|
|
||||||
GHC_VER: 8.10.7
|
|
||||||
ARCH: 32
|
|
||||||
DISTRO: Alpine
|
|
||||||
- os: ubuntu-latest
|
|
||||||
ARTIFACT: "x86_64-linux-ghcup"
|
|
||||||
GHC_VER: 9.4.8
|
|
||||||
ARCH: 64
|
|
||||||
DISTRO: Alpine
|
|
||||||
- os: ubuntu-latest
|
|
||||||
ARTIFACT: "x86_64-linux-ghcup"
|
|
||||||
GHC_VER: 9.4.8
|
|
||||||
ARCH: 64
|
|
||||||
DISTRO: Ubuntu
|
|
||||||
|
|
||||||
steps:
|
|
||||||
- name: Checkout code
|
|
||||||
uses: actions/checkout@v4
|
|
||||||
with:
|
|
||||||
submodules: 'true'
|
|
||||||
|
|
||||||
- uses: actions/download-artifact@v3
|
|
||||||
with:
|
|
||||||
name: artifacts
|
|
||||||
path: ./out
|
|
||||||
|
|
||||||
- if: matrix.ARCH == '32' && matrix.DISTRO == 'Alpine'
|
|
||||||
name: Run test (32 bit linux Alpine)
|
|
||||||
uses: docker://hasufell/i386-alpine-haskell:3.12
|
|
||||||
with:
|
|
||||||
args: sh .github/scripts/test.sh
|
|
||||||
env:
|
|
||||||
ARTIFACT: ${{ matrix.ARTIFACT }}
|
|
||||||
ARCH: ${{ matrix.ARCH }}
|
|
||||||
GHC_VER: ${{ matrix.GHC_VER }}
|
|
||||||
DISTRO: ${{ matrix.DISTRO }}
|
|
||||||
|
|
||||||
- if: matrix.ARCH == '64' && matrix.DISTRO == 'Alpine'
|
|
||||||
name: Run test (64 bit linux Alpine)
|
|
||||||
uses: docker://hasufell/alpine-haskell:3.12
|
|
||||||
with:
|
|
||||||
args: sh .github/scripts/test.sh
|
|
||||||
env:
|
|
||||||
ARTIFACT: ${{ matrix.ARTIFACT }}
|
|
||||||
ARCH: ${{ matrix.ARCH }}
|
|
||||||
GHC_VER: ${{ matrix.GHC_VER }}
|
|
||||||
DISTRO: ${{ matrix.DISTRO }}
|
|
||||||
|
|
||||||
- if: matrix.DISTRO != 'Alpine'
|
|
||||||
name: Run test (64 bit linux)
|
|
||||||
run: |
|
|
||||||
sudo apt-get install -y libnuma-dev zlib1g-dev libgmp-dev libgmp10 libssl-dev liblzma-dev libbz2-dev git wget lsb-release software-properties-common gnupg2 apt-transport-https gcc autoconf automake build-essential curl gzip
|
|
||||||
sh .github/scripts/test.sh
|
|
||||||
env:
|
|
||||||
ARTIFACT: ${{ matrix.ARTIFACT }}
|
|
||||||
ARCH: ${{ matrix.ARCH }}
|
|
||||||
GHC_VER: ${{ matrix.GHC_VER }}
|
|
||||||
DISTRO: ${{ matrix.DISTRO }}
|
|
||||||
|
|
||||||
- if: failure()
|
|
||||||
name: Upload artifact
|
|
||||||
uses: actions/upload-artifact@v3
|
|
||||||
with:
|
|
||||||
name: testfiles
|
|
||||||
path: |
|
|
||||||
./test/ghcup-test/golden/unix/GHCupInfo*json
|
|
||||||
|
|
||||||
test-arm:
|
|
||||||
name: Test ARM
|
|
||||||
needs: "build-arm"
|
|
||||||
runs-on: ${{ matrix.os }}
|
|
||||||
env:
|
|
||||||
CABAL_VER: 3.6.2.0
|
|
||||||
JSON_VERSION: "0.0.8"
|
|
||||||
strategy:
|
|
||||||
matrix:
|
|
||||||
include:
|
|
||||||
- os: [self-hosted, Linux, ARM64, maerwald]
|
|
||||||
ARTIFACT: "armv7-linux-ghcup"
|
|
||||||
GHC_VER: 9.2.8
|
|
||||||
ARCH: ARM
|
|
||||||
DISTRO: Ubuntu
|
|
||||||
- os: [self-hosted, Linux, ARM64, maerwald]
|
|
||||||
ARTIFACT: "aarch64-linux-ghcup"
|
|
||||||
GHC_VER: 9.4.8
|
|
||||||
ARCH: ARM64
|
|
||||||
DISTRO: Ubuntu
|
|
||||||
|
|
||||||
steps:
|
|
||||||
- name: Checkout code
|
|
||||||
uses: actions/checkout@v4
|
|
||||||
with:
|
|
||||||
submodules: 'true'
|
|
||||||
|
|
||||||
- uses: actions/download-artifact@v3
|
|
||||||
with:
|
|
||||||
name: artifacts
|
|
||||||
path: ./out
|
|
||||||
|
|
||||||
- if: matrix.ARCH == 'ARM'
|
|
||||||
uses: docker://hasufell/arm32v7-debian-haskell:10
|
|
||||||
name: Run test (armv7 linux)
|
|
||||||
with:
|
|
||||||
args: sh .github/scripts/test.sh
|
|
||||||
env:
|
|
||||||
ARTIFACT: ${{ matrix.ARTIFACT }}
|
|
||||||
ARCH: ${{ matrix.ARCH }}
|
|
||||||
GHC_VER: ${{ matrix.GHC_VER }}
|
|
||||||
DISTRO: Ubuntu
|
|
||||||
LD: ld.gold
|
|
||||||
|
|
||||||
- if: matrix.ARCH == 'ARM64'
|
|
||||||
uses: docker://hasufell/arm64v8-debian-haskell:10
|
|
||||||
name: Run test (aarch64 linux)
|
|
||||||
with:
|
|
||||||
args: sh .github/scripts/test.sh
|
|
||||||
env:
|
|
||||||
ARTIFACT: ${{ matrix.ARTIFACT }}
|
|
||||||
ARCH: ${{ matrix.ARCH }}
|
|
||||||
GHC_VER: ${{ matrix.GHC_VER }}
|
|
||||||
DISTRO: Ubuntu
|
|
||||||
|
|
||||||
- if: failure()
|
|
||||||
name: Upload artifact
|
|
||||||
uses: actions/upload-artifact@v3
|
|
||||||
with:
|
|
||||||
name: testfiles
|
|
||||||
path: |
|
|
||||||
./test/ghcup-test/golden/unix/GHCupInfo*json
|
|
||||||
|
|
||||||
test-macwin:
|
|
||||||
name: Test Mac/Win
|
|
||||||
needs: "build-macwin"
|
|
||||||
runs-on: ${{ matrix.os }}
|
|
||||||
env:
|
|
||||||
CABAL_VER: 3.10.2.0
|
|
||||||
MACOSX_DEPLOYMENT_TARGET: 10.13
|
|
||||||
JSON_VERSION: "0.0.8"
|
|
||||||
strategy:
|
|
||||||
matrix:
|
|
||||||
include:
|
|
||||||
- os: [self-hosted, macOS, ARM64]
|
|
||||||
ARTIFACT: "aarch64-apple-darwin-ghcup"
|
|
||||||
GHC_VER: 9.4.8
|
|
||||||
ARCH: ARM64
|
|
||||||
DISTRO: na
|
|
||||||
- os: macOS-11
|
|
||||||
ARTIFACT: "x86_64-apple-darwin-ghcup"
|
|
||||||
GHC_VER: 9.4.8
|
|
||||||
ARCH: 64
|
|
||||||
DISTRO: na
|
|
||||||
- os: windows-latest
|
|
||||||
ARTIFACT: "x86_64-mingw64-ghcup"
|
|
||||||
GHC_VER: 9.4.8
|
|
||||||
ARCH: 64
|
|
||||||
DISTRO: na
|
|
||||||
|
|
||||||
steps:
|
|
||||||
- name: Checkout code
|
|
||||||
uses: actions/checkout@v4
|
|
||||||
with:
|
|
||||||
submodules: 'true'
|
|
||||||
|
|
||||||
- uses: actions/download-artifact@v3
|
|
||||||
with:
|
|
||||||
name: artifacts
|
|
||||||
path: ./out
|
|
||||||
|
|
||||||
- if: runner.os == 'macOS'
|
|
||||||
name: Run test
|
|
||||||
run: |
|
|
||||||
bash .github/scripts/brew.sh coreutils
|
|
||||||
export PATH="$HOME/.brew/bin:$HOME/.brew/sbin:$PATH"
|
|
||||||
bash .github/scripts/test.sh
|
|
||||||
env:
|
|
||||||
ARTIFACT: ${{ matrix.ARTIFACT }}
|
|
||||||
ARCH: ${{ matrix.ARCH }}
|
|
||||||
GHC_VER: ${{ matrix.GHC_VER }}
|
|
||||||
DISTRO: ${{ matrix.DISTRO }}
|
|
||||||
HOMEBREW_CHANGE_ARCH_TO_ARM: 1
|
|
||||||
|
|
||||||
- if: runner.os != 'macOS'
|
|
||||||
name: Run test
|
|
||||||
run: bash .github/scripts/test.sh
|
|
||||||
env:
|
|
||||||
ARTIFACT: ${{ matrix.ARTIFACT }}
|
|
||||||
ARCH: ${{ matrix.ARCH }}
|
|
||||||
GHC_VER: ${{ matrix.GHC_VER }}
|
|
||||||
DISTRO: ${{ matrix.DISTRO }}
|
|
||||||
HOMEBREW_CHANGE_ARCH_TO_ARM: 1
|
|
||||||
|
|
||||||
- if: failure() && runner.os == 'Windows'
|
|
||||||
name: Upload artifact
|
|
||||||
uses: actions/upload-artifact@v3
|
|
||||||
with:
|
|
||||||
name: testfiles
|
|
||||||
path: |
|
|
||||||
./test/ghcup-test/golden/windows/GHCupInfo*json
|
|
||||||
|
|
||||||
- if: failure() && runner.os != 'Windows'
|
|
||||||
name: Upload artifact
|
|
||||||
uses: actions/upload-artifact@v3
|
|
||||||
with:
|
|
||||||
name: testfiles
|
|
||||||
path: |
|
|
||||||
./test/ghcup-test/golden/unix/GHCupInfo*json
|
|
||||||
test-freebsd:
|
|
||||||
name: Test FreeBSD
|
|
||||||
needs: "build-freebsd"
|
|
||||||
runs-on: [self-hosted, FreeBSD, X64]
|
|
||||||
env:
|
|
||||||
CABAL_VER: 3.10.2.0
|
|
||||||
MACOSX_DEPLOYMENT_TARGET: 10.13
|
|
||||||
JSON_VERSION: "0.0.8"
|
|
||||||
ARTIFACT: "x86_64-portbld-freebsd-ghcup"
|
|
||||||
GHC_VER: 9.4.8
|
|
||||||
ARCH: 64
|
|
||||||
DISTRO: na
|
|
||||||
RUNNER_OS: FreeBSD
|
|
||||||
steps:
|
|
||||||
- name: Checkout code
|
|
||||||
uses: actions/checkout@v4
|
|
||||||
with:
|
|
||||||
submodules: 'true'
|
|
||||||
|
|
||||||
- uses: actions/download-artifact@v3
|
|
||||||
with:
|
|
||||||
name: artifacts
|
|
||||||
path: ./out
|
|
||||||
|
|
||||||
- name: Run test
|
|
||||||
run: |
|
|
||||||
bash .github/scripts/test.sh
|
|
||||||
|
|
||||||
- if: failure()
|
|
||||||
name: Upload artifact
|
|
||||||
uses: actions/upload-artifact@v3
|
|
||||||
with:
|
|
||||||
name: testfiles
|
|
||||||
path: |
|
|
||||||
./test/ghcup-test/golden/unix/GHCupInfo*json
|
|
||||||
hls:
|
|
||||||
name: hls
|
|
||||||
needs: build-linux
|
|
||||||
runs-on: ubuntu-latest
|
|
||||||
env:
|
|
||||||
GHC_VERSION: "8.10.7"
|
|
||||||
HLS_TARGET_VERSION: "1.8.0.0"
|
|
||||||
CABAL_VERSION: "3.8.1.0"
|
|
||||||
JSON_VERSION: "0.0.8"
|
|
||||||
ARTIFACT: "x86_64-linux-ghcup"
|
|
||||||
DISTRO: Ubuntu
|
|
||||||
ARCH: 64
|
|
||||||
AWS_SECRET_ACCESS_KEY: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
|
|
||||||
AWS_ACCESS_KEY_ID: ${{ secrets.AWS_ACCESS_KEY_ID }}
|
|
||||||
S3_HOST: ${{ secrets.S3_HOST }}
|
|
||||||
steps:
|
|
||||||
- name: Checkout code
|
|
||||||
uses: actions/checkout@v4
|
|
||||||
with:
|
|
||||||
submodules: 'true'
|
|
||||||
|
|
||||||
- uses: actions/download-artifact@v3
|
|
||||||
with:
|
|
||||||
name: artifacts
|
|
||||||
path: ./out
|
|
||||||
|
|
||||||
- name: Run hls build
|
|
||||||
run: |
|
|
||||||
sudo apt-get install -y libnuma-dev zlib1g-dev libgmp-dev libgmp10 libssl-dev liblzma-dev libbz2-dev git wget lsb-release software-properties-common gnupg2 apt-transport-https gcc autoconf automake build-essential curl gzip
|
|
||||||
sh .github/scripts/hls.sh
|
|
||||||
|
|
||||||
release:
|
|
||||||
name: release
|
|
||||||
needs: ["test-linux", "test-arm", "test-macwin", "test-freebsd", "hls"]
|
|
||||||
runs-on: ubuntu-latest
|
|
||||||
if: startsWith(github.ref, 'refs/tags/v')
|
|
||||||
steps:
|
|
||||||
- name: Download artifacts
|
|
||||||
uses: actions/download-artifact@v3
|
|
||||||
with:
|
|
||||||
name: artifacts
|
|
||||||
path: ./out
|
|
||||||
|
|
||||||
- name: Release
|
|
||||||
uses: softprops/action-gh-release@v1
|
|
||||||
with:
|
|
||||||
draft: true
|
|
||||||
files: |
|
|
||||||
./out/*
|
|
||||||
|
28
.github/workflows/shellcheck.yaml
vendored
28
.github/workflows/shellcheck.yaml
vendored
@ -1,28 +0,0 @@
|
|||||||
name: Shellcheck
|
|
||||||
|
|
||||||
on:
|
|
||||||
push:
|
|
||||||
branches:
|
|
||||||
- master
|
|
||||||
tags:
|
|
||||||
- 'v*'
|
|
||||||
pull_request:
|
|
||||||
branches:
|
|
||||||
- master
|
|
||||||
|
|
||||||
jobs:
|
|
||||||
shellcheck:
|
|
||||||
name: shellcheck
|
|
||||||
runs-on: ubuntu-latest
|
|
||||||
env:
|
|
||||||
JSON_VERSION: "0.0.7"
|
|
||||||
steps:
|
|
||||||
- name: Checkout code
|
|
||||||
uses: actions/checkout@v3
|
|
||||||
with:
|
|
||||||
submodules: 'true'
|
|
||||||
|
|
||||||
- name: Run shellcheck
|
|
||||||
uses: docker://koalaman/shellcheck-alpine
|
|
||||||
with:
|
|
||||||
args: shellcheck scripts/bootstrap/bootstrap-haskell
|
|
35
.github/workflows/stack.yaml
vendored
35
.github/workflows/stack.yaml
vendored
@ -1,35 +0,0 @@
|
|||||||
name: Test stack.yaml
|
|
||||||
|
|
||||||
on:
|
|
||||||
push:
|
|
||||||
branches:
|
|
||||||
- master
|
|
||||||
tags:
|
|
||||||
- 'v*'
|
|
||||||
pull_request:
|
|
||||||
branches:
|
|
||||||
- master
|
|
||||||
schedule:
|
|
||||||
- cron: '0 2 * * *'
|
|
||||||
|
|
||||||
jobs:
|
|
||||||
build:
|
|
||||||
name: Build binary
|
|
||||||
runs-on: ${{ matrix.os }}
|
|
||||||
strategy:
|
|
||||||
fail-fast: false
|
|
||||||
matrix:
|
|
||||||
os: [macOS-latest, macOS-11, windows-latest, ubuntu-latest]
|
|
||||||
steps:
|
|
||||||
- name: Checkout code
|
|
||||||
uses: actions/checkout@v4
|
|
||||||
with:
|
|
||||||
submodules: 'true'
|
|
||||||
|
|
||||||
- name: Run build
|
|
||||||
run: |
|
|
||||||
env
|
|
||||||
ghcup --version
|
|
||||||
ghcup run -i --stack latest -- stack build
|
|
||||||
shell: bash
|
|
||||||
|
|
3
.gitignore
vendored
3
.gitignore
vendored
@ -4,7 +4,6 @@ codex.tags
|
|||||||
dist-newstyle/
|
dist-newstyle/
|
||||||
cabal.project.local
|
cabal.project.local
|
||||||
.stack-work/
|
.stack-work/
|
||||||
.hiefiles/
|
|
||||||
bin/
|
bin/
|
||||||
/*.prof
|
/*.prof
|
||||||
/*.ps
|
/*.ps
|
||||||
@ -14,5 +13,3 @@ TAGS
|
|||||||
/tmp/
|
/tmp/
|
||||||
.entangled
|
.entangled
|
||||||
release/
|
release/
|
||||||
releases/
|
|
||||||
site/
|
|
||||||
|
544
.gitlab-ci.yml
Normal file
544
.gitlab-ci.yml
Normal file
@ -0,0 +1,544 @@
|
|||||||
|
stages:
|
||||||
|
- hlint
|
||||||
|
- test
|
||||||
|
- release
|
||||||
|
|
||||||
|
variables:
|
||||||
|
GIT_SSL_NO_VERIFY: "1"
|
||||||
|
|
||||||
|
# Commit of ghc/ci-images repository from which to pull Docker images
|
||||||
|
DOCKER_REV: 8d0224e6b2a08157649651e69302380b2bd24e11
|
||||||
|
|
||||||
|
############################################################
|
||||||
|
# CI Step
|
||||||
|
############################################################
|
||||||
|
|
||||||
|
.debian:
|
||||||
|
image: "registry.gitlab.haskell.org/ghc/ci-images/x86_64-linux-deb9:$DOCKER_REV"
|
||||||
|
tags:
|
||||||
|
- x86_64-linux
|
||||||
|
variables:
|
||||||
|
OS: "LINUX"
|
||||||
|
ARCH: "64"
|
||||||
|
CABAL_DIR: "$CI_PROJECT_DIR/cabal"
|
||||||
|
CROSS: ""
|
||||||
|
|
||||||
|
.alpine:64bit:
|
||||||
|
image: "alpine:3.12"
|
||||||
|
tags:
|
||||||
|
- x86_64-linux
|
||||||
|
variables:
|
||||||
|
OS: "LINUX"
|
||||||
|
ARCH: "64"
|
||||||
|
CABAL_DIR: "$CI_PROJECT_DIR/cabal"
|
||||||
|
|
||||||
|
.alpine:32bit:
|
||||||
|
image: "i386/alpine:3.12"
|
||||||
|
tags:
|
||||||
|
- x86_64-linux
|
||||||
|
variables:
|
||||||
|
OS: "LINUX"
|
||||||
|
ARCH: "32"
|
||||||
|
CABAL_DIR: "$CI_PROJECT_DIR/cabal"
|
||||||
|
|
||||||
|
.linux:armv7:
|
||||||
|
image: "registry.gitlab.haskell.org/ghc/ci-images/armv7-linux-deb10:$DOCKER_REV"
|
||||||
|
tags:
|
||||||
|
- armv7-linux
|
||||||
|
variables:
|
||||||
|
OS: "LINUX"
|
||||||
|
ARCH: "ARM"
|
||||||
|
CABAL_DIR: "$CI_PROJECT_DIR/cabal"
|
||||||
|
|
||||||
|
.linux:aarch64:
|
||||||
|
image: "registry.gitlab.haskell.org/ghc/ci-images/aarch64-linux-deb10:$DOCKER_REV"
|
||||||
|
tags:
|
||||||
|
- aarch64-linux
|
||||||
|
variables:
|
||||||
|
OS: "LINUX"
|
||||||
|
ARCH: "ARM64"
|
||||||
|
CABAL_DIR: "$CI_PROJECT_DIR/cabal"
|
||||||
|
|
||||||
|
.darwin:
|
||||||
|
tags:
|
||||||
|
- x86_64-darwin
|
||||||
|
variables:
|
||||||
|
OS: "DARWIN"
|
||||||
|
ARCH: "64"
|
||||||
|
CABAL_DIR: "$CI_PROJECT_DIR/cabal"
|
||||||
|
|
||||||
|
.darwin:aarch64:
|
||||||
|
tags:
|
||||||
|
- aarch64-darwin-m1
|
||||||
|
variables:
|
||||||
|
OS: "DARWIN"
|
||||||
|
ARCH: "ARM64"
|
||||||
|
CABAL_DIR: "$CI_PROJECT_DIR/cabal"
|
||||||
|
|
||||||
|
.freebsd:
|
||||||
|
tags:
|
||||||
|
- x86_64-freebsd
|
||||||
|
variables:
|
||||||
|
OS: "FREEBSD"
|
||||||
|
ARCH: "64"
|
||||||
|
CABAL_DIR: "$CI_PROJECT_DIR/cabal"
|
||||||
|
|
||||||
|
.windows:
|
||||||
|
tags:
|
||||||
|
- new-x86_64-windows
|
||||||
|
variables:
|
||||||
|
OS: "WINDOWS"
|
||||||
|
ARCH: "64"
|
||||||
|
CABAL_DIR: "$CI_PROJECT_DIR/cabal"
|
||||||
|
|
||||||
|
.root_cleanup:
|
||||||
|
after_script:
|
||||||
|
- bash ./.gitlab/after_script.sh
|
||||||
|
|
||||||
|
.test_ghcup_version:
|
||||||
|
script:
|
||||||
|
- bash ./.gitlab/script/ghcup_version.sh
|
||||||
|
variables:
|
||||||
|
JSON_VERSION: "0.0.7"
|
||||||
|
artifacts:
|
||||||
|
expire_in: 2 week
|
||||||
|
paths:
|
||||||
|
- golden
|
||||||
|
- dist-newstyle/cache/
|
||||||
|
when: on_failure
|
||||||
|
|
||||||
|
# .test_ghcup_scoop:
|
||||||
|
# script:
|
||||||
|
# - cl /O1 scoop-better-shimexe/shim.c
|
||||||
|
|
||||||
|
.test_ghcup_version:linux:
|
||||||
|
extends:
|
||||||
|
- .test_ghcup_version
|
||||||
|
- .debian
|
||||||
|
before_script:
|
||||||
|
- ./.gitlab/before_script/linux/install_deps.sh
|
||||||
|
|
||||||
|
.test_ghcup_version:linux32:
|
||||||
|
extends:
|
||||||
|
- .test_ghcup_version
|
||||||
|
- .alpine:32bit
|
||||||
|
before_script:
|
||||||
|
- ./.gitlab/before_script/linux/alpine/install_deps.sh
|
||||||
|
|
||||||
|
.test_ghcup_version:armv7:
|
||||||
|
extends:
|
||||||
|
- .test_ghcup_version
|
||||||
|
- .linux:armv7
|
||||||
|
before_script:
|
||||||
|
- ./.gitlab/before_script/linux/install_deps.sh
|
||||||
|
|
||||||
|
.test_ghcup_version:aarch64:
|
||||||
|
extends:
|
||||||
|
- .test_ghcup_version
|
||||||
|
- .linux:aarch64
|
||||||
|
before_script:
|
||||||
|
- ./.gitlab/before_script/linux/install_deps.sh
|
||||||
|
|
||||||
|
.test_ghcup_version:darwin:
|
||||||
|
extends:
|
||||||
|
- .test_ghcup_version
|
||||||
|
- .darwin
|
||||||
|
- .root_cleanup
|
||||||
|
before_script:
|
||||||
|
- ./.gitlab/before_script/darwin/install_deps.sh
|
||||||
|
|
||||||
|
.test_ghcup_version:darwin:aarch64:
|
||||||
|
extends:
|
||||||
|
- .test_ghcup_version
|
||||||
|
- .darwin:aarch64
|
||||||
|
- .root_cleanup
|
||||||
|
script: |
|
||||||
|
set -Eeuo pipefail
|
||||||
|
function runInNixShell() {
|
||||||
|
time nix-shell $CI_PROJECT_DIR/.gitlab/shell.nix \
|
||||||
|
-I nixpkgs=https://github.com/angerman/nixpkgs/archive/75f7281738b.tar.gz \
|
||||||
|
--argstr system "aarch64-darwin" \
|
||||||
|
--pure \
|
||||||
|
--keep CI_PROJECT_DIR \
|
||||||
|
--keep MACOSX_DEPLOYMENT_TARGET \
|
||||||
|
--keep JSON_VERSION \
|
||||||
|
--keep ARTIFACT \
|
||||||
|
--keep OS \
|
||||||
|
--keep ARCH \
|
||||||
|
--keep CABAL_DIR \
|
||||||
|
--keep GHC_VERSION \
|
||||||
|
--keep CABAL_VERSION \
|
||||||
|
--run "$1" 2>&1
|
||||||
|
}
|
||||||
|
runInNixShell ./.gitlab/before_script/darwin/install_deps.sh 2>&1
|
||||||
|
runInNixShell ./.gitlab/script/ghcup_version.sh 2>&1
|
||||||
|
|
||||||
|
.test_ghcup_version:freebsd:
|
||||||
|
extends:
|
||||||
|
- .test_ghcup_version
|
||||||
|
- .freebsd
|
||||||
|
- .root_cleanup
|
||||||
|
before_script:
|
||||||
|
- ./.gitlab/before_script/freebsd/install_deps.sh
|
||||||
|
|
||||||
|
.test_ghcup_version:windows:
|
||||||
|
extends:
|
||||||
|
- .test_ghcup_version
|
||||||
|
- .windows
|
||||||
|
- .root_cleanup
|
||||||
|
before_script:
|
||||||
|
- set CABAL_DIR="$CI_PROJECT_DIR/cabal"
|
||||||
|
- bash ./.gitlab/before_script/windows/install_deps.sh
|
||||||
|
|
||||||
|
# .test_ghcup_scoop:windows:
|
||||||
|
# extends:
|
||||||
|
# - .windows
|
||||||
|
# - .test_ghcup_scoop
|
||||||
|
# - .root_cleanup
|
||||||
|
|
||||||
|
.release_ghcup:
|
||||||
|
script:
|
||||||
|
- bash ./.gitlab/script/ghcup_release.sh
|
||||||
|
artifacts:
|
||||||
|
expire_in: 2 week
|
||||||
|
paths:
|
||||||
|
- out
|
||||||
|
- dist-newstyle/cache/
|
||||||
|
only:
|
||||||
|
- tags
|
||||||
|
variables:
|
||||||
|
JSON_VERSION: "0.0.7"
|
||||||
|
|
||||||
|
######## stack test ########
|
||||||
|
|
||||||
|
test:linux:stack:
|
||||||
|
stage: test
|
||||||
|
before_script:
|
||||||
|
- ./.gitlab/before_script/linux/install_deps_minimal.sh
|
||||||
|
script:
|
||||||
|
- ./.gitlab/script/ghcup_stack.sh
|
||||||
|
extends:
|
||||||
|
- .debian
|
||||||
|
needs: []
|
||||||
|
|
||||||
|
######## bootstrap test ########
|
||||||
|
|
||||||
|
test:linux:bootstrap_script:
|
||||||
|
stage: test
|
||||||
|
before_script:
|
||||||
|
- ./.gitlab/before_script/linux/install_deps_minimal.sh
|
||||||
|
script:
|
||||||
|
- ./.gitlab/script/ghcup_bootstrap.sh
|
||||||
|
variables:
|
||||||
|
GHC_VERSION: "8.10.6"
|
||||||
|
CABAL_VERSION: "3.4.0.0"
|
||||||
|
extends:
|
||||||
|
- .debian
|
||||||
|
- .root_cleanup
|
||||||
|
needs: []
|
||||||
|
|
||||||
|
test:windows:bootstrap_powershell_script:
|
||||||
|
stage: test
|
||||||
|
script:
|
||||||
|
- ./bootstrap-haskell.ps1 -InstallDir $CI_PROJECT_DIR -BootstrapUrl $CI_PROJECT_DIR/bootstrap-haskell -InBash
|
||||||
|
after_script:
|
||||||
|
- "[Environment]::SetEnvironmentVariable('GHCUP_INSTALL_BASE_PREFIX', $null, [System.EnvironmentVariableTarget]::User)"
|
||||||
|
- "[Environment]::SetEnvironmentVariable('GHCUP_MSYS2', $null, [System.EnvironmentVariableTarget]::User)"
|
||||||
|
- "[Environment]::SetEnvironmentVariable('CABAL_DIR', $null, [System.EnvironmentVariableTarget]::User)"
|
||||||
|
- bash ./.gitlab/after_script.sh
|
||||||
|
variables:
|
||||||
|
GHC_VERSION: "8.10.6"
|
||||||
|
CABAL_VERSION: "3.4.0.0"
|
||||||
|
extends:
|
||||||
|
- .windows
|
||||||
|
needs: []
|
||||||
|
|
||||||
|
######## linux test ########
|
||||||
|
|
||||||
|
test:linux:
|
||||||
|
stage: test
|
||||||
|
extends: .test_ghcup_version:linux
|
||||||
|
variables:
|
||||||
|
GHC_VERSION: "8.10.6"
|
||||||
|
CABAL_VERSION: "3.4.0.0"
|
||||||
|
needs: []
|
||||||
|
|
||||||
|
test:linux:cross-armv7:
|
||||||
|
stage: test
|
||||||
|
extends:
|
||||||
|
- .test_ghcup_version
|
||||||
|
- .debian
|
||||||
|
variables:
|
||||||
|
GHC_VERSION: "8.10.5"
|
||||||
|
GHC_TARGET_VERSION: "8.10.6"
|
||||||
|
CABAL_VERSION: "3.4.0.0"
|
||||||
|
CROSS: "arm-linux-gnueabihf"
|
||||||
|
needs: []
|
||||||
|
when: manual
|
||||||
|
allow_failure: true
|
||||||
|
before_script:
|
||||||
|
- ./.gitlab/before_script/linux/install_deps.sh
|
||||||
|
script:
|
||||||
|
- ./.gitlab/script/ghcup_cross.sh
|
||||||
|
|
||||||
|
test:linux:git:hadrian:
|
||||||
|
stage: test
|
||||||
|
extends:
|
||||||
|
- .test_ghcup_version
|
||||||
|
- .debian
|
||||||
|
variables:
|
||||||
|
GHC_VERSION: "8.10.6"
|
||||||
|
GHC_GIT_TAG: "ghc-9.0.1-release"
|
||||||
|
GHC_GIT_VERSION: "9.0.1"
|
||||||
|
CABAL_VERSION: "3.4.0.0"
|
||||||
|
CROSS: ""
|
||||||
|
needs: []
|
||||||
|
when: manual
|
||||||
|
allow_failure: true
|
||||||
|
before_script:
|
||||||
|
- ./.gitlab/before_script/linux/install_deps.sh
|
||||||
|
script:
|
||||||
|
- ./.gitlab/script/ghcup_git.sh
|
||||||
|
|
||||||
|
|
||||||
|
######## linux 32bit test ########
|
||||||
|
|
||||||
|
test:linux:32bit:
|
||||||
|
stage: test
|
||||||
|
extends: .test_ghcup_version:linux32
|
||||||
|
variables:
|
||||||
|
GHC_VERSION: "8.10.6"
|
||||||
|
CABAL_VERSION: "3.2.0.0"
|
||||||
|
needs: []
|
||||||
|
|
||||||
|
######## arm tests ########
|
||||||
|
|
||||||
|
test:linux:armv7:
|
||||||
|
stage: test
|
||||||
|
extends: .test_ghcup_version:armv7
|
||||||
|
variables:
|
||||||
|
GHC_VERSION: "8.10.4"
|
||||||
|
CABAL_VERSION: "3.4.0.0"
|
||||||
|
CROSS: ""
|
||||||
|
when: manual
|
||||||
|
needs: []
|
||||||
|
|
||||||
|
test:linux:aarch64:
|
||||||
|
stage: test
|
||||||
|
extends: .test_ghcup_version:aarch64
|
||||||
|
variables:
|
||||||
|
GHC_VERSION: "8.10.4"
|
||||||
|
CABAL_VERSION: "3.4.0.0"
|
||||||
|
CROSS: ""
|
||||||
|
when: manual
|
||||||
|
needs: []
|
||||||
|
|
||||||
|
######## darwin test ########
|
||||||
|
|
||||||
|
test:mac:
|
||||||
|
stage: test
|
||||||
|
extends: .test_ghcup_version:darwin
|
||||||
|
variables:
|
||||||
|
GHC_VERSION: "8.10.4"
|
||||||
|
CABAL_VERSION: "3.4.0.0"
|
||||||
|
needs: []
|
||||||
|
|
||||||
|
test:mac:aarch64:
|
||||||
|
stage: test
|
||||||
|
extends: .test_ghcup_version:darwin:aarch64
|
||||||
|
variables:
|
||||||
|
GHC_VERSION: "8.10.6"
|
||||||
|
CABAL_VERSION: "3.4.0.0"
|
||||||
|
needs: []
|
||||||
|
allow_failure: true
|
||||||
|
|
||||||
|
|
||||||
|
######## freebsd test ########
|
||||||
|
|
||||||
|
test:freebsd:
|
||||||
|
stage: test
|
||||||
|
extends: .test_ghcup_version:freebsd
|
||||||
|
variables:
|
||||||
|
GHC_VERSION: "8.10.4"
|
||||||
|
CABAL_VERSION: "3.4.0.0"
|
||||||
|
allow_failure: true # freebsd runners are unreliable
|
||||||
|
when: manual
|
||||||
|
needs: []
|
||||||
|
|
||||||
|
######## windows test ########
|
||||||
|
|
||||||
|
test:windows:
|
||||||
|
stage: test
|
||||||
|
extends: .test_ghcup_version:windows
|
||||||
|
variables:
|
||||||
|
GHC_VERSION: "8.10.6"
|
||||||
|
CABAL_VERSION: "3.4.0.0"
|
||||||
|
needs: []
|
||||||
|
|
||||||
|
# test:windows:scoop:
|
||||||
|
# stage: test
|
||||||
|
# extends: .test_ghcup_scoop:windows
|
||||||
|
# needs: []
|
||||||
|
|
||||||
|
######## linux release ########
|
||||||
|
|
||||||
|
release:linux:64bit:
|
||||||
|
stage: release
|
||||||
|
needs: ["test:linux"]
|
||||||
|
extends:
|
||||||
|
- .alpine:64bit
|
||||||
|
- .release_ghcup
|
||||||
|
before_script:
|
||||||
|
- ./.gitlab/before_script/linux/alpine/install_deps.sh
|
||||||
|
variables:
|
||||||
|
ARTIFACT: "x86_64-linux-ghcup"
|
||||||
|
GHC_VERSION: "8.10.6"
|
||||||
|
CABAL_VERSION: "3.4.0.0"
|
||||||
|
|
||||||
|
|
||||||
|
release:linux:32bit:
|
||||||
|
stage: release
|
||||||
|
needs: ["test:linux:32bit"]
|
||||||
|
extends:
|
||||||
|
- .alpine:32bit
|
||||||
|
- .release_ghcup
|
||||||
|
before_script:
|
||||||
|
- ./.gitlab/before_script/linux/alpine/install_deps.sh
|
||||||
|
variables:
|
||||||
|
ARTIFACT: "i386-linux-ghcup"
|
||||||
|
GHC_VERSION: "8.10.6"
|
||||||
|
CABAL_VERSION: "3.2.0.0"
|
||||||
|
|
||||||
|
release:linux:armv7:
|
||||||
|
stage: release
|
||||||
|
needs: ["test:linux:armv7"]
|
||||||
|
extends:
|
||||||
|
- .linux:armv7
|
||||||
|
- .release_ghcup
|
||||||
|
before_script:
|
||||||
|
- ./.gitlab/before_script/linux/install_deps.sh
|
||||||
|
variables:
|
||||||
|
ARTIFACT: "armv7-linux-ghcup"
|
||||||
|
GHC_VERSION: "8.10.4"
|
||||||
|
CABAL_VERSION: "3.4.0.0"
|
||||||
|
CROSS: ""
|
||||||
|
|
||||||
|
release:linux:aarch64:
|
||||||
|
stage: release
|
||||||
|
needs: ["test:linux:aarch64"]
|
||||||
|
extends:
|
||||||
|
- .linux:aarch64
|
||||||
|
- .release_ghcup
|
||||||
|
before_script:
|
||||||
|
- ./.gitlab/before_script/linux/install_deps.sh
|
||||||
|
variables:
|
||||||
|
ARTIFACT: "aarch64-linux-ghcup"
|
||||||
|
GHC_VERSION: "8.10.4"
|
||||||
|
CABAL_VERSION: "3.4.0.0"
|
||||||
|
CROSS: ""
|
||||||
|
|
||||||
|
######## darwin release ########
|
||||||
|
|
||||||
|
release:darwin:
|
||||||
|
stage: release
|
||||||
|
needs: ["test:mac"]
|
||||||
|
extends:
|
||||||
|
- .darwin
|
||||||
|
- .release_ghcup
|
||||||
|
- .root_cleanup
|
||||||
|
before_script:
|
||||||
|
- ./.gitlab/before_script/darwin/install_deps.sh
|
||||||
|
variables:
|
||||||
|
ARTIFACT: "x86_64-apple-darwin-ghcup"
|
||||||
|
GHC_VERSION: "8.10.6"
|
||||||
|
CABAL_VERSION: "3.4.0.0"
|
||||||
|
MACOSX_DEPLOYMENT_TARGET: "10.7"
|
||||||
|
|
||||||
|
release:darwin:aarch64:
|
||||||
|
stage: release
|
||||||
|
needs: ["test:mac:aarch64"]
|
||||||
|
extends:
|
||||||
|
- .darwin:aarch64
|
||||||
|
- .release_ghcup
|
||||||
|
- .root_cleanup
|
||||||
|
script: |
|
||||||
|
set -Eeuo pipefail
|
||||||
|
function runInNixShell() {
|
||||||
|
time nix-shell $CI_PROJECT_DIR/.gitlab/shell.nix \
|
||||||
|
-I nixpkgs=https://github.com/angerman/nixpkgs/archive/75f7281738b.tar.gz \
|
||||||
|
--argstr system "aarch64-darwin" \
|
||||||
|
--pure \
|
||||||
|
--keep CI_PROJECT_DIR \
|
||||||
|
--keep MACOSX_DEPLOYMENT_TARGET \
|
||||||
|
--keep JSON_VERSION \
|
||||||
|
--keep ARTIFACT \
|
||||||
|
--keep OS \
|
||||||
|
--keep ARCH \
|
||||||
|
--keep CABAL_DIR \
|
||||||
|
--keep GHC_VERSION \
|
||||||
|
--keep CABAL_VERSION \
|
||||||
|
--run "$1" 2>&1
|
||||||
|
}
|
||||||
|
runInNixShell ./.gitlab/before_script/darwin/install_deps.sh 2>&1
|
||||||
|
runInNixShell ./.gitlab/script/ghcup_release.sh 2>&1
|
||||||
|
variables:
|
||||||
|
ARTIFACT: "aarch64-apple-darwin-ghcup"
|
||||||
|
GHC_VERSION: "8.10.6"
|
||||||
|
CABAL_VERSION: "3.4.0.0"
|
||||||
|
MACOSX_DEPLOYMENT_TARGET: "10.7"
|
||||||
|
allow_failure: true
|
||||||
|
|
||||||
|
|
||||||
|
######## freebsd release ########
|
||||||
|
|
||||||
|
release:freebsd:
|
||||||
|
stage: release
|
||||||
|
needs: ["test: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.10.6"
|
||||||
|
CABAL_VERSION: "3.4.0.0"
|
||||||
|
allow_failure: true
|
||||||
|
|
||||||
|
######## windows release ########
|
||||||
|
|
||||||
|
release:windows:
|
||||||
|
stage: release
|
||||||
|
needs: ["test:windows"]
|
||||||
|
extends:
|
||||||
|
- .windows
|
||||||
|
- .release_ghcup
|
||||||
|
- .root_cleanup
|
||||||
|
before_script:
|
||||||
|
- bash ./.gitlab/before_script/windows/install_deps.sh
|
||||||
|
variables:
|
||||||
|
ARTIFACT: "x86_64-mingw64-ghcup"
|
||||||
|
GHC_VERSION: "8.10.6"
|
||||||
|
CABAL_VERSION: "3.4.0.0"
|
||||||
|
|
||||||
|
######## hlint ########
|
||||||
|
|
||||||
|
hlint:
|
||||||
|
stage: hlint
|
||||||
|
extends:
|
||||||
|
- .alpine:64bit
|
||||||
|
before_script:
|
||||||
|
- ./.gitlab/before_script/linux/alpine/install_deps.sh
|
||||||
|
script:
|
||||||
|
- ./.gitlab/script/hlint.sh
|
||||||
|
variables:
|
||||||
|
GHC_VERSION: "8.10.6"
|
||||||
|
CABAL_VERSION: "3.4.0.0"
|
||||||
|
JSON_VERSION: "0.0.4"
|
||||||
|
allow_failure: true
|
||||||
|
artifacts:
|
||||||
|
expire_in: 2 week
|
||||||
|
paths:
|
||||||
|
- report.html
|
||||||
|
when: on_failure
|
15
.gitlab/after_script.sh
Normal file
15
.gitlab/after_script.sh
Normal file
@ -0,0 +1,15 @@
|
|||||||
|
#!/bin/sh
|
||||||
|
|
||||||
|
set -eux
|
||||||
|
|
||||||
|
BUILD_DIR=$CI_PROJECT_DIR
|
||||||
|
echo "Cleaning $BUILD_DIR"
|
||||||
|
cd $HOME
|
||||||
|
test -n "$BUILD_DIR"
|
||||||
|
shopt -s extglob
|
||||||
|
rm -Rf "$BUILD_DIR"/!(out)
|
||||||
|
if [ "${OS}" = "WINDOWS" ] ; then
|
||||||
|
rm -Rf /c/ghcup
|
||||||
|
fi
|
||||||
|
|
||||||
|
exit 0
|
32
.gitlab/before_script/darwin/install_deps.sh
Executable file
32
.gitlab/before_script/darwin/install_deps.sh
Executable file
@ -0,0 +1,32 @@
|
|||||||
|
#!/bin/sh
|
||||||
|
|
||||||
|
set -eux
|
||||||
|
|
||||||
|
. "$( cd "$(dirname "$0")" ; pwd -P )/../../ghcup_env"
|
||||||
|
|
||||||
|
mkdir -p "${TMPDIR}"
|
||||||
|
|
||||||
|
if [ $ARCH = 'ARM64' ] ; then
|
||||||
|
curl -sSfL https://downloads.haskell.org/~ghcup/aarch64-apple-darwin-ghcup > ./ghcup-bin
|
||||||
|
chmod +x ghcup-bin
|
||||||
|
else
|
||||||
|
curl -sSfL https://downloads.haskell.org/~ghcup/x86_64-apple-darwin-ghcup > ./ghcup-bin
|
||||||
|
chmod +x ghcup-bin
|
||||||
|
./ghcup-bin upgrade -i -f
|
||||||
|
fi
|
||||||
|
|
||||||
|
./ghcup-bin install ${GHC_VERSION}
|
||||||
|
./ghcup-bin set ${GHC_VERSION}
|
||||||
|
./ghcup-bin install-cabal ${CABAL_VERSION}
|
||||||
|
|
||||||
|
if [ $ARCH = 'ARM64' ] ; then
|
||||||
|
cabal update
|
||||||
|
mkdir vendored
|
||||||
|
cd vendored
|
||||||
|
cabal unpack network-3.1.2.1
|
||||||
|
cd network*
|
||||||
|
autoreconf -fi
|
||||||
|
cd ../..
|
||||||
|
fi
|
||||||
|
|
||||||
|
exit 0
|
19
.gitlab/before_script/freebsd/install_deps.sh
Executable file
19
.gitlab/before_script/freebsd/install_deps.sh
Executable file
@ -0,0 +1,19 @@
|
|||||||
|
#!/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 upgrade -i -f
|
||||||
|
./ghcup-bin install ${GHC_VERSION}
|
||||||
|
./ghcup-bin set ${GHC_VERSION}
|
||||||
|
./ghcup-bin install-cabal ${CABAL_VERSION}
|
||||||
|
|
||||||
|
exit 0
|
58
.gitlab/before_script/linux/alpine/install_deps.sh
Executable file
58
.gitlab/before_script/linux/alpine/install_deps.sh
Executable file
@ -0,0 +1,58 @@
|
|||||||
|
#!/bin/sh
|
||||||
|
|
||||||
|
set -eux
|
||||||
|
|
||||||
|
. "$( cd "$(dirname "$0")" ; pwd -P )/../../../ghcup_env"
|
||||||
|
|
||||||
|
mkdir -p "${TMPDIR}"
|
||||||
|
|
||||||
|
apk add --no-cache \
|
||||||
|
curl \
|
||||||
|
gcc \
|
||||||
|
g++ \
|
||||||
|
binutils \
|
||||||
|
binutils-gold \
|
||||||
|
bsd-compat-headers \
|
||||||
|
gmp-dev \
|
||||||
|
ncurses-dev \
|
||||||
|
libffi-dev \
|
||||||
|
make \
|
||||||
|
xz \
|
||||||
|
tar \
|
||||||
|
perl
|
||||||
|
|
||||||
|
if [ "${ARCH}" = "32" ] ; then
|
||||||
|
curl -sSfL https://downloads.haskell.org/ghcup/i386-linux-ghcup > ./ghcup-bin
|
||||||
|
else
|
||||||
|
curl -sSfL https://downloads.haskell.org/ghcup/x86_64-linux-ghcup > ./ghcup-bin
|
||||||
|
fi
|
||||||
|
chmod +x ghcup-bin
|
||||||
|
./ghcup-bin upgrade -i -f
|
||||||
|
./ghcup-bin install ${GHC_VERSION}
|
||||||
|
./ghcup-bin install-cabal ${CABAL_VERSION}
|
||||||
|
|
||||||
|
# utils
|
||||||
|
apk add --no-cache \
|
||||||
|
bash \
|
||||||
|
git
|
||||||
|
|
||||||
|
## Package specific
|
||||||
|
apk add --no-cache \
|
||||||
|
zlib \
|
||||||
|
zlib-dev \
|
||||||
|
zlib-static \
|
||||||
|
bzip2 \
|
||||||
|
bzip2-dev \
|
||||||
|
bzip2-static \
|
||||||
|
gmp \
|
||||||
|
gmp-dev \
|
||||||
|
openssl-dev \
|
||||||
|
openssl-libs-static \
|
||||||
|
xz \
|
||||||
|
xz-dev \
|
||||||
|
ncurses-static
|
||||||
|
|
||||||
|
if [ "${ARCH}" = "32" ] ; then
|
||||||
|
apk add --no-cache \
|
||||||
|
bsd-compat-headers
|
||||||
|
fi
|
73
.gitlab/before_script/linux/install_deps.sh
Executable file
73
.gitlab/before_script/linux/install_deps.sh
Executable file
@ -0,0 +1,73 @@
|
|||||||
|
#!/bin/sh
|
||||||
|
|
||||||
|
set -eux
|
||||||
|
|
||||||
|
. "$( cd "$(dirname "$0")" ; pwd -P )/../../ghcup_env"
|
||||||
|
|
||||||
|
mkdir -p "${TMPDIR}"
|
||||||
|
|
||||||
|
sudo apt-get update -y
|
||||||
|
sudo apt-get install -y libnuma-dev zlib1g-dev libgmp-dev libgmp10 libssl-dev liblzma-dev libbz2-dev git wget lsb-release software-properties-common gnupg2 apt-transport-https
|
||||||
|
|
||||||
|
if [ "${CROSS}" = "arm-linux-gnueabihf" ] ; then
|
||||||
|
sudo apt-get install -y autoconf build-essential gcc-arm-linux-gnueabihf
|
||||||
|
sudo dpkg --add-architecture armhf
|
||||||
|
sudo apt-get update -y
|
||||||
|
sudo apt-get install -y libncurses-dev:armhf
|
||||||
|
fi
|
||||||
|
|
||||||
|
case "${ARCH}" in
|
||||||
|
ARM*)
|
||||||
|
case "${ARCH}" in
|
||||||
|
"ARM")
|
||||||
|
ghc_url=https://downloads.haskell.org/~ghc/${GHC_VERSION}/ghc-${GHC_VERSION}-armv7-deb10-linux.tar.xz
|
||||||
|
cabal_url=home.smart-cactus.org/~ben/cabal-install-${CABAL_VERSION}-armv7-linux-bootstrapped.tar.xz
|
||||||
|
;;
|
||||||
|
"ARM64")
|
||||||
|
ghc_url=https://downloads.haskell.org/~ghc/${GHC_VERSION}/ghc-${GHC_VERSION}-aarch64-deb10-linux.tar.xz
|
||||||
|
cabal_url=https://downloads.haskell.org/~cabal/cabal-install-${CABAL_VERSION}/cabal-install-${CABAL_VERSION}-aarch64-ubuntu-18.04.tar.xz
|
||||||
|
;;
|
||||||
|
*)
|
||||||
|
exit 1 ;;
|
||||||
|
esac
|
||||||
|
|
||||||
|
mkdir -p "${GHCUP_INSTALL_BASE_PREFIX}"/.ghcup/bin
|
||||||
|
|
||||||
|
curl -O "${ghc_url}"
|
||||||
|
tar -xf ghc-*.tar.*
|
||||||
|
cd ghc-${GHC_VERSION}
|
||||||
|
./configure --prefix="${GHCUP_INSTALL_BASE_PREFIX}"/.ghcup/ghc/${GHC_VERSION}
|
||||||
|
make install
|
||||||
|
for i in "${GHCUP_INSTALL_BASE_PREFIX}"/.ghcup/ghc/${GHC_VERSION}/bin/*-${GHC_VERSION} ; do
|
||||||
|
ln -s "${i}" "${GHCUP_INSTALL_BASE_PREFIX}"/.ghcup/bin/${i##*/}
|
||||||
|
done
|
||||||
|
for x in "${GHCUP_INSTALL_BASE_PREFIX}"/.ghcup/bin/*-${GHC_VERSION} ; do
|
||||||
|
ln -s ${x##*/} ${x%-${GHC_VERSION}}
|
||||||
|
done
|
||||||
|
cd ..
|
||||||
|
rm -rf ghc-${GHC_VERSION} ghc-*.tar.*
|
||||||
|
unset x i
|
||||||
|
|
||||||
|
mkdir cabal-install
|
||||||
|
cd cabal-install
|
||||||
|
curl -O "${cabal_url}"
|
||||||
|
tar -xf cabal-install-*
|
||||||
|
mv cabal "${GHCUP_INSTALL_BASE_PREFIX}"/.ghcup/bin/cabal
|
||||||
|
cd ..
|
||||||
|
rm -rf cabal-install
|
||||||
|
|
||||||
|
;;
|
||||||
|
*)
|
||||||
|
url=https://downloads.haskell.org/~ghcup/x86_64-linux-ghcup
|
||||||
|
|
||||||
|
curl -sSfL "${url}" > ./ghcup-bin
|
||||||
|
chmod +x ghcup-bin
|
||||||
|
|
||||||
|
./ghcup-bin upgrade -i -f
|
||||||
|
./ghcup-bin install ghc ${GHC_VERSION}
|
||||||
|
./ghcup-bin set ghc ${GHC_VERSION}
|
||||||
|
./ghcup-bin install cabal ${CABAL_VERSION}
|
||||||
|
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
|
10
.gitlab/before_script/linux/install_deps_minimal.sh
Executable file
10
.gitlab/before_script/linux/install_deps_minimal.sh
Executable file
@ -0,0 +1,10 @@
|
|||||||
|
#!/bin/sh
|
||||||
|
|
||||||
|
set -eux
|
||||||
|
|
||||||
|
. "$( cd "$(dirname "$0")" ; pwd -P )/../../ghcup_env"
|
||||||
|
|
||||||
|
mkdir -p "${TMPDIR}"
|
||||||
|
|
||||||
|
sudo apt-get update -y
|
||||||
|
sudo apt-get install -y libnuma-dev zlib1g-dev libgmp-dev libgmp10 libssl-dev liblzma-dev libbz2-dev git wget
|
21
.gitlab/before_script/windows/install_deps.sh
Normal file
21
.gitlab/before_script/windows/install_deps.sh
Normal file
@ -0,0 +1,21 @@
|
|||||||
|
#!/bin/sh
|
||||||
|
|
||||||
|
set -eux
|
||||||
|
|
||||||
|
. "$( cd "$(dirname "$0")" ; pwd -P )/../../ghcup_env"
|
||||||
|
|
||||||
|
mkdir -p "${TMPDIR}" "${CABAL_DIR}"
|
||||||
|
|
||||||
|
mkdir -p "$GHCUP_INSTALL_BASE_PREFIX/ghcup/bin"
|
||||||
|
|
||||||
|
CI_PROJECT_DIR=$(pwd)
|
||||||
|
curl -o ghcup.exe https://downloads.haskell.org/~ghcup/x86_64-mingw64-ghcup.exe
|
||||||
|
chmod +x ghcup.exe
|
||||||
|
|
||||||
|
./ghcup.exe install ${GHC_VERSION}
|
||||||
|
./ghcup.exe set ${GHC_VERSION}
|
||||||
|
./ghcup.exe install-cabal ${CABAL_VERSION}
|
||||||
|
|
||||||
|
rm ./ghcup.exe
|
||||||
|
|
||||||
|
exit 0
|
File diff suppressed because it is too large
Load Diff
9
.gitlab/ghcup_env
Normal file
9
.gitlab/ghcup_env
Normal file
@ -0,0 +1,9 @@
|
|||||||
|
if [ "${OS}" = "WINDOWS" ] ; then
|
||||||
|
export GHCUP_INSTALL_BASE_PREFIX="$CI_PROJECT_DIR"
|
||||||
|
export PATH="$GHCUP_INSTALL_BASE_PREFIX/ghcup/bin:$CI_PROJECT_DIR/.local/bin:$PATH"
|
||||||
|
export TMPDIR="$CI_PROJECT_DIR/tmp"
|
||||||
|
else
|
||||||
|
export GHCUP_INSTALL_BASE_PREFIX="$CI_PROJECT_DIR"
|
||||||
|
export PATH="$CI_PROJECT_DIR/.ghcup/bin:$CI_PROJECT_DIR/.local/bin:/opt/llvm/bin:$PATH"
|
||||||
|
export TMPDIR="$CI_PROJECT_DIR/tmp"
|
||||||
|
fi
|
30
.gitlab/script/ghcup_bootstrap.sh
Executable file
30
.gitlab/script/ghcup_bootstrap.sh
Executable file
@ -0,0 +1,30 @@
|
|||||||
|
#!/bin/sh
|
||||||
|
|
||||||
|
set -eux
|
||||||
|
|
||||||
|
. "$( cd "$(dirname "$0")" ; pwd -P )/../ghcup_env"
|
||||||
|
|
||||||
|
mkdir -p "$CI_PROJECT_DIR"/.local/bin
|
||||||
|
|
||||||
|
ecabal() {
|
||||||
|
cabal "$@"
|
||||||
|
}
|
||||||
|
|
||||||
|
eghcup() {
|
||||||
|
ghcup -v -c -s file://$(pwd)/ghcup-${JSON_VERSION}.yaml "$@"
|
||||||
|
}
|
||||||
|
|
||||||
|
git describe --always
|
||||||
|
|
||||||
|
### build
|
||||||
|
|
||||||
|
ecabal update
|
||||||
|
|
||||||
|
export BOOTSTRAP_HASKELL_NONINTERACTIVE=yes
|
||||||
|
export BOOTSTRAP_HASKELL_GHC_VERSION=$GHC_VERSION
|
||||||
|
export BOOTSTRAP_HASKELL_CABAL_VERSION=$CABAL_VERSION
|
||||||
|
|
||||||
|
./bootstrap-haskell
|
||||||
|
|
||||||
|
[ "$(ghc --numeric-version)" = "${GHC_VERSION}" ]
|
||||||
|
|
52
.gitlab/script/ghcup_cross.sh
Executable file
52
.gitlab/script/ghcup_cross.sh
Executable file
@ -0,0 +1,52 @@
|
|||||||
|
#!/bin/sh
|
||||||
|
|
||||||
|
set -eux
|
||||||
|
|
||||||
|
. "$( cd "$(dirname "$0")" ; pwd -P )/../ghcup_env"
|
||||||
|
|
||||||
|
mkdir -p "$CI_PROJECT_DIR"/.local/bin
|
||||||
|
|
||||||
|
CI_PROJECT_DIR=$(pwd)
|
||||||
|
|
||||||
|
ecabal() {
|
||||||
|
cabal "$@"
|
||||||
|
}
|
||||||
|
|
||||||
|
eghcup() {
|
||||||
|
ghcup -v -c -s file://$CI_PROJECT_DIR/ghcup-${JSON_VERSION}.yaml "$@"
|
||||||
|
}
|
||||||
|
|
||||||
|
git describe --always
|
||||||
|
|
||||||
|
### build
|
||||||
|
|
||||||
|
ecabal update
|
||||||
|
|
||||||
|
ecabal build -w ghc-${GHC_VERSION}
|
||||||
|
cp "$(ecabal new-exec -w ghc-${GHC_VERSION} --verbose=0 --offline sh -- -c 'command -v ghcup')" "$CI_PROJECT_DIR"/.local/bin/ghcup
|
||||||
|
|
||||||
|
### cleanup
|
||||||
|
|
||||||
|
rm -rf "${GHCUP_INSTALL_BASE_PREFIX}"/.ghcup
|
||||||
|
|
||||||
|
### manual cli based testing
|
||||||
|
|
||||||
|
eghcup --numeric-version
|
||||||
|
|
||||||
|
eghcup install ghc ${GHC_VERSION}
|
||||||
|
eghcup set ghc ${GHC_VERSION}
|
||||||
|
eghcup install cabal ${CABAL_VERSION}
|
||||||
|
|
||||||
|
cabal --version
|
||||||
|
|
||||||
|
eghcup debug-info
|
||||||
|
|
||||||
|
eghcup compile ghc -j $(nproc) -v ${GHC_TARGET_VERSION} -b ${GHC_VERSION} -x ${CROSS} -- --enable-unregisterised
|
||||||
|
eghcup set ghc ${CROSS}-${GHC_TARGET_VERSION}
|
||||||
|
|
||||||
|
[ `$(eghcup whereis ghc ${CROSS}-${GHC_TARGET_VERSION}) --numeric-version` = "${GHC_TARGET_VERSION}" ]
|
||||||
|
|
||||||
|
# nuke
|
||||||
|
eghcup nuke
|
||||||
|
[ ! -e "${GHCUP_INSTALL_BASE_PREFIX}/.ghcup" ]
|
||||||
|
|
52
.gitlab/script/ghcup_git.sh
Executable file
52
.gitlab/script/ghcup_git.sh
Executable file
@ -0,0 +1,52 @@
|
|||||||
|
#!/bin/sh
|
||||||
|
|
||||||
|
set -eux
|
||||||
|
|
||||||
|
. "$( cd "$(dirname "$0")" ; pwd -P )/../ghcup_env"
|
||||||
|
|
||||||
|
mkdir -p "$CI_PROJECT_DIR"/.local/bin
|
||||||
|
|
||||||
|
CI_PROJECT_DIR=$(pwd)
|
||||||
|
|
||||||
|
ecabal() {
|
||||||
|
cabal "$@"
|
||||||
|
}
|
||||||
|
|
||||||
|
eghcup() {
|
||||||
|
ghcup -v -c -s file://$CI_PROJECT_DIR/ghcup-${JSON_VERSION}.yaml "$@"
|
||||||
|
}
|
||||||
|
|
||||||
|
git describe --always
|
||||||
|
|
||||||
|
### build
|
||||||
|
|
||||||
|
ecabal update
|
||||||
|
|
||||||
|
ecabal build -w ghc-${GHC_VERSION}
|
||||||
|
cp "$(ecabal new-exec -w ghc-${GHC_VERSION} --verbose=0 --offline sh -- -c 'command -v ghcup')" "$CI_PROJECT_DIR"/.local/bin/ghcup
|
||||||
|
|
||||||
|
### cleanup
|
||||||
|
|
||||||
|
rm -rf "${GHCUP_INSTALL_BASE_PREFIX}"/.ghcup
|
||||||
|
|
||||||
|
### manual cli based testing
|
||||||
|
|
||||||
|
eghcup --numeric-version
|
||||||
|
|
||||||
|
eghcup install ghc ${GHC_VERSION}
|
||||||
|
eghcup set ghc ${GHC_VERSION}
|
||||||
|
eghcup install cabal ${CABAL_VERSION}
|
||||||
|
|
||||||
|
cabal --version
|
||||||
|
|
||||||
|
eghcup debug-info
|
||||||
|
|
||||||
|
eghcup compile ghc -j $(nproc) -g ${GHC_GIT_TAG} -b ${GHC_VERSION} -- --enable-unregisterised
|
||||||
|
eghcup set ghc ${GHC_GIT_VERSION}
|
||||||
|
|
||||||
|
[ `$(eghcup whereis ghc ${GHC_GIT_VERSION}) --numeric-version` = "${GHC_GIT_VERSION}" ]
|
||||||
|
|
||||||
|
# nuke
|
||||||
|
eghcup nuke
|
||||||
|
[ ! -e "${GHCUP_INSTALL_BASE_PREFIX}/.ghcup" ]
|
||||||
|
|
44
.gitlab/script/ghcup_release.sh
Executable file
44
.gitlab/script/ghcup_release.sh
Executable file
@ -0,0 +1,44 @@
|
|||||||
|
#!/bin/sh
|
||||||
|
|
||||||
|
set -eux
|
||||||
|
|
||||||
|
. "$( cd "$(dirname "$0")" ; pwd -P )/../ghcup_env"
|
||||||
|
|
||||||
|
mkdir -p "$CI_PROJECT_DIR"/.local/bin
|
||||||
|
|
||||||
|
ecabal() {
|
||||||
|
cabal "$@"
|
||||||
|
}
|
||||||
|
|
||||||
|
git describe
|
||||||
|
|
||||||
|
# build
|
||||||
|
ecabal update
|
||||||
|
|
||||||
|
|
||||||
|
if [ "${OS}" = "LINUX" ] ; then
|
||||||
|
if [ "${ARCH}" = "32" ] ; then
|
||||||
|
ecabal build -w ghc-${GHC_VERSION} --ghc-options='-split-sections -optl-static' -ftui
|
||||||
|
elif [ "${ARCH}" = "64" ] ; then
|
||||||
|
ecabal build -w ghc-${GHC_VERSION} --ghc-options='-split-sections -optl-static' -ftui
|
||||||
|
else
|
||||||
|
ecabal build -w ghc-${GHC_VERSION} -ftui
|
||||||
|
fi
|
||||||
|
elif [ "${OS}" = "FREEBSD" ] ; then
|
||||||
|
ecabal build -w ghc-${GHC_VERSION} --ghc-options='-split-sections' --constraint="zlib +bundled-c-zlib" --constraint="zip +disable-zstd" -ftui
|
||||||
|
elif [ "${OS}" = "WINDOWS" ] ; then
|
||||||
|
ecabal build -w ghc-${GHC_VERSION} --constraint="zlib +bundled-c-zlib" --constraint="lzma +static"
|
||||||
|
else
|
||||||
|
ecabal build -w ghc-${GHC_VERSION} --constraint="zlib +bundled-c-zlib" --constraint="lzma +static" -ftui
|
||||||
|
fi
|
||||||
|
|
||||||
|
mkdir out
|
||||||
|
binary=$(ecabal new-exec -w ghc-${GHC_VERSION} --verbose=0 --offline sh -- -c 'command -v ghcup')
|
||||||
|
ver=$("${binary}" --numeric-version)
|
||||||
|
if [ "${OS}" = "DARWIN" ] ; then
|
||||||
|
strip "${binary}"
|
||||||
|
else
|
||||||
|
strip -s "${binary}"
|
||||||
|
fi
|
||||||
|
cp "${binary}" out/${ARTIFACT}-${ver}
|
||||||
|
|
21
.gitlab/script/ghcup_stack.sh
Executable file
21
.gitlab/script/ghcup_stack.sh
Executable file
@ -0,0 +1,21 @@
|
|||||||
|
#!/bin/sh
|
||||||
|
|
||||||
|
set -eux
|
||||||
|
|
||||||
|
. "$( cd "$(dirname "$0")" ; pwd -P )/../ghcup_env"
|
||||||
|
|
||||||
|
mkdir -p "$CI_PROJECT_DIR"/.local/bin
|
||||||
|
|
||||||
|
git describe --always
|
||||||
|
|
||||||
|
### build
|
||||||
|
|
||||||
|
curl -L -O https://get.haskellstack.org/stable/linux-x86_64.tar.gz
|
||||||
|
tar xf linux-x86_64.tar.gz
|
||||||
|
cp stack-*-linux-*/stack "$CI_PROJECT_DIR"/.local/bin/stack
|
||||||
|
chmod +x "$CI_PROJECT_DIR"/.local/bin/stack
|
||||||
|
|
||||||
|
mkdir -p "$CI_PROJECT_DIR"/.stack_root
|
||||||
|
export TAR_OPTIONS=--no-same-owner
|
||||||
|
stack --allow-different-user --stack-root "$CI_PROJECT_DIR"/.stack_root build
|
||||||
|
stack --allow-different-user --stack-root "$CI_PROJECT_DIR"/.stack_root test
|
246
.gitlab/script/ghcup_version.sh
Executable file
246
.gitlab/script/ghcup_version.sh
Executable file
@ -0,0 +1,246 @@
|
|||||||
|
#!/bin/sh
|
||||||
|
|
||||||
|
set -eux
|
||||||
|
|
||||||
|
. "$( cd "$(dirname "$0")" ; pwd -P )/../ghcup_env"
|
||||||
|
|
||||||
|
mkdir -p "$CI_PROJECT_DIR"/.local/bin
|
||||||
|
|
||||||
|
CI_PROJECT_DIR=$(pwd)
|
||||||
|
|
||||||
|
ecabal() {
|
||||||
|
cabal "$@"
|
||||||
|
}
|
||||||
|
|
||||||
|
raw_eghcup() {
|
||||||
|
ghcup -v -c "$@"
|
||||||
|
}
|
||||||
|
|
||||||
|
eghcup() {
|
||||||
|
if [ "${OS}" = "WINDOWS" ] ; then
|
||||||
|
ghcup -v -c -s file:/$CI_PROJECT_DIR/ghcup-${JSON_VERSION}.yaml "$@"
|
||||||
|
else
|
||||||
|
ghcup -v -c -s file://$CI_PROJECT_DIR/ghcup-${JSON_VERSION}.yaml "$@"
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
if [ "${OS}" = "WINDOWS" ] ; then
|
||||||
|
GHCUP_DIR="${GHCUP_INSTALL_BASE_PREFIX}"/ghcup
|
||||||
|
else
|
||||||
|
GHCUP_DIR="${GHCUP_INSTALL_BASE_PREFIX}"/.ghcup
|
||||||
|
fi
|
||||||
|
|
||||||
|
git describe --always
|
||||||
|
|
||||||
|
### build
|
||||||
|
|
||||||
|
ecabal update
|
||||||
|
|
||||||
|
if [ "${OS}" = "DARWIN" ] ; then
|
||||||
|
ecabal build -w ghc-${GHC_VERSION} -ftui
|
||||||
|
ecabal test -w ghc-${GHC_VERSION} -ftui ghcup-test
|
||||||
|
ecabal haddock -w ghc-${GHC_VERSION} -ftui
|
||||||
|
elif [ "${OS}" = "LINUX" ] ; then
|
||||||
|
if [ "${ARCH}" = "32" ] ; then
|
||||||
|
ecabal build -w ghc-${GHC_VERSION} -finternal-downloader -ftui
|
||||||
|
ecabal test -w ghc-${GHC_VERSION} -finternal-downloader -ftui ghcup-test
|
||||||
|
ecabal haddock -w ghc-${GHC_VERSION} -finternal-downloader -ftui
|
||||||
|
else
|
||||||
|
ecabal build -w ghc-${GHC_VERSION} -finternal-downloader -ftui
|
||||||
|
ecabal test -w ghc-${GHC_VERSION} -finternal-downloader -ftui ghcup-test
|
||||||
|
ecabal haddock -w ghc-${GHC_VERSION} -finternal-downloader -ftui
|
||||||
|
|
||||||
|
if [ "${ARCH}" = "64" ] ; then
|
||||||
|
# doctest
|
||||||
|
curl -sL https://downloads.haskell.org/~ghcup/unofficial-bindists/cabal-docspec/cabal-docspec-0.0.0.20210228_p1.tar.bz2 > cabal-docspec.tar.bz2
|
||||||
|
echo '3a10f6fec16dbd18efdd331b1cef5d2d342082da42f5b520726d1fa6a3990d12 cabal-docspec.tar.bz2' | sha256sum -c -
|
||||||
|
tar -xjf cabal-docspec.tar.bz2 cabal-docspec
|
||||||
|
mv cabal-docspec "$CI_PROJECT_DIR"/.local/bin/cabal-docspec
|
||||||
|
rm -f cabal-docspec.tar.bz2
|
||||||
|
chmod a+x "$CI_PROJECT_DIR"/.local/bin/cabal-docspec
|
||||||
|
|
||||||
|
cabal-docspec -XCPP -XTypeSynonymInstances -XOverloadedStrings -XPackageImports --check-properties
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
elif [ "${OS}" = "FREEBSD" ] ; then
|
||||||
|
ecabal build -w ghc-${GHC_VERSION} -finternal-downloader -ftui --constraint="zip +disable-zstd"
|
||||||
|
ecabal test -w ghc-${GHC_VERSION} -finternal-downloader -ftui --constraint="zip +disable-zstd" ghcup-test
|
||||||
|
ecabal haddock -w ghc-${GHC_VERSION} -finternal-downloader -ftui --constraint="zip +disable-zstd"
|
||||||
|
elif [ "${OS}" = "WINDOWS" ] ; then
|
||||||
|
ecabal build -w ghc-${GHC_VERSION}
|
||||||
|
ecabal test -w ghc-${GHC_VERSION} ghcup-test
|
||||||
|
ecabal haddock -w ghc-${GHC_VERSION}
|
||||||
|
else
|
||||||
|
ecabal build -w ghc-${GHC_VERSION} -finternal-downloader -ftui
|
||||||
|
ecabal test -w ghc-${GHC_VERSION} -finternal-downloader -ftui ghcup-test
|
||||||
|
ecabal haddock -w ghc-${GHC_VERSION} -finternal-downloader -ftui
|
||||||
|
fi
|
||||||
|
|
||||||
|
|
||||||
|
if [ "${OS}" = "WINDOWS" ] ; then
|
||||||
|
ext=".exe"
|
||||||
|
else
|
||||||
|
ext=''
|
||||||
|
fi
|
||||||
|
cp "$(ecabal new-exec -w ghc-${GHC_VERSION} --verbose=0 --offline sh -- -c 'command -v ghcup')" "$CI_PROJECT_DIR"/.local/bin/ghcup${ext}
|
||||||
|
cp "$(ecabal new-exec -w ghc-${GHC_VERSION} --verbose=0 --offline sh -- -c 'command -v ghcup-gen')" "$CI_PROJECT_DIR"/.local/bin/ghcup-gen${ext}
|
||||||
|
|
||||||
|
### cleanup
|
||||||
|
|
||||||
|
rm -rf "${GHCUP_DIR}"
|
||||||
|
|
||||||
|
### manual cli based testing
|
||||||
|
|
||||||
|
|
||||||
|
ghcup-gen check -f ghcup-${JSON_VERSION}.yaml
|
||||||
|
|
||||||
|
eghcup --numeric-version
|
||||||
|
|
||||||
|
eghcup install ghc ${GHC_VERSION}
|
||||||
|
[ `$(eghcup whereis ghc ${GHC_VERSION}) --numeric-version` = "${GHC_VERSION}" ]
|
||||||
|
eghcup set ghc ${GHC_VERSION}
|
||||||
|
eghcup install cabal ${CABAL_VERSION}
|
||||||
|
[ `$(eghcup whereis cabal ${CABAL_VERSION}) --numeric-version` = "${CABAL_VERSION}" ]
|
||||||
|
|
||||||
|
cabal --version
|
||||||
|
|
||||||
|
eghcup debug-info
|
||||||
|
|
||||||
|
# also test etags
|
||||||
|
eghcup list
|
||||||
|
eghcup list -t ghc
|
||||||
|
eghcup list -t cabal
|
||||||
|
|
||||||
|
ghc_ver=$(ghc --numeric-version)
|
||||||
|
ghc --version
|
||||||
|
ghc-${ghc_ver} --version
|
||||||
|
if [ "${OS}" != "WINDOWS" ] ; then
|
||||||
|
ghci --version
|
||||||
|
ghci-${ghc_ver} --version
|
||||||
|
fi
|
||||||
|
|
||||||
|
|
||||||
|
if [ "${OS}" = "DARWIN" ] && [ "${ARCH}" = "ARM64" ] ; then
|
||||||
|
echo
|
||||||
|
else
|
||||||
|
# test installing new ghc doesn't mess with currently set GHC
|
||||||
|
# https://gitlab.haskell.org/haskell/ghcup-hs/issues/7
|
||||||
|
if [ "${OS}" = "LINUX" ] ; then
|
||||||
|
eghcup --downloader=wget prefetch ghc 8.10.3
|
||||||
|
eghcup --offline install ghc 8.10.3
|
||||||
|
if [ "${ARCH}" = "64" ] ; then
|
||||||
|
expected=$(cat "$( cd "$(dirname "$0")" ; pwd -P )/../ghc-8.10.3-linux.files" | sort)
|
||||||
|
actual=$(cd "${GHCUP_DIR}/ghc/8.10.3/" && find | sort)
|
||||||
|
[ "${actual}" = "${expected}" ]
|
||||||
|
unset actual expected
|
||||||
|
fi
|
||||||
|
elif [ "${OS}" = "WINDOWS" ] ; then
|
||||||
|
eghcup prefetch ghc 8.10.3
|
||||||
|
eghcup --offline install ghc 8.10.3
|
||||||
|
expected=$(cat "$( cd "$(dirname "$0")" ; pwd -P )/../ghc-8.10.3-windows.files" | sort)
|
||||||
|
actual=$(cd "${GHCUP_DIR}/ghc/8.10.3/" && find | sort)
|
||||||
|
[ "${actual}" = "${expected}" ]
|
||||||
|
unset actual expected
|
||||||
|
else
|
||||||
|
eghcup prefetch ghc 8.10.3
|
||||||
|
eghcup --offline install ghc 8.10.3
|
||||||
|
fi
|
||||||
|
[ "$(ghc --numeric-version)" = "${ghc_ver}" ]
|
||||||
|
eghcup --offline set 8.10.3
|
||||||
|
eghcup set 8.10.3
|
||||||
|
[ "$(ghc --numeric-version)" = "8.10.3" ]
|
||||||
|
eghcup set ${GHC_VERSION}
|
||||||
|
[ "$(ghc --numeric-version)" = "${ghc_ver}" ]
|
||||||
|
eghcup --offline rm 8.10.3
|
||||||
|
[ "$(ghc --numeric-version)" = "${ghc_ver}" ]
|
||||||
|
|
||||||
|
if [ "${OS}" = "DARWIN" ] ; then
|
||||||
|
eghcup install hls
|
||||||
|
$(eghcup whereis hls) --version
|
||||||
|
|
||||||
|
eghcup install stack
|
||||||
|
$(eghcup whereis stack) --version
|
||||||
|
elif [ "${OS}" = "LINUX" ] ; then
|
||||||
|
if [ "${ARCH}" = "64" ] ; then
|
||||||
|
eghcup install hls
|
||||||
|
haskell-language-server-wrapper --version
|
||||||
|
|
||||||
|
eghcup install stack
|
||||||
|
stack --version
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
|
# check that lazy loading works for 'whereis'
|
||||||
|
cp "$CI_PROJECT_DIR/ghcup-${JSON_VERSION}.yaml" "$CI_PROJECT_DIR/ghcup-${JSON_VERSION}.yaml.bak"
|
||||||
|
echo '**' > "$CI_PROJECT_DIR/ghcup-${JSON_VERSION}.yaml"
|
||||||
|
eghcup whereis ghc $(ghc --numeric-version)
|
||||||
|
mv -f "$CI_PROJECT_DIR/ghcup-${JSON_VERSION}.yaml.bak" "$CI_PROJECT_DIR/ghcup-${JSON_VERSION}.yaml"
|
||||||
|
|
||||||
|
eghcup rm $(ghc --numeric-version)
|
||||||
|
|
||||||
|
# https://gitlab.haskell.org/haskell/ghcup-hs/-/issues/116
|
||||||
|
if [ "${OS}" = "LINUX" ] ; then
|
||||||
|
if [ "${ARCH}" = "64" ] ; then
|
||||||
|
eghcup install cabal -u https://oleg.fi/cabal-install-3.4.0.0-rc4/cabal-install-3.4.0.0-x86_64-ubuntu-16.04.tar.xz 3.4.0.0-rc4
|
||||||
|
eghcup rm cabal 3.4.0.0-rc4
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
|
sha_sum() {
|
||||||
|
if [ "${OS}" = "FREEBSD" ] ; then
|
||||||
|
sha256 "$@"
|
||||||
|
else
|
||||||
|
sha256sum "$@"
|
||||||
|
fi
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
# test etags
|
||||||
|
rm -f "${GHCUP_DIR}/cache/ghcup-${JSON_VERSION}.yaml"
|
||||||
|
raw_eghcup -s https://www.haskell.org/ghcup/data/ghcup-${JSON_VERSION}.yaml list
|
||||||
|
# snapshot yaml and etags file
|
||||||
|
etag=$(cat "${GHCUP_DIR}/cache/ghcup-${JSON_VERSION}.yaml.etags")
|
||||||
|
sha=$(sha_sum "${GHCUP_DIR}/cache/ghcup-${JSON_VERSION}.yaml")
|
||||||
|
# invalidate access time timer, which is 5minutes, so we re-download
|
||||||
|
touch -a -m -t '199901010101' "${GHCUP_DIR}/cache/ghcup-${JSON_VERSION}.yaml"
|
||||||
|
# redownload same file with some newlines added
|
||||||
|
raw_eghcup -s https://www.haskell.org/ghcup/exp/ghcup-${JSON_VERSION}.yaml list
|
||||||
|
# snapshot new yaml and etags file
|
||||||
|
etag2=$(cat "${GHCUP_DIR}/cache/ghcup-${JSON_VERSION}.yaml.etags")
|
||||||
|
sha2=$(sha_sum "${GHCUP_DIR}/cache/ghcup-${JSON_VERSION}.yaml")
|
||||||
|
# compare
|
||||||
|
[ "${etag}" != "${etag2}" ]
|
||||||
|
[ "${sha}" != "${sha2}" ]
|
||||||
|
# invalidate access time timer, which is 5minutes, but don't expect a re-download
|
||||||
|
touch -a -m -t '199901010101' "${GHCUP_DIR}/cache/ghcup-${JSON_VERSION}.yaml"
|
||||||
|
# this time, we expect the same hash and etag
|
||||||
|
raw_eghcup -s https://www.haskell.org/ghcup/exp/ghcup-${JSON_VERSION}.yaml list
|
||||||
|
etag3=$(cat "${GHCUP_DIR}/cache/ghcup-${JSON_VERSION}.yaml.etags")
|
||||||
|
sha3=$(sha_sum "${GHCUP_DIR}/cache/ghcup-${JSON_VERSION}.yaml")
|
||||||
|
[ "${etag2}" = "${etag3}" ]
|
||||||
|
[ "${sha2}" = "${sha3}" ]
|
||||||
|
|
||||||
|
# test isolated installs
|
||||||
|
eghcup install ghc -i "$(pwd)/isolated" 8.10.5
|
||||||
|
[ "$(isolated/bin/ghc --numeric-version)" = "8.10.5" ]
|
||||||
|
! eghcup install ghc -i "$(pwd)/isolated" 8.10.5
|
||||||
|
if [ "${ARCH}" = "64" ] ; then
|
||||||
|
if [ "${OS}" = "LINUX" ] || [ "${OS}" = "WINDOWS" ] ; then
|
||||||
|
eghcup install cabal -i "$(pwd)/isolated" 3.4.0.0
|
||||||
|
[ "$(isolated/cabal --numeric-version)" = "3.4.0.0" ]
|
||||||
|
eghcup install stack -i "$(pwd)/isolated" 2.7.3
|
||||||
|
[ "$(isolated/stack --numeric-version)" = "2.7.3" ]
|
||||||
|
eghcup install hls -i "$(pwd)/isolated" 1.3.0
|
||||||
|
[ "$(isolated/haskell-language-server-wrapper --numeric-version)" = "1.3.0" ] ||
|
||||||
|
[ "$(isolated/haskell-language-server-wrapper --numeric-version)" = "1.3.0.0" ]
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
|
eghcup upgrade
|
||||||
|
eghcup upgrade -f
|
||||||
|
|
||||||
|
|
||||||
|
# nuke
|
||||||
|
eghcup nuke
|
||||||
|
[ ! -e "${GHCUP_DIR}" ]
|
19
.gitlab/script/hlint.sh
Executable file
19
.gitlab/script/hlint.sh
Executable file
@ -0,0 +1,19 @@
|
|||||||
|
#!/bin/sh
|
||||||
|
|
||||||
|
set -eux
|
||||||
|
|
||||||
|
. "$( cd "$(dirname "$0")" ; pwd -P )/../ghcup_env"
|
||||||
|
|
||||||
|
mkdir -p "$CI_PROJECT_DIR"/.local/bin
|
||||||
|
|
||||||
|
ecabal() {
|
||||||
|
cabal --store-dir="$(pwd)"/.store "$@"
|
||||||
|
}
|
||||||
|
|
||||||
|
git describe
|
||||||
|
|
||||||
|
ecabal update
|
||||||
|
ecabal install -w ghc-${GHC_VERSION} --installdir="$CI_PROJECT_DIR"/.local/bin hlint
|
||||||
|
|
||||||
|
hlint -r lib/ test/
|
||||||
|
|
90
.gitlab/shell.nix
Normal file
90
.gitlab/shell.nix
Normal file
@ -0,0 +1,90 @@
|
|||||||
|
{ system ? "aarch64-darwin"
|
||||||
|
#, nixpkgs ? fetchTarball https://github.com/angerman/nixpkgs/archive/257cb120334.tar.gz #apple-silicon.tar.gz
|
||||||
|
, pkgs ? import <nixpkgs> { inherit system; }
|
||||||
|
, compiler ? if system == "aarch64-darwin" then "ghc8103Binary" else "ghc8103"
|
||||||
|
}: pkgs.mkShell {
|
||||||
|
# this prevents nix from trying to write the env-vars file.
|
||||||
|
# we can't really, as NIX_BUILD_TOP/env-vars is not set.
|
||||||
|
noDumpEnvVars=1;
|
||||||
|
|
||||||
|
# stop polluting LDFLAGS with -liconv
|
||||||
|
dontAddExtraLibs = true;
|
||||||
|
|
||||||
|
# we need to inject ncurses into --with-curses-libraries.
|
||||||
|
# the real fix is to teach terminfo to use libcurses on macOS.
|
||||||
|
# CONFIGURE_ARGS = "--with-intree-gmp --with-curses-libraries=${pkgs.ncurses.out}/lib";
|
||||||
|
CONFIGURE_ARGS = "--with-intree-gmp --with-curses-libraries=/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/lib --with-iconv-includes=/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include --with-iconv-libraries=/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/lib SH=/bin/bash";
|
||||||
|
|
||||||
|
# magic speedup pony :facepalm:
|
||||||
|
#
|
||||||
|
# nix has the ugly habbit of duplicating ld flags more than necessary. This
|
||||||
|
# somewhat consolidates this.
|
||||||
|
shellHook = ''
|
||||||
|
export NIX_LDFLAGS=$(for a in $NIX_LDFLAGS; do echo $a; done |sort|uniq|xargs)
|
||||||
|
export NIX_LDFLAGS_FOR_TARGET=$(for a in $NIX_LDFLAGS_FOR_TARGET; do echo $a; done |sort|uniq|xargs)
|
||||||
|
export NIX_LDFLAGS_FOR_TARGET=$(comm -3 <(for l in $NIX_LDFLAGS_FOR_TARGET; do echo $l; done) <(for l in $NIX_LDFLAGS; do echo $l; done))
|
||||||
|
|
||||||
|
|
||||||
|
# Impurity hack for GHC releases.
|
||||||
|
#################################
|
||||||
|
# We don't want binary releases to depend on nix, thus we'll need to make sure we don't leak in references.
|
||||||
|
# GHC externally depends only on iconv and curses. However we can't force a specific curses library for
|
||||||
|
# the terminfo package, as such we'll need to make sure we only look in the system path for the curses library
|
||||||
|
# and not pick up the tinfo from the nix provided ncurses package.
|
||||||
|
#
|
||||||
|
# We also need to force us to use the systems COREFOUNDATION, not the one that nix builds. Again this is impure,
|
||||||
|
# but it will allow us to have proper binary distributions.
|
||||||
|
#
|
||||||
|
# do not use nixpkgs provided core foundation
|
||||||
|
export NIX_COREFOUNDATION_RPATH=/System/Library/Frameworks
|
||||||
|
# drop curses from the LDFLAGS, we really want the system ones, not the nix ones.
|
||||||
|
export NIX_LDFLAGS=$(for lib in $NIX_LDFLAGS; do case "$lib" in *curses*);; *) echo -n "$lib ";; esac; done;)
|
||||||
|
export NIX_CFLAGS_COMPILE+=" -Wno-nullability-completeness -Wno-availability -Wno-expansion-to-defined -Wno-builtin-requires-header -Wno-unused-command-line-argument"
|
||||||
|
|
||||||
|
# unconditionally add the MacOSX.sdk and TargetConditional.h
|
||||||
|
export NIX_CFLAGS_COMPILE+=" -isystem /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include"
|
||||||
|
export NIX_LDFLAGS="-L/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/lib $NIX_LDFLAGS"
|
||||||
|
|
||||||
|
'';
|
||||||
|
|
||||||
|
nativeBuildInputs = (with pkgs; [
|
||||||
|
# This needs to come *before* ghc,
|
||||||
|
# otherwise we migth end up with the clang from
|
||||||
|
# the bootstrap GHC in PATH with higher priority.
|
||||||
|
clang_11
|
||||||
|
llvm_11
|
||||||
|
|
||||||
|
haskell.compiler.${compiler}
|
||||||
|
haskell.packages.${compiler}.cabal-install
|
||||||
|
haskell.packages.${compiler}.alex
|
||||||
|
haskell.packages.${compiler}.happy # _1_19_12 is needed for older GHCs.
|
||||||
|
|
||||||
|
automake
|
||||||
|
autoconf
|
||||||
|
m4
|
||||||
|
|
||||||
|
gmp
|
||||||
|
zlib.out
|
||||||
|
zlib.dev
|
||||||
|
glibcLocales
|
||||||
|
# locale doesn't build yet :-/
|
||||||
|
# locale
|
||||||
|
|
||||||
|
git
|
||||||
|
|
||||||
|
python3
|
||||||
|
# python3Full
|
||||||
|
# python3Packages.sphinx
|
||||||
|
perl
|
||||||
|
|
||||||
|
which
|
||||||
|
wget
|
||||||
|
curl
|
||||||
|
file
|
||||||
|
|
||||||
|
xz
|
||||||
|
xlibs.lndir
|
||||||
|
|
||||||
|
cacert ])
|
||||||
|
++ (with pkgs.darwin.apple_sdk.frameworks; [ Foundation Security ]);
|
||||||
|
}
|
4
.gitmodules
vendored
4
.gitmodules
vendored
@ -1,4 +0,0 @@
|
|||||||
[submodule "data/metadata"]
|
|
||||||
path = data/metadata
|
|
||||||
url = https://github.com/haskell/ghcup-metadata.git
|
|
||||||
branch = develop
|
|
@ -20,7 +20,6 @@
|
|||||||
- ignore: {name: "Avoid lambda"}
|
- ignore: {name: "Avoid lambda"}
|
||||||
- ignore: {name: "Use uncurry"}
|
- ignore: {name: "Use uncurry"}
|
||||||
- ignore: {name: "Use replicateM"}
|
- ignore: {name: "Use replicateM"}
|
||||||
- ignore: {name: "Use unless"}
|
|
||||||
- ignore: {name: "Redundant irrefutable pattern"}
|
- ignore: {name: "Redundant irrefutable pattern"}
|
||||||
|
|
||||||
|
|
||||||
|
25
.travis.yml
Normal file
25
.travis.yml
Normal file
@ -0,0 +1,25 @@
|
|||||||
|
jobs:
|
||||||
|
include:
|
||||||
|
- os: osx
|
||||||
|
osx_image: xcode10.1
|
||||||
|
language: generic
|
||||||
|
env: ARTIFACT=x86_64-apple-darwin-10.13-ghcup
|
||||||
|
|
||||||
|
- os: osx
|
||||||
|
osx_image: xcode11.3
|
||||||
|
language: generic
|
||||||
|
env: ARTIFACT=x86_64-apple-darwin-10.14-ghcup
|
||||||
|
|
||||||
|
|
||||||
|
script: ".travis/build.sh"
|
||||||
|
|
||||||
|
deploy:
|
||||||
|
provider: releases
|
||||||
|
api_key:
|
||||||
|
secure: "hT2od8Iy04tdFVuonPSWv0NX5hZDmv4al8Q0GbIWmviUetROuM7c6/MCHUcgyiw6H2L3pmH4F24GBYWpKBT3ZMbxrKXhZOZ3KPLXzlnuRlm1qymKqqwsJs3466bMftaiBr16rx1VpAuditN4A32oSmTFcQAJc84Bxn2WZ4t8hk9muS8YPyLhqg3/NxT6ob8dzNp9eS2cA0WODMb/fMzaMruRtepSK8JvuXb/SnTvaDcl9plmPzEa+eW54jwVsDps8ZpQMQlTtGIjYHIwTQ36/iLH4LoAvD7OEnB7qf753LOzmI/bvlB75xYGsLxe1qgpzPMjuG3AK0jb2KGSZCzyAyrbBFSQMIyC1gNKMtab3CohnA9WdQqAT1xrzPzA9zNw516G5Fn/z+t9Ek1f6L2OYO2hJfweNhWh+ChAIsOags2QBpqc0qjkwUS4wqxCWBdyVfgPTUoGelvjCfjQgypgIyLEHFvXt9rlj+kd97FY7nG3vxZrsvWTKKKT551OqUYX5zWTyvGR71jKyNst/p93Pg3DkRy31gHrGnG9zfNgN5tWxJqDd/suR/BAFTp0VtkFb8fR3ct7WMVeJXtE2+bKqxO5Fnocs1VjEm8pKPk7glnp0muu08kaO0h54wiSOCbk1RvO1KZtHue4wKWrHcI18dwW2WtzoBQ4P1lOSkS81UY="
|
||||||
|
file: $ARTIFACT
|
||||||
|
on:
|
||||||
|
repo: hasufell/ghcup-hs
|
||||||
|
tags: true
|
||||||
|
skip_cleanup: true
|
||||||
|
draft: true
|
28
.travis/build.sh
Executable file
28
.travis/build.sh
Executable file
@ -0,0 +1,28 @@
|
|||||||
|
#!/bin/sh
|
||||||
|
|
||||||
|
set -ex
|
||||||
|
|
||||||
|
mkdir -p ~/.ghcup/bin
|
||||||
|
curl -sSfL https://downloads.haskell.org/~ghcup/x86_64-apple-darwin-ghcup > ~/.ghcup/bin/ghcup
|
||||||
|
chmod +x ~/.ghcup/bin/ghcup
|
||||||
|
|
||||||
|
export PATH="$HOME/.ghcup/bin:$PATH"
|
||||||
|
|
||||||
|
ghcup install 8.10.4
|
||||||
|
ghcup install-cabal 3.4.0.0
|
||||||
|
ghcup set 8.10.4
|
||||||
|
|
||||||
|
|
||||||
|
## install ghcup
|
||||||
|
|
||||||
|
cabal update
|
||||||
|
|
||||||
|
(
|
||||||
|
cd /tmp
|
||||||
|
cabal install --installdir="$HOME"/.ghcup/bin hspec-discover
|
||||||
|
)
|
||||||
|
|
||||||
|
cabal build --constraint="zlib +static" --constraint="lzma +static" -ftui
|
||||||
|
cp "$(cabal new-exec --verbose=0 --offline sh -- -c 'command -v ghcup')" .
|
||||||
|
strip ./ghcup
|
||||||
|
cp ghcup "./${ARTIFACT}"
|
222
CHANGELOG.md
222
CHANGELOG.md
@ -1,227 +1,5 @@
|
|||||||
# Revision history for ghcup
|
# Revision history for ghcup
|
||||||
|
|
||||||
## 0.1.22.0 -- 2024-03-13
|
|
||||||
|
|
||||||
### New features
|
|
||||||
|
|
||||||
* A help screen/tutorial in the TUI by @lsmor (Luis Morillo)
|
|
||||||
* Beef up `--overwrite-version`, fixes [#998](https://github.com/haskell/ghcup-hs/issues/998)
|
|
||||||
* e.g. `ghcup compile hls -g master --overwrite-version='%v-%h' --ghc 9.4.8` will produce a binary called `haskell-language-server-wrapper-<version-from-cabal-file>-<short-git-commit-hash>`... refer to `ghcup compile hls --help` for more information
|
|
||||||
* Allow to set ghcup msys2 environment wrt [#982](https://github.com/haskell/ghcup-hs/issues/982)
|
|
||||||
* Add mechanism to warn on new metadata versions, fixes [#860](https://github.com/haskell/ghcup-hs/issues/860)
|
|
||||||
* Add pre-install message support via ghcup metadata, wrt [#1016](https://github.com/haskell/ghcup-hs/issues/1016)
|
|
||||||
* Allow to remove all unset versions, fixes [#1019](https://github.com/haskell/ghcup-hs/issues/1019)
|
|
||||||
* e.g.: `ghcup gc --unset`
|
|
||||||
|
|
||||||
### Improvements and bug fixes
|
|
||||||
|
|
||||||
* Fix potential [HSEC-2024-0002](https://haskell.github.io/security-advisories/advisory/HSEC-2024-0002.html)
|
|
||||||
* Fix TUI crash in windows terminal 1.19 [#1013](https://github.com/haskell/ghcup-hs/issues/1013)
|
|
||||||
* Clean up on git clone errors, fixes [#1004](https://github.com/haskell/ghcup-hs/issues/1004)
|
|
||||||
* Error out on empty UserSettings wrt [#922](https://github.com/haskell/ghcup-hs/issues/922)
|
|
||||||
* Fix failure mode when metadata is garbage, fixes [#921](https://github.com/haskell/ghcup-hs/issues/921)
|
|
||||||
* Be less confusing when user tries to 'set' ghcup in TUI, fixes [#923](https://github.com/haskell/ghcup-hs/issues/923)
|
|
||||||
* Fix prefetch for cross bindists
|
|
||||||
* Fix misinterpretation of '+' in URI paths, fixes [#408](https://github.com/haskell/ghcup-hs/issues/408)
|
|
||||||
* Stricter (and better) file uri handling
|
|
||||||
* Set LD=ld.bfd on Alpine linux during bindist configure
|
|
||||||
* Add rocky/void detection
|
|
||||||
* Logging improvements
|
|
||||||
* Remove the "show all tool" config in the TUI
|
|
||||||
* Fix opening changelog on windows
|
|
||||||
* Don't remove share dir link prematurely
|
|
||||||
* Require user to explicitly choose subcommand for 'ghcup config'
|
|
||||||
* Don't download twice when trying stack decoding
|
|
||||||
|
|
||||||
### Refactoring and maintenance
|
|
||||||
|
|
||||||
* Large TUI code cleanup by @lsmor (Luis Morillo)... more coming up soon
|
|
||||||
* Allow building with `tar` instead of `libarchive` (mainly to make contributions easier)
|
|
||||||
|
|
||||||
## 0.1.20.0 -- 2023-11-10
|
|
||||||
|
|
||||||
### New features
|
|
||||||
|
|
||||||
* support TUI on windows thanks to the work from vty and brick maintainers (Chris Hackett, Timofey Zakrevskiy, Jonathan Daugherty, ...), wrt [#912](https://github.com/haskell/ghcup-hs/pull/912)
|
|
||||||
* support JS and wasm cross compilers wrt [#838](https://github.com/haskell/ghcup-hs/issues/838), thanks to Sylvain Henry and IOG
|
|
||||||
* Support stacks installation strategy and metadata wrt [#892](https://github.com/haskell/ghcup-hs/issues/892)
|
|
||||||
- you can now enable stacks installation method via `ghcup config set url-source '["GHCupURL", "StackSetupURL"]'`... for more information, check the [documentation](https://www.haskell.org/ghcup/guide/#using-stacks-setup-info-metadata-to-install-ghc)
|
|
||||||
|
|
||||||
### Improvements and bug fixes
|
|
||||||
|
|
||||||
* fix segfault in TUI when hitting enter early wrt [#887](https://github.com/haskell/ghcup-hs/issues/887)
|
|
||||||
* Improve key handling in TUI, fixes [#875](https://github.com/haskell/ghcup-hs/issues/875)
|
|
||||||
* add explicit support for Void Linux and Rocky Linux (this requires a metadata version bump to `ghcup-0.0.8.yaml`)
|
|
||||||
* optparse cli interface now has a test suite thanks to Lei Zhu, wrt [#862](https://github.com/haskell/ghcup-hs/pull/862)
|
|
||||||
|
|
||||||
## 0.1.19.4 -- 2023-7-02
|
|
||||||
|
|
||||||
* fix missing TUI for aarch64 linux binaries
|
|
||||||
|
|
||||||
## 0.1.19.3 -- 2023-6-29
|
|
||||||
|
|
||||||
* Implement support for nightlies, wrt [#824](https://github.com/haskell/ghcup-hs/issues/824)
|
|
||||||
* Fix GC with XDG dirs, fixes [#810](https://github.com/haskell/ghcup-hs/issues/810)
|
|
||||||
|
|
||||||
## 0.1.19.2 -- 2023-2-24
|
|
||||||
|
|
||||||
* Follow-up fix for JFS/ReiserFS and other filesystem that don't support `d_type`, fixes [#787](https://github.com/haskell/ghcup-hs/issues/787)
|
|
||||||
- the previous release had a bug that invalidated that broke it
|
|
||||||
* Implement 'latest-prerelease' tag wrt [#788](https://github.com/haskell/ghcup-hs/issues/788)
|
|
||||||
* Fix 'Could not parse version of stray directory.DS_Store' warnings on macOs wrt [#797](https://github.com/haskell/ghcup-hs/issues/797)
|
|
||||||
|
|
||||||
## 0.1.19.1 -- 2023-2-19
|
|
||||||
|
|
||||||
* Fix GHCup on JFS/ReiserFS and other filesystem that don't support `d_type`, fixes [#766](https://github.com/haskell/ghcup-hs/issues/766)
|
|
||||||
* Don't fail on setModificationTime, fixes [#784](https://github.com/haskell/ghcup-hs/issues/784) and many GitHub actions issues
|
|
||||||
* Make armv7/aarch64 linux binaries more portable (built on Debian buster)
|
|
||||||
* Improve usability on 'ghcup config add-release-channel', fixes [#751](https://github.com/haskell/ghcup-hs/issues/751)
|
|
||||||
* Make version shortcuts work with 'ghcup set', fixes [#757](https://github.com/haskell/ghcup-hs/issues/757)
|
|
||||||
* Don't implicitly smuggle in config options in `ghcup config set` wrt [#775](https://github.com/haskell/ghcup-hs/issues/775)
|
|
||||||
* Fix build on unix with -ftui
|
|
||||||
|
|
||||||
## 0.1.19.0 -- 2023-1-13
|
|
||||||
|
|
||||||
* restore proper support for FreeBSD and Linux armv7
|
|
||||||
* integrate with [errors.haskell.org](https://errors.haskell.org/index.html), wrt [#434](https://github.com/haskell/ghcup-hs/issues/434)
|
|
||||||
* allow to overwrite distro detection via config wrt [#421](https://github.com/haskell/ghcup-hs/issues/421)
|
|
||||||
- this is particularly useful for e.g. Ubuntu derivates, where ghcup doesn't pick the optimal bindist, also see the [GHCup documentation on overriding distro detection](https://www.haskell.org/ghcup/guide/#overriding-distro-detection)
|
|
||||||
* Add proper support for mirrors wrt [#357](https://github.com/haskell/ghcup-hs/issues/357)
|
|
||||||
* fix a (harmless) bug in `ghcup nuke` on windows
|
|
||||||
* improvements to `ghcup add-release-channel` wrt [#708](https://github.com/haskell/ghcup-hs/issues/708)
|
|
||||||
* fix building newer GHC from source wrt [#433](https://github.com/haskell/ghcup-hs/issues/433)
|
|
||||||
* Fix `ghcup install hls -u` on windows
|
|
||||||
* Fix failure with `--isolate=dir --force`
|
|
||||||
* Add `--metadata-fetching-mode` arg, fixes [#440](https://github.com/haskell/ghcup-hs/issues/440)
|
|
||||||
* Add content-length property to downloads
|
|
||||||
* [Fix a grave bug on armv7](https://github.com/haskell/ghcup-hs/commit/78ee956df2618862f421178a565c82548ff7e578) during installation wrt [#415](https://github.com/haskell/ghcup-hs/issues/415)
|
|
||||||
* improve many warning/error messages (contributions by @taylorfausak)
|
|
||||||
* some minor optimization in `ghcup whereis ghcup`
|
|
||||||
* improve `--keep=always` to not clean up directories in certain circumstances
|
|
||||||
|
|
||||||
## 0.1.18.1 -- 2022-08-06
|
|
||||||
|
|
||||||
* fix sdist and unbreak hackage, wrt [#399](https://gitlab.haskell.org/haskell/ghcup-hs/-/issues/399)
|
|
||||||
|
|
||||||
## 0.1.18.0 -- 2022-07-30
|
|
||||||
|
|
||||||
* Fix tui set wrt [#266](https://gitlab.haskell.org/haskell/ghcup-hs/-/merge_requests/266) by Arjun Kathuria
|
|
||||||
- Ask the user to install the tool via prompt when setting an non-installed version
|
|
||||||
* improvements to safe (un-)installations
|
|
||||||
- bindists that don't support `make DESTDIR=/some/tmp/dir install` are now unsupported
|
|
||||||
- installed GHC files are now recorded to avoid use of `removePathForcibly`
|
|
||||||
- internally uses a newtype wrapper for user-input paths and restrict destructive operations to validated paths
|
|
||||||
* Add `--disable-ld-override` for darwin bindists wrt #391
|
|
||||||
* Allow passing bindist configure args wrt #377
|
|
||||||
* use of `TMPDIR` is dropped... now uses an internal tmp dir `~/.ghcup/tmp`
|
|
||||||
* improvements to error handling and warnings
|
|
||||||
* Require --isolate to have an absolute directory, fixes #367
|
|
||||||
* Fix mingw PATH handling wrt #371
|
|
||||||
* Add --mingw-path switch to `ghcup run`
|
|
||||||
* Fix `ghcup run` on windows, fixes #375
|
|
||||||
* Improve `ghcup compile <hls|ghc>`
|
|
||||||
- short hashes now work
|
|
||||||
- print the long hash in addition to the detected version
|
|
||||||
* Improve `ghcup compile hls`
|
|
||||||
- add `--git-describe-version` switch as an alternative to `--overwrite-version`
|
|
||||||
- Allow to build HLS from hackage (now is the default)
|
|
||||||
- Allow to run 'cabal update' automatically before the HLS build
|
|
||||||
- Fix parser and completer for 'ghcup compile hls --version'
|
|
||||||
* Improve `ghcup compile ghc`
|
|
||||||
- Allow to build from arbitrary GHC source dists
|
|
||||||
|
|
||||||
## 0.1.17.10 -- 2022-05-12
|
|
||||||
|
|
||||||
* windows hotfix (hackage-only release)
|
|
||||||
|
|
||||||
## 0.1.17.9 -- 2022-05-12
|
|
||||||
|
|
||||||
* broken sdist (hackage-only release)
|
|
||||||
|
|
||||||
## 0.1.17.8 -- 2022-05-11
|
|
||||||
|
|
||||||
* Fix a serious (but hard to trigger) bug when combining `--isolate <DIR>` with `--force`, please make sure to upgrade or avoid `--force`
|
|
||||||
* Fix HLS build not cleaning up properly on failed installations, fixes [#361](https://gitlab.haskell.org/haskell/ghcup-hs/-/issues/361)
|
|
||||||
* Fix parsing of symlinks with multiple slashes, wrt [#353](https://gitlab.haskell.org/haskell/ghcup-hs/-/issues/353)
|
|
||||||
* Re-enable upgrade functionality for all configurations wrt [MR #250](https://gitlab.haskell.org/haskell/ghcup-hs/-/merge_requests/250) and [VSCode haskell issue #601](https://github.com/haskell/vscode-haskell/issues/601)
|
|
||||||
* Fix `ghcup run --ghc 8.10` (for short versions) wrt [#360](https://gitlab.haskell.org/haskell/ghcup-hs/-/issues/360)
|
|
||||||
- this also introduces a `--quick` switch for `ghcup run`
|
|
||||||
|
|
||||||
## 0.1.17.7 -- 2022-04-21
|
|
||||||
|
|
||||||
* Fix `ghcup run` on windows wrt [#345](https://gitlab.haskell.org/haskell/ghcup-hs/-/issues/345)
|
|
||||||
|
|
||||||
## 0.1.17.6 -- 2022-03-18
|
|
||||||
|
|
||||||
* Vastly improve shell completions wrt [#242](https://gitlab.haskell.org/haskell/ghcup-hs/-/merge_requests/242)
|
|
||||||
* Fix 'ghcup install cabal/hls/stack --set' wrt [#324](https://gitlab.haskell.org/haskell/ghcup-hs/-/issues/324)
|
|
||||||
* Fix bad error message wrt [#323](https://gitlab.haskell.org/haskell/ghcup-hs/-/issues/323)
|
|
||||||
* Use predictable /tmp names for `ghcup run`, fixes [#329](https://gitlab.haskell.org/haskell/ghcup-hs/-/issues/329)
|
|
||||||
* Fix bug with isolated installation of not previously installed versions
|
|
||||||
* Add `--no-set` to install commands, fixes [#330](https://gitlab.haskell.org/haskell/ghcup-hs/-/issues/330)
|
|
||||||
* Fix serious bug in `ghcup list --raw-format -t <tool> -c installed`
|
|
||||||
* Overhaul metadata merging and add `ghcup config add-release-channel URI` wrt [#328](https://gitlab.haskell.org/haskell/ghcup-hs/-/issues/328)
|
|
||||||
* Fix max path issues on windows with `ghcup run`
|
|
||||||
|
|
||||||
## 0.1.17.5 -- 2022-02-26
|
|
||||||
|
|
||||||
* Implement `ghcup run` subcommand wrt [#137](https://gitlab.haskell.org/haskell/ghcup-hs/-/issues/137)
|
|
||||||
* Support installation of dynamic HLS bindists wrt [HLS #2675](https://github.com/haskell/haskell-language-server/pull/2675) and [#237](https://gitlab.haskell.org/haskell/ghcup-hs/-/merge_requests/237)
|
|
||||||
* Fix XDG support when `~/.local/bin` is a symlink wrt [#311](https://gitlab.haskell.org/haskell/ghcup-hs/-/issues/311)
|
|
||||||
* Add support for quilt-style patches wrt [#230](https://gitlab.haskell.org/haskell/ghcup-hs/-/merge_requests/230), by James Hobson
|
|
||||||
* Fix redundant upgrade warnings in `ghcup upgrade`
|
|
||||||
* Fix `ghcup whereis ghc` for non-standard versions wrt [#289](https://gitlab.haskell.org/haskell/ghcup-hs/-/issues/289)
|
|
||||||
* Don't print logs to stdout, but stderr
|
|
||||||
* Allow unpacking legacy lzma archives wrt [#307](https://gitlab.haskell.org/haskell/ghcup-hs/-/issues/307)
|
|
||||||
* Allow to disable self-upgrade functionality wrt [#305](https://gitlab.haskell.org/haskell/ghcup-hs/-/issues/305)
|
|
||||||
* Fix `ghcup install ghc --set` when ghc is already installed wrt [#291](https://gitlab.haskell.org/haskell/ghcup-hs/-/issues/291)
|
|
||||||
|
|
||||||
## 0.1.17.4 -- 2021-11-13
|
|
||||||
|
|
||||||
* add `--metadata-caching` option, allowing to also disable yaml metadata caching wrt [#278](https://gitlab.haskell.org/haskell/ghcup-hs/-/issues/278)
|
|
||||||
* make upgrading ghcup in TUI more pleasant wrt [#276](https://gitlab.haskell.org/haskell/ghcup-hs/-/issues/276)
|
|
||||||
* fix parsing of atypical GHC versions (e.g. `8.10.5-patch1`)
|
|
||||||
* fix compiling HLS dynamically linked, also see [#245](https://gitlab.haskell.org/haskell/ghcup-hs/-/issues/245)
|
|
||||||
* redo (and break) some of the `ghcup compile <tool>` interface, improving patch options and setting custom cabal.project files
|
|
||||||
* avoid redundant update warnings wrt [#283](https://gitlab.haskell.org/haskell/ghcup-hs/-/issues/283)
|
|
||||||
|
|
||||||
## 0.1.17.3 -- 2021-10-27
|
|
||||||
|
|
||||||
* clean up during unpack failures as well
|
|
||||||
* migrate te aeson-2.0.1.0
|
|
||||||
* switch to yaml-streamly to fix performance regression wrt [#270](https://gitlab.haskell.org/haskell/ghcup-hs/-/issues/270)
|
|
||||||
* use [github.com/haskell/ghcup-metadata](https://github.com/haskell/ghcup-metadata) for metadata file download (better caching)
|
|
||||||
|
|
||||||
## 0.1.17.2 -- 2021-09-30
|
|
||||||
|
|
||||||
* Honour GHC bootstrap compiler during git clone stages wrt [#250](https://gitlab.haskell.org/haskell/ghcup-hs/-/issues/250)
|
|
||||||
* Speed up `unset` command
|
|
||||||
* Fix `--overwrite-version` for `ghcup compile ghc` wrt [#253](https://gitlab.haskell.org/haskell/ghcup-hs/-/issues/253)
|
|
||||||
* Apply patches before bootstrap
|
|
||||||
|
|
||||||
## 0.1.17.1 -- 2021-09-26
|
|
||||||
|
|
||||||
* Fix `NO_COLOR`
|
|
||||||
* Fix `ghcup list -t` for hls/stack, wrt [#244](https://gitlab.haskell.org/haskell/ghcup-hs/-/issues/244)
|
|
||||||
* Get rid of concurrent-output
|
|
||||||
* Improve cli interface with partial versions (e.g. `ghcup install ghc 8`)
|
|
||||||
* Fix HLS compilation builds
|
|
||||||
* Implement `ghcup gc` (garbage collection) command
|
|
||||||
|
|
||||||
## 0.1.17 -- 2021-09-20
|
|
||||||
|
|
||||||
* Add `--force` option to install/compile wrt [#210](https://gitlab.haskell.org/haskell/ghcup-hs/-/issues/210) by Arjun Kathuria
|
|
||||||
* Implement compiling HLS from source wrt [#201](https://gitlab.haskell.org/haskell/ghcup-hs/-/issues/201)
|
|
||||||
* Implement experimental GPG verification of the metadata file (see README) wrt [#263](https://gitlab.haskell.org/haskell/ghcup-hs/-/issues/236)
|
|
||||||
* Add `ghcup unset` command wrt [#145](https://gitlab.haskell.org/haskell/ghcup-hs/-/issues/145)
|
|
||||||
* Add `ghcup whereis bindir` etc wrt [#221](https://gitlab.haskell.org/haskell/ghcup-hs/-/issues/221)
|
|
||||||
* Greatly reduce dependency footprint wrt [#212](https://gitlab.haskell.org/haskell/ghcup-hs/-/issues/212)
|
|
||||||
* Add `ghcup --plan-json`
|
|
||||||
* Improve `--patchdir` option for GHC compilation wrt [#226](https://gitlab.haskell.org/haskell/ghcup-hs/-/merge_requests/226)
|
|
||||||
* Try to improve logging and failure modes, especially during downloads
|
|
||||||
* Add descriptive warnings when HLS and GHC versions are incompatible
|
|
||||||
* Improve curl header parsing wrt [#213](https://gitlab.haskell.org/haskell/ghcup-hs/-/merge_requests/213)
|
|
||||||
|
|
||||||
## 0.1.16.2 -- 2021-08-12
|
## 0.1.16.2 -- 2021-08-12
|
||||||
|
|
||||||
* Add isolated installations wrt [#141](https://gitlab.haskell.org/haskell/ghcup-hs/-/merge_requests/141) by Arjun Kathuria
|
* Add isolated installations wrt [#141](https://gitlab.haskell.org/haskell/ghcup-hs/-/merge_requests/141) by Arjun Kathuria
|
||||||
|
75
HACKING.md
Normal file
75
HACKING.md
Normal file
@ -0,0 +1,75 @@
|
|||||||
|
# HACKING
|
||||||
|
|
||||||
|
## Design decisions
|
||||||
|
|
||||||
|
### Using [Excepts](https://hackage.haskell.org/package/haskus-utils-variant-3.0/docs/Haskus-Utils-Variant-Excepts.html) as a beefed up ExceptT
|
||||||
|
|
||||||
|
This is an open variant, similar to [plucky](https://hackage.haskell.org/package/plucky) or [oops](https://github.com/i-am-tom/oops) and allows us to combine different error types. Maybe it is too much and it's a little bit [unergonomic](https://github.com/haskus/packages/issues/32) at times. If it really hurts maintenance, it will be removed. It was more of an experiment.
|
||||||
|
|
||||||
|
### No use of haskell-TLS
|
||||||
|
|
||||||
|
I consider haskell-TLS an interesting experiment, but not a battle-tested and peer-reviewed crypto implementation. There is little to no research about what the intricacies of using haskell for low-level crypto are and how vulnerable such binaries are. Instead, we use either curl the binary (for FreeBSD and mac) or http-io-streams, which works with OpenSSL bindings.
|
||||||
|
|
||||||
|
### Optics instead of lens
|
||||||
|
|
||||||
|
They're a little safer (less Monoid weirdness with view) and have better error messages. Consider the following wit lens
|
||||||
|
|
||||||
|
```
|
||||||
|
> view (_Just . to (++ "abc")) Nothing
|
||||||
|
""
|
||||||
|
```
|
||||||
|
|
||||||
|
vs optics
|
||||||
|
|
||||||
|
```
|
||||||
|
> view (_Just % to (++ "abc")) Nothing
|
||||||
|
|
||||||
|
<interactive>:2:1: error:
|
||||||
|
• An_AffineFold cannot be used as A_Getter
|
||||||
|
• In the expression: view (_Just % to (++ "abc")) Nothing
|
||||||
|
In an equation for ‘it’: it = view (_Just % to (++ "abc")) Nothing
|
||||||
|
```
|
||||||
|
|
||||||
|
### Strict and StrictData on by default
|
||||||
|
|
||||||
|
Kazu Yamamoto [explained it in his PR](https://github.com/yesodweb/wai/pull/752#issuecomment-501531386) very well. I like to agree with him. The instances where we need non-strict behavior, we annotate it.
|
||||||
|
|
||||||
|
## Code style and formatting
|
||||||
|
|
||||||
|
1. Brittany
|
||||||
|
2. mtl-style preferred
|
||||||
|
3. no overly pointfree style
|
||||||
|
|
||||||
|
## Code structure
|
||||||
|
|
||||||
|
Main functionality is in `GHCup` module. Utility functions are
|
||||||
|
organised tree-ish in `GHCup.Utils` and `GHCup.Utils.*`.
|
||||||
|
|
||||||
|
Anything dealing with ghcup specific directories is in
|
||||||
|
`GHCup.Utils.Dirs`.
|
||||||
|
|
||||||
|
Download information on where to fetch bindists from is in the appropriate
|
||||||
|
yaml files: `ghcup-<yaml-ver>.yaml`.
|
||||||
|
|
||||||
|
## Common Tasks
|
||||||
|
|
||||||
|
### Adding a new GHC version
|
||||||
|
|
||||||
|
1. open the latest `ghcup-<yaml-ver>.yaml`
|
||||||
|
2. find the latest ghc version (in yaml tree e.g. `ghcupDownloads -> GHC -> 8.10.3`)
|
||||||
|
3. copy-paste it
|
||||||
|
4. adjust the version, tags, changelog, source url
|
||||||
|
5. adjust the various bindist urls (make sure to also change the yaml anchors)
|
||||||
|
6. run `cabal run exe:ghcup-gen -- check-tarballs -f ghcup-<yaml-ver>.yaml -u 'ghc-8\.10\.4'`
|
||||||
|
|
||||||
|
## Major refactors
|
||||||
|
|
||||||
|
1. First major refactor included adding cross support. This added
|
||||||
|
`GHCTargetVersion`, which includes the target in addition to the version.
|
||||||
|
Most of the `Version` parameters to functions had to be replaced with
|
||||||
|
that and ensured the logic is consistent for cross and non-cross
|
||||||
|
installs.
|
||||||
|
2. This refactor added windows support wrt [#130](https://gitlab.haskell.org/haskell/ghcup-hs/-/issues/130).
|
||||||
|
The major changes here were switching `hpath` library out for `filepath`/`directory` (sadly) and
|
||||||
|
introducing a non-unix way of handling processes via the `process` library. It also introduced considerable
|
||||||
|
amounts of CPP wrt file handling, installation etc.
|
420
README.md
420
README.md
@ -1,13 +1,423 @@
|
|||||||
## The GHCup Haskell installer
|
`ghcup` makes it easy to install specific versions of `ghc` on GNU/Linux,
|
||||||
|
macOS (aka Darwin), FreeBSD and Windows and can also bootstrap a fresh Haskell developer environment from scratch.
|
||||||
|
It follows the unix UNIX philosophy of [do one thing and do it well](https://en.wikipedia.org/wiki/Unix_philosophy#Do_One_Thing_and_Do_It_Well).
|
||||||
|
|
||||||
|
Similar in scope to [rustup](https://github.com/rust-lang-nursery/rustup.rs), [pyenv](https://github.com/pyenv/pyenv) and [jenv](http://www.jenv.be).
|
||||||
|
|
||||||
|
## Table of Contents
|
||||||
|
|
||||||
[![Join the chat at Libera.chat](https://img.shields.io/badge/chat-on%20libera%20IRC-brightgreen.svg)](https://kiwiirc.com/nextclient/irc.libera.chat/?nick=Guest%7C?#haskell,#haskell-ghcup)
|
[![Join the chat at Libera.chat](https://img.shields.io/badge/chat-on%20libera%20IRC-brightgreen.svg)](https://kiwiirc.com/nextclient/irc.libera.chat/?nick=Guest%7C?#haskell,#haskell-ghcup)
|
||||||
[![Join the chat at Matrix.org](https://img.shields.io/matrix/haskell-tooling:matrix.org?label=chat%20on%20matrix.org)](https://app.element.io/#/room/#haskell-tooling:matrix.org)
|
[![Join the chat at Matrix.org](https://img.shields.io/matrix/haskell-tooling:matrix.org?label=chat%20on%20matrix.org)](https://app.element.io/#/room/#haskell-tooling:matrix.org)
|
||||||
[![Join the chat at Discord](https://img.shields.io/discord/280033776820813825?label=chat%20on%20discord)](https://discord.gg/pKYf3zDQU7)
|
[![Join the chat at Discord](https://img.shields.io/discord/280033776820813825?label=chat%20on%20discord)](https://discord.gg/pKYf3zDQU7)
|
||||||
[![Join the chat at https://gitter.im/haskell/ghcup](https://badges.gitter.im/haskell/ghcup.svg)](https://gitter.im/haskell/ghcup?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge)
|
[![Join the chat at https://gitter.im/haskell/ghcup](https://badges.gitter.im/haskell/ghcup.svg)](https://gitter.im/haskell/ghcup?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge)
|
||||||
<a href="https://opencollective.com/ghcup#category-CONTRIBUTE"><img src="https://opencollective.com/webpack/donate/button@2x.png?color=blue" alt="Donate" width="150"></a>
|
|
||||||
|
|
||||||
GHCup is the main installer for the general purpose language [Haskell](https://www.haskell.org/).
|
* [Installation](#installation)
|
||||||
|
* [Simple bootstrap](#simple-bootstrap)
|
||||||
|
* [Manual install](#manual-install)
|
||||||
|
* [Vim integration](#vim-integration)
|
||||||
|
* [Usage](#usage)
|
||||||
|
* [Configuration](#configuration)
|
||||||
|
* [Manpages](#manpages)
|
||||||
|
* [Shell-completion](#shell-completion)
|
||||||
|
* [Cross support](#cross-support)
|
||||||
|
* [XDG support](#xdg-support)
|
||||||
|
* [Env variables](#env-variables)
|
||||||
|
* [Installing custom bindists](#installing-custom-bindists)
|
||||||
|
* [Isolated Installs](#isolated-installs)
|
||||||
|
* [Tips and tricks](#tips-and-tricks)
|
||||||
|
* [Design goals](#design-goals)
|
||||||
|
* [How](#how)
|
||||||
|
* [Known users](#known-users)
|
||||||
|
* [Known problems](#known-problems)
|
||||||
|
* [FAQ](#faq)
|
||||||
|
|
||||||
Visit the [documentation](https://www.haskell.org/ghcup/) for installation instructions.
|
## Installation
|
||||||
|
|
||||||
If you're looking for the metadata YAML files, see here: [https://github.com/haskell/ghcup-metadata](https://github.com/haskell/ghcup-metadata)
|
### Simple bootstrap
|
||||||
|
|
||||||
|
Follow the instructions at [https://www.haskell.org/ghcup/](https://www.haskell.org/ghcup/)
|
||||||
|
|
||||||
|
### Manual install
|
||||||
|
|
||||||
|
Download the binary for your platform at [https://downloads.haskell.org/~ghcup/](https://downloads.haskell.org/~ghcup/)
|
||||||
|
and place it into your `PATH` anywhere.
|
||||||
|
|
||||||
|
Then adjust your `PATH` in `~/.bashrc` (or similar, depending on your shell) like so:
|
||||||
|
|
||||||
|
```sh
|
||||||
|
export PATH="$HOME/.cabal/bin:$HOME/.ghcup/bin:$PATH"
|
||||||
|
```
|
||||||
|
|
||||||
|
### Vim integration
|
||||||
|
|
||||||
|
See [ghcup.vim](https://github.com/hasufell/ghcup.vim).
|
||||||
|
|
||||||
|
## Usage
|
||||||
|
|
||||||
|
See `ghcup --help`.
|
||||||
|
|
||||||
|
For the simple interactive TUI, run:
|
||||||
|
|
||||||
|
```sh
|
||||||
|
ghcup tui
|
||||||
|
```
|
||||||
|
|
||||||
|
For the full functionality via cli:
|
||||||
|
|
||||||
|
```sh
|
||||||
|
# list available ghc/cabal versions
|
||||||
|
ghcup list
|
||||||
|
|
||||||
|
# install the recommended GHC version
|
||||||
|
ghcup install ghc
|
||||||
|
|
||||||
|
# install a specific GHC version
|
||||||
|
ghcup install ghc 8.2.2
|
||||||
|
|
||||||
|
# set the currently "active" GHC version
|
||||||
|
ghcup set ghc 8.4.4
|
||||||
|
|
||||||
|
# install cabal-install
|
||||||
|
ghcup install cabal
|
||||||
|
|
||||||
|
# update ghcup itself
|
||||||
|
ghcup upgrade
|
||||||
|
```
|
||||||
|
|
||||||
|
GHCup works very well with [`cabal-install`](https://hackage.haskell.org/package/cabal-install), which
|
||||||
|
handles your haskell packages and can demand that [a specific version](https://cabal.readthedocs.io/en/latest/nix-local-build.html#cfg-flag---with-compiler) of `ghc` is available, which `ghcup` can do.
|
||||||
|
|
||||||
|
### Configuration
|
||||||
|
|
||||||
|
A configuration file can be put in `~/.ghcup/config.yaml`. The default config file
|
||||||
|
explaining all possible configurations can be found in this repo: [config.yaml](./config.yaml).
|
||||||
|
|
||||||
|
Partial configuration is fine. Command line options always override the config file settings.
|
||||||
|
|
||||||
|
### Manpages
|
||||||
|
|
||||||
|
For man pages to work you need [man-db](http://man-db.nongnu.org/) as your `man` provider, then issue `man ghc`. Manpages only work for the currently set ghc.
|
||||||
|
`MANPATH` may be required to be unset.
|
||||||
|
|
||||||
|
### Shell-completion
|
||||||
|
|
||||||
|
Shell completions are in `shell-completions`.
|
||||||
|
|
||||||
|
For bash: install `shell-completions/bash`
|
||||||
|
as e.g. `/etc/bash_completion.d/ghcup` (depending on distro)
|
||||||
|
and make sure your bashrc sources the startup script
|
||||||
|
(`/usr/share/bash-completion/bash_completion` on some distros).
|
||||||
|
|
||||||
|
### Cross support
|
||||||
|
|
||||||
|
ghcup can compile and install a cross GHC for any target. However, this
|
||||||
|
requires that the build host has a complete cross toolchain and various
|
||||||
|
libraries installed for the target platform.
|
||||||
|
|
||||||
|
Consult the GHC documentation on the [prerequisites](https://gitlab.haskell.org/ghc/ghc/-/wikis/building/cross-compiling#tools-to-install).
|
||||||
|
For distributions with non-standard locations of cross toolchain and
|
||||||
|
libraries, this may need some tweaking of `build.mk` or configure args.
|
||||||
|
See `ghcup compile ghc --help` for further information.
|
||||||
|
|
||||||
|
### XDG support
|
||||||
|
|
||||||
|
To enable XDG style directories, set the environment variable `GHCUP_USE_XDG_DIRS` to anything.
|
||||||
|
|
||||||
|
Then you can control the locations via XDG environment variables as such:
|
||||||
|
|
||||||
|
* `XDG_DATA_HOME`: GHCs will be unpacked in `ghcup/ghc` subdir (default: `~/.local/share`)
|
||||||
|
* `XDG_CACHE_HOME`: logs and download files will be stored in `ghcup` subdir (default: `~/.cache`)
|
||||||
|
* `XDG_BIN_HOME`: binaries end up here (default: `~/.local/bin`)
|
||||||
|
* `XDG_CONFIG_HOME`: the config file is stored in `ghcup` subdir as `config.yaml` (default: `~/.config`)
|
||||||
|
|
||||||
|
**Note that `ghcup` makes some assumptions about structure of files in `XDG_BIN_HOME`. So if you have other tools
|
||||||
|
installing e.g. stack/cabal/ghc into it, this will likely clash. In that case consider disabling XDG support.**
|
||||||
|
|
||||||
|
### Env variables
|
||||||
|
|
||||||
|
This is the complete list of env variables that change GHCup behavior:
|
||||||
|
|
||||||
|
* `GHCUP_USE_XDG_DIRS`: see [XDG support](#xdg-support) above
|
||||||
|
* `TMPDIR`: where ghcup does the work (unpacking, building, ...)
|
||||||
|
* `GHCUP_INSTALL_BASE_PREFIX`: the base of ghcup (default: `$HOME`)
|
||||||
|
* `GHCUP_CURL_OPTS`: additional options that can be passed to curl
|
||||||
|
* `GHCUP_WGET_OPTS`: additional options that can be passed to wget
|
||||||
|
* `GHCUP_SKIP_UPDATE_CHECK`: Skip the (possibly annoying) update check when you run a command
|
||||||
|
* `CC`/`LD` etc.: full environment is passed to the build system when compiling GHC via GHCup
|
||||||
|
|
||||||
|
### Installing custom bindists
|
||||||
|
|
||||||
|
There are a couple of good use cases to install custom bindists:
|
||||||
|
|
||||||
|
1. manually built bindists (e.g. with patches)
|
||||||
|
- example: `ghcup install ghc -u 'file:///home/mearwald/tmp/ghc-eff-patches/ghc-8.10.2-x86_64-deb10-linux.tar.xz' 8.10.2-eff`
|
||||||
|
2. GHC head CI bindists
|
||||||
|
- example: `ghcup install ghc -u 'https://gitlab.haskell.org/api/v4/projects/1/jobs/artifacts/master/raw/ghc-x86_64-fedora27-linux.tar.xz?job=validate-x86_64-linux-fedora27' head`
|
||||||
|
3. DWARF bindists
|
||||||
|
- example: `ghcup install ghc -u 'https://downloads.haskell.org/~ghc/8.10.2/ghc-8.10.2-x86_64-deb10-linux-dwarf.tar.xz' 8.10.2-dwarf`
|
||||||
|
|
||||||
|
Since the version parser is pretty lax, `8.10.2-eff` and `head` are both valid versions
|
||||||
|
and produce the binaries `ghc-8.10.2-eff` and `ghc-head` respectively.
|
||||||
|
GHCup always needs to know which version the bindist corresponds to (this is not automatically
|
||||||
|
detected).
|
||||||
|
|
||||||
|
### Isolated installs
|
||||||
|
|
||||||
|
Ghcup also enables you to install a tool (GHC, Cabal, HLS, Stack) at an isolated location of your choosing.
|
||||||
|
These installs, as the name suggests, are separate from your main installs and DO NOT conflict with them.
|
||||||
|
|
||||||
|
|
||||||
|
- No symlinks are made to these isolated installed tools, you'd have to manually point to them wherever you intend to use them.
|
||||||
|
|
||||||
|
- These installs, can also NOT be deleted from ghcup, you'd have to go and manually delete these.
|
||||||
|
|
||||||
|
You need to use the `--isolate` or `-i` flag followed by the directory path.
|
||||||
|
|
||||||
|
Examples:-
|
||||||
|
|
||||||
|
1. install an isolated GHC version at location /home/user/isolated_dir/ghc/
|
||||||
|
- `ghcup install ghc 8.10.5 --isolate /home/user/isolated_dir/ghc`
|
||||||
|
|
||||||
|
2. isolated install Cabal at a location you desire
|
||||||
|
- `ghcup install cabal --isolate /home/username/my_isolated_dir/`
|
||||||
|
|
||||||
|
3. do an isolated install with a custom bindist
|
||||||
|
- `ghcup install ghc --isolate /home/username/my_isolated_dir/ -u 'https://gitlab.haskell.org/api/v4/projects/1/jobs/artifacts/master/raw/ghc-x86_64-fedora27-linux.tar.xz?job=validate-x86_64-linux-fedora27' head`
|
||||||
|
|
||||||
|
4. isolated install HLS
|
||||||
|
- `ghcup install hls --isolate /home/username/dir/hls/`
|
||||||
|
|
||||||
|
5. you can even compile ghc to an isolated location.
|
||||||
|
- `ghcup compile ghc -j 4 -v 9.0.1 -b 8.10.5 -i /home/username/my/dir/ghc`
|
||||||
|
---
|
||||||
|
|
||||||
|
### Tips and tricks
|
||||||
|
|
||||||
|
#### with_ghc wrapper (e.g. for HLS)
|
||||||
|
|
||||||
|
Due to some HLS [bugs](https://github.com/mpickering/hie-bios/issues/194) it's necessary that the `ghc` in PATH
|
||||||
|
is the one defined in `cabal.project`. With some simple shell functions, we can start our editor with the appropriate
|
||||||
|
path prepended.
|
||||||
|
|
||||||
|
For bash, in e.g. `~/.bashrc` define:
|
||||||
|
|
||||||
|
```sh
|
||||||
|
with_ghc() {
|
||||||
|
local np=$(ghcup --offline whereis -d ghc $1 || { ghcup --cache install ghc $1 && ghcup whereis -d ghc $1 ;})
|
||||||
|
if [ -e "${np}" ] ; then
|
||||||
|
shift
|
||||||
|
PATH="$np:$PATH" "$@"
|
||||||
|
else
|
||||||
|
>&2 echo "Cannot find or install GHC version $1"
|
||||||
|
return 1
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
For fish shell, in e.g. `~/.config/fish/config.fish` define:
|
||||||
|
|
||||||
|
```fish
|
||||||
|
function with_ghc
|
||||||
|
set --local np (ghcup --offline whereis -d ghc $argv[1] ; or begin ghcup --cache install ghc $argv[1] ; and ghcup whereis -d ghc $argv[1] ; end)
|
||||||
|
if test -e "$np"
|
||||||
|
PATH="$np:$PATH" $argv[2..-1]
|
||||||
|
else
|
||||||
|
echo "Cannot find or install GHC version $argv[1]" 1>&2
|
||||||
|
return 1
|
||||||
|
end
|
||||||
|
end
|
||||||
|
```
|
||||||
|
|
||||||
|
Then start a new shell and issue:
|
||||||
|
|
||||||
|
```sh
|
||||||
|
# replace 'code' with your editor
|
||||||
|
with_ghc 8.10.5 code path/to/haskell/source
|
||||||
|
```
|
||||||
|
|
||||||
|
Cabal and HLS will now see `8.10.5` as the primary GHC, without the need to
|
||||||
|
run `ghcup set` all the time when switching between projects.
|
||||||
|
|
||||||
|
## Design goals
|
||||||
|
|
||||||
|
1. simplicity
|
||||||
|
2. non-interactive
|
||||||
|
3. portable (eh)
|
||||||
|
4. do one thing and do it well (UNIX philosophy)
|
||||||
|
|
||||||
|
### Non-goals
|
||||||
|
|
||||||
|
1. invoking `sudo`, `apt-get` or *any* package manager
|
||||||
|
2. handling system packages
|
||||||
|
3. handling cabal projects
|
||||||
|
4. being a stack alternative
|
||||||
|
|
||||||
|
## How
|
||||||
|
|
||||||
|
Installs a specified GHC version into `~/.ghcup/ghc/<ver>`, and places `ghc-<ver>` symlinks in `~/.ghcup/bin/`.
|
||||||
|
|
||||||
|
Optionally, an unversioned `ghc` link can point to a default version of your choice.
|
||||||
|
|
||||||
|
This uses precompiled GHC binaries that have been compiled on fedora/debian by [upstream GHC](https://www.haskell.org/ghc/download_ghc_8_6_1.html#binaries).
|
||||||
|
|
||||||
|
Alternatively, you can also tell it to compile from source (note that this might fail due to missing requirements).
|
||||||
|
|
||||||
|
In addition this script can also install `cabal-install`.
|
||||||
|
|
||||||
|
## Known users
|
||||||
|
|
||||||
|
* Github action [haskell/actions/setup](https://github.com/haskell/actions/tree/main/setup)
|
||||||
|
* [vabal](https://github.com/Franciman/vabal)
|
||||||
|
|
||||||
|
## Known problems
|
||||||
|
|
||||||
|
### Custom ghc version names
|
||||||
|
|
||||||
|
When installing ghc bindists with custom version names as outlined in
|
||||||
|
[installing custom bindists](#installing-custom-bindists), then cabal might
|
||||||
|
be unable to find the correct `ghc-pkg` (also see [#73](https://gitlab.haskell.org/haskell/ghcup-hs/-/issues/73))
|
||||||
|
if you use `cabal build --with-compiler=ghc-foo`. Instead, point it to the full path, such as:
|
||||||
|
`cabal build --with-compiler=$HOME/.ghcup/ghc/<version-name>/bin/ghc` or set that GHC version
|
||||||
|
as the current one via: `ghcup set ghc <version-name>`.
|
||||||
|
|
||||||
|
This problem doesn't exist for regularly installed GHC versions.
|
||||||
|
|
||||||
|
### Limited distributions supported
|
||||||
|
|
||||||
|
Currently only GNU/Linux distributions compatible with the [upstream GHC](https://www.haskell.org/ghc/download_ghc_8_6_1.html#binaries) binaries are supported.
|
||||||
|
|
||||||
|
### Precompiled binaries
|
||||||
|
|
||||||
|
Since this uses precompiled binaries you may run into
|
||||||
|
several problems.
|
||||||
|
|
||||||
|
#### Missing libtinfo (ncurses)
|
||||||
|
|
||||||
|
You may run into problems with *ncurses* and **missing libtinfo**, in case
|
||||||
|
your distribution doesn't use the legacy way of building
|
||||||
|
ncurses and has no compatibility symlinks in place.
|
||||||
|
|
||||||
|
Ask your distributor on how to solve this or
|
||||||
|
try to compile from source via `ghcup compile <version>`.
|
||||||
|
|
||||||
|
#### Libnuma required
|
||||||
|
|
||||||
|
This was a [bug](https://ghc.haskell.org/trac/ghc/ticket/15688) in the build system of some GHC versions that lead to
|
||||||
|
unconditionally enabled libnuma support. To mitigate this you might have to install the libnuma
|
||||||
|
package of your distribution. See [here](https://gitlab.haskell.org/haskell/ghcup/issues/58) for a discussion.
|
||||||
|
|
||||||
|
### Compilation
|
||||||
|
|
||||||
|
Although this script can compile GHC for you, it's just a very thin
|
||||||
|
wrapper around the build system. It makes no effort in trying
|
||||||
|
to figure out whether you have the correct toolchain and
|
||||||
|
the correct dependencies. Refer to [the official docs](https://ghc.haskell.org/trac/ghc/wiki/Building/Preparation/Linux)
|
||||||
|
on how to prepare your environment for building GHC.
|
||||||
|
|
||||||
|
### Stack support
|
||||||
|
|
||||||
|
There may be a number of bugs when trying to make ghcup installed GHC versions work with stack,
|
||||||
|
such as:
|
||||||
|
|
||||||
|
- https://gitlab.haskell.org/haskell/ghcup-hs/-/issues/188
|
||||||
|
|
||||||
|
Further, stack's upgrade procedure may break/confuse ghcup. There are a number of integration
|
||||||
|
issues discussed here:
|
||||||
|
|
||||||
|
- https://gitlab.haskell.org/haskell/ghcup-hs/-/issues/153
|
||||||
|
|
||||||
|
### Windows support
|
||||||
|
|
||||||
|
Windows support is in early stages. Since windows doesn't support symbolic links properly,
|
||||||
|
ghcup uses a [shimgen wrapper](https://github.com/71/scoop-better-shimexe). It seems to work
|
||||||
|
well, but there may be unknown issues with that approach.
|
||||||
|
|
||||||
|
Windows 7 and Powershell 2.0 aren't well supported at the moment, also see:
|
||||||
|
|
||||||
|
- https://gitlab.haskell.org/haskell/ghcup-hs/-/issues/140
|
||||||
|
- https://gitlab.haskell.org/haskell/ghcup-hs/-/issues/197
|
||||||
|
|
||||||
|
## FAQ
|
||||||
|
|
||||||
|
### Why reimplement stack?
|
||||||
|
|
||||||
|
GHCup is not a reimplementation of stack. The only common part is automatic installation of GHC,
|
||||||
|
but even that differs in scope and design.
|
||||||
|
|
||||||
|
### Why should I use ghcup over stack?
|
||||||
|
|
||||||
|
GHCup is not a replacement for stack. Instead, it supports installing and managing stack versions.
|
||||||
|
It does the same for cabal, GHC and HLS. As such, It doesn't make a workflow choice for you.
|
||||||
|
|
||||||
|
### Why should I let ghcup manage stack?
|
||||||
|
|
||||||
|
You don't need to. However, some users seem to prefer to have a central tool that manages cabal and stack
|
||||||
|
at the same time. Additionally, it can allow better sharing of GHC installation across these tools.
|
||||||
|
Also see:
|
||||||
|
|
||||||
|
* https://docs.haskellstack.org/en/stable/yaml_configuration/#system-ghc
|
||||||
|
* https://github.com/commercialhaskell/stack/pull/5585
|
||||||
|
|
||||||
|
### Why does ghcup not use stack code?
|
||||||
|
|
||||||
|
Oddly, this question has been asked a couple of times. For the curious, here are a few reasons:
|
||||||
|
|
||||||
|
1. GHCup started as a shell script. At the time of rewriting it in Haskell, the authors didn't even know that stack exposes *some* of its [installation API](https://hackage.haskell.org/package/stack-2.5.1.1/docs/Stack-Setup.html)
|
||||||
|
2. Even if they did, it doesn't seem it would have satisfied their needs
|
||||||
|
- it didn't support cabal installation, which was the main motivation behind GHCup back then
|
||||||
|
- depending on a codebase as big as stack for a central part of one's application without having a short contribution pipeline would likely have caused stagnation or resulted in simply copy-pasting the relevant code in order to adjust it
|
||||||
|
- it's not clear how GHCup would have been implemented with the provided API. It seems the codebases are fairly different. GHCup does a lot of symlink handling to expose a central `bin/` directory that users can easily put in PATH, without having to worry about anything more. It also provides explicit removal functionality, GHC cross-compilation, a TUI, etc etc.
|
||||||
|
3. GHCup is built around unix principles and supposed to be simple.
|
||||||
|
|
||||||
|
### Why not unify...
|
||||||
|
|
||||||
|
#### ...stack and Cabal and do away with standalone installers
|
||||||
|
|
||||||
|
GHCup is not involved in such decisions. cabal-install and stack might have a
|
||||||
|
sufficiently different user experience to warrant having a choice.
|
||||||
|
|
||||||
|
#### ...installer implementations and have a common library
|
||||||
|
|
||||||
|
This sounds like an interesting goal. However, GHC installation isn't a hard engineering problem
|
||||||
|
and the shared code wouldn't be too exciting. For such an effort to make sense, all involved
|
||||||
|
parties would need to collaborate and have a short pipeline to get patches in.
|
||||||
|
|
||||||
|
It's true this would solve the integration problem, but following unix principles, we can
|
||||||
|
do similar via **hooks**. Both cabal and stack can support installation hooks. These hooks
|
||||||
|
can then call into ghcup or anything else, also see:
|
||||||
|
|
||||||
|
* https://github.com/haskell/cabal/issues/7394
|
||||||
|
* https://github.com/commercialhaskell/stack/pull/5585
|
||||||
|
|
||||||
|
#### ...installers (like, all of it)
|
||||||
|
|
||||||
|
So far, there hasn't been an **open** discussion about this. Is this even a good idea?
|
||||||
|
Sometimes projects converge eventually if their overlap is big enough, sometimes they don't.
|
||||||
|
|
||||||
|
While unification sounds like a simplification of the ecosystem, it also takes away choice.
|
||||||
|
Take `curl` and `wget` as an example.
|
||||||
|
|
||||||
|
How bad do we need this?
|
||||||
|
|
||||||
|
### Why not support windows?
|
||||||
|
|
||||||
|
Windows is supported since GHCup version 0.1.15.1.
|
||||||
|
|
||||||
|
### Why the haskell reimplementation?
|
||||||
|
|
||||||
|
GHCup started as a portable posix shell script of maybe 50 LOC. GHC installation itself can be carried out in
|
||||||
|
about ~3 lines of shell code (download, unpack , configure+make install). However, much convenient functionality
|
||||||
|
has been added since, as well as ensuring that all operations are safe and correct. The shell script ended up with
|
||||||
|
over 2k LOC, which was very hard to maintain.
|
||||||
|
|
||||||
|
The main concern when switching from a portable shell script to haskell was platform/architecture support.
|
||||||
|
However, ghcup now re-uses GHCs CI infrastructure and as such is perfectly in sync with all platforms that
|
||||||
|
GHC supports.
|
||||||
|
|
||||||
|
### Is GHCup affiliated with the Haskell Foundation?
|
||||||
|
|
||||||
|
There has been some collaboration: Windows and Stack support were mainly requested by the Haskell Foundation
|
||||||
|
and those seemed interesting features to add.
|
||||||
|
|
||||||
|
Other than that, GHCup is dedicated only to its users and is supported by haskell.org through hosting and CI
|
||||||
|
infrastructure.
|
||||||
|
19
RELEASING.md
Normal file
19
RELEASING.md
Normal file
@ -0,0 +1,19 @@
|
|||||||
|
# RELEASING
|
||||||
|
|
||||||
|
1. update `GHCup.Version` module. `ghcupURL` must only be updated if we change the `_toolRequirements` type or the YAML representation of it. The version of the YAML represents the change increments. `ghcUpVer` is the current application version.
|
||||||
|
|
||||||
|
2. Update version in ghcup.cabal
|
||||||
|
|
||||||
|
3. Add ChangeLog entry
|
||||||
|
|
||||||
|
4. Add/fix downloads in `ghcup-<ver>.yaml`, then verify with `ghcup-gen check -f ghcup-<ver>.yaml`
|
||||||
|
|
||||||
|
5. Commit and git push with tag. Wait for tests to succeed and release artifacts to build.
|
||||||
|
|
||||||
|
6. Download release artifacts and upload them `downloads.haskell.org/ghcup`
|
||||||
|
|
||||||
|
7. Add release artifacts to yaml file (see point 4.)
|
||||||
|
|
||||||
|
8. Upload the final `ghcup-<ver>.yaml` to `webhost.haskell.org/ghcup/data/`.
|
||||||
|
|
||||||
|
9. Update bootstrap-haskell and symlinks on `downloads.haskell.org/ghcup`
|
39
TODO.md
Normal file
39
TODO.md
Normal file
@ -0,0 +1,39 @@
|
|||||||
|
# TODOs and Remarks
|
||||||
|
|
||||||
|
## Now
|
||||||
|
|
||||||
|
* ghcup init?
|
||||||
|
* merge two download files
|
||||||
|
* fetch/unpack functionality
|
||||||
|
* installing multiple versions of the same
|
||||||
|
* post-install
|
||||||
|
|
||||||
|
* proper test suite
|
||||||
|
|
||||||
|
* !! update of 0.1.5 must go in ghcup-0.0.1.json !!
|
||||||
|
|
||||||
|
* try to run exe before upgrade (backup to ~/.ghcup/bin/ghcup.old)
|
||||||
|
* stdout flushing?
|
||||||
|
* resume support (for make-install only)
|
||||||
|
|
||||||
|
## Maybe
|
||||||
|
|
||||||
|
* version ranges in json
|
||||||
|
* sign the JSON? (Or check gpg keys?)
|
||||||
|
* testing (especially distro detection -> unit tests)
|
||||||
|
|
||||||
|
## Later
|
||||||
|
|
||||||
|
* add support for RC/alpha/HEAD versions
|
||||||
|
|
||||||
|
## Cleanups
|
||||||
|
|
||||||
|
* avoid alternative for IO
|
||||||
|
* use plucky or oops instead of Excepts
|
||||||
|
|
||||||
|
## Questions
|
||||||
|
|
||||||
|
* move out GHCup.Version module, bc it's not library-ish?
|
||||||
|
* mirror support
|
||||||
|
* interactive handling when distro doesn't exist and we know the tarball is incompatible?
|
||||||
|
* ghcup-with wrapper to execute a command with a given ghc in PATH?
|
127
app/ghcup-gen/Main.hs
Normal file
127
app/ghcup-gen/Main.hs
Normal file
@ -0,0 +1,127 @@
|
|||||||
|
{-# LANGUAGE CPP #-}
|
||||||
|
{-# LANGUAGE DataKinds #-}
|
||||||
|
{-# LANGUAGE DuplicateRecordFields #-}
|
||||||
|
{-# LANGUAGE NamedFieldPuns #-}
|
||||||
|
{-# LANGUAGE OverloadedStrings #-}
|
||||||
|
{-# LANGUAGE QuasiQuotes #-}
|
||||||
|
{-# LANGUAGE TemplateHaskell #-}
|
||||||
|
{-# LANGUAGE TypeApplications #-}
|
||||||
|
|
||||||
|
|
||||||
|
module Main where
|
||||||
|
|
||||||
|
import GHCup.Types
|
||||||
|
import GHCup.Types.JSON ( )
|
||||||
|
import GHCup.Utils.Logger
|
||||||
|
|
||||||
|
import Data.Char ( toLower )
|
||||||
|
#if !MIN_VERSION_base(4,13,0)
|
||||||
|
import Data.Semigroup ( (<>) )
|
||||||
|
#endif
|
||||||
|
import Options.Applicative hiding ( style )
|
||||||
|
import System.Console.Pretty
|
||||||
|
import System.Exit
|
||||||
|
import System.IO ( stdout )
|
||||||
|
import Text.Regex.Posix
|
||||||
|
import Validate
|
||||||
|
|
||||||
|
import qualified Data.ByteString as B
|
||||||
|
import qualified Data.Yaml as Y
|
||||||
|
|
||||||
|
|
||||||
|
data Options = Options
|
||||||
|
{ optCommand :: Command
|
||||||
|
}
|
||||||
|
|
||||||
|
data Command = ValidateYAML ValidateYAMLOpts
|
||||||
|
| ValidateTarballs ValidateYAMLOpts TarballFilter
|
||||||
|
|
||||||
|
|
||||||
|
data Input
|
||||||
|
= FileInput FilePath -- optsparse-applicative doesn't handle ByteString correctly anyway
|
||||||
|
| StdInput
|
||||||
|
|
||||||
|
fileInput :: Parser Input
|
||||||
|
fileInput =
|
||||||
|
FileInput
|
||||||
|
<$> strOption
|
||||||
|
(long "file" <> short 'f' <> metavar "FILENAME" <> help
|
||||||
|
"Input file to validate"
|
||||||
|
)
|
||||||
|
|
||||||
|
stdInput :: Parser Input
|
||||||
|
stdInput = flag'
|
||||||
|
StdInput
|
||||||
|
(short 'i' <> long "stdin" <> help "Validate from stdin (default)")
|
||||||
|
|
||||||
|
inputP :: Parser Input
|
||||||
|
inputP = fileInput <|> stdInput
|
||||||
|
|
||||||
|
data ValidateYAMLOpts = ValidateYAMLOpts
|
||||||
|
{ vInput :: Maybe Input
|
||||||
|
}
|
||||||
|
|
||||||
|
validateYAMLOpts :: Parser ValidateYAMLOpts
|
||||||
|
validateYAMLOpts = ValidateYAMLOpts <$> optional inputP
|
||||||
|
|
||||||
|
tarballFilterP :: Parser TarballFilter
|
||||||
|
tarballFilterP = option readm $
|
||||||
|
long "tarball-filter" <> short 'u' <> metavar "<tool>-<version>" <> value def
|
||||||
|
<> help "Only check certain tarballs (format: <tool>-<version>)"
|
||||||
|
where
|
||||||
|
def = TarballFilter (Right Nothing) (makeRegex ("" :: String))
|
||||||
|
readm = do
|
||||||
|
s <- str
|
||||||
|
case span (/= '-') s of
|
||||||
|
(_, []) -> fail "invalid format, missing '-' after the tool name"
|
||||||
|
(t, v) | [tool] <- [ tool | tool <- [minBound..maxBound], low (show tool) == low t ] ->
|
||||||
|
pure (TarballFilter $ Right $ Just tool) <*> makeRegexOptsM compIgnoreCase execBlank (drop 1 v)
|
||||||
|
(t, v) | [tool] <- [ tool | tool <- [minBound..maxBound], low (show tool) == low t ] ->
|
||||||
|
pure (TarballFilter $ Left tool) <*> makeRegexOptsM compIgnoreCase execBlank (drop 1 v)
|
||||||
|
_ -> fail "invalid tool"
|
||||||
|
low = fmap toLower
|
||||||
|
|
||||||
|
|
||||||
|
opts :: Parser Options
|
||||||
|
opts = Options <$> com
|
||||||
|
|
||||||
|
com :: Parser Command
|
||||||
|
com = subparser
|
||||||
|
( command
|
||||||
|
"check"
|
||||||
|
( ValidateYAML
|
||||||
|
<$> info (validateYAMLOpts <**> helper)
|
||||||
|
(progDesc "Validate the YAML")
|
||||||
|
)
|
||||||
|
<> command
|
||||||
|
"check-tarballs"
|
||||||
|
(info
|
||||||
|
((ValidateTarballs <$> validateYAMLOpts <*> tarballFilterP) <**> helper)
|
||||||
|
(progDesc "Validate all tarballs (download and checksum)")
|
||||||
|
)
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
main :: IO ()
|
||||||
|
main = do
|
||||||
|
_ <- customExecParser (prefs showHelpOnError) (info (opts <**> helper) idm)
|
||||||
|
>>= \Options {..} -> case optCommand of
|
||||||
|
ValidateYAML vopts -> withValidateYamlOpts vopts validate
|
||||||
|
ValidateTarballs vopts tarballFilter -> withValidateYamlOpts vopts (validateTarballs tarballFilter)
|
||||||
|
pure ()
|
||||||
|
|
||||||
|
where
|
||||||
|
withValidateYamlOpts vopts f = case vopts of
|
||||||
|
ValidateYAMLOpts { vInput = Nothing } ->
|
||||||
|
B.getContents >>= valAndExit f
|
||||||
|
ValidateYAMLOpts { vInput = Just StdInput } ->
|
||||||
|
B.getContents >>= valAndExit f
|
||||||
|
ValidateYAMLOpts { vInput = Just (FileInput file) } ->
|
||||||
|
B.readFile file >>= valAndExit f
|
||||||
|
valAndExit f contents = do
|
||||||
|
(GHCupInfo _ av gt) <- case Y.decodeEither' contents of
|
||||||
|
Right r -> pure r
|
||||||
|
Left e -> die (color Red $ show e)
|
||||||
|
myLoggerT (LoggerConfig True (B.hPut stdout) (\_ -> pure ())) (f av gt)
|
||||||
|
>>= exitWith
|
288
app/ghcup-gen/Validate.hs
Normal file
288
app/ghcup-gen/Validate.hs
Normal file
@ -0,0 +1,288 @@
|
|||||||
|
{-# LANGUAGE CPP #-}
|
||||||
|
{-# LANGUAGE DataKinds #-}
|
||||||
|
{-# LANGUAGE FlexibleContexts #-}
|
||||||
|
{-# LANGUAGE QuasiQuotes #-}
|
||||||
|
{-# LANGUAGE TemplateHaskell #-}
|
||||||
|
{-# LANGUAGE TypeApplications #-}
|
||||||
|
{-# LANGUAGE ViewPatterns #-}
|
||||||
|
{-# LANGUAGE OverloadedStrings #-}
|
||||||
|
|
||||||
|
module Validate where
|
||||||
|
|
||||||
|
import GHCup
|
||||||
|
import GHCup.Download
|
||||||
|
import GHCup.Errors
|
||||||
|
import GHCup.Platform
|
||||||
|
import GHCup.Types hiding ( LeanAppState (..) )
|
||||||
|
import GHCup.Types.Optics
|
||||||
|
import GHCup.Utils
|
||||||
|
import GHCup.Utils.Logger
|
||||||
|
import GHCup.Utils.Version.QQ
|
||||||
|
|
||||||
|
import Codec.Archive
|
||||||
|
import Control.Applicative
|
||||||
|
import Control.Exception.Safe
|
||||||
|
import Control.Monad
|
||||||
|
import Control.Monad.IO.Class
|
||||||
|
import Control.Monad.Logger
|
||||||
|
import Control.Monad.Reader.Class
|
||||||
|
import Control.Monad.Trans.Class ( lift )
|
||||||
|
import Control.Monad.Trans.Reader ( runReaderT )
|
||||||
|
import Control.Monad.Trans.Resource ( runResourceT
|
||||||
|
, MonadUnliftIO
|
||||||
|
)
|
||||||
|
import Data.Containers.ListUtils ( nubOrd )
|
||||||
|
import Data.IORef
|
||||||
|
import Data.List
|
||||||
|
import Data.Versions
|
||||||
|
import Haskus.Utils.Variant.Excepts
|
||||||
|
import Optics
|
||||||
|
import System.FilePath
|
||||||
|
import System.Exit
|
||||||
|
import System.IO
|
||||||
|
import Text.ParserCombinators.ReadP
|
||||||
|
import Text.PrettyPrint.HughesPJClass ( prettyShow )
|
||||||
|
import Text.Regex.Posix
|
||||||
|
|
||||||
|
import qualified Data.ByteString as B
|
||||||
|
import qualified Data.Map.Strict as M
|
||||||
|
import qualified Data.Text as T
|
||||||
|
import qualified Data.Version as V
|
||||||
|
|
||||||
|
|
||||||
|
data ValidationError = InternalError String
|
||||||
|
deriving Show
|
||||||
|
|
||||||
|
instance Exception ValidationError
|
||||||
|
|
||||||
|
|
||||||
|
addError :: (MonadReader (IORef Int) m, MonadIO m, Monad m) => m ()
|
||||||
|
addError = do
|
||||||
|
ref <- ask
|
||||||
|
liftIO $ modifyIORef ref (+ 1)
|
||||||
|
|
||||||
|
|
||||||
|
validate :: (Monad m, MonadLogger m, MonadThrow m, MonadIO m, MonadUnliftIO m)
|
||||||
|
=> GHCupDownloads
|
||||||
|
-> M.Map GlobalTool DownloadInfo
|
||||||
|
-> m ExitCode
|
||||||
|
validate dls _ = do
|
||||||
|
ref <- liftIO $ newIORef 0
|
||||||
|
|
||||||
|
-- verify binary downloads --
|
||||||
|
flip runReaderT ref $ do
|
||||||
|
-- unique tags
|
||||||
|
forM_ (M.toList dls) $ \(t, _) -> checkUniqueTags t
|
||||||
|
|
||||||
|
-- required platforms
|
||||||
|
forM_ (M.toList dls) $ \(t, versions) ->
|
||||||
|
forM_ (M.toList versions) $ \(v, vi) ->
|
||||||
|
forM_ (M.toList $ _viArch vi) $ \(arch, pspecs) -> do
|
||||||
|
checkHasRequiredPlatforms t v (_viTags vi) arch (M.keys pspecs)
|
||||||
|
|
||||||
|
checkGHCVerIsValid
|
||||||
|
forM_ (M.toList dls) $ \(t, _) -> checkMandatoryTags t
|
||||||
|
_ <- checkGHCHasBaseVersion
|
||||||
|
|
||||||
|
-- exit
|
||||||
|
e <- liftIO $ readIORef ref
|
||||||
|
if e > 0
|
||||||
|
then pure $ ExitFailure e
|
||||||
|
else do
|
||||||
|
lift $ $(logInfo) "All good"
|
||||||
|
pure ExitSuccess
|
||||||
|
where
|
||||||
|
checkHasRequiredPlatforms t v tags arch pspecs = do
|
||||||
|
let v' = prettyVer v
|
||||||
|
arch' = prettyShow arch
|
||||||
|
when (notElem (Linux UnknownLinux) pspecs) $ do
|
||||||
|
lift $ $(logError) $
|
||||||
|
"Linux UnknownLinux missing for for " <> T.pack (prettyShow t) <> " " <> v' <> " " <> T.pack arch'
|
||||||
|
addError
|
||||||
|
when ((notElem Darwin pspecs) && arch == A_64) $ do
|
||||||
|
lift $ $(logError) $ "Darwin missing for for " <> T.pack (prettyShow t) <> " " <> v' <> " " <> T.pack arch'
|
||||||
|
addError
|
||||||
|
when ((notElem FreeBSD pspecs) && arch == A_64) $ lift $ $(logWarn) $
|
||||||
|
"FreeBSD missing for for " <> T.pack (prettyShow t) <> " " <> v' <> " " <> T.pack arch'
|
||||||
|
when (notElem Windows pspecs && arch == A_64) $ do
|
||||||
|
lift $ $(logError) $ "Windows missing for for " <> T.pack (prettyShow t) <> " " <> v' <> " " <> T.pack arch'
|
||||||
|
addError
|
||||||
|
|
||||||
|
-- alpine needs to be set explicitly, because
|
||||||
|
-- we cannot assume that "Linux UnknownLinux" runs on Alpine
|
||||||
|
-- (although it could be static)
|
||||||
|
when (notElem (Linux Alpine) pspecs) $
|
||||||
|
case t of
|
||||||
|
GHCup | arch `elem` [A_64, A_32] -> lift ($(logError) $ "Linux Alpine missing for " <> T.pack (prettyShow t) <> " " <> v' <> " " <> T.pack (prettyShow arch)) >> addError
|
||||||
|
Cabal | v > [vver|2.4.1.0|]
|
||||||
|
, arch `elem` [A_64, A_32] -> lift ($(logError) $ "Linux Alpine missing for " <> T.pack (prettyShow t) <> " " <> v' <> " " <> T.pack (prettyShow arch)) >> addError
|
||||||
|
GHC | Latest `elem` tags || Recommended `elem` tags
|
||||||
|
, arch `elem` [A_64, A_32] -> lift ($(logError) $ "Linux Alpine missing for " <> T.pack (prettyShow t) <> " " <> v' <> " " <> T.pack (prettyShow arch))
|
||||||
|
_ -> lift $ $(logWarn) $ "Linux Alpine missing for " <> T.pack (prettyShow t) <> " " <> v' <> " " <> T.pack (prettyShow arch)
|
||||||
|
|
||||||
|
checkUniqueTags tool = do
|
||||||
|
let allTags = join $ fmap _viTags $ M.elems $ availableToolVersions dls tool
|
||||||
|
let nonUnique =
|
||||||
|
fmap fst
|
||||||
|
. filter (\(_, b) -> not b)
|
||||||
|
<$> ( mapM
|
||||||
|
(\case
|
||||||
|
[] -> throwM $ InternalError "empty inner list"
|
||||||
|
(t : ts) ->
|
||||||
|
pure $ (t, ) (not (isUniqueTag t) || null ts)
|
||||||
|
)
|
||||||
|
. group
|
||||||
|
. sort
|
||||||
|
$ allTags
|
||||||
|
)
|
||||||
|
case join nonUnique of
|
||||||
|
[] -> pure ()
|
||||||
|
xs -> do
|
||||||
|
lift $ $(logError) $ "Tags not unique for " <> T.pack (prettyShow tool) <> ": " <> T.pack (prettyShow xs)
|
||||||
|
addError
|
||||||
|
where
|
||||||
|
isUniqueTag Latest = True
|
||||||
|
isUniqueTag Recommended = True
|
||||||
|
isUniqueTag Old = False
|
||||||
|
isUniqueTag Prerelease = False
|
||||||
|
isUniqueTag (Base _) = False
|
||||||
|
isUniqueTag (UnknownTag _) = False
|
||||||
|
|
||||||
|
checkGHCVerIsValid = do
|
||||||
|
let ghcVers = toListOf (ix GHC % to M.keys % folded) dls
|
||||||
|
forM_ ghcVers $ \v ->
|
||||||
|
case [ x | (x,"") <- readP_to_S V.parseVersion (T.unpack . prettyVer $ v) ] of
|
||||||
|
[_] -> pure ()
|
||||||
|
_ -> do
|
||||||
|
lift $ $(logError) $ "GHC version " <> prettyVer v <> " is not valid"
|
||||||
|
addError
|
||||||
|
|
||||||
|
-- a tool must have at least one of each mandatory tags
|
||||||
|
checkMandatoryTags tool = do
|
||||||
|
let allTags = join $ fmap _viTags $ M.elems $ availableToolVersions dls tool
|
||||||
|
forM_ [Latest, Recommended] $ \t -> case elem t allTags of
|
||||||
|
False -> do
|
||||||
|
lift $ $(logError) $ "Tag " <> T.pack (prettyShow t) <> " missing from " <> T.pack (prettyShow tool)
|
||||||
|
addError
|
||||||
|
True -> pure ()
|
||||||
|
|
||||||
|
-- all GHC versions must have a base tag
|
||||||
|
checkGHCHasBaseVersion = do
|
||||||
|
let allTags = M.toList $ availableToolVersions dls GHC
|
||||||
|
forM allTags $ \(ver, _viTags -> tags) -> case any isBase tags of
|
||||||
|
False -> do
|
||||||
|
lift $ $(logError) $ "Base tag missing from GHC ver " <> prettyVer ver
|
||||||
|
addError
|
||||||
|
True -> pure ()
|
||||||
|
|
||||||
|
isBase (Base _) = True
|
||||||
|
isBase _ = False
|
||||||
|
|
||||||
|
data TarballFilter = TarballFilter
|
||||||
|
{ tfTool :: Either GlobalTool (Maybe Tool)
|
||||||
|
, tfVersion :: Regex
|
||||||
|
}
|
||||||
|
|
||||||
|
validateTarballs :: ( Monad m
|
||||||
|
, MonadLogger m
|
||||||
|
, MonadThrow m
|
||||||
|
, MonadIO m
|
||||||
|
, MonadUnliftIO m
|
||||||
|
, MonadMask m
|
||||||
|
, Alternative m
|
||||||
|
, MonadFail m
|
||||||
|
)
|
||||||
|
=> TarballFilter
|
||||||
|
-> GHCupDownloads
|
||||||
|
-> M.Map GlobalTool DownloadInfo
|
||||||
|
-> m ExitCode
|
||||||
|
validateTarballs (TarballFilter etool versionRegex) dls gt = do
|
||||||
|
ref <- liftIO $ newIORef 0
|
||||||
|
|
||||||
|
flip runReaderT ref $ do
|
||||||
|
-- download/verify all tarballs
|
||||||
|
let dlis = either (const []) (\tool -> nubOrd $ dls ^.. each %& indices (maybe (const True) (==) tool) %> each %& indices (matchTest versionRegex . T.unpack . prettyVer) % (viSourceDL % _Just `summing` viArch % each % each % each)) etool
|
||||||
|
let gdlis = nubOrd $ gt ^.. each
|
||||||
|
let allDls = either (const gdlis) (const dlis) etool
|
||||||
|
when (null allDls) $ $(logError) "no tarballs selected by filter" *> addError
|
||||||
|
forM_ allDls downloadAll
|
||||||
|
|
||||||
|
-- exit
|
||||||
|
e <- liftIO $ readIORef ref
|
||||||
|
if e > 0
|
||||||
|
then pure $ ExitFailure e
|
||||||
|
else do
|
||||||
|
lift $ $(logInfo) "All good"
|
||||||
|
pure ExitSuccess
|
||||||
|
|
||||||
|
where
|
||||||
|
runLogger = myLoggerT LoggerConfig { lcPrintDebug = True
|
||||||
|
, colorOutter = B.hPut stderr
|
||||||
|
, rawOutter = \_ -> pure ()
|
||||||
|
}
|
||||||
|
downloadAll dli = do
|
||||||
|
dirs <- liftIO getAllDirs
|
||||||
|
|
||||||
|
pfreq <- (
|
||||||
|
runLogger . runE @'[NoCompatiblePlatform, NoCompatibleArch, DistroNotFound] . liftE $ platformRequest
|
||||||
|
) >>= \case
|
||||||
|
VRight r -> pure r
|
||||||
|
VLeft e -> do
|
||||||
|
lift $ runLogger
|
||||||
|
($(logError) $ T.pack $ prettyShow e)
|
||||||
|
liftIO $ exitWith (ExitFailure 2)
|
||||||
|
|
||||||
|
let appstate = AppState (Settings True False Never Curl True GHCupURL False) dirs defaultKeyBindings (GHCupInfo mempty mempty mempty) pfreq
|
||||||
|
|
||||||
|
r <-
|
||||||
|
runLogger
|
||||||
|
. flip runReaderT appstate
|
||||||
|
. runResourceT
|
||||||
|
. runE @'[DigestError
|
||||||
|
, DownloadFailed
|
||||||
|
, UnknownArchive
|
||||||
|
, ArchiveResult
|
||||||
|
]
|
||||||
|
$ do
|
||||||
|
case etool of
|
||||||
|
Right (Just GHCup) -> do
|
||||||
|
tmpUnpack <- lift mkGhcupTmpDir
|
||||||
|
_ <- liftE $ download (_dlUri dli) (Just (_dlHash dli)) tmpUnpack Nothing False
|
||||||
|
pure Nothing
|
||||||
|
Right _ -> do
|
||||||
|
p <- liftE $ downloadCached dli Nothing
|
||||||
|
fmap (Just . head . splitDirectories . head)
|
||||||
|
. liftE
|
||||||
|
. getArchiveFiles
|
||||||
|
$ p
|
||||||
|
Left ShimGen -> do
|
||||||
|
tmpUnpack <- lift mkGhcupTmpDir
|
||||||
|
_ <- liftE $ download (_dlUri dli) (Just (_dlHash dli)) tmpUnpack Nothing False
|
||||||
|
pure Nothing
|
||||||
|
case r of
|
||||||
|
VRight (Just basePath) -> do
|
||||||
|
case _dlSubdir dli of
|
||||||
|
Just (RealDir prel) -> do
|
||||||
|
lift $ $(logInfo)
|
||||||
|
$ " verifying subdir: " <> T.pack prel
|
||||||
|
when (basePath /= prel) $ do
|
||||||
|
lift $ $(logError) $
|
||||||
|
"Subdir doesn't match: expected " <> T.pack prel <> ", got " <> T.pack basePath
|
||||||
|
addError
|
||||||
|
Just (RegexDir regexString) -> do
|
||||||
|
lift $ $(logInfo) $
|
||||||
|
"verifying subdir (regex): " <> T.pack regexString
|
||||||
|
let regex = makeRegexOpts
|
||||||
|
compIgnoreCase
|
||||||
|
execBlank
|
||||||
|
regexString
|
||||||
|
when (not (match regex basePath)) $ do
|
||||||
|
lift $ $(logError) $
|
||||||
|
"Subdir doesn't match: expected regex " <> T.pack regexString <> ", got " <> T.pack basePath
|
||||||
|
addError
|
||||||
|
Nothing -> pure ()
|
||||||
|
VRight Nothing -> pure ()
|
||||||
|
VLeft e -> do
|
||||||
|
lift $ $(logError) $
|
||||||
|
"Could not download (or verify hash) of " <> T.pack (show dli) <> ", Error was: " <> T.pack (prettyShow e)
|
||||||
|
addError
|
File diff suppressed because it is too large
Load Diff
2580
app/ghcup/Main.hs
2580
app/ghcup/Main.hs
File diff suppressed because it is too large
Load Diff
655
bootstrap-haskell
Executable file
655
bootstrap-haskell
Executable file
@ -0,0 +1,655 @@
|
|||||||
|
#!/bin/sh
|
||||||
|
|
||||||
|
# Main settings:
|
||||||
|
# * BOOTSTRAP_HASKELL_NONINTERACTIVE - any nonzero value for noninteractive installation
|
||||||
|
# * BOOTSTRAP_HASKELL_NO_UPGRADE - any nonzero value to not trigger the upgrade
|
||||||
|
# * GHCUP_USE_XDG_DIRS - any nonzero value to respect The XDG Base Directory Specification
|
||||||
|
# * BOOTSTRAP_HASKELL_VERBOSE - any nonzero value for more verbose installation
|
||||||
|
# * BOOTSTRAP_HASKELL_GHC_VERSION - the ghc version to install
|
||||||
|
# * BOOTSTRAP_HASKELL_CABAL_VERSION - the cabal version to install
|
||||||
|
# * BOOTSTRAP_HASKELL_INSTALL_STACK - whether to install latest stack
|
||||||
|
# * BOOTSTRAP_HASKELL_INSTALL_HLS - whether to install latest hls
|
||||||
|
# * BOOTSTRAP_HASKELL_ADJUST_BASHRC - whether to adjust PATH in bashrc (prepend)
|
||||||
|
# * BOOTSTRAP_HASKELL_ADJUST_CABAL_CONFIG - whether to adjust mingw paths in cabal.config on windows
|
||||||
|
|
||||||
|
# License: LGPL-3.0
|
||||||
|
|
||||||
|
|
||||||
|
# safety subshell to avoid executing anything in case this script is not downloaded properly
|
||||||
|
(
|
||||||
|
|
||||||
|
plat="$(uname -s)"
|
||||||
|
arch=$(uname -m)
|
||||||
|
ghver="0.1.16.2"
|
||||||
|
base_url="https://downloads.haskell.org/~ghcup"
|
||||||
|
|
||||||
|
export GHCUP_SKIP_UPDATE_CHECK=yes
|
||||||
|
|
||||||
|
case "${plat}" in
|
||||||
|
MSYS*|MINGW*)
|
||||||
|
: "${GHCUP_INSTALL_BASE_PREFIX:=/c}"
|
||||||
|
GHCUP_DIR=$(cygpath -u "${GHCUP_INSTALL_BASE_PREFIX}/ghcup")
|
||||||
|
GHCUP_BIN=$(cygpath -u "${GHCUP_INSTALL_BASE_PREFIX}/ghcup/bin")
|
||||||
|
: "${GHCUP_MSYS2:=${GHCUP_DIR}/msys64}"
|
||||||
|
;;
|
||||||
|
*)
|
||||||
|
: "${GHCUP_INSTALL_BASE_PREFIX:=$HOME}"
|
||||||
|
export GHCUP_USE_XDG_DIRS
|
||||||
|
|
||||||
|
if [ -n "${GHCUP_USE_XDG_DIRS}" ] ; then
|
||||||
|
GHCUP_DIR=${XDG_DATA_HOME:=$HOME/.local/share}/ghcup
|
||||||
|
GHCUP_BIN=${XDG_BIN_HOME:=$HOME/.local/bin}
|
||||||
|
else
|
||||||
|
GHCUP_DIR=${GHCUP_INSTALL_BASE_PREFIX}/.ghcup
|
||||||
|
GHCUP_BIN=${GHCUP_INSTALL_BASE_PREFIX}/.ghcup/bin
|
||||||
|
fi
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
|
||||||
|
: "${BOOTSTRAP_HASKELL_GHC_VERSION:=recommended}"
|
||||||
|
: "${BOOTSTRAP_HASKELL_CABAL_VERSION:=recommended}"
|
||||||
|
|
||||||
|
|
||||||
|
die() {
|
||||||
|
(>&2 printf "\\033[0;31m%s\\033[0m\\n" "$1")
|
||||||
|
exit 2
|
||||||
|
}
|
||||||
|
|
||||||
|
warn() {
|
||||||
|
case "${plat}" in
|
||||||
|
MSYS*|MINGW*)
|
||||||
|
echo -e "\\033[0;35m$1\\033[0m"
|
||||||
|
;;
|
||||||
|
*)
|
||||||
|
printf "\\033[0;35m%s\\033[0m\\n" "$1"
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
}
|
||||||
|
|
||||||
|
yellow() {
|
||||||
|
case "${plat}" in
|
||||||
|
MSYS*|MINGW*)
|
||||||
|
echo -e "\\033[0;33m$1\\033[0m"
|
||||||
|
;;
|
||||||
|
*)
|
||||||
|
printf "\\033[0;33m%s\\033[0m\\n" "$1"
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
}
|
||||||
|
|
||||||
|
green() {
|
||||||
|
case "${plat}" in
|
||||||
|
MSYS*|MINGW*)
|
||||||
|
echo -e "\\033[0;32m$1\\033[0m"
|
||||||
|
;;
|
||||||
|
*)
|
||||||
|
printf "\\033[0;32m%s\\033[0m\\n" "$1"
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
}
|
||||||
|
|
||||||
|
edo() {
|
||||||
|
"$@" || die "\"$*\" failed!"
|
||||||
|
}
|
||||||
|
|
||||||
|
eghcup() {
|
||||||
|
edo _eghcup "$@"
|
||||||
|
}
|
||||||
|
|
||||||
|
_eghcup() {
|
||||||
|
if [ -n "${BOOTSTRAP_HASKELL_YAML}" ] ; then
|
||||||
|
args="-s ${BOOTSTRAP_HASKELL_YAML}"
|
||||||
|
fi
|
||||||
|
if [ -z "${BOOTSTRAP_HASKELL_VERBOSE}" ] ; then
|
||||||
|
"${GHCUP_BIN}/ghcup" ${args} "$@"
|
||||||
|
else
|
||||||
|
"${GHCUP_BIN}/ghcup" ${args} --verbose "$@"
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
_done() {
|
||||||
|
echo
|
||||||
|
echo "==============================================================================="
|
||||||
|
case "${plat}" in
|
||||||
|
MSYS*|MINGW*)
|
||||||
|
green
|
||||||
|
green "All done!"
|
||||||
|
green
|
||||||
|
green "In a new powershell or cmd.exe session, now you can..."
|
||||||
|
green
|
||||||
|
green "Start a simple repl via:"
|
||||||
|
green " ghci"
|
||||||
|
green
|
||||||
|
green "Start a new haskell project in the current directory via:"
|
||||||
|
green " cabal init --interactive"
|
||||||
|
green
|
||||||
|
green "Install other GHC versions and tools via:"
|
||||||
|
green " ghcup list"
|
||||||
|
green " ghcup install <tool> <version>"
|
||||||
|
green
|
||||||
|
green "To install system libraries and update msys2/mingw64,"
|
||||||
|
green "open the \"Mingw haskell shell\""
|
||||||
|
green "and the \"Mingw package management docs\""
|
||||||
|
green "desktop shortcuts."
|
||||||
|
;;
|
||||||
|
*)
|
||||||
|
green
|
||||||
|
green "All done!"
|
||||||
|
green
|
||||||
|
green "To start a simple repl, run:"
|
||||||
|
green " ghci"
|
||||||
|
green
|
||||||
|
green "To start a new haskell project in the current directory, run:"
|
||||||
|
green " cabal init --interactive"
|
||||||
|
green
|
||||||
|
green "To install other GHC versions and tools, run:"
|
||||||
|
green " ghcup tui"
|
||||||
|
;;
|
||||||
|
|
||||||
|
esac
|
||||||
|
|
||||||
|
|
||||||
|
exit 0
|
||||||
|
}
|
||||||
|
|
||||||
|
download_ghcup() {
|
||||||
|
|
||||||
|
case "${plat}" in
|
||||||
|
"linux"|"Linux")
|
||||||
|
case "${arch}" in
|
||||||
|
x86_64|amd64)
|
||||||
|
# we could be in a 32bit docker container, in which
|
||||||
|
# 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)
|
||||||
|
_url=${base_url}/${ghver}/i386-linux-ghcup-${ghver}
|
||||||
|
;;
|
||||||
|
armv7*)
|
||||||
|
_url=${base_url}/${ghver}/armv7-linux-ghcup-${ghver}
|
||||||
|
;;
|
||||||
|
aarch64|arm64|armv8l)
|
||||||
|
_url=${base_url}/${ghver}/aarch64-linux-ghcup-${ghver}
|
||||||
|
;;
|
||||||
|
*) die "Unknown architecture: ${arch}"
|
||||||
|
;;
|
||||||
|
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")
|
||||||
|
case "${arch}" in
|
||||||
|
x86_64|amd64)
|
||||||
|
_url=${base_url}/${ghver}/x86_64-apple-darwin-ghcup-${ghver}
|
||||||
|
;;
|
||||||
|
aarch64|arm64|armv8l)
|
||||||
|
_url=${base_url}/${ghver}/aarch64-apple-darwin-ghcup-${ghver}
|
||||||
|
;;
|
||||||
|
i*86)
|
||||||
|
die "i386 currently not supported!"
|
||||||
|
;;
|
||||||
|
*) die "Unknown architecture: ${arch}"
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
;;
|
||||||
|
MSYS*|MINGW*)
|
||||||
|
case "${arch}" in
|
||||||
|
x86_64|amd64)
|
||||||
|
_url=${base_url}/${ghver}/x86_64-mingw64-ghcup-${ghver}.exe
|
||||||
|
;;
|
||||||
|
*) die "Unknown architecture: ${arch}"
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
;;
|
||||||
|
*) die "Unknown platform: ${plat}"
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
case "${plat}" in
|
||||||
|
MSYS*|MINGW*)
|
||||||
|
edo curl -Lf "${_url}" > "${GHCUP_BIN}"/ghcup.exe
|
||||||
|
edo chmod +x "${GHCUP_BIN}"/ghcup.exe
|
||||||
|
;;
|
||||||
|
*)
|
||||||
|
edo curl -Lf "${_url}" > "${GHCUP_BIN}"/ghcup
|
||||||
|
edo chmod +x "${GHCUP_BIN}"/ghcup
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
|
||||||
|
edo mkdir -p "${GHCUP_DIR}"
|
||||||
|
|
||||||
|
# we may overwrite this in adjust_bashrc
|
||||||
|
cat <<-EOF > "${GHCUP_DIR}"/env || die "Failed to create env file"
|
||||||
|
export PATH="\$HOME/.cabal/bin:${GHCUP_BIN}:\$PATH"
|
||||||
|
EOF
|
||||||
|
|
||||||
|
# shellcheck disable=SC1090
|
||||||
|
edo . "${GHCUP_DIR}"/env
|
||||||
|
eghcup upgrade
|
||||||
|
}
|
||||||
|
|
||||||
|
# Figures out the users login shell and sets
|
||||||
|
# GHCUP_PROFILE_FILE and MY_SHELL variables.
|
||||||
|
find_shell() {
|
||||||
|
case $SHELL in
|
||||||
|
*/zsh) # login shell is zsh
|
||||||
|
GHCUP_PROFILE_FILE="$HOME/.zshrc"
|
||||||
|
MY_SHELL="zsh" ;;
|
||||||
|
*/bash) # login shell is bash
|
||||||
|
GHCUP_PROFILE_FILE="$HOME/.bashrc"
|
||||||
|
MY_SHELL="bash" ;;
|
||||||
|
*/sh) # login shell is sh, but might be a symlink to bash or zsh
|
||||||
|
if [ -n "${BASH}" ] ; then
|
||||||
|
GHCUP_PROFILE_FILE="$HOME/.bashrc"
|
||||||
|
MY_SHELL="bash"
|
||||||
|
elif [ -n "${ZSH_VERSION}" ] ; then
|
||||||
|
GHCUP_PROFILE_FILE="$HOME/.zshrc"
|
||||||
|
MY_SHELL="zsh"
|
||||||
|
else
|
||||||
|
return
|
||||||
|
fi
|
||||||
|
;;
|
||||||
|
*/fish) # login shell is fish
|
||||||
|
GHCUP_PROFILE_FILE="$HOME/.config/fish/config.fish"
|
||||||
|
MY_SHELL="fish" ;;
|
||||||
|
*) return ;;
|
||||||
|
esac
|
||||||
|
}
|
||||||
|
|
||||||
|
# Ask user if they want to adjust the bashrc.
|
||||||
|
ask_bashrc() {
|
||||||
|
if [ -n "${BOOTSTRAP_HASKELL_ADJUST_BASHRC}" ] ; then
|
||||||
|
return 1
|
||||||
|
elif [ -z "${MY_SHELL}" ] ; then
|
||||||
|
return 0
|
||||||
|
fi
|
||||||
|
|
||||||
|
while true; do
|
||||||
|
if [ -z "${BOOTSTRAP_HASKELL_NONINTERACTIVE}" ] ; then
|
||||||
|
echo "-------------------------------------------------------------------------------"
|
||||||
|
|
||||||
|
warn ""
|
||||||
|
warn "Detected ${MY_SHELL} shell on your system..."
|
||||||
|
warn "Do you want ghcup to automatically add the required PATH variable to \"${GHCUP_PROFILE_FILE}\"?"
|
||||||
|
warn ""
|
||||||
|
warn "[P] Yes, prepend [A] Yes, append [N] No [?] Help (default is \"P\")."
|
||||||
|
warn ""
|
||||||
|
|
||||||
|
read -r bashrc_answer </dev/tty
|
||||||
|
else
|
||||||
|
# On windows .bashrc isn't an important user config, so we adjust it
|
||||||
|
# always. On other platforms, let's be a bit more conservative.
|
||||||
|
case "${plat}" in
|
||||||
|
MSYS*|MINGW*)
|
||||||
|
return 1
|
||||||
|
;;
|
||||||
|
*)
|
||||||
|
return 0
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
fi
|
||||||
|
case $bashrc_answer in
|
||||||
|
[Pp]* | "")
|
||||||
|
return 1
|
||||||
|
;;
|
||||||
|
[Aa]*)
|
||||||
|
return 2
|
||||||
|
;;
|
||||||
|
[Nn]*)
|
||||||
|
return 0;;
|
||||||
|
*)
|
||||||
|
echo "Possible choices are:"
|
||||||
|
echo
|
||||||
|
echo "P - Yes, prepend to PATH, taking precedence (default)"
|
||||||
|
echo "A - Yes, append to PATH"
|
||||||
|
echo "N - No, don't mess with my configuration"
|
||||||
|
echo
|
||||||
|
echo "Please make your choice and press ENTER."
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
done
|
||||||
|
|
||||||
|
unset bashrc_answer
|
||||||
|
}
|
||||||
|
|
||||||
|
# Needs 'find_shell' to be called beforehand.
|
||||||
|
adjust_bashrc() {
|
||||||
|
case $1 in
|
||||||
|
1)
|
||||||
|
cat <<-EOF > "${GHCUP_DIR}"/env || die "Failed to create env file"
|
||||||
|
export PATH="\$HOME/.cabal/bin:${GHCUP_BIN}:\$PATH"
|
||||||
|
EOF
|
||||||
|
;;
|
||||||
|
2)
|
||||||
|
cat <<-EOF > "${GHCUP_DIR}"/env || die "Failed to create env file"
|
||||||
|
export PATH="\$PATH:\$HOME/.cabal/bin:${GHCUP_BIN}"
|
||||||
|
EOF
|
||||||
|
;;
|
||||||
|
*) ;;
|
||||||
|
esac
|
||||||
|
|
||||||
|
case $1 in
|
||||||
|
1 | 2)
|
||||||
|
case $MY_SHELL in
|
||||||
|
"")
|
||||||
|
warn_path "Couldn't figure out login shell!"
|
||||||
|
return
|
||||||
|
;;
|
||||||
|
fish)
|
||||||
|
mkdir -p "${GHCUP_PROFILE_FILE%/*}"
|
||||||
|
sed -i -e '/# ghcup-env$/ s/^#*/#/' "${GHCUP_PROFILE_FILE}"
|
||||||
|
case $1 in
|
||||||
|
1)
|
||||||
|
echo "set -q GHCUP_INSTALL_BASE_PREFIX[1]; or set GHCUP_INSTALL_BASE_PREFIX \$HOME ; set -gx PATH \$HOME/.cabal/bin $GHCUP_BIN \$PATH # ghcup-env" >> "${GHCUP_PROFILE_FILE}"
|
||||||
|
;;
|
||||||
|
2)
|
||||||
|
echo "set -q GHCUP_INSTALL_BASE_PREFIX[1]; or set GHCUP_INSTALL_BASE_PREFIX \$HOME ; set -gx PATH \$HOME/.cabal/bin \$PATH $GHCUP_BIN # ghcup-env" >> "${GHCUP_PROFILE_FILE}"
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
break ;;
|
||||||
|
bash)
|
||||||
|
sed -i -e '/# ghcup-env$/ s/^#*/#/' "${GHCUP_PROFILE_FILE}"
|
||||||
|
echo "[ -f \"${GHCUP_DIR}/env\" ] && source \"${GHCUP_DIR}/env\" # ghcup-env" >> "${GHCUP_PROFILE_FILE}"
|
||||||
|
case "${plat}" in
|
||||||
|
"Darwin"|"darwin")
|
||||||
|
if ! grep -q "ghcup-env" "${HOME}/.bash_profile" ; then
|
||||||
|
echo "[[ -f ~/.bashrc ]] && source ~/.bashrc # ghcup-env" >> "${HOME}/.bash_profile"
|
||||||
|
fi
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
break ;;
|
||||||
|
|
||||||
|
zsh)
|
||||||
|
sed -i -e '/# ghcup-env$/ s/^#*/#/' "${GHCUP_PROFILE_FILE}"
|
||||||
|
echo "[ -f \"${GHCUP_DIR}/env\" ] && source \"${GHCUP_DIR}/env\" # ghcup-env" >> "${GHCUP_PROFILE_FILE}"
|
||||||
|
break ;;
|
||||||
|
esac
|
||||||
|
echo
|
||||||
|
echo "==============================================================================="
|
||||||
|
echo
|
||||||
|
warn "OK! ${GHCUP_PROFILE_FILE} has been modified. Restart your terminal for the changes to take effect,"
|
||||||
|
warn "or type \"source ${GHCUP_DIR}/env\" to apply them in your current terminal session."
|
||||||
|
return
|
||||||
|
;;
|
||||||
|
*)
|
||||||
|
warn_path
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
}
|
||||||
|
|
||||||
|
warn_path() {
|
||||||
|
echo
|
||||||
|
echo "==============================================================================="
|
||||||
|
echo
|
||||||
|
[ -n "$1" ] && warn "$1"
|
||||||
|
yellow "In order to run ghc and cabal, you need to adjust your PATH variable."
|
||||||
|
yellow "To do so, you may want run 'source $GHCUP_DIR/env' in your current terminal"
|
||||||
|
yellow "session as well as your shell configuration (e.g. ~/.bashrc)."
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
adjust_cabal_config() {
|
||||||
|
edo cabal user-config -a "extra-prog-path: $(cygpath -w "$GHCUP_BIN"), $(cygpath -w "$HOME"/AppData/Roaming/cabal/bin), $(cygpath -w "$GHCUP_MSYS2"/usr/bin), $(cygpath -w "$GHCUP_MSYS2"/mingw64/bin)" -a "extra-include-dirs: $(cygpath -w "$GHCUP_MSYS2"/mingw64/include)" -a "extra-lib-dirs: $(cygpath -w "$GHCUP_MSYS2"/mingw64/lib)" -f init
|
||||||
|
}
|
||||||
|
|
||||||
|
ask_cabal_config_init() {
|
||||||
|
case "${plat}" in
|
||||||
|
MSYS*|MINGW*)
|
||||||
|
if [ -n "${BOOTSTRAP_HASKELL_ADJUST_CABAL_CONFIG}" ] ; then
|
||||||
|
return 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ -z "${BOOTSTRAP_HASKELL_NONINTERACTIVE}" ] ; then
|
||||||
|
echo "-------------------------------------------------------------------------------"
|
||||||
|
warn "Create an initial cabal.config including relevant msys2 paths (recommended)?"
|
||||||
|
warn "[Y] Yes [N] No [?] Help (default is \"Y\")."
|
||||||
|
echo
|
||||||
|
while true; do
|
||||||
|
read -r mingw_answer </dev/tty
|
||||||
|
|
||||||
|
case $mingw_answer in
|
||||||
|
[Yy]* | "")
|
||||||
|
return 1 ;;
|
||||||
|
[Nn]*)
|
||||||
|
return 0 ;;
|
||||||
|
*)
|
||||||
|
echo "Possible choices are:"
|
||||||
|
echo
|
||||||
|
echo "Y - Yes, create a cabal.config with pre-set paths to msys2/mingw64 (default)"
|
||||||
|
echo "N - No, leave the current/default cabal config untouched"
|
||||||
|
echo
|
||||||
|
echo "Please make your choice and press ENTER."
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
done
|
||||||
|
else
|
||||||
|
return 1
|
||||||
|
fi
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
|
||||||
|
unset mingw_answer
|
||||||
|
|
||||||
|
return 0
|
||||||
|
}
|
||||||
|
|
||||||
|
do_cabal_config_init() {
|
||||||
|
case "${plat}" in
|
||||||
|
MSYS*|MINGW*)
|
||||||
|
case $1 in
|
||||||
|
1)
|
||||||
|
adjust_cabal_config
|
||||||
|
;;
|
||||||
|
0)
|
||||||
|
echo "Make sure that your global cabal.config references the correct mingw64 paths (extra-prog-path, extra-include-dirs and extra-lib-dirs)."
|
||||||
|
echo "And set the environment variable GHCUP_MSYS2 to the root path of your msys2 installation."
|
||||||
|
sleep 5
|
||||||
|
return ;;
|
||||||
|
*) ;;
|
||||||
|
esac
|
||||||
|
esac
|
||||||
|
}
|
||||||
|
|
||||||
|
ask_hls() {
|
||||||
|
if [ -n "${BOOTSTRAP_HASKELL_INSTALL_HLS}" ] ; then
|
||||||
|
return 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ -z "${BOOTSTRAP_HASKELL_NONINTERACTIVE}" ] ; then
|
||||||
|
echo "-------------------------------------------------------------------------------"
|
||||||
|
|
||||||
|
warn "Do you want to install haskell-language-server (HLS)?"
|
||||||
|
warn "HLS is a language-server that provides IDE-like functionality"
|
||||||
|
warn "and can integrate with different editors, such as Vim, Emacs, VS Code, Atom, ..."
|
||||||
|
warn "Also see https://github.com/haskell/haskell-language-server/blob/master/README.md"
|
||||||
|
warn ""
|
||||||
|
warn "[Y] Yes [N] No [?] Help (default is \"N\")."
|
||||||
|
warn ""
|
||||||
|
|
||||||
|
while true; do
|
||||||
|
read -r hls_answer </dev/tty
|
||||||
|
|
||||||
|
case $hls_answer in
|
||||||
|
[Yy]*)
|
||||||
|
return 1
|
||||||
|
;;
|
||||||
|
[Nn]* | "")
|
||||||
|
return 0
|
||||||
|
;;
|
||||||
|
*)
|
||||||
|
echo "Possible choices are:"
|
||||||
|
echo
|
||||||
|
echo "Y - Yes, install the haskell-langauge-server"
|
||||||
|
echo "N - No, don't install anything more (default)"
|
||||||
|
echo
|
||||||
|
echo "Please make your choice and press ENTER."
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
done
|
||||||
|
else
|
||||||
|
return 0
|
||||||
|
fi
|
||||||
|
|
||||||
|
unset hls_answer
|
||||||
|
}
|
||||||
|
|
||||||
|
ask_stack() {
|
||||||
|
if [ -n "${BOOTSTRAP_HASKELL_INSTALL_STACK}" ] ; then
|
||||||
|
return 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ -z "${BOOTSTRAP_HASKELL_NONINTERACTIVE}" ] ; then
|
||||||
|
echo "-------------------------------------------------------------------------------"
|
||||||
|
|
||||||
|
warn "Do you want to install stack?"
|
||||||
|
warn "Stack is a haskell build tool similar to cabal that is used by some projects."
|
||||||
|
warn "Also see https://docs.haskellstack.org/"
|
||||||
|
warn ""
|
||||||
|
warn "[Y] Yes [N] No [?] Help (default is \"N\")."
|
||||||
|
warn ""
|
||||||
|
|
||||||
|
while true; do
|
||||||
|
read -r stack_answer </dev/tty
|
||||||
|
|
||||||
|
case $stack_answer in
|
||||||
|
[Yy]*)
|
||||||
|
return 1 ;;
|
||||||
|
[Nn]* | "")
|
||||||
|
return 0 ;;
|
||||||
|
*)
|
||||||
|
echo "Possible choices are:"
|
||||||
|
echo
|
||||||
|
echo "Y - Yes, install stack"
|
||||||
|
echo "N - No, don't install anything more (default)"
|
||||||
|
echo
|
||||||
|
echo "Please make your choice and press ENTER."
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
done
|
||||||
|
else
|
||||||
|
return 0
|
||||||
|
fi
|
||||||
|
|
||||||
|
unset stack_answer
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
find_shell
|
||||||
|
|
||||||
|
|
||||||
|
echo
|
||||||
|
echo "Welcome to Haskell!"
|
||||||
|
echo
|
||||||
|
echo "This script will download and install the following binaries:"
|
||||||
|
echo " * ghcup - The Haskell toolchain installer"
|
||||||
|
echo " * ghc - The Glasgow Haskell Compiler"
|
||||||
|
echo " * cabal - The Cabal build tool for managing Haskell software"
|
||||||
|
echo " * stack - (optional) A cross-platform program for developing Haskell projects"
|
||||||
|
echo " * hls - (optional) A language server for developers to integrate with their editor/IDE"
|
||||||
|
echo
|
||||||
|
if [ -z "${GHCUP_USE_XDG_DIRS}" ] ; then
|
||||||
|
echo "ghcup installs only into the following directory,"
|
||||||
|
echo "which can be removed anytime:"
|
||||||
|
case "${plat}" in
|
||||||
|
MSYS*|MINGW*)
|
||||||
|
echo " $(cygpath -w "$GHCUP_DIR")"
|
||||||
|
;;
|
||||||
|
*)
|
||||||
|
echo " $GHCUP_DIR"
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
else
|
||||||
|
echo "ghcup installs into XDG directories as long as"
|
||||||
|
echo "'GHCUP_USE_XDG_DIRS' is set."
|
||||||
|
fi
|
||||||
|
echo
|
||||||
|
|
||||||
|
if [ -z "${BOOTSTRAP_HASKELL_NONINTERACTIVE}" ] ; then
|
||||||
|
warn "Press ENTER to proceed or ctrl-c to abort."
|
||||||
|
warn "Note that this script can be re-run at any given time."
|
||||||
|
# Wait for user input to continue.
|
||||||
|
# shellcheck disable=SC2034
|
||||||
|
read -r answer </dev/tty
|
||||||
|
fi
|
||||||
|
|
||||||
|
ask_bashrc
|
||||||
|
ask_bashrc_answer=$?
|
||||||
|
ask_cabal_config_init
|
||||||
|
ask_cabal_config_init_answer=$?
|
||||||
|
ask_hls
|
||||||
|
ask_hls_answer=$?
|
||||||
|
ask_stack
|
||||||
|
ask_stack_answer=$?
|
||||||
|
|
||||||
|
edo mkdir -p "${GHCUP_BIN}"
|
||||||
|
|
||||||
|
if command -V "ghcup" >/dev/null 2>&1 ; then
|
||||||
|
if [ -z "${BOOTSTRAP_HASKELL_NO_UPGRADE}" ] ; then
|
||||||
|
_eghcup upgrade || download_ghcup
|
||||||
|
fi
|
||||||
|
else
|
||||||
|
download_ghcup
|
||||||
|
fi
|
||||||
|
|
||||||
|
echo
|
||||||
|
echo "$(if [ -n "${BOOTSTRAP_HASKELL_YAML}" ] ; then ghcup -s "${BOOTSTRAP_HASKELL_YAML}" tool-requirements ; else ghcup tool-requirements ; fi)"
|
||||||
|
echo
|
||||||
|
|
||||||
|
if [ -z "${BOOTSTRAP_HASKELL_NONINTERACTIVE}" ] ; then
|
||||||
|
warn "Press ENTER to proceed or ctrl-c to abort."
|
||||||
|
warn "Installation may take a while."
|
||||||
|
echo
|
||||||
|
|
||||||
|
# Wait for user input to continue.
|
||||||
|
# shellcheck disable=SC2034
|
||||||
|
read -r answer </dev/tty
|
||||||
|
fi
|
||||||
|
|
||||||
|
eghcup --cache install ghc "${BOOTSTRAP_HASKELL_GHC_VERSION}"
|
||||||
|
|
||||||
|
eghcup set ghc "${BOOTSTRAP_HASKELL_GHC_VERSION}"
|
||||||
|
eghcup --cache install cabal "${BOOTSTRAP_HASKELL_CABAL_VERSION}"
|
||||||
|
|
||||||
|
do_cabal_config_init $ask_cabal_config_init_answer
|
||||||
|
|
||||||
|
edo cabal new-update
|
||||||
|
|
||||||
|
case $ask_hls_answer in
|
||||||
|
1)
|
||||||
|
_eghcup --cache install hls || warn "HLS installation failed, continuing anyway"
|
||||||
|
;;
|
||||||
|
*) ;;
|
||||||
|
esac
|
||||||
|
|
||||||
|
case $ask_stack_answer in
|
||||||
|
1)
|
||||||
|
_eghcup --cache install stack || warn "Stack installation failed, continuing anyway"
|
||||||
|
;;
|
||||||
|
*) ;;
|
||||||
|
esac
|
||||||
|
|
||||||
|
|
||||||
|
adjust_bashrc $ask_bashrc_answer
|
||||||
|
|
||||||
|
|
||||||
|
_done
|
||||||
|
|
||||||
|
)
|
||||||
|
|
||||||
|
# vim: tabstop=4 shiftwidth=4 expandtab
|
||||||
|
|
@ -11,49 +11,30 @@
|
|||||||
* cabal - The Cabal build tool for managing Haskell software"
|
* cabal - The Cabal build tool for managing Haskell software"
|
||||||
* stack - (optional) A cross-platform program for developing Haskell projects"
|
* stack - (optional) A cross-platform program for developing Haskell projects"
|
||||||
* hls - (optional) A language server for developers to integrate with their editor/IDE"
|
* hls - (optional) A language server for developers to integrate with their editor/IDE"
|
||||||
|
|
||||||
By default, the installation is non-interactive, unless you run it with 'Interactive $true'.
|
|
||||||
#>
|
#>
|
||||||
param (
|
param (
|
||||||
# Run an interactive installation
|
# Run an interactive installation
|
||||||
[switch]$Interactive,
|
[switch]$Interactive,
|
||||||
# Do minimal installation of ghcup and msys2 only
|
|
||||||
[switch]$Minimal,
|
|
||||||
# Run the final bootstrap script via 'bash' instead of a full newly spawned msys2 shell
|
|
||||||
[switch]$InBash,
|
|
||||||
# Overwrite (or rather backup) a previous install
|
|
||||||
[switch]$Overwrite,
|
|
||||||
# Skip adjusting cabal.config with mingw paths
|
|
||||||
[switch]$NoAdjustCabalConfig,
|
|
||||||
# Whether to install stack as well
|
|
||||||
[switch]$InstallStack,
|
|
||||||
# Whether to install hls as well
|
|
||||||
[switch]$InstallHLS,
|
|
||||||
# Specify the install root (default: 'C:\')
|
# Specify the install root (default: 'C:\')
|
||||||
[string]$InstallDir,
|
[string]$InstallDir,
|
||||||
# Specify the bootstrap url (default: 'https://www.haskell.org/ghcup/sh/bootstrap-haskell')
|
|
||||||
[string]$BootstrapUrl,
|
|
||||||
# Instead of installing a new MSys2, use an existing installation
|
# Instead of installing a new MSys2, use an existing installation
|
||||||
[string]$ExistingMsys2Dir,
|
[string]$ExistingMsys2Dir,
|
||||||
# Specify the cabal root directory (default: '$InstallDir\cabal')
|
# Specify the cabal root directory (default: '$InstallDir\cabal')
|
||||||
[string]$CabalDir,
|
[string]$CabalDir,
|
||||||
# Whether to disable use of curl.exe
|
# Overwrite (or rather backup) a previous install
|
||||||
[switch]$DisableCurl,
|
[switch]$Overwrite,
|
||||||
# The Msys2 version to download (e.g. 20221216)
|
# Specify the bootstrap url (default: 'https://www.haskell.org/ghcup/sh/bootstrap-haskell')
|
||||||
[string]$Msys2Version,
|
[string]$BootstrapUrl,
|
||||||
# The Msys2 sha256sum hash
|
# Run the final bootstrap script via 'bash' instead of a full newly spawned msys2 shell
|
||||||
[string]$Msys2Hash,
|
[switch]$InBash,
|
||||||
# Whether to disable creation of several desktop shortcuts
|
# Whether to install stack as well
|
||||||
[switch]$DontWriteDesktopShortcuts,
|
[switch]$InstallStack,
|
||||||
# Whether to disable adjusting bashrc (in msys2 env) with PATH
|
# Whether to install hls as well
|
||||||
[switch]$DontAdjustBashRc,
|
[switch]$InstallHLS,
|
||||||
# The msys2 environment to use, see https://www.msys2.org/docs/environments/ (defauts to MINGW64, MINGW32 or CLANGARM64, depending on the architecture)
|
# Skip adjusting cabal.config with mingw paths
|
||||||
[string]$Msys2Env
|
[switch]$NoAdjustCabalConfig
|
||||||
)
|
)
|
||||||
|
|
||||||
$DefaultMsys2Version = "20221216"
|
|
||||||
$DefaultMsys2Hash = "18370d32b0264915c97e3d7c618f7b32d48ad80858923883fde5145acd32ca0f"
|
|
||||||
|
|
||||||
$Silent = !$Interactive
|
$Silent = !$Interactive
|
||||||
|
|
||||||
function Print-Msg {
|
function Print-Msg {
|
||||||
@ -62,30 +43,14 @@ function Print-Msg {
|
|||||||
}
|
}
|
||||||
|
|
||||||
function Create-Shortcut {
|
function Create-Shortcut {
|
||||||
param ( [Parameter(Mandatory=$true,HelpMessage='Target path')][string]$SourceExe
|
param ( [Parameter(Mandatory=$true,HelpMessage='Target path')][string]$SourceExe, [Parameter(Mandatory=$true,HelpMessage='Arguments to the path/exe')][AllowEmptyString()]$ArgumentsToSourceExe, [Parameter(Mandatory=$true,HelpMessage='The destination of the desktop link')][string]$DestinationPath )
|
||||||
, [Parameter(Mandatory=$true,HelpMessage='Arguments to the path/exe')][AllowEmptyString()]$ArgumentsToSourceExe
|
|
||||||
, [Parameter(Mandatory=$true,HelpMessage='The destination of the desktop link')][string]$DestinationPath
|
|
||||||
, [Parameter(Mandatory=$true,HelpMessage='Temporary path to create the link at')][string]$TempPath
|
|
||||||
)
|
|
||||||
# we save to a temp dir first due to
|
|
||||||
# https://gitlab.haskell.org/haskell/ghcup-hs/-/issues/267
|
|
||||||
$DesktopDir = [Environment]::GetFolderPath("Desktop")
|
|
||||||
if (!(Test-Path -Path ('{0}' -f $TempPath))) {
|
|
||||||
New-Item -Path $TempPath -ItemType "directory"
|
|
||||||
}
|
|
||||||
$TmpFile = ('{0}\{1}' -f $TempPath, $DestinationPath)
|
|
||||||
$FinalDest = ('{0}\{1}' -f $DesktopDir, $DestinationPath)
|
|
||||||
$WshShell = New-Object -comObject WScript.Shell
|
$WshShell = New-Object -comObject WScript.Shell
|
||||||
$Shortcut = $WshShell.CreateShortcut($TmpFile)
|
$Shortcut = $WshShell.CreateShortcut($DestinationPath)
|
||||||
$Shortcut.TargetPath = $SourceExe
|
$Shortcut.TargetPath = $SourceExe
|
||||||
if($ArgumentsToSourceExe) {
|
if($ArgumentsToSourceExe) {
|
||||||
$Shortcut.Arguments = $ArgumentsToSourceExe
|
$Shortcut.Arguments = $ArgumentsToSourceExe
|
||||||
}
|
}
|
||||||
$Shortcut.Save()
|
$Shortcut.Save()
|
||||||
if ((Test-Path -Path ('{0}' -f $FinalDest))) {
|
|
||||||
Remove-Item -LiteralPath $FinalDest -Force
|
|
||||||
}
|
|
||||||
Move-Item -LiteralPath $TmpFile -Destination $FinalDest
|
|
||||||
}
|
}
|
||||||
|
|
||||||
function Add-EnvPath {
|
function Add-EnvPath {
|
||||||
@ -189,43 +154,6 @@ function Exec
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
# Only x86 32/64-bit is supported
|
|
||||||
$SupportedArchitectures = 'AMD64', 'x86'
|
|
||||||
if (!$SupportedArchitectures.contains($env:PROCESSOR_ARCHITECTURE)) {
|
|
||||||
Print-Msg -color Red -msg ("Unsupported processor architecture: {0}. Supported architectures: {1}." -f $env:PROCESSOR_ARCHITECTURE, ($SupportedArchitectures -join ", "))
|
|
||||||
Exit 1
|
|
||||||
}
|
|
||||||
|
|
||||||
# set default Msys2Env if not set
|
|
||||||
if (!$Msys2Env) {
|
|
||||||
if ($env:PROCESSOR_ARCHITECTURE -eq 'x86') {
|
|
||||||
$Msys2Env = 'MINGW32'
|
|
||||||
} elseif ($env:PROCESSOR_ARCHITECTURE -eq 'AMD64') {
|
|
||||||
$Msys2Env = 'MINGW64'
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
# parse Msys2Env and set the corresponding variables
|
|
||||||
if ($Msys2Env -eq 'MINGW32') {
|
|
||||||
$ShellType = '-mingw32'
|
|
||||||
$PkgConf = 'mingw-w64-i686-pkgconf'
|
|
||||||
} elseif ($Msys2Env -eq 'MINGW64') {
|
|
||||||
$ShellType = '-mingw64'
|
|
||||||
$PkgConf = 'mingw-w64-x86_64-pkgconf'
|
|
||||||
} elseif ($Msys2Env -eq 'MSYS') {
|
|
||||||
$ShellType = '-msys2'
|
|
||||||
$PkgConf = 'pkgconf'
|
|
||||||
} elseif ($Msys2Env -eq 'UCRT64') {
|
|
||||||
$ShellType = '-ucrt64'
|
|
||||||
$PkgConf = 'mingw-w64-ucrt-x86_64-pkgconf'
|
|
||||||
} elseif ($Msys2Env -eq 'CLANG64') {
|
|
||||||
$ShellType = '-clang64'
|
|
||||||
$PkgConf = 'mingw-w64-clang-x86_64-pkgconf'
|
|
||||||
} else {
|
|
||||||
Print-Msg -color Red -msg ("Unsupported Msys2 environment: {0}. Supported environments are: MINGW64, MINGW32, MSYS, UCRT64, CLANG64" -f $Msys2Env)
|
|
||||||
Exit 1
|
|
||||||
}
|
|
||||||
|
|
||||||
$ErrorActionPreference = 'Stop'
|
$ErrorActionPreference = 'Stop'
|
||||||
|
|
||||||
$GhcupBasePrefixEnv = [System.Environment]::GetEnvironmentVariable('GHCUP_INSTALL_BASE_PREFIX', 'user')
|
$GhcupBasePrefixEnv = [System.Environment]::GetEnvironmentVariable('GHCUP_INSTALL_BASE_PREFIX', 'user')
|
||||||
@ -252,7 +180,7 @@ elevated command prompt:
|
|||||||
|
|
||||||
if ($GhcupBasePrefixEnv) {
|
if ($GhcupBasePrefixEnv) {
|
||||||
$defaultGhcupBasePrefix = $GhcupBasePrefixEnv
|
$defaultGhcupBasePrefix = $GhcupBasePrefixEnv
|
||||||
} elseif (!($InstallDir)) {
|
} else {
|
||||||
$partitions = Get-CimInstance win32_logicaldisk
|
$partitions = Get-CimInstance win32_logicaldisk
|
||||||
$defaultGhcupBasePrefix = $null
|
$defaultGhcupBasePrefix = $null
|
||||||
foreach ($p in $partitions){
|
foreach ($p in $partitions){
|
||||||
@ -281,44 +209,23 @@ if ($Silent -and !($InstallDir)) {
|
|||||||
$GhcupBasePrefix = $defaultGhcupBasePrefix
|
$GhcupBasePrefix = $defaultGhcupBasePrefix
|
||||||
} elseif ($InstallDir) {
|
} elseif ($InstallDir) {
|
||||||
if (!(Test-Path -LiteralPath ('{0}' -f $InstallDir) -IsValid)) {
|
if (!(Test-Path -LiteralPath ('{0}' -f $InstallDir) -IsValid)) {
|
||||||
Print-Msg -color Red -msg "Not a valid directory! (InstallDir)"
|
Print-Msg -color Red -msg "Not a valid directory!"
|
||||||
Exit 1
|
Exit 1
|
||||||
} elseif (!(Split-Path -IsAbsolute -Path "$InstallDir")) {
|
} elseif (!(Split-Path -IsAbsolute -Path "$InstallDir")) {
|
||||||
Print-Msg -color Red -msg "Non-absolute Path specified! (InstallDir)"
|
Print-Msg -color Red -msg "Non-absolute Path specified!"
|
||||||
Exit 1
|
Exit 1
|
||||||
} else {
|
} else {
|
||||||
$GhcupBasePrefix = $InstallDir
|
$GhcupBasePrefix = $InstallDir
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
while ($true) {
|
while ($true) {
|
||||||
Print-Msg -color Magenta -msg (@'
|
Print-Msg -color Magenta -msg ('Where to install to (this should be a short Path, preferably a Drive like ''C:\''){1}Press enter to accept the default [{0}]:' -f $defaultGhcupBasePrefix, "`n")
|
||||||
Welcome to Haskell!
|
|
||||||
|
|
||||||
This script can download and install the following programs:
|
|
||||||
* ghcup - The Haskell toolchain installer
|
|
||||||
* ghc - The Glasgow Haskell Compiler
|
|
||||||
* msys2 - A linux-style toolchain environment required for many operations
|
|
||||||
* cabal - The Cabal build tool for managing Haskell software
|
|
||||||
* stack - (optional) A cross-platform program for developing Haskell projects
|
|
||||||
* hls - (optional) A language server for developers to integrate with their editor/IDE
|
|
||||||
|
|
||||||
Please note that ANTIVIRUS may interfere with the installation. If you experience problems, consider
|
|
||||||
disabling it temporarily.
|
|
||||||
|
|
||||||
Where to install to (this should be a short Path, preferably a Drive like 'C:\')?
|
|
||||||
If you accept this path, binaries will be installed into '{0}ghcup\bin' and msys2 into '{0}ghcup\msys64'.
|
|
||||||
Press enter to accept the default [{0}]:
|
|
||||||
|
|
||||||
'@ -f $defaultGhcupBasePrefix)
|
|
||||||
|
|
||||||
|
|
||||||
$basePrefixPrompt = Read-Host
|
$basePrefixPrompt = Read-Host
|
||||||
$GhcupBasePrefix = ($defaultGhcupBasePrefix,$basePrefixPrompt)[[bool]$basePrefixPrompt]
|
$GhcupBasePrefix = ($defaultGhcupBasePrefix,$basePrefixPrompt)[[bool]$basePrefixPrompt]
|
||||||
if (!($GhcupBasePrefix.EndsWith('\'))) {
|
if (!($GhcupBasePrefix.EndsWith('\'))) {
|
||||||
$GhcupBasePrefix = ('{0}\' -f $GhcupBasePrefix)
|
$GhcupBasePrefix = ('{0}\' -f $GhcupBasePrefix)
|
||||||
}
|
}
|
||||||
|
|
||||||
$GhcupBasePrefix = $GhcupBasePrefix.TrimEnd().TrimStart()
|
|
||||||
if (!($GhcupBasePrefix)) {
|
if (!($GhcupBasePrefix)) {
|
||||||
Print-Msg -color Red -msg "No directory specified!"
|
Print-Msg -color Red -msg "No directory specified!"
|
||||||
} elseif (!(Test-Path -LiteralPath ('{0}' -f $GhcupBasePrefix))) {
|
} elseif (!(Test-Path -LiteralPath ('{0}' -f $GhcupBasePrefix))) {
|
||||||
@ -336,20 +243,7 @@ $null = [Environment]::SetEnvironmentVariable("GHCUP_INSTALL_BASE_PREFIX", $Ghcu
|
|||||||
|
|
||||||
|
|
||||||
$GhcupDir = ('{0}\ghcup' -f $GhcupBasePrefix)
|
$GhcupDir = ('{0}\ghcup' -f $GhcupBasePrefix)
|
||||||
if ($ExistingMsys2Dir) {
|
|
||||||
if (!(Test-Path -LiteralPath ('{0}' -f $ExistingMsys2Dir) -IsValid)) {
|
|
||||||
Print-Msg -color Red -msg "Not a valid directory! (ExistingMsys2Dir)"
|
|
||||||
Exit 1
|
|
||||||
} elseif (!(Split-Path -IsAbsolute -Path "$ExistingMsys2Dir")) {
|
|
||||||
Print-Msg -color Red -msg "Non-absolute Path specified! (ExistingMsys2Dir)"
|
|
||||||
Exit 1
|
|
||||||
} else {
|
|
||||||
$MsysDir = $ExistingMsys2Dir
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
$MsysDir = ('{0}\msys64' -f $GhcupDir)
|
$MsysDir = ('{0}\msys64' -f $GhcupDir)
|
||||||
}
|
|
||||||
|
|
||||||
$Bash = ('{0}\usr\bin\bash' -f $MsysDir)
|
$Bash = ('{0}\usr\bin\bash' -f $MsysDir)
|
||||||
if (!($BootstrapUrl)) {
|
if (!($BootstrapUrl)) {
|
||||||
$BootstrapUrl = 'https://www.haskell.org/ghcup/sh/bootstrap-haskell'
|
$BootstrapUrl = 'https://www.haskell.org/ghcup/sh/bootstrap-haskell'
|
||||||
@ -406,7 +300,6 @@ if ($CabalDir) {
|
|||||||
$CabalDirPrompt = Read-Host
|
$CabalDirPrompt = Read-Host
|
||||||
$CabDirEnv = ($defaultCabalDir,$CabalDirPrompt)[[bool]$CabalDirPrompt]
|
$CabDirEnv = ($defaultCabalDir,$CabalDirPrompt)[[bool]$CabalDirPrompt]
|
||||||
|
|
||||||
$CabDirEnv = $CabDirEnv.TrimEnd().TrimStart()
|
|
||||||
if (!($CabDirEnv)) {
|
if (!($CabDirEnv)) {
|
||||||
Print-Msg -color Red -msg "No directory specified!"
|
Print-Msg -color Red -msg "No directory specified!"
|
||||||
} elseif (!(Split-Path -IsAbsolute -Path "$CabDirEnv")) {
|
} elseif (!(Split-Path -IsAbsolute -Path "$CabDirEnv")) {
|
||||||
@ -453,26 +346,6 @@ if (!($InstallStack)) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if ($Interactive) {
|
|
||||||
$DesktopDecision = $Host.UI.PromptForChoice('Create Desktop shortcuts'
|
|
||||||
, 'Do you want to create convenience desktop shortcuts (e.g. for uninstallation and msys2 shell)?'
|
|
||||||
, [System.Management.Automation.Host.ChoiceDescription[]] @('&Yes'
|
|
||||||
'&No'
|
|
||||||
'&Abort'), 0)
|
|
||||||
if ($DesktopDecision -eq 0) {
|
|
||||||
$InstallDesktopShortcuts = $true
|
|
||||||
} elseif ($DesktopDecision -eq 2) {
|
|
||||||
Exit 0
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
if ($Minimal) {
|
|
||||||
$InstallDesktopShortcuts = $false
|
|
||||||
} elseif ($DontWriteDesktopShortcuts) {
|
|
||||||
$InstallDesktopShortcuts = $false
|
|
||||||
} else {
|
|
||||||
$InstallDesktopShortcuts = $true
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
# mingw foo
|
# mingw foo
|
||||||
Print-Msg -msg 'First checking for Msys2...'
|
Print-Msg -msg 'First checking for Msys2...'
|
||||||
@ -493,38 +366,23 @@ if (!(Test-Path -Path ('{0}' -f $MsysDir))) {
|
|||||||
Start-Sleep -s 5
|
Start-Sleep -s 5
|
||||||
|
|
||||||
# Download the archive
|
# Download the archive
|
||||||
if (!($Msys2Version)) {
|
Print-Msg -msg 'Downloading Msys2 archive...'
|
||||||
$Msys2Version = $DefaultMsys2Version
|
$archive = 'msys2-x86_64-latest.sfx.exe'
|
||||||
}
|
|
||||||
if (!($Msys2Hash)) {
|
|
||||||
$Msys2Hash = $DefaultMsys2Hash
|
|
||||||
}
|
|
||||||
Print-Msg -msg ('Downloading Msys2 archive {0}...' -f $Msys2Version)
|
|
||||||
$archive = ('msys2-base-x86_64-{0}.sfx.exe' -f $Msys2Version)
|
|
||||||
$msysUrl = ('https://downloads.haskell.org/ghcup/msys2/{0}' -f "$archive")
|
|
||||||
$archivePath = ('{0}\{1}' -f ([IO.Path]::GetTempPath()), "$archive")
|
|
||||||
|
|
||||||
if ((Get-Command -Name 'curl.exe' -ErrorAction SilentlyContinue) -and !($DisableCurl)) {
|
if (Get-Command -Name 'curl.exe' -ErrorAction SilentlyContinue) {
|
||||||
Exec "curl.exe" '-o' "$archivePath" "$msysUrl"
|
Exec "curl.exe" '-o' ('{0}\{1}' -f $env:TEMP, $archive) ('https://repo.msys2.org/distrib/{0}' -f $archive)
|
||||||
} else {
|
} else {
|
||||||
Get-FileWCSynchronous -url "$msysUrl" -destinationFolder ([IO.Path]::GetTempPath()) -includeStats
|
Get-FileWCSynchronous -url ('https://repo.msys2.org/distrib/{0}' -f $archive) -destinationFolder "$env:TEMP" -includeStats
|
||||||
}
|
|
||||||
$Msys2HashChecked = Get-FileHash -Algorithm SHA256 "${archivePath}"
|
|
||||||
if (!($Msys2HashChecked.Hash -eq $Msys2Hash)) {
|
|
||||||
Print-Msg -color Red -msg ("Hashes don't match, got {0}, but expected {1}" -f $Msys2HashChecked, $Msys2Hash)
|
|
||||||
Exit 1
|
|
||||||
}
|
}
|
||||||
|
|
||||||
Print-Msg -msg 'Extracting Msys2 archive...'
|
Print-Msg -msg 'Extracting Msys2 archive...'
|
||||||
$null = & "$archivePath" '-y' ('-o{0}' -f $GhcupDir) # Extract
|
$null = & "$env:TEMP\$archive" '-y' ('-o{0}' -f $GhcupDir) # Extract
|
||||||
# We ignore errors because we don't want the installation script to fail just because a temporary file can't be removed.
|
Remove-Item -Path ('{0}/{1}' -f $env:TEMP, $archive)
|
||||||
# Relevant issue: https://github.com/haskell/ghcup-hs/issues/952
|
|
||||||
Remove-Item -Path "$archivePath" -ErrorAction Continue
|
|
||||||
|
|
||||||
Print-Msg -msg 'Processing MSYS2 bash for first time use...'
|
Print-Msg -msg 'Processing MSYS2 bash for first time use...'
|
||||||
Exec "$Bash" '-lc' 'exit'
|
Exec "$Bash" '-lc' 'exit'
|
||||||
|
|
||||||
Exec "$env:windir\system32\taskkill.exe" /F /FI "MODULES eq msys-2.0.dll"
|
Exec "$env:windir\system32\taskkill.exe" /F /FI `"MODULES eq msys-2.0.dll`"
|
||||||
|
|
||||||
Print-Msg -msg 'Upgrading full system...'
|
Print-Msg -msg 'Upgrading full system...'
|
||||||
Exec "$Bash" '-lc' 'pacman --noconfirm -Syuu'
|
Exec "$Bash" '-lc' 'pacman --noconfirm -Syuu'
|
||||||
@ -533,14 +391,13 @@ if (!(Test-Path -Path ('{0}' -f $MsysDir))) {
|
|||||||
Exec "$Bash" '-lc' 'pacman --noconfirm -Syuu'
|
Exec "$Bash" '-lc' 'pacman --noconfirm -Syuu'
|
||||||
|
|
||||||
Print-Msg -msg 'Installing Dependencies...'
|
Print-Msg -msg 'Installing Dependencies...'
|
||||||
Exec "$Bash" '-lc' ('pacman --noconfirm -S --needed curl autoconf {0}' -f $PkgConf)
|
Exec "$Bash" '-lc' 'pacman --noconfirm -S --needed curl autoconf mingw-w64-x86_64-pkgconf'
|
||||||
|
|
||||||
Print-Msg -msg 'Updating SSL root certificate authorities...'
|
Print-Msg -msg 'Updating SSL root certificate authorities...'
|
||||||
Exec "$Bash" '-lc' 'pacman --noconfirm -S ca-certificates'
|
Exec "$Bash" '-lc' 'pacman --noconfirm -S ca-certificates'
|
||||||
|
|
||||||
Print-Msg -msg 'Setting default home directory...'
|
Print-Msg -msg 'Setting default home directory...'
|
||||||
Exec "$Bash" '-lc' "sed -i -e 's/db_home:.*$/db_home: windows/' /etc/nsswitch.conf"
|
Exec "$Bash" '-lc' "sed -i -e 's/db_home:.*$/db_home: windows/' /etc/nsswitch.conf"
|
||||||
|
|
||||||
} elseif ($msys2Decision -eq 1) {
|
} elseif ($msys2Decision -eq 1) {
|
||||||
Print-Msg -color Yellow -msg 'Skipping MSys2 installation.'
|
Print-Msg -color Yellow -msg 'Skipping MSys2 installation.'
|
||||||
while ($true) {
|
while ($true) {
|
||||||
@ -553,7 +410,6 @@ if (!(Test-Path -Path ('{0}' -f $MsysDir))) {
|
|||||||
Print-Msg -color Magenta -msg 'Input existing MSys2 toolchain directory:'
|
Print-Msg -color Magenta -msg 'Input existing MSys2 toolchain directory:'
|
||||||
$MsysDir = Read-Host
|
$MsysDir = Read-Host
|
||||||
}
|
}
|
||||||
$MsysDir = $MsysDir.TrimEnd().TrimStart()
|
|
||||||
if (!($MsysDir)) {
|
if (!($MsysDir)) {
|
||||||
Print-Msg -color Red -msg "No directory specified!"
|
Print-Msg -color Red -msg "No directory specified!"
|
||||||
} elseif (!(Test-Path -LiteralPath ('{0}' -f $MsysDir))) {
|
} elseif (!(Test-Path -LiteralPath ('{0}' -f $MsysDir))) {
|
||||||
@ -575,9 +431,6 @@ if (!(Test-Path -Path ('{0}' -f $MsysDir))) {
|
|||||||
Start-Sleep -s 5
|
Start-Sleep -s 5
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
if ($InstallDesktopShortcuts) {
|
|
||||||
|
|
||||||
Print-Msg -msg 'Creating shortcuts...'
|
Print-Msg -msg 'Creating shortcuts...'
|
||||||
$uninstallShortCut = @'
|
$uninstallShortCut = @'
|
||||||
$decision = $Host.UI.PromptForChoice('Uninstall Haskell'
|
$decision = $Host.UI.PromptForChoice('Uninstall Haskell'
|
||||||
@ -641,13 +494,12 @@ if ($Host.Name -eq "ConsoleHost")
|
|||||||
}
|
}
|
||||||
'@
|
'@
|
||||||
|
|
||||||
$GhcInstArgs = ('{0} -mintty -c "pacman --noconfirm -S --needed base-devel gettext autoconf make libtool automake python p7zip patch unzip"' -f $ShellType)
|
|
||||||
Create-Shortcut -SourceExe ('{0}\msys2_shell.cmd' -f $MsysDir) -ArgumentsToSourceExe $GhcInstArgs -DestinationPath 'Install GHC dev dependencies.lnk' -TempPath $GhcupDir
|
|
||||||
Create-Shortcut -SourceExe ('{0}\msys2_shell.cmd' -f $MsysDir) -ArgumentsToSourceExe $ShellType -DestinationPath 'Mingw haskell shell.lnk' -TempPath $GhcupDir
|
|
||||||
Create-Shortcut -SourceExe 'https://www.msys2.org/docs/package-management' -ArgumentsToSourceExe '' -DestinationPath 'Mingw package management docs.url' -TempPath $GhcupDir
|
|
||||||
$DesktopDir = [Environment]::GetFolderPath("Desktop")
|
$DesktopDir = [Environment]::GetFolderPath("Desktop")
|
||||||
|
$GhcInstArgs = '-mingw64 -mintty -c "pacman --noconfirm -S --needed base-devel gettext autoconf make libtool automake python p7zip patch unzip"'
|
||||||
|
Create-Shortcut -SourceExe ('{0}\msys2_shell.cmd' -f $MsysDir) -ArgumentsToSourceExe $GhcInstArgs -DestinationPath ('{0}\Install GHC dev dependencies.lnk' -f $DesktopDir)
|
||||||
|
Create-Shortcut -SourceExe ('{0}\msys2_shell.cmd' -f $MsysDir) -ArgumentsToSourceExe '-mingw64' -DestinationPath ('{0}\Mingw haskell shell.lnk' -f $DesktopDir)
|
||||||
|
Create-Shortcut -SourceExe 'https://www.msys2.org/docs/package-management' -ArgumentsToSourceExe '' -DestinationPath ('{0}\Mingw package management docs.url' -f $DesktopDir)
|
||||||
$null = New-Item -Path $DesktopDir -Name "Uninstall Haskell.ps1" -ItemType "file" -Force -Value $uninstallShortCut
|
$null = New-Item -Path $DesktopDir -Name "Uninstall Haskell.ps1" -ItemType "file" -Force -Value $uninstallShortCut
|
||||||
}
|
|
||||||
|
|
||||||
Print-Msg -msg ('Adding {0}\bin to Users Path...' -f $GhcupDir)
|
Print-Msg -msg ('Adding {0}\bin to Users Path...' -f $GhcupDir)
|
||||||
Add-EnvPath -Path ('{0}\bin' -f ([System.IO.Path]::GetFullPath("$GhcupDir"))) -Container 'User'
|
Add-EnvPath -Path ('{0}\bin' -f ([System.IO.Path]::GetFullPath("$GhcupDir"))) -Container 'User'
|
||||||
@ -665,8 +517,8 @@ $Msys2Shell = ('{0}\msys2_shell.cmd' -f $MsysDir)
|
|||||||
# The bootstrap script is always silent, since we ask relevant questions here
|
# The bootstrap script is always silent, since we ask relevant questions here
|
||||||
$SilentExport = 'export BOOTSTRAP_HASKELL_NONINTERACTIVE=1 ;'
|
$SilentExport = 'export BOOTSTRAP_HASKELL_NONINTERACTIVE=1 ;'
|
||||||
|
|
||||||
if (!($InstallStack)) {
|
if ($InstallStack) {
|
||||||
$StackInstallExport = 'export BOOTSTRAP_HASKELL_INSTALL_NO_STACK=1 ;'
|
$StackInstallExport = 'export BOOTSTRAP_HASKELL_INSTALL_STACK=1 ;'
|
||||||
}
|
}
|
||||||
|
|
||||||
if ($InstallHLS) {
|
if ($InstallHLS) {
|
||||||
@ -677,30 +529,10 @@ if (!($NoAdjustCabalConfig)) {
|
|||||||
$AdjustCabalConfigExport = 'export BOOTSTRAP_HASKELL_ADJUST_CABAL_CONFIG=1 ;'
|
$AdjustCabalConfigExport = 'export BOOTSTRAP_HASKELL_ADJUST_CABAL_CONFIG=1 ;'
|
||||||
}
|
}
|
||||||
|
|
||||||
if ($Minimal) {
|
|
||||||
$MinimalExport = 'export BOOTSTRAP_HASKELL_MINIMAL=1 ;'
|
|
||||||
}
|
|
||||||
|
|
||||||
if ($DisableCurl) {
|
|
||||||
$BootstrapDownloader = 'export BOOTSTRAP_HASKELL_DOWNLOADER=wget ;'
|
|
||||||
$DownloadScript = 'wget -O /dev/stdout'
|
|
||||||
} else {
|
|
||||||
$DownloadScript = 'curl --proto ''=https'' --tlsv1.2 -sSf'
|
|
||||||
}
|
|
||||||
|
|
||||||
if (!($DontAdjustBashRc)) {
|
|
||||||
$AdjustBashRcExport = 'export BOOTSTRAP_HASKELL_ADJUST_BASHRC=1 ;'
|
|
||||||
}
|
|
||||||
|
|
||||||
# set msys2 env export for the shell bootstrap script
|
|
||||||
$Msys2EnvExport = ('export GHCUP_MSYS2_ENV={0} ;' -f $Msys2Env)
|
|
||||||
# export GHCUP_MSYS2_ENV
|
|
||||||
$null = [Environment]::SetEnvironmentVariable("GHCUP_MSYS2_ENV", $Msys2Env, [System.EnvironmentVariableTarget]::User)
|
|
||||||
|
|
||||||
if ((Get-Process -ID $PID).ProcessName.StartsWith("bootstrap-haskell") -Or $InBash) {
|
if ((Get-Process -ID $PID).ProcessName.StartsWith("bootstrap-haskell") -Or $InBash) {
|
||||||
Exec "$Bash" '-lc' ('{4} {6} {7} {8} {9} {10} {12} {13} [ -n ''{1}'' ] && export GHCUP_MSYS2=$(cygpath -m ''{1}'') ; [ -n ''{2}'' ] && export GHCUP_INSTALL_BASE_PREFIX=$(cygpath -m ''{2}/'') ; export PATH=$(cygpath -u ''{3}/bin''):$PATH ; export CABAL_DIR=''{5}'' ; [[ ''{0}'' = https* ]] && {11} {0} | bash || cat $(cygpath -m ''{0}'') | bash' -f $BootstrapUrl, $MsysDir, $GhcupBasePrefix, $GhcupDir, $SilentExport, $CabalDirFull, $StackInstallExport, $HLSInstallExport, $AdjustCabalConfigExport, $MinimalExport, $BootstrapDownloader, $DownloadScript, $AdjustBashRcExport, $Msys2EnvExport)
|
Exec "$Bash" '-lc' ('{4} {6} {7} {8} [ -n ''{1}'' ] && export GHCUP_MSYS2=$(cygpath -m ''{1}'') ; [ -n ''{2}'' ] && export GHCUP_INSTALL_BASE_PREFIX=$(cygpath -m ''{2}/'') ; export PATH=$(cygpath -u ''{3}/bin''):$PATH ; export CABAL_DIR=''{5}'' ; [[ ''{0}'' = https* ]] && curl --proto ''=https'' --tlsv1.2 -sSf {0} | bash || cat $(cygpath -m ''{0}'') | bash' -f $BootstrapUrl, $MsysDir, $GhcupBasePrefix, $GhcupDir, $SilentExport, $CabalDirFull, $StackInstallExport, $HLSInstallExport, $AdjustCabalConfigExport)
|
||||||
} else {
|
} else {
|
||||||
Exec "$Msys2Shell" $ShellType '-mintty' '-shell' 'bash' '-c' ('{4} {6} {7} {8} {9} {10} {12} {13} [ -n ''{1}'' ] && export GHCUP_MSYS2=$(cygpath -m ''{1}'') ; [ -n ''{2}'' ] && export GHCUP_INSTALL_BASE_PREFIX=$(cygpath -m ''{2}/'') ; export PATH=$(cygpath -u ''{3}/bin''):$PATH ; export CABAL_DIR=''{5}'' ; trap ''echo Press any key to exit && read -n 1 && exit'' 2 ; [[ ''{0}'' = https* ]] && {11} {0} | bash || cat $(cygpath -m ''{0}'') | bash ; echo ''Press any key to exit'' && read -n 1' -f $BootstrapUrl, $MsysDir, $GhcupBasePrefix, $GhcupDir, $SilentExport, $CabalDirFull, $StackInstallExport, $HLSInstallExport, $AdjustCabalConfigExport, $MinimalExport, $BootstrapDownloader, $DownloadScript, $AdjustBashRcExport, $Msys2EnvExport)
|
Exec "$Msys2Shell" '-mingw64' '-mintty' '-c' ('{4} {6} {7} {8} [ -n ''{1}'' ] && export GHCUP_MSYS2=$(cygpath -m ''{1}'') ; [ -n ''{2}'' ] && export GHCUP_INSTALL_BASE_PREFIX=$(cygpath -m ''{2}/'') ; export PATH=$(cygpath -u ''{3}/bin''):$PATH ; export CABAL_DIR=''{5}'' ; trap ''echo Press any key to exit && read -n 1 && exit'' 2 ; [[ ''{0}'' = https* ]] && curl --proto ''=https'' --tlsv1.2 -sSf {0} | bash || cat $(cygpath -m ''{0}'') | bash ; echo ''Press any key to exit'' && read -n 1' -f $BootstrapUrl, $MsysDir, $GhcupBasePrefix, $GhcupDir, $SilentExport, $CabalDirFull, $StackInstallExport, $HLSInstallExport, $AdjustCabalConfigExport)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
33
cabal.ghc8105.project
Normal file
33
cabal.ghc8105.project
Normal file
@ -0,0 +1,33 @@
|
|||||||
|
packages: ./ghcup.cabal
|
||||||
|
|
||||||
|
optional-packages: ./vendored/*/*.cabal
|
||||||
|
|
||||||
|
optimization: 2
|
||||||
|
|
||||||
|
package ghcup
|
||||||
|
tests: True
|
||||||
|
flags: +tui
|
||||||
|
|
||||||
|
source-repository-package
|
||||||
|
type: git
|
||||||
|
location: https://github.com/jtdaugherty/brick.git
|
||||||
|
tag: b3b96cfe66dfd398d338e3feb2b6855e66a35190
|
||||||
|
|
||||||
|
source-repository-package
|
||||||
|
type: git
|
||||||
|
location: https://github.com/Bodigrim/tar
|
||||||
|
tag: ac197ec7ea4838dc2b4e22b9b888b080cedf29cf
|
||||||
|
|
||||||
|
source-repository-package
|
||||||
|
type: git
|
||||||
|
location: https://github.com/bgamari/terminal-size
|
||||||
|
tag: 34ea816bd63f75f800eedac12c6908c6f3736036
|
||||||
|
|
||||||
|
constraints: http-io-streams -brotli
|
||||||
|
|
||||||
|
package libarchive
|
||||||
|
flags: -system-libarchive
|
||||||
|
|
||||||
|
allow-newer: base, ghc-prim, template-haskell, language-c
|
||||||
|
|
||||||
|
with-compiler: ghc-8.10.5
|
264
cabal.ghc8105.project.freeze
Normal file
264
cabal.ghc8105.project.freeze
Normal file
@ -0,0 +1,264 @@
|
|||||||
|
active-repositories: hackage.haskell.org:merge
|
||||||
|
constraints: any.Cabal ==3.2.1.0,
|
||||||
|
any.HUnit ==1.6.2.0,
|
||||||
|
any.HsOpenSSL ==0.11.7,
|
||||||
|
HsOpenSSL -fast-bignum -homebrew-openssl -macports-openssl -use-pkg-config,
|
||||||
|
any.QuickCheck ==2.14.2,
|
||||||
|
QuickCheck -old-random +templatehaskell,
|
||||||
|
any.StateVar ==1.2.2,
|
||||||
|
any.aeson ==1.5.6.0,
|
||||||
|
aeson -bytestring-builder -cffi -developer -fast,
|
||||||
|
any.aeson-pretty ==0.8.8,
|
||||||
|
aeson-pretty -lib-only,
|
||||||
|
any.alex ==3.2.6,
|
||||||
|
alex +small_base,
|
||||||
|
any.ansi-terminal ==0.11,
|
||||||
|
ansi-terminal -example,
|
||||||
|
any.ansi-wl-pprint ==0.6.9,
|
||||||
|
ansi-wl-pprint -example,
|
||||||
|
any.array ==0.5.4.0,
|
||||||
|
any.assoc ==1.0.2,
|
||||||
|
any.async ==2.2.3,
|
||||||
|
async -bench,
|
||||||
|
any.attoparsec ==0.13.2.5,
|
||||||
|
attoparsec -developer,
|
||||||
|
any.auto-update ==0.1.6,
|
||||||
|
any.base ==4.14.2.0,
|
||||||
|
any.base-compat ==0.11.2,
|
||||||
|
any.base-compat-batteries ==0.11.2,
|
||||||
|
any.base-orphans ==0.8.4,
|
||||||
|
any.base16-bytestring ==1.0.1.0,
|
||||||
|
any.base64-bytestring ==1.1.0.0,
|
||||||
|
any.bifunctors ==5.5.11,
|
||||||
|
bifunctors +semigroups +tagged,
|
||||||
|
any.binary ==0.8.8.0,
|
||||||
|
any.bindings-DSL ==1.0.25,
|
||||||
|
any.blaze-builder ==0.4.2.1,
|
||||||
|
any.brick ==0.63,
|
||||||
|
brick -demos,
|
||||||
|
any.bytestring ==0.10.12.0,
|
||||||
|
any.bz2 ==1.0.1.0,
|
||||||
|
bz2 -cross +with-bzlib,
|
||||||
|
any.bzlib-conduit ==0.3.0.2,
|
||||||
|
any.c2hs ==0.28.8,
|
||||||
|
c2hs +base3 -regression,
|
||||||
|
any.call-stack ==0.4.0,
|
||||||
|
any.case-insensitive ==1.2.1.0,
|
||||||
|
any.casing ==0.1.4.1,
|
||||||
|
any.cereal ==0.5.8.1,
|
||||||
|
cereal -bytestring-builder,
|
||||||
|
any.chs-cabal ==0.1.1.0,
|
||||||
|
any.chs-deps ==0.1.0.0,
|
||||||
|
chs-deps -cross,
|
||||||
|
any.clock ==0.8.2,
|
||||||
|
clock -llvm,
|
||||||
|
any.cmdargs ==0.10.21,
|
||||||
|
cmdargs +quotation -testprog,
|
||||||
|
any.colour ==2.3.6,
|
||||||
|
any.comonad ==5.0.8,
|
||||||
|
comonad +containers +distributive +indexed-traversable,
|
||||||
|
any.composition-prelude ==3.0.0.2,
|
||||||
|
composition-prelude -development,
|
||||||
|
any.concurrent-output ==1.10.12,
|
||||||
|
any.conduit ==1.3.4.1,
|
||||||
|
any.conduit-extra ==1.3.5,
|
||||||
|
any.conduit-zstd ==0.0.2.0,
|
||||||
|
any.config-ini ==0.2.4.0,
|
||||||
|
config-ini -enable-doctests,
|
||||||
|
any.containers ==0.6.4.1,
|
||||||
|
any.contravariant ==1.5.4,
|
||||||
|
contravariant +semigroups +statevar +tagged,
|
||||||
|
any.cpphs ==1.20.9.1,
|
||||||
|
cpphs -old-locale,
|
||||||
|
any.cryptohash-sha1 ==0.11.100.1,
|
||||||
|
any.cryptohash-sha256 ==0.11.102.0,
|
||||||
|
cryptohash-sha256 -exe +use-cbits,
|
||||||
|
any.data-clist ==0.1.2.3,
|
||||||
|
any.data-default-class ==0.1.2.0,
|
||||||
|
any.data-fix ==0.3.1,
|
||||||
|
any.deepseq ==1.4.4.0,
|
||||||
|
any.digest ==0.0.1.3,
|
||||||
|
digest -bytestring-in-base,
|
||||||
|
any.directory ==1.3.6.0,
|
||||||
|
any.disk-free-space ==0.1.0.1,
|
||||||
|
any.distributive ==0.6.2.1,
|
||||||
|
distributive +semigroups +tagged,
|
||||||
|
any.dlist ==1.0,
|
||||||
|
dlist -werror,
|
||||||
|
any.easy-file ==0.2.2,
|
||||||
|
any.errors ==2.3.0,
|
||||||
|
any.exceptions ==0.10.4,
|
||||||
|
any.extra ==1.7.9,
|
||||||
|
any.fast-logger ==3.0.5,
|
||||||
|
any.filepath ==1.4.2.1,
|
||||||
|
any.free ==5.1.7,
|
||||||
|
any.generic-arbitrary ==0.1.0,
|
||||||
|
any.generics-sop ==0.5.1.1,
|
||||||
|
any.ghc-boot-th ==8.10.5,
|
||||||
|
any.ghc-byteorder ==4.11.0.0.10,
|
||||||
|
any.ghc-prim ==0.6.1,
|
||||||
|
any.happy ==1.20.0,
|
||||||
|
any.hashable ==1.3.2.0,
|
||||||
|
hashable +integer-gmp -random-initial-seed,
|
||||||
|
any.haskell-src-exts ==1.23.1,
|
||||||
|
any.haskell-src-meta ==0.8.7,
|
||||||
|
any.haskus-utils-data ==1.4,
|
||||||
|
any.haskus-utils-types ==1.5.1,
|
||||||
|
any.haskus-utils-variant ==3.1,
|
||||||
|
any.hpath-filepath ==0.10.4,
|
||||||
|
any.hpath-posix ==0.13.3,
|
||||||
|
any.hsc2hs ==0.68.7,
|
||||||
|
hsc2hs -in-ghc-tree,
|
||||||
|
any.hspec ==2.7.10,
|
||||||
|
any.hspec-core ==2.7.10,
|
||||||
|
any.hspec-discover ==2.7.10 || ==2.8.2,
|
||||||
|
any.hspec-expectations ==0.8.2,
|
||||||
|
any.hspec-golden-aeson ==0.9.0.0,
|
||||||
|
any.http-io-streams ==0.1.6.0,
|
||||||
|
http-io-streams -brotli +fast-xor,
|
||||||
|
any.indexed-profunctors ==0.1.1,
|
||||||
|
any.indexed-traversable ==0.1.1,
|
||||||
|
any.indexed-traversable-instances ==0.1,
|
||||||
|
any.integer-gmp ==1.0.3.0,
|
||||||
|
any.integer-logarithms ==1.0.3.1,
|
||||||
|
integer-logarithms -check-bounds +integer-gmp,
|
||||||
|
any.io-streams ==1.5.2.1,
|
||||||
|
io-streams +network -nointeractivetests +zlib,
|
||||||
|
any.language-c ==0.9.0.1,
|
||||||
|
language-c -allwarnings +iecfpextension +usebytestrings,
|
||||||
|
any.libarchive ==3.0.2.2,
|
||||||
|
libarchive -cross -low-memory -system-libarchive,
|
||||||
|
any.libyaml ==0.1.2,
|
||||||
|
libyaml -no-unicode -system-libyaml,
|
||||||
|
any.lifted-base ==0.2.3.12,
|
||||||
|
any.lzma-static ==5.2.5.4,
|
||||||
|
any.megaparsec ==9.0.1,
|
||||||
|
megaparsec -dev,
|
||||||
|
any.microlens ==0.4.12.0,
|
||||||
|
any.microlens-mtl ==0.2.0.1,
|
||||||
|
any.microlens-th ==0.4.3.10,
|
||||||
|
any.monad-control ==1.0.3,
|
||||||
|
any.monad-logger ==0.3.36,
|
||||||
|
monad-logger +template_haskell,
|
||||||
|
any.monad-loops ==0.4.3,
|
||||||
|
monad-loops +base4,
|
||||||
|
any.mono-traversable ==1.0.15.1,
|
||||||
|
any.mtl ==2.2.2,
|
||||||
|
any.network ==3.1.2.2,
|
||||||
|
network -devel,
|
||||||
|
any.network-uri ==2.6.4.1,
|
||||||
|
any.old-locale ==1.0.0.7,
|
||||||
|
any.old-time ==1.1.0.3,
|
||||||
|
any.openssl-streams ==1.2.3.0,
|
||||||
|
any.optics ==0.4,
|
||||||
|
any.optics-core ==0.4,
|
||||||
|
optics-core -explicit-generic-labels,
|
||||||
|
any.optics-extra ==0.4,
|
||||||
|
any.optics-th ==0.4,
|
||||||
|
any.optics-vl ==0.2.1,
|
||||||
|
any.optparse-applicative ==0.16.1.0,
|
||||||
|
optparse-applicative +process,
|
||||||
|
any.os-release ==1.0.2,
|
||||||
|
os-release -devel,
|
||||||
|
any.parallel ==3.2.2.0,
|
||||||
|
any.parsec ==3.1.14.0,
|
||||||
|
any.parser-combinators ==1.3.0,
|
||||||
|
parser-combinators -dev,
|
||||||
|
any.polyparse ==1.13,
|
||||||
|
any.pretty ==1.1.3.6,
|
||||||
|
any.pretty-terminal ==0.1.0.0,
|
||||||
|
any.primitive ==0.7.1.0,
|
||||||
|
any.process ==1.6.9.0,
|
||||||
|
any.profunctors ==5.6.2,
|
||||||
|
any.quickcheck-arbitrary-adt ==0.3.1.0,
|
||||||
|
any.quickcheck-io ==0.2.0,
|
||||||
|
any.random ==1.2.0,
|
||||||
|
any.recursion-schemes ==5.2.2.1,
|
||||||
|
recursion-schemes +template-haskell,
|
||||||
|
any.regex-base ==0.94.0.1,
|
||||||
|
any.regex-posix ==0.96.0.1,
|
||||||
|
regex-posix -_regex-posix-clib,
|
||||||
|
any.resourcet ==1.2.4.2,
|
||||||
|
any.rts ==1.0.1,
|
||||||
|
any.safe ==0.3.19,
|
||||||
|
any.safe-exceptions ==0.1.7.2,
|
||||||
|
any.scientific ==0.3.7.0,
|
||||||
|
scientific -bytestring-builder -integer-simple,
|
||||||
|
any.semigroupoids ==5.3.5,
|
||||||
|
semigroupoids +comonad +containers +contravariant +distributive +tagged +unordered-containers,
|
||||||
|
any.setenv ==0.1.1.3,
|
||||||
|
any.sop-core ==0.5.0.1,
|
||||||
|
any.split ==0.2.3.4,
|
||||||
|
any.splitmix ==0.1.0.3,
|
||||||
|
splitmix -optimised-mixer,
|
||||||
|
any.stm ==2.5.0.1,
|
||||||
|
any.stm-chans ==3.0.0.4,
|
||||||
|
any.streaming-commons ==0.2.2.1,
|
||||||
|
streaming-commons -use-bytestring-builder,
|
||||||
|
any.strict ==0.4.0.1,
|
||||||
|
strict +assoc,
|
||||||
|
any.strict-base ==0.4.0.0,
|
||||||
|
any.string-interpolate ==0.3.1.1,
|
||||||
|
string-interpolate -bytestring-builder -extended-benchmarks -text-builder,
|
||||||
|
any.syb ==0.7.2.1,
|
||||||
|
any.tagged ==0.8.6.1,
|
||||||
|
tagged +deepseq +transformers,
|
||||||
|
any.tar ==0.6.0.0,
|
||||||
|
any.template-haskell ==2.16.0.0,
|
||||||
|
any.temporary ==1.3,
|
||||||
|
any.terminal-progress-bar ==0.4.1,
|
||||||
|
any.terminal-size ==0.3.2.1,
|
||||||
|
any.terminfo ==0.4.1.4,
|
||||||
|
any.text ==1.2.4.1,
|
||||||
|
any.text-conversions ==0.3.1,
|
||||||
|
any.text-zipper ==0.11,
|
||||||
|
any.tf-random ==0.5,
|
||||||
|
any.th-abstraction ==0.4.2.0,
|
||||||
|
any.th-compat ==0.1.2,
|
||||||
|
any.th-expand-syns ==0.4.8.0,
|
||||||
|
any.th-lift ==0.8.2,
|
||||||
|
any.th-lift-instances ==0.1.18,
|
||||||
|
any.th-orphans ==0.13.11,
|
||||||
|
any.th-reify-many ==0.1.9,
|
||||||
|
any.these ==1.1.1.1,
|
||||||
|
these +assoc,
|
||||||
|
any.time ==1.9.3,
|
||||||
|
any.time-compat ==1.9.6,
|
||||||
|
time-compat -old-locale,
|
||||||
|
any.transformers ==0.5.6.2,
|
||||||
|
any.transformers-base ==0.4.5.2,
|
||||||
|
transformers-base +orphaninstances,
|
||||||
|
any.transformers-compat ==0.7,
|
||||||
|
transformers-compat -five +five-three -four +generic-deriving +mtl -three -two,
|
||||||
|
any.typed-process ==0.2.6.0,
|
||||||
|
any.unix ==2.7.2.2,
|
||||||
|
any.unix-bytestring ==0.3.7.3,
|
||||||
|
any.unix-compat ==0.5.3,
|
||||||
|
unix-compat -old-time,
|
||||||
|
any.unix-time ==0.4.7,
|
||||||
|
any.unliftio-core ==0.2.0.1,
|
||||||
|
any.unordered-containers ==0.2.14.0,
|
||||||
|
unordered-containers -debug,
|
||||||
|
any.uri-bytestring ==0.3.3.1,
|
||||||
|
uri-bytestring -lib-werror,
|
||||||
|
any.utf8-string ==1.0.2,
|
||||||
|
any.uuid-types ==1.0.5,
|
||||||
|
any.vector ==0.12.3.0,
|
||||||
|
vector +boundschecks -internalchecks -unsafechecks -wall,
|
||||||
|
any.vector-algorithms ==0.8.0.4,
|
||||||
|
vector-algorithms +bench +boundschecks -internalchecks -llvm +properties -unsafechecks,
|
||||||
|
any.versions ==5.0.0,
|
||||||
|
any.vty ==5.33,
|
||||||
|
any.word-wrap ==0.4.1,
|
||||||
|
any.word8 ==0.1.3,
|
||||||
|
any.xor ==0.0.1.0,
|
||||||
|
any.yaml ==0.11.5.0,
|
||||||
|
yaml +no-examples +no-exe,
|
||||||
|
any.zip ==1.7.1,
|
||||||
|
zip -dev -disable-bzip2 -disable-zstd,
|
||||||
|
any.zlib ==0.6.2.3,
|
||||||
|
zlib -bundled-c-zlib -non-blocking-ffi -pkg-config,
|
||||||
|
any.zlib-bindings ==0.1.1.5,
|
||||||
|
any.zstd ==0.1.2.0,
|
||||||
|
zstd +standalone
|
||||||
|
index-state: hackage.haskell.org 2021-07-27T07:59:57Z
|
@ -1,60 +0,0 @@
|
|||||||
packages: ./ghcup.cabal
|
|
||||||
|
|
||||||
optional-packages: ./vendored/*/*.cabal
|
|
||||||
|
|
||||||
if impl(ghc < 9.0)
|
|
||||||
package ghcup
|
|
||||||
flags: +tui -tar
|
|
||||||
else
|
|
||||||
package ghcup
|
|
||||||
flags: +tui +tar
|
|
||||||
|
|
||||||
constraints: http-io-streams -brotli,
|
|
||||||
any.aeson >= 2.0.1.0,
|
|
||||||
any.hsc2hs ==0.68.8,
|
|
||||||
bzlib-conduit >= 0.3.0.3,
|
|
||||||
bz2 >= 1.0.1.1,
|
|
||||||
bzlib >= 0.5.2.0,
|
|
||||||
directory >= 1.3.8.3,
|
|
||||||
filepath == 1.4.101.0 || == 1.4.300.1 || >= 1.5.2.0
|
|
||||||
|
|
||||||
if os(mingw32)
|
|
||||||
constraints: zlib +bundled-c-zlib,
|
|
||||||
lzma +static,
|
|
||||||
text -simdutf,
|
|
||||||
vty-windows >=0.2.0.2
|
|
||||||
|
|
||||||
if impl(ghc >= 9.4)
|
|
||||||
constraints: language-c >= 0.9.3
|
|
||||||
|
|
||||||
|
|
||||||
source-repository-package
|
|
||||||
type: git
|
|
||||||
location: https://github.com/haskell/tar.git
|
|
||||||
tag: d94a988be4311b830149a9f8fc16739927e5fc1c
|
|
||||||
|
|
||||||
source-repository-package
|
|
||||||
type: git
|
|
||||||
location: https://github.com/hasufell/uri-bytestring.git
|
|
||||||
tag: 4fb5ed14b500c192e6e7a97f6b2b1eb478806001
|
|
||||||
|
|
||||||
package libarchive
|
|
||||||
flags: -system-libarchive
|
|
||||||
|
|
||||||
package aeson-pretty
|
|
||||||
flags: +lib-only
|
|
||||||
|
|
||||||
package cabal-plan
|
|
||||||
flags: -exe
|
|
||||||
|
|
||||||
package aeson
|
|
||||||
flags: +ordered-keymap
|
|
||||||
|
|
||||||
package streamly
|
|
||||||
flags: +use-unliftio
|
|
||||||
|
|
||||||
package *
|
|
||||||
test-show-details: direct
|
|
||||||
|
|
||||||
allow-newer: cabal-install-parsers:tar, streamly:Win32
|
|
||||||
|
|
@ -1,260 +0,0 @@
|
|||||||
active-repositories: hackage.haskell.org:merge
|
|
||||||
constraints: any.Cabal ==3.10.2.1,
|
|
||||||
any.Cabal-syntax ==3.10.2.0,
|
|
||||||
any.HUnit ==1.6.2.0,
|
|
||||||
any.HsOpenSSL ==0.11.7.6,
|
|
||||||
HsOpenSSL -fast-bignum -homebrew-openssl -macports-openssl -use-pkg-config,
|
|
||||||
any.OneTuple ==0.4.1.1,
|
|
||||||
any.QuickCheck ==2.14.3,
|
|
||||||
QuickCheck -old-random +templatehaskell,
|
|
||||||
any.StateVar ==1.2.2,
|
|
||||||
any.abstract-deque ==0.3,
|
|
||||||
abstract-deque -usecas,
|
|
||||||
any.aeson ==2.2.1.0,
|
|
||||||
aeson +ordered-keymap,
|
|
||||||
any.aeson-pretty ==0.8.10,
|
|
||||||
aeson-pretty +lib-only,
|
|
||||||
any.alex ==3.5.1.0,
|
|
||||||
any.ansi-terminal ==1.0.2,
|
|
||||||
ansi-terminal -example,
|
|
||||||
any.ansi-terminal-types ==0.11.5,
|
|
||||||
any.ansi-wl-pprint ==0.6.9,
|
|
||||||
ansi-wl-pprint -example,
|
|
||||||
any.array ==0.5.4.0,
|
|
||||||
any.assoc ==1.1,
|
|
||||||
assoc +tagged,
|
|
||||||
any.async ==2.2.5,
|
|
||||||
async -bench,
|
|
||||||
any.atomic-primops ==0.8.5,
|
|
||||||
atomic-primops -debug,
|
|
||||||
any.attoparsec ==0.14.4,
|
|
||||||
attoparsec -developer,
|
|
||||||
any.base ==4.14.3.0,
|
|
||||||
any.base-compat ==0.13.1,
|
|
||||||
any.base-orphans ==0.9.1,
|
|
||||||
any.base16-bytestring ==1.0.2.0,
|
|
||||||
any.base64-bytestring ==1.2.1.0,
|
|
||||||
any.bifunctors ==5.6.1,
|
|
||||||
bifunctors +tagged,
|
|
||||||
any.bimap ==0.5.0,
|
|
||||||
any.binary ==0.8.9.1,
|
|
||||||
any.binary-instances ==1.0.4,
|
|
||||||
any.binary-orphans ==1.0.4.1,
|
|
||||||
any.blaze-builder ==0.4.2.3,
|
|
||||||
any.brick ==2.1.1,
|
|
||||||
brick -demos,
|
|
||||||
any.bytestring ==0.11.5.3,
|
|
||||||
any.bz2 ==1.0.1.1,
|
|
||||||
bz2 -cross +with-bzlib,
|
|
||||||
any.bzip2-clib ==1.0.8,
|
|
||||||
any.c2hs ==0.28.8,
|
|
||||||
c2hs +base3 -regression,
|
|
||||||
any.cabal-install-parsers ==0.6.1.1,
|
|
||||||
any.cabal-plan ==0.7.3.0,
|
|
||||||
cabal-plan -_ -exe -license-report,
|
|
||||||
any.call-stack ==0.4.0,
|
|
||||||
any.case-insensitive ==1.2.1.0,
|
|
||||||
any.casing ==0.1.4.1,
|
|
||||||
any.chs-cabal ==0.1.1.1,
|
|
||||||
any.chs-deps ==0.1.0.0,
|
|
||||||
chs-deps -cross,
|
|
||||||
any.colour ==2.3.6,
|
|
||||||
any.comonad ==5.0.8,
|
|
||||||
comonad +containers +distributive +indexed-traversable,
|
|
||||||
any.composition-prelude ==3.0.0.2,
|
|
||||||
composition-prelude -development,
|
|
||||||
any.config-ini ==0.2.7.0,
|
|
||||||
config-ini -enable-doctests,
|
|
||||||
any.containers ==0.6.5.1,
|
|
||||||
any.contravariant ==1.5.5,
|
|
||||||
contravariant +semigroups +statevar +tagged,
|
|
||||||
any.cpphs ==1.20.9.1,
|
|
||||||
cpphs -old-locale,
|
|
||||||
any.cryptohash-sha1 ==0.11.101.0,
|
|
||||||
any.cryptohash-sha256 ==0.11.102.1,
|
|
||||||
cryptohash-sha256 -exe +use-cbits,
|
|
||||||
any.data-array-byte ==0.1.0.1,
|
|
||||||
any.data-clist ==0.2,
|
|
||||||
any.data-fix ==0.3.2,
|
|
||||||
any.deepseq ==1.4.4.0,
|
|
||||||
any.directory ==1.3.8.3,
|
|
||||||
directory -os-string,
|
|
||||||
any.disk-free-space ==0.1.0.1,
|
|
||||||
any.distributive ==0.6.2.1,
|
|
||||||
distributive +semigroups +tagged,
|
|
||||||
any.dlist ==1.0,
|
|
||||||
dlist -werror,
|
|
||||||
any.exceptions ==0.10.4,
|
|
||||||
any.file-uri ==0.1.0.0,
|
|
||||||
any.filepath ==1.4.101.0,
|
|
||||||
filepath -cpphs,
|
|
||||||
any.foldable1-classes-compat ==0.1,
|
|
||||||
foldable1-classes-compat +tagged,
|
|
||||||
any.free ==5.2,
|
|
||||||
any.fusion-plugin-types ==0.1.0,
|
|
||||||
any.generic-arbitrary ==0.2.2,
|
|
||||||
any.generically ==0.1.1,
|
|
||||||
any.ghc-boot-th ==8.10.7,
|
|
||||||
any.ghc-byteorder ==4.11.0.0.10,
|
|
||||||
any.ghc-prim ==0.6.1,
|
|
||||||
any.happy ==1.20.1.1,
|
|
||||||
any.hashable ==1.4.3.0,
|
|
||||||
hashable +integer-gmp -random-initial-seed,
|
|
||||||
any.haskell-lexer ==1.1.1,
|
|
||||||
any.haskus-utils-data ==1.4,
|
|
||||||
any.haskus-utils-types ==1.5.1,
|
|
||||||
any.haskus-utils-variant ==3.3,
|
|
||||||
any.heaps ==0.4,
|
|
||||||
any.hsc2hs ==0.68.8,
|
|
||||||
hsc2hs -in-ghc-tree,
|
|
||||||
any.hspec ==2.10.10,
|
|
||||||
any.hspec-core ==2.10.10,
|
|
||||||
any.hspec-discover ==2.10.10,
|
|
||||||
any.hspec-expectations ==0.8.2,
|
|
||||||
any.hspec-golden-aeson ==0.9.0.0,
|
|
||||||
any.http-io-streams ==0.1.7.0,
|
|
||||||
http-io-streams -brotli +fast-xor,
|
|
||||||
any.indexed-profunctors ==0.1.1.1,
|
|
||||||
any.indexed-traversable ==0.1.3,
|
|
||||||
any.indexed-traversable-instances ==0.1.1.2,
|
|
||||||
any.integer-conversion ==0.1.0.1,
|
|
||||||
any.integer-gmp ==1.0.3.0,
|
|
||||||
any.integer-logarithms ==1.0.3.1,
|
|
||||||
integer-logarithms -check-bounds +integer-gmp,
|
|
||||||
any.io-streams ==1.5.2.2,
|
|
||||||
io-streams +network -nointeractivetests +zlib,
|
|
||||||
any.language-c ==0.9.3,
|
|
||||||
language-c -allwarnings +iecfpextension +usebytestrings,
|
|
||||||
any.libarchive ==3.0.4.2,
|
|
||||||
libarchive -cross -low-memory +no-exe -system-libarchive,
|
|
||||||
any.libyaml-streamly ==0.2.2.1,
|
|
||||||
libyaml-streamly -no-unicode +system-libyaml,
|
|
||||||
any.lockfree-queue ==0.2.4,
|
|
||||||
any.lukko ==0.1.1.3,
|
|
||||||
lukko +ofd-locking,
|
|
||||||
any.lzma-static ==5.2.5.5,
|
|
||||||
any.megaparsec ==9.2.1,
|
|
||||||
megaparsec -dev,
|
|
||||||
any.microlens ==0.4.13.1,
|
|
||||||
any.microlens-mtl ==0.2.0.3,
|
|
||||||
any.microlens-th ==0.4.3.14,
|
|
||||||
any.mtl ==2.2.2,
|
|
||||||
any.mtl-compat ==0.2.2,
|
|
||||||
mtl-compat -two-point-one -two-point-two,
|
|
||||||
any.network ==3.1.4.0,
|
|
||||||
network -devel,
|
|
||||||
any.network-uri ==2.6.4.2,
|
|
||||||
any.openssl-streams ==1.2.3.0,
|
|
||||||
any.optics ==0.4.2.1,
|
|
||||||
any.optics-core ==0.4.1.1,
|
|
||||||
optics-core -explicit-generic-labels,
|
|
||||||
any.optics-extra ==0.4.2.1,
|
|
||||||
any.optics-th ==0.4.1,
|
|
||||||
any.optparse-applicative ==0.17.1.0,
|
|
||||||
optparse-applicative +process,
|
|
||||||
any.os-release ==1.0.2.1,
|
|
||||||
os-release -devel,
|
|
||||||
any.parsec ==3.1.17.0,
|
|
||||||
any.parser-combinators ==1.3.0,
|
|
||||||
parser-combinators -dev,
|
|
||||||
any.polyparse ==1.13,
|
|
||||||
any.pretty ==1.1.3.6,
|
|
||||||
any.pretty-terminal ==0.1.0.0,
|
|
||||||
any.primitive ==0.8.0.0,
|
|
||||||
any.process ==1.6.18.0,
|
|
||||||
any.profunctors ==5.6.2,
|
|
||||||
any.quickcheck-arbitrary-adt ==0.3.1.0,
|
|
||||||
any.quickcheck-io ==0.2.0,
|
|
||||||
any.random ==1.2.1.2,
|
|
||||||
any.recursion-schemes ==5.2.2.5,
|
|
||||||
recursion-schemes +template-haskell,
|
|
||||||
any.regex-base ==0.94.0.2,
|
|
||||||
any.regex-posix ==0.96.0.1,
|
|
||||||
regex-posix -_regex-posix-clib,
|
|
||||||
any.resourcet ==1.2.6,
|
|
||||||
any.retry ==0.9.3.1,
|
|
||||||
retry -lib-werror,
|
|
||||||
any.rts ==1.0.1,
|
|
||||||
any.safe ==0.3.21,
|
|
||||||
any.safe-exceptions ==0.1.7.4,
|
|
||||||
any.scientific ==0.3.7.0,
|
|
||||||
scientific -bytestring-builder -integer-simple,
|
|
||||||
any.semialign ==1.3,
|
|
||||||
semialign +semigroupoids,
|
|
||||||
any.semigroupoids ==6.0.0.1,
|
|
||||||
semigroupoids +comonad +containers +contravariant +distributive +tagged +unordered-containers,
|
|
||||||
any.setenv ==0.1.1.3,
|
|
||||||
any.split ==0.2.5,
|
|
||||||
any.splitmix ==0.1.0.5,
|
|
||||||
splitmix -optimised-mixer,
|
|
||||||
any.stm ==2.5.0.1,
|
|
||||||
any.streamly ==0.8.3,
|
|
||||||
streamly -debug -dev -fusion-plugin -has-llvm -inspection -limit-build-mem -no-fusion +opt -streamk -streamly-core -use-c-malloc +use-unliftio,
|
|
||||||
any.strict ==0.5,
|
|
||||||
any.strict-base ==0.4.0.0,
|
|
||||||
any.tagged ==0.8.8,
|
|
||||||
tagged +deepseq +transformers,
|
|
||||||
any.tagsoup ==0.14.8,
|
|
||||||
any.tar ==0.6.0.0,
|
|
||||||
any.tasty ==1.5,
|
|
||||||
tasty +unix,
|
|
||||||
any.tasty-hunit ==0.10.1,
|
|
||||||
any.template-haskell ==2.16.0.0,
|
|
||||||
any.temporary ==1.3,
|
|
||||||
any.terminal-progress-bar ==0.4.2,
|
|
||||||
any.terminal-size ==0.3.4,
|
|
||||||
any.terminfo ==0.4.1.4,
|
|
||||||
any.text ==2.0.2,
|
|
||||||
text -developer +simdutf,
|
|
||||||
any.text-binary ==0.2.1.1,
|
|
||||||
any.text-iso8601 ==0.1,
|
|
||||||
any.text-short ==0.1.5,
|
|
||||||
text-short -asserts,
|
|
||||||
any.text-zipper ==0.13,
|
|
||||||
any.tf-random ==0.5,
|
|
||||||
any.th-abstraction ==0.6.0.0,
|
|
||||||
any.th-compat ==0.1.4,
|
|
||||||
any.th-lift ==0.8.4,
|
|
||||||
any.th-lift-instances ==0.1.20,
|
|
||||||
any.these ==1.2,
|
|
||||||
any.time ==1.9.3,
|
|
||||||
any.time-compat ==1.9.6.1,
|
|
||||||
time-compat -old-locale,
|
|
||||||
any.transformers ==0.5.6.2,
|
|
||||||
any.transformers-base ==0.4.6,
|
|
||||||
transformers-base +orphaninstances,
|
|
||||||
any.transformers-compat ==0.7.2,
|
|
||||||
transformers-compat -five +five-three -four +generic-deriving +mtl -three -two,
|
|
||||||
any.unicode-data ==0.3.1,
|
|
||||||
unicode-data -ucd2haskell,
|
|
||||||
any.unix ==2.8.5.0,
|
|
||||||
unix -os-string,
|
|
||||||
any.unix-bytestring ==0.3.7.8,
|
|
||||||
any.unix-compat ==0.7.1,
|
|
||||||
unix-compat -old-time,
|
|
||||||
any.unliftio-core ==0.2.1.0,
|
|
||||||
any.unordered-containers ==0.2.20,
|
|
||||||
unordered-containers -debug,
|
|
||||||
any.uri-bytestring ==0.3.3.1,
|
|
||||||
uri-bytestring -lib-werror,
|
|
||||||
any.utf8-string ==1.0.2,
|
|
||||||
any.uuid-types ==1.0.5.1,
|
|
||||||
any.vector ==0.13.1.0,
|
|
||||||
vector +boundschecks -internalchecks -unsafechecks -wall,
|
|
||||||
any.vector-binary-instances ==0.2.5.2,
|
|
||||||
any.vector-stream ==0.1.0.1,
|
|
||||||
any.versions ==6.0.6,
|
|
||||||
any.vty ==6.2,
|
|
||||||
any.vty-crossplatform ==0.4.0.0,
|
|
||||||
vty-crossplatform -demos,
|
|
||||||
any.vty-unix ==0.2.0.0,
|
|
||||||
any.witherable ==0.4.2,
|
|
||||||
any.word-wrap ==0.5,
|
|
||||||
any.word8 ==0.1.3,
|
|
||||||
any.xor ==0.0.1.2,
|
|
||||||
any.yaml-streamly ==0.12.4,
|
|
||||||
yaml-streamly +no-examples +no-exe,
|
|
||||||
any.zlib ==0.6.3.0,
|
|
||||||
zlib -bundled-c-zlib -non-blocking-ffi -pkg-config,
|
|
||||||
any.zlib-bindings ==0.1.1.5
|
|
||||||
index-state: hackage.haskell.org 2024-03-13T09:43:35Z
|
|
@ -1,60 +0,0 @@
|
|||||||
packages: ./ghcup.cabal
|
|
||||||
|
|
||||||
optional-packages: ./vendored/*/*.cabal
|
|
||||||
|
|
||||||
if impl(ghc < 9.0)
|
|
||||||
package ghcup
|
|
||||||
flags: +tui -tar
|
|
||||||
else
|
|
||||||
package ghcup
|
|
||||||
flags: +tui +tar
|
|
||||||
|
|
||||||
constraints: http-io-streams -brotli,
|
|
||||||
any.aeson >= 2.0.1.0,
|
|
||||||
any.hsc2hs ==0.68.8,
|
|
||||||
bzlib-conduit >= 0.3.0.3,
|
|
||||||
bz2 >= 1.0.1.1,
|
|
||||||
bzlib >= 0.5.2.0,
|
|
||||||
directory >= 1.3.8.3,
|
|
||||||
filepath == 1.4.101.0 || == 1.4.300.1 || >= 1.5.2.0
|
|
||||||
|
|
||||||
if os(mingw32)
|
|
||||||
constraints: zlib +bundled-c-zlib,
|
|
||||||
lzma +static,
|
|
||||||
text -simdutf,
|
|
||||||
vty-windows >=0.2.0.2
|
|
||||||
|
|
||||||
if impl(ghc >= 9.4)
|
|
||||||
constraints: language-c >= 0.9.3
|
|
||||||
|
|
||||||
|
|
||||||
source-repository-package
|
|
||||||
type: git
|
|
||||||
location: https://github.com/haskell/tar.git
|
|
||||||
tag: d94a988be4311b830149a9f8fc16739927e5fc1c
|
|
||||||
|
|
||||||
source-repository-package
|
|
||||||
type: git
|
|
||||||
location: https://github.com/hasufell/uri-bytestring.git
|
|
||||||
tag: 4fb5ed14b500c192e6e7a97f6b2b1eb478806001
|
|
||||||
|
|
||||||
package libarchive
|
|
||||||
flags: -system-libarchive
|
|
||||||
|
|
||||||
package aeson-pretty
|
|
||||||
flags: +lib-only
|
|
||||||
|
|
||||||
package cabal-plan
|
|
||||||
flags: -exe
|
|
||||||
|
|
||||||
package aeson
|
|
||||||
flags: +ordered-keymap
|
|
||||||
|
|
||||||
package streamly
|
|
||||||
flags: +use-unliftio
|
|
||||||
|
|
||||||
package *
|
|
||||||
test-show-details: direct
|
|
||||||
|
|
||||||
allow-newer: cabal-install-parsers:tar, streamly:Win32
|
|
||||||
|
|
@ -1,245 +0,0 @@
|
|||||||
active-repositories: hackage.haskell.org:merge
|
|
||||||
constraints: any.Cabal ==3.10.2.0 || ==3.10.2.1,
|
|
||||||
any.Cabal-syntax ==3.10.1.0 || ==3.10.2.0,
|
|
||||||
any.HUnit ==1.6.2.0,
|
|
||||||
any.OneTuple ==0.4.1.1,
|
|
||||||
any.QuickCheck ==2.14.3,
|
|
||||||
QuickCheck -old-random +templatehaskell,
|
|
||||||
any.StateVar ==1.2.2,
|
|
||||||
any.Win32 ==2.6.2.1 || ==2.13.4.0,
|
|
||||||
any.abstract-deque ==0.3,
|
|
||||||
abstract-deque -usecas,
|
|
||||||
any.aeson ==2.2.1.0,
|
|
||||||
aeson +ordered-keymap,
|
|
||||||
any.aeson-pretty ==0.8.10,
|
|
||||||
aeson-pretty +lib-only,
|
|
||||||
any.alex ==3.5.1.0,
|
|
||||||
any.ansi-terminal ==1.0.2,
|
|
||||||
ansi-terminal -example,
|
|
||||||
any.ansi-terminal-types ==0.11.5,
|
|
||||||
any.ansi-wl-pprint ==0.6.9,
|
|
||||||
ansi-wl-pprint -example,
|
|
||||||
any.array ==0.5.4.0,
|
|
||||||
any.assoc ==1.1,
|
|
||||||
assoc +tagged,
|
|
||||||
any.async ==2.2.5,
|
|
||||||
async -bench,
|
|
||||||
any.atomic-primops ==0.8.5,
|
|
||||||
atomic-primops -debug,
|
|
||||||
any.attoparsec ==0.14.4,
|
|
||||||
attoparsec -developer,
|
|
||||||
any.base ==4.14.3.0,
|
|
||||||
any.base-compat ==0.13.1,
|
|
||||||
any.base-orphans ==0.9.1,
|
|
||||||
any.base16-bytestring ==1.0.2.0,
|
|
||||||
any.bifunctors ==5.6.1,
|
|
||||||
bifunctors +tagged,
|
|
||||||
any.bimap ==0.5.0,
|
|
||||||
any.binary ==0.8.8.0 || ==0.8.9.1,
|
|
||||||
any.binary-instances ==1.0.4,
|
|
||||||
any.binary-orphans ==1.0.4.1,
|
|
||||||
any.blaze-builder ==0.4.2.3,
|
|
||||||
any.brick ==2.1.1,
|
|
||||||
brick -demos,
|
|
||||||
any.bytestring ==0.10.12.0 || ==0.11.5.3,
|
|
||||||
any.bz2 ==1.0.1.1,
|
|
||||||
bz2 -cross +with-bzlib,
|
|
||||||
any.bzip2-clib ==1.0.8,
|
|
||||||
any.c2hs ==0.28.8,
|
|
||||||
c2hs +base3 -regression,
|
|
||||||
any.cabal-install-parsers ==0.6.1.1,
|
|
||||||
any.cabal-plan ==0.7.3.0,
|
|
||||||
cabal-plan -_ -exe -license-report,
|
|
||||||
any.call-stack ==0.4.0,
|
|
||||||
any.case-insensitive ==1.2.1.0,
|
|
||||||
any.casing ==0.1.4.1,
|
|
||||||
any.chs-cabal ==0.1.1.1,
|
|
||||||
any.chs-deps ==0.1.0.0,
|
|
||||||
chs-deps -cross,
|
|
||||||
any.colour ==2.3.6,
|
|
||||||
any.comonad ==5.0.8,
|
|
||||||
comonad +containers +distributive +indexed-traversable,
|
|
||||||
any.composition-prelude ==3.0.0.2,
|
|
||||||
composition-prelude -development,
|
|
||||||
any.config-ini ==0.2.7.0,
|
|
||||||
config-ini -enable-doctests,
|
|
||||||
any.containers ==0.6.5.1,
|
|
||||||
any.contravariant ==1.5.5,
|
|
||||||
contravariant +semigroups +statevar +tagged,
|
|
||||||
any.cpphs ==1.20.9.1,
|
|
||||||
cpphs -old-locale,
|
|
||||||
any.cryptohash-sha256 ==0.11.102.1,
|
|
||||||
cryptohash-sha256 -exe +use-cbits,
|
|
||||||
any.data-array-byte ==0.1.0.1,
|
|
||||||
any.data-clist ==0.2,
|
|
||||||
any.data-fix ==0.3.2,
|
|
||||||
any.deepseq ==1.4.4.0,
|
|
||||||
any.directory ==1.3.6.0 || ==1.3.8.3,
|
|
||||||
directory -os-string,
|
|
||||||
any.disk-free-space ==0.1.0.1,
|
|
||||||
any.distributive ==0.6.2.1,
|
|
||||||
distributive +semigroups +tagged,
|
|
||||||
any.dlist ==1.0,
|
|
||||||
dlist -werror,
|
|
||||||
any.exceptions ==0.10.4,
|
|
||||||
any.file-uri ==0.1.0.0,
|
|
||||||
any.filepath ==1.4.2.1 || ==1.4.101.0,
|
|
||||||
filepath -cpphs,
|
|
||||||
any.foldable1-classes-compat ==0.1,
|
|
||||||
foldable1-classes-compat +tagged,
|
|
||||||
any.free ==5.2,
|
|
||||||
any.fusion-plugin-types ==0.1.0,
|
|
||||||
any.generic-arbitrary ==0.2.2,
|
|
||||||
any.generically ==0.1.1,
|
|
||||||
any.ghc-boot-th ==8.10.7,
|
|
||||||
any.ghc-prim ==0.6.1,
|
|
||||||
any.happy ==1.20.1.1,
|
|
||||||
any.hashable ==1.4.3.0,
|
|
||||||
hashable +integer-gmp -random-initial-seed,
|
|
||||||
any.haskell-lexer ==1.1.1,
|
|
||||||
any.haskus-utils-data ==1.4,
|
|
||||||
any.haskus-utils-types ==1.5.1,
|
|
||||||
any.haskus-utils-variant ==3.3,
|
|
||||||
any.heaps ==0.4,
|
|
||||||
any.hsc2hs ==0.68.8,
|
|
||||||
hsc2hs -in-ghc-tree,
|
|
||||||
any.hspec ==2.10.10,
|
|
||||||
any.hspec-core ==2.10.10,
|
|
||||||
any.hspec-discover ==2.10.10,
|
|
||||||
any.hspec-expectations ==0.8.2,
|
|
||||||
any.hspec-golden-aeson ==0.9.0.0,
|
|
||||||
any.indexed-profunctors ==0.1.1.1,
|
|
||||||
any.indexed-traversable ==0.1.3,
|
|
||||||
any.indexed-traversable-instances ==0.1.1.2,
|
|
||||||
any.integer-conversion ==0.1.0.1,
|
|
||||||
any.integer-gmp ==1.0.3.0,
|
|
||||||
any.integer-logarithms ==1.0.3.1,
|
|
||||||
integer-logarithms -check-bounds +integer-gmp,
|
|
||||||
any.language-c ==0.9.3,
|
|
||||||
language-c -allwarnings +iecfpextension +usebytestrings,
|
|
||||||
any.libarchive ==3.0.4.2,
|
|
||||||
libarchive -cross -low-memory +no-exe -system-libarchive,
|
|
||||||
any.libyaml-clib ==0.2.5,
|
|
||||||
any.libyaml-streamly ==0.2.2.1,
|
|
||||||
libyaml-streamly -no-unicode -system-libyaml,
|
|
||||||
any.lockfree-queue ==0.2.4,
|
|
||||||
any.lukko ==0.1.1.3,
|
|
||||||
lukko +ofd-locking,
|
|
||||||
any.lzma-static ==5.2.5.5,
|
|
||||||
any.megaparsec ==9.2.1,
|
|
||||||
megaparsec -dev,
|
|
||||||
any.microlens ==0.4.13.1,
|
|
||||||
any.microlens-mtl ==0.2.0.3,
|
|
||||||
any.microlens-th ==0.4.3.14,
|
|
||||||
any.mtl ==2.2.2,
|
|
||||||
any.mtl-compat ==0.2.2,
|
|
||||||
mtl-compat -two-point-one -two-point-two,
|
|
||||||
any.network ==3.1.4.0,
|
|
||||||
network -devel,
|
|
||||||
any.network-uri ==2.6.4.2,
|
|
||||||
any.optics ==0.4.2.1,
|
|
||||||
any.optics-core ==0.4.1.1,
|
|
||||||
optics-core -explicit-generic-labels,
|
|
||||||
any.optics-extra ==0.4.2.1,
|
|
||||||
any.optics-th ==0.4.1,
|
|
||||||
any.optparse-applicative ==0.17.1.0,
|
|
||||||
optparse-applicative +process,
|
|
||||||
any.os-release ==1.0.2.1,
|
|
||||||
os-release -devel,
|
|
||||||
any.parsec ==3.1.14.0 || ==3.1.17.0,
|
|
||||||
any.parser-combinators ==1.3.0,
|
|
||||||
parser-combinators -dev,
|
|
||||||
any.polyparse ==1.13,
|
|
||||||
any.pretty ==1.1.3.6,
|
|
||||||
any.pretty-terminal ==0.1.0.0,
|
|
||||||
any.primitive ==0.8.0.0,
|
|
||||||
any.process ==1.6.13.2 || ==1.6.18.0,
|
|
||||||
any.profunctors ==5.6.2,
|
|
||||||
any.quickcheck-arbitrary-adt ==0.3.1.0,
|
|
||||||
any.quickcheck-io ==0.2.0,
|
|
||||||
any.random ==1.2.1.2,
|
|
||||||
any.recursion-schemes ==5.2.2.5,
|
|
||||||
recursion-schemes +template-haskell,
|
|
||||||
any.regex-base ==0.94.0.2,
|
|
||||||
any.regex-posix ==0.96.0.1,
|
|
||||||
regex-posix -_regex-posix-clib,
|
|
||||||
any.regex-posix-clib ==2.7,
|
|
||||||
any.resourcet ==1.2.6,
|
|
||||||
any.retry ==0.9.3.1,
|
|
||||||
retry -lib-werror,
|
|
||||||
any.rts ==1.0.1,
|
|
||||||
any.safe ==0.3.21,
|
|
||||||
any.safe-exceptions ==0.1.7.4,
|
|
||||||
any.scientific ==0.3.7.0,
|
|
||||||
scientific -bytestring-builder -integer-simple,
|
|
||||||
any.semialign ==1.3,
|
|
||||||
semialign +semigroupoids,
|
|
||||||
any.semigroupoids ==6.0.0.1,
|
|
||||||
semigroupoids +comonad +containers +contravariant +distributive +tagged +unordered-containers,
|
|
||||||
any.setenv ==0.1.1.3,
|
|
||||||
any.split ==0.2.5,
|
|
||||||
any.splitmix ==0.1.0.5,
|
|
||||||
splitmix -optimised-mixer,
|
|
||||||
any.stm ==2.5.0.1,
|
|
||||||
any.streamly ==0.8.3,
|
|
||||||
streamly -debug -dev -fusion-plugin -has-llvm -inspection -limit-build-mem -no-fusion +opt -streamk -streamly-core -use-c-malloc +use-unliftio,
|
|
||||||
any.strict ==0.5,
|
|
||||||
any.strict-base ==0.4.0.0,
|
|
||||||
any.tagged ==0.8.8,
|
|
||||||
tagged +deepseq +transformers,
|
|
||||||
any.tagsoup ==0.14.8,
|
|
||||||
any.tar ==0.6.0.0,
|
|
||||||
any.tasty ==1.5,
|
|
||||||
tasty +unix,
|
|
||||||
any.tasty-hunit ==0.10.1,
|
|
||||||
any.template-haskell ==2.16.0.0,
|
|
||||||
any.temporary ==1.3,
|
|
||||||
any.text ==1.2.4.1 || ==2.0.2,
|
|
||||||
text -developer -simdutf,
|
|
||||||
any.text-binary ==0.2.1.1,
|
|
||||||
any.text-iso8601 ==0.1,
|
|
||||||
any.text-short ==0.1.5,
|
|
||||||
text-short -asserts,
|
|
||||||
any.text-zipper ==0.13,
|
|
||||||
any.tf-random ==0.5,
|
|
||||||
any.th-abstraction ==0.6.0.0,
|
|
||||||
any.th-compat ==0.1.4,
|
|
||||||
any.th-lift ==0.8.4,
|
|
||||||
any.th-lift-instances ==0.1.20,
|
|
||||||
any.these ==1.2,
|
|
||||||
any.time ==1.9.3 || ==1.11.1.2,
|
|
||||||
any.time-compat ==1.9.6.1,
|
|
||||||
time-compat -old-locale,
|
|
||||||
any.transformers ==0.5.6.2,
|
|
||||||
any.transformers-base ==0.4.6,
|
|
||||||
transformers-base +orphaninstances,
|
|
||||||
any.transformers-compat ==0.7.2,
|
|
||||||
transformers-compat -five +five-three -four +generic-deriving +mtl -three -two,
|
|
||||||
any.unicode-data ==0.3.1,
|
|
||||||
unicode-data -ucd2haskell,
|
|
||||||
any.unix-compat ==0.7.1,
|
|
||||||
unix-compat -old-time,
|
|
||||||
any.unliftio-core ==0.2.1.0,
|
|
||||||
any.unordered-containers ==0.2.20,
|
|
||||||
unordered-containers -debug,
|
|
||||||
any.uri-bytestring ==0.3.3.1,
|
|
||||||
uri-bytestring -lib-werror,
|
|
||||||
any.utf8-string ==1.0.2,
|
|
||||||
any.uuid-types ==1.0.5.1,
|
|
||||||
any.vector ==0.13.1.0,
|
|
||||||
vector +boundschecks -internalchecks -unsafechecks -wall,
|
|
||||||
any.vector-binary-instances ==0.2.5.2,
|
|
||||||
any.vector-stream ==0.1.0.1,
|
|
||||||
any.versions ==6.0.6,
|
|
||||||
any.vty ==6.2,
|
|
||||||
any.vty-crossplatform ==0.4.0.0,
|
|
||||||
vty-crossplatform -demos,
|
|
||||||
any.vty-windows ==0.2.0.2,
|
|
||||||
any.witherable ==0.4.2,
|
|
||||||
any.word-wrap ==0.5,
|
|
||||||
any.word8 ==0.1.3,
|
|
||||||
any.yaml-streamly ==0.12.4,
|
|
||||||
yaml-streamly +no-examples +no-exe,
|
|
||||||
any.zlib ==0.6.3.0,
|
|
||||||
zlib +bundled-c-zlib -non-blocking-ffi -pkg-config
|
|
||||||
index-state: hackage.haskell.org 2024-03-15T23:51:46Z
|
|
@ -1,8 +0,0 @@
|
|||||||
if os(mingw32)
|
|
||||||
import: cabal.ghc8107.Win32.project
|
|
||||||
import: cabal.ghc8107.Win32.project.freeze
|
|
||||||
else
|
|
||||||
import: cabal.ghc8107.Unix.project
|
|
||||||
import: cabal.ghc8107.Unix.project.freeze
|
|
||||||
|
|
||||||
with-compiler: ghc-8.10.7
|
|
33
cabal.ghc901.project
Normal file
33
cabal.ghc901.project
Normal file
@ -0,0 +1,33 @@
|
|||||||
|
packages: ./ghcup.cabal
|
||||||
|
|
||||||
|
optional-packages: ./vendored/*/*.cabal
|
||||||
|
|
||||||
|
optimization: 2
|
||||||
|
|
||||||
|
package ghcup
|
||||||
|
tests: True
|
||||||
|
flags: +tui
|
||||||
|
|
||||||
|
source-repository-package
|
||||||
|
type: git
|
||||||
|
location: https://github.com/jtdaugherty/brick.git
|
||||||
|
tag: b3b96cfe66dfd398d338e3feb2b6855e66a35190
|
||||||
|
|
||||||
|
source-repository-package
|
||||||
|
type: git
|
||||||
|
location: https://github.com/Bodigrim/tar
|
||||||
|
tag: ac197ec7ea4838dc2b4e22b9b888b080cedf29cf
|
||||||
|
|
||||||
|
source-repository-package
|
||||||
|
type: git
|
||||||
|
location: https://github.com/bgamari/terminal-size
|
||||||
|
tag: 34ea816bd63f75f800eedac12c6908c6f3736036
|
||||||
|
|
||||||
|
constraints: http-io-streams -brotli
|
||||||
|
|
||||||
|
package libarchive
|
||||||
|
flags: -system-libarchive
|
||||||
|
|
||||||
|
allow-newer: base, ghc-prim, template-haskell, language-c
|
||||||
|
|
||||||
|
with-compiler: ghc-9.0.1
|
264
cabal.ghc901.project.freeze
Normal file
264
cabal.ghc901.project.freeze
Normal file
@ -0,0 +1,264 @@
|
|||||||
|
active-repositories: hackage.haskell.org:merge
|
||||||
|
constraints: any.Cabal ==3.4.0.0,
|
||||||
|
any.HUnit ==1.6.2.0,
|
||||||
|
any.HsOpenSSL ==0.11.7,
|
||||||
|
HsOpenSSL -fast-bignum -homebrew-openssl -macports-openssl -use-pkg-config,
|
||||||
|
any.QuickCheck ==2.14.2,
|
||||||
|
QuickCheck -old-random +templatehaskell,
|
||||||
|
any.StateVar ==1.2.2,
|
||||||
|
any.aeson ==1.5.6.0,
|
||||||
|
aeson -bytestring-builder -cffi -developer -fast,
|
||||||
|
any.aeson-pretty ==0.8.8,
|
||||||
|
aeson-pretty -lib-only,
|
||||||
|
any.alex ==3.2.6,
|
||||||
|
alex +small_base,
|
||||||
|
any.ansi-terminal ==0.11,
|
||||||
|
ansi-terminal -example,
|
||||||
|
any.ansi-wl-pprint ==0.6.9,
|
||||||
|
ansi-wl-pprint -example,
|
||||||
|
any.array ==0.5.4.0,
|
||||||
|
any.assoc ==1.0.2,
|
||||||
|
any.async ==2.2.3,
|
||||||
|
async -bench,
|
||||||
|
any.attoparsec ==0.13.2.5,
|
||||||
|
attoparsec -developer,
|
||||||
|
any.auto-update ==0.1.6,
|
||||||
|
any.base ==4.15.0.0,
|
||||||
|
any.base-compat ==0.11.2,
|
||||||
|
any.base-compat-batteries ==0.11.2,
|
||||||
|
any.base-orphans ==0.8.4,
|
||||||
|
any.base16-bytestring ==1.0.1.0,
|
||||||
|
any.base64-bytestring ==1.1.0.0,
|
||||||
|
any.bifunctors ==5.5.11,
|
||||||
|
bifunctors +semigroups +tagged,
|
||||||
|
any.binary ==0.8.8.0,
|
||||||
|
any.bindings-DSL ==1.0.25,
|
||||||
|
any.blaze-builder ==0.4.2.1,
|
||||||
|
any.brick ==0.63,
|
||||||
|
brick -demos,
|
||||||
|
any.bytestring ==0.10.12.1,
|
||||||
|
any.bz2 ==1.0.1.0,
|
||||||
|
bz2 -cross +with-bzlib,
|
||||||
|
any.bzlib-conduit ==0.3.0.2,
|
||||||
|
any.c2hs ==0.28.8,
|
||||||
|
c2hs +base3 -regression,
|
||||||
|
any.call-stack ==0.4.0,
|
||||||
|
any.case-insensitive ==1.2.1.0,
|
||||||
|
any.casing ==0.1.4.1,
|
||||||
|
any.cereal ==0.5.8.1,
|
||||||
|
cereal -bytestring-builder,
|
||||||
|
any.chs-cabal ==0.1.1.0,
|
||||||
|
any.chs-deps ==0.1.0.0,
|
||||||
|
chs-deps -cross,
|
||||||
|
any.clock ==0.8.2,
|
||||||
|
clock -llvm,
|
||||||
|
any.cmdargs ==0.10.21,
|
||||||
|
cmdargs +quotation -testprog,
|
||||||
|
any.colour ==2.3.6,
|
||||||
|
any.comonad ==5.0.8,
|
||||||
|
comonad +containers +distributive +indexed-traversable,
|
||||||
|
any.composition-prelude ==3.0.0.2,
|
||||||
|
composition-prelude -development,
|
||||||
|
any.concurrent-output ==1.10.12,
|
||||||
|
any.conduit ==1.3.4.1,
|
||||||
|
any.conduit-extra ==1.3.5,
|
||||||
|
any.conduit-zstd ==0.0.2.0,
|
||||||
|
any.config-ini ==0.2.4.0,
|
||||||
|
config-ini -enable-doctests,
|
||||||
|
any.containers ==0.6.4.1,
|
||||||
|
any.contravariant ==1.5.4,
|
||||||
|
contravariant +semigroups +statevar +tagged,
|
||||||
|
any.cpphs ==1.20.9.1,
|
||||||
|
cpphs -old-locale,
|
||||||
|
any.cryptohash-sha1 ==0.11.100.1,
|
||||||
|
any.cryptohash-sha256 ==0.11.102.0,
|
||||||
|
cryptohash-sha256 -exe +use-cbits,
|
||||||
|
any.data-clist ==0.1.2.3,
|
||||||
|
any.data-default-class ==0.1.2.0,
|
||||||
|
any.data-fix ==0.3.1,
|
||||||
|
any.deepseq ==1.4.5.0,
|
||||||
|
any.digest ==0.0.1.3,
|
||||||
|
digest -bytestring-in-base,
|
||||||
|
any.directory ==1.3.6.1,
|
||||||
|
any.disk-free-space ==0.1.0.1,
|
||||||
|
any.distributive ==0.6.2.1,
|
||||||
|
distributive +semigroups +tagged,
|
||||||
|
any.dlist ==1.0,
|
||||||
|
dlist -werror,
|
||||||
|
any.easy-file ==0.2.2,
|
||||||
|
any.errors ==2.3.0,
|
||||||
|
any.exceptions ==0.10.4,
|
||||||
|
any.extra ==1.7.9,
|
||||||
|
any.fast-logger ==3.0.5,
|
||||||
|
any.filepath ==1.4.2.1,
|
||||||
|
any.free ==5.1.7,
|
||||||
|
any.generic-arbitrary ==0.1.0,
|
||||||
|
any.generics-sop ==0.5.1.1,
|
||||||
|
any.ghc-bignum ==1.0,
|
||||||
|
any.ghc-boot-th ==9.0.1,
|
||||||
|
any.ghc-byteorder ==4.11.0.0.10,
|
||||||
|
any.ghc-prim ==0.7.0,
|
||||||
|
any.happy ==1.20.0,
|
||||||
|
any.hashable ==1.3.2.0,
|
||||||
|
hashable +integer-gmp -random-initial-seed,
|
||||||
|
any.haskell-src-exts ==1.23.1,
|
||||||
|
any.haskell-src-meta ==0.8.7,
|
||||||
|
any.haskus-utils-data ==1.4,
|
||||||
|
any.haskus-utils-types ==1.5.1,
|
||||||
|
any.haskus-utils-variant ==3.1,
|
||||||
|
any.hpath-filepath ==0.10.4,
|
||||||
|
any.hpath-posix ==0.13.3,
|
||||||
|
any.hsc2hs ==0.68.7,
|
||||||
|
hsc2hs -in-ghc-tree,
|
||||||
|
any.hspec ==2.7.10,
|
||||||
|
any.hspec-core ==2.7.10,
|
||||||
|
any.hspec-discover ==2.7.10 || ==2.8.2,
|
||||||
|
any.hspec-expectations ==0.8.2,
|
||||||
|
any.hspec-golden-aeson ==0.9.0.0,
|
||||||
|
any.http-io-streams ==0.1.6.0,
|
||||||
|
http-io-streams -brotli +fast-xor,
|
||||||
|
any.indexed-profunctors ==0.1.1,
|
||||||
|
any.indexed-traversable ==0.1.1,
|
||||||
|
any.indexed-traversable-instances ==0.1,
|
||||||
|
any.integer-logarithms ==1.0.3.1,
|
||||||
|
integer-logarithms -check-bounds +integer-gmp,
|
||||||
|
any.io-streams ==1.5.2.1,
|
||||||
|
io-streams +network -nointeractivetests +zlib,
|
||||||
|
any.language-c ==0.9.0.1,
|
||||||
|
language-c -allwarnings +iecfpextension +usebytestrings,
|
||||||
|
any.libarchive ==3.0.2.2,
|
||||||
|
libarchive -cross -low-memory -system-libarchive,
|
||||||
|
any.libyaml ==0.1.2,
|
||||||
|
libyaml -no-unicode -system-libyaml,
|
||||||
|
any.lifted-base ==0.2.3.12,
|
||||||
|
any.lzma-static ==5.2.5.4,
|
||||||
|
any.megaparsec ==9.0.1,
|
||||||
|
megaparsec -dev,
|
||||||
|
any.microlens ==0.4.12.0,
|
||||||
|
any.microlens-mtl ==0.2.0.1,
|
||||||
|
any.microlens-th ==0.4.3.10,
|
||||||
|
any.monad-control ==1.0.3,
|
||||||
|
any.monad-logger ==0.3.36,
|
||||||
|
monad-logger +template_haskell,
|
||||||
|
any.monad-loops ==0.4.3,
|
||||||
|
monad-loops +base4,
|
||||||
|
any.mono-traversable ==1.0.15.1,
|
||||||
|
any.mtl ==2.2.2,
|
||||||
|
any.network ==3.1.2.2,
|
||||||
|
network -devel,
|
||||||
|
any.network-uri ==2.6.4.1,
|
||||||
|
any.old-locale ==1.0.0.7,
|
||||||
|
any.old-time ==1.1.0.3,
|
||||||
|
any.openssl-streams ==1.2.3.0,
|
||||||
|
any.optics ==0.4,
|
||||||
|
any.optics-core ==0.4,
|
||||||
|
optics-core -explicit-generic-labels,
|
||||||
|
any.optics-extra ==0.4,
|
||||||
|
any.optics-th ==0.4,
|
||||||
|
any.optics-vl ==0.2.1,
|
||||||
|
any.optparse-applicative ==0.16.1.0,
|
||||||
|
optparse-applicative +process,
|
||||||
|
any.os-release ==1.0.2,
|
||||||
|
os-release -devel,
|
||||||
|
any.parallel ==3.2.2.0,
|
||||||
|
any.parsec ==3.1.14.0,
|
||||||
|
any.parser-combinators ==1.3.0,
|
||||||
|
parser-combinators -dev,
|
||||||
|
any.polyparse ==1.13,
|
||||||
|
any.pretty ==1.1.3.6,
|
||||||
|
any.pretty-terminal ==0.1.0.0,
|
||||||
|
any.primitive ==0.7.1.0,
|
||||||
|
any.process ==1.6.11.0,
|
||||||
|
any.profunctors ==5.6.2,
|
||||||
|
any.quickcheck-arbitrary-adt ==0.3.1.0,
|
||||||
|
any.quickcheck-io ==0.2.0,
|
||||||
|
any.random ==1.2.0,
|
||||||
|
any.recursion-schemes ==5.2.2.1,
|
||||||
|
recursion-schemes +template-haskell,
|
||||||
|
any.regex-base ==0.94.0.1,
|
||||||
|
any.regex-posix ==0.96.0.1,
|
||||||
|
regex-posix -_regex-posix-clib,
|
||||||
|
any.resourcet ==1.2.4.2,
|
||||||
|
any.rts ==1.0,
|
||||||
|
any.safe ==0.3.19,
|
||||||
|
any.safe-exceptions ==0.1.7.2,
|
||||||
|
any.scientific ==0.3.7.0,
|
||||||
|
scientific -bytestring-builder -integer-simple,
|
||||||
|
any.semigroupoids ==5.3.5,
|
||||||
|
semigroupoids +comonad +containers +contravariant +distributive +tagged +unordered-containers,
|
||||||
|
any.setenv ==0.1.1.3,
|
||||||
|
any.sop-core ==0.5.0.1,
|
||||||
|
any.split ==0.2.3.4,
|
||||||
|
any.splitmix ==0.1.0.3,
|
||||||
|
splitmix -optimised-mixer,
|
||||||
|
any.stm ==2.5.0.0,
|
||||||
|
any.stm-chans ==3.0.0.4,
|
||||||
|
any.streaming-commons ==0.2.2.1,
|
||||||
|
streaming-commons -use-bytestring-builder,
|
||||||
|
any.strict ==0.4.0.1,
|
||||||
|
strict +assoc,
|
||||||
|
any.strict-base ==0.4.0.0,
|
||||||
|
any.string-interpolate ==0.3.1.1,
|
||||||
|
string-interpolate -bytestring-builder -extended-benchmarks -text-builder,
|
||||||
|
any.syb ==0.7.2.1,
|
||||||
|
any.tagged ==0.8.6.1,
|
||||||
|
tagged +deepseq +transformers,
|
||||||
|
any.tar ==0.6.0.0,
|
||||||
|
any.template-haskell ==2.17.0.0,
|
||||||
|
any.temporary ==1.3,
|
||||||
|
any.terminal-progress-bar ==0.4.1,
|
||||||
|
any.terminal-size ==0.3.2.1,
|
||||||
|
any.terminfo ==0.4.1.4,
|
||||||
|
any.text ==1.2.4.1,
|
||||||
|
any.text-conversions ==0.3.1,
|
||||||
|
any.text-zipper ==0.11,
|
||||||
|
any.tf-random ==0.5,
|
||||||
|
any.th-abstraction ==0.4.2.0,
|
||||||
|
any.th-compat ==0.1.2,
|
||||||
|
any.th-expand-syns ==0.4.8.0,
|
||||||
|
any.th-lift ==0.8.2,
|
||||||
|
any.th-lift-instances ==0.1.18,
|
||||||
|
any.th-orphans ==0.13.11,
|
||||||
|
any.th-reify-many ==0.1.9,
|
||||||
|
any.these ==1.1.1.1,
|
||||||
|
these +assoc,
|
||||||
|
any.time ==1.9.3,
|
||||||
|
any.time-compat ==1.9.6,
|
||||||
|
time-compat -old-locale,
|
||||||
|
any.transformers ==0.5.6.2,
|
||||||
|
any.transformers-base ==0.4.5.2,
|
||||||
|
transformers-base +orphaninstances,
|
||||||
|
any.transformers-compat ==0.7,
|
||||||
|
transformers-compat -five +five-three -four +generic-deriving +mtl -three -two,
|
||||||
|
any.typed-process ==0.2.6.0,
|
||||||
|
any.unix ==2.7.2.2,
|
||||||
|
any.unix-bytestring ==0.3.7.3,
|
||||||
|
any.unix-compat ==0.5.3,
|
||||||
|
unix-compat -old-time,
|
||||||
|
any.unix-time ==0.4.7,
|
||||||
|
any.unliftio-core ==0.2.0.1,
|
||||||
|
any.unordered-containers ==0.2.14.0,
|
||||||
|
unordered-containers -debug,
|
||||||
|
any.uri-bytestring ==0.3.3.1,
|
||||||
|
uri-bytestring -lib-werror,
|
||||||
|
any.utf8-string ==1.0.2,
|
||||||
|
any.uuid-types ==1.0.5,
|
||||||
|
any.vector ==0.12.3.0,
|
||||||
|
vector +boundschecks -internalchecks -unsafechecks -wall,
|
||||||
|
any.vector-algorithms ==0.8.0.4,
|
||||||
|
vector-algorithms +bench +boundschecks -internalchecks -llvm +properties -unsafechecks,
|
||||||
|
any.versions ==5.0.0,
|
||||||
|
any.vty ==5.33,
|
||||||
|
any.word-wrap ==0.4.1,
|
||||||
|
any.word8 ==0.1.3,
|
||||||
|
any.xor ==0.0.1.0,
|
||||||
|
any.yaml ==0.11.5.0,
|
||||||
|
yaml +no-examples +no-exe,
|
||||||
|
any.zip ==1.7.1,
|
||||||
|
zip -dev -disable-bzip2 -disable-zstd,
|
||||||
|
any.zlib ==0.6.2.3,
|
||||||
|
zlib -bundled-c-zlib -non-blocking-ffi -pkg-config,
|
||||||
|
any.zlib-bindings ==0.1.1.5,
|
||||||
|
any.zstd ==0.1.2.0,
|
||||||
|
zstd +standalone
|
||||||
|
index-state: hackage.haskell.org 2021-07-27T07:59:57Z
|
@ -1,60 +0,0 @@
|
|||||||
packages: ./ghcup.cabal
|
|
||||||
|
|
||||||
optional-packages: ./vendored/*/*.cabal
|
|
||||||
|
|
||||||
if impl(ghc < 9.0)
|
|
||||||
package ghcup
|
|
||||||
flags: +tui -tar
|
|
||||||
else
|
|
||||||
package ghcup
|
|
||||||
flags: +tui +tar
|
|
||||||
|
|
||||||
constraints: http-io-streams -brotli,
|
|
||||||
any.aeson >= 2.0.1.0,
|
|
||||||
any.hsc2hs ==0.68.8,
|
|
||||||
bzlib-conduit >= 0.3.0.3,
|
|
||||||
bz2 >= 1.0.1.1,
|
|
||||||
bzlib >= 0.5.2.0,
|
|
||||||
directory >= 1.3.8.3,
|
|
||||||
filepath == 1.4.101.0 || == 1.4.300.1 || >= 1.5.2.0
|
|
||||||
|
|
||||||
if os(mingw32)
|
|
||||||
constraints: zlib +bundled-c-zlib,
|
|
||||||
lzma +static,
|
|
||||||
text -simdutf,
|
|
||||||
vty-windows >=0.2.0.2
|
|
||||||
|
|
||||||
if impl(ghc >= 9.4)
|
|
||||||
constraints: language-c >= 0.9.3
|
|
||||||
|
|
||||||
|
|
||||||
source-repository-package
|
|
||||||
type: git
|
|
||||||
location: https://github.com/haskell/tar.git
|
|
||||||
tag: d94a988be4311b830149a9f8fc16739927e5fc1c
|
|
||||||
|
|
||||||
source-repository-package
|
|
||||||
type: git
|
|
||||||
location: https://github.com/hasufell/uri-bytestring.git
|
|
||||||
tag: 4fb5ed14b500c192e6e7a97f6b2b1eb478806001
|
|
||||||
|
|
||||||
package libarchive
|
|
||||||
flags: -system-libarchive
|
|
||||||
|
|
||||||
package aeson-pretty
|
|
||||||
flags: +lib-only
|
|
||||||
|
|
||||||
package cabal-plan
|
|
||||||
flags: -exe
|
|
||||||
|
|
||||||
package aeson
|
|
||||||
flags: +ordered-keymap
|
|
||||||
|
|
||||||
package streamly
|
|
||||||
flags: +use-unliftio
|
|
||||||
|
|
||||||
package *
|
|
||||||
test-show-details: direct
|
|
||||||
|
|
||||||
allow-newer: cabal-install-parsers:tar, streamly:Win32
|
|
||||||
|
|
@ -1,273 +0,0 @@
|
|||||||
active-repositories: hackage.haskell.org:merge
|
|
||||||
constraints: any.Cabal ==3.10.2.1,
|
|
||||||
any.Cabal-syntax ==3.10.2.0,
|
|
||||||
any.HUnit ==1.6.2.0,
|
|
||||||
any.HsOpenSSL ==0.11.7.6,
|
|
||||||
HsOpenSSL -fast-bignum -homebrew-openssl -macports-openssl -use-pkg-config,
|
|
||||||
any.OneTuple ==0.4.1.1,
|
|
||||||
any.QuickCheck ==2.14.3,
|
|
||||||
QuickCheck -old-random +templatehaskell,
|
|
||||||
any.StateVar ==1.2.2,
|
|
||||||
any.abstract-deque ==0.3,
|
|
||||||
abstract-deque -usecas,
|
|
||||||
any.aeson ==2.2.1.0,
|
|
||||||
aeson +ordered-keymap,
|
|
||||||
any.aeson-pretty ==0.8.10,
|
|
||||||
aeson-pretty +lib-only,
|
|
||||||
any.alex ==3.5.1.0,
|
|
||||||
any.ansi-terminal ==1.0.2,
|
|
||||||
ansi-terminal -example,
|
|
||||||
any.ansi-terminal-types ==0.11.5,
|
|
||||||
any.ansi-wl-pprint ==0.6.9,
|
|
||||||
ansi-wl-pprint -example,
|
|
||||||
any.array ==0.5.4.0,
|
|
||||||
any.assoc ==1.1,
|
|
||||||
assoc +tagged,
|
|
||||||
any.async ==2.2.5,
|
|
||||||
async -bench,
|
|
||||||
any.atomic-primops ==0.8.5,
|
|
||||||
atomic-primops -debug,
|
|
||||||
any.attoparsec ==0.14.4,
|
|
||||||
attoparsec -developer,
|
|
||||||
any.base ==4.15.1.0,
|
|
||||||
any.base-compat ==0.13.1,
|
|
||||||
any.base-orphans ==0.9.1,
|
|
||||||
any.base16-bytestring ==1.0.2.0,
|
|
||||||
any.base64-bytestring ==1.2.1.0,
|
|
||||||
any.bifunctors ==5.6.1,
|
|
||||||
bifunctors +tagged,
|
|
||||||
any.bimap ==0.5.0,
|
|
||||||
any.binary ==0.8.9.1,
|
|
||||||
any.binary-instances ==1.0.4,
|
|
||||||
any.binary-orphans ==1.0.4.1,
|
|
||||||
any.bindings-DSL ==1.0.25,
|
|
||||||
any.bitvec ==1.1.5.0,
|
|
||||||
bitvec +simd,
|
|
||||||
any.blaze-builder ==0.4.2.3,
|
|
||||||
any.brick ==2.1.1,
|
|
||||||
brick -demos,
|
|
||||||
any.bytestring ==0.11.5.3,
|
|
||||||
any.bz2 ==1.0.1.1,
|
|
||||||
bz2 -cross +with-bzlib,
|
|
||||||
any.bzip2-clib ==1.0.8,
|
|
||||||
any.bzlib-conduit ==0.3.0.3,
|
|
||||||
any.c2hs ==0.28.8,
|
|
||||||
c2hs +base3 -regression,
|
|
||||||
any.cabal-install-parsers ==0.6.1.1,
|
|
||||||
any.cabal-plan ==0.7.3.0,
|
|
||||||
cabal-plan -_ -exe -license-report,
|
|
||||||
any.call-stack ==0.4.0,
|
|
||||||
any.case-insensitive ==1.2.1.0,
|
|
||||||
any.casing ==0.1.4.1,
|
|
||||||
any.cereal ==0.5.8.3,
|
|
||||||
cereal -bytestring-builder,
|
|
||||||
any.colour ==2.3.6,
|
|
||||||
any.comonad ==5.0.8,
|
|
||||||
comonad +containers +distributive +indexed-traversable,
|
|
||||||
any.conduit ==1.3.5,
|
|
||||||
any.conduit-extra ==1.3.6,
|
|
||||||
any.conduit-zstd ==0.0.2.0,
|
|
||||||
any.config-ini ==0.2.7.0,
|
|
||||||
config-ini -enable-doctests,
|
|
||||||
any.containers ==0.6.4.1,
|
|
||||||
any.contravariant ==1.5.5,
|
|
||||||
contravariant +semigroups +statevar +tagged,
|
|
||||||
any.cryptohash-sha1 ==0.11.101.0,
|
|
||||||
any.cryptohash-sha256 ==0.11.102.1,
|
|
||||||
cryptohash-sha256 -exe +use-cbits,
|
|
||||||
any.data-array-byte ==0.1.0.1,
|
|
||||||
any.data-clist ==0.2,
|
|
||||||
any.data-default-class ==0.1.2.0,
|
|
||||||
any.data-fix ==0.3.2,
|
|
||||||
any.deepseq ==1.4.5.0,
|
|
||||||
any.digest ==0.0.2.1,
|
|
||||||
digest -have_arm64_crc32c -have_builtin_prefetch -have_mm_prefetch -have_sse42 -have_strong_getauxval -have_weak_getauxval +pkg-config,
|
|
||||||
any.directory ==1.3.8.3,
|
|
||||||
directory -os-string,
|
|
||||||
any.disk-free-space ==0.1.0.1,
|
|
||||||
any.distributive ==0.6.2.1,
|
|
||||||
distributive +semigroups +tagged,
|
|
||||||
any.dlist ==1.0,
|
|
||||||
dlist -werror,
|
|
||||||
any.exceptions ==0.10.4,
|
|
||||||
any.file-uri ==0.1.0.0,
|
|
||||||
any.filepath ==1.4.101.0,
|
|
||||||
filepath -cpphs,
|
|
||||||
any.foldable1-classes-compat ==0.1,
|
|
||||||
foldable1-classes-compat +tagged,
|
|
||||||
any.free ==5.2,
|
|
||||||
any.fusion-plugin-types ==0.1.0,
|
|
||||||
any.generic-arbitrary ==0.2.2,
|
|
||||||
any.generically ==0.1.1,
|
|
||||||
any.ghc-bignum ==1.1,
|
|
||||||
any.ghc-boot-th ==9.0.2,
|
|
||||||
any.ghc-byteorder ==4.11.0.0.10,
|
|
||||||
any.ghc-prim ==0.7.0,
|
|
||||||
any.happy ==1.20.1.1,
|
|
||||||
any.hashable ==1.4.3.0,
|
|
||||||
hashable +integer-gmp -random-initial-seed,
|
|
||||||
any.haskell-lexer ==1.1.1,
|
|
||||||
any.haskus-utils-data ==1.4,
|
|
||||||
any.haskus-utils-types ==1.5.1,
|
|
||||||
any.haskus-utils-variant ==3.3,
|
|
||||||
any.heaps ==0.4,
|
|
||||||
any.hsc2hs ==0.68.8,
|
|
||||||
hsc2hs -in-ghc-tree,
|
|
||||||
any.hspec ==2.10.10,
|
|
||||||
any.hspec-core ==2.10.10,
|
|
||||||
any.hspec-discover ==2.10.10,
|
|
||||||
any.hspec-expectations ==0.8.2,
|
|
||||||
any.hspec-golden-aeson ==0.9.0.0,
|
|
||||||
any.http-io-streams ==0.1.7.0,
|
|
||||||
http-io-streams -brotli +fast-xor,
|
|
||||||
any.indexed-profunctors ==0.1.1.1,
|
|
||||||
any.indexed-traversable ==0.1.3,
|
|
||||||
any.indexed-traversable-instances ==0.1.1.2,
|
|
||||||
any.integer-conversion ==0.1.0.1,
|
|
||||||
any.integer-logarithms ==1.0.3.1,
|
|
||||||
integer-logarithms -check-bounds +integer-gmp,
|
|
||||||
any.io-streams ==1.5.2.2,
|
|
||||||
io-streams +network -nointeractivetests +zlib,
|
|
||||||
any.language-c ==0.9.3,
|
|
||||||
language-c -allwarnings +iecfpextension +usebytestrings,
|
|
||||||
any.libyaml-streamly ==0.2.2.1,
|
|
||||||
libyaml-streamly -no-unicode +system-libyaml,
|
|
||||||
any.lockfree-queue ==0.2.4,
|
|
||||||
any.lukko ==0.1.1.3,
|
|
||||||
lukko +ofd-locking,
|
|
||||||
any.lzma-static ==5.2.5.5,
|
|
||||||
any.megaparsec ==9.2.2,
|
|
||||||
megaparsec -dev,
|
|
||||||
any.microlens ==0.4.13.1,
|
|
||||||
any.microlens-mtl ==0.2.0.3,
|
|
||||||
any.microlens-th ==0.4.3.14,
|
|
||||||
any.monad-control ==1.0.3.1,
|
|
||||||
any.mono-traversable ==1.0.17.0,
|
|
||||||
any.mtl ==2.2.2,
|
|
||||||
any.mtl-compat ==0.2.2,
|
|
||||||
mtl-compat -two-point-one -two-point-two,
|
|
||||||
any.network ==3.1.4.0,
|
|
||||||
network -devel,
|
|
||||||
any.network-uri ==2.6.4.2,
|
|
||||||
any.openssl-streams ==1.2.3.0,
|
|
||||||
any.optics ==0.4.2.1,
|
|
||||||
any.optics-core ==0.4.1.1,
|
|
||||||
optics-core -explicit-generic-labels,
|
|
||||||
any.optics-extra ==0.4.2.1,
|
|
||||||
any.optics-th ==0.4.1,
|
|
||||||
any.optparse-applicative ==0.17.1.0,
|
|
||||||
optparse-applicative +process,
|
|
||||||
any.os-release ==1.0.2.1,
|
|
||||||
os-release -devel,
|
|
||||||
any.parsec ==3.1.17.0,
|
|
||||||
any.parser-combinators ==1.3.0,
|
|
||||||
parser-combinators -dev,
|
|
||||||
any.pretty ==1.1.3.6,
|
|
||||||
any.pretty-terminal ==0.1.0.0,
|
|
||||||
any.primitive ==0.8.0.0,
|
|
||||||
any.process ==1.6.18.0,
|
|
||||||
any.profunctors ==5.6.2,
|
|
||||||
any.quickcheck-arbitrary-adt ==0.3.1.0,
|
|
||||||
any.quickcheck-io ==0.2.0,
|
|
||||||
any.random ==1.2.1.2,
|
|
||||||
any.recursion-schemes ==5.2.2.5,
|
|
||||||
recursion-schemes +template-haskell,
|
|
||||||
any.regex-base ==0.94.0.2,
|
|
||||||
any.regex-posix ==0.96.0.1,
|
|
||||||
regex-posix -_regex-posix-clib,
|
|
||||||
any.resourcet ==1.2.6,
|
|
||||||
any.retry ==0.9.3.1,
|
|
||||||
retry -lib-werror,
|
|
||||||
any.rts ==1.0.2,
|
|
||||||
any.safe ==0.3.21,
|
|
||||||
any.safe-exceptions ==0.1.7.4,
|
|
||||||
any.scientific ==0.3.7.0,
|
|
||||||
scientific -bytestring-builder -integer-simple,
|
|
||||||
any.semialign ==1.3,
|
|
||||||
semialign +semigroupoids,
|
|
||||||
any.semigroupoids ==6.0.0.1,
|
|
||||||
semigroupoids +comonad +containers +contravariant +distributive +tagged +unordered-containers,
|
|
||||||
any.setenv ==0.1.1.3,
|
|
||||||
any.split ==0.2.5,
|
|
||||||
any.splitmix ==0.1.0.5,
|
|
||||||
splitmix -optimised-mixer,
|
|
||||||
any.stm ==2.5.0.0,
|
|
||||||
any.streaming-commons ==0.2.2.6,
|
|
||||||
streaming-commons -use-bytestring-builder,
|
|
||||||
any.streamly ==0.8.3,
|
|
||||||
streamly -debug -dev -fusion-plugin -has-llvm -inspection -limit-build-mem -no-fusion +opt -streamk -streamly-core -use-c-malloc +use-unliftio,
|
|
||||||
any.strict ==0.5,
|
|
||||||
any.strict-base ==0.4.0.0,
|
|
||||||
any.tagged ==0.8.8,
|
|
||||||
tagged +deepseq +transformers,
|
|
||||||
any.tagsoup ==0.14.8,
|
|
||||||
any.tar ==0.6.0.0,
|
|
||||||
any.tasty ==1.5,
|
|
||||||
tasty +unix,
|
|
||||||
any.tasty-hunit ==0.10.1,
|
|
||||||
any.template-haskell ==2.17.0.0,
|
|
||||||
any.temporary ==1.3,
|
|
||||||
any.terminal-progress-bar ==0.4.2,
|
|
||||||
any.terminal-size ==0.3.4,
|
|
||||||
any.terminfo ==0.4.1.5,
|
|
||||||
any.text ==2.0.2,
|
|
||||||
text -developer +simdutf,
|
|
||||||
any.text-binary ==0.2.1.1,
|
|
||||||
any.text-iso8601 ==0.1,
|
|
||||||
any.text-short ==0.1.5,
|
|
||||||
text-short -asserts,
|
|
||||||
any.text-zipper ==0.13,
|
|
||||||
any.tf-random ==0.5,
|
|
||||||
any.th-abstraction ==0.6.0.0,
|
|
||||||
any.th-compat ==0.1.4,
|
|
||||||
any.th-lift ==0.8.4,
|
|
||||||
any.th-lift-instances ==0.1.20,
|
|
||||||
any.these ==1.2,
|
|
||||||
any.time ==1.9.3,
|
|
||||||
any.time-compat ==1.9.6.1,
|
|
||||||
time-compat -old-locale,
|
|
||||||
any.transformers ==0.5.6.2,
|
|
||||||
any.transformers-base ==0.4.6,
|
|
||||||
transformers-base +orphaninstances,
|
|
||||||
any.transformers-compat ==0.7.2,
|
|
||||||
transformers-compat -five +five-three -four +generic-deriving +mtl -three -two,
|
|
||||||
any.typed-process ==0.2.11.1,
|
|
||||||
any.unicode-data ==0.3.1,
|
|
||||||
unicode-data -ucd2haskell,
|
|
||||||
any.unix ==2.8.5.0,
|
|
||||||
unix -os-string,
|
|
||||||
any.unix-bytestring ==0.3.7.8,
|
|
||||||
any.unix-compat ==0.7.1,
|
|
||||||
unix-compat -old-time,
|
|
||||||
any.unliftio-core ==0.2.1.0,
|
|
||||||
any.unordered-containers ==0.2.20,
|
|
||||||
unordered-containers -debug,
|
|
||||||
any.uri-bytestring ==0.3.3.1,
|
|
||||||
uri-bytestring -lib-werror,
|
|
||||||
any.utf8-string ==1.0.2,
|
|
||||||
any.uuid-types ==1.0.5.1,
|
|
||||||
any.vector ==0.13.1.0,
|
|
||||||
vector +boundschecks -internalchecks -unsafechecks -wall,
|
|
||||||
any.vector-algorithms ==0.9.0.1,
|
|
||||||
vector-algorithms +bench +boundschecks -internalchecks -llvm +properties -unsafechecks,
|
|
||||||
any.vector-binary-instances ==0.2.5.2,
|
|
||||||
any.vector-stream ==0.1.0.1,
|
|
||||||
any.versions ==6.0.6,
|
|
||||||
any.vty ==6.2,
|
|
||||||
any.vty-crossplatform ==0.4.0.0,
|
|
||||||
vty-crossplatform -demos,
|
|
||||||
any.vty-unix ==0.2.0.0,
|
|
||||||
any.witherable ==0.4.2,
|
|
||||||
any.word-wrap ==0.5,
|
|
||||||
any.word8 ==0.1.3,
|
|
||||||
any.xor ==0.0.1.2,
|
|
||||||
any.yaml-streamly ==0.12.4,
|
|
||||||
yaml-streamly +no-examples +no-exe,
|
|
||||||
any.zip ==2.0.0,
|
|
||||||
zip -dev -disable-bzip2 -disable-zstd,
|
|
||||||
any.zlib ==0.6.3.0,
|
|
||||||
zlib -bundled-c-zlib -non-blocking-ffi -pkg-config,
|
|
||||||
any.zlib-bindings ==0.1.1.5,
|
|
||||||
any.zstd ==0.1.3.0,
|
|
||||||
zstd +standalone
|
|
||||||
index-state: hackage.haskell.org 2024-03-13T09:43:35Z
|
|
@ -1,61 +0,0 @@
|
|||||||
packages: ./ghcup.cabal
|
|
||||||
|
|
||||||
optional-packages: ./vendored/*/*.cabal
|
|
||||||
|
|
||||||
if impl(ghc < 9.0)
|
|
||||||
package ghcup
|
|
||||||
flags: +tui -tar
|
|
||||||
else
|
|
||||||
package ghcup
|
|
||||||
flags: +tui +tar
|
|
||||||
|
|
||||||
constraints: http-io-streams -brotli,
|
|
||||||
any.aeson >= 2.0.1.0,
|
|
||||||
any.hsc2hs ==0.68.8,
|
|
||||||
bzlib-conduit >= 0.3.0.3,
|
|
||||||
bz2 >= 1.0.1.1,
|
|
||||||
bzlib >= 0.5.2.0,
|
|
||||||
directory >= 1.3.8.3,
|
|
||||||
filepath == 1.4.101.0 || == 1.4.300.1 || >= 1.5.2.0
|
|
||||||
|
|
||||||
if os(mingw32)
|
|
||||||
constraints: zlib +bundled-c-zlib,
|
|
||||||
lzma +static,
|
|
||||||
text -simdutf,
|
|
||||||
vty-windows >=0.2.0.2
|
|
||||||
|
|
||||||
if impl(ghc >= 9.4)
|
|
||||||
constraints: language-c >= 0.9.3
|
|
||||||
|
|
||||||
|
|
||||||
source-repository-package
|
|
||||||
type: git
|
|
||||||
location: https://github.com/haskell/tar.git
|
|
||||||
tag: d94a988be4311b830149a9f8fc16739927e5fc1c
|
|
||||||
|
|
||||||
source-repository-package
|
|
||||||
type: git
|
|
||||||
location: https://github.com/hasufell/uri-bytestring.git
|
|
||||||
tag: 4fb5ed14b500c192e6e7a97f6b2b1eb478806001
|
|
||||||
|
|
||||||
package libarchive
|
|
||||||
flags: -system-libarchive
|
|
||||||
|
|
||||||
package aeson-pretty
|
|
||||||
flags: +lib-only
|
|
||||||
|
|
||||||
package cabal-plan
|
|
||||||
flags: -exe
|
|
||||||
|
|
||||||
package aeson
|
|
||||||
flags: +ordered-keymap
|
|
||||||
|
|
||||||
package streamly
|
|
||||||
flags: +use-unliftio
|
|
||||||
|
|
||||||
package *
|
|
||||||
test-show-details: direct
|
|
||||||
|
|
||||||
allow-newer: cabal-install-parsers:tar, streamly:Win32
|
|
||||||
|
|
||||||
|
|
@ -1,258 +0,0 @@
|
|||||||
active-repositories: hackage.haskell.org:merge
|
|
||||||
constraints: any.Cabal ==3.10.2.1,
|
|
||||||
any.Cabal-syntax ==3.10.2.0,
|
|
||||||
any.HUnit ==1.6.2.0,
|
|
||||||
any.OneTuple ==0.4.1.1,
|
|
||||||
any.QuickCheck ==2.14.3,
|
|
||||||
QuickCheck -old-random +templatehaskell,
|
|
||||||
any.StateVar ==1.2.2,
|
|
||||||
any.Win32 ==2.12.0.1 || ==2.13.4.0,
|
|
||||||
any.abstract-deque ==0.3,
|
|
||||||
abstract-deque -usecas,
|
|
||||||
any.aeson ==2.2.1.0,
|
|
||||||
aeson +ordered-keymap,
|
|
||||||
any.aeson-pretty ==0.8.10,
|
|
||||||
aeson-pretty +lib-only,
|
|
||||||
any.alex ==3.5.1.0,
|
|
||||||
any.ansi-terminal ==1.0.2,
|
|
||||||
ansi-terminal -example,
|
|
||||||
any.ansi-terminal-types ==0.11.5,
|
|
||||||
any.ansi-wl-pprint ==0.6.9,
|
|
||||||
ansi-wl-pprint -example,
|
|
||||||
any.array ==0.5.4.0,
|
|
||||||
any.assoc ==1.1,
|
|
||||||
assoc +tagged,
|
|
||||||
any.async ==2.2.5,
|
|
||||||
async -bench,
|
|
||||||
any.atomic-primops ==0.8.5,
|
|
||||||
atomic-primops -debug,
|
|
||||||
any.attoparsec ==0.14.4,
|
|
||||||
attoparsec -developer,
|
|
||||||
any.base ==4.15.1.0,
|
|
||||||
any.base-compat ==0.13.1,
|
|
||||||
any.base-orphans ==0.9.1,
|
|
||||||
any.base16-bytestring ==1.0.2.0,
|
|
||||||
any.bifunctors ==5.6.1,
|
|
||||||
bifunctors +tagged,
|
|
||||||
any.bimap ==0.5.0,
|
|
||||||
any.binary ==0.8.9.1,
|
|
||||||
any.binary-instances ==1.0.4,
|
|
||||||
any.binary-orphans ==1.0.4.1,
|
|
||||||
any.bindings-DSL ==1.0.25,
|
|
||||||
any.bitvec ==1.1.5.0,
|
|
||||||
bitvec +simd,
|
|
||||||
any.blaze-builder ==0.4.2.3,
|
|
||||||
any.brick ==2.1.1,
|
|
||||||
brick -demos,
|
|
||||||
any.bytestring ==0.11.5.3,
|
|
||||||
any.bz2 ==1.0.1.1,
|
|
||||||
bz2 -cross +with-bzlib,
|
|
||||||
any.bzip2-clib ==1.0.8,
|
|
||||||
any.bzlib-conduit ==0.3.0.3,
|
|
||||||
any.c2hs ==0.28.8,
|
|
||||||
c2hs +base3 -regression,
|
|
||||||
any.cabal-install-parsers ==0.6.1.1,
|
|
||||||
any.cabal-plan ==0.7.3.0,
|
|
||||||
cabal-plan -_ -exe -license-report,
|
|
||||||
any.call-stack ==0.4.0,
|
|
||||||
any.case-insensitive ==1.2.1.0,
|
|
||||||
any.casing ==0.1.4.1,
|
|
||||||
any.cereal ==0.5.8.3,
|
|
||||||
cereal -bytestring-builder,
|
|
||||||
any.colour ==2.3.6,
|
|
||||||
any.comonad ==5.0.8,
|
|
||||||
comonad +containers +distributive +indexed-traversable,
|
|
||||||
any.conduit ==1.3.5,
|
|
||||||
any.conduit-extra ==1.3.6,
|
|
||||||
any.conduit-zstd ==0.0.2.0,
|
|
||||||
any.config-ini ==0.2.7.0,
|
|
||||||
config-ini -enable-doctests,
|
|
||||||
any.containers ==0.6.4.1,
|
|
||||||
any.contravariant ==1.5.5,
|
|
||||||
contravariant +semigroups +statevar +tagged,
|
|
||||||
any.cryptohash-sha256 ==0.11.102.1,
|
|
||||||
cryptohash-sha256 -exe +use-cbits,
|
|
||||||
any.data-array-byte ==0.1.0.1,
|
|
||||||
any.data-clist ==0.2,
|
|
||||||
any.data-default-class ==0.1.2.0,
|
|
||||||
any.data-fix ==0.3.2,
|
|
||||||
any.deepseq ==1.4.5.0,
|
|
||||||
any.digest ==0.0.2.1,
|
|
||||||
digest -have_arm64_crc32c -have_builtin_prefetch -have_mm_prefetch -have_sse42 -have_strong_getauxval -have_weak_getauxval +pkg-config,
|
|
||||||
any.directory ==1.3.6.2 || ==1.3.8.3,
|
|
||||||
directory -os-string,
|
|
||||||
any.disk-free-space ==0.1.0.1,
|
|
||||||
any.distributive ==0.6.2.1,
|
|
||||||
distributive +semigroups +tagged,
|
|
||||||
any.dlist ==1.0,
|
|
||||||
dlist -werror,
|
|
||||||
any.exceptions ==0.10.4,
|
|
||||||
any.file-uri ==0.1.0.0,
|
|
||||||
any.filepath ==1.4.2.1 || ==1.4.101.0,
|
|
||||||
filepath -cpphs,
|
|
||||||
any.foldable1-classes-compat ==0.1,
|
|
||||||
foldable1-classes-compat +tagged,
|
|
||||||
any.free ==5.2,
|
|
||||||
any.fusion-plugin-types ==0.1.0,
|
|
||||||
any.generic-arbitrary ==0.2.2,
|
|
||||||
any.generically ==0.1.1,
|
|
||||||
any.ghc-bignum ==1.1,
|
|
||||||
any.ghc-boot-th ==9.0.2,
|
|
||||||
any.ghc-prim ==0.7.0,
|
|
||||||
any.happy ==1.20.1.1,
|
|
||||||
any.hashable ==1.4.3.0,
|
|
||||||
hashable +integer-gmp -random-initial-seed,
|
|
||||||
any.haskell-lexer ==1.1.1,
|
|
||||||
any.haskus-utils-data ==1.4,
|
|
||||||
any.haskus-utils-types ==1.5.1,
|
|
||||||
any.haskus-utils-variant ==3.3,
|
|
||||||
any.heaps ==0.4,
|
|
||||||
any.hsc2hs ==0.68.8,
|
|
||||||
hsc2hs -in-ghc-tree,
|
|
||||||
any.hspec ==2.10.10,
|
|
||||||
any.hspec-core ==2.10.10,
|
|
||||||
any.hspec-discover ==2.10.10,
|
|
||||||
any.hspec-expectations ==0.8.2,
|
|
||||||
any.hspec-golden-aeson ==0.9.0.0,
|
|
||||||
any.indexed-profunctors ==0.1.1.1,
|
|
||||||
any.indexed-traversable ==0.1.3,
|
|
||||||
any.indexed-traversable-instances ==0.1.1.2,
|
|
||||||
any.integer-conversion ==0.1.0.1,
|
|
||||||
any.integer-logarithms ==1.0.3.1,
|
|
||||||
integer-logarithms -check-bounds +integer-gmp,
|
|
||||||
any.language-c ==0.9.3,
|
|
||||||
language-c -allwarnings +iecfpextension +usebytestrings,
|
|
||||||
any.libyaml-clib ==0.2.5,
|
|
||||||
any.libyaml-streamly ==0.2.2.1,
|
|
||||||
libyaml-streamly -no-unicode -system-libyaml,
|
|
||||||
any.lockfree-queue ==0.2.4,
|
|
||||||
any.lukko ==0.1.1.3,
|
|
||||||
lukko +ofd-locking,
|
|
||||||
any.lzma-static ==5.2.5.5,
|
|
||||||
any.megaparsec ==9.2.2,
|
|
||||||
megaparsec -dev,
|
|
||||||
any.microlens ==0.4.13.1,
|
|
||||||
any.microlens-mtl ==0.2.0.3,
|
|
||||||
any.microlens-th ==0.4.3.14,
|
|
||||||
any.monad-control ==1.0.3.1,
|
|
||||||
any.mono-traversable ==1.0.17.0,
|
|
||||||
any.mtl ==2.2.2,
|
|
||||||
any.mtl-compat ==0.2.2,
|
|
||||||
mtl-compat -two-point-one -two-point-two,
|
|
||||||
any.network ==3.1.4.0,
|
|
||||||
network -devel,
|
|
||||||
any.network-uri ==2.6.4.2,
|
|
||||||
any.optics ==0.4.2.1,
|
|
||||||
any.optics-core ==0.4.1.1,
|
|
||||||
optics-core -explicit-generic-labels,
|
|
||||||
any.optics-extra ==0.4.2.1,
|
|
||||||
any.optics-th ==0.4.1,
|
|
||||||
any.optparse-applicative ==0.17.1.0,
|
|
||||||
optparse-applicative +process,
|
|
||||||
any.os-release ==1.0.2.1,
|
|
||||||
os-release -devel,
|
|
||||||
any.parsec ==3.1.17.0,
|
|
||||||
any.parser-combinators ==1.3.0,
|
|
||||||
parser-combinators -dev,
|
|
||||||
any.pretty ==1.1.3.6,
|
|
||||||
any.pretty-terminal ==0.1.0.0,
|
|
||||||
any.primitive ==0.8.0.0,
|
|
||||||
any.process ==1.6.13.2 || ==1.6.18.0,
|
|
||||||
any.profunctors ==5.6.2,
|
|
||||||
any.quickcheck-arbitrary-adt ==0.3.1.0,
|
|
||||||
any.quickcheck-io ==0.2.0,
|
|
||||||
any.random ==1.2.1.2,
|
|
||||||
any.recursion-schemes ==5.2.2.5,
|
|
||||||
recursion-schemes +template-haskell,
|
|
||||||
any.regex-base ==0.94.0.2,
|
|
||||||
any.regex-posix ==0.96.0.1,
|
|
||||||
regex-posix -_regex-posix-clib,
|
|
||||||
any.regex-posix-clib ==2.7,
|
|
||||||
any.resourcet ==1.2.6,
|
|
||||||
any.retry ==0.9.3.1,
|
|
||||||
retry -lib-werror,
|
|
||||||
any.rts ==1.0.2,
|
|
||||||
any.safe ==0.3.21,
|
|
||||||
any.safe-exceptions ==0.1.7.4,
|
|
||||||
any.scientific ==0.3.7.0,
|
|
||||||
scientific -bytestring-builder -integer-simple,
|
|
||||||
any.semialign ==1.3,
|
|
||||||
semialign +semigroupoids,
|
|
||||||
any.semigroupoids ==6.0.0.1,
|
|
||||||
semigroupoids +comonad +containers +contravariant +distributive +tagged +unordered-containers,
|
|
||||||
any.setenv ==0.1.1.3,
|
|
||||||
any.split ==0.2.5,
|
|
||||||
any.splitmix ==0.1.0.5,
|
|
||||||
splitmix -optimised-mixer,
|
|
||||||
any.stm ==2.5.0.0,
|
|
||||||
any.streaming-commons ==0.2.2.6,
|
|
||||||
streaming-commons -use-bytestring-builder,
|
|
||||||
any.streamly ==0.8.3,
|
|
||||||
streamly -debug -dev -fusion-plugin -has-llvm -inspection -limit-build-mem -no-fusion +opt -streamk -streamly-core -use-c-malloc +use-unliftio,
|
|
||||||
any.strict ==0.5,
|
|
||||||
any.strict-base ==0.4.0.0,
|
|
||||||
any.tagged ==0.8.8,
|
|
||||||
tagged +deepseq +transformers,
|
|
||||||
any.tagsoup ==0.14.8,
|
|
||||||
any.tar ==0.6.0.0,
|
|
||||||
any.tasty ==1.5,
|
|
||||||
tasty +unix,
|
|
||||||
any.tasty-hunit ==0.10.1,
|
|
||||||
any.template-haskell ==2.17.0.0,
|
|
||||||
any.temporary ==1.3,
|
|
||||||
any.text ==2.0.2,
|
|
||||||
text -developer -simdutf,
|
|
||||||
any.text-binary ==0.2.1.1,
|
|
||||||
any.text-iso8601 ==0.1,
|
|
||||||
any.text-short ==0.1.5,
|
|
||||||
text-short -asserts,
|
|
||||||
any.text-zipper ==0.13,
|
|
||||||
any.tf-random ==0.5,
|
|
||||||
any.th-abstraction ==0.6.0.0,
|
|
||||||
any.th-compat ==0.1.4,
|
|
||||||
any.th-lift ==0.8.4,
|
|
||||||
any.th-lift-instances ==0.1.20,
|
|
||||||
any.these ==1.2,
|
|
||||||
any.time ==1.9.3 || ==1.11.1.2,
|
|
||||||
any.time-compat ==1.9.6.1,
|
|
||||||
time-compat -old-locale,
|
|
||||||
any.transformers ==0.5.6.2,
|
|
||||||
any.transformers-base ==0.4.6,
|
|
||||||
transformers-base +orphaninstances,
|
|
||||||
any.transformers-compat ==0.7.2,
|
|
||||||
transformers-compat -five +five-three -four +generic-deriving +mtl -three -two,
|
|
||||||
any.typed-process ==0.2.11.1,
|
|
||||||
any.unicode-data ==0.3.1,
|
|
||||||
unicode-data -ucd2haskell,
|
|
||||||
any.unix-compat ==0.7.1,
|
|
||||||
unix-compat -old-time,
|
|
||||||
any.unliftio-core ==0.2.1.0,
|
|
||||||
any.unordered-containers ==0.2.20,
|
|
||||||
unordered-containers -debug,
|
|
||||||
any.uri-bytestring ==0.3.3.1,
|
|
||||||
uri-bytestring -lib-werror,
|
|
||||||
any.utf8-string ==1.0.2,
|
|
||||||
any.uuid-types ==1.0.5.1,
|
|
||||||
any.vector ==0.13.1.0,
|
|
||||||
vector +boundschecks -internalchecks -unsafechecks -wall,
|
|
||||||
any.vector-algorithms ==0.9.0.1,
|
|
||||||
vector-algorithms +bench +boundschecks -internalchecks -llvm +properties -unsafechecks,
|
|
||||||
any.vector-binary-instances ==0.2.5.2,
|
|
||||||
any.vector-stream ==0.1.0.1,
|
|
||||||
any.versions ==6.0.6,
|
|
||||||
any.vty ==6.2,
|
|
||||||
any.vty-crossplatform ==0.4.0.0,
|
|
||||||
vty-crossplatform -demos,
|
|
||||||
any.vty-windows ==0.2.0.2,
|
|
||||||
any.witherable ==0.4.2,
|
|
||||||
any.word-wrap ==0.5,
|
|
||||||
any.word8 ==0.1.3,
|
|
||||||
any.yaml-streamly ==0.12.4,
|
|
||||||
yaml-streamly +no-examples +no-exe,
|
|
||||||
any.zip ==2.0.0,
|
|
||||||
zip -dev -disable-bzip2 -disable-zstd,
|
|
||||||
any.zlib ==0.6.3.0,
|
|
||||||
zlib +bundled-c-zlib -non-blocking-ffi -pkg-config,
|
|
||||||
any.zstd ==0.1.3.0,
|
|
||||||
zstd +standalone
|
|
||||||
index-state: hackage.haskell.org 2024-03-15T23:51:46Z
|
|
@ -1,8 +0,0 @@
|
|||||||
if os(mingw32)
|
|
||||||
import: cabal.ghc902.Win32.project
|
|
||||||
import: cabal.ghc902.Win32.project.freeze
|
|
||||||
else
|
|
||||||
import: cabal.ghc902.Unix.project
|
|
||||||
import: cabal.ghc902.Unix.project.freeze
|
|
||||||
|
|
||||||
with-compiler: ghc-9.0.2
|
|
@ -1,60 +0,0 @@
|
|||||||
packages: ./ghcup.cabal
|
|
||||||
|
|
||||||
optional-packages: ./vendored/*/*.cabal
|
|
||||||
|
|
||||||
if impl(ghc < 9.0)
|
|
||||||
package ghcup
|
|
||||||
flags: +tui -tar
|
|
||||||
else
|
|
||||||
package ghcup
|
|
||||||
flags: +tui +tar
|
|
||||||
|
|
||||||
constraints: http-io-streams -brotli,
|
|
||||||
any.aeson >= 2.0.1.0,
|
|
||||||
any.hsc2hs ==0.68.8,
|
|
||||||
bzlib-conduit >= 0.3.0.3,
|
|
||||||
bz2 >= 1.0.1.1,
|
|
||||||
bzlib >= 0.5.2.0,
|
|
||||||
directory >= 1.3.8.3,
|
|
||||||
filepath == 1.4.101.0 || == 1.4.300.1 || >= 1.5.2.0
|
|
||||||
|
|
||||||
if os(mingw32)
|
|
||||||
constraints: zlib +bundled-c-zlib,
|
|
||||||
lzma +static,
|
|
||||||
text -simdutf,
|
|
||||||
vty-windows >=0.2.0.2
|
|
||||||
|
|
||||||
if impl(ghc >= 9.4)
|
|
||||||
constraints: language-c >= 0.9.3
|
|
||||||
|
|
||||||
|
|
||||||
source-repository-package
|
|
||||||
type: git
|
|
||||||
location: https://github.com/haskell/tar.git
|
|
||||||
tag: d94a988be4311b830149a9f8fc16739927e5fc1c
|
|
||||||
|
|
||||||
source-repository-package
|
|
||||||
type: git
|
|
||||||
location: https://github.com/hasufell/uri-bytestring.git
|
|
||||||
tag: 4fb5ed14b500c192e6e7a97f6b2b1eb478806001
|
|
||||||
|
|
||||||
package libarchive
|
|
||||||
flags: -system-libarchive
|
|
||||||
|
|
||||||
package aeson-pretty
|
|
||||||
flags: +lib-only
|
|
||||||
|
|
||||||
package cabal-plan
|
|
||||||
flags: -exe
|
|
||||||
|
|
||||||
package aeson
|
|
||||||
flags: +ordered-keymap
|
|
||||||
|
|
||||||
package streamly
|
|
||||||
flags: +use-unliftio
|
|
||||||
|
|
||||||
package *
|
|
||||||
test-show-details: direct
|
|
||||||
|
|
||||||
allow-newer: cabal-install-parsers:tar, streamly:Win32
|
|
||||||
|
|
@ -1,273 +0,0 @@
|
|||||||
active-repositories: hackage.haskell.org:merge
|
|
||||||
constraints: any.Cabal ==3.10.2.1,
|
|
||||||
any.Cabal-syntax ==3.10.2.0,
|
|
||||||
any.HUnit ==1.6.2.0,
|
|
||||||
any.HsOpenSSL ==0.11.7.6,
|
|
||||||
HsOpenSSL -fast-bignum -homebrew-openssl -macports-openssl -use-pkg-config,
|
|
||||||
any.OneTuple ==0.4.1.1,
|
|
||||||
any.QuickCheck ==2.14.3,
|
|
||||||
QuickCheck -old-random +templatehaskell,
|
|
||||||
any.StateVar ==1.2.2,
|
|
||||||
any.abstract-deque ==0.3,
|
|
||||||
abstract-deque -usecas,
|
|
||||||
any.aeson ==2.2.1.0,
|
|
||||||
aeson +ordered-keymap,
|
|
||||||
any.aeson-pretty ==0.8.10,
|
|
||||||
aeson-pretty +lib-only,
|
|
||||||
any.alex ==3.5.1.0,
|
|
||||||
any.ansi-terminal ==1.0.2,
|
|
||||||
ansi-terminal -example,
|
|
||||||
any.ansi-terminal-types ==0.11.5,
|
|
||||||
any.ansi-wl-pprint ==0.6.9,
|
|
||||||
ansi-wl-pprint -example,
|
|
||||||
any.array ==0.5.4.0,
|
|
||||||
any.assoc ==1.1,
|
|
||||||
assoc +tagged,
|
|
||||||
any.async ==2.2.5,
|
|
||||||
async -bench,
|
|
||||||
any.atomic-primops ==0.8.5,
|
|
||||||
atomic-primops -debug,
|
|
||||||
any.attoparsec ==0.14.4,
|
|
||||||
attoparsec -developer,
|
|
||||||
any.base ==4.16.4.0,
|
|
||||||
any.base-compat ==0.13.1,
|
|
||||||
any.base-orphans ==0.9.1,
|
|
||||||
any.base16-bytestring ==1.0.2.0,
|
|
||||||
any.base64-bytestring ==1.2.1.0,
|
|
||||||
any.bifunctors ==5.6.1,
|
|
||||||
bifunctors +tagged,
|
|
||||||
any.bimap ==0.5.0,
|
|
||||||
any.binary ==0.8.9.0,
|
|
||||||
any.binary-instances ==1.0.4,
|
|
||||||
any.binary-orphans ==1.0.4.1,
|
|
||||||
any.bindings-DSL ==1.0.25,
|
|
||||||
any.bitvec ==1.1.5.0,
|
|
||||||
bitvec +simd,
|
|
||||||
any.blaze-builder ==0.4.2.3,
|
|
||||||
any.brick ==2.1.1,
|
|
||||||
brick -demos,
|
|
||||||
any.bytestring ==0.11.4.0,
|
|
||||||
any.bz2 ==1.0.1.1,
|
|
||||||
bz2 -cross +with-bzlib,
|
|
||||||
any.bzip2-clib ==1.0.8,
|
|
||||||
any.bzlib-conduit ==0.3.0.3,
|
|
||||||
any.c2hs ==0.28.8,
|
|
||||||
c2hs +base3 -regression,
|
|
||||||
any.cabal-install-parsers ==0.6.1.1,
|
|
||||||
any.cabal-plan ==0.7.3.0,
|
|
||||||
cabal-plan -_ -exe -license-report,
|
|
||||||
any.call-stack ==0.4.0,
|
|
||||||
any.case-insensitive ==1.2.1.0,
|
|
||||||
any.casing ==0.1.4.1,
|
|
||||||
any.cereal ==0.5.8.3,
|
|
||||||
cereal -bytestring-builder,
|
|
||||||
any.colour ==2.3.6,
|
|
||||||
any.comonad ==5.0.8,
|
|
||||||
comonad +containers +distributive +indexed-traversable,
|
|
||||||
any.conduit ==1.3.5,
|
|
||||||
any.conduit-extra ==1.3.6,
|
|
||||||
any.conduit-zstd ==0.0.2.0,
|
|
||||||
any.config-ini ==0.2.7.0,
|
|
||||||
config-ini -enable-doctests,
|
|
||||||
any.containers ==0.6.5.1,
|
|
||||||
any.contravariant ==1.5.5,
|
|
||||||
contravariant +semigroups +statevar +tagged,
|
|
||||||
any.cryptohash-sha1 ==0.11.101.0,
|
|
||||||
any.cryptohash-sha256 ==0.11.102.1,
|
|
||||||
cryptohash-sha256 -exe +use-cbits,
|
|
||||||
any.data-array-byte ==0.1.0.1,
|
|
||||||
any.data-clist ==0.2,
|
|
||||||
any.data-default-class ==0.1.2.0,
|
|
||||||
any.data-fix ==0.3.2,
|
|
||||||
any.deepseq ==1.4.6.1,
|
|
||||||
any.digest ==0.0.2.1,
|
|
||||||
digest -have_arm64_crc32c -have_builtin_prefetch -have_mm_prefetch -have_sse42 -have_strong_getauxval -have_weak_getauxval +pkg-config,
|
|
||||||
any.directory ==1.3.8.3,
|
|
||||||
directory -os-string,
|
|
||||||
any.disk-free-space ==0.1.0.1,
|
|
||||||
any.distributive ==0.6.2.1,
|
|
||||||
distributive +semigroups +tagged,
|
|
||||||
any.dlist ==1.0,
|
|
||||||
dlist -werror,
|
|
||||||
any.exceptions ==0.10.4,
|
|
||||||
any.file-uri ==0.1.0.0,
|
|
||||||
any.filepath ==1.4.101.0,
|
|
||||||
filepath -cpphs,
|
|
||||||
any.foldable1-classes-compat ==0.1,
|
|
||||||
foldable1-classes-compat +tagged,
|
|
||||||
any.free ==5.2,
|
|
||||||
any.fusion-plugin-types ==0.1.0,
|
|
||||||
any.generic-arbitrary ==0.2.2,
|
|
||||||
any.generically ==0.1.1,
|
|
||||||
any.ghc-bignum ==1.2,
|
|
||||||
any.ghc-boot-th ==9.2.8,
|
|
||||||
any.ghc-byteorder ==4.11.0.0.10,
|
|
||||||
any.ghc-prim ==0.8.0,
|
|
||||||
any.happy ==1.20.1.1,
|
|
||||||
any.hashable ==1.4.3.0,
|
|
||||||
hashable +integer-gmp -random-initial-seed,
|
|
||||||
any.haskell-lexer ==1.1.1,
|
|
||||||
any.haskus-utils-data ==1.4,
|
|
||||||
any.haskus-utils-types ==1.5.1,
|
|
||||||
any.haskus-utils-variant ==3.3,
|
|
||||||
any.heaps ==0.4,
|
|
||||||
any.hsc2hs ==0.68.8,
|
|
||||||
hsc2hs -in-ghc-tree,
|
|
||||||
any.hspec ==2.10.10,
|
|
||||||
any.hspec-core ==2.10.10,
|
|
||||||
any.hspec-discover ==2.10.10,
|
|
||||||
any.hspec-expectations ==0.8.2,
|
|
||||||
any.hspec-golden-aeson ==0.9.0.0,
|
|
||||||
any.http-io-streams ==0.1.7.0,
|
|
||||||
http-io-streams -brotli +fast-xor,
|
|
||||||
any.indexed-profunctors ==0.1.1.1,
|
|
||||||
any.indexed-traversable ==0.1.3,
|
|
||||||
any.indexed-traversable-instances ==0.1.1.2,
|
|
||||||
any.integer-conversion ==0.1.0.1,
|
|
||||||
any.integer-logarithms ==1.0.3.1,
|
|
||||||
integer-logarithms -check-bounds +integer-gmp,
|
|
||||||
any.io-streams ==1.5.2.2,
|
|
||||||
io-streams +network -nointeractivetests +zlib,
|
|
||||||
any.language-c ==0.9.3,
|
|
||||||
language-c -allwarnings +iecfpextension +usebytestrings,
|
|
||||||
any.libyaml-streamly ==0.2.2.1,
|
|
||||||
libyaml-streamly -no-unicode +system-libyaml,
|
|
||||||
any.lockfree-queue ==0.2.4,
|
|
||||||
any.lukko ==0.1.1.3,
|
|
||||||
lukko +ofd-locking,
|
|
||||||
any.lzma-static ==5.2.5.5,
|
|
||||||
any.megaparsec ==9.2.2,
|
|
||||||
megaparsec -dev,
|
|
||||||
any.microlens ==0.4.13.1,
|
|
||||||
any.microlens-mtl ==0.2.0.3,
|
|
||||||
any.microlens-th ==0.4.3.14,
|
|
||||||
any.monad-control ==1.0.3.1,
|
|
||||||
any.mono-traversable ==1.0.17.0,
|
|
||||||
any.mtl ==2.2.2,
|
|
||||||
any.mtl-compat ==0.2.2,
|
|
||||||
mtl-compat -two-point-one -two-point-two,
|
|
||||||
any.network ==3.1.4.0,
|
|
||||||
network -devel,
|
|
||||||
any.network-uri ==2.6.4.2,
|
|
||||||
any.openssl-streams ==1.2.3.0,
|
|
||||||
any.optics ==0.4.2.1,
|
|
||||||
any.optics-core ==0.4.1.1,
|
|
||||||
optics-core -explicit-generic-labels,
|
|
||||||
any.optics-extra ==0.4.2.1,
|
|
||||||
any.optics-th ==0.4.1,
|
|
||||||
any.optparse-applicative ==0.17.1.0,
|
|
||||||
optparse-applicative +process,
|
|
||||||
any.os-release ==1.0.2.1,
|
|
||||||
os-release -devel,
|
|
||||||
any.parsec ==3.1.17.0,
|
|
||||||
any.parser-combinators ==1.3.0,
|
|
||||||
parser-combinators -dev,
|
|
||||||
any.pretty ==1.1.3.6,
|
|
||||||
any.pretty-terminal ==0.1.0.0,
|
|
||||||
any.primitive ==0.8.0.0,
|
|
||||||
any.process ==1.6.18.0,
|
|
||||||
any.profunctors ==5.6.2,
|
|
||||||
any.quickcheck-arbitrary-adt ==0.3.1.0,
|
|
||||||
any.quickcheck-io ==0.2.0,
|
|
||||||
any.random ==1.2.1.2,
|
|
||||||
any.recursion-schemes ==5.2.2.5,
|
|
||||||
recursion-schemes +template-haskell,
|
|
||||||
any.regex-base ==0.94.0.2,
|
|
||||||
any.regex-posix ==0.96.0.1,
|
|
||||||
regex-posix -_regex-posix-clib,
|
|
||||||
any.resourcet ==1.2.6,
|
|
||||||
any.retry ==0.9.3.1,
|
|
||||||
retry -lib-werror,
|
|
||||||
any.rts ==1.0.2,
|
|
||||||
any.safe ==0.3.21,
|
|
||||||
any.safe-exceptions ==0.1.7.4,
|
|
||||||
any.scientific ==0.3.7.0,
|
|
||||||
scientific -bytestring-builder -integer-simple,
|
|
||||||
any.semialign ==1.3,
|
|
||||||
semialign +semigroupoids,
|
|
||||||
any.semigroupoids ==6.0.0.1,
|
|
||||||
semigroupoids +comonad +containers +contravariant +distributive +tagged +unordered-containers,
|
|
||||||
any.setenv ==0.1.1.3,
|
|
||||||
any.split ==0.2.5,
|
|
||||||
any.splitmix ==0.1.0.5,
|
|
||||||
splitmix -optimised-mixer,
|
|
||||||
any.stm ==2.5.0.2,
|
|
||||||
any.streaming-commons ==0.2.2.6,
|
|
||||||
streaming-commons -use-bytestring-builder,
|
|
||||||
any.streamly ==0.8.3,
|
|
||||||
streamly -debug -dev -fusion-plugin -has-llvm -inspection -limit-build-mem -no-fusion +opt -streamk -streamly-core -use-c-malloc +use-unliftio,
|
|
||||||
any.strict ==0.5,
|
|
||||||
any.strict-base ==0.4.0.0,
|
|
||||||
any.tagged ==0.8.8,
|
|
||||||
tagged +deepseq +transformers,
|
|
||||||
any.tagsoup ==0.14.8,
|
|
||||||
any.tar ==0.6.0.0,
|
|
||||||
any.tasty ==1.5,
|
|
||||||
tasty +unix,
|
|
||||||
any.tasty-hunit ==0.10.1,
|
|
||||||
any.template-haskell ==2.18.0.0,
|
|
||||||
any.temporary ==1.3,
|
|
||||||
any.terminal-progress-bar ==0.4.2,
|
|
||||||
any.terminal-size ==0.3.4,
|
|
||||||
any.terminfo ==0.4.1.5,
|
|
||||||
any.text ==2.0.2,
|
|
||||||
text -developer +simdutf,
|
|
||||||
any.text-binary ==0.2.1.1,
|
|
||||||
any.text-iso8601 ==0.1,
|
|
||||||
any.text-short ==0.1.5,
|
|
||||||
text-short -asserts,
|
|
||||||
any.text-zipper ==0.13,
|
|
||||||
any.tf-random ==0.5,
|
|
||||||
any.th-abstraction ==0.6.0.0,
|
|
||||||
any.th-compat ==0.1.4,
|
|
||||||
any.th-lift ==0.8.4,
|
|
||||||
any.th-lift-instances ==0.1.20,
|
|
||||||
any.these ==1.2,
|
|
||||||
any.time ==1.11.1.1,
|
|
||||||
any.time-compat ==1.9.6.1,
|
|
||||||
time-compat -old-locale,
|
|
||||||
any.transformers ==0.5.6.2,
|
|
||||||
any.transformers-base ==0.4.6,
|
|
||||||
transformers-base +orphaninstances,
|
|
||||||
any.transformers-compat ==0.7.2,
|
|
||||||
transformers-compat -five +five-three -four +generic-deriving +mtl -three -two,
|
|
||||||
any.typed-process ==0.2.11.1,
|
|
||||||
any.unicode-data ==0.3.1,
|
|
||||||
unicode-data -ucd2haskell,
|
|
||||||
any.unix ==2.8.5.0,
|
|
||||||
unix -os-string,
|
|
||||||
any.unix-bytestring ==0.3.7.8,
|
|
||||||
any.unix-compat ==0.7.1,
|
|
||||||
unix-compat -old-time,
|
|
||||||
any.unliftio-core ==0.2.1.0,
|
|
||||||
any.unordered-containers ==0.2.20,
|
|
||||||
unordered-containers -debug,
|
|
||||||
any.uri-bytestring ==0.3.3.1,
|
|
||||||
uri-bytestring -lib-werror,
|
|
||||||
any.utf8-string ==1.0.2,
|
|
||||||
any.uuid-types ==1.0.5.1,
|
|
||||||
any.vector ==0.13.1.0,
|
|
||||||
vector +boundschecks -internalchecks -unsafechecks -wall,
|
|
||||||
any.vector-algorithms ==0.9.0.1,
|
|
||||||
vector-algorithms +bench +boundschecks -internalchecks -llvm +properties -unsafechecks,
|
|
||||||
any.vector-binary-instances ==0.2.5.2,
|
|
||||||
any.vector-stream ==0.1.0.1,
|
|
||||||
any.versions ==6.0.6,
|
|
||||||
any.vty ==6.2,
|
|
||||||
any.vty-crossplatform ==0.4.0.0,
|
|
||||||
vty-crossplatform -demos,
|
|
||||||
any.vty-unix ==0.2.0.0,
|
|
||||||
any.witherable ==0.4.2,
|
|
||||||
any.word-wrap ==0.5,
|
|
||||||
any.word8 ==0.1.3,
|
|
||||||
any.xor ==0.0.1.2,
|
|
||||||
any.yaml-streamly ==0.12.4,
|
|
||||||
yaml-streamly +no-examples +no-exe,
|
|
||||||
any.zip ==2.0.0,
|
|
||||||
zip -dev -disable-bzip2 -disable-zstd,
|
|
||||||
any.zlib ==0.6.3.0,
|
|
||||||
zlib -bundled-c-zlib -non-blocking-ffi -pkg-config,
|
|
||||||
any.zlib-bindings ==0.1.1.5,
|
|
||||||
any.zstd ==0.1.3.0,
|
|
||||||
zstd +standalone
|
|
||||||
index-state: hackage.haskell.org 2024-03-13T09:43:35Z
|
|
@ -1,60 +0,0 @@
|
|||||||
packages: ./ghcup.cabal
|
|
||||||
|
|
||||||
optional-packages: ./vendored/*/*.cabal
|
|
||||||
|
|
||||||
if impl(ghc < 9.0)
|
|
||||||
package ghcup
|
|
||||||
flags: +tui -tar
|
|
||||||
else
|
|
||||||
package ghcup
|
|
||||||
flags: +tui +tar
|
|
||||||
|
|
||||||
constraints: http-io-streams -brotli,
|
|
||||||
any.aeson >= 2.0.1.0,
|
|
||||||
any.hsc2hs ==0.68.8,
|
|
||||||
bzlib-conduit >= 0.3.0.3,
|
|
||||||
bz2 >= 1.0.1.1,
|
|
||||||
bzlib >= 0.5.2.0,
|
|
||||||
directory >= 1.3.8.3,
|
|
||||||
filepath == 1.4.101.0 || == 1.4.300.1 || >= 1.5.2.0
|
|
||||||
|
|
||||||
if os(mingw32)
|
|
||||||
constraints: zlib +bundled-c-zlib,
|
|
||||||
lzma +static,
|
|
||||||
text -simdutf,
|
|
||||||
vty-windows >=0.2.0.2
|
|
||||||
|
|
||||||
if impl(ghc >= 9.4)
|
|
||||||
constraints: language-c >= 0.9.3
|
|
||||||
|
|
||||||
|
|
||||||
source-repository-package
|
|
||||||
type: git
|
|
||||||
location: https://github.com/haskell/tar.git
|
|
||||||
tag: d94a988be4311b830149a9f8fc16739927e5fc1c
|
|
||||||
|
|
||||||
source-repository-package
|
|
||||||
type: git
|
|
||||||
location: https://github.com/hasufell/uri-bytestring.git
|
|
||||||
tag: 4fb5ed14b500c192e6e7a97f6b2b1eb478806001
|
|
||||||
|
|
||||||
package libarchive
|
|
||||||
flags: -system-libarchive
|
|
||||||
|
|
||||||
package aeson-pretty
|
|
||||||
flags: +lib-only
|
|
||||||
|
|
||||||
package cabal-plan
|
|
||||||
flags: -exe
|
|
||||||
|
|
||||||
package aeson
|
|
||||||
flags: +ordered-keymap
|
|
||||||
|
|
||||||
package streamly
|
|
||||||
flags: +use-unliftio
|
|
||||||
|
|
||||||
package *
|
|
||||||
test-show-details: direct
|
|
||||||
|
|
||||||
allow-newer: cabal-install-parsers:tar, streamly:Win32
|
|
||||||
|
|
@ -1,258 +0,0 @@
|
|||||||
active-repositories: hackage.haskell.org:merge
|
|
||||||
constraints: any.Cabal ==3.10.2.1,
|
|
||||||
any.Cabal-syntax ==3.10.2.0,
|
|
||||||
any.HUnit ==1.6.2.0,
|
|
||||||
any.OneTuple ==0.4.1.1,
|
|
||||||
any.QuickCheck ==2.14.3,
|
|
||||||
QuickCheck -old-random +templatehaskell,
|
|
||||||
any.StateVar ==1.2.2,
|
|
||||||
any.Win32 ==2.12.0.1 || ==2.13.4.0,
|
|
||||||
any.abstract-deque ==0.3,
|
|
||||||
abstract-deque -usecas,
|
|
||||||
any.aeson ==2.2.1.0,
|
|
||||||
aeson +ordered-keymap,
|
|
||||||
any.aeson-pretty ==0.8.10,
|
|
||||||
aeson-pretty +lib-only,
|
|
||||||
any.alex ==3.5.1.0,
|
|
||||||
any.ansi-terminal ==1.0.2,
|
|
||||||
ansi-terminal -example,
|
|
||||||
any.ansi-terminal-types ==0.11.5,
|
|
||||||
any.ansi-wl-pprint ==0.6.9,
|
|
||||||
ansi-wl-pprint -example,
|
|
||||||
any.array ==0.5.4.0,
|
|
||||||
any.assoc ==1.1,
|
|
||||||
assoc +tagged,
|
|
||||||
any.async ==2.2.5,
|
|
||||||
async -bench,
|
|
||||||
any.atomic-primops ==0.8.5,
|
|
||||||
atomic-primops -debug,
|
|
||||||
any.attoparsec ==0.14.4,
|
|
||||||
attoparsec -developer,
|
|
||||||
any.base ==4.16.4.0,
|
|
||||||
any.base-compat ==0.13.1,
|
|
||||||
any.base-orphans ==0.9.1,
|
|
||||||
any.base16-bytestring ==1.0.2.0,
|
|
||||||
any.bifunctors ==5.6.1,
|
|
||||||
bifunctors +tagged,
|
|
||||||
any.bimap ==0.5.0,
|
|
||||||
any.binary ==0.8.9.0,
|
|
||||||
any.binary-instances ==1.0.4,
|
|
||||||
any.binary-orphans ==1.0.4.1,
|
|
||||||
any.bindings-DSL ==1.0.25,
|
|
||||||
any.bitvec ==1.1.5.0,
|
|
||||||
bitvec +simd,
|
|
||||||
any.blaze-builder ==0.4.2.3,
|
|
||||||
any.brick ==2.1.1,
|
|
||||||
brick -demos,
|
|
||||||
any.bytestring ==0.11.4.0,
|
|
||||||
any.bz2 ==1.0.1.1,
|
|
||||||
bz2 -cross +with-bzlib,
|
|
||||||
any.bzip2-clib ==1.0.8,
|
|
||||||
any.bzlib-conduit ==0.3.0.3,
|
|
||||||
any.c2hs ==0.28.8,
|
|
||||||
c2hs +base3 -regression,
|
|
||||||
any.cabal-install-parsers ==0.6.1.1,
|
|
||||||
any.cabal-plan ==0.7.3.0,
|
|
||||||
cabal-plan -_ -exe -license-report,
|
|
||||||
any.call-stack ==0.4.0,
|
|
||||||
any.case-insensitive ==1.2.1.0,
|
|
||||||
any.casing ==0.1.4.1,
|
|
||||||
any.cereal ==0.5.8.3,
|
|
||||||
cereal -bytestring-builder,
|
|
||||||
any.colour ==2.3.6,
|
|
||||||
any.comonad ==5.0.8,
|
|
||||||
comonad +containers +distributive +indexed-traversable,
|
|
||||||
any.conduit ==1.3.5,
|
|
||||||
any.conduit-extra ==1.3.6,
|
|
||||||
any.conduit-zstd ==0.0.2.0,
|
|
||||||
any.config-ini ==0.2.7.0,
|
|
||||||
config-ini -enable-doctests,
|
|
||||||
any.containers ==0.6.5.1,
|
|
||||||
any.contravariant ==1.5.5,
|
|
||||||
contravariant +semigroups +statevar +tagged,
|
|
||||||
any.cryptohash-sha256 ==0.11.102.1,
|
|
||||||
cryptohash-sha256 -exe +use-cbits,
|
|
||||||
any.data-array-byte ==0.1.0.1,
|
|
||||||
any.data-clist ==0.2,
|
|
||||||
any.data-default-class ==0.1.2.0,
|
|
||||||
any.data-fix ==0.3.2,
|
|
||||||
any.deepseq ==1.4.6.1,
|
|
||||||
any.digest ==0.0.2.1,
|
|
||||||
digest -have_arm64_crc32c -have_builtin_prefetch -have_mm_prefetch -have_sse42 -have_strong_getauxval -have_weak_getauxval +pkg-config,
|
|
||||||
any.directory ==1.3.6.2 || ==1.3.8.3,
|
|
||||||
directory -os-string,
|
|
||||||
any.disk-free-space ==0.1.0.1,
|
|
||||||
any.distributive ==0.6.2.1,
|
|
||||||
distributive +semigroups +tagged,
|
|
||||||
any.dlist ==1.0,
|
|
||||||
dlist -werror,
|
|
||||||
any.exceptions ==0.10.4,
|
|
||||||
any.file-uri ==0.1.0.0,
|
|
||||||
any.filepath ==1.4.2.2 || ==1.4.101.0,
|
|
||||||
filepath -cpphs,
|
|
||||||
any.foldable1-classes-compat ==0.1,
|
|
||||||
foldable1-classes-compat +tagged,
|
|
||||||
any.free ==5.2,
|
|
||||||
any.fusion-plugin-types ==0.1.0,
|
|
||||||
any.generic-arbitrary ==0.2.2,
|
|
||||||
any.generically ==0.1.1,
|
|
||||||
any.ghc-bignum ==1.2,
|
|
||||||
any.ghc-boot-th ==9.2.8,
|
|
||||||
any.ghc-prim ==0.8.0,
|
|
||||||
any.happy ==1.20.1.1,
|
|
||||||
any.hashable ==1.4.3.0,
|
|
||||||
hashable +integer-gmp -random-initial-seed,
|
|
||||||
any.haskell-lexer ==1.1.1,
|
|
||||||
any.haskus-utils-data ==1.4,
|
|
||||||
any.haskus-utils-types ==1.5.1,
|
|
||||||
any.haskus-utils-variant ==3.3,
|
|
||||||
any.heaps ==0.4,
|
|
||||||
any.hsc2hs ==0.68.8,
|
|
||||||
hsc2hs -in-ghc-tree,
|
|
||||||
any.hspec ==2.10.10,
|
|
||||||
any.hspec-core ==2.10.10,
|
|
||||||
any.hspec-discover ==2.10.10,
|
|
||||||
any.hspec-expectations ==0.8.2,
|
|
||||||
any.hspec-golden-aeson ==0.9.0.0,
|
|
||||||
any.indexed-profunctors ==0.1.1.1,
|
|
||||||
any.indexed-traversable ==0.1.3,
|
|
||||||
any.indexed-traversable-instances ==0.1.1.2,
|
|
||||||
any.integer-conversion ==0.1.0.1,
|
|
||||||
any.integer-logarithms ==1.0.3.1,
|
|
||||||
integer-logarithms -check-bounds +integer-gmp,
|
|
||||||
any.language-c ==0.9.3,
|
|
||||||
language-c -allwarnings +iecfpextension +usebytestrings,
|
|
||||||
any.libyaml-clib ==0.2.5,
|
|
||||||
any.libyaml-streamly ==0.2.2.1,
|
|
||||||
libyaml-streamly -no-unicode -system-libyaml,
|
|
||||||
any.lockfree-queue ==0.2.4,
|
|
||||||
any.lukko ==0.1.1.3,
|
|
||||||
lukko +ofd-locking,
|
|
||||||
any.lzma-static ==5.2.5.5,
|
|
||||||
any.megaparsec ==9.2.2,
|
|
||||||
megaparsec -dev,
|
|
||||||
any.microlens ==0.4.13.1,
|
|
||||||
any.microlens-mtl ==0.2.0.3,
|
|
||||||
any.microlens-th ==0.4.3.14,
|
|
||||||
any.monad-control ==1.0.3.1,
|
|
||||||
any.mono-traversable ==1.0.17.0,
|
|
||||||
any.mtl ==2.2.2,
|
|
||||||
any.mtl-compat ==0.2.2,
|
|
||||||
mtl-compat -two-point-one -two-point-two,
|
|
||||||
any.network ==3.1.4.0,
|
|
||||||
network -devel,
|
|
||||||
any.network-uri ==2.6.4.2,
|
|
||||||
any.optics ==0.4.2.1,
|
|
||||||
any.optics-core ==0.4.1.1,
|
|
||||||
optics-core -explicit-generic-labels,
|
|
||||||
any.optics-extra ==0.4.2.1,
|
|
||||||
any.optics-th ==0.4.1,
|
|
||||||
any.optparse-applicative ==0.17.1.0,
|
|
||||||
optparse-applicative +process,
|
|
||||||
any.os-release ==1.0.2.1,
|
|
||||||
os-release -devel,
|
|
||||||
any.parsec ==3.1.17.0,
|
|
||||||
any.parser-combinators ==1.3.0,
|
|
||||||
parser-combinators -dev,
|
|
||||||
any.pretty ==1.1.3.6,
|
|
||||||
any.pretty-terminal ==0.1.0.0,
|
|
||||||
any.primitive ==0.8.0.0,
|
|
||||||
any.process ==1.6.16.0 || ==1.6.18.0,
|
|
||||||
any.profunctors ==5.6.2,
|
|
||||||
any.quickcheck-arbitrary-adt ==0.3.1.0,
|
|
||||||
any.quickcheck-io ==0.2.0,
|
|
||||||
any.random ==1.2.1.2,
|
|
||||||
any.recursion-schemes ==5.2.2.5,
|
|
||||||
recursion-schemes +template-haskell,
|
|
||||||
any.regex-base ==0.94.0.2,
|
|
||||||
any.regex-posix ==0.96.0.1,
|
|
||||||
regex-posix -_regex-posix-clib,
|
|
||||||
any.regex-posix-clib ==2.7,
|
|
||||||
any.resourcet ==1.2.6,
|
|
||||||
any.retry ==0.9.3.1,
|
|
||||||
retry -lib-werror,
|
|
||||||
any.rts ==1.0.2,
|
|
||||||
any.safe ==0.3.21,
|
|
||||||
any.safe-exceptions ==0.1.7.4,
|
|
||||||
any.scientific ==0.3.7.0,
|
|
||||||
scientific -bytestring-builder -integer-simple,
|
|
||||||
any.semialign ==1.3,
|
|
||||||
semialign +semigroupoids,
|
|
||||||
any.semigroupoids ==6.0.0.1,
|
|
||||||
semigroupoids +comonad +containers +contravariant +distributive +tagged +unordered-containers,
|
|
||||||
any.setenv ==0.1.1.3,
|
|
||||||
any.split ==0.2.5,
|
|
||||||
any.splitmix ==0.1.0.5,
|
|
||||||
splitmix -optimised-mixer,
|
|
||||||
any.stm ==2.5.0.2,
|
|
||||||
any.streaming-commons ==0.2.2.6,
|
|
||||||
streaming-commons -use-bytestring-builder,
|
|
||||||
any.streamly ==0.8.3,
|
|
||||||
streamly -debug -dev -fusion-plugin -has-llvm -inspection -limit-build-mem -no-fusion +opt -streamk -streamly-core -use-c-malloc +use-unliftio,
|
|
||||||
any.strict ==0.5,
|
|
||||||
any.strict-base ==0.4.0.0,
|
|
||||||
any.tagged ==0.8.8,
|
|
||||||
tagged +deepseq +transformers,
|
|
||||||
any.tagsoup ==0.14.8,
|
|
||||||
any.tar ==0.6.0.0,
|
|
||||||
any.tasty ==1.5,
|
|
||||||
tasty +unix,
|
|
||||||
any.tasty-hunit ==0.10.1,
|
|
||||||
any.template-haskell ==2.18.0.0,
|
|
||||||
any.temporary ==1.3,
|
|
||||||
any.text ==2.0.2,
|
|
||||||
text -developer -simdutf,
|
|
||||||
any.text-binary ==0.2.1.1,
|
|
||||||
any.text-iso8601 ==0.1,
|
|
||||||
any.text-short ==0.1.5,
|
|
||||||
text-short -asserts,
|
|
||||||
any.text-zipper ==0.13,
|
|
||||||
any.tf-random ==0.5,
|
|
||||||
any.th-abstraction ==0.6.0.0,
|
|
||||||
any.th-compat ==0.1.4,
|
|
||||||
any.th-lift ==0.8.4,
|
|
||||||
any.th-lift-instances ==0.1.20,
|
|
||||||
any.these ==1.2,
|
|
||||||
any.time ==1.11.1.1 || ==1.11.1.2,
|
|
||||||
any.time-compat ==1.9.6.1,
|
|
||||||
time-compat -old-locale,
|
|
||||||
any.transformers ==0.5.6.2,
|
|
||||||
any.transformers-base ==0.4.6,
|
|
||||||
transformers-base +orphaninstances,
|
|
||||||
any.transformers-compat ==0.7.2,
|
|
||||||
transformers-compat -five +five-three -four +generic-deriving +mtl -three -two,
|
|
||||||
any.typed-process ==0.2.11.1,
|
|
||||||
any.unicode-data ==0.3.1,
|
|
||||||
unicode-data -ucd2haskell,
|
|
||||||
any.unix-compat ==0.7.1,
|
|
||||||
unix-compat -old-time,
|
|
||||||
any.unliftio-core ==0.2.1.0,
|
|
||||||
any.unordered-containers ==0.2.20,
|
|
||||||
unordered-containers -debug,
|
|
||||||
any.uri-bytestring ==0.3.3.1,
|
|
||||||
uri-bytestring -lib-werror,
|
|
||||||
any.utf8-string ==1.0.2,
|
|
||||||
any.uuid-types ==1.0.5.1,
|
|
||||||
any.vector ==0.13.1.0,
|
|
||||||
vector +boundschecks -internalchecks -unsafechecks -wall,
|
|
||||||
any.vector-algorithms ==0.9.0.1,
|
|
||||||
vector-algorithms +bench +boundschecks -internalchecks -llvm +properties -unsafechecks,
|
|
||||||
any.vector-binary-instances ==0.2.5.2,
|
|
||||||
any.vector-stream ==0.1.0.1,
|
|
||||||
any.versions ==6.0.6,
|
|
||||||
any.vty ==6.2,
|
|
||||||
any.vty-crossplatform ==0.4.0.0,
|
|
||||||
vty-crossplatform -demos,
|
|
||||||
any.vty-windows ==0.2.0.2,
|
|
||||||
any.witherable ==0.4.2,
|
|
||||||
any.word-wrap ==0.5,
|
|
||||||
any.word8 ==0.1.3,
|
|
||||||
any.yaml-streamly ==0.12.4,
|
|
||||||
yaml-streamly +no-examples +no-exe,
|
|
||||||
any.zip ==2.0.0,
|
|
||||||
zip -dev -disable-bzip2 -disable-zstd,
|
|
||||||
any.zlib ==0.6.3.0,
|
|
||||||
zlib +bundled-c-zlib -non-blocking-ffi -pkg-config,
|
|
||||||
any.zstd ==0.1.3.0,
|
|
||||||
zstd +standalone
|
|
||||||
index-state: hackage.haskell.org 2024-03-15T23:51:46Z
|
|
@ -1,8 +0,0 @@
|
|||||||
if os(mingw32)
|
|
||||||
import: cabal.ghc928.Win32.project
|
|
||||||
import: cabal.ghc928.Win32.project.freeze
|
|
||||||
else
|
|
||||||
import: cabal.ghc928.Unix.project
|
|
||||||
import: cabal.ghc928.Unix.project.freeze
|
|
||||||
|
|
||||||
with-compiler: ghc-9.2.8
|
|
@ -1,60 +0,0 @@
|
|||||||
packages: ./ghcup.cabal
|
|
||||||
|
|
||||||
optional-packages: ./vendored/*/*.cabal
|
|
||||||
|
|
||||||
if impl(ghc < 9.0)
|
|
||||||
package ghcup
|
|
||||||
flags: +tui -tar
|
|
||||||
else
|
|
||||||
package ghcup
|
|
||||||
flags: +tui +tar
|
|
||||||
|
|
||||||
constraints: http-io-streams -brotli,
|
|
||||||
any.aeson >= 2.0.1.0,
|
|
||||||
any.hsc2hs ==0.68.8,
|
|
||||||
bzlib-conduit >= 0.3.0.3,
|
|
||||||
bz2 >= 1.0.1.1,
|
|
||||||
bzlib >= 0.5.2.0,
|
|
||||||
directory >= 1.3.8.3,
|
|
||||||
filepath == 1.4.101.0 || == 1.4.300.1 || >= 1.5.2.0
|
|
||||||
|
|
||||||
if os(mingw32)
|
|
||||||
constraints: zlib +bundled-c-zlib,
|
|
||||||
lzma +static,
|
|
||||||
text -simdutf,
|
|
||||||
vty-windows >=0.2.0.2
|
|
||||||
|
|
||||||
if impl(ghc >= 9.4)
|
|
||||||
constraints: language-c >= 0.9.3
|
|
||||||
|
|
||||||
|
|
||||||
source-repository-package
|
|
||||||
type: git
|
|
||||||
location: https://github.com/haskell/tar.git
|
|
||||||
tag: d94a988be4311b830149a9f8fc16739927e5fc1c
|
|
||||||
|
|
||||||
source-repository-package
|
|
||||||
type: git
|
|
||||||
location: https://github.com/hasufell/uri-bytestring.git
|
|
||||||
tag: 4fb5ed14b500c192e6e7a97f6b2b1eb478806001
|
|
||||||
|
|
||||||
package libarchive
|
|
||||||
flags: -system-libarchive
|
|
||||||
|
|
||||||
package aeson-pretty
|
|
||||||
flags: +lib-only
|
|
||||||
|
|
||||||
package cabal-plan
|
|
||||||
flags: -exe
|
|
||||||
|
|
||||||
package aeson
|
|
||||||
flags: +ordered-keymap
|
|
||||||
|
|
||||||
package streamly
|
|
||||||
flags: +use-unliftio
|
|
||||||
|
|
||||||
package *
|
|
||||||
test-show-details: direct
|
|
||||||
|
|
||||||
allow-newer: cabal-install-parsers:tar, streamly:Win32
|
|
||||||
|
|
@ -1,271 +0,0 @@
|
|||||||
active-repositories: hackage.haskell.org:merge
|
|
||||||
constraints: any.Cabal ==3.10.2.1,
|
|
||||||
any.Cabal-syntax ==3.10.2.0,
|
|
||||||
any.HUnit ==1.6.2.0,
|
|
||||||
any.HsOpenSSL ==0.11.7.6,
|
|
||||||
HsOpenSSL -fast-bignum -homebrew-openssl -macports-openssl -use-pkg-config,
|
|
||||||
any.OneTuple ==0.4.1.1,
|
|
||||||
any.QuickCheck ==2.14.3,
|
|
||||||
QuickCheck -old-random +templatehaskell,
|
|
||||||
any.StateVar ==1.2.2,
|
|
||||||
any.abstract-deque ==0.3,
|
|
||||||
abstract-deque -usecas,
|
|
||||||
any.aeson ==2.2.1.0,
|
|
||||||
aeson +ordered-keymap,
|
|
||||||
any.aeson-pretty ==0.8.10,
|
|
||||||
aeson-pretty +lib-only,
|
|
||||||
any.alex ==3.5.1.0,
|
|
||||||
any.ansi-terminal ==1.0.2,
|
|
||||||
ansi-terminal -example,
|
|
||||||
any.ansi-terminal-types ==0.11.5,
|
|
||||||
any.ansi-wl-pprint ==0.6.9,
|
|
||||||
ansi-wl-pprint -example,
|
|
||||||
any.array ==0.5.4.0,
|
|
||||||
any.assoc ==1.1,
|
|
||||||
assoc +tagged,
|
|
||||||
any.async ==2.2.5,
|
|
||||||
async -bench,
|
|
||||||
any.atomic-primops ==0.8.5,
|
|
||||||
atomic-primops -debug,
|
|
||||||
any.attoparsec ==0.14.4,
|
|
||||||
attoparsec -developer,
|
|
||||||
any.base ==4.17.2.1,
|
|
||||||
any.base-compat ==0.13.1,
|
|
||||||
any.base-orphans ==0.9.1,
|
|
||||||
any.base16-bytestring ==1.0.2.0,
|
|
||||||
any.base64-bytestring ==1.2.1.0,
|
|
||||||
any.bifunctors ==5.6.1,
|
|
||||||
bifunctors +tagged,
|
|
||||||
any.bimap ==0.5.0,
|
|
||||||
any.binary ==0.8.9.1,
|
|
||||||
any.binary-instances ==1.0.4,
|
|
||||||
any.binary-orphans ==1.0.4.1,
|
|
||||||
any.bindings-DSL ==1.0.25,
|
|
||||||
any.bitvec ==1.1.5.0,
|
|
||||||
bitvec +simd,
|
|
||||||
any.blaze-builder ==0.4.2.3,
|
|
||||||
any.brick ==2.1.1,
|
|
||||||
brick -demos,
|
|
||||||
any.bytestring ==0.11.5.3,
|
|
||||||
any.bz2 ==1.0.1.1,
|
|
||||||
bz2 -cross +with-bzlib,
|
|
||||||
any.bzip2-clib ==1.0.8,
|
|
||||||
any.bzlib-conduit ==0.3.0.3,
|
|
||||||
any.c2hs ==0.28.8,
|
|
||||||
c2hs +base3 -regression,
|
|
||||||
any.cabal-install-parsers ==0.6.1.1,
|
|
||||||
any.cabal-plan ==0.7.3.0,
|
|
||||||
cabal-plan -_ -exe -license-report,
|
|
||||||
any.call-stack ==0.4.0,
|
|
||||||
any.case-insensitive ==1.2.1.0,
|
|
||||||
any.casing ==0.1.4.1,
|
|
||||||
any.cereal ==0.5.8.3,
|
|
||||||
cereal -bytestring-builder,
|
|
||||||
any.colour ==2.3.6,
|
|
||||||
any.comonad ==5.0.8,
|
|
||||||
comonad +containers +distributive +indexed-traversable,
|
|
||||||
any.conduit ==1.3.5,
|
|
||||||
any.conduit-extra ==1.3.6,
|
|
||||||
any.conduit-zstd ==0.0.2.0,
|
|
||||||
any.config-ini ==0.2.7.0,
|
|
||||||
config-ini -enable-doctests,
|
|
||||||
any.containers ==0.6.7,
|
|
||||||
any.contravariant ==1.5.5,
|
|
||||||
contravariant +semigroups +statevar +tagged,
|
|
||||||
any.cryptohash-sha1 ==0.11.101.0,
|
|
||||||
any.cryptohash-sha256 ==0.11.102.1,
|
|
||||||
cryptohash-sha256 -exe +use-cbits,
|
|
||||||
any.data-clist ==0.2,
|
|
||||||
any.data-default-class ==0.1.2.0,
|
|
||||||
any.data-fix ==0.3.2,
|
|
||||||
any.deepseq ==1.4.8.0,
|
|
||||||
any.digest ==0.0.2.1,
|
|
||||||
digest -have_arm64_crc32c -have_builtin_prefetch -have_mm_prefetch -have_sse42 -have_strong_getauxval -have_weak_getauxval +pkg-config,
|
|
||||||
any.directory ==1.3.8.3,
|
|
||||||
directory -os-string,
|
|
||||||
any.disk-free-space ==0.1.0.1,
|
|
||||||
any.distributive ==0.6.2.1,
|
|
||||||
distributive +semigroups +tagged,
|
|
||||||
any.dlist ==1.0,
|
|
||||||
dlist -werror,
|
|
||||||
any.exceptions ==0.10.5,
|
|
||||||
any.file-uri ==0.1.0.0,
|
|
||||||
any.filepath ==1.4.101.0,
|
|
||||||
filepath -cpphs,
|
|
||||||
any.foldable1-classes-compat ==0.1,
|
|
||||||
foldable1-classes-compat +tagged,
|
|
||||||
any.free ==5.2,
|
|
||||||
any.fusion-plugin-types ==0.1.0,
|
|
||||||
any.generic-arbitrary ==0.2.2,
|
|
||||||
any.generically ==0.1.1,
|
|
||||||
any.ghc-bignum ==1.3,
|
|
||||||
any.ghc-boot-th ==9.4.8,
|
|
||||||
any.ghc-byteorder ==4.11.0.0.10,
|
|
||||||
any.ghc-prim ==0.9.1,
|
|
||||||
any.happy ==1.20.1.1,
|
|
||||||
any.hashable ==1.4.3.0,
|
|
||||||
hashable +integer-gmp -random-initial-seed,
|
|
||||||
any.haskell-lexer ==1.1.1,
|
|
||||||
any.haskus-utils-data ==1.4,
|
|
||||||
any.haskus-utils-types ==1.5.1,
|
|
||||||
any.haskus-utils-variant ==3.3,
|
|
||||||
any.heaps ==0.4,
|
|
||||||
any.hsc2hs ==0.68.8,
|
|
||||||
hsc2hs -in-ghc-tree,
|
|
||||||
any.hspec ==2.10.10,
|
|
||||||
any.hspec-core ==2.10.10,
|
|
||||||
any.hspec-discover ==2.10.10,
|
|
||||||
any.hspec-expectations ==0.8.2,
|
|
||||||
any.hspec-golden-aeson ==0.9.0.0,
|
|
||||||
any.http-io-streams ==0.1.7.0,
|
|
||||||
http-io-streams -brotli +fast-xor,
|
|
||||||
any.indexed-profunctors ==0.1.1.1,
|
|
||||||
any.indexed-traversable ==0.1.3,
|
|
||||||
any.indexed-traversable-instances ==0.1.1.2,
|
|
||||||
any.integer-conversion ==0.1.0.1,
|
|
||||||
any.integer-logarithms ==1.0.3.1,
|
|
||||||
integer-logarithms -check-bounds +integer-gmp,
|
|
||||||
any.io-streams ==1.5.2.2,
|
|
||||||
io-streams +network -nointeractivetests +zlib,
|
|
||||||
any.language-c ==0.9.3,
|
|
||||||
language-c -allwarnings +iecfpextension +usebytestrings,
|
|
||||||
any.libyaml-streamly ==0.2.2.1,
|
|
||||||
libyaml-streamly -no-unicode +system-libyaml,
|
|
||||||
any.lockfree-queue ==0.2.4,
|
|
||||||
any.lukko ==0.1.1.3,
|
|
||||||
lukko +ofd-locking,
|
|
||||||
any.lzma-static ==5.2.5.5,
|
|
||||||
any.megaparsec ==9.2.2,
|
|
||||||
megaparsec -dev,
|
|
||||||
any.microlens ==0.4.13.1,
|
|
||||||
any.microlens-mtl ==0.2.0.3,
|
|
||||||
any.microlens-th ==0.4.3.14,
|
|
||||||
any.monad-control ==1.0.3.1,
|
|
||||||
any.mono-traversable ==1.0.17.0,
|
|
||||||
any.mtl ==2.2.2,
|
|
||||||
any.mtl-compat ==0.2.2,
|
|
||||||
mtl-compat -two-point-one -two-point-two,
|
|
||||||
any.network ==3.1.4.0,
|
|
||||||
network -devel,
|
|
||||||
any.network-uri ==2.6.4.2,
|
|
||||||
any.openssl-streams ==1.2.3.0,
|
|
||||||
any.optics ==0.4.2.1,
|
|
||||||
any.optics-core ==0.4.1.1,
|
|
||||||
optics-core -explicit-generic-labels,
|
|
||||||
any.optics-extra ==0.4.2.1,
|
|
||||||
any.optics-th ==0.4.1,
|
|
||||||
any.optparse-applicative ==0.17.1.0,
|
|
||||||
optparse-applicative +process,
|
|
||||||
any.os-release ==1.0.2.1,
|
|
||||||
os-release -devel,
|
|
||||||
any.parsec ==3.1.16.1,
|
|
||||||
any.parser-combinators ==1.3.0,
|
|
||||||
parser-combinators -dev,
|
|
||||||
any.pretty ==1.1.3.6,
|
|
||||||
any.pretty-terminal ==0.1.0.0,
|
|
||||||
any.primitive ==0.8.0.0,
|
|
||||||
any.process ==1.6.18.0,
|
|
||||||
any.profunctors ==5.6.2,
|
|
||||||
any.quickcheck-arbitrary-adt ==0.3.1.0,
|
|
||||||
any.quickcheck-io ==0.2.0,
|
|
||||||
any.random ==1.2.1.2,
|
|
||||||
any.recursion-schemes ==5.2.2.5,
|
|
||||||
recursion-schemes +template-haskell,
|
|
||||||
any.regex-base ==0.94.0.2,
|
|
||||||
any.regex-posix ==0.96.0.1,
|
|
||||||
regex-posix -_regex-posix-clib,
|
|
||||||
any.resourcet ==1.2.6,
|
|
||||||
any.retry ==0.9.3.1,
|
|
||||||
retry -lib-werror,
|
|
||||||
any.rts ==1.0.2,
|
|
||||||
any.safe ==0.3.21,
|
|
||||||
any.safe-exceptions ==0.1.7.4,
|
|
||||||
any.scientific ==0.3.7.0,
|
|
||||||
scientific -bytestring-builder -integer-simple,
|
|
||||||
any.semialign ==1.3,
|
|
||||||
semialign +semigroupoids,
|
|
||||||
any.semigroupoids ==6.0.0.1,
|
|
||||||
semigroupoids +comonad +containers +contravariant +distributive +tagged +unordered-containers,
|
|
||||||
any.setenv ==0.1.1.3,
|
|
||||||
any.split ==0.2.5,
|
|
||||||
any.splitmix ==0.1.0.5,
|
|
||||||
splitmix -optimised-mixer,
|
|
||||||
any.stm ==2.5.1.0,
|
|
||||||
any.streaming-commons ==0.2.2.6,
|
|
||||||
streaming-commons -use-bytestring-builder,
|
|
||||||
any.streamly ==0.8.3,
|
|
||||||
streamly -debug -dev -fusion-plugin -has-llvm -inspection -limit-build-mem -no-fusion +opt -streamk -streamly-core -use-c-malloc +use-unliftio,
|
|
||||||
any.strict ==0.5,
|
|
||||||
any.strict-base ==0.4.0.0,
|
|
||||||
any.tagged ==0.8.8,
|
|
||||||
tagged +deepseq +transformers,
|
|
||||||
any.tagsoup ==0.14.8,
|
|
||||||
any.tar ==0.6.0.0,
|
|
||||||
any.tasty ==1.5,
|
|
||||||
tasty +unix,
|
|
||||||
any.tasty-hunit ==0.10.1,
|
|
||||||
any.template-haskell ==2.19.0.0,
|
|
||||||
any.temporary ==1.3,
|
|
||||||
any.terminal-progress-bar ==0.4.2,
|
|
||||||
any.terminal-size ==0.3.4,
|
|
||||||
any.terminfo ==0.4.1.5,
|
|
||||||
any.text ==2.0.2,
|
|
||||||
any.text-binary ==0.2.1.1,
|
|
||||||
any.text-iso8601 ==0.1,
|
|
||||||
any.text-short ==0.1.5,
|
|
||||||
text-short -asserts,
|
|
||||||
any.text-zipper ==0.13,
|
|
||||||
any.tf-random ==0.5,
|
|
||||||
any.th-abstraction ==0.6.0.0,
|
|
||||||
any.th-compat ==0.1.4,
|
|
||||||
any.th-lift ==0.8.4,
|
|
||||||
any.th-lift-instances ==0.1.20,
|
|
||||||
any.these ==1.2,
|
|
||||||
any.time ==1.11.1.2,
|
|
||||||
any.time-compat ==1.9.6.1,
|
|
||||||
time-compat -old-locale,
|
|
||||||
any.transformers ==0.5.6.2,
|
|
||||||
any.transformers-base ==0.4.6,
|
|
||||||
transformers-base +orphaninstances,
|
|
||||||
any.transformers-compat ==0.7.2,
|
|
||||||
transformers-compat -five +five-three -four +generic-deriving +mtl -three -two,
|
|
||||||
any.typed-process ==0.2.11.1,
|
|
||||||
any.unicode-data ==0.3.1,
|
|
||||||
unicode-data -ucd2haskell,
|
|
||||||
any.unix ==2.8.5.0,
|
|
||||||
unix -os-string,
|
|
||||||
any.unix-bytestring ==0.3.7.8,
|
|
||||||
any.unix-compat ==0.7.1,
|
|
||||||
unix-compat -old-time,
|
|
||||||
any.unliftio-core ==0.2.1.0,
|
|
||||||
any.unordered-containers ==0.2.20,
|
|
||||||
unordered-containers -debug,
|
|
||||||
any.uri-bytestring ==0.3.3.1,
|
|
||||||
uri-bytestring -lib-werror,
|
|
||||||
any.utf8-string ==1.0.2,
|
|
||||||
any.uuid-types ==1.0.5.1,
|
|
||||||
any.vector ==0.13.1.0,
|
|
||||||
vector +boundschecks -internalchecks -unsafechecks -wall,
|
|
||||||
any.vector-algorithms ==0.9.0.1,
|
|
||||||
vector-algorithms +bench +boundschecks -internalchecks -llvm +properties -unsafechecks,
|
|
||||||
any.vector-binary-instances ==0.2.5.2,
|
|
||||||
any.vector-stream ==0.1.0.1,
|
|
||||||
any.versions ==6.0.6,
|
|
||||||
any.vty ==6.2,
|
|
||||||
any.vty-crossplatform ==0.4.0.0,
|
|
||||||
vty-crossplatform -demos,
|
|
||||||
any.vty-unix ==0.2.0.0,
|
|
||||||
any.witherable ==0.4.2,
|
|
||||||
any.word-wrap ==0.5,
|
|
||||||
any.word8 ==0.1.3,
|
|
||||||
any.xor ==0.0.1.2,
|
|
||||||
any.yaml-streamly ==0.12.4,
|
|
||||||
yaml-streamly +no-examples +no-exe,
|
|
||||||
any.zip ==2.0.0,
|
|
||||||
zip -dev -disable-bzip2 -disable-zstd,
|
|
||||||
any.zlib ==0.6.3.0,
|
|
||||||
zlib -bundled-c-zlib -non-blocking-ffi -pkg-config,
|
|
||||||
any.zlib-bindings ==0.1.1.5,
|
|
||||||
any.zstd ==0.1.3.0,
|
|
||||||
zstd +standalone
|
|
||||||
index-state: hackage.haskell.org 2024-03-13T09:43:35Z
|
|
@ -1,61 +0,0 @@
|
|||||||
packages: ./ghcup.cabal
|
|
||||||
|
|
||||||
optional-packages: ./vendored/*/*.cabal
|
|
||||||
|
|
||||||
if impl(ghc < 9.0)
|
|
||||||
package ghcup
|
|
||||||
flags: +tui -tar
|
|
||||||
else
|
|
||||||
package ghcup
|
|
||||||
flags: +tui +tar
|
|
||||||
|
|
||||||
constraints: http-io-streams -brotli,
|
|
||||||
any.aeson >= 2.0.1.0,
|
|
||||||
any.hsc2hs ==0.68.8,
|
|
||||||
bzlib-conduit >= 0.3.0.3,
|
|
||||||
bz2 >= 1.0.1.1,
|
|
||||||
bzlib >= 0.5.2.0,
|
|
||||||
directory >= 1.3.8.3,
|
|
||||||
filepath == 1.4.101.0 || == 1.4.300.1 || >= 1.5.2.0
|
|
||||||
|
|
||||||
if os(mingw32)
|
|
||||||
constraints: zlib +bundled-c-zlib,
|
|
||||||
lzma +static,
|
|
||||||
text -simdutf,
|
|
||||||
vty-windows >=0.2.0.2
|
|
||||||
|
|
||||||
if impl(ghc >= 9.4)
|
|
||||||
constraints: language-c >= 0.9.3
|
|
||||||
|
|
||||||
|
|
||||||
source-repository-package
|
|
||||||
type: git
|
|
||||||
location: https://github.com/haskell/tar.git
|
|
||||||
tag: d94a988be4311b830149a9f8fc16739927e5fc1c
|
|
||||||
|
|
||||||
source-repository-package
|
|
||||||
type: git
|
|
||||||
location: https://github.com/hasufell/uri-bytestring.git
|
|
||||||
tag: 4fb5ed14b500c192e6e7a97f6b2b1eb478806001
|
|
||||||
|
|
||||||
package libarchive
|
|
||||||
flags: -system-libarchive
|
|
||||||
|
|
||||||
package aeson-pretty
|
|
||||||
flags: +lib-only
|
|
||||||
|
|
||||||
package cabal-plan
|
|
||||||
flags: -exe
|
|
||||||
|
|
||||||
package aeson
|
|
||||||
flags: +ordered-keymap
|
|
||||||
|
|
||||||
package streamly
|
|
||||||
flags: +use-unliftio
|
|
||||||
|
|
||||||
package *
|
|
||||||
test-show-details: direct
|
|
||||||
|
|
||||||
allow-newer: cabal-install-parsers:tar, streamly:Win32
|
|
||||||
|
|
||||||
|
|
@ -1,256 +0,0 @@
|
|||||||
active-repositories: hackage.haskell.org:merge
|
|
||||||
constraints: any.Cabal ==3.10.2.1,
|
|
||||||
any.Cabal-syntax ==3.10.2.0,
|
|
||||||
any.HUnit ==1.6.2.0,
|
|
||||||
any.OneTuple ==0.4.1.1,
|
|
||||||
any.QuickCheck ==2.14.3,
|
|
||||||
QuickCheck -old-random +templatehaskell,
|
|
||||||
any.StateVar ==1.2.2,
|
|
||||||
any.Win32 ==2.12.0.1 || ==2.13.4.0,
|
|
||||||
any.abstract-deque ==0.3,
|
|
||||||
abstract-deque -usecas,
|
|
||||||
any.aeson ==2.2.1.0,
|
|
||||||
aeson +ordered-keymap,
|
|
||||||
any.aeson-pretty ==0.8.10,
|
|
||||||
aeson-pretty +lib-only,
|
|
||||||
any.alex ==3.5.1.0,
|
|
||||||
any.ansi-terminal ==1.0.2,
|
|
||||||
ansi-terminal -example,
|
|
||||||
any.ansi-terminal-types ==0.11.5,
|
|
||||||
any.ansi-wl-pprint ==0.6.9,
|
|
||||||
ansi-wl-pprint -example,
|
|
||||||
any.array ==0.5.4.0,
|
|
||||||
any.assoc ==1.1,
|
|
||||||
assoc +tagged,
|
|
||||||
any.async ==2.2.5,
|
|
||||||
async -bench,
|
|
||||||
any.atomic-primops ==0.8.5,
|
|
||||||
atomic-primops -debug,
|
|
||||||
any.attoparsec ==0.14.4,
|
|
||||||
attoparsec -developer,
|
|
||||||
any.base ==4.17.2.1,
|
|
||||||
any.base-compat ==0.13.1,
|
|
||||||
any.base-orphans ==0.9.1,
|
|
||||||
any.base16-bytestring ==1.0.2.0,
|
|
||||||
any.bifunctors ==5.6.1,
|
|
||||||
bifunctors +tagged,
|
|
||||||
any.bimap ==0.5.0,
|
|
||||||
any.binary ==0.8.9.1,
|
|
||||||
any.binary-instances ==1.0.4,
|
|
||||||
any.binary-orphans ==1.0.4.1,
|
|
||||||
any.bindings-DSL ==1.0.25,
|
|
||||||
any.bitvec ==1.1.5.0,
|
|
||||||
bitvec +simd,
|
|
||||||
any.blaze-builder ==0.4.2.3,
|
|
||||||
any.brick ==2.1.1,
|
|
||||||
brick -demos,
|
|
||||||
any.bytestring ==0.11.5.3,
|
|
||||||
any.bz2 ==1.0.1.1,
|
|
||||||
bz2 -cross +with-bzlib,
|
|
||||||
any.bzip2-clib ==1.0.8,
|
|
||||||
any.bzlib-conduit ==0.3.0.3,
|
|
||||||
any.c2hs ==0.28.8,
|
|
||||||
c2hs +base3 -regression,
|
|
||||||
any.cabal-install-parsers ==0.6.1.1,
|
|
||||||
any.cabal-plan ==0.7.3.0,
|
|
||||||
cabal-plan -_ -exe -license-report,
|
|
||||||
any.call-stack ==0.4.0,
|
|
||||||
any.case-insensitive ==1.2.1.0,
|
|
||||||
any.casing ==0.1.4.1,
|
|
||||||
any.cereal ==0.5.8.3,
|
|
||||||
cereal -bytestring-builder,
|
|
||||||
any.colour ==2.3.6,
|
|
||||||
any.comonad ==5.0.8,
|
|
||||||
comonad +containers +distributive +indexed-traversable,
|
|
||||||
any.conduit ==1.3.5,
|
|
||||||
any.conduit-extra ==1.3.6,
|
|
||||||
any.conduit-zstd ==0.0.2.0,
|
|
||||||
any.config-ini ==0.2.7.0,
|
|
||||||
config-ini -enable-doctests,
|
|
||||||
any.containers ==0.6.7,
|
|
||||||
any.contravariant ==1.5.5,
|
|
||||||
contravariant +semigroups +statevar +tagged,
|
|
||||||
any.cryptohash-sha256 ==0.11.102.1,
|
|
||||||
cryptohash-sha256 -exe +use-cbits,
|
|
||||||
any.data-clist ==0.2,
|
|
||||||
any.data-default-class ==0.1.2.0,
|
|
||||||
any.data-fix ==0.3.2,
|
|
||||||
any.deepseq ==1.4.8.0,
|
|
||||||
any.digest ==0.0.2.1,
|
|
||||||
digest -have_arm64_crc32c -have_builtin_prefetch -have_mm_prefetch -have_sse42 -have_strong_getauxval -have_weak_getauxval +pkg-config,
|
|
||||||
any.directory ==1.3.7.1 || ==1.3.8.3,
|
|
||||||
directory -os-string,
|
|
||||||
any.disk-free-space ==0.1.0.1,
|
|
||||||
any.distributive ==0.6.2.1,
|
|
||||||
distributive +semigroups +tagged,
|
|
||||||
any.dlist ==1.0,
|
|
||||||
dlist -werror,
|
|
||||||
any.exceptions ==0.10.5,
|
|
||||||
any.file-uri ==0.1.0.0,
|
|
||||||
any.filepath ==1.4.2.2 || ==1.4.101.0,
|
|
||||||
filepath -cpphs,
|
|
||||||
any.foldable1-classes-compat ==0.1,
|
|
||||||
foldable1-classes-compat +tagged,
|
|
||||||
any.free ==5.2,
|
|
||||||
any.fusion-plugin-types ==0.1.0,
|
|
||||||
any.generic-arbitrary ==0.2.2,
|
|
||||||
any.generically ==0.1.1,
|
|
||||||
any.ghc-bignum ==1.3,
|
|
||||||
any.ghc-boot-th ==9.4.8,
|
|
||||||
any.ghc-prim ==0.9.1,
|
|
||||||
any.happy ==1.20.1.1,
|
|
||||||
any.hashable ==1.4.3.0,
|
|
||||||
hashable +integer-gmp -random-initial-seed,
|
|
||||||
any.haskell-lexer ==1.1.1,
|
|
||||||
any.haskus-utils-data ==1.4,
|
|
||||||
any.haskus-utils-types ==1.5.1,
|
|
||||||
any.haskus-utils-variant ==3.3,
|
|
||||||
any.heaps ==0.4,
|
|
||||||
any.hsc2hs ==0.68.8,
|
|
||||||
hsc2hs -in-ghc-tree,
|
|
||||||
any.hspec ==2.10.10,
|
|
||||||
any.hspec-core ==2.10.10,
|
|
||||||
any.hspec-discover ==2.10.10,
|
|
||||||
any.hspec-expectations ==0.8.2,
|
|
||||||
any.hspec-golden-aeson ==0.9.0.0,
|
|
||||||
any.indexed-profunctors ==0.1.1.1,
|
|
||||||
any.indexed-traversable ==0.1.3,
|
|
||||||
any.indexed-traversable-instances ==0.1.1.2,
|
|
||||||
any.integer-conversion ==0.1.0.1,
|
|
||||||
any.integer-logarithms ==1.0.3.1,
|
|
||||||
integer-logarithms -check-bounds +integer-gmp,
|
|
||||||
any.language-c ==0.9.3,
|
|
||||||
language-c -allwarnings +iecfpextension +usebytestrings,
|
|
||||||
any.libyaml-clib ==0.2.5,
|
|
||||||
any.libyaml-streamly ==0.2.2.1,
|
|
||||||
libyaml-streamly -no-unicode -system-libyaml,
|
|
||||||
any.lockfree-queue ==0.2.4,
|
|
||||||
any.lukko ==0.1.1.3,
|
|
||||||
lukko +ofd-locking,
|
|
||||||
any.lzma-static ==5.2.5.5,
|
|
||||||
any.megaparsec ==9.2.2,
|
|
||||||
megaparsec -dev,
|
|
||||||
any.microlens ==0.4.13.1,
|
|
||||||
any.microlens-mtl ==0.2.0.3,
|
|
||||||
any.microlens-th ==0.4.3.14,
|
|
||||||
any.monad-control ==1.0.3.1,
|
|
||||||
any.mono-traversable ==1.0.17.0,
|
|
||||||
any.mtl ==2.2.2,
|
|
||||||
any.mtl-compat ==0.2.2,
|
|
||||||
mtl-compat -two-point-one -two-point-two,
|
|
||||||
any.network ==3.1.4.0,
|
|
||||||
network -devel,
|
|
||||||
any.network-uri ==2.6.4.2,
|
|
||||||
any.optics ==0.4.2.1,
|
|
||||||
any.optics-core ==0.4.1.1,
|
|
||||||
optics-core -explicit-generic-labels,
|
|
||||||
any.optics-extra ==0.4.2.1,
|
|
||||||
any.optics-th ==0.4.1,
|
|
||||||
any.optparse-applicative ==0.17.1.0,
|
|
||||||
optparse-applicative +process,
|
|
||||||
any.os-release ==1.0.2.1,
|
|
||||||
os-release -devel,
|
|
||||||
any.parsec ==3.1.16.1,
|
|
||||||
any.parser-combinators ==1.3.0,
|
|
||||||
parser-combinators -dev,
|
|
||||||
any.pretty ==1.1.3.6,
|
|
||||||
any.pretty-terminal ==0.1.0.0,
|
|
||||||
any.primitive ==0.8.0.0,
|
|
||||||
any.process ==1.6.18.0,
|
|
||||||
any.profunctors ==5.6.2,
|
|
||||||
any.quickcheck-arbitrary-adt ==0.3.1.0,
|
|
||||||
any.quickcheck-io ==0.2.0,
|
|
||||||
any.random ==1.2.1.2,
|
|
||||||
any.recursion-schemes ==5.2.2.5,
|
|
||||||
recursion-schemes +template-haskell,
|
|
||||||
any.regex-base ==0.94.0.2,
|
|
||||||
any.regex-posix ==0.96.0.1,
|
|
||||||
regex-posix -_regex-posix-clib,
|
|
||||||
any.regex-posix-clib ==2.7,
|
|
||||||
any.resourcet ==1.2.6,
|
|
||||||
any.retry ==0.9.3.1,
|
|
||||||
retry -lib-werror,
|
|
||||||
any.rts ==1.0.2,
|
|
||||||
any.safe ==0.3.21,
|
|
||||||
any.safe-exceptions ==0.1.7.4,
|
|
||||||
any.scientific ==0.3.7.0,
|
|
||||||
scientific -bytestring-builder -integer-simple,
|
|
||||||
any.semialign ==1.3,
|
|
||||||
semialign +semigroupoids,
|
|
||||||
any.semigroupoids ==6.0.0.1,
|
|
||||||
semigroupoids +comonad +containers +contravariant +distributive +tagged +unordered-containers,
|
|
||||||
any.setenv ==0.1.1.3,
|
|
||||||
any.split ==0.2.5,
|
|
||||||
any.splitmix ==0.1.0.5,
|
|
||||||
splitmix -optimised-mixer,
|
|
||||||
any.stm ==2.5.1.0,
|
|
||||||
any.streaming-commons ==0.2.2.6,
|
|
||||||
streaming-commons -use-bytestring-builder,
|
|
||||||
any.streamly ==0.8.3,
|
|
||||||
streamly -debug -dev -fusion-plugin -has-llvm -inspection -limit-build-mem -no-fusion +opt -streamk -streamly-core -use-c-malloc +use-unliftio,
|
|
||||||
any.strict ==0.5,
|
|
||||||
any.strict-base ==0.4.0.0,
|
|
||||||
any.tagged ==0.8.8,
|
|
||||||
tagged +deepseq +transformers,
|
|
||||||
any.tagsoup ==0.14.8,
|
|
||||||
any.tar ==0.6.0.0,
|
|
||||||
any.tasty ==1.5,
|
|
||||||
tasty +unix,
|
|
||||||
any.tasty-hunit ==0.10.1,
|
|
||||||
any.template-haskell ==2.19.0.0,
|
|
||||||
any.temporary ==1.3,
|
|
||||||
any.text ==2.0.2,
|
|
||||||
any.text-binary ==0.2.1.1,
|
|
||||||
any.text-iso8601 ==0.1,
|
|
||||||
any.text-short ==0.1.5,
|
|
||||||
text-short -asserts,
|
|
||||||
any.text-zipper ==0.13,
|
|
||||||
any.tf-random ==0.5,
|
|
||||||
any.th-abstraction ==0.6.0.0,
|
|
||||||
any.th-compat ==0.1.4,
|
|
||||||
any.th-lift ==0.8.4,
|
|
||||||
any.th-lift-instances ==0.1.20,
|
|
||||||
any.these ==1.2,
|
|
||||||
any.time ==1.11.1.2 || ==1.12.2,
|
|
||||||
any.time-compat ==1.9.6.1,
|
|
||||||
time-compat -old-locale,
|
|
||||||
any.transformers ==0.5.6.2,
|
|
||||||
any.transformers-base ==0.4.6,
|
|
||||||
transformers-base +orphaninstances,
|
|
||||||
any.transformers-compat ==0.7.2,
|
|
||||||
transformers-compat -five +five-three -four +generic-deriving +mtl -three -two,
|
|
||||||
any.typed-process ==0.2.11.1,
|
|
||||||
any.unicode-data ==0.3.1,
|
|
||||||
unicode-data -ucd2haskell,
|
|
||||||
any.unix-compat ==0.7.1,
|
|
||||||
unix-compat -old-time,
|
|
||||||
any.unliftio-core ==0.2.1.0,
|
|
||||||
any.unordered-containers ==0.2.20,
|
|
||||||
unordered-containers -debug,
|
|
||||||
any.uri-bytestring ==0.3.3.1,
|
|
||||||
uri-bytestring -lib-werror,
|
|
||||||
any.utf8-string ==1.0.2,
|
|
||||||
any.uuid-types ==1.0.5.1,
|
|
||||||
any.vector ==0.13.1.0,
|
|
||||||
vector +boundschecks -internalchecks -unsafechecks -wall,
|
|
||||||
any.vector-algorithms ==0.9.0.1,
|
|
||||||
vector-algorithms +bench +boundschecks -internalchecks -llvm +properties -unsafechecks,
|
|
||||||
any.vector-binary-instances ==0.2.5.2,
|
|
||||||
any.vector-stream ==0.1.0.1,
|
|
||||||
any.versions ==6.0.6,
|
|
||||||
any.vty ==6.2,
|
|
||||||
any.vty-crossplatform ==0.4.0.0,
|
|
||||||
vty-crossplatform -demos,
|
|
||||||
any.vty-windows ==0.2.0.2,
|
|
||||||
any.witherable ==0.4.2,
|
|
||||||
any.word-wrap ==0.5,
|
|
||||||
any.word8 ==0.1.3,
|
|
||||||
any.yaml-streamly ==0.12.4,
|
|
||||||
yaml-streamly +no-examples +no-exe,
|
|
||||||
any.zip ==2.0.0,
|
|
||||||
zip -dev -disable-bzip2 -disable-zstd,
|
|
||||||
any.zlib ==0.6.3.0,
|
|
||||||
zlib +bundled-c-zlib -non-blocking-ffi -pkg-config,
|
|
||||||
any.zstd ==0.1.3.0,
|
|
||||||
zstd +standalone
|
|
||||||
index-state: hackage.haskell.org 2024-03-15T23:51:46Z
|
|
@ -1,8 +0,0 @@
|
|||||||
if os(mingw32)
|
|
||||||
import: cabal.ghc948.Win32.project
|
|
||||||
import: cabal.ghc948.Win32.project.freeze
|
|
||||||
else
|
|
||||||
import: cabal.ghc948.Unix.project
|
|
||||||
import: cabal.ghc948.Unix.project.freeze
|
|
||||||
|
|
||||||
with-compiler: ghc-9.4.8
|
|
@ -2,41 +2,23 @@ packages: ./ghcup.cabal
|
|||||||
|
|
||||||
optional-packages: ./vendored/*/*.cabal
|
optional-packages: ./vendored/*/*.cabal
|
||||||
|
|
||||||
if impl(ghc < 9.0)
|
optimization: 2
|
||||||
|
|
||||||
package ghcup
|
package ghcup
|
||||||
flags: +tui -tar
|
tests: True
|
||||||
else
|
flags: +tui
|
||||||
package ghcup
|
|
||||||
flags: +tui +tar
|
|
||||||
|
|
||||||
constraints: http-io-streams -brotli,
|
|
||||||
any.aeson >= 2.0.1.0,
|
|
||||||
any.hsc2hs ==0.68.8,
|
|
||||||
bzlib-conduit >= 0.3.0.3,
|
|
||||||
bz2 >= 1.0.1.1,
|
|
||||||
bzlib >= 0.5.2.0,
|
|
||||||
directory >= 1.3.8.3,
|
|
||||||
filepath == 1.4.101.0 || == 1.4.300.1 || >= 1.5.2.0
|
|
||||||
|
|
||||||
if os(mingw32)
|
|
||||||
constraints: zlib +bundled-c-zlib,
|
|
||||||
lzma +static,
|
|
||||||
text -simdutf,
|
|
||||||
vty-windows >=0.2.0.2
|
|
||||||
|
|
||||||
if impl(ghc >= 9.4)
|
|
||||||
constraints: language-c >= 0.9.3
|
|
||||||
|
|
||||||
|
|
||||||
source-repository-package
|
source-repository-package
|
||||||
type: git
|
type: git
|
||||||
location: https://github.com/haskell/tar.git
|
location: https://github.com/bgamari/terminal-size
|
||||||
tag: d94a988be4311b830149a9f8fc16739927e5fc1c
|
tag: 34ea816bd63f75f800eedac12c6908c6f3736036
|
||||||
|
|
||||||
source-repository-package
|
source-repository-package
|
||||||
type: git
|
type: git
|
||||||
location: https://github.com/hasufell/uri-bytestring.git
|
location: https://github.com/hasufell/libarchive
|
||||||
tag: 4fb5ed14b500c192e6e7a97f6b2b1eb478806001
|
tag: 024a7e8ab7b4d3848dc64dca1e70a04831eedc99
|
||||||
|
|
||||||
|
constraints: http-io-streams -brotli
|
||||||
|
|
||||||
package libarchive
|
package libarchive
|
||||||
flags: -system-libarchive
|
flags: -system-libarchive
|
||||||
@ -47,14 +29,4 @@ package aeson-pretty
|
|||||||
package cabal-plan
|
package cabal-plan
|
||||||
flags: -exe
|
flags: -exe
|
||||||
|
|
||||||
package aeson
|
allow-newer: base, ghc-prim, template-haskell, language-c
|
||||||
flags: +ordered-keymap
|
|
||||||
|
|
||||||
package streamly
|
|
||||||
flags: +use-unliftio
|
|
||||||
|
|
||||||
package *
|
|
||||||
test-show-details: direct
|
|
||||||
|
|
||||||
allow-newer: cabal-install-parsers:tar, streamly:Win32
|
|
||||||
|
|
||||||
|
2
cabal.project.freeze
Normal file
2
cabal.project.freeze
Normal file
@ -0,0 +1,2 @@
|
|||||||
|
-- windows picks weird version
|
||||||
|
constraints: any.hsc2hs ==0.68.7
|
@ -1,68 +0,0 @@
|
|||||||
packages: ./ghcup.cabal
|
|
||||||
|
|
||||||
optional-packages: ./vendored/*/*.cabal
|
|
||||||
|
|
||||||
optimization: 2
|
|
||||||
|
|
||||||
package ghcup
|
|
||||||
flags: +tui -tar
|
|
||||||
|
|
||||||
if os(linux)
|
|
||||||
if arch(x86_64) || arch(i386)
|
|
||||||
package *
|
|
||||||
ghc-options: -split-sections -optl-static
|
|
||||||
elif os(darwin)
|
|
||||||
constraints: zlib +bundled-c-zlib,
|
|
||||||
lzma +static
|
|
||||||
elif os(mingw32)
|
|
||||||
constraints: zlib +bundled-c-zlib,
|
|
||||||
lzma +static,
|
|
||||||
text -simdutf,
|
|
||||||
vty-windows >=0.2.0.2
|
|
||||||
if impl(ghc >= 9.4)
|
|
||||||
constraints: language-c >= 0.9.3
|
|
||||||
elif os(freebsd)
|
|
||||||
constraints: zlib +bundled-c-zlib,
|
|
||||||
zip +disable-zstd
|
|
||||||
package *
|
|
||||||
ghc-options: -split-sections
|
|
||||||
|
|
||||||
constraints: http-io-streams -brotli,
|
|
||||||
any.aeson >= 2.0.1.0,
|
|
||||||
any.hsc2hs ==0.68.8,
|
|
||||||
bzlib-conduit >= 0.3.0.3,
|
|
||||||
bz2 >= 1.0.1.1,
|
|
||||||
bzlib >= 0.5.2.0,
|
|
||||||
directory >= 1.3.8.3,
|
|
||||||
filepath == 1.4.101.0 || == 1.4.300.1 || >= 1.5.2.0
|
|
||||||
|
|
||||||
package libarchive
|
|
||||||
flags: -system-libarchive
|
|
||||||
|
|
||||||
package libyaml-streamly
|
|
||||||
flags: -system-libyaml
|
|
||||||
|
|
||||||
package aeson-pretty
|
|
||||||
flags: +lib-only
|
|
||||||
|
|
||||||
package cabal-plan
|
|
||||||
flags: -exe
|
|
||||||
|
|
||||||
package aeson
|
|
||||||
flags: +ordered-keymap
|
|
||||||
|
|
||||||
package streamly
|
|
||||||
flags: +use-unliftio
|
|
||||||
|
|
||||||
source-repository-package
|
|
||||||
type: git
|
|
||||||
location: https://github.com/haskell/tar.git
|
|
||||||
tag: d94a988be4311b830149a9f8fc16739927e5fc1c
|
|
||||||
|
|
||||||
source-repository-package
|
|
||||||
type: git
|
|
||||||
location: https://github.com/hasufell/uri-bytestring.git
|
|
||||||
tag: 4fb5ed14b500c192e6e7a97f6b2b1eb478806001
|
|
||||||
|
|
||||||
allow-newer: cabal-install-parsers:tar, streamly:Win32
|
|
||||||
|
|
@ -1,7 +0,0 @@
|
|||||||
#include "dirutils.h"
|
|
||||||
|
|
||||||
unsigned int
|
|
||||||
__posixdir_d_type(struct dirent* d)
|
|
||||||
{
|
|
||||||
return(d -> d_type);
|
|
||||||
}
|
|
@ -1,16 +0,0 @@
|
|||||||
#ifndef POSIXPATHS_CBITS_DIRUTILS_H
|
|
||||||
#define POSIXPATHS_CBITS_DIRUTILS_H
|
|
||||||
|
|
||||||
#include <HsFFI.h>
|
|
||||||
#include <stdlib.h>
|
|
||||||
#include <dirent.h>
|
|
||||||
#include <sys/types.h>
|
|
||||||
#include <sys/stat.h>
|
|
||||||
#include <fcntl.h>
|
|
||||||
|
|
||||||
|
|
||||||
extern unsigned int
|
|
||||||
__posixdir_d_type(struct dirent* d)
|
|
||||||
;
|
|
||||||
|
|
||||||
#endif
|
|
63
config.yaml
Normal file
63
config.yaml
Normal file
@ -0,0 +1,63 @@
|
|||||||
|
# Cache downloads in ~/.ghcup/cache
|
||||||
|
cache: False
|
||||||
|
# Skip tarball checksum verification
|
||||||
|
no-verify: False
|
||||||
|
# enable verbosity
|
||||||
|
verbose: False
|
||||||
|
# When to keep build directories
|
||||||
|
keep-dirs: Errors # Always | Never | Errors
|
||||||
|
# Which downloader to use
|
||||||
|
downloader: Curl # Curl | Wget | Internal
|
||||||
|
|
||||||
|
# TUI key bindings,
|
||||||
|
# see https://hackage.haskell.org/package/vty-5.31/docs/Graphics-Vty-Input-Events.html#t:Key
|
||||||
|
# for possible values.
|
||||||
|
key-bindings:
|
||||||
|
up:
|
||||||
|
KUp: []
|
||||||
|
down:
|
||||||
|
KDown: []
|
||||||
|
quit:
|
||||||
|
KChar: 'q'
|
||||||
|
install:
|
||||||
|
KChar: 'i'
|
||||||
|
uninstall:
|
||||||
|
KChar: 'u'
|
||||||
|
set:
|
||||||
|
KChar: 's'
|
||||||
|
changelog:
|
||||||
|
KChar: 'c'
|
||||||
|
show-all:
|
||||||
|
KChar: 'a'
|
||||||
|
show-all-tools:
|
||||||
|
KChar: 't'
|
||||||
|
|
||||||
|
# Where to get GHC/cabal/hls download info/versions from. For more detailed explanation
|
||||||
|
# check the 'URLSource' type in the code.
|
||||||
|
url-source:
|
||||||
|
## Use the internal download uri, this is the default
|
||||||
|
GHCupURL: []
|
||||||
|
|
||||||
|
## Example 1: Read download info from this location instead
|
||||||
|
## Accepts file/http/https scheme
|
||||||
|
# OwnSource: "file:///home/jule/git/ghcup-hs/ghcup-0.0.3.yaml"
|
||||||
|
|
||||||
|
## Example 2: Add custom tarballs to the default downloads, overwriting duplicate versions
|
||||||
|
# AddSource:
|
||||||
|
# Left:
|
||||||
|
# toolRequirements: {} # this is ignored
|
||||||
|
# ghcupDownloads:
|
||||||
|
# GHC:
|
||||||
|
# 9.10.2:
|
||||||
|
# viTags: []
|
||||||
|
# viArch:
|
||||||
|
# A_64:
|
||||||
|
# Linux_UnknownLinux:
|
||||||
|
# unknown_versioning:
|
||||||
|
# dlUri: https://downloads.haskell.org/~ghc/7.10.3/ghc-7.10.3-x86_64-deb8-linux.tar.bz2
|
||||||
|
# dlSubdir: ghc-7.10.3
|
||||||
|
# dlHash: 01cfbad8dff1e8b34a5fdca8caeaf843b56e36af919e29cd68870d2588563db5
|
||||||
|
|
||||||
|
## Example 3: Add a custom download file to the default downloads, overwriting duplicate versions
|
||||||
|
# AddSource:
|
||||||
|
# Right: "file:///home/jule/git/ghcup-hs/ghcup-custom.yaml"
|
@ -1,9 +0,0 @@
|
|||||||
V=0
|
|
||||||
BUILD_MAN = NO
|
|
||||||
BUILD_SPHINX_HTML = NO
|
|
||||||
BUILD_SPHINX_PDF = NO
|
|
||||||
HADDOCK_DOCS = NO
|
|
||||||
ifneq "$(BuildFlavour)" ""
|
|
||||||
include mk/flavours/$(BuildFlavour).mk
|
|
||||||
endif
|
|
||||||
Stage1Only = YES
|
|
@ -1,8 +0,0 @@
|
|||||||
V=0
|
|
||||||
BUILD_MAN = NO
|
|
||||||
BUILD_SPHINX_HTML = NO
|
|
||||||
BUILD_SPHINX_PDF = NO
|
|
||||||
HADDOCK_DOCS = YES
|
|
||||||
ifneq "$(BuildFlavour)" ""
|
|
||||||
include mk/flavours/$(BuildFlavour).mk
|
|
||||||
endif
|
|
139
data/config.yaml
139
data/config.yaml
@ -1,139 +0,0 @@
|
|||||||
# Cache downloads in ~/.ghcup/cache
|
|
||||||
cache: False
|
|
||||||
# Skip tarball checksum verification
|
|
||||||
no-verify: False
|
|
||||||
# enable verbosity
|
|
||||||
verbose: False
|
|
||||||
# When to keep build directories
|
|
||||||
keep-dirs: Errors # Always | Never | Errors
|
|
||||||
# Which downloader to use
|
|
||||||
downloader: Curl # Curl | Wget | Internal
|
|
||||||
# whether to run in offline mode
|
|
||||||
no-network: False
|
|
||||||
# whether/how to do gpg verification
|
|
||||||
gpg-setting: GPGNone # GPGStrict | GPGLax | GPGNone
|
|
||||||
|
|
||||||
# TUI key bindings,
|
|
||||||
# see https://hackage.haskell.org/package/vty-5.31/docs/Graphics-Vty-Input-Events.html#t:Key
|
|
||||||
# for possible values.
|
|
||||||
# It's also possible to define key+modifier, e.g.:
|
|
||||||
# quit:
|
|
||||||
# Key:
|
|
||||||
# KChar: c
|
|
||||||
# Mods: [MCtrl]
|
|
||||||
key-bindings:
|
|
||||||
up:
|
|
||||||
KUp: []
|
|
||||||
down:
|
|
||||||
KDown: []
|
|
||||||
quit:
|
|
||||||
KChar: 'q'
|
|
||||||
install:
|
|
||||||
KChar: 'i'
|
|
||||||
uninstall:
|
|
||||||
KChar: 'u'
|
|
||||||
set:
|
|
||||||
KChar: 's'
|
|
||||||
changelog:
|
|
||||||
KChar: 'c'
|
|
||||||
show-all:
|
|
||||||
KChar: 'a'
|
|
||||||
show-all-tools:
|
|
||||||
KChar: 't'
|
|
||||||
|
|
||||||
# The caching for the metadata files containing download info, depending on last access time
|
|
||||||
# of the file. These usually are in '~/.ghcup/cache/ghcup-<ver>.yaml'.
|
|
||||||
meta-cache: 300 # in seconds
|
|
||||||
|
|
||||||
# When trying to download ghcup metadata, this option decides what to do
|
|
||||||
# when the download fails:
|
|
||||||
# 1. Lax: use existing ~/.ghcup/cache/ghcup-<ver>.yaml as fallback (default)
|
|
||||||
# 2. Strict: fail hard
|
|
||||||
meta-mode: Lax # Strict | Lax
|
|
||||||
|
|
||||||
# Where to get GHC/cabal/hls download info/versions from. This is a list that performs
|
|
||||||
# union over tool versions, preferring the later entries.
|
|
||||||
url-source:
|
|
||||||
## Use the internal download uri, this is the default
|
|
||||||
- GHCupURL
|
|
||||||
|
|
||||||
## Prefer stack supplied metadata (will still use GHCup metadata for versions not existing in stack metadata)
|
|
||||||
# - StackSetupURL
|
|
||||||
|
|
||||||
## Add pre-release channel
|
|
||||||
# - https://raw.githubusercontent.com/haskell/ghcup-metadata/master/ghcup-prereleases-0.0.7.yaml
|
|
||||||
## Add nightly channel
|
|
||||||
# - https://ghc.gitlab.haskell.org/ghcup-metadata/ghcup-nightlies-0.0.7.yaml
|
|
||||||
## Add cross compiler channel
|
|
||||||
# - https://raw.githubusercontent.com/haskell/ghcup-metadata/master/ghcup-cross-0.0.8.yaml
|
|
||||||
|
|
||||||
## Use dwarf bindist for 9.4.7 for ghcup metadata
|
|
||||||
# - ghcup-info:
|
|
||||||
# ghcupDownloads:
|
|
||||||
# GHC:
|
|
||||||
# 9.4.7:
|
|
||||||
# viTags: []
|
|
||||||
# viArch:
|
|
||||||
# A_64:
|
|
||||||
# Linux_UnknownLinux:
|
|
||||||
# unknown_versioning:
|
|
||||||
# dlUri: https://downloads.haskell.org/ghc/9.4.7/ghc-9.4.7-x86_64-deb10-linux-dwarf.tar.xz
|
|
||||||
# dlSubdir:
|
|
||||||
# RegexDir: "ghc-.*"
|
|
||||||
# dlHash: b261b3438ba455e3cf757f9c8dc3a06fdc061ea8ec287a65b7809e25fe18bad4
|
|
||||||
|
|
||||||
## for stack metadata and the linux64-tinfo6 bindists, use static alpine for 9.8.1
|
|
||||||
# - setup-info:
|
|
||||||
# ghc:
|
|
||||||
# linux64-tinfo6:
|
|
||||||
# 9.8.1:
|
|
||||||
# url: "https://downloads.haskell.org/~ghc/9.8.1/ghc-9.8.1-x86_64-alpine3_12-linux-static.tar.xz"
|
|
||||||
# content-length: 229037440
|
|
||||||
# sha256: b48f3d3a508d0c140d1c801e04afc65e80c0d25e7e939a8a41edb387b26b81b3
|
|
||||||
|
|
||||||
# This is a way to override platform detection, e.g. when you're running
|
|
||||||
# a Ubuntu derivative based on 18.04, you could do:
|
|
||||||
#
|
|
||||||
# platform-override:
|
|
||||||
# arch: A_64
|
|
||||||
# platform:
|
|
||||||
# contents: Ubuntu
|
|
||||||
# tag: Linux
|
|
||||||
# version: '18.04'
|
|
||||||
platform-override: null
|
|
||||||
|
|
||||||
# Support for mirrors. Currently there are 3 hosts you can mirror:
|
|
||||||
# - github.com (for stack and some older HLS versions)
|
|
||||||
# - raw.githubusercontent.com (for the yaml metadata)
|
|
||||||
# - downloads.haskell.org (for everything else)
|
|
||||||
#
|
|
||||||
# E.g. when we have 'https://raw.githubusercontent.com/haskell/ghcup-metadata/master/ghcup-0.0.7.yaml'
|
|
||||||
# and the following mirror config
|
|
||||||
#
|
|
||||||
# "raw.githubusercontent.com":
|
|
||||||
# authority:
|
|
||||||
# host: "mirror.sjtu.edu.cn"
|
|
||||||
# pathPrefix: "ghcup/yaml"
|
|
||||||
#
|
|
||||||
# Then the resulting url will be 'https://mirror.sjtu.edu.cn/ghcup/yaml/haskell/ghcup-metadata/master/ghcup-0.0.7.yaml'
|
|
||||||
mirrors:
|
|
||||||
"github.com":
|
|
||||||
authority:
|
|
||||||
host: "mirror.sjtu.edu.cn"
|
|
||||||
"raw.githubusercontent.com":
|
|
||||||
authority:
|
|
||||||
host: "mirror.sjtu.edu.cn"
|
|
||||||
pathPrefix: "ghcup/yaml"
|
|
||||||
"downloads.haskell.org":
|
|
||||||
authority:
|
|
||||||
host: "mirror.sjtu.edu.cn"
|
|
||||||
|
|
||||||
# Arguments to pass to the configure script of the prebuilt bindist.
|
|
||||||
#
|
|
||||||
# Do not pass '--prefix' here.
|
|
||||||
#
|
|
||||||
# GHCup by default passes '--disable-ld-override', so if you want to enable
|
|
||||||
# the vanilla way, which aggressively favors 'ld.gold' linker, add the following:
|
|
||||||
def-ghc-conf-options:
|
|
||||||
- "--enable-ld-override"
|
|
||||||
|
|
@ -1 +0,0 @@
|
|||||||
Subproject commit c9dae0c58799854823e8c41858ca4cc172ef4c8b
|
|
@ -1,71 +0,0 @@
|
|||||||
FROM --platform=linux/i386 i386/alpine:3.16
|
|
||||||
|
|
||||||
ENV LANG C.UTF-8
|
|
||||||
|
|
||||||
RUN apk add --no-cache \
|
|
||||||
curl \
|
|
||||||
gcc \
|
|
||||||
g++ \
|
|
||||||
binutils \
|
|
||||||
binutils-gold \
|
|
||||||
coreutils \
|
|
||||||
bsd-compat-headers \
|
|
||||||
gmp-dev \
|
|
||||||
ncurses-dev \
|
|
||||||
libffi-dev \
|
|
||||||
make \
|
|
||||||
xz \
|
|
||||||
tar \
|
|
||||||
perl \
|
|
||||||
bash \
|
|
||||||
diffutils \
|
|
||||||
git \
|
|
||||||
gzip \
|
|
||||||
gnupg && \
|
|
||||||
apk add --no-cache \
|
|
||||||
zlib \
|
|
||||||
zlib-dev \
|
|
||||||
zlib-static \
|
|
||||||
bzip2 \
|
|
||||||
bzip2-dev \
|
|
||||||
bzip2-static \
|
|
||||||
gmp \
|
|
||||||
gmp-dev \
|
|
||||||
openssl-dev \
|
|
||||||
openssl-libs-static \
|
|
||||||
xz \
|
|
||||||
xz-dev \
|
|
||||||
ncurses-static
|
|
||||||
|
|
||||||
ARG GHCUP_VERSION=0.1.20.0
|
|
||||||
ARG GPG_KEY="7D1E8AFD1D4A16D71FADA2F2CCC85C0E40C06A8C FFEB7CE81E16A36B3E2DED6F2DE04D4E97DB64AD 88B57FCF7DB53B4DB3BFA4B1588764FBE22D19C4 EAF2A9A722C0C96F2B431CA511AAD8CEDEE0CAEF"
|
|
||||||
|
|
||||||
# install ghcup
|
|
||||||
RUN gpg --batch --keyserver keys.openpgp.org --recv-keys $GPG_KEY && \
|
|
||||||
curl -sSfL -O https://downloads.haskell.org/~ghcup/$GHCUP_VERSION/i386-linux-ghcup-$GHCUP_VERSION && \
|
|
||||||
curl -sSfL -O https://downloads.haskell.org/~ghcup/$GHCUP_VERSION/SHA256SUMS && \
|
|
||||||
curl -sSfL -O https://downloads.haskell.org/~ghcup/$GHCUP_VERSION/SHA256SUMS.sig && \
|
|
||||||
gpg --verify SHA256SUMS.sig SHA256SUMS && \
|
|
||||||
sha256sum -c --ignore-missing SHA256SUMS && \
|
|
||||||
mv i386-linux-ghcup-$GHCUP_VERSION /usr/bin/ghcup && \
|
|
||||||
chmod +x /usr/bin/ghcup && \
|
|
||||||
rm -rf SHA256SUMS SHA256SUMS.sig
|
|
||||||
|
|
||||||
ARG GHC=9.4.8
|
|
||||||
ARG CABAL_INSTALL=3.10.2.0
|
|
||||||
ARG STACK=2.13.1
|
|
||||||
|
|
||||||
ENV GHCUP_CURL_OPTS="--silent"
|
|
||||||
ENV NO_COLOR=1
|
|
||||||
|
|
||||||
# install haskell toolchain
|
|
||||||
RUN ghcup config set gpg-setting GPGStrict && \
|
|
||||||
ghcup --verbose install ghc --isolate=/usr --force ${GHC} && \
|
|
||||||
ghcup --verbose install cabal --isolate=/usr/bin --force ${CABAL_INSTALL} && \
|
|
||||||
find "/usr/lib/ghc-${GHC}/" \( -name "*_p.a" -o -name "*.p_hi" \) -type f -delete && \
|
|
||||||
rm -rf "/usr/share/doc/ghc-${GHC}" && \
|
|
||||||
rm -rf /tmp/ghcup* && \
|
|
||||||
ghcup gc -p -s -c -t
|
|
||||||
|
|
||||||
ENV PATH /root/.cabal/bin:/root/.ghcup:/root/.local/bin:$PATH
|
|
||||||
|
|
@ -1,72 +0,0 @@
|
|||||||
FROM alpine:3.12
|
|
||||||
|
|
||||||
ENV LANG C.UTF-8
|
|
||||||
|
|
||||||
RUN apk add --no-cache \
|
|
||||||
curl \
|
|
||||||
gcc \
|
|
||||||
g++ \
|
|
||||||
binutils \
|
|
||||||
binutils-gold \
|
|
||||||
coreutils \
|
|
||||||
bsd-compat-headers \
|
|
||||||
gmp-dev \
|
|
||||||
ncurses-dev \
|
|
||||||
libffi-dev \
|
|
||||||
make \
|
|
||||||
xz \
|
|
||||||
tar \
|
|
||||||
perl \
|
|
||||||
bash \
|
|
||||||
diffutils \
|
|
||||||
git \
|
|
||||||
gzip \
|
|
||||||
gnupg && \
|
|
||||||
apk add --no-cache \
|
|
||||||
zlib \
|
|
||||||
zlib-dev \
|
|
||||||
zlib-static \
|
|
||||||
bzip2 \
|
|
||||||
bzip2-dev \
|
|
||||||
bzip2-static \
|
|
||||||
gmp \
|
|
||||||
gmp-dev \
|
|
||||||
openssl-dev \
|
|
||||||
openssl-libs-static \
|
|
||||||
xz \
|
|
||||||
xz-dev \
|
|
||||||
ncurses-static
|
|
||||||
|
|
||||||
ARG GHCUP_VERSION=0.1.20.0
|
|
||||||
ARG GPG_KEY="7D1E8AFD1D4A16D71FADA2F2CCC85C0E40C06A8C FFEB7CE81E16A36B3E2DED6F2DE04D4E97DB64AD 88B57FCF7DB53B4DB3BFA4B1588764FBE22D19C4 EAF2A9A722C0C96F2B431CA511AAD8CEDEE0CAEF"
|
|
||||||
|
|
||||||
|
|
||||||
# install ghcup
|
|
||||||
RUN gpg --batch --keyserver keys.openpgp.org --recv-keys $GPG_KEY && \
|
|
||||||
curl -sSfL -O https://downloads.haskell.org/~ghcup/$GHCUP_VERSION/x86_64-linux-ghcup-$GHCUP_VERSION && \
|
|
||||||
curl -sSfL -O https://downloads.haskell.org/~ghcup/$GHCUP_VERSION/SHA256SUMS && \
|
|
||||||
curl -sSfL -O https://downloads.haskell.org/~ghcup/$GHCUP_VERSION/SHA256SUMS.sig && \
|
|
||||||
gpg --verify SHA256SUMS.sig SHA256SUMS && \
|
|
||||||
sha256sum -c --ignore-missing SHA256SUMS && \
|
|
||||||
mv x86_64-linux-ghcup-$GHCUP_VERSION /usr/bin/ghcup && \
|
|
||||||
chmod +x /usr/bin/ghcup && \
|
|
||||||
rm -rf SHA256SUMS SHA256SUMS.sig
|
|
||||||
|
|
||||||
ARG GHC=9.4.8
|
|
||||||
ARG CABAL_INSTALL=3.10.2.0
|
|
||||||
ARG STACK=2.13.1
|
|
||||||
|
|
||||||
ENV GHCUP_CURL_OPTS="--silent"
|
|
||||||
ENV NO_COLOR=1
|
|
||||||
|
|
||||||
# install haskell toolchain
|
|
||||||
RUN ghcup config set gpg-setting GPGStrict && \
|
|
||||||
ghcup --verbose install ghc --isolate=/usr --force ${GHC} && \
|
|
||||||
ghcup --verbose install cabal --isolate=/usr/bin --force ${CABAL_INSTALL} && \
|
|
||||||
find "/usr/lib/ghc-${GHC}/" \( -name "*_p.a" -o -name "*.p_hi" \) -type f -delete && \
|
|
||||||
rm -rf "/usr/share/doc/ghc-${GHC}" && \
|
|
||||||
rm -rf /tmp/ghcup* && \
|
|
||||||
ghcup gc -p -s -c -t
|
|
||||||
|
|
||||||
ENV PATH /root/.cabal/bin:/root/.ghcup:/root/.local/bin:$PATH
|
|
||||||
|
|
@ -1,61 +0,0 @@
|
|||||||
FROM arm32v7/debian:10
|
|
||||||
|
|
||||||
ENV LANG C.UTF-8
|
|
||||||
ENV DEBIAN_FRONTEND=noninteractive
|
|
||||||
ENV TZ=Asia/Singapore
|
|
||||||
|
|
||||||
COPY update_opt.sh /usr/bin/update_opt.sh
|
|
||||||
RUN chmod +x /usr/bin/update_opt.sh
|
|
||||||
|
|
||||||
RUN apt-get update && \
|
|
||||||
apt-get install -y --no-install-recommends \
|
|
||||||
ca-certificates \
|
|
||||||
curl \
|
|
||||||
dirmngr \
|
|
||||||
g++ \
|
|
||||||
git \
|
|
||||||
gnupg \
|
|
||||||
libsqlite3-dev \
|
|
||||||
libtinfo-dev \
|
|
||||||
libgmp-dev \
|
|
||||||
make \
|
|
||||||
netbase \
|
|
||||||
openssh-client \
|
|
||||||
xz-utils \
|
|
||||||
zlib1g-dev \
|
|
||||||
libnuma-dev libgmp10 libssl-dev liblzma-dev libbz2-dev wget lsb-release software-properties-common apt-transport-https gcc autoconf automake build-essential gzip patchelf tree \
|
|
||||||
llvm-11 clang-11 && \
|
|
||||||
rm -rf /var/lib/apt/lists/*
|
|
||||||
|
|
||||||
RUN update_opt.sh 11 1
|
|
||||||
|
|
||||||
ARG GHCUP_VERSION=0.1.20.0
|
|
||||||
ARG GPG_KEY="7D1E8AFD1D4A16D71FADA2F2CCC85C0E40C06A8C FFEB7CE81E16A36B3E2DED6F2DE04D4E97DB64AD 88B57FCF7DB53B4DB3BFA4B1588764FBE22D19C4 EAF2A9A722C0C96F2B431CA511AAD8CEDEE0CAEF"
|
|
||||||
|
|
||||||
# install ghcup
|
|
||||||
RUN gpg --batch --keyserver keys.openpgp.org --recv-keys $GPG_KEY && \
|
|
||||||
curl -sSfL -O https://downloads.haskell.org/~ghcup/$GHCUP_VERSION/armv7-linux-ghcup-$GHCUP_VERSION && \
|
|
||||||
curl -sSfL -O https://downloads.haskell.org/~ghcup/$GHCUP_VERSION/SHA256SUMS && \
|
|
||||||
curl -sSfL -O https://downloads.haskell.org/~ghcup/$GHCUP_VERSION/SHA256SUMS.sig && \
|
|
||||||
gpg --verify SHA256SUMS.sig SHA256SUMS && \
|
|
||||||
sha256sum -c --ignore-missing SHA256SUMS && \
|
|
||||||
mv armv7-linux-ghcup-$GHCUP_VERSION /usr/bin/ghcup && \
|
|
||||||
chmod +x /usr/bin/ghcup && \
|
|
||||||
rm -rf SHA256SUMS SHA256SUMS.sig
|
|
||||||
|
|
||||||
ARG GHC=9.2.8
|
|
||||||
ARG CABAL_INSTALL=3.6.2.0
|
|
||||||
ARG STACK=2.13.1
|
|
||||||
|
|
||||||
ENV GHCUP_CURL_OPTS="--silent"
|
|
||||||
ENV NO_COLOR=1
|
|
||||||
|
|
||||||
# install haskell toolchain
|
|
||||||
RUN ghcup config set gpg-setting GPGStrict && \
|
|
||||||
ghcup --verbose install ghc --isolate=/usr --force ${GHC} && \
|
|
||||||
ghcup --verbose install cabal --isolate=/usr/bin --force ${CABAL_INSTALL} && \
|
|
||||||
ghcup gc -s -c -t
|
|
||||||
|
|
||||||
ENV PATH /root/.cabal/bin:/root/.ghcup/bin:/root/.local/bin:$PATH
|
|
||||||
|
|
||||||
CMD ["ghci"]
|
|
@ -1,36 +0,0 @@
|
|||||||
#!/bin/bash
|
|
||||||
# update_alternatives.sh
|
|
||||||
|
|
||||||
update_alternatives() {
|
|
||||||
local version=${1}
|
|
||||||
local priority=${2}
|
|
||||||
local master=${3}
|
|
||||||
local slaves=${4}
|
|
||||||
local path=${5}
|
|
||||||
local cmdln
|
|
||||||
|
|
||||||
cmdln="--verbose --install ${path}${master} ${master} ${path}${master}-${version} ${priority}"
|
|
||||||
for slave in ${slaves}; do
|
|
||||||
cmdln="${cmdln} --slave ${path}${slave} ${slave} ${path}${slave}-${version}"
|
|
||||||
done
|
|
||||||
update-alternatives ${cmdln}
|
|
||||||
}
|
|
||||||
|
|
||||||
if [[ ${#} -ne 2 ]]; then
|
|
||||||
echo usage: "${0}" clang_version priority
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
|
|
||||||
version=${1}
|
|
||||||
priority=${2}
|
|
||||||
path="/usr/bin/"
|
|
||||||
|
|
||||||
master="llvm-config"
|
|
||||||
slaves="llvm-addr2line llvm-ar llvm-as llvm-bcanalyzer llvm-bitcode-strip llvm-cat llvm-cfi-verify llvm-cov llvm-c-test llvm-cvtres llvm-cxxdump llvm-cxxfilt llvm-cxxmap llvm-debuginfod llvm-debuginfod-find llvm-diff llvm-dis llvm-dlltool llvm-dwarfdump llvm-dwarfutil llvm-dwp llvm-exegesis llvm-extract llvm-gsymutil llvm-ifs llvm-install-name-tool llvm-jitlink llvm-jitlink-executor llvm-lib llvm-libtool-darwin llvm-link llvm-lipo llvm-lto llvm-lto2 llvm-mc llvm-mca llvm-ml llvm-modextract llvm-mt llvm-nm llvm-objcopy llvm-objdump llvm-omp-device-info llvm-opt-report llvm-otool llvm-pdbutil llvm-PerfectShuffle llvm-profdata llvm-profgen llvm-ranlib llvm-rc llvm-readelf llvm-readobj llvm-reduce llvm-remark-size-diff llvm-rtdyld llvm-sim llvm-size llvm-split llvm-stress llvm-strings llvm-strip llvm-symbolizer llvm-tapi-diff llvm-tblgen llvm-tli-checker llvm-undname llvm-windres llvm-xray"
|
|
||||||
|
|
||||||
update_alternatives "${version}" "${priority}" "${master}" "${slaves}" "${path}"
|
|
||||||
|
|
||||||
master="clang"
|
|
||||||
slaves="analyze-build asan_symbolize bugpoint c-index-test clang++ clang-apply-replacements clang-change-namespace clang-check clang-cl clang-cpp clangd clang-doc clang-extdef-mapping clang-format clang-format-diff clang-include-fixer clang-linker-wrapper clang-move clang-nvlink-wrapper clang-offload-bundler clang-offload-packager clang-offload-wrapper clang-pseudo clang-query clang-refactor clang-rename clang-reorder-fields clang-repl clang-scan-deps clang-tidy count diagtool dsymutil FileCheck find-all-symbols git-clang-format hmaptool hwasan_symbolize intercept-build ld64.lld ld.lld llc lld lldb lldb-argdumper lldb-instr lldb-server lldb-vscode lld-link lli lli-child-target modularize not obj2yaml opt pp-trace run-clang-tidy sancov sanstats scan-build scan-build-py scan-view split-file UnicodeNameMappingGenerator verify-uselistorder wasm-ld yaml2obj yaml-bench"
|
|
||||||
|
|
||||||
update_alternatives "${version}" "${priority}" "${master}" "${slaves}" "${path}"
|
|
@ -1,61 +0,0 @@
|
|||||||
FROM arm32v7/ubuntu:focal
|
|
||||||
|
|
||||||
ENV LANG C.UTF-8
|
|
||||||
ENV DEBIAN_FRONTEND=noninteractive
|
|
||||||
ENV TZ=Asia/Singapore
|
|
||||||
|
|
||||||
COPY update_opt.sh /usr/bin/update_opt.sh
|
|
||||||
RUN chmod +x /usr/bin/update_opt.sh
|
|
||||||
|
|
||||||
RUN apt-get update && \
|
|
||||||
apt-get install -y --no-install-recommends \
|
|
||||||
ca-certificates \
|
|
||||||
curl \
|
|
||||||
dirmngr \
|
|
||||||
g++ \
|
|
||||||
git \
|
|
||||||
gnupg \
|
|
||||||
libsqlite3-dev \
|
|
||||||
libtinfo-dev \
|
|
||||||
libgmp-dev \
|
|
||||||
make \
|
|
||||||
netbase \
|
|
||||||
openssh-client \
|
|
||||||
xz-utils \
|
|
||||||
zlib1g-dev \
|
|
||||||
libnuma-dev libgmp10 libssl-dev liblzma-dev libbz2-dev wget lsb-release software-properties-common apt-transport-https gcc autoconf automake build-essential gzip patchelf tree \
|
|
||||||
llvm-9 clang-9 && \
|
|
||||||
rm -rf /var/lib/apt/lists/*
|
|
||||||
|
|
||||||
RUN update_opt.sh 9 1
|
|
||||||
|
|
||||||
ARG GHCUP_VERSION=0.1.19.4
|
|
||||||
ARG GPG_KEY=7D1E8AFD1D4A16D71FADA2F2CCC85C0E40C06A8C
|
|
||||||
|
|
||||||
# install ghcup
|
|
||||||
RUN gpg --batch --keyserver keys.openpgp.org --recv-keys $GPG_KEY && \
|
|
||||||
curl -sSfL -O https://downloads.haskell.org/~ghcup/$GHCUP_VERSION/armv7-linux-ghcup-$GHCUP_VERSION && \
|
|
||||||
curl -sSfL -O https://downloads.haskell.org/~ghcup/$GHCUP_VERSION/SHA256SUMS && \
|
|
||||||
curl -sSfL -O https://downloads.haskell.org/~ghcup/$GHCUP_VERSION/SHA256SUMS.sig && \
|
|
||||||
gpg --verify SHA256SUMS.sig SHA256SUMS && \
|
|
||||||
sha256sum -c --ignore-missing SHA256SUMS && \
|
|
||||||
mv armv7-linux-ghcup-$GHCUP_VERSION /usr/bin/ghcup && \
|
|
||||||
chmod +x /usr/bin/ghcup && \
|
|
||||||
rm -rf SHA256SUMS SHA256SUMS.sig
|
|
||||||
|
|
||||||
ARG GHC=8.10.7
|
|
||||||
ARG CABAL_INSTALL=3.6.2.0
|
|
||||||
ARG STACK=2.9.1
|
|
||||||
|
|
||||||
ENV GHCUP_CURL_OPTS="--silent"
|
|
||||||
ENV NO_COLOR=1
|
|
||||||
|
|
||||||
# install haskell toolchain
|
|
||||||
RUN ghcup config set gpg-setting GPGStrict && \
|
|
||||||
ghcup --verbose install ghc --isolate=/usr --force ${GHC} && \
|
|
||||||
ghcup --verbose install cabal --isolate=/usr/bin --force ${CABAL_INSTALL} && \
|
|
||||||
ghcup gc -s -c -t
|
|
||||||
|
|
||||||
ENV PATH /root/.cabal/bin:/root/.ghcup/bin:/root/.local/bin:$PATH
|
|
||||||
|
|
||||||
CMD ["ghci"]
|
|
@ -1,36 +0,0 @@
|
|||||||
#!/bin/bash
|
|
||||||
# update_alternatives.sh
|
|
||||||
|
|
||||||
update_alternatives() {
|
|
||||||
local version=${1}
|
|
||||||
local priority=${2}
|
|
||||||
local master=${3}
|
|
||||||
local slaves=${4}
|
|
||||||
local path=${5}
|
|
||||||
local cmdln
|
|
||||||
|
|
||||||
cmdln="--verbose --install ${path}${master} ${master} ${path}${master}-${version} ${priority}"
|
|
||||||
for slave in ${slaves}; do
|
|
||||||
cmdln="${cmdln} --slave ${path}${slave} ${slave} ${path}${slave}-${version}"
|
|
||||||
done
|
|
||||||
update-alternatives ${cmdln}
|
|
||||||
}
|
|
||||||
|
|
||||||
if [[ ${#} -ne 2 ]]; then
|
|
||||||
echo usage: "${0}" clang_version priority
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
|
|
||||||
version=${1}
|
|
||||||
priority=${2}
|
|
||||||
path="/usr/bin/"
|
|
||||||
|
|
||||||
master="llvm-config"
|
|
||||||
slaves="llvm-addr2line llvm-ar llvm-as llvm-bcanalyzer llvm-bitcode-strip llvm-cat llvm-cfi-verify llvm-cov llvm-c-test llvm-cvtres llvm-cxxdump llvm-cxxfilt llvm-cxxmap llvm-debuginfod llvm-debuginfod-find llvm-diff llvm-dis llvm-dlltool llvm-dwarfdump llvm-dwarfutil llvm-dwp llvm-exegesis llvm-extract llvm-gsymutil llvm-ifs llvm-install-name-tool llvm-jitlink llvm-jitlink-executor llvm-lib llvm-libtool-darwin llvm-link llvm-lipo llvm-lto llvm-lto2 llvm-mc llvm-mca llvm-ml llvm-modextract llvm-mt llvm-nm llvm-objcopy llvm-objdump llvm-omp-device-info llvm-opt-report llvm-otool llvm-pdbutil llvm-PerfectShuffle llvm-profdata llvm-profgen llvm-ranlib llvm-rc llvm-readelf llvm-readobj llvm-reduce llvm-remark-size-diff llvm-rtdyld llvm-sim llvm-size llvm-split llvm-stress llvm-strings llvm-strip llvm-symbolizer llvm-tapi-diff llvm-tblgen llvm-tli-checker llvm-undname llvm-windres llvm-xray"
|
|
||||||
|
|
||||||
update_alternatives "${version}" "${priority}" "${master}" "${slaves}" "${path}"
|
|
||||||
|
|
||||||
master="clang"
|
|
||||||
slaves="analyze-build asan_symbolize bugpoint c-index-test clang++ clang-apply-replacements clang-change-namespace clang-check clang-cl clang-cpp clangd clang-doc clang-extdef-mapping clang-format clang-format-diff clang-include-fixer clang-linker-wrapper clang-move clang-nvlink-wrapper clang-offload-bundler clang-offload-packager clang-offload-wrapper clang-pseudo clang-query clang-refactor clang-rename clang-reorder-fields clang-repl clang-scan-deps clang-tidy count diagtool dsymutil FileCheck find-all-symbols git-clang-format hmaptool hwasan_symbolize intercept-build ld64.lld ld.lld llc lld lldb lldb-argdumper lldb-instr lldb-server lldb-vscode lld-link lli lli-child-target modularize not obj2yaml opt pp-trace run-clang-tidy sancov sanstats scan-build scan-build-py scan-view split-file UnicodeNameMappingGenerator verify-uselistorder wasm-ld yaml2obj yaml-bench"
|
|
||||||
|
|
||||||
update_alternatives "${version}" "${priority}" "${master}" "${slaves}" "${path}"
|
|
@ -1,61 +0,0 @@
|
|||||||
FROM arm64v8/debian:10
|
|
||||||
|
|
||||||
ENV LANG C.UTF-8
|
|
||||||
ENV DEBIAN_FRONTEND=noninteractive
|
|
||||||
ENV TZ=Asia/Singapore
|
|
||||||
|
|
||||||
COPY update_opt.sh /usr/bin/update_opt.sh
|
|
||||||
RUN chmod +x /usr/bin/update_opt.sh
|
|
||||||
|
|
||||||
RUN apt-get update && \
|
|
||||||
apt-get install -y --no-install-recommends \
|
|
||||||
ca-certificates \
|
|
||||||
curl \
|
|
||||||
dirmngr \
|
|
||||||
g++ \
|
|
||||||
git \
|
|
||||||
gnupg \
|
|
||||||
libsqlite3-dev \
|
|
||||||
libtinfo-dev \
|
|
||||||
libgmp-dev \
|
|
||||||
make \
|
|
||||||
netbase \
|
|
||||||
openssh-client \
|
|
||||||
xz-utils \
|
|
||||||
zlib1g-dev \
|
|
||||||
libnuma-dev libgmp10 libssl-dev liblzma-dev libbz2-dev wget lsb-release software-properties-common apt-transport-https gcc autoconf automake build-essential gzip patchelf tree \
|
|
||||||
llvm-11 clang-11 && \
|
|
||||||
rm -rf /var/lib/apt/lists/*
|
|
||||||
|
|
||||||
RUN update_opt.sh 11 1
|
|
||||||
|
|
||||||
ARG GHCUP_VERSION=0.1.20.0
|
|
||||||
ARG GPG_KEY="7D1E8AFD1D4A16D71FADA2F2CCC85C0E40C06A8C FFEB7CE81E16A36B3E2DED6F2DE04D4E97DB64AD 88B57FCF7DB53B4DB3BFA4B1588764FBE22D19C4 EAF2A9A722C0C96F2B431CA511AAD8CEDEE0CAEF"
|
|
||||||
|
|
||||||
# install ghcup
|
|
||||||
RUN gpg --batch --keyserver keys.openpgp.org --recv-keys $GPG_KEY && \
|
|
||||||
curl -sSfL -O https://downloads.haskell.org/~ghcup/$GHCUP_VERSION/aarch64-linux-ghcup-$GHCUP_VERSION && \
|
|
||||||
curl -sSfL -O https://downloads.haskell.org/~ghcup/$GHCUP_VERSION/SHA256SUMS && \
|
|
||||||
curl -sSfL -O https://downloads.haskell.org/~ghcup/$GHCUP_VERSION/SHA256SUMS.sig && \
|
|
||||||
gpg --verify SHA256SUMS.sig SHA256SUMS && \
|
|
||||||
sha256sum -c --ignore-missing SHA256SUMS && \
|
|
||||||
mv aarch64-linux-ghcup-$GHCUP_VERSION /usr/bin/ghcup && \
|
|
||||||
chmod +x /usr/bin/ghcup && \
|
|
||||||
rm -rf SHA256SUMS SHA256SUMS.sig
|
|
||||||
|
|
||||||
ARG GHC=9.4.8
|
|
||||||
ARG CABAL_INSTALL=3.10.2.0
|
|
||||||
ARG STACK=2.13.1
|
|
||||||
|
|
||||||
ENV GHCUP_CURL_OPTS="--silent"
|
|
||||||
ENV NO_COLOR=1
|
|
||||||
|
|
||||||
# install haskell toolchain
|
|
||||||
RUN ghcup config set gpg-setting GPGStrict && \
|
|
||||||
ghcup --verbose install ghc --isolate=/usr --force ${GHC} && \
|
|
||||||
ghcup --verbose install cabal --isolate=/usr/bin --force ${CABAL_INSTALL} && \
|
|
||||||
ghcup gc -s -c -t
|
|
||||||
|
|
||||||
ENV PATH /root/.cabal/bin:/root/.ghcup/bin:/root/.local/bin:$PATH
|
|
||||||
|
|
||||||
CMD ["ghci"]
|
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue
Block a user