Compare commits
No commits in common. "develop" and "hls-metadata" have entirely different histories.
develop
...
hls-metada
28
.github/scripts/brew.sh
vendored
28
.github/scripts/brew.sh
vendored
@ -1,28 +0,0 @@
|
||||
#!/bin/sh
|
||||
|
||||
set -eux
|
||||
|
||||
# shellcheck disable=SC1091
|
||||
. .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+"$@"}
|
||||
|
66
.github/scripts/build.sh
vendored
66
.github/scripts/build.sh
vendored
@ -1,66 +0,0 @@
|
||||
#!/bin/bash
|
||||
|
||||
set -eux
|
||||
|
||||
# shellcheck disable=SC1091
|
||||
. .github/scripts/env.sh
|
||||
# shellcheck disable=SC1091
|
||||
. .github/scripts/common.sh
|
||||
|
||||
uname -a
|
||||
uname -p
|
||||
uname
|
||||
pwd
|
||||
env
|
||||
|
||||
# ensure ghcup
|
||||
install_ghcup
|
||||
|
||||
# build
|
||||
ghcup install ghc "${GHC_VERSION}"
|
||||
ghcup set ghc "${GHC_VERSION}"
|
||||
sed -i.bak -e '/DELETE MARKER FOR CI/,/END DELETE/d' cabal.project # see comment in cabal.project
|
||||
ecabal update
|
||||
ecabal user-config diff
|
||||
ecabal user-config init -f
|
||||
"ghc-${GHC_VERSION}" --info
|
||||
"ghc" --info
|
||||
|
||||
# https://github.com/haskell/cabal/issues/7313#issuecomment-811851884
|
||||
if [ "$(getconf LONG_BIT)" == "32" ] || [ "${DISTRO}" == "CentOS" ] ; then
|
||||
echo 'constraints: lukko -ofd-locking' >> cabal.project.release.local
|
||||
fi
|
||||
|
||||
# shellcheck disable=SC2206
|
||||
args=(
|
||||
-w "ghc-$GHC_VERSION"
|
||||
--disable-profiling
|
||||
--enable-executable-stripping
|
||||
--project-file=cabal.project.release
|
||||
${ADD_CABAL_ARGS}
|
||||
)
|
||||
|
||||
run cabal v2-build "${args[@]}" cabal-install
|
||||
|
||||
mkdir -p "$CI_PROJECT_DIR/out"
|
||||
# shellcheck disable=SC2154
|
||||
cp "$(cabal list-bin "${args[@]}" cabal-install:exe:cabal)" "$CI_PROJECT_DIR/out/cabal$ext"
|
||||
cp dist-newstyle/cache/plan.json "$CI_PROJECT_DIR/out/plan.json"
|
||||
cd "$CI_PROJECT_DIR/out/"
|
||||
|
||||
# create tarball/zip
|
||||
TARBALL_PREFIX="cabal-install-$("$CI_PROJECT_DIR/out/cabal" --numeric-version)"
|
||||
case "${TARBALL_EXT}" in
|
||||
zip)
|
||||
zip "${TARBALL_PREFIX}-${ARTIFACT}.${TARBALL_EXT}" "cabal${ext}" plan.json
|
||||
;;
|
||||
tar.xz)
|
||||
tar caf "${TARBALL_PREFIX}-${ARTIFACT}.${TARBALL_EXT}" "cabal${ext}" plan.json
|
||||
;;
|
||||
*)
|
||||
fail "Unknown TARBALL_EXT: ${TARBALL_EXT}"
|
||||
;;
|
||||
esac
|
||||
|
||||
rm cabal plan.json
|
||||
|
110
.github/scripts/common.sh
vendored
110
.github/scripts/common.sh
vendored
@ -1,110 +0,0 @@
|
||||
#!/bin/bash
|
||||
|
||||
# shellcheck disable=SC1091
|
||||
. .github/scripts/env.sh
|
||||
|
||||
# Colors
|
||||
RED="0;31"
|
||||
LT_BROWN="1;33"
|
||||
LT_BLUE="1;34"
|
||||
|
||||
ecabal() {
|
||||
cabal "$@"
|
||||
}
|
||||
|
||||
nonfatal() {
|
||||
"$@" || "$* failed"
|
||||
}
|
||||
|
||||
sha_sum() {
|
||||
if [ "${RUNNER_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
|
||||
}
|
||||
|
||||
install_ghcup() {
|
||||
# find "$GHCUP_INSTALL_BASE_PREFIX"
|
||||
mkdir -p "$GHCUP_BIN"
|
||||
mkdir -p "$GHCUP_BIN"/../cache
|
||||
|
||||
if [ "${RUNNER_OS}" = "FreeBSD" ] ; then
|
||||
curl -o ghcup https://downloads.haskell.org/ghcup/tmp/x86_64-portbld-freebsd-ghcup-0.1.18.1
|
||||
chmod +x ghcup
|
||||
mv ghcup "$HOME/.local/bin/ghcup"
|
||||
else
|
||||
curl --proto '=https' --tlsv1.2 -sSf https://get-ghcup.haskell.org | BOOTSTRAP_HASKELL_MINIMAL=1 sh
|
||||
source "$(dirname "${GHCUP_BIN}")/env"
|
||||
ghcup install cabal --set "${BOOTSTRAP_HASKELL_CABAL_VERSION}"
|
||||
fi
|
||||
}
|
||||
|
||||
strip_binary() {
|
||||
(
|
||||
set -e
|
||||
local binary=$1
|
||||
case "$(uname -s)" in
|
||||
"Darwin"|"darwin")
|
||||
;;
|
||||
MSYS_*|MINGW*)
|
||||
;;
|
||||
*)
|
||||
strip -s "${binary}"
|
||||
;;
|
||||
esac
|
||||
)
|
||||
}
|
||||
|
||||
# GitLab Pipelines log section delimiters
|
||||
# https://gitlab.com/gitlab-org/gitlab-foss/issues/14664
|
||||
start_section() {
|
||||
name="$1"
|
||||
echo -e "section_start:$(date +%s):$name\015\033[0K"
|
||||
}
|
||||
|
||||
end_section() {
|
||||
name="$1"
|
||||
echo -e "section_end:$(date +%s):$name\015\033[0K"
|
||||
}
|
||||
|
||||
echo_color() {
|
||||
local color="$1"
|
||||
local msg="$2"
|
||||
echo -e "\033[${color}m${msg}\033[0m"
|
||||
}
|
||||
|
||||
error() { echo_color "${RED}" "$1"; }
|
||||
warn() { echo_color "${LT_BROWN}" "$1"; }
|
||||
info() { echo_color "${LT_BLUE}" "$1"; }
|
||||
|
||||
fail() { error "error: $1"; exit 1; }
|
||||
|
||||
run() {
|
||||
info "Running $*..."
|
||||
"$@" || ( error "$* failed"; return 1; )
|
||||
}
|
||||
|
||||
emake() {
|
||||
if command -v gmake >/dev/null 2>&1 ; then
|
||||
gmake "$@"
|
||||
else
|
||||
make "$@"
|
||||
fi
|
||||
}
|
||||
|
||||
mktempdir() {
|
||||
case "$(uname -s)" in
|
||||
"Darwin"|"darwin")
|
||||
mktemp -d -t cabal_ci.XXXXXXX
|
||||
;;
|
||||
*)
|
||||
mktemp -d
|
||||
;;
|
||||
esac
|
||||
}
|
38
.github/scripts/env.sh
vendored
38
.github/scripts/env.sh
vendored
@ -1,38 +0,0 @@
|
||||
#!/bin/bash
|
||||
|
||||
mkdir -p "$HOME"/.local/bin
|
||||
|
||||
if [ "${RUNNER_OS}" = "Windows" ] ; then
|
||||
ext=".exe"
|
||||
else
|
||||
# shellcheck disable=SC2034
|
||||
ext=''
|
||||
fi
|
||||
|
||||
export PATH="$HOME/.local/bin:$PATH"
|
||||
|
||||
export BOOTSTRAP_HASKELL_NONINTERACTIVE=1
|
||||
export BOOTSTRAP_HASKELL_CABAL_VERSION="${CABAL_VER:-3.6.2.0-p2}"
|
||||
export BOOTSTRAP_HASKELL_ADJUST_CABAL_CONFIG=no
|
||||
export BOOTSTRAP_HASKELL_INSTALL_NO_STACK=yes
|
||||
export BOOTSTRAP_HASKELL_ADJUST_BASHRC=1
|
||||
|
||||
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
|
||||
|
||||
export DEBIAN_FRONTEND=noninteractive
|
||||
export TZ=Asia/Singapore
|
242
.github/workflows/bindists.yaml
vendored
242
.github/workflows/bindists.yaml
vendored
@ -1,242 +0,0 @@
|
||||
name: Bindist installation
|
||||
defaults:
|
||||
run:
|
||||
shell: bash
|
||||
on:
|
||||
workflow_dispatch:
|
||||
inputs:
|
||||
tool:
|
||||
description: Tool
|
||||
required: true
|
||||
type: string
|
||||
version:
|
||||
description: Version
|
||||
required: true
|
||||
type: string
|
||||
metadataFile:
|
||||
description: Metadata file
|
||||
required: true
|
||||
default: ghcup-0.0.8.yaml
|
||||
type: string
|
||||
channel:
|
||||
description: Distribution channel (main|prerelease|nightly)
|
||||
required: true
|
||||
default: Main
|
||||
type: string
|
||||
env:
|
||||
BOOTSTRAP_HASKELL_NONINTERACTIVE: 1
|
||||
BOOTSTRAP_HASKELL_MINIMAL: 1
|
||||
BOOTSTRAP_HASKELL_ADJUST_BASHRC: 1
|
||||
TOOL: ${{ github.event.inputs.tool }}
|
||||
VERSION: ${{ github.event.inputs.version }}
|
||||
METADATA_FILE: ${{ github.event.inputs.metadataFile }}
|
||||
CHANNEL: ${{ github.event.inputs.channel }}
|
||||
jobs:
|
||||
bindist-install:
|
||||
name: linux-${{ matrix.image }}
|
||||
runs-on: ubuntu-latest
|
||||
strategy:
|
||||
fail-fast: false
|
||||
matrix:
|
||||
include:
|
||||
- image: alpine:latest
|
||||
installCmd: apk update && apk add
|
||||
toolRequirements: binutils-gold curl gcc g++ gmp-dev libc-dev libffi-dev make musl-dev ncurses-dev perl tar xz
|
||||
- image: debian:10
|
||||
installCmd: apt-get update && apt-get install -y
|
||||
toolRequirements: build-essential curl libffi-dev libgmp-dev libgmp10 libncurses-dev libncurses5 libtinfo5 libnuma-dev
|
||||
- image: debian:11
|
||||
installCmd: apt-get update && apt-get install -y
|
||||
toolRequirements: build-essential curl libffi-dev libgmp-dev libgmp10 libncurses-dev libncurses5 libtinfo5 libnuma-dev
|
||||
- image: debian:12
|
||||
installCmd: apt-get update && apt-get install -y
|
||||
toolRequirements: build-essential curl libffi-dev libgmp-dev libgmp10 libncurses-dev libncurses5 libtinfo5 libnuma-dev
|
||||
- image: debian:unstable
|
||||
installCmd: apt-get update && apt-get install -y
|
||||
toolRequirements: build-essential curl libffi-dev libgmp-dev libgmp10 libncurses-dev libncurses6 libtinfo6 libnuma-dev
|
||||
- image: ubuntu:16.04
|
||||
installCmd: apt-get update && apt-get install -y
|
||||
toolRequirements: build-essential curl libffi-dev libffi6 libgmp-dev libgmp10 libncurses-dev libncurses5 libtinfo5
|
||||
- image: ubuntu:18.04
|
||||
installCmd: apt-get update && apt-get install -y
|
||||
toolRequirements: build-essential curl libffi-dev libffi6 libgmp-dev libgmp10 libncurses-dev libncurses5 libtinfo5
|
||||
- image: ubuntu:20.04
|
||||
installCmd: apt-get update && apt-get install -y
|
||||
toolRequirements: build-essential curl libffi-dev libffi7 libgmp-dev libgmp10 libncurses-dev libncurses5 libtinfo5
|
||||
- image: ubuntu:22.04
|
||||
installCmd: apt-get update && apt-get install -y
|
||||
toolRequirements: build-essential curl libffi-dev libffi7 libgmp-dev libgmp10 libncurses-dev libncurses5 libtinfo5
|
||||
- image: archlinux:latest
|
||||
installCmd: pacman -Syu --noconfirm
|
||||
toolRequirements: which gcc gmp libffi make ncurses perl tar xz
|
||||
- image: fedora:27
|
||||
installCmd: dnf install -y
|
||||
toolRequirements: which findutils gcc gcc-c++ gmp gmp-devel make ncurses ncurses-compat-libs xz perl
|
||||
- image: fedora:37
|
||||
installCmd: dnf install -y
|
||||
toolRequirements: which gcc g++ gmp gmp-devel make ncurses ncurses-compat-libs xz perl
|
||||
- image: rockylinux:8
|
||||
installCmd: dnf install -y
|
||||
toolRequirements: which findutils gcc gcc-c++ gmp gmp-devel make ncurses ncurses-compat-libs xz perl
|
||||
- image: rockylinux:9
|
||||
installCmd: dnf install -y --allowerasing
|
||||
toolRequirements: which findutils gcc gcc-c++ gmp gmp-devel make ncurses xz perl
|
||||
- image: linuxmintd/mint19.3-amd64
|
||||
installCmd: apt-get update && apt-get install -y
|
||||
toolRequirements: build-essential curl libffi-dev libffi6 libgmp-dev libgmp10 libncurses-dev libncurses5 libtinfo5
|
||||
- image: linuxmintd/mint20.3-amd64
|
||||
installCmd: apt-get update && apt-get install -y
|
||||
toolRequirements: build-essential curl libffi-dev libffi7 libgmp-dev libgmp10 libncurses-dev libncurses5 libtinfo5
|
||||
- image: linuxmintd/mint21.3-amd64
|
||||
installCmd: apt-get update && apt-get install -y
|
||||
toolRequirements: build-essential curl libffi-dev libffi7 libgmp-dev libgmp10 libncurses-dev libncurses5 libtinfo5
|
||||
- image: ghcr.io/void-linux/void-glibc-full:latest
|
||||
installCmd: xbps-install -Suy && xbps-install -y
|
||||
toolRequirements: binutils curl gcc gmp-devel glibc-devel libffi-devel make ncurses-devel ncurses-libtinfo-libs perl tar xz
|
||||
container:
|
||||
image: ${{ matrix.image }}
|
||||
steps:
|
||||
- name: Install requirements
|
||||
shell: sh
|
||||
run: |
|
||||
${{ matrix.installCmd }} curl bash git ${{ matrix.toolRequirements }}
|
||||
|
||||
- uses: actions/checkout@v3
|
||||
|
||||
- name: Install ghcup and bindist
|
||||
run: .github/workflows/install-bindist.sh
|
||||
|
||||
bindist-install-mac-win:
|
||||
name: Build non-linux
|
||||
strategy:
|
||||
fail-fast: false
|
||||
matrix:
|
||||
include:
|
||||
- os: [self-hosted, macOS, ARM64]
|
||||
- os: macos-11
|
||||
- os: macos-12
|
||||
- os: windows-latest
|
||||
runs-on: ${{ matrix.os }}
|
||||
steps:
|
||||
|
||||
- uses: actions/checkout@v3
|
||||
|
||||
- if: ${{ github.event_name == 'workflow_dispatch' }}
|
||||
name: Install ghcup and bindist
|
||||
run: .github/workflows/install-bindist.sh
|
||||
|
||||
bindist-install-arm:
|
||||
name: Build ARM binary
|
||||
runs-on: ${{ matrix.os }}
|
||||
strategy:
|
||||
fail-fast: false
|
||||
matrix:
|
||||
include:
|
||||
- os: [self-hosted, Linux, ARM64, maerwald]
|
||||
ARCH: ARM
|
||||
- os: [self-hosted, Linux, ARM64, maerwald]
|
||||
ARCH: ARM64
|
||||
steps:
|
||||
- uses: docker://arm64v8/ubuntu:focal
|
||||
name: Cleanup (aarch64 linux)
|
||||
with:
|
||||
args: "find . -mindepth 1 -maxdepth 1 -exec rm -rf -- {} +"
|
||||
|
||||
- name: git config
|
||||
run: |
|
||||
git config --global --get-all safe.directory | grep '^\*$' || git config --global --add safe.directory "*"
|
||||
shell: bash
|
||||
|
||||
- uses: actions/checkout@v3
|
||||
|
||||
- if: matrix.ARCH == 'ARM'
|
||||
uses: docker://hasufell/arm32v7-ubuntu-haskell:focal
|
||||
name: Run build (armv7 linux)
|
||||
with:
|
||||
args: sh -c '.github/workflows/install-bindist.sh'
|
||||
|
||||
- if: matrix.ARCH == 'ARM64'
|
||||
uses: docker://hasufell/arm64v8-ubuntu-haskell:focal
|
||||
name: Run build (aarch64 linux)
|
||||
with:
|
||||
args: sh -c '.github/workflows/install-bindist.sh'
|
||||
|
||||
bindist-install-freebsd:
|
||||
name: Install FreeBSD binary
|
||||
runs-on: [self-hosted, FreeBSD, X64]
|
||||
steps:
|
||||
- uses: actions/checkout@v3
|
||||
|
||||
- name: Run build
|
||||
run: .github/workflows/install-bindist.sh
|
||||
|
||||
validate:
|
||||
name: ghcup-gen check
|
||||
runs-on: ubuntu-latest
|
||||
env:
|
||||
GHC: 9.2.8
|
||||
CABAL: 3.10.1.0
|
||||
steps:
|
||||
- name: create ~/.local/bin
|
||||
run: mkdir -p "$HOME/.local/bin"
|
||||
shell: bash
|
||||
|
||||
- name: Add ~/.local/bin to PATH
|
||||
run: echo "$HOME/.local/bin" >> $GITHUB_PATH
|
||||
shell: bash
|
||||
|
||||
- name: install yamllint
|
||||
run: pip install yamllint
|
||||
|
||||
- name: Update cabal cache
|
||||
run: cabal update
|
||||
shell: bash
|
||||
|
||||
- name: Install requirements
|
||||
shell: sh
|
||||
run: |
|
||||
export DEBIAN_FRONTEND=noninteractive
|
||||
export TZ=Asia/Singapore
|
||||
sudo apt-get update && sudo apt-get install -y curl bash git gnupg libarchive-dev
|
||||
|
||||
- uses: actions/checkout@v3
|
||||
|
||||
- name: Cache Cabal
|
||||
uses: actions/cache@v2
|
||||
env:
|
||||
cache-name: cache-cabal
|
||||
with:
|
||||
path: |
|
||||
~/.cabal/store
|
||||
~/.cabal/packages
|
||||
key: v2-${{ runner.os }}-${{ env.GHC }}-${{ env.CABAL }}-build-${{ hashFiles('cabal.project') }}
|
||||
restore-keys: |
|
||||
v2-${{ runner.os }}-${{ env.GHC }}-${{ env.CABAL }}-build-${{ hashFiles('cabal.project') }}
|
||||
v2-${{ runner.os }}-${{ env.GHC }}-${{ env.CABAL }}-build-
|
||||
v2-${{ runner.os }}-${{ env.GHC }}
|
||||
|
||||
- name: Install ghcup-gen
|
||||
run: |
|
||||
ghcup run --cabal 3.10.1.0 --ghc 9.2.8 --install -- cabal install --installdir="$HOME/.local/bin" --overwrite-policy=always --install-method=copy ghcup-gen
|
||||
shell: bash
|
||||
|
||||
- name: Check yaml
|
||||
run: |
|
||||
ghcup-gen -- check -f ${{ env.METADATA_FILE }} --channel ${{ env.CHANNEL }}
|
||||
yamllint ${{ env.METADATA_FILE }}
|
||||
python3 -c "import yaml ; stream = open('${{ env.METADATA_FILE }}', 'r') ; yaml.safe_load(stream)"
|
||||
shell: bash
|
||||
|
||||
signature-test:
|
||||
name: Test signatures
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- name: Install requirements
|
||||
shell: sh
|
||||
run: |
|
||||
sudo apt-get update && sudo apt-get install -y curl bash git gnupg
|
||||
|
||||
- uses: actions/checkout@v3
|
||||
|
||||
- name: Test signatures
|
||||
run: .github/workflows/test-sigs.sh
|
30
.github/workflows/common.sh
vendored
30
.github/workflows/common.sh
vendored
@ -1,30 +0,0 @@
|
||||
#!/bin/bash
|
||||
|
||||
if [ "${RUNNER_OS}" = "Windows" ] ; then
|
||||
ext=".exe"
|
||||
else
|
||||
ext=''
|
||||
fi
|
||||
|
||||
echo_color() {
|
||||
local color="$1"
|
||||
local msg="$2"
|
||||
echo -e "\033[${color}m${msg}\033[0m"
|
||||
}
|
||||
|
||||
error() { echo_color "${RED}" "$1"; }
|
||||
warn() { echo_color "${LT_BROWN}" "$1"; }
|
||||
info() { echo_color "${LT_BLUE}" "$1"; }
|
||||
|
||||
fail() { error "error: $1"; exit 1; }
|
||||
|
||||
mktempdir() {
|
||||
case "$(uname -s)" in
|
||||
"Darwin"|"darwin")
|
||||
mktemp -d -t hls_ci.XXXXXXX
|
||||
;;
|
||||
*)
|
||||
mktemp -d
|
||||
;;
|
||||
esac
|
||||
}
|
146
.github/workflows/install-bindist.sh
vendored
146
.github/workflows/install-bindist.sh
vendored
@ -1,146 +0,0 @@
|
||||
#!/usr/bin/env bash
|
||||
set -x
|
||||
set -eo pipefail
|
||||
|
||||
. .github/workflows/common.sh
|
||||
|
||||
export GHCUP_INSTALL_BASE_PREFIX=$RUNNER_TEMP/foobarbaz
|
||||
|
||||
curl --proto '=https' --tlsv1.2 -sSf https://raw.githubusercontent.com/haskell/ghcup-hs/master/scripts/bootstrap/bootstrap-haskell | sh
|
||||
|
||||
source "$GHCUP_INSTALL_BASE_PREFIX"/.ghcup/env || source "$HOME/.bashrc"
|
||||
|
||||
ghcup --version
|
||||
which ghcup | grep foobarbaz
|
||||
|
||||
ghcup_fun() {
|
||||
case "$(uname -s)" in
|
||||
MSYS_*|MINGW*)
|
||||
ghcup -v --url-source="file:${GITHUB_WORKSPACE//\\//}/$METADATA_FILE" "$@"
|
||||
;;
|
||||
*)
|
||||
ghcup -v --url-source="file://${GITHUB_WORKSPACE}/$METADATA_FILE" "$@"
|
||||
;;
|
||||
esac
|
||||
}
|
||||
|
||||
case $TOOL in
|
||||
ghcup)
|
||||
ghcup_fun upgrade --force
|
||||
;;
|
||||
*) ghcup_fun install "$TOOL" --set "$VERSION"
|
||||
;;
|
||||
esac
|
||||
|
||||
mkdir -p /tmp/install-bindist-ci
|
||||
cd /tmp/install-bindist-ci
|
||||
|
||||
trap 'rm -rf -- /tmp/install-bindist-ci' EXIT
|
||||
|
||||
cat <<EOF > main.hs
|
||||
{- cabal:
|
||||
build-depends: base
|
||||
-}
|
||||
|
||||
main = print $ 1 + 1
|
||||
EOF
|
||||
|
||||
case $TOOL in
|
||||
ghcup)
|
||||
ghcup_fun list
|
||||
;;
|
||||
hls)
|
||||
ghcup_fun install cabal latest
|
||||
ghcup_fun install ghc --set recommended
|
||||
cabal update
|
||||
|
||||
test_package="bytestring-0.11.1.0"
|
||||
test_module="Data/ByteString.hs"
|
||||
|
||||
create_cradle() {
|
||||
echo "cradle:" > hie.yaml
|
||||
echo " cabal:" >> hie.yaml
|
||||
}
|
||||
|
||||
enter_test_package() {
|
||||
local tmp_dir
|
||||
tmp_dir=$(mktempdir)
|
||||
cd "$tmp_dir"
|
||||
cabal unpack "${test_package}"
|
||||
cd "${test_package}"
|
||||
}
|
||||
|
||||
# For all HLS GHC versions and the wrapper, run 'typecheck'
|
||||
# over the $test_module
|
||||
test_all_hls() {
|
||||
local bin
|
||||
local bin_noexe
|
||||
local bindir
|
||||
local hls
|
||||
bindir=$1
|
||||
|
||||
for hls in "${bindir}/"haskell-language-server-* ; do
|
||||
bin=${hls##*/}
|
||||
bin_noexe=${bin/.exe/}
|
||||
if ! [[ "${bin_noexe}" =~ "haskell-language-server-wrapper" ]] && ! [[ "${bin_noexe}" =~ "~" ]] && ! [[ "${bin_noexe}" =~ ".shim" ]] ; then
|
||||
if ghcup_fun install ghc --set "${bin_noexe/haskell-language-server-/}" ; then
|
||||
"${hls}" typecheck "${test_module}" || fail "failed to typecheck with HLS for GHC ${bin_noexe/haskell-language-server-/}"
|
||||
else
|
||||
fail "GHCup failed to install GHC ${bin_noexe/haskell-language-server-/}"
|
||||
fi
|
||||
ghcup_fun rm ghc "${bin_noexe/haskell-language-server-/}"
|
||||
fi
|
||||
done
|
||||
ghcup_fun install ghc --set recommended
|
||||
"$bindir/haskell-language-server-wrapper${ext}" typecheck "${test_module}" || fail "failed to typecheck with HLS wrapper"
|
||||
}
|
||||
|
||||
enter_test_package
|
||||
create_cradle
|
||||
case "$(uname -s)" in
|
||||
MSYS_*|MINGW*)
|
||||
test_all_hls "$(dirname "$(which ghcup)")"
|
||||
;;
|
||||
*)
|
||||
test_all_hls "$(ghcup whereis bindir)"
|
||||
;;
|
||||
esac
|
||||
;;
|
||||
ghc)
|
||||
ghc --version
|
||||
ghc --info
|
||||
ghc -prof main.hs
|
||||
[[ $(./main +RTS -s) -eq 2 ]]
|
||||
ghcup install cabal recommended
|
||||
cabal --version
|
||||
cabal update
|
||||
case "${CHANNEL}" in
|
||||
Prerelease|prereleasee)
|
||||
cabal install --lib --package-env=. --allow-newer clock
|
||||
# https://github.com/haskell/ghcup-hs/issues/966
|
||||
cabal install --lib --package-env=. --allow-newer --constraint='filepath <1.5' hashable
|
||||
;;
|
||||
*)
|
||||
cabal install --lib --package-env=. clock
|
||||
# https://github.com/haskell/ghcup-hs/issues/966
|
||||
cabal install --lib --package-env=. hashable
|
||||
;;
|
||||
esac
|
||||
case "$(uname -s)" in
|
||||
MSYS_*|MINGW*)
|
||||
;;
|
||||
*)
|
||||
[[ -e "$(ghcup whereis --directory ghc "$VERSION")/../share/man/man1/ghc.1" ]]
|
||||
;;
|
||||
esac
|
||||
;;
|
||||
cabal)
|
||||
ghcup_fun install ghc --set "$(ghcup_fun list -t ghc -r -c available | tail -1 | awk '{ print $2 }')"
|
||||
cabal --version
|
||||
cabal update
|
||||
[[ $(cabal --verbose=0 run --enable-profiling ./main.hs -- +RTS -s) -eq 2 ]]
|
||||
;;
|
||||
*)
|
||||
$TOOL --version
|
||||
;;
|
||||
esac
|
6
.github/workflows/sigs
vendored
6
.github/workflows/sigs
vendored
@ -1,6 +0,0 @@
|
||||
keys=(
|
||||
7D1E8AFD1D4A16D71FADA2F2CCC85C0E40C06A8C # Julian Ospald <maerwald@hasufell.de>
|
||||
FFEB7CE81E16A36B3E2DED6F2DE04D4E97DB64AD # Ben Gamari <ben@well-typed.com>
|
||||
88B57FCF7DB53B4DB3BFA4B1588764FBE22D19C4 # Zubin Duggal <zubin@well-typed.com>
|
||||
EAF2A9A722C0C96F2B431CA511AAD8CEDEE0CAEF # Hécate <hecate@glitchbra.in>
|
||||
)
|
27
.github/workflows/test-sigs.sh
vendored
27
.github/workflows/test-sigs.sh
vendored
@ -1,27 +0,0 @@
|
||||
#!/usr/bin/env bash
|
||||
|
||||
set -x
|
||||
set -eo pipefail
|
||||
|
||||
. .github/workflows/common.sh
|
||||
|
||||
get_key() {
|
||||
local key=$1
|
||||
local server=$2
|
||||
gpg --batch --keyserver "${server}" --recv-keys "${key}"
|
||||
echo -e "${key}:6:" | gpg --import-ownertrust
|
||||
}
|
||||
|
||||
# verify signature
|
||||
. .github/workflows/sigs
|
||||
|
||||
for key in "${keys[@]}" ; do
|
||||
get_key "${key}" keys.openpgp.org || get_key "${key}" keyserver.ubuntu.com
|
||||
done
|
||||
unset key
|
||||
gpg --verify "${METADATA_FILE}.sig"
|
||||
|
||||
for f in ghcup-*.json ghcup-*.yaml hls-metadata-*.json ; do
|
||||
gpg --verify "${f}.sig"
|
||||
done
|
||||
|
22
.github/workflows/test.yaml
vendored
22
.github/workflows/test.yaml
vendored
@ -2,16 +2,16 @@ name: Tests
|
||||
|
||||
on:
|
||||
push:
|
||||
branches: [ master, develop ]
|
||||
branches: [ master ]
|
||||
pull_request:
|
||||
branches: [ master, develop ]
|
||||
branches: [ master ]
|
||||
|
||||
jobs:
|
||||
test:
|
||||
name: Test metadata
|
||||
runs-on: ${{ matrix.os }}
|
||||
env:
|
||||
YAML_VER: 0.0.7
|
||||
YAML_VER: 0.0.6
|
||||
strategy:
|
||||
matrix:
|
||||
ghc:
|
||||
@ -19,7 +19,7 @@ jobs:
|
||||
cabal:
|
||||
- '3.6.2.0'
|
||||
os:
|
||||
- ubuntu-22.04
|
||||
- ubuntu-latest
|
||||
steps:
|
||||
- name: Checkout code
|
||||
uses: actions/checkout@v2
|
||||
@ -51,30 +51,18 @@ jobs:
|
||||
run: echo "$HOME/.local/bin" >> $GITHUB_PATH
|
||||
shell: bash
|
||||
|
||||
- name: install yamllint
|
||||
run: pip install yamllint
|
||||
|
||||
- name: Update cabal cache
|
||||
run: cabal update
|
||||
shell: bash
|
||||
|
||||
- name: Install some deps
|
||||
run: |
|
||||
export DEBIAN_FRONTEND=noninteractive
|
||||
export TZ=Asia/Singapore
|
||||
sudo apt install -y libarchive-dev
|
||||
shell: bash
|
||||
|
||||
- name: Install ghcup-gen
|
||||
run: |
|
||||
cabal install --installdir="$HOME/.local/bin" --overwrite-policy=always --install-method=copy ghcup-gen
|
||||
shell: bash
|
||||
|
||||
- name: Check yaml
|
||||
- name: Check
|
||||
run: |
|
||||
ghcup-gen -- check -f ghcup-${{ env.YAML_VER }}.yaml
|
||||
yamllint ghcup-${{ env.YAML_VER }}.yaml
|
||||
python3 -c "import yaml ; stream = open('ghcup-${{ env.YAML_VER }}.yaml', 'r') ; yaml.safe_load(stream)"
|
||||
shell: bash
|
||||
|
||||
- name: Check tarballs
|
||||
|
4
.gitignore
vendored
4
.gitignore
vendored
@ -12,6 +12,6 @@ tags
|
||||
TAGS
|
||||
/tmp/
|
||||
.entangled
|
||||
/release/
|
||||
/releases/
|
||||
release/
|
||||
releases/
|
||||
site/
|
||||
|
@ -1,5 +0,0 @@
|
||||
extends: default
|
||||
|
||||
rules:
|
||||
line-length: disable
|
||||
indentation: disable
|
56
README.md
56
README.md
@ -1,62 +1,12 @@
|
||||
# GHCup metadata
|
||||
|
||||
## For end users
|
||||
|
||||
### Metadata variants (distribution channels)
|
||||
|
||||
* `ghcup-A.B.C.yaml`: this is the main metadata and what ghcup uses by default
|
||||
* `ghcup-vanilla-A.B.C.yaml`: this is similar to `ghcup-A.B.C.yaml`, but only uses upstream bindists (no patches/fixes are applied, no missing platforms added)
|
||||
* `ghcup-prereleases-A.B.C.yaml`: this contains pre-releases of all tools
|
||||
* `ghcup-cross-A.B.C.yaml`: this contains experimental cross compilers. See https://www.haskell.org/ghcup/guide/#cross-support for details.
|
||||
|
||||
### Using the metadata
|
||||
|
||||
If you want access to both pre-releases and cross compilers, run:
|
||||
|
||||
```
|
||||
ghcup config add-release-channel https://raw.githubusercontent.com/haskell/ghcup-metadata/master/ghcup-prereleases-0.0.7.yaml
|
||||
ghcup config add-release-channel https://raw.githubusercontent.com/haskell/ghcup-metadata/master/ghcup-cross-0.0.8.yaml
|
||||
```
|
||||
|
||||
If you want **only** vanilla upstream bindists and opt out of all unofficial stuff, you'd run:
|
||||
|
||||
```sh
|
||||
ghcup config set url-source https://raw.githubusercontent.com/haskell/ghcup-metadata/master/ghcup-vanilla-0.0.8.yaml
|
||||
```
|
||||
|
||||
Also check the [config.yaml documentation](https://github.com/haskell/ghcup-hs/blob/master/data/config.yaml).
|
||||
|
||||
## For contributors
|
||||
|
||||
### Adding a new GHC version
|
||||
## 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.7`)
|
||||
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 ghcup-gen -- check -f ghcup-<yaml-ver>.yaml`
|
||||
7. run `cabal run ghcup-gen -- check-tarballs -f ghcup-<yaml-ver>.yaml -u 'ghc-8\.10\.8'`
|
||||
8. run `cabal run ghcup-gen -- generate-hls-ghcs -f ghcup-<yaml-ver>.yaml --format json -o hls-metadata-0.0.1.json`
|
||||
9. run `cabal run ghcup-gen -- generate-table -f ghcup-<yaml-ver>.yaml --stdout` and adjust [docs/install](https://gitlab.haskell.org/haskell/ghcup-hs/-/blob/master/docs/install.md) tables
|
||||
|
||||
### During a pull request
|
||||
|
||||
* make sure to always add new versions to both `ghcup-A.B.C.yaml` and `ghcup-vanilla-A.B.C.yaml`
|
||||
* make sure to run the bindist action to check tool installation on all platforms: https://github.com/haskell/ghcup-metadata/actions/workflows/bindists.yaml
|
||||
- this is a manual pipeline
|
||||
- set the appropriate parameters
|
||||
* make sure to sign the yaml files you edited, e.g.: `gpg --detach-sign -u <your-email> ghcup-0.0.7.yaml` or ask a GHCup developer to sign
|
||||
- PGP pubkeys need to be cross-signed by the GHCup team
|
||||
- they need to be added to the CI: https://github.com/haskell/ghcup-metadata/blob/develop/.github/workflows/sigs
|
||||
- and need to be documented on the homepage
|
||||
* https://github.com/haskell/ghcup-hs/blob/master/docs/guide.md#gpg-verification
|
||||
* https://github.com/haskell/ghcup-hs/blob/master/docs/install.md#unix
|
||||
|
||||
### Understanding tags
|
||||
|
||||
Tags are documented [here](https://github.com/haskell/ghcup-hs/blob/master/lib/GHCup/Types.hs). Search for `data Tag`.
|
||||
Some tags are unique. Uniqueness is checked by `cabal run ghcup-gen -- check -f ghcup-<yaml-ver>.yaml`.
|
||||
|
||||
If you want to check prereleases, do: `cabal run ghcup-gen -- check -f ghcup-prereleases-<yaml-ver>.yaml --channel=prerelease`
|
||||
6. run `cabal run ghcup-gen -- check -f ghcup-<yaml-ver>.yaml`
|
||||
7. run `cabal run ghcup-gen -- check-tarballs -f ghcup-<yaml-ver>.yaml -u 'ghc-8\.10\.8'`
|
||||
|
||||
|
@ -2,18 +2,19 @@ packages: ./ghcup-gen/ghcup-gen.cabal
|
||||
|
||||
package ghcup
|
||||
tests: False
|
||||
flags: +tui +no-exe
|
||||
flags: -tui +no-exe
|
||||
|
||||
source-repository-package
|
||||
type: git
|
||||
location: https://github.com/haskell/ghcup-hs.git
|
||||
tag: 91ef2c7666d118bc6bd7d2fc2eeb7754081a9f3d
|
||||
location: https://gitlab.haskell.org/haskell/ghcup-hs.git
|
||||
tag: v0.1.17.4
|
||||
|
||||
constraints: http-io-streams -brotli,
|
||||
any.Cabal ==3.6.2.0,
|
||||
any.aeson >= 2.0.1.0
|
||||
|
||||
package libarchive
|
||||
flags: +system-libarchive
|
||||
flags: -system-libarchive
|
||||
|
||||
package aeson-pretty
|
||||
flags: +lib-only
|
||||
@ -24,5 +25,5 @@ package cabal-plan
|
||||
package aeson
|
||||
flags: +ordered-keymap
|
||||
|
||||
package streamly
|
||||
flags: +use-unliftio
|
||||
allow-newer: base, ghc-prim, template-haskell, language-c
|
||||
|
||||
|
@ -2132,39 +2132,43 @@
|
||||
}
|
||||
},
|
||||
"GHCup": {
|
||||
"0.1.19.0": {
|
||||
"0.1.17.5": {
|
||||
"viTags": [
|
||||
"Recommended",
|
||||
"Latest"
|
||||
],
|
||||
"viChangeLog": "https://github.com/haskell/ghcup-hs/blob/master/CHANGELOG.md",
|
||||
"viChangeLog": "https://gitlab.haskell.org/haskell/ghcup-hs/-/blob/master/CHANGELOG.md",
|
||||
"viSourceDL": null,
|
||||
"viArch": {
|
||||
"A_64": {
|
||||
"Linux_UnknownLinux": {
|
||||
"unknown_versioning": {
|
||||
"dlUri": "https://downloads.haskell.org/~ghcup/0.1.19.0/x86_64-linux-ghcup-0.1.19.0",
|
||||
"dlHash": "33ee6a758ee06e3b520be176905e6192e31f5fa2e2acdc525b1bea77ca368a12"
|
||||
"dlUri": "https://downloads.haskell.org/~ghcup/0.1.17.5/x86_64-linux-ghcup-0.1.17.5",
|
||||
"dlSubdir": null,
|
||||
"dlHash": "7541bcf0b402f99d05cd1937f9fef69aec45c3153e42606671825be248484fb5"
|
||||
}
|
||||
},
|
||||
"Darwin": {
|
||||
"unknown_versioning": {
|
||||
"dlUri": "https://downloads.haskell.org/~ghcup/0.1.19.0/x86_64-apple-darwin-ghcup-0.1.19.0",
|
||||
"dlHash": "416de8509092fd95f97ee19a5f3def91fbd6e6fa4fa630a5c5e7226f49a83af7"
|
||||
"dlUri": "https://downloads.haskell.org/~ghcup/0.1.17.5/x86_64-apple-darwin-ghcup-0.1.17.5",
|
||||
"dlSubdir": null,
|
||||
"dlHash": "8b5159775de08a5f268f4be217fbb6f427ff8d8977197af209211b81ca0fe27f"
|
||||
}
|
||||
},
|
||||
"FreeBSD": {
|
||||
"unknown_versioning": {
|
||||
"dlUri": "https://downloads.haskell.org/~ghcup/0.1.19.0/x86_64-portbld-freebsd-ghcup-0.1.19.0",
|
||||
"dlHash": "dadf49f8ac045946ccea7369d0c80cf3a5221b2282d8f9943cc3dc86e8516a62"
|
||||
"dlUri": "https://downloads.haskell.org/~ghcup/0.1.17.5/x86_64-freebsd12-ghcup-0.1.17.5",
|
||||
"dlSubdir": null,
|
||||
"dlHash": "babb7366abb17bcb5d4fc1500039040f1b957073d618db3f1473b0bae6abc6bb"
|
||||
}
|
||||
}
|
||||
},
|
||||
"A_32": {
|
||||
"Linux_UnknownLinux": {
|
||||
"unknown_versioning": {
|
||||
"dlUri": "https://downloads.haskell.org/~ghcup/0.1.19.0/i386-linux-ghcup-0.1.19.0",
|
||||
"dlHash": "0308ebed4431241ef2886a9d374feb20a795d97ef3a24dd38b6bc7dd69e81e53"
|
||||
"dlUri": "https://downloads.haskell.org/~ghcup/0.1.17.5/i386-linux-ghcup-0.1.17.5",
|
||||
"dlSubdir": null,
|
||||
"dlHash": "5a2b1d2ceb32857866689ee1a1e29c5747333882a4e952d80eccf49482d3daab"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
Binary file not shown.
@ -2674,51 +2674,51 @@
|
||||
}
|
||||
},
|
||||
"GHCup": {
|
||||
"0.1.19.0": {
|
||||
"0.1.16.2": {
|
||||
"viTags": [
|
||||
"Recommended",
|
||||
"Latest"
|
||||
],
|
||||
"viChangeLog": "https://github.com/haskell/ghcup-hs/blob/master/CHANGELOG.md",
|
||||
"viChangeLog": "https://gitlab.haskell.org/haskell/ghcup-hs/-/blob/master/CHANGELOG.md",
|
||||
"viSourceDL": null,
|
||||
"viArch": {
|
||||
"A_64": {
|
||||
"Linux_UnknownLinux": {
|
||||
"unknown_versioning": {
|
||||
"dlUri": "https://downloads.haskell.org/~ghcup/0.1.19.0/x86_64-linux-ghcup-0.1.19.0",
|
||||
"dlHash": "33ee6a758ee06e3b520be176905e6192e31f5fa2e2acdc525b1bea77ca368a12"
|
||||
"dlUri": "https://downloads.haskell.org/~ghcup/0.1.16.2/x86_64-linux-ghcup-0.1.16.2",
|
||||
"dlHash": "d5e43b95ce1d42263376e414f7eb7c5dd440271c7c6cd9bad446fdeff3823893"
|
||||
}
|
||||
},
|
||||
"Darwin": {
|
||||
"unknown_versioning": {
|
||||
"dlUri": "https://downloads.haskell.org/~ghcup/0.1.19.0/x86_64-apple-darwin-ghcup-0.1.19.0",
|
||||
"dlHash": "416de8509092fd95f97ee19a5f3def91fbd6e6fa4fa630a5c5e7226f49a83af7"
|
||||
"dlUri": "https://downloads.haskell.org/~ghcup/0.1.16.2/x86_64-apple-darwin-ghcup-0.1.16.2",
|
||||
"dlHash": "a334620ccce7705211b2142882dde544003e6030af4b91a44c890542a90f879f"
|
||||
}
|
||||
},
|
||||
"FreeBSD": {
|
||||
"unknown_versioning": {
|
||||
"dlUri": "https://downloads.haskell.org/~ghcup/0.1.19.0/x86_64-portbld-freebsd-ghcup-0.1.19.0",
|
||||
"dlHash": "dadf49f8ac045946ccea7369d0c80cf3a5221b2282d8f9943cc3dc86e8516a62"
|
||||
"dlUri": "https://downloads.haskell.org/~ghcup/0.1.16.2/x86_64-portbld-freebsd-ghcup-0.1.16.2",
|
||||
"dlHash": "92359592a5694375e53b22628920086bf4bbf0faff5be018a0ed3e745a6426a9"
|
||||
}
|
||||
},
|
||||
"Linux_Alpine": {
|
||||
"unknown_versioning": {
|
||||
"dlUri": "https://downloads.haskell.org/~ghcup/0.1.19.0/x86_64-linux-ghcup-0.1.19.0",
|
||||
"dlHash": "33ee6a758ee06e3b520be176905e6192e31f5fa2e2acdc525b1bea77ca368a12"
|
||||
"dlUri": "https://downloads.haskell.org/~ghcup/0.1.16.2/x86_64-linux-ghcup-0.1.16.2",
|
||||
"dlHash": "d5e43b95ce1d42263376e414f7eb7c5dd440271c7c6cd9bad446fdeff3823893"
|
||||
}
|
||||
}
|
||||
},
|
||||
"A_32": {
|
||||
"Linux_UnknownLinux": {
|
||||
"unknown_versioning": {
|
||||
"dlUri": "https://downloads.haskell.org/~ghcup/0.1.19.0/i386-linux-ghcup-0.1.19.0",
|
||||
"dlHash": "0308ebed4431241ef2886a9d374feb20a795d97ef3a24dd38b6bc7dd69e81e53"
|
||||
"dlUri": "https://downloads.haskell.org/~ghcup/0.1.16.2/i386-linux-ghcup-0.1.16.2",
|
||||
"dlHash": "01968ca6decac7b6e8ba6e2c817870d3fa47289a6507e0c1ab563f7b6eec0e38"
|
||||
}
|
||||
},
|
||||
"Linux_Alpine": {
|
||||
"unknown_versioning": {
|
||||
"dlUri": "https://downloads.haskell.org/~ghcup/0.1.19.0/i386-linux-ghcup-0.1.19.0",
|
||||
"dlHash": "0308ebed4431241ef2886a9d374feb20a795d97ef3a24dd38b6bc7dd69e81e53"
|
||||
"dlUri": "https://downloads.haskell.org/~ghcup/0.1.16.2/i386-linux-ghcup-0.1.16.2",
|
||||
"dlHash": "01968ca6decac7b6e8ba6e2c817870d3fa47289a6507e0c1ab563f7b6eec0e38"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
Binary file not shown.
@ -1384,32 +1384,32 @@ ghcupDownloads:
|
||||
dlUri: https://oleg.fi/cabal-install-3.4.0.0-rc4/cabal-install-3.4.0.0-x86_64-freebsd-12.1-release.tar.xz
|
||||
dlHash: 9705e16d03497b46be4ad477e6c64d10890af853eafa8a9adf6dba89aa9e05f7
|
||||
GHCup:
|
||||
0.1.19.0:
|
||||
0.1.17.5:
|
||||
viTags:
|
||||
- Recommended
|
||||
- Latest
|
||||
viChangeLog: https://github.com/haskell/ghcup-hs/blob/master/CHANGELOG.md
|
||||
viChangeLog: https://gitlab.haskell.org/haskell/ghcup-hs/-/blob/master/CHANGELOG.md
|
||||
viSourceDL:
|
||||
viArch:
|
||||
A_64:
|
||||
Linux_UnknownLinux:
|
||||
unknown_versioning: &ghcup-64
|
||||
dlUri: https://downloads.haskell.org/~ghcup/0.1.19.0/x86_64-linux-ghcup-0.1.19.0
|
||||
dlHash: 33ee6a758ee06e3b520be176905e6192e31f5fa2e2acdc525b1bea77ca368a12
|
||||
dlUri: https://downloads.haskell.org/~ghcup/0.1.17.5/x86_64-linux-ghcup-0.1.17.5
|
||||
dlHash: 7541bcf0b402f99d05cd1937f9fef69aec45c3153e42606671825be248484fb5
|
||||
Darwin:
|
||||
unknown_versioning:
|
||||
dlUri: https://downloads.haskell.org/~ghcup/0.1.19.0/x86_64-apple-darwin-ghcup-0.1.19.0
|
||||
dlHash: 416de8509092fd95f97ee19a5f3def91fbd6e6fa4fa630a5c5e7226f49a83af7
|
||||
dlUri: https://downloads.haskell.org/~ghcup/0.1.17.5/x86_64-apple-darwin-ghcup-0.1.17.5
|
||||
dlHash: 8b5159775de08a5f268f4be217fbb6f427ff8d8977197af209211b81ca0fe27f
|
||||
FreeBSD:
|
||||
unknown_versioning:
|
||||
dlUri: https://downloads.haskell.org/~ghcup/0.1.19.0/x86_64-portbld-freebsd-ghcup-0.1.19.0
|
||||
dlHash: dadf49f8ac045946ccea7369d0c80cf3a5221b2282d8f9943cc3dc86e8516a62
|
||||
dlUri: https://downloads.haskell.org/~ghcup/0.1.17.5/x86_64-freebsd12-ghcup-0.1.17.5
|
||||
dlHash: babb7366abb17bcb5d4fc1500039040f1b957073d618db3f1473b0bae6abc6bb
|
||||
Linux_Alpine:
|
||||
unknown_versioning: *ghcup-64
|
||||
A_32:
|
||||
Linux_UnknownLinux:
|
||||
unknown_versioning: &ghcup-32
|
||||
dlUri: https://downloads.haskell.org/~ghcup/0.1.19.0/i386-linux-ghcup-0.1.19.0
|
||||
dlHash: 0308ebed4431241ef2886a9d374feb20a795d97ef3a24dd38b6bc7dd69e81e53
|
||||
dlUri: https://downloads.haskell.org/~ghcup/0.1.17.5/i386-linux-ghcup-0.1.17.5
|
||||
dlHash: 5a2b1d2ceb32857866689ee1a1e29c5747333882a4e952d80eccf49482d3daab
|
||||
Linux_Alpine:
|
||||
unknown_versioning: *ghcup-32
|
||||
|
Binary file not shown.
@ -1451,33 +1451,33 @@ ghcupDownloads:
|
||||
dlUri: https://oleg.fi/cabal-install-3.4.0.0-rc4/cabal-install-3.4.0.0-x86_64-freebsd-12.1-release.tar.xz
|
||||
dlHash: 9705e16d03497b46be4ad477e6c64d10890af853eafa8a9adf6dba89aa9e05f7
|
||||
GHCup:
|
||||
0.1.19.0:
|
||||
0.1.17.5:
|
||||
viTags:
|
||||
- Recommended
|
||||
- Latest
|
||||
viChangeLog: https://github.com/haskell/ghcup-hs/blob/master/CHANGELOG.md
|
||||
viChangeLog: https://gitlab.haskell.org/haskell/ghcup-hs/-/blob/master/CHANGELOG.md
|
||||
viSourceDL:
|
||||
viArch:
|
||||
A_64:
|
||||
Linux_UnknownLinux:
|
||||
unknown_versioning: &ghcup-64
|
||||
dlUri: https://downloads.haskell.org/~ghcup/0.1.19.0/x86_64-linux-ghcup-0.1.19.0
|
||||
dlHash: 33ee6a758ee06e3b520be176905e6192e31f5fa2e2acdc525b1bea77ca368a12
|
||||
dlUri: https://downloads.haskell.org/~ghcup/0.1.17.5/x86_64-linux-ghcup-0.1.17.5
|
||||
dlHash: 7541bcf0b402f99d05cd1937f9fef69aec45c3153e42606671825be248484fb5
|
||||
Darwin:
|
||||
unknown_versioning:
|
||||
dlUri: https://downloads.haskell.org/~ghcup/0.1.19.0/x86_64-apple-darwin-ghcup-0.1.19.0
|
||||
dlHash: 416de8509092fd95f97ee19a5f3def91fbd6e6fa4fa630a5c5e7226f49a83af7
|
||||
dlUri: https://downloads.haskell.org/~ghcup/0.1.17.5/x86_64-apple-darwin-ghcup-0.1.17.5
|
||||
dlHash: 8b5159775de08a5f268f4be217fbb6f427ff8d8977197af209211b81ca0fe27f
|
||||
FreeBSD:
|
||||
unknown_versioning:
|
||||
dlUri: https://downloads.haskell.org/~ghcup/0.1.19.0/x86_64-portbld-freebsd-ghcup-0.1.19.0
|
||||
dlHash: dadf49f8ac045946ccea7369d0c80cf3a5221b2282d8f9943cc3dc86e8516a62
|
||||
dlUri: https://downloads.haskell.org/~ghcup/0.1.17.5/x86_64-freebsd12-ghcup-0.1.17.5
|
||||
dlHash: babb7366abb17bcb5d4fc1500039040f1b957073d618db3f1473b0bae6abc6bb
|
||||
Linux_Alpine:
|
||||
unknown_versioning: *ghcup-64
|
||||
A_32:
|
||||
Linux_UnknownLinux:
|
||||
unknown_versioning: &ghcup-32
|
||||
dlUri: https://downloads.haskell.org/~ghcup/0.1.19.0/i386-linux-ghcup-0.1.19.0
|
||||
dlHash: 0308ebed4431241ef2886a9d374feb20a795d97ef3a24dd38b6bc7dd69e81e53
|
||||
dlUri: https://downloads.haskell.org/~ghcup/0.1.17.5/i386-linux-ghcup-0.1.17.5
|
||||
dlHash: 5a2b1d2ceb32857866689ee1a1e29c5747333882a4e952d80eccf49482d3daab
|
||||
Linux_Alpine:
|
||||
unknown_versioning: *ghcup-32
|
||||
HLS:
|
||||
|
Binary file not shown.
Binary file not shown.
@ -1868,49 +1868,49 @@ ghcupDownloads:
|
||||
dlUri: https://downloads.haskell.org/~ghcup/unofficial-bindists/cabal/3.4.0.0/cabal-install-3.4.0.0-armv7-linux-bootstrapped.tar.xz
|
||||
dlHash: 16c0d1eaba24bed14f3e152970179a45d9f9bb5cc839b2c210ad06eb7d4826ed
|
||||
GHCup:
|
||||
0.1.19.0:
|
||||
0.1.17.5:
|
||||
viTags:
|
||||
- Recommended
|
||||
- Latest
|
||||
viChangeLog: https://github.com/haskell/ghcup-hs/blob/master/CHANGELOG.md
|
||||
viChangeLog: https://gitlab.haskell.org/haskell/ghcup-hs/-/blob/master/CHANGELOG.md
|
||||
viSourceDL:
|
||||
viArch:
|
||||
A_64:
|
||||
Linux_UnknownLinux:
|
||||
unknown_versioning: &ghcup-64
|
||||
dlUri: https://downloads.haskell.org/~ghcup/0.1.19.0/x86_64-linux-ghcup-0.1.19.0
|
||||
dlHash: 33ee6a758ee06e3b520be176905e6192e31f5fa2e2acdc525b1bea77ca368a12
|
||||
dlUri: https://downloads.haskell.org/~ghcup/0.1.17.5/x86_64-linux-ghcup-0.1.17.5
|
||||
dlHash: 7541bcf0b402f99d05cd1937f9fef69aec45c3153e42606671825be248484fb5
|
||||
Darwin:
|
||||
unknown_versioning:
|
||||
dlUri: https://downloads.haskell.org/~ghcup/0.1.19.0/x86_64-apple-darwin-ghcup-0.1.19.0
|
||||
dlHash: 416de8509092fd95f97ee19a5f3def91fbd6e6fa4fa630a5c5e7226f49a83af7
|
||||
dlUri: https://downloads.haskell.org/~ghcup/0.1.17.5/x86_64-apple-darwin-ghcup-0.1.17.5
|
||||
dlHash: 8b5159775de08a5f268f4be217fbb6f427ff8d8977197af209211b81ca0fe27f
|
||||
FreeBSD:
|
||||
unknown_versioning:
|
||||
dlUri: https://downloads.haskell.org/~ghcup/0.1.19.0/x86_64-portbld-freebsd-ghcup-0.1.19.0
|
||||
dlHash: dadf49f8ac045946ccea7369d0c80cf3a5221b2282d8f9943cc3dc86e8516a62
|
||||
dlUri: https://downloads.haskell.org/~ghcup/0.1.17.5/x86_64-freebsd12-ghcup-0.1.17.5
|
||||
dlHash: babb7366abb17bcb5d4fc1500039040f1b957073d618db3f1473b0bae6abc6bb
|
||||
Linux_Alpine:
|
||||
unknown_versioning: *ghcup-64
|
||||
A_32:
|
||||
Linux_UnknownLinux:
|
||||
unknown_versioning: &ghcup-32
|
||||
dlUri: https://downloads.haskell.org/~ghcup/0.1.19.0/i386-linux-ghcup-0.1.19.0
|
||||
dlHash: 0308ebed4431241ef2886a9d374feb20a795d97ef3a24dd38b6bc7dd69e81e53
|
||||
dlUri: https://downloads.haskell.org/~ghcup/0.1.17.5/i386-linux-ghcup-0.1.17.5
|
||||
dlHash: 5a2b1d2ceb32857866689ee1a1e29c5747333882a4e952d80eccf49482d3daab
|
||||
Linux_Alpine:
|
||||
unknown_versioning: *ghcup-32
|
||||
A_ARM64:
|
||||
Linux_UnknownLinux:
|
||||
unknown_versioning:
|
||||
dlUri: https://downloads.haskell.org/~ghcup/0.1.19.0/aarch64-linux-ghcup-0.1.19.0
|
||||
dlHash: a546dcd23a7e56f31bc4d6afad0276f88d3f0b850a3d3c36369721797dc3c3d5
|
||||
dlUri: https://downloads.haskell.org/~ghcup/0.1.17.5/aarch64-linux-ghcup-0.1.17.5
|
||||
dlHash: 35899ab2338b52fac84d49f16edbbb7701498e93ee8012309c7d6f2f138bb993
|
||||
Darwin:
|
||||
unknown_versioning:
|
||||
dlUri: https://downloads.haskell.org/~ghcup/0.1.19.0/aarch64-apple-darwin-ghcup-0.1.19.0
|
||||
dlHash: 69bd8e37cd07606d928dca9215c066564a264e0def3c81171b76d5747dc6507c
|
||||
dlUri: https://downloads.haskell.org/~ghcup/0.1.17.5/aarch64-apple-darwin-ghcup-0.1.17.5-2
|
||||
dlHash: 54238c1db6f4101664b91190067549b8b13b250fd24eac1474b7b2c185222c73
|
||||
A_ARM:
|
||||
Linux_UnknownLinux:
|
||||
unknown_versioning:
|
||||
dlUri: https://downloads.haskell.org/~ghcup/0.1.19.0/armv7-linux-ghcup-0.1.19.0
|
||||
dlHash: 58a170c1fb0b4e701ebb40f90a23f6ababe9e61291726aad82e18d4649aed908
|
||||
dlUri: https://downloads.haskell.org/~ghcup/0.1.17.5/armv7-linux-ghcup-0.1.17.5
|
||||
dlHash: e342532e29f592c8ef2f85645fb304d090e34523e6bac91c62e048a8483269f5
|
||||
HLS:
|
||||
1.1.0:
|
||||
viTags:
|
||||
|
Binary file not shown.
@ -2025,53 +2025,53 @@ ghcupDownloads:
|
||||
dlUri: https://downloads.haskell.org/~ghcup/unofficial-bindists/cabal/3.4.0.0/cabal-install-3.4.0.0-armv7-linux-bootstrapped.tar.xz
|
||||
dlHash: 16c0d1eaba24bed14f3e152970179a45d9f9bb5cc839b2c210ad06eb7d4826ed
|
||||
GHCup:
|
||||
0.1.19.0:
|
||||
0.1.17.5:
|
||||
viTags:
|
||||
- Recommended
|
||||
- Latest
|
||||
viChangeLog: https://github.com/haskell/ghcup-hs/blob/master/CHANGELOG.md
|
||||
viChangeLog: https://gitlab.haskell.org/haskell/ghcup-hs/-/blob/master/CHANGELOG.md
|
||||
viSourceDL:
|
||||
viArch:
|
||||
A_64:
|
||||
Linux_UnknownLinux:
|
||||
unknown_versioning: &ghcup-64
|
||||
dlUri: https://downloads.haskell.org/~ghcup/0.1.19.0/x86_64-linux-ghcup-0.1.19.0
|
||||
dlHash: 33ee6a758ee06e3b520be176905e6192e31f5fa2e2acdc525b1bea77ca368a12
|
||||
dlUri: https://downloads.haskell.org/~ghcup/0.1.17.5/x86_64-linux-ghcup-0.1.17.5
|
||||
dlHash: 7541bcf0b402f99d05cd1937f9fef69aec45c3153e42606671825be248484fb5
|
||||
Darwin:
|
||||
unknown_versioning:
|
||||
dlUri: https://downloads.haskell.org/~ghcup/0.1.19.0/x86_64-apple-darwin-ghcup-0.1.19.0
|
||||
dlHash: 416de8509092fd95f97ee19a5f3def91fbd6e6fa4fa630a5c5e7226f49a83af7
|
||||
dlUri: https://downloads.haskell.org/~ghcup/0.1.17.5/x86_64-apple-darwin-ghcup-0.1.17.5
|
||||
dlHash: 8b5159775de08a5f268f4be217fbb6f427ff8d8977197af209211b81ca0fe27f
|
||||
FreeBSD:
|
||||
unknown_versioning:
|
||||
dlUri: https://downloads.haskell.org/~ghcup/0.1.19.0/x86_64-portbld-freebsd-ghcup-0.1.19.0
|
||||
dlHash: dadf49f8ac045946ccea7369d0c80cf3a5221b2282d8f9943cc3dc86e8516a62
|
||||
dlUri: https://downloads.haskell.org/~ghcup/0.1.17.5/x86_64-freebsd12-ghcup-0.1.17.5
|
||||
dlHash: babb7366abb17bcb5d4fc1500039040f1b957073d618db3f1473b0bae6abc6bb
|
||||
Windows:
|
||||
unknown_versioning:
|
||||
dlUri: https://downloads.haskell.org/~ghcup/0.1.19.0/x86_64-mingw64-ghcup-0.1.19.0.exe
|
||||
dlHash: c4e4a764b0844e351eb6939ff236452f33c34808aaca69f973ea82e18d3aa1ac
|
||||
dlUri: https://downloads.haskell.org/~ghcup/0.1.17.5/x86_64-mingw64-ghcup-0.1.17.5.exe
|
||||
dlHash: 7a6f0264c097044ede7d4208e153cf9fc6e06e49525e237dc32e2abd87ad3430
|
||||
Linux_Alpine:
|
||||
unknown_versioning: *ghcup-64
|
||||
A_32:
|
||||
Linux_UnknownLinux:
|
||||
unknown_versioning: &ghcup-32
|
||||
dlUri: https://downloads.haskell.org/~ghcup/0.1.19.0/i386-linux-ghcup-0.1.19.0
|
||||
dlHash: 0308ebed4431241ef2886a9d374feb20a795d97ef3a24dd38b6bc7dd69e81e53
|
||||
dlUri: https://downloads.haskell.org/~ghcup/0.1.17.5/i386-linux-ghcup-0.1.17.5
|
||||
dlHash: 5a2b1d2ceb32857866689ee1a1e29c5747333882a4e952d80eccf49482d3daab
|
||||
Linux_Alpine:
|
||||
unknown_versioning: *ghcup-32
|
||||
A_ARM64:
|
||||
Linux_UnknownLinux:
|
||||
unknown_versioning:
|
||||
dlUri: https://downloads.haskell.org/~ghcup/0.1.19.0/aarch64-linux-ghcup-0.1.19.0
|
||||
dlHash: a546dcd23a7e56f31bc4d6afad0276f88d3f0b850a3d3c36369721797dc3c3d5
|
||||
dlUri: https://downloads.haskell.org/~ghcup/0.1.17.5/aarch64-linux-ghcup-0.1.17.5
|
||||
dlHash: 35899ab2338b52fac84d49f16edbbb7701498e93ee8012309c7d6f2f138bb993
|
||||
Darwin:
|
||||
unknown_versioning:
|
||||
dlUri: https://downloads.haskell.org/~ghcup/0.1.19.0/aarch64-apple-darwin-ghcup-0.1.19.0
|
||||
dlHash: 69bd8e37cd07606d928dca9215c066564a264e0def3c81171b76d5747dc6507c
|
||||
dlUri: https://downloads.haskell.org/~ghcup/0.1.17.5/aarch64-apple-darwin-ghcup-0.1.17.5-2
|
||||
dlHash: 54238c1db6f4101664b91190067549b8b13b250fd24eac1474b7b2c185222c73
|
||||
A_ARM:
|
||||
Linux_UnknownLinux:
|
||||
unknown_versioning:
|
||||
dlUri: https://downloads.haskell.org/~ghcup/0.1.19.0/armv7-linux-ghcup-0.1.19.0
|
||||
dlHash: 58a170c1fb0b4e701ebb40f90a23f6ababe9e61291726aad82e18d4649aed908
|
||||
dlUri: https://downloads.haskell.org/~ghcup/0.1.17.5/armv7-linux-ghcup-0.1.17.5
|
||||
dlHash: e342532e29f592c8ef2f85645fb304d090e34523e6bac91c62e048a8483269f5
|
||||
HLS:
|
||||
1.1.0:
|
||||
viTags: []
|
||||
|
Binary file not shown.
188
ghcup-0.0.6.yaml
188
ghcup-0.0.6.yaml
@ -2089,7 +2089,7 @@ ghcupDownloads:
|
||||
dlHash: b1fcab17fe48326d2ff302d70c12bc4cf4d570dfbbce68ab57c719cfec882b05
|
||||
9.2.1:
|
||||
viTags:
|
||||
- old
|
||||
- Latest
|
||||
- base-4.16.0.0
|
||||
viChangeLog: https://downloads.haskell.org/~ghc/9.2.1/docs/html/users_guide/index.html
|
||||
viSourceDL:
|
||||
@ -2121,11 +2121,11 @@ ghcupDownloads:
|
||||
'( >= 27 && < 28 )': *ghc-921-64-fedora
|
||||
unknown_versioning: *ghc-921-64-fedora
|
||||
Linux_CentOS:
|
||||
'( >= 7 && < 8 )': &ghc-921-64-centos
|
||||
'( >= 7 && < 8 )': &ghc-922-64-centos
|
||||
dlUri: https://downloads.haskell.org/~ghc/9.2.1/ghc-9.2.1-x86_64-centos7-linux.tar.xz
|
||||
dlSubdir: ghc-9.2.1
|
||||
dlHash: 4b67324507f5d14c23db3ed83c57f4e25d877e97d2b93cfe8e1a9fdf65e4efa1
|
||||
unknown_versioning: *ghc-921-64-centos
|
||||
unknown_versioning: *ghc-922-64-centos
|
||||
Linux_UnknownLinux:
|
||||
unknown_versioning: *ghc-921-64-fedora
|
||||
Darwin:
|
||||
@ -2178,86 +2178,6 @@ ghcupDownloads:
|
||||
dlUri: https://downloads.haskell.org/~ghcup/unofficial-bindists/ghc/9.2.1/ghc-9.2.1-armv7-linux-deb10.tar.xz
|
||||
dlSubdir: ghc-9.2.1
|
||||
dlHash: 3bde9deeb6969ff0f5aea566d2602edc57f5f3ca158b4c03f039c44d8c51ea0f
|
||||
9.2.2:
|
||||
viTags:
|
||||
- Latest
|
||||
- base-4.16.1.0
|
||||
viChangeLog: https://downloads.haskell.org/~ghc/9.2.2/docs/html/users_guide/index.html
|
||||
viSourceDL:
|
||||
dlUri: https://downloads.haskell.org/~ghc/9.2.2/ghc-9.2.2-src.tar.xz
|
||||
dlSubdir: ghc-9.2.2
|
||||
dlHash: 902463a4cc6ee479af9358b9f8b2ee3237b03e934a1ea65b6d1fcf3e0d749ea6
|
||||
viPostRemove: *ghc-post-remove
|
||||
viArch:
|
||||
A_64:
|
||||
Linux_Debian:
|
||||
'< 10': &ghc-922-64-deb9
|
||||
dlUri: https://downloads.haskell.org/~ghc/9.2.2/ghc-9.2.2-x86_64-deb9-linux.tar.xz
|
||||
dlSubdir: ghc-9.2.2
|
||||
dlHash: 91052766a8bec6a1a8529eda9ff587ce821a071cf52705e1b8caa3d38d3913f4
|
||||
'>= 10': &ghc-922-64-deb10
|
||||
dlUri: https://downloads.haskell.org/~ghc/9.2.2/ghc-9.2.2-x86_64-deb10-linux.tar.xz
|
||||
dlSubdir: ghc-9.2.2
|
||||
dlHash: fb61dea556a2023dc2d50ee61a22144bb23e4229a378e533065124c218f40cfc
|
||||
unknown_versioning: *ghc-922-64-deb10
|
||||
Linux_Ubuntu:
|
||||
unknown_versioning: &ghc-922-64-fedora
|
||||
dlUri: https://downloads.haskell.org/~ghc/9.2.2/ghc-9.2.2-x86_64-fedora27-linux.tar.xz
|
||||
dlSubdir: ghc-9.2.2
|
||||
dlHash: eab2b4e3ca99eb7cc81aa3136e9e0b245ba6b3e9057f02a2d289fbf60856eb10
|
||||
'( >= 16 && < 19 )': *ghc-922-64-deb9
|
||||
Linux_Mint:
|
||||
unknown_versioning: *ghc-922-64-deb10
|
||||
Linux_Fedora:
|
||||
'( >= 27 && < 28 )': *ghc-922-64-fedora
|
||||
unknown_versioning: *ghc-922-64-fedora
|
||||
Linux_CentOS:
|
||||
'( >= 7 && < 8 )': &ghc-922-64-centos
|
||||
dlUri: https://downloads.haskell.org/~ghc/9.2.2/ghc-9.2.2-x86_64-centos7-linux.tar.xz
|
||||
dlSubdir: ghc-9.2.2
|
||||
dlHash: 5100aa7dea87aaf2ed596be83c93165d7199492f6db431d874fcfa07e8ac76ab
|
||||
unknown_versioning: *ghc-922-64-centos
|
||||
Linux_UnknownLinux:
|
||||
unknown_versioning: *ghc-922-64-fedora
|
||||
Darwin:
|
||||
unknown_versioning:
|
||||
dlUri: https://downloads.haskell.org/~ghc/9.2.2/ghc-9.2.2-x86_64-apple-darwin.tar.xz
|
||||
dlSubdir: ghc-9.2.2-x86_64-apple-darwin
|
||||
dlHash: 934abbd6083d3aeb5ff081955682d7711d9e79db57b1613eb229c325dd06f83f
|
||||
Windows:
|
||||
unknown_versioning:
|
||||
dlUri: https://downloads.haskell.org/~ghc/9.2.2/ghc-9.2.2-x86_64-unknown-mingw32.zip
|
||||
dlSubdir: ghc-9.2.2-x86_64-unknown-mingw32
|
||||
dlHash: 5ca4b69e74e62ed57b737949fa8c4e991c24703f1477521f842a6297d36dab10
|
||||
Linux_Alpine:
|
||||
unknown_versioning:
|
||||
dlUri: https://downloads.haskell.org/~ghc/9.2.2/ghc-9.2.2-x86_64-alpine3.12-linux-gmp.tar.xz
|
||||
dlSubdir: ghc-9.2.2-x86_64-unknown-linux
|
||||
dlHash: 624523826e24eae33c03490267cddecc1d80c047f2a3f4b03580f1040112d5c0
|
||||
A_32:
|
||||
Linux_Debian:
|
||||
'< 10': &ghc-922-32-deb9
|
||||
dlUri: https://downloads.haskell.org/~ghc/9.2.2/ghc-9.2.2-i386-deb9-linux.tar.xz
|
||||
dlSubdir: ghc-9.2.2
|
||||
dlHash: 24234486ed4508161c6f88f4750a36d38b135b0c6e5fe78efe2d85c612ecaf9e
|
||||
unknown_versioning: *ghc-922-32-deb9
|
||||
Linux_Ubuntu:
|
||||
unknown_versioning: *ghc-922-32-deb9
|
||||
Linux_Mint:
|
||||
unknown_versioning: *ghc-922-32-deb9
|
||||
Linux_UnknownLinux:
|
||||
unknown_versioning: *ghc-922-32-deb9
|
||||
A_ARM64:
|
||||
Linux_UnknownLinux:
|
||||
unknown_versioning:
|
||||
dlUri: https://downloads.haskell.org/~ghc/9.2.2/ghc-9.2.2-aarch64-deb10-linux.tar.xz
|
||||
dlSubdir: ghc-9.2.2
|
||||
dlHash: f3621ccba7ae48fcd67a9505f61bb5ccfb05c4cbfecd5a6ea65fe3f150af0e98
|
||||
Darwin:
|
||||
unknown_versioning:
|
||||
dlUri: https://downloads.haskell.org/~ghc/9.2.2/ghc-9.2.2-aarch64-apple-darwin.tar.xz
|
||||
dlSubdir: ghc-9.2.2-aarch64-apple-darwin
|
||||
dlHash: d1f04f7cc062ed134f863305c67dfe2c42df46ed658dd34f9dd552186f194e5c
|
||||
Cabal:
|
||||
2.4.1.0:
|
||||
viTags:
|
||||
@ -2569,56 +2489,56 @@ ghcupDownloads:
|
||||
dlUri: https://downloads.haskell.org/~ghcup/unofficial-bindists/cabal/3.6.2.0/cabal-install-3.6.2.0-armv7-linux-deb10.tar.xz
|
||||
dlHash: 694ba7c14f8d720c6e790ab0488dbff2d8a07d9c6de97b4deeba31088f825bc2
|
||||
GHCup:
|
||||
0.1.22.0:
|
||||
0.1.17.5:
|
||||
viTags:
|
||||
- Recommended
|
||||
- Latest
|
||||
viChangeLog: https://github.com/haskell/ghcup-hs/blob/master/CHANGELOG.md
|
||||
viChangeLog: https://gitlab.haskell.org/haskell/ghcup-hs/-/blob/master/CHANGELOG.md
|
||||
viSourceDL:
|
||||
dlUri: https://downloads.haskell.org/~ghcup/0.1.22.0/ghcup-0.1.22.0-src.tar.gz
|
||||
dlSubdir: ghcup-0.1.22.0
|
||||
dlHash: 8309058a58e7b65e41cf045e555fd2f4e9e651c32d85c63fef09330b827d2478
|
||||
viArch:
|
||||
A_64:
|
||||
Linux_UnknownLinux:
|
||||
unknown_versioning: &ghcup-64
|
||||
dlUri: https://downloads.haskell.org/~ghcup/0.1.22.0/x86_64-linux-ghcup-0.1.22.0
|
||||
dlHash: bf213f4dfd2271b46ca52e2f14e96850ce32e9115e5acc90f1dc5a4e815e32af
|
||||
dlUri: https://downloads.haskell.org/~ghcup/0.1.17.5/x86_64-linux-ghcup-0.1.17.5
|
||||
dlHash: 7541bcf0b402f99d05cd1937f9fef69aec45c3153e42606671825be248484fb5
|
||||
Darwin:
|
||||
unknown_versioning:
|
||||
dlUri: https://downloads.haskell.org/~ghcup/0.1.22.0/x86_64-apple-darwin-ghcup-0.1.22.0
|
||||
dlHash: e588fe2c6a065afb56eca257c4ff19b83f192e95ee74d9601976ce5c05991b06
|
||||
dlUri: https://downloads.haskell.org/~ghcup/0.1.17.5/x86_64-apple-darwin-ghcup-0.1.17.5
|
||||
dlHash: 8b5159775de08a5f268f4be217fbb6f427ff8d8977197af209211b81ca0fe27f
|
||||
FreeBSD:
|
||||
unknown_versioning:
|
||||
dlUri: https://downloads.haskell.org/~ghcup/0.1.22.0/x86_64-portbld-freebsd-ghcup-0.1.22.0
|
||||
dlHash: ce87fcebd2db01adcb3e57635e611437a96dd8ba98932a436f45ac71c4ae2e8a
|
||||
'( >= 12 && < 13 )':
|
||||
dlUri: https://downloads.haskell.org/~ghcup/0.1.17.5/x86_64-freebsd12-ghcup-0.1.17.5
|
||||
dlHash: babb7366abb17bcb5d4fc1500039040f1b957073d618db3f1473b0bae6abc6bb
|
||||
'( >= 13 )':
|
||||
dlUri: https://downloads.haskell.org/~ghcup/0.1.17.5/x86_64-freebsd13-ghcup-0.1.17.5
|
||||
dlHash: fccffae46e8e7a97ac49ce1a6b1174ee11f58603da9345becd8021baa4439bb9
|
||||
Windows:
|
||||
unknown_versioning:
|
||||
dlUri: https://downloads.haskell.org/~ghcup/0.1.22.0/x86_64-mingw64-ghcup-0.1.22.0.exe
|
||||
dlHash: 92d3827cd369112a7e3c328807e1748db8da3df1661227d473d4cf019fb01e46
|
||||
dlUri: https://downloads.haskell.org/~ghcup/0.1.17.5/x86_64-mingw64-ghcup-0.1.17.5.exe
|
||||
dlHash: 7a6f0264c097044ede7d4208e153cf9fc6e06e49525e237dc32e2abd87ad3430
|
||||
Linux_Alpine:
|
||||
unknown_versioning: *ghcup-64
|
||||
A_32:
|
||||
Linux_UnknownLinux:
|
||||
unknown_versioning: &ghcup-32
|
||||
dlUri: https://downloads.haskell.org/~ghcup/0.1.22.0/i386-linux-ghcup-0.1.22.0
|
||||
dlHash: 1fd4fa989653a127d33f90cb4cc11fd024ea4085e795c0b0f6ed97afc5e8b634
|
||||
dlUri: https://downloads.haskell.org/~ghcup/0.1.17.5/i386-linux-ghcup-0.1.17.5
|
||||
dlHash: 5a2b1d2ceb32857866689ee1a1e29c5747333882a4e952d80eccf49482d3daab
|
||||
Linux_Alpine:
|
||||
unknown_versioning: *ghcup-32
|
||||
A_ARM64:
|
||||
Linux_UnknownLinux:
|
||||
unknown_versioning:
|
||||
dlUri: https://downloads.haskell.org/~ghcup/0.1.22.0/aarch64-linux-ghcup-0.1.22.0
|
||||
dlHash: 3eda556959462579b73558616646c9fc01a583acc7a4611bb21a32706deae142
|
||||
dlUri: https://downloads.haskell.org/~ghcup/0.1.17.5/aarch64-linux-ghcup-0.1.17.5
|
||||
dlHash: 35899ab2338b52fac84d49f16edbbb7701498e93ee8012309c7d6f2f138bb993
|
||||
Darwin:
|
||||
unknown_versioning:
|
||||
dlUri: https://downloads.haskell.org/~ghcup/0.1.22.0/aarch64-apple-darwin-ghcup-0.1.22.0
|
||||
dlHash: d39a8dbbd6d76ce87ad91cee6ecc9c680af5339ab25e8789af5b7e717564fc95
|
||||
dlUri: https://downloads.haskell.org/~ghcup/0.1.17.5/aarch64-apple-darwin-ghcup-0.1.17.5-2
|
||||
dlHash: 54238c1db6f4101664b91190067549b8b13b250fd24eac1474b7b2c185222c73
|
||||
A_ARM:
|
||||
Linux_UnknownLinux:
|
||||
unknown_versioning:
|
||||
dlUri: https://downloads.haskell.org/~ghcup/0.1.22.0/armv7-linux-ghcup-0.1.22.0
|
||||
dlHash: 7c66253e52c5fb627a4d4b203a69e69f4d7732348ad6a830a41d7e2d79a61c5d
|
||||
dlUri: https://downloads.haskell.org/~ghcup/0.1.17.5/armv7-linux-ghcup-0.1.17.5
|
||||
dlHash: e342532e29f592c8ef2f85645fb304d090e34523e6bac91c62e048a8483269f5
|
||||
HLS:
|
||||
1.1.0:
|
||||
viTags:
|
||||
@ -2979,7 +2899,9 @@ ghcupDownloads:
|
||||
Linux_Alpine:
|
||||
unknown_versioning: *stack-271-64
|
||||
2.7.3:
|
||||
viTags: []
|
||||
viTags:
|
||||
- Latest
|
||||
- Recommended
|
||||
viChangeLog: https://github.com/commercialhaskell/stack/blob/master/ChangeLog.md#v273
|
||||
viPostInstall: *stack-post
|
||||
viArch:
|
||||
@ -3029,56 +2951,4 @@ ghcupDownloads:
|
||||
unknown_versioning:
|
||||
dlUri: https://downloads.haskell.org/ghcup/unofficial-bindists/stack/2.7.3/stack-2.7.3-linux-armv7.tar.gz
|
||||
dlHash: 3e22c66ea38525ca2ee5b0d222c8aa193c50152a53ff2c80ae179a40592512fe
|
||||
2.7.5:
|
||||
viTags:
|
||||
- Latest
|
||||
- Recommended
|
||||
viChangeLog: https://github.com/commercialhaskell/stack/blob/master/ChangeLog.md#v275
|
||||
viPostInstall: *stack-post
|
||||
viArch:
|
||||
A_64:
|
||||
Linux_UnknownLinux:
|
||||
unknown_versioning: &stack-275-64
|
||||
dlUri: https://github.com/commercialhaskell/stack/releases/download/v2.7.5/stack-2.7.5-linux-x86_64-static.tar.gz
|
||||
dlHash: 2a02fefefcc1758033d0aea566a521a290e3c68739ce9894bd6492a346af79c5
|
||||
dlSubdir:
|
||||
RegexDir: "stack-.*"
|
||||
Darwin:
|
||||
unknown_versioning:
|
||||
dlUri: https://github.com/commercialhaskell/stack/releases/download/v2.7.5/stack-2.7.5-osx-x86_64.tar.gz
|
||||
dlHash: 94176b71425d76b94b088515103316ae1ff96d123344b1f4609c103d0d5bdcc4
|
||||
dlSubdir:
|
||||
RegexDir: "stack-.*"
|
||||
Windows:
|
||||
unknown_versioning:
|
||||
dlUri: https://github.com/commercialhaskell/stack/releases/download/v2.7.5/stack-2.7.5-windows-x86_64.tar.gz
|
||||
dlHash: c9b07982590d63db2310a44bfcf33c9f8bd84a0828abc17b2a394e90fbf6a914
|
||||
dlSubdir:
|
||||
RegexDir: "stack-.*"
|
||||
FreeBSD:
|
||||
'>= 12':
|
||||
dlUri: https://downloads.haskell.org/ghcup/unofficial-bindists/stack/2.7.5/stack-2.7.5-freebsd-x86_64.tar.gz
|
||||
dlHash: fceb15b22d3dbd8d25cb84ad66a2eb71a5034f7e2c47a74f25141994feee7c36
|
||||
Linux_Alpine:
|
||||
unknown_versioning: *stack-275-64
|
||||
A_32:
|
||||
Linux_UnknownLinux:
|
||||
unknown_versioning: &stack-275-32
|
||||
dlUri: https://downloads.haskell.org/ghcup/unofficial-bindists/stack/2.7.5/stack-2.7.5-linux-i386.tar.gz
|
||||
dlHash: a679eaebe627444fe17fc794ddfb3fe9ee4281a4e9e9137cb04318873e23a2f6
|
||||
Linux_Alpine:
|
||||
unknown_versioning: *stack-275-32
|
||||
A_ARM64:
|
||||
Linux_UnknownLinux:
|
||||
unknown_versioning:
|
||||
dlUri: https://downloads.haskell.org/ghcup/unofficial-bindists/stack/2.7.5/stack-2.7.5-linux-aarch64.tar.gz
|
||||
dlHash: f362fa4786b17252004b2619ec96b9687e561dc4e55c2612c53d60be767cabba
|
||||
Darwin:
|
||||
unknown_versioning:
|
||||
dlUri: https://downloads.haskell.org/ghcup/unofficial-bindists/stack/2.7.5/stack-2.7.5-osx-aarch64.tar.gz
|
||||
dlHash: cea34367981ed6f5629d23d17957920b1a06cc0a00580ba62e960a64087f25fe
|
||||
A_ARM:
|
||||
Linux_UnknownLinux:
|
||||
unknown_versioning:
|
||||
dlUri: https://downloads.haskell.org/ghcup/unofficial-bindists/stack/2.7.5/stack-2.7.5-linux-armv7.tar.gz
|
||||
dlHash: 8be2342deea5309a32e28a0c5eb341ea9557401f08484676036471250ca12e21
|
||||
|
||||
|
Binary file not shown.
4731
ghcup-0.0.7.yaml
4731
ghcup-0.0.7.yaml
File diff suppressed because it is too large
Load Diff
Binary file not shown.
7486
ghcup-0.0.8.yaml
7486
ghcup-0.0.8.yaml
File diff suppressed because it is too large
Load Diff
Binary file not shown.
@ -1,140 +0,0 @@
|
||||
---
|
||||
globalTools:
|
||||
ShimGen:
|
||||
dlUri: https://downloads.haskell.org/~ghcup/shimgen/shim-2.exe
|
||||
dlHash: 7c55e201f71860c5babea886007c8fa44b861abf50d1c07e5677eb0bda387a70
|
||||
toolRequirements: {}
|
||||
ghcupDownloads:
|
||||
GHC:
|
||||
javascript-unknown-ghcjs-9.6.2:
|
||||
viTags:
|
||||
- base-4.18.0.0
|
||||
viArch:
|
||||
A_64:
|
||||
Linux_UnknownLinux:
|
||||
unknown_versioning:
|
||||
dlHash: 4e12b602869206830eef1aa6a17a5a00fa887d6c98c3a552269c418ee7f736f8
|
||||
dlSubdir: ghc-9.6.2-javascript-unknown-ghcjs
|
||||
dlUri: https://downloads.haskell.org/~ghcup/unofficial-bindists/ghc/javascript-unknown-ghcjs-9.6.2/ghc-javascript-unknown-ghcjs-9.6.2-x86_64-linux-unknown.tar.xz
|
||||
Darwin:
|
||||
unknown_versioning:
|
||||
dlUri: https://downloads.haskell.org/~ghcup/unofficial-bindists/ghc/javascript-unknown-ghcjs-9.6.2/ghc-javascript-unknown-ghcjs-9.6.2-x86_64-apple-darwin.tar.xz
|
||||
dlHash: dddb0ee68857a79e67a52c4ab9b7230023a8684a5e826e9afbb9c5820abf47e1
|
||||
dlSubdir: ghc-9.6.2-javascript-unknown-ghcjs
|
||||
A_ARM64:
|
||||
Darwin:
|
||||
unknown_versioning:
|
||||
dlUri: https://downloads.haskell.org/~ghcup/unofficial-bindists/ghc/javascript-unknown-ghcjs-9.6.2/ghc-javascript-unknown-ghcjs-9.6.2-aarch64-apple-darwin.tar.xz
|
||||
dlHash: 0d65bb3940a820d95b4b33ea0cd61bf39670d48c4d8f747153ded01a7ef34821
|
||||
dlSubdir: ghc-9.6.2-javascript-unknown-ghcjs
|
||||
javascript-unknown-ghcjs-9.10.0.20240413:
|
||||
viPreInstall: |
|
||||
To use this bindist, you have to use emscripten version 3.1.57
|
||||
Also see: https://www.haskell.org/ghcup/guide/#ghc-js-cross-bindists-experimental
|
||||
viTags:
|
||||
- base-4.20.0.0
|
||||
viArch:
|
||||
A_64:
|
||||
Linux_UnknownLinux:
|
||||
unknown_versioning:
|
||||
dlUri: https://downloads.haskell.org/~ghcup/unofficial-bindists/ghc/javascript-unknown-ghcjs-9.10.0.20240413/ghc-javascript-unknown-ghcjs-9.10.0.20240413-x86_64-linux-rocky-8.9-2024-04-16-dc318739.tar.xz
|
||||
dlSubdir: ghc-9.10.0.20240413-javascript-unknown-ghcjs
|
||||
dlHash: dc318739b1ec4f1051dd4b38793b5fbc8eb4dea56b6177d1fe212edcf9e28b30
|
||||
Darwin:
|
||||
unknown_versioning:
|
||||
dlUri: https://downloads.haskell.org/~ghcup/unofficial-bindists/ghc/javascript-unknown-ghcjs-9.10.0.20240413/ghc-javascript-unknown-ghcjs-9.10.0.20240413-x86_64-darwin-2024-04-16-a819da18.tar.xz
|
||||
dlSubdir: ghc-9.10.0.20240413-javascript-unknown-ghcjs
|
||||
dlHash: a819da1875e9763da5732c37dc7f36eb6e9eb6d33ddc6ea11894df9cfa18a6ee
|
||||
A_ARM64:
|
||||
Darwin:
|
||||
unknown_versioning:
|
||||
dlUri: https://downloads.haskell.org/~ghcup/unofficial-bindists/ghc/javascript-unknown-ghcjs-9.10.0.20240413/ghc-javascript-unknown-ghcjs-9.10.0.20240413-aarch64-darwin-2024-04-16-c946719b.tar.xz
|
||||
dlSubdir: ghc-9.10.0.20240413-javascript-unknown-ghcjs
|
||||
dlHash: c946719b31f9249e899fdc15351b86a4297e66857ce4063743b1bcbd62cf9e0e
|
||||
Linux_UnknownLinux:
|
||||
unknown_versioning:
|
||||
dlUri: https://downloads.haskell.org/~ghcup/unofficial-bindists/ghc/javascript-unknown-ghcjs-9.10.0.20240413/ghc-javascript-unknown-ghcjs-9.10.0.20240413-aarch64-linux-debian-12-2024-04-16-5f63452c.tar.xz
|
||||
dlSubdir: ghc-9.10.0.20240413-javascript-unknown-ghcjs
|
||||
dlHash: 5f63452c8bee2fcc1282645158bcd20bae7ff93181f3e5d5dc8b2aa8d15f4696
|
||||
wasm32-wasi-9.6.3.20230927:
|
||||
viTags:
|
||||
- base-4.18.1.0
|
||||
viPreInstall: &old-wasm-pre-install |
|
||||
To use this bindist, you need to use the commit c0aa3bb7d88bb6ec809210e17658dd1ed64ba66c of ghc-wasm-meta repository.
|
||||
Also see: https://www.haskell.org/ghcup/guide/#ghc-wasm-cross-bindists-experimental
|
||||
viArch:
|
||||
A_64:
|
||||
Linux_UnknownLinux:
|
||||
unknown_versioning: &ghc-wasm32-wasi-963-64-static
|
||||
dlHash: 2e1d363320c03e35fd9048a252a0cfed8f7b87da76c063c7fc52122c390f42c3
|
||||
dlSubdir: ghc-9.6.3.20230927-wasm32-wasi
|
||||
dlUri: https://github.com/amesgen/ghc-wasm-bindists/releases/download/20231001T201511/wasm32-wasi-ghc-9.6.tar.xz
|
||||
dlOutput: ghc-9.6.3.20230927-x86_64-linux-alpine3_12-cross_wasm32-wasi-release+fully_static.tar.xz
|
||||
Linux_Alpine:
|
||||
unknown_versioning: *ghc-wasm32-wasi-963-64-static
|
||||
wasm32-wasi-9.6.4:
|
||||
viTags:
|
||||
- base-4.18.2.0
|
||||
viArch:
|
||||
A_64:
|
||||
Linux_UnknownLinux:
|
||||
unknown_versioning: &ghc-wasm32-wasi-964-64-static
|
||||
dlHash: 9eebb42c40d880ec777f729e24b9b52e8aa51d76994f386bd79893d065f5239a
|
||||
dlSubdir: ghc-9.6.4-wasm32-wasi
|
||||
dlUri: https://github.com/amesgen/ghc-wasm-bindists/releases/download/20240218T031934/wasm32-wasi-ghc-9.6.tar.xz
|
||||
dlOutput: ghc-9.6.4-x86_64-linux-alpine3_18-wasm-cross_wasm32-wasi-release+fully_static.tar.xz
|
||||
Linux_Alpine:
|
||||
unknown_versioning: *ghc-wasm32-wasi-964-64-static
|
||||
wasm32-wasi-9.8.0.20230927:
|
||||
viTags:
|
||||
- base-4.19.0.0
|
||||
viPreInstall: *old-wasm-pre-install
|
||||
viArch:
|
||||
A_64:
|
||||
Linux_UnknownLinux:
|
||||
unknown_versioning: &ghc-wasm32-wasi-980-64-static
|
||||
dlHash: bad3393b6eba103230c62f050ffd9d458916c6238e5d5fa031d3eee5d995305a
|
||||
dlSubdir: ghc-9.8.0.20230927-wasm32-wasi
|
||||
dlUri: https://github.com/amesgen/ghc-wasm-bindists/releases/download/20231001T201511/wasm32-wasi-ghc-9.8.tar.xz
|
||||
dlOutput: ghc-9.8.0.20230927-x86_64-linux-alpine3_12-cross_wasm32-wasi-release+fully_static.tar.xz
|
||||
Linux_Alpine:
|
||||
unknown_versioning: *ghc-wasm32-wasi-980-64-static
|
||||
wasm32-wasi-9.8.1:
|
||||
viTags:
|
||||
- base-4.19.0.0
|
||||
viArch:
|
||||
A_64:
|
||||
Linux_UnknownLinux:
|
||||
unknown_versioning: &ghc-wasm32-wasi-981-64-static
|
||||
dlHash: b1714d54468754e3a4353661bec883fef8b5d27398db53b5955753db7453da3e
|
||||
dlSubdir: ghc-9.8.1-wasm32-wasi
|
||||
dlUri: https://github.com/amesgen/ghc-wasm-bindists/releases/download/20240218T031934/wasm32-wasi-ghc-9.8.tar.xz
|
||||
dlOutput: ghc-9.8.1-x86_64-linux-alpine3_18-wasm-cross_wasm32-wasi-release+fully_static.tar.xz
|
||||
Linux_Alpine:
|
||||
unknown_versioning: *ghc-wasm32-wasi-981-64-static
|
||||
wasm32-wasi-9.10.0.20240313:
|
||||
viTags:
|
||||
- base-4.20.0.0
|
||||
viArch:
|
||||
A_64:
|
||||
Linux_UnknownLinux:
|
||||
unknown_versioning: &ghc-wasm32-wasi-9101-64-static
|
||||
dlHash: e2ee5a0417f3617a93f8ca8df2b455c17e50dd5fb750b2fbe37e75982c3a4917
|
||||
dlSubdir: ghc-9.10.0.20240313-wasm32-wasi
|
||||
dlUri: https://github.com/amesgen/ghc-wasm-bindists/releases/download/20240318T183143/wasm32-wasi-ghc-9.10.tar.xz
|
||||
dlOutput: ghc-9.10.0.20240313-x86_64-linux-alpine3_18-wasm-cross_wasm32-wasi-release+fully_static.tar.xz
|
||||
Linux_Alpine:
|
||||
unknown_versioning: *ghc-wasm32-wasi-9101-64-static
|
||||
wasm32-wasi-9.10.0.20240412:
|
||||
viTags:
|
||||
- base-4.20.0.0
|
||||
viArch:
|
||||
A_64:
|
||||
Linux_UnknownLinux:
|
||||
unknown_versioning: &ghc-wasm32-wasi-9101-a3-64-static
|
||||
dlHash: e7648d84f7948d53dcd6935a0358967dc8d5d68ee3a60c0706f4b5a94a0fb628
|
||||
dlSubdir: ghc-9.10.0.20240412-wasm32-wasi
|
||||
dlUri: https://github.com/amesgen/ghc-wasm-bindists/releases/download/20240414T232345/wasm32-wasi-ghc-9.10.tar.xz
|
||||
dlOutput: ghc-9.10.0.20240412-x86_64-linux-alpine3_18-wasm-cross_wasm32-wasi-release+fully_static.tar.xz
|
||||
Linux_Alpine:
|
||||
unknown_versioning: *ghc-wasm32-wasi-9101-a3-64-static
|
Binary file not shown.
@ -6,81 +6,76 @@
|
||||
{-# LANGUAGE TypeApplications #-}
|
||||
{-# LANGUAGE ViewPatterns #-}
|
||||
{-# LANGUAGE OverloadedStrings #-}
|
||||
{-# LANGUAGE LambdaCase #-}
|
||||
|
||||
module Generate where
|
||||
|
||||
import GHCup
|
||||
import GHCup.Download
|
||||
import GHCup.Requirements
|
||||
import GHCup.Errors
|
||||
import GHCup.Types
|
||||
import GHCup.Types.Optics
|
||||
import GHCup.Utils
|
||||
|
||||
import GHCup.Utils.Logger
|
||||
import GHCup.Utils.Version.QQ
|
||||
|
||||
import Codec.Archive
|
||||
import Control.DeepSeq
|
||||
import Control.Exception ( evaluate )
|
||||
import Control.Exception.Safe hiding ( handle )
|
||||
import Control.Applicative
|
||||
import Control.Exception.Safe
|
||||
import Control.Monad
|
||||
import Control.Monad.IO.Class
|
||||
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 qualified Data.Aeson.Encode.Pretty as Aeson
|
||||
import Data.Containers.ListUtils ( nubOrd )
|
||||
import Data.ByteString ( ByteString )
|
||||
import Data.IORef
|
||||
import Data.Either
|
||||
import Data.Maybe
|
||||
import Data.List
|
||||
import Data.Map.Strict ( Map )
|
||||
import Data.Versions
|
||||
import Haskus.Utils.Variant.Excepts
|
||||
import System.Exit
|
||||
import Optics
|
||||
import System.FilePath
|
||||
import System.IO
|
||||
import System.Exit
|
||||
import Text.ParserCombinators.ReadP
|
||||
import Text.PrettyPrint.HughesPJClass ( prettyShow )
|
||||
import Text.Regex.Posix
|
||||
import GHCup.Prelude.String.QQ
|
||||
import GHCup.Utils.String.QQ
|
||||
|
||||
import qualified Data.ByteString.Lazy as BSL
|
||||
import qualified Data.ByteString as BS
|
||||
import qualified Data.Map.Strict as M
|
||||
import qualified Data.Text as T
|
||||
import qualified Data.Version as V
|
||||
import qualified Data.Yaml.Pretty as YAML
|
||||
import qualified Text.Megaparsec as MP
|
||||
|
||||
import Data.Bifoldable (bifoldMap)
|
||||
import Data.Foldable (traverse_)
|
||||
import Data.Text (Text)
|
||||
|
||||
import Text.PrettyPrint.HughesPJClass (pPrint)
|
||||
|
||||
data Format = FormatJSON
|
||||
| FormatYAML
|
||||
data GhcHlsVersions = GhcHlsVersions {
|
||||
|
||||
data Output
|
||||
= FileOutput FilePath -- optsparse-applicative doesn't handle ByteString correctly anyway
|
||||
| StdOut
|
||||
}
|
||||
|
||||
type HlsGhcVersions = Map Version (Map Architecture (Map Platform Version))
|
||||
|
||||
generateHLSGhc :: ( MonadFail m
|
||||
, MonadMask m
|
||||
, Monad m
|
||||
, MonadReader env m
|
||||
, HasSettings env
|
||||
, HasDirs env
|
||||
, HasLog env
|
||||
, MonadThrow m
|
||||
, MonadIO m
|
||||
, MonadUnliftIO m
|
||||
, HasGHCupInfo env
|
||||
)
|
||||
=> Format
|
||||
-> Output
|
||||
-> m ExitCode
|
||||
generateHLSGhc format output = do
|
||||
GHCupInfo { _ghcupDownloads = dls } <- getGHCupInfo
|
||||
generate :: ( MonadFail m
|
||||
, MonadMask m
|
||||
, Monad m
|
||||
, MonadReader env m
|
||||
, HasSettings env
|
||||
, HasDirs env
|
||||
, HasLog env
|
||||
, MonadThrow m
|
||||
, MonadIO m
|
||||
, MonadUnliftIO m
|
||||
)
|
||||
=> GHCupDownloads
|
||||
-> M.Map GlobalTool DownloadInfo
|
||||
-> m ExitCode
|
||||
generate dls _ = do
|
||||
let hlses = dls M.! HLS
|
||||
r <- forM hlses $ \(_viArch -> archs) ->
|
||||
forM archs $ \plats ->
|
||||
@ -91,197 +86,16 @@ generateHLSGhc format output = do
|
||||
, DownloadFailed
|
||||
, UnknownArchive
|
||||
, ArchiveResult
|
||||
, ContentLengthError
|
||||
] $ do
|
||||
fp <- liftE $ downloadCached dli Nothing
|
||||
let subd = _dlSubdir dli
|
||||
filesL <- liftE $ getArchiveFiles fp
|
||||
files <- liftIO $ evaluate $ force filesL
|
||||
case subd of
|
||||
Just (RealDir d)
|
||||
| d </> "GNUmakefile" `elem` files
|
||||
-> do let regex = makeRegexOpts compExtended execBlank ([s|^haskell-language-server-([0-9]+\.)*([0-9]+)(\.in)$|] :: ByteString)
|
||||
pure (rights $ MP.parse version' ""
|
||||
. T.pack
|
||||
. fromJust
|
||||
. stripPrefix "haskell-language-server-"
|
||||
. stripIn
|
||||
<$> filter (match regex) (fromJust . stripPrefix (d <> "/") <$> files)
|
||||
)
|
||||
_ -> do let regex = makeRegexOpts compExtended execBlank ([s|^haskell-language-server-([0-9]+\.)*([0-9]+)(\.exe)?$|] :: ByteString)
|
||||
pure (rights $ MP.parse version' ""
|
||||
. T.pack
|
||||
. fromJust
|
||||
. stripPrefix "haskell-language-server-"
|
||||
. stripExe
|
||||
<$> filter (match regex) files
|
||||
)
|
||||
pure (sort r)
|
||||
let w = case format of
|
||||
FormatYAML -> BSL.fromStrict $ YAML.encodePretty YAML.defConfig r
|
||||
FormatJSON -> Aeson.encodePretty r
|
||||
case output of
|
||||
StdOut -> liftIO $ BSL.putStr w
|
||||
FileOutput f -> liftIO $ BSL.writeFile f w
|
||||
files <- liftE $ getArchiveFiles fp
|
||||
let regex = makeRegexOpts compExtended execBlank ([s|^haskell-language-server-([0-9]+\.)*([0-9]+)$|] :: ByteString)
|
||||
let ghcs = rights $ MP.parse version' ""
|
||||
. T.pack
|
||||
. fromJust
|
||||
. stripPrefix "haskell-language-server-"
|
||||
<$> filter (match regex) files
|
||||
pure ghcs
|
||||
pure r
|
||||
liftIO $ BS.putStr $ YAML.encodePretty YAML.defConfig r
|
||||
pure ExitSuccess
|
||||
where
|
||||
stripExe :: String -> String
|
||||
stripExe f = case reverse f of
|
||||
('e':'x':'e':'.':r) -> reverse r
|
||||
_ -> f
|
||||
stripIn :: String -> String
|
||||
stripIn f = case reverse f of
|
||||
('n':'i':'.':r) -> reverse r
|
||||
_ -> f
|
||||
|
||||
generateTable :: ( MonadFail m
|
||||
, MonadMask m
|
||||
, Monad m
|
||||
, MonadReader env m
|
||||
, HasSettings env
|
||||
, HasDirs env
|
||||
, HasLog env
|
||||
, MonadThrow m
|
||||
, MonadIO m
|
||||
, HasPlatformReq env
|
||||
, HasGHCupInfo env
|
||||
, MonadUnliftIO m
|
||||
)
|
||||
=> Output
|
||||
-> m ExitCode
|
||||
generateTable output = do
|
||||
handle <- case output of
|
||||
StdOut -> pure stdout
|
||||
FileOutput fp -> liftIO $ openFile fp WriteMode
|
||||
|
||||
forM_ [GHC,Cabal,HLS,Stack] $ \tool -> do
|
||||
case tool of
|
||||
GHC -> liftIO $ hPutStrLn handle $ "<details> <summary>Show all supported <a href='https://www.haskell.org/ghc/'>GHC</a> versions</summary>"
|
||||
Cabal -> liftIO $ hPutStrLn handle $ "<details> <summary>Show all supported <a href='https://cabal.readthedocs.io/en/stable/'>cabal-install</a> versions</summary>"
|
||||
HLS -> liftIO $ hPutStrLn handle $ "<details> <summary>Show all supported <a href='https://haskell-language-server.readthedocs.io/en/stable/'>HLS</a> versions</summary>"
|
||||
Stack -> liftIO $ hPutStrLn handle $ "<details> <summary>Show all supported <a href='https://docs.haskellstack.org/en/stable/README/'>Stack</a> versions</summary>"
|
||||
_ -> fail "no"
|
||||
liftIO $ hPutStrLn handle $ "<table>"
|
||||
liftIO $ hPutStrLn handle $ "<thead><tr><th>" <> show tool <> " Version</th><th>Tags</th></tr></thead>"
|
||||
liftIO $ hPutStrLn handle $ "<tbody>"
|
||||
vers <- reverse <$> listVersions (Just tool) [] False False (Nothing, Nothing)
|
||||
forM_ (filter (\ListResult{..} -> not lStray) vers) $ \ListResult{..} -> do
|
||||
liftIO $ hPutStrLn handle $
|
||||
"<tr><td>"
|
||||
<> T.unpack (prettyVer lVer)
|
||||
<> "</td><td>"
|
||||
<> intercalate ", " (filter (/= "") . fmap printTag $ sort lTag)
|
||||
<> "</td></tr>"
|
||||
pure ()
|
||||
liftIO $ hPutStrLn handle $ "</tbody>"
|
||||
liftIO $ hPutStrLn handle $ "</table>"
|
||||
liftIO $ hPutStrLn handle $ "</details>"
|
||||
liftIO $ hPutStrLn handle $ ""
|
||||
pure ExitSuccess
|
||||
where
|
||||
printTag Recommended = "<span style=\"color:green\">recommended</span>"
|
||||
printTag Latest = "<span style=\"color:blue\">latest</span>"
|
||||
printTag Prerelease = "<span style=\"color:red\">prerelease</span>"
|
||||
printTag (Base pvp'') = "base-" ++ T.unpack (prettyPVP pvp'')
|
||||
printTag (UnknownTag t ) = t
|
||||
printTag Old = ""
|
||||
|
||||
|
||||
generateSystemInfo :: ( MonadFail m
|
||||
, MonadMask m
|
||||
, Monad m
|
||||
, MonadReader env m
|
||||
, HasSettings env
|
||||
, HasDirs env
|
||||
, HasLog env
|
||||
, MonadThrow m
|
||||
, MonadIO m
|
||||
, HasPlatformReq env
|
||||
, HasGHCupInfo env
|
||||
, MonadUnliftIO m
|
||||
)
|
||||
=> Output
|
||||
-> m ExitCode
|
||||
generateSystemInfo output = do
|
||||
handle <- case output of
|
||||
StdOut -> pure stdout
|
||||
FileOutput fp -> liftIO $ openFile fp WriteMode
|
||||
|
||||
forM_ [ Linux Debian
|
||||
, Linux Ubuntu
|
||||
, Linux Fedora
|
||||
, Linux CentOS
|
||||
, Linux Alpine
|
||||
, Linux UnknownLinux
|
||||
, Darwin
|
||||
, FreeBSD
|
||||
, Windows
|
||||
] $ \plat -> do
|
||||
GHCupInfo { .. } <- getGHCupInfo
|
||||
(Just req) <- pure $ getCommonRequirements (PlatformResult plat Nothing) _toolRequirements
|
||||
liftIO $ hPutStrLn handle $ "### " <> (prettyPlat plat) <> "\n"
|
||||
liftIO $ hPutStrLn handle $ (T.unpack $ pretty' req) <> "\n"
|
||||
pure ExitSuccess
|
||||
where
|
||||
pretty' Requirements {..} =
|
||||
let d = if not . null $ _distroPKGs
|
||||
then "The following distro packages are required: " <> "`" <> T.intercalate " " _distroPKGs <> "`"
|
||||
else ""
|
||||
n = if not . T.null $ _notes then _notes else ""
|
||||
in if | T.null d -> n
|
||||
| T.null n -> d
|
||||
| otherwise -> d <> "\n" <> n
|
||||
|
||||
prettyPlat (Linux UnknownLinux) = "Linux (generic)"
|
||||
prettyPlat p = show p
|
||||
|
||||
|
||||
generateSystemInfoWithDistroVersion :: ( MonadFail m
|
||||
, MonadMask m
|
||||
, Monad m
|
||||
, MonadReader env m
|
||||
, HasSettings env
|
||||
, HasDirs env
|
||||
, HasLog env
|
||||
, MonadThrow m
|
||||
, MonadIO m
|
||||
, HasPlatformReq env
|
||||
, HasGHCupInfo env
|
||||
, MonadUnliftIO m
|
||||
)
|
||||
=> Output
|
||||
-> m ExitCode
|
||||
generateSystemInfoWithDistroVersion output = do
|
||||
handle <- case output of
|
||||
StdOut -> pure stdout
|
||||
FileOutput fp -> liftIO $ openFile fp WriteMode
|
||||
|
||||
GHCupInfo { _toolRequirements = tr } <- getGHCupInfo
|
||||
let ghcInfo = M.lookup Nothing <$> M.lookup GHC tr
|
||||
liftIO $ traverse_ (\(key, value) -> do
|
||||
liftIO $ hPutStrLn handle $ "### " <> prettyPlat key <> "\n"
|
||||
liftIO $ hPutStrLn handle $ T.unpack $ versionsAndRequirements value <> T.pack "\n")
|
||||
$ M.toList $ fromJust (fromJust ghcInfo)
|
||||
pure ExitSuccess
|
||||
|
||||
where
|
||||
pretty' Requirements {..} =
|
||||
let d = if not . null $ _distroPKGs
|
||||
then "The following distro packages are required: " <> "`" <> T.intercalate " " _distroPKGs <> "`" <> "\n"
|
||||
else ""
|
||||
n = if not . T.null $ _notes then _notes else ""
|
||||
in if | T.null d -> n
|
||||
| T.null n -> d
|
||||
| otherwise -> d <> "\n" <> n
|
||||
|
||||
versionsAndRequirements :: PlatformReqVersionSpec -> Text
|
||||
versionsAndRequirements =
|
||||
bifoldMap
|
||||
( \case
|
||||
Nothing -> T.pack $ "#### Generic" <> "\n"
|
||||
Just verz -> T.pack "#### Version " <> T.pack (show $ pPrint verz) <> "\n"
|
||||
)
|
||||
pretty'
|
||||
|
||||
prettyPlat (Linux UnknownLinux) = "Linux (generic)"
|
||||
prettyPlat p = show p
|
||||
|
@ -11,7 +11,7 @@ import GHCup.Types
|
||||
import GHCup.Errors
|
||||
import GHCup.Platform
|
||||
import GHCup.Utils.Dirs
|
||||
import GHCup.Prelude.Logger
|
||||
import GHCup.Utils.Logger
|
||||
import GHCup.Types.JSON ( )
|
||||
|
||||
import Control.Exception ( displayException )
|
||||
@ -43,47 +43,11 @@ data Options = Options
|
||||
{ optCommand :: Command
|
||||
}
|
||||
|
||||
|
||||
formatParser :: Parser Format
|
||||
formatParser =
|
||||
option
|
||||
(eitherReader formatP)
|
||||
(long "format" <> metavar "FORMAT" <> help
|
||||
"Which format to use (JSON | YAML). Yaml is default."
|
||||
<> value FormatJSON
|
||||
)
|
||||
where
|
||||
formatP :: String -> Either String Format
|
||||
formatP s' | t == T.pack "json" = Right FormatJSON
|
||||
| t == T.pack "yaml" = Right FormatYAML
|
||||
| t == T.pack "yml" = Right FormatYAML
|
||||
| otherwise = Left ("Unknown format value: " <> s')
|
||||
where t = T.toLower (T.pack s')
|
||||
|
||||
|
||||
data Command = ValidateYAML ValidateYAMLOpts
|
||||
| ValidateTarballs ValidateYAMLOpts TarballFilter
|
||||
| GenerateHlsGhc ValidateYAMLOpts Format Output
|
||||
| GenerateToolTable ValidateYAMLOpts Output
|
||||
| GenerateSystemDepsInfo ValidateYAMLOpts Output
|
||||
| GenerateHlsGhc ValidateYAMLOpts
|
||||
|
||||
|
||||
fileOutput :: Parser Output
|
||||
fileOutput =
|
||||
FileOutput
|
||||
<$> strOption
|
||||
(long "output-file" <> short 'o' <> metavar "FILENAME" <> help
|
||||
"Output file to write to"
|
||||
)
|
||||
|
||||
stdOutput :: Parser Output
|
||||
stdOutput = flag'
|
||||
StdOut
|
||||
(short 'o' <> long "stdout" <> help "Output to stdout (default)")
|
||||
|
||||
outputP :: Parser Output
|
||||
outputP = fileOutput <|> stdOutput
|
||||
|
||||
data Input
|
||||
= FileInput FilePath -- optsparse-applicative doesn't handle ByteString correctly anyway
|
||||
| StdInput
|
||||
@ -105,43 +69,26 @@ inputP :: Parser Input
|
||||
inputP = fileInput <|> stdInput
|
||||
|
||||
data ValidateYAMLOpts = ValidateYAMLOpts
|
||||
{ vChannel :: DistributionChannel
|
||||
, vInput :: Maybe Input
|
||||
{ vInput :: Maybe Input
|
||||
}
|
||||
|
||||
validateYAMLOpts :: Parser ValidateYAMLOpts
|
||||
validateYAMLOpts = ValidateYAMLOpts <$> channelParser <*> optional inputP
|
||||
|
||||
channelParser :: Parser DistributionChannel
|
||||
channelParser =
|
||||
option
|
||||
(eitherReader chanP)
|
||||
(long "channel" <> metavar "CHANNEL" <> help
|
||||
"Signal which distribution channel the YAML denotes: (main | prerelease | nightly). Main is defaul."
|
||||
<> value MainChan
|
||||
)
|
||||
where
|
||||
chanP :: String -> Either String DistributionChannel
|
||||
chanP s' | t == T.pack "main" = Right MainChan
|
||||
| t == T.pack "prerelease" = Right PrereleaseChan
|
||||
| t == T.pack "prereleases" = Right PrereleaseChan
|
||||
| t == T.pack "nightly" = Right NightlyChan
|
||||
| t == T.pack "nightlies" = Right NightlyChan
|
||||
| otherwise = Left ("Unknown channel value: " <> s')
|
||||
where t = T.toLower (T.pack s')
|
||||
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 Nothing (makeRegex ("" :: String))
|
||||
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 $ Just tool) <*> makeRegexOptsM compIgnoreCase execBlank (drop 1 v)
|
||||
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
|
||||
|
||||
@ -166,21 +113,9 @@ com = subparser
|
||||
<> command
|
||||
"generate-hls-ghcs"
|
||||
(info
|
||||
((GenerateHlsGhc <$> validateYAMLOpts <*> formatParser <*> outputP) <**> helper)
|
||||
((GenerateHlsGhc <$> validateYAMLOpts) <**> helper)
|
||||
(progDesc "Generate a list of HLS-GHC support")
|
||||
)
|
||||
<> command
|
||||
"generate-tool-table"
|
||||
(info
|
||||
((GenerateToolTable <$> validateYAMLOpts <*> outputP) <**> helper)
|
||||
(progDesc "Generate a markdown table of available tool versions")
|
||||
)
|
||||
<> command
|
||||
"generate-system-deps-info"
|
||||
(info
|
||||
((GenerateSystemDepsInfo <$> validateYAMLOpts <*> outputP) <**> helper)
|
||||
(progDesc "Generate a markdown info for system dependencies")
|
||||
)
|
||||
)
|
||||
|
||||
|
||||
@ -194,7 +129,7 @@ main = do
|
||||
, fancyColors = not no_color
|
||||
}
|
||||
dirs <- liftIO getAllDirs
|
||||
let leanAppstate = LeanAppState (Settings True 0 Lax False Never Curl True GHCupURL False GPGNone True Nothing (DM mempty)) dirs defaultKeyBindings loggerConfig
|
||||
let leanAppstate = LeanAppState (Settings True 0 False Never Curl True GHCupURL False GPGNone False) dirs defaultKeyBindings loggerConfig
|
||||
|
||||
pfreq <- (
|
||||
flip runReaderT leanAppstate . runE @'[NoCompatiblePlatform, NoCompatibleArch, DistroNotFound] $ platformRequest
|
||||
@ -204,29 +139,26 @@ main = do
|
||||
flip runReaderT leanAppstate $ logError $ T.pack $ prettyShow e
|
||||
liftIO $ exitWith (ExitFailure 2)
|
||||
|
||||
let appstate = AppState (Settings True 0 Lax False Never Curl True GHCupURL False GPGNone True Nothing (DM mempty)) dirs defaultKeyBindings (GHCupInfo mempty mempty Nothing) pfreq loggerConfig
|
||||
|
||||
let 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
|
||||
ginfo <- case Y.decodeEither' contents of
|
||||
Right r -> pure r
|
||||
Left e -> die (color Red $ displayException e)
|
||||
r <- flip runReaderT appstate { ghcupInfo = ginfo } f
|
||||
exitWith r
|
||||
let appstate = AppState (Settings True 0 False Never Curl True GHCupURL False GPGNone False) dirs defaultKeyBindings (GHCupInfo mempty mempty mempty) pfreq loggerConfig
|
||||
|
||||
_ <- customExecParser (prefs showHelpOnError) (info (opts <**> helper) idm)
|
||||
>>= \Options {..} -> case optCommand of
|
||||
ValidateYAML vopts@ValidateYAMLOpts{ .. } -> withValidateYamlOpts vopts (validate vChannel)
|
||||
ValidateTarballs vopts tarballFilter -> withValidateYamlOpts vopts (validateTarballs tarballFilter)
|
||||
GenerateHlsGhc vopts format output -> withValidateYamlOpts vopts (generateHLSGhc format output)
|
||||
GenerateToolTable vopts output -> withValidateYamlOpts vopts (generateTable output)
|
||||
GenerateSystemDepsInfo vopts output -> withValidateYamlOpts vopts (generateSystemInfoWithDistroVersion output)
|
||||
ValidateYAML vopts -> withValidateYamlOpts vopts (\dl m -> flip runReaderT appstate $ validate dl m)
|
||||
ValidateTarballs vopts tarballFilter -> withValidateYamlOpts vopts (\dl m -> flip runReaderT appstate $ validateTarballs tarballFilter dl m)
|
||||
GenerateHlsGhc vopts -> withValidateYamlOpts vopts (\dl m -> flip runReaderT appstate $ generate dl m)
|
||||
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 $ displayException e)
|
||||
f av gt
|
||||
>>= exitWith
|
||||
|
@ -15,8 +15,8 @@ import GHCup.Errors
|
||||
import GHCup.Types
|
||||
import GHCup.Types.Optics
|
||||
import GHCup.Utils
|
||||
import GHCup.Prelude.Logger
|
||||
import GHCup.Prelude.Version.QQ
|
||||
import GHCup.Utils.Logger
|
||||
import GHCup.Utils.Version.QQ
|
||||
|
||||
import Codec.Archive
|
||||
import Control.Applicative
|
||||
@ -51,11 +51,6 @@ data ValidationError = InternalError String
|
||||
|
||||
instance Exception ValidationError
|
||||
|
||||
data DistributionChannel = MainChan
|
||||
| PrereleaseChan
|
||||
| NightlyChan
|
||||
deriving (Show, Eq)
|
||||
|
||||
|
||||
addError :: (MonadReader (IORef Int) m, MonadIO m, Monad m) => m ()
|
||||
addError = do
|
||||
@ -63,19 +58,11 @@ addError = do
|
||||
liftIO $ modifyIORef ref (+ 1)
|
||||
|
||||
|
||||
validate :: ( Monad m
|
||||
, MonadReader env m
|
||||
, HasLog env
|
||||
, MonadThrow m
|
||||
, MonadIO m
|
||||
, MonadUnliftIO m
|
||||
, HasGHCupInfo env
|
||||
)
|
||||
=> DistributionChannel
|
||||
validate :: (Monad m, MonadReader env m, HasLog env, MonadThrow m, MonadIO m, MonadUnliftIO m)
|
||||
=> GHCupDownloads
|
||||
-> M.Map GlobalTool DownloadInfo
|
||||
-> m ExitCode
|
||||
validate distroChannel = do
|
||||
GHCupInfo { _ghcupDownloads = dls } <- getGHCupInfo
|
||||
|
||||
validate dls _ = do
|
||||
ref <- liftIO $ newIORef 0
|
||||
|
||||
-- verify binary downloads --
|
||||
@ -87,7 +74,7 @@ validate distroChannel = do
|
||||
forM_ (M.toList dls) $ \(t, versions) ->
|
||||
forM_ (M.toList versions) $ \(v, vi) ->
|
||||
forM_ (M.toList $ _viArch vi) $ \(arch, pspecs) -> do
|
||||
checkHasRequiredPlatforms t (_tvVersion v) (_viTags vi) arch (M.keys pspecs)
|
||||
checkHasRequiredPlatforms t v (_viTags vi) arch (M.keys pspecs)
|
||||
|
||||
checkGHCVerIsValid
|
||||
forM_ (M.toList dls) $ \(t, _) -> checkMandatoryTags t
|
||||
@ -101,39 +88,35 @@ validate distroChannel = do
|
||||
lift $ logInfo "All good"
|
||||
pure ExitSuccess
|
||||
where
|
||||
checkHasRequiredPlatforms t v tags arch pspecs
|
||||
-- relax requirements for prerelease and nightly channels
|
||||
| distroChannel `elem` [PrereleaseChan, NightlyChan] = pure ()
|
||||
| otherwise = do
|
||||
let v' = prettyVer v
|
||||
arch' = prettyShow arch
|
||||
when (Linux UnknownLinux `notElem` pspecs) $ do
|
||||
lift $ logError $
|
||||
"Linux UnknownLinux missing for for " <> T.pack (prettyShow t) <> " " <> v' <> " " <> T.pack arch'
|
||||
addError
|
||||
when ((Darwin `notElem` pspecs) && arch == A_64) $ do
|
||||
lift $ logError $ "Darwin missing for for " <> T.pack (prettyShow t) <> " " <> v' <> " " <> T.pack arch'
|
||||
addError
|
||||
when ((FreeBSD `notElem` pspecs) && arch == A_64) $ lift $ logWarn $
|
||||
"FreeBSD missing for for " <> T.pack (prettyShow t) <> " " <> v' <> " " <> T.pack arch'
|
||||
when (Windows `notElem` pspecs && arch == A_64) $ do
|
||||
lift $ logError $ "Windows missing for for " <> T.pack (prettyShow t) <> " " <> v' <> " " <> T.pack arch'
|
||||
addError
|
||||
checkHasRequiredPlatforms t v tags arch pspecs = do
|
||||
let v' = prettyVer v
|
||||
arch' = prettyShow arch
|
||||
when (Linux UnknownLinux `notElem` pspecs) $ do
|
||||
lift $ logError $
|
||||
"Linux UnknownLinux missing for for " <> T.pack (prettyShow t) <> " " <> v' <> " " <> T.pack arch'
|
||||
addError
|
||||
when ((Darwin `notElem` pspecs) && arch == A_64) $ do
|
||||
lift $ logError $ "Darwin missing for for " <> T.pack (prettyShow t) <> " " <> v' <> " " <> T.pack arch'
|
||||
addError
|
||||
when ((FreeBSD `notElem` pspecs) && arch == A_64) $ lift $ logWarn $
|
||||
"FreeBSD missing for for " <> T.pack (prettyShow t) <> " " <> v' <> " " <> T.pack arch'
|
||||
when (Windows `notElem` 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 (Linux Alpine `notElem` 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)
|
||||
-- alpine needs to be set explicitly, because
|
||||
-- we cannot assume that "Linux UnknownLinux" runs on Alpine
|
||||
-- (although it could be static)
|
||||
when (Linux Alpine `notElem` 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
|
||||
GHCupInfo { _ghcupDownloads = dls } <- lift getGHCupInfo
|
||||
let allTags = _viTags =<< M.elems (availableToolVersions dls tool)
|
||||
let nonUnique =
|
||||
fmap fst
|
||||
@ -154,19 +137,15 @@ validate distroChannel = 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 LatestPrerelease = True
|
||||
isUniqueTag Nightly = False
|
||||
isUniqueTag LatestNightly = True
|
||||
isUniqueTag (Base _) = False
|
||||
isUniqueTag (UnknownTag _) = False
|
||||
isUniqueTag Latest = True
|
||||
isUniqueTag Recommended = True
|
||||
isUniqueTag Old = False
|
||||
isUniqueTag Prerelease = False
|
||||
isUniqueTag (Base _) = False
|
||||
isUniqueTag (UnknownTag _) = False
|
||||
|
||||
checkGHCVerIsValid = do
|
||||
GHCupInfo { _ghcupDownloads = dls } <- lift getGHCupInfo
|
||||
let ghcVers = toListOf (ix GHC % to M.keys % to (map _tvVersion) % folded) dls
|
||||
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 ()
|
||||
@ -176,30 +155,19 @@ validate distroChannel = do
|
||||
|
||||
-- a tool must have at least one of each mandatory tags
|
||||
checkMandatoryTags tool = do
|
||||
GHCupInfo { _ghcupDownloads = dls } <- lift getGHCupInfo
|
||||
let allTags = _viTags =<< M.elems (availableToolVersions dls tool)
|
||||
forM_ (mandatoryTags tool) $ \t -> case t `elem` allTags of
|
||||
forM_ [Latest, Recommended] $ \t -> case t `elem` allTags of
|
||||
False -> do
|
||||
lift $ logError $ "Tag " <> T.pack (prettyShow t) <> " missing from " <> T.pack (prettyShow tool)
|
||||
addError
|
||||
True -> pure ()
|
||||
|
||||
mandatoryTags tool
|
||||
-- due to a quirk, even for ghcup prereleases we need the 'latest' tag
|
||||
-- https://github.com/haskell/ghcup-hs/issues/891
|
||||
| tool == GHCup = [Latest, Recommended]
|
||||
| otherwise = case distroChannel of
|
||||
MainChan -> [Latest, Recommended]
|
||||
PrereleaseChan -> [LatestPrerelease]
|
||||
NightlyChan -> [LatestNightly]
|
||||
|
||||
-- all GHC versions must have a base tag
|
||||
checkGHCHasBaseVersion = do
|
||||
GHCupInfo { _ghcupDownloads = dls } <- lift getGHCupInfo
|
||||
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 (_tvVersion ver)
|
||||
lift $ logError $ "Base tag missing from GHC ver " <> prettyVer ver
|
||||
addError
|
||||
True -> pure ()
|
||||
|
||||
@ -207,7 +175,7 @@ validate distroChannel = do
|
||||
isBase _ = False
|
||||
|
||||
data TarballFilter = TarballFilter
|
||||
{ tfTool :: Maybe Tool
|
||||
{ tfTool :: Either GlobalTool (Maybe Tool)
|
||||
, tfVersion :: Regex
|
||||
}
|
||||
|
||||
@ -222,20 +190,20 @@ validateTarballs :: ( Monad m
|
||||
, MonadMask m
|
||||
, Alternative m
|
||||
, MonadFail m
|
||||
, HasGHCupInfo env
|
||||
)
|
||||
=> TarballFilter
|
||||
-> GHCupDownloads
|
||||
-> M.Map GlobalTool DownloadInfo
|
||||
-> m ExitCode
|
||||
validateTarballs (TarballFilter mtool versionRegex) = do
|
||||
GHCupInfo { _ghcupDownloads = dls } <- getGHCupInfo
|
||||
validateTarballs (TarballFilter etool versionRegex) dls gt = do
|
||||
ref <- liftIO $ newIORef 0
|
||||
|
||||
-- download/verify all tarballs
|
||||
let dlis = nubOrd $ dls ^.. each %& indices (maybe (const True) (==) mtool)
|
||||
%> each %& indices (matchTest versionRegex . T.unpack . prettyVer . _tvVersion)
|
||||
% (viTestDL % _Just `summing` viSourceDL % _Just `summing` viArch % each % each % each)
|
||||
when (null dlis) $ logError "no tarballs selected by filter" *> runReaderT addError ref
|
||||
forM_ dlis (downloadAll ref)
|
||||
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" *> runReaderT addError ref
|
||||
forM_ allDls (downloadAll ref)
|
||||
|
||||
-- exit
|
||||
e <- liftIO $ readIORef ref
|
||||
@ -266,28 +234,32 @@ validateTarballs (TarballFilter mtool versionRegex) = do
|
||||
, DownloadFailed
|
||||
, UnknownArchive
|
||||
, ArchiveResult
|
||||
, ContentLengthError
|
||||
]
|
||||
$ do
|
||||
case mtool of
|
||||
(Just GHCup) -> do
|
||||
case etool of
|
||||
Right (Just GHCup) -> do
|
||||
tmpUnpack <- lift mkGhcupTmpDir
|
||||
_ <- liftE $ download (_dlUri dli) Nothing (Just (_dlHash dli)) Nothing (fromGHCupPath tmpUnpack) Nothing False
|
||||
_ <- liftE $ download (_dlUri dli) Nothing (Just (_dlHash dli)) tmpUnpack Nothing False
|
||||
pure Nothing
|
||||
_ -> do
|
||||
Right _ -> do
|
||||
p <- liftE $ downloadCached dli Nothing
|
||||
fmap Just $ liftE
|
||||
. getArchiveFiles
|
||||
$ p
|
||||
fmap (Just . head . splitDirectories . head)
|
||||
. liftE
|
||||
. getArchiveFiles
|
||||
$ p
|
||||
Left ShimGen -> do
|
||||
tmpUnpack <- lift mkGhcupTmpDir
|
||||
_ <- liftE $ download (_dlUri dli) Nothing (Just (_dlHash dli)) tmpUnpack Nothing False
|
||||
pure Nothing
|
||||
case r of
|
||||
VRight (Just entries) -> do
|
||||
VRight (Just basePath) -> do
|
||||
case _dlSubdir dli of
|
||||
Just (RealDir prel) -> do
|
||||
logInfo
|
||||
$ " verifying subdir: " <> T.pack prel
|
||||
when (normalise prel `notElem` fmap (normalise . takeDirectory) entries) $ do
|
||||
when (basePath /= prel) $ do
|
||||
logError $
|
||||
"Subdir doesn't match: expected " <> T.pack prel
|
||||
"Subdir doesn't match: expected " <> T.pack prel <> ", got " <> T.pack basePath
|
||||
runReaderT addError ref
|
||||
Just (RegexDir regexString) -> do
|
||||
logInfo $
|
||||
@ -296,9 +268,9 @@ validateTarballs (TarballFilter mtool versionRegex) = do
|
||||
compIgnoreCase
|
||||
execBlank
|
||||
regexString
|
||||
unless (or $ fmap (match regex. normalise) entries) $ do
|
||||
unless (match regex basePath) $ do
|
||||
logError $
|
||||
"Subdir doesn't match: expected regex " <> T.pack regexString
|
||||
"Subdir doesn't match: expected regex " <> T.pack regexString <> ", got " <> T.pack basePath
|
||||
runReaderT addError ref
|
||||
Nothing -> pure ()
|
||||
VRight Nothing -> pure ()
|
||||
|
@ -45,16 +45,14 @@ executable ghcup-gen
|
||||
-fwarn-incomplete-record-updates -threaded
|
||||
|
||||
build-depends:
|
||||
, aeson-pretty ^>=0.8.9
|
||||
, base >=4.13 && <5
|
||||
, bytestring ^>=0.11
|
||||
, bytestring ^>=0.10
|
||||
, containers ^>=0.6
|
||||
, deepseq ^>=1.4
|
||||
, filepath ^>=1.4.2.1
|
||||
, ghcup ^>=0.1.19.0
|
||||
, haskus-utils-variant ^>=3.3
|
||||
, ghcup ^>=0.1.17.3
|
||||
, haskus-utils-variant ^>=3.2
|
||||
, libarchive ^>=3.0.3.0
|
||||
, megaparsec >=8.0.0 && <9.3
|
||||
, megaparsec ^>=9.0
|
||||
, mtl ^>=2.2
|
||||
, optics ^>=0.4
|
||||
, optparse-applicative >=0.15.1.0 && <0.17
|
||||
@ -63,7 +61,7 @@ executable ghcup-gen
|
||||
, regex-posix ^>=0.96
|
||||
, resourcet ^>=1.2.2
|
||||
, safe-exceptions ^>=0.1
|
||||
, text ^>=2.0
|
||||
, text ^>=1.2.4.0
|
||||
, transformers ^>=0.5
|
||||
, versions >=6.0.0
|
||||
, versions >=4.0.1 && <5.1
|
||||
, yaml-streamly ^>=0.12.0
|
||||
|
File diff suppressed because it is too large
Load Diff
Binary file not shown.
File diff suppressed because it is too large
Load Diff
Binary file not shown.
File diff suppressed because it is too large
Load Diff
Binary file not shown.
File diff suppressed because it is too large
Load Diff
Binary file not shown.
File diff suppressed because it is too large
Load Diff
Binary file not shown.
Loading…
Reference in New Issue
Block a user