Compare commits

..

1 Commits

Author SHA1 Message Date
31448202b8 Add bryans PGP key 2023-09-30 00:07:17 +08:00
32 changed files with 238 additions and 17609 deletions

View File

@@ -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+"$@"}

View File

@@ -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

View File

@@ -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
}

View File

@@ -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

View File

@@ -16,12 +16,7 @@ on:
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
default: ghcup-0.0.7.yaml
type: string
env:
BOOTSTRAP_HASKELL_NONINTERACTIVE: 1
@@ -30,7 +25,6 @@ env:
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 }}
@@ -48,9 +42,6 @@ jobs:
- 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: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:18.04
installCmd: apt-get update && apt-get install -y
toolRequirements: build-essential curl libffi-dev libffi6 libgmp-dev libgmp10 libncurses-dev libncurses5 libtinfo5
@@ -66,7 +57,7 @@ jobs:
- 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
- image: fedora:36
installCmd: dnf install -y
toolRequirements: which gcc g++ gmp gmp-devel make ncurses ncurses-compat-libs xz perl
- image: rockylinux:8
@@ -152,72 +143,6 @@ jobs:
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

View File

@@ -29,8 +29,6 @@ mkdir -p /tmp/install-bindist-ci
cp "$METADATA_FILE" /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
@@ -105,12 +103,6 @@ case $TOOL in
ghc --info
ghc -prof main.hs
[[ $(./main +RTS -s) -eq 2 ]]
ghcup_fun install cabal recommended
cabal --version
cabal update
cabal install --lib --package-env=. clock
# https://github.com/haskell/ghcup-hs/issues/966
cabal install --lib --package-env=. hashable
;;
cabal)
ghcup_fun install ghc --set "$(ghcup_fun list -t ghc -r -c available | tail -1 | awk '{ print $2 }')"

View File

@@ -3,4 +3,5 @@ keys=(
FFEB7CE81E16A36B3E2DED6F2DE04D4E97DB64AD # Ben Gamari <ben@well-typed.com>
88B57FCF7DB53B4DB3BFA4B1588764FBE22D19C4 # Zubin Duggal <zubin@well-typed.com>
EAF2A9A722C0C96F2B431CA511AAD8CEDEE0CAEF # Hécate <hecate@glitchbra.in>
FE5AB6C91FEA597C3B31180B73EDE9E8CFBAEF01 # Bryan Richter <b@chreekat.net>
)

View File

@@ -21,7 +21,3 @@ done
unset key
gpg --verify "${METADATA_FILE}.sig"
for f in ghcup-*.json ghcup-*.yaml hls-metadata-*.json ; do
gpg --verify "${f}.sig"
done

4
.gitignore vendored
View File

@@ -12,6 +12,6 @@ tags
TAGS
/tmp/
.entangled
/release/
/releases/
release/
releases/
site/

View File

@@ -1,34 +1,6 @@
# 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`)
@@ -39,24 +11,3 @@ Also check the [config.yaml documentation](https://github.com/haskell/ghcup-hs/b
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`

View File

@@ -7,7 +7,7 @@ package ghcup
source-repository-package
type: git
location: https://github.com/haskell/ghcup-hs.git
tag: b1106985ec1173a0122f2781719e9bb1a85de257
tag: fd6ff9f8ece147bb4527843822462c72824e8ba7
constraints: http-io-streams -brotli,
any.aeson >= 2.0.1.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.

View File

@@ -27,30 +27,16 @@ ghcupDownloads:
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
wasm32-wasi-9.6.3.20230927:
wasm32-wasi-9.6.2.20230523:
viTags:
- base-4.18.1.0
- base-4.18.0.0
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
unknown_versioning: &ghc-wasm32-wasi-64-static
dlHash: 85433ce296f2f95a5c60f78060cb4a3a8bf8b56bf83ddd75f1b23cb2e2378888
dlSubdir: ghc-9.6.2.20230523-wasm32-wasi
dlUri: https://gitlab.haskell.org/api/v4/projects/3223/jobs/1530829/artifacts/ghc-x86_64-linux-alpine3_12-cross_wasm32-wasi-release%2Bfully_static.tar.xz
dlOutput: ghc-9.6.2.20230523-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.8.0.20230927:
viTags:
- base-4.19.0.0
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
unknown_versioning: *ghc-wasm32-wasi-64-static

Binary file not shown.

View File

@@ -105,43 +105,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
@@ -204,7 +187,7 @@ 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 appstate = AppState (Settings True 0 Lax False Never Curl True GHCupURL False GPGNone True Nothing (DM mempty)) dirs defaultKeyBindings (GHCupInfo mempty mempty mempty) pfreq loggerConfig
let withValidateYamlOpts vopts f = case vopts of
ValidateYAMLOpts { vInput = Nothing } ->
@@ -222,7 +205,7 @@ main = do
_ <- customExecParser (prefs showHelpOnError) (info (opts <**> helper) idm)
>>= \Options {..} -> case optCommand of
ValidateYAML vopts@ValidateYAMLOpts{ .. } -> withValidateYamlOpts vopts (validate vChannel)
ValidateYAML vopts -> withValidateYamlOpts vopts validate
ValidateTarballs vopts tarballFilter -> withValidateYamlOpts vopts (validateTarballs tarballFilter)
GenerateHlsGhc vopts format output -> withValidateYamlOpts vopts (generateHLSGhc format output)
GenerateToolTable vopts output -> withValidateYamlOpts vopts (generateTable output)

View File

@@ -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
@@ -71,9 +66,8 @@ validate :: ( Monad m
, MonadUnliftIO m
, HasGHCupInfo env
)
=> DistributionChannel
-> m ExitCode
validate distroChannel = do
=> m ExitCode
validate = do
GHCupInfo { _ghcupDownloads = dls } <- getGHCupInfo
ref <- liftIO $ newIORef 0
@@ -101,36 +95,33 @@ 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
@@ -154,15 +145,12 @@ 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
@@ -178,21 +166,12 @@ validate distroChannel = do
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
@@ -207,7 +186,7 @@ validate distroChannel = do
isBase _ = False
data TarballFilter = TarballFilter
{ tfTool :: Maybe Tool
{ tfTool :: Either GlobalTool (Maybe Tool)
, tfVersion :: Regex
}
@@ -226,16 +205,20 @@ validateTarballs :: ( Monad m
)
=> TarballFilter
-> m ExitCode
validateTarballs (TarballFilter mtool versionRegex) = do
GHCupInfo { _ghcupDownloads = dls } <- getGHCupInfo
validateTarballs (TarballFilter etool versionRegex) = do
GHCupInfo { _ghcupDownloads = dls, _globalTools = gt } <- getGHCupInfo
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 . _tvVersion)
% (viTestDL % _Just `summing` 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
@@ -269,16 +252,20 @@ validateTarballs (TarballFilter mtool versionRegex) = do
, 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
pure Nothing
_ -> do
Right _ -> do
p <- liftE $ downloadCached dli Nothing
fmap Just $ liftE
. getArchiveFiles
$ p
Left ShimGen -> do
tmpUnpack <- lift mkGhcupTmpDir
_ <- liftE $ download (_dlUri dli) Nothing (Just (_dlHash dli)) Nothing (fromGHCupPath tmpUnpack) Nothing False
pure Nothing
case r of
VRight (Just entries) -> do
case _dlSubdir dli of

View File

@@ -65,5 +65,5 @@ executable ghcup-gen
, safe-exceptions ^>=0.1
, text ^>=2.0
, transformers ^>=0.5
, versions >=6.0.0
, versions >=4.0.1 && <5.1
, yaml-streamly ^>=0.12.0

View File

@@ -13,11 +13,11 @@ ghcupDownloads:
viArch:
A_64:
Linux_UnknownLinux:
unknown_versioning: &cabal-3720-64
unknown_versioning: &cabal-3720-32
dlUri: https://downloads.haskell.org/~ghcup/unofficial-bindists/cabal/3.7.0.0-pre20220407/cabal-install-3.7-x86_64-linux-alpine.tar.xz
dlHash: c9e28e1578dfb851918e523040cb0f913df747fe95e24d089bcf7cd821c21885
Linux_Alpine:
unknown_versioning: *cabal-3720-64
unknown_versioning: *cabal-3720-32
Darwin:
unknown_versioning:
dlUri: https://downloads.haskell.org/~ghcup/unofficial-bindists/cabal/3.7.0.0-pre20220407/cabal-install-3.7-x86_64-darwin.tar.xz
@@ -59,11 +59,11 @@ ghcupDownloads:
viArch:
A_64:
Linux_UnknownLinux:
unknown_versioning: &cabal-3810-64
unknown_versioning: &cabal-3810-32
dlUri: https://downloads.haskell.org/~cabal/cabal-install-3.8.1.0-rc1/cabal-install-3.8.0.20220526-x86_64-linux-alpine.tar.xz
dlHash: a4e6cb7990d7150c4e64cbd3ebd0a62fb6b00f96f0f9bc3fb751ff6d1f898fdb
Linux_Alpine:
unknown_versioning: *cabal-3810-64
unknown_versioning: *cabal-3810-32
Darwin:
unknown_versioning:
dlUri: https://downloads.haskell.org/~cabal/cabal-install-3.8.1.0-rc1/cabal-install-3.8.0.20220526-x86_64-darwin.tar.xz
@@ -100,11 +100,11 @@ ghcupDownloads:
viArch:
A_64:
Linux_UnknownLinux:
unknown_versioning: &cabal-3900-64
unknown_versioning: &cabal-3900-32
dlUri: https://downloads.haskell.org/~cabal/cabal-install-3.9.0.0/cabal-install-3.9-x86_64-linux-alpine.tar.xz
dlHash: 0374716dc33f255e1fb9ec38d83fdd3a3dc81ecf38af0a94b8ab0e1ba1a1ac1c
Linux_Alpine:
unknown_versioning: *cabal-3900-64
unknown_versioning: *cabal-3900-32
Darwin:
unknown_versioning:
dlUri: https://downloads.haskell.org/~cabal/cabal-install-3.9.0.0/cabal-install-3.9-x86_64-darwin.tar.xz
@@ -210,7 +210,7 @@ ghcupDownloads:
dlUri: https://downloads.haskell.org/~ghc/9.4.1-alpha2/ghc-9.4.0.20220523-src.tar.xz
dlSubdir: ghc-9.4.0.20220523
dlHash: 3bcac9a2043bbc99cd8113547d92fdcad7d7bb4c286a9222ccbcbd4b4a26b635
viPostRemove: *ghc-post-remove
viPostRemove: &ghc-post-remove "After removing GHC you might also want to clean up your cabal store at: ~/.cabal/store/ghc-<ghcver>"
viArch:
A_64:
Linux_Debian:
@@ -549,11 +549,11 @@ ghcupDownloads:
viArch:
A_32:
Linux_Debian:
<10: &ghc-961alpha2-32-deb9
<10: &ghc-961alpha2-64-deb9
dlHash: e2f3e622f1aecfe0b6a305d0fb997e83453ecbc2949cb2b393549e35f2b062e1
dlSubdir: ghc-9.6.0.20230128-i386-unknown-linux
dlUri: https://downloads.haskell.org/~ghc/9.6.0.20230128/ghc-9.6.0.20230128-i386-deb9-linux.tar.xz
unknown_versioning: *ghc-961alpha2-32-deb9
unknown_versioning: *ghc-961alpha2-64-deb9
A_64:
Darwin:
unknown_versioning:
@@ -1290,7 +1290,7 @@ ghcupDownloads:
dlSubdir: ghc-9.8.0.20230919
dlUri: https://downloads.haskell.org/~ghc/9.8.0.20230919/ghc-9.8.0.20230919-src.tar.xz
viTags:
- Prerelease
- LatestPrerelease
- base-4.19.0.0
viTestDL:
dlHash: a586567b51ce856d15cc4bdde2316aa0aaf7381d80896d2fdcc4f13757b303e6
@@ -1298,121 +1298,6 @@ ghcupDownloads:
dlSubdir: ghc-9.8.0.20230919
dlUri: https://downloads.haskell.org/~ghc/9.8.0.20230919/ghc-9.8.0.20230919-src.tar.xz
9.8.0.20230929:
viArch:
A_32:
Linux_Debian:
unknown_versioning: &ghc-981rc1-i386-deb10
dlHash: 972ecaadafff7d4a65fa5c328d4f9b5210001c75534f3ba123fe51039643ab09
dlOutput: ghc-9.8.0.20230929-i386-linux-deb10.tar.xz
dlSubdir: ghc-9.8.0.20230929-i386-unknown-linux
dlUri: https://downloads.haskell.org/~ghc/9.8.0.20230929/ghc-9.8.0.20230929-i386-deb10-linux.tar.xz
Linux_Mint:
unknown_versioning: *ghc-981rc1-i386-deb10
Linux_Ubuntu:
unknown_versioning: *ghc-981rc1-i386-deb10
Linux_UnknownLinux:
unknown_versioning: *ghc-981rc1-i386-deb10
A_64:
Darwin:
unknown_versioning:
dlHash: 95ff4a6fe3202e14311bfd22b2ef166d47e8cc8a848cf9cfd5d66734e4dac919
dlOutput: ghc-9.8.0.20230929-x86_64-darwin.tar.xz
dlSubdir: ghc-9.8.0.20230929-x86_64-apple-darwin
dlUri: https://downloads.haskell.org/~ghc/9.8.0.20230929/ghc-9.8.0.20230929-x86_64-apple-darwin.tar.xz
Linux_Alpine:
unknown_versioning:
dlHash: 4f73dbe0967d831252744d59a238d4a49aa474ea04b4cc8683fe06847f6b071d
dlOutput: ghc-9.8.0.20230929-x86_64-linux-alpine3_12.tar.xz
dlSubdir: ghc-9.8.0.20230929-x86_64-unknown-linux
dlUri: https://downloads.haskell.org/~ghc/9.8.0.20230929/ghc-9.8.0.20230929-x86_64-alpine3_12-linux.tar.xz
Linux_CentOS:
( >= 7 && < 8 ): &ghc-981rc1-x86_64-centos7
dlHash: ca3526b013b9889f4b43074dcdb0cc213facb55db9f0e6de9c2365bb0365b664
dlOutput: ghc-9.8.0.20230929-x86_64-linux-centos7.tar.xz
dlSubdir: ghc-9.8.0.20230929-x86_64-unknown-linux
dlUri: https://downloads.haskell.org/~ghc/9.8.0.20230929/ghc-9.8.0.20230929-x86_64-centos7-linux.tar.xz
unknown_versioning: *ghc-981rc1-x86_64-centos7
Linux_Debian:
(>= 10 && < 11):
dlHash: abd39667c4227614c3f2c6a58a911837eb08f2664ca8dcc06389f6e2fe88d576
dlOutput: ghc-9.8.0.20230929-x86_64-linux-deb10.tar.xz
dlSubdir: ghc-9.8.0.20230929-x86_64-unknown-linux
dlUri: https://downloads.haskell.org/~ghc/9.8.0.20230929/ghc-9.8.0.20230929-x86_64-deb10-linux.tar.xz
< 10:
dlHash: 9d5c85c58b4f35125c6ff62974e935d035ff42ef7e4bb366007982127f9b4312
dlOutput: ghc-9.8.0.20230929-x86_64-linux-deb9.tar.xz
dlSubdir: ghc-9.8.0.20230929-x86_64-unknown-linux
dlUri: https://downloads.haskell.org/~ghc/9.8.0.20230929/ghc-9.8.0.20230929-x86_64-deb9-linux.tar.xz
'>= 11': &ghc-981rc1-x86_64-deb11
dlHash: 4be779e74afb510de27f7d9ed3b2a63044e678d2bdf8356a42f2232dcd4bc332
dlOutput: ghc-9.8.0.20230929-x86_64-linux-deb11.tar.xz
dlSubdir: ghc-9.8.0.20230929-x86_64-unknown-linux
dlUri: https://downloads.haskell.org/~ghc/9.8.0.20230929/ghc-9.8.0.20230929-x86_64-deb11-linux.tar.xz
unknown_versioning: *ghc-981rc1-x86_64-deb11
Linux_Fedora:
'>= 33':
dlHash: a85cfaee4b3d3a9900282a01f473e5520e31c405cd3319a30a8ab06321cd90e0
dlOutput: ghc-9.8.0.20230929-x86_64-linux-fedora33.tar.xz
dlSubdir: ghc-9.8.0.20230929-x86_64-unknown-linux
dlUri: https://downloads.haskell.org/~ghc/9.8.0.20230929/ghc-9.8.0.20230929-x86_64-fedora33-linux.tar.xz
unknown_versioning: *ghc-981rc1-x86_64-centos7
Linux_Mint:
< 20: &ghc-981rc1-x86_64-ubuntu18_04
dlHash: d07a57858490dfa5ed1299939eacf068f52603b4ab55a5cc68b3fe19b0bb81da
dlOutput: ghc-9.8.0.20230929-x86_64-linux-ubuntu18_04.tar.xz
dlSubdir: ghc-9.8.0.20230929-x86_64-unknown-linux
dlUri: https://downloads.haskell.org/~ghc/9.8.0.20230929/ghc-9.8.0.20230929-x86_64-ubuntu18_04-linux.tar.xz
'>= 20': &ghc-981rc1-x86_64-ubuntu20_04
dlHash: 433e70733015c64fd967ee2f6c93ac519a0a72455463dac76030a8b2aa54c021
dlOutput: ghc-9.8.0.20230929-x86_64-linux-ubuntu20_04.tar.xz
dlSubdir: ghc-9.8.0.20230929-x86_64-unknown-linux
dlUri: https://downloads.haskell.org/~ghc/9.8.0.20230929/ghc-9.8.0.20230929-x86_64-ubuntu20_04-linux.tar.xz
Linux_RedHat:
unknown_versioning: *ghc-981rc1-x86_64-centos7
Linux_Ubuntu:
( >= 16 && < 19 ): *ghc-981rc1-x86_64-ubuntu18_04
unknown_versioning: *ghc-981rc1-x86_64-ubuntu20_04
Linux_UnknownLinux:
unknown_versioning:
dlHash: aaaeb2c1a0bc111676b240bb171e622532cafab2b8d9fb98da181d8df799cf32
dlOutput: ghc-9.8.0.20230929-x86_64-linux-rocky8.tar.xz
dlSubdir: ghc-9.8.0.20230929-x86_64-unknown-linux
dlUri: https://downloads.haskell.org/~ghc/9.8.0.20230929/ghc-9.8.0.20230929-x86_64-rocky8-linux.tar.xz
Windows:
unknown_versioning:
dlHash: 89960b8e52b21c455369025a6ba9f7445ad763cd8ea924771ef65052d3b0caf6
dlOutput: ghc-9.8.0.20230929-x86_64-windows.tar.xz
dlSubdir: ghc-9.8.0.20230929-x86_64-unknown-mingw32
dlUri: https://downloads.haskell.org/~ghc/9.8.0.20230929/ghc-9.8.0.20230929-x86_64-unknown-mingw32.tar.xz
A_ARM64:
Darwin:
unknown_versioning:
dlHash: 62f66aa167ff08e862549750511fe4c7a1b789ac82a1203e5154ddaa62e0a0e6
dlOutput: ghc-9.8.0.20230929-aarch64-darwin.tar.xz
dlSubdir: ghc-9.8.0.20230929-aarch64-apple-darwin
dlUri: https://downloads.haskell.org/~ghc/9.8.0.20230929/ghc-9.8.0.20230929-aarch64-apple-darwin.tar.xz
Linux_UnknownLinux:
unknown_versioning:
dlHash: cf212fc580fd881dbf80c8a2d7df355cc8728c94b8bab2217a3257247d4b459a
dlOutput: ghc-9.8.0.20230929-aarch64-linux-deb10.tar.xz
dlSubdir: ghc-9.8.0.20230929-aarch64-unknown-linux
dlUri: https://downloads.haskell.org/~ghc/9.8.0.20230929/ghc-9.8.0.20230929-aarch64-deb10-linux.tar.xz
viChangeLog: https://downloads.haskell.org/~ghc/9.8.0.20230929/docs/users_guide/9.8.1-notes.html
viReleaseDay: '2023-09-29'
viSourceDL:
dlHash: 93bda13ca9e612210147210c23c2d565b9a4cfafa0f4d8a033ec533a8d07fd4b
dlOutput: ghc-9.8.0.20230929-src.tar.xz
dlSubdir: ghc-9.8.0.20230929
dlUri: https://downloads.haskell.org/~ghc/9.8.0.20230929/ghc-9.8.0.20230929-src.tar.xz
viTags:
- LatestPrerelease
- base-4.19.0.0
viTestDL:
dlHash: b0afd2912ba91914519739907ede6008857871668a138829410d72948c3c359e
dlOutput: ghc-9.8.0.20230929-testsuite.tar.xz
dlSubdir: ghc-9.8.0.20230929
dlUri: https://downloads.haskell.org/~ghc/9.8.0.20230929/ghc-9.8.0.20230929-src.tar.xz
Stack:
2.9.2.1:
@@ -1490,8 +1375,7 @@ ghcupDownloads:
RegexDir: "stack-.*"
2.13.0.1:
viTags:
- Prerelease
- old
- LatestPrerelease
viChangeLog: https://github.com/commercialhaskell/stack/blob/rc/v2.13/ChangeLog.md#v21301-release-candidate
viArch:
A_64:
@@ -1528,42 +1412,55 @@ ghcupDownloads:
dlHash: 9c3b957c7c8b1c5c09e0251907372563b48d5869c31e35be43916736f679535d
dlSubdir:
RegexDir: "stack-.*"
2.15.0.1:
GHCup:
0.1.19.5:
viTags:
- LatestPrerelease
viChangeLog: https://github.com/commercialhaskell/stack/blob/rc/v2.15/ChangeLog.md#v21501-release-candidate---2024-01-27
- Latest
- Recommended
viChangeLog: https://github.com/haskell/ghcup-hs/blob/master/CHANGELOG.md
viSourceDL:
dlUri: https://downloads.haskell.org/~ghcup/0.1.19.5/ghcup-0.1.19.5-src.tar.gz
dlSubdir: ghcup-0.1.19.5
dlHash: abfb1f18201c77bcebae6a0282844df2cc644427270a8df9af341901211f7b9c
viArch:
A_64:
Linux_UnknownLinux:
unknown_versioning: &stack-21501-64
dlUri: https://github.com/commercialhaskell/stack/releases/download/rc/v2.15.0.1/stack-2.15.0.1-linux-x86_64.tar.gz
dlHash: f59b41418b2c12f1ac643b1c8c8caa9e4936d2c5a35593e67d7243d97a1de948
dlSubdir:
RegexDir: "stack-.*"
unknown_versioning: &ghcup-64
dlUri: https://downloads.haskell.org/~ghcup/0.1.19.5/x86_64-linux-ghcup-0.1.19.5
dlHash: 2d07c7c64d9eb472d85210c27c4489931804fd753a99724d1df740dbf1bfc5a5
Darwin:
unknown_versioning:
dlUri: https://github.com/commercialhaskell/stack/releases/download/rc/v2.15.0.1/stack-2.15.0.1-osx-x86_64.tar.gz
dlHash: 7cbdb14060f19eefeff56d7d4887db0a1c5ade6bcd1d05abff5e5d819e4945f0
dlSubdir:
RegexDir: "stack-.*"
dlUri: https://downloads.haskell.org/~ghcup/0.1.19.5/x86_64-apple-darwin-ghcup-0.1.19.5
dlHash: bde41f049e795e086c1ee27a4ae0629285c56bdf041f039e798f77481a133202
FreeBSD:
unknown_versioning:
dlUri: https://downloads.haskell.org/~ghcup/0.1.19.5/x86_64-portbld-freebsd-ghcup-0.1.19.5
dlHash: 6b743f440f6bf9e4525acec2bd360d8a07af06925a74d0d960b9fe7c8c90b176
Windows:
unknown_versioning:
dlUri: https://github.com/commercialhaskell/stack/releases/download/rc/v2.15.0.1/stack-2.15.0.1-windows-x86_64.tar.gz
dlHash: f23f45c47228f98df47da4613df87f2ee5b55edcf4e466a1d7b3aced2161a7d0
dlSubdir:
RegexDir: "stack-.*"
dlUri: https://downloads.haskell.org/~ghcup/0.1.19.5/x86_64-mingw64-ghcup-0.1.19.5.exe
dlHash: 085fc717bcea786034133c5028e5c3e5d46da341787bb267482996e97d076c88
Linux_Alpine:
unknown_versioning: *stack-21501-64
unknown_versioning: *ghcup-64
A_32:
Linux_UnknownLinux:
unknown_versioning: &ghcup-32
dlUri: https://downloads.haskell.org/~ghcup/0.1.19.5/i386-linux-ghcup-0.1.19.5
dlHash: 9bb0870ae4b4fd0d4d18982f4aa88749018aed81479e51070478f699ed9a85e0
Linux_Alpine:
unknown_versioning: *ghcup-32
A_ARM64:
Linux_UnknownLinux:
unknown_versioning:
dlUri: https://github.com/commercialhaskell/stack/releases/download/rc/v2.15.0.1/stack-2.15.0.1-linux-aarch64.tar.gz
dlHash: 087b9b02e318ba28cbbd13b512da0758e2522016e260e2b2a3d076148225972e
dlSubdir:
RegexDir: "stack-.*"
dlUri: https://downloads.haskell.org/~ghcup/0.1.19.5/aarch64-linux-ghcup-0.1.19.5
dlHash: cea78d9189be6fd62519c9d450654e7dd4e0923a7834c38b0539ba9264c6762e
Darwin:
unknown_versioning:
dlUri: https://github.com/commercialhaskell/stack/releases/download/rc/v2.15.0.1/stack-2.15.0.1-osx-aarch64.tar.gz
dlHash: 2c5fb2efcf646287aa91d3a1d6f8d08129734bc3e0c50d6756aba81b9309d7c1
dlSubdir:
RegexDir: "stack-.*"
dlUri: https://downloads.haskell.org/~ghcup/0.1.19.5/aarch64-apple-darwin-ghcup-0.1.19.5
dlHash: 4dafad0be3314372e2d312ee4ff3999060826ed1b53678dc2fb8715ee4bb4c53
A_ARM:
Linux_UnknownLinux:
unknown_versioning:
dlUri: https://downloads.haskell.org/~ghcup/0.1.19.5/armv7-linux-ghcup-0.1.19.5
dlHash: 46147824b921b61e3161e03c638a8ff684667ea1d877df0e06721c4b2149cd5f

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.

View File

@@ -1343,255 +1343,5 @@
"9.6.3"
]
}
},
"2.4.0.0": {
"A_64": {
"Darwin": [
"9.0.2",
"9.2.8",
"9.4.7",
"9.6.3",
"9.8.1"
],
"FreeBSD": [
"8.10.7",
"9.0.2",
"9.2.5",
"9.2.7"
],
"Linux_CentOS": [
"9.0.2",
"9.2.8",
"9.4.7",
"9.6.3",
"9.8.1"
],
"Linux_Debian": [
"9.0.2",
"9.2.8",
"9.4.7",
"9.6.3",
"9.8.1"
],
"Linux_Fedora": [
"9.0.2",
"9.2.8",
"9.4.7",
"9.6.3",
"9.8.1"
],
"Linux_Mint": [
"9.0.2",
"9.2.8",
"9.4.7",
"9.6.3",
"9.8.1"
],
"Linux_RedHat": [
"9.0.2",
"9.2.8",
"9.4.7",
"9.6.3",
"9.8.1"
],
"Linux_Ubuntu": [
"9.0.2",
"9.2.8",
"9.4.7",
"9.6.3",
"9.8.1"
],
"Linux_UnknownLinux": [
"9.0.2",
"9.2.8",
"9.4.7",
"9.6.3",
"9.8.1"
],
"Windows": [
"9.0.2",
"9.2.8",
"9.4.7",
"9.6.3",
"9.8.1"
]
},
"A_ARM64": {
"Darwin": [
"9.2.8",
"9.4.7",
"9.6.3",
"9.8.1"
],
"Linux_UnknownLinux": [
"9.0.2",
"9.2.8",
"9.4.7",
"9.6.3",
"9.8.1"
]
}
},
"2.5.0.0": {
"A_64": {
"Darwin": [
"9.2.8",
"9.4.8",
"9.6.3",
"9.8.1"
],
"FreeBSD": [
"9.2.8",
"9.4.8",
"9.6.3",
"9.8.1"
],
"Linux_CentOS": [
"9.2.8",
"9.4.8",
"9.6.3",
"9.8.1"
],
"Linux_Debian": [
"9.2.8",
"9.4.8",
"9.6.3",
"9.8.1"
],
"Linux_Fedora": [
"9.2.8",
"9.4.8",
"9.6.3",
"9.8.1"
],
"Linux_Mint": [
"9.2.8",
"9.4.8",
"9.6.3",
"9.8.1"
],
"Linux_RedHat": [
"9.2.8",
"9.4.8",
"9.6.3",
"9.8.1"
],
"Linux_Ubuntu": [
"9.2.8",
"9.4.8",
"9.6.3",
"9.8.1"
],
"Linux_UnknownLinux": [
"9.2.8",
"9.4.8",
"9.6.3",
"9.8.1"
],
"Windows": [
"9.2.8",
"9.4.8",
"9.6.3",
"9.8.1"
]
},
"A_ARM64": {
"Darwin": [
"9.2.8",
"9.4.8",
"9.6.3",
"9.8.1"
],
"Linux_UnknownLinux": [
"9.2.8",
"9.4.8",
"9.6.3",
"9.8.1"
]
}
},
"2.6.0.0": {
"A_64": {
"Darwin": [
"9.2.8",
"9.4.8",
"9.6.4",
"9.8.1"
],
"FreeBSD": [
"9.2.8",
"9.4.8",
"9.6.4",
"9.8.1"
],
"Linux_Alpine": [
"9.2.8",
"9.4.8",
"9.6.4",
"9.8.1"
],
"Linux_CentOS": [
"9.2.8",
"9.4.8",
"9.6.4",
"9.8.1"
],
"Linux_Debian": [
"9.2.8",
"9.4.8",
"9.6.4",
"9.8.1"
],
"Linux_Fedora": [
"9.2.8",
"9.4.8",
"9.6.4",
"9.8.1"
],
"Linux_Mint": [
"9.2.8",
"9.4.8",
"9.6.4",
"9.8.1"
],
"Linux_RedHat": [
"9.2.8",
"9.4.8",
"9.6.4",
"9.8.1"
],
"Linux_Ubuntu": [
"9.2.8",
"9.4.8",
"9.6.4",
"9.8.1"
],
"Linux_UnknownLinux": [
"9.2.8",
"9.4.8",
"9.6.4",
"9.8.1"
],
"Windows": [
"9.2.8",
"9.4.8",
"9.6.4",
"9.8.1"
]
},
"A_ARM64": {
"Darwin": [
"9.2.8",
"9.4.8",
"9.6.4",
"9.8.1"
],
"Linux_UnknownLinux": [
"9.2.8",
"9.4.8",
"9.6.4",
"9.8.1"
]
}
}
}

Binary file not shown.

View File

@@ -1,105 +0,0 @@
#!/bin/bash
set -eu
set -o pipefail
RELEASE=$1
VERSION=${RELEASE#cabal-install-v}
cd "gh-release-artifacts/cabal-${VERSION}"
cat <<EOF > /dev/stdout
$VERSION:
viTags:
- Latest
viChangeLog: https://github.com/haskell/cabal/blob/master/release-notes/cabal-install-$VERSION.md
viArch:
A_64:
Linux_Debian:
'< 10': &cabal-${VERSION//./}-64-deb9
dlUri: https://downloads.haskell.org/~ghcup/unofficial-bindists/cabal/$VERSION/cabal-install-$VERSION-x86_64-linux-deb9.tar.xz
dlHash: $(sha256sum "cabal-install-$VERSION-x86_64-linux-deb9.tar.xz" | awk '{ print $1 }')
'(>= 10 && < 11)': &cabal-${VERSION//./}-64-deb10
dlUri: https://downloads.haskell.org/~ghcup/unofficial-bindists/cabal/$VERSION/cabal-install-$VERSION-x86_64-linux-deb10.tar.xz
dlHash: $(sha256sum "cabal-install-$VERSION-x86_64-linux-deb10.tar.xz" | awk '{ print $1 }')
unknown_versioning: &cabal-${VERSION//./}-64-deb11
dlUri: https://downloads.haskell.org/~ghcup/unofficial-bindists/cabal/$VERSION/cabal-install-$VERSION-x86_64-linux-deb11.tar.xz
dlHash: $(sha256sum "cabal-install-$VERSION-x86_64-linux-deb11.tar.xz" | awk '{ print $1 }')
Linux_Ubuntu:
'( >= 16 && < 19 )': &cabal-${VERSION//./}-64-ubuntu18
dlUri: https://downloads.haskell.org/~ghcup/unofficial-bindists/cabal/$VERSION/cabal-install-$VERSION-x86_64-linux-ubuntu18.04.tar.xz
dlHash: $(sha256sum "cabal-install-$VERSION-x86_64-linux-ubuntu18.04.tar.xz" | awk '{ print $1 }')
'( >= 20 && < 22 )': &cabal-${VERSION//./}-64-ubuntu20
dlUri: https://downloads.haskell.org/~ghcup/unofficial-bindists/cabal/$VERSION/cabal-install-$VERSION-x86_64-linux-ubuntu20.04.tar.xz
dlHash: $(sha256sum "cabal-install-$VERSION-x86_64-linux-ubuntu20.04.tar.xz" | awk '{ print $1 }')
unknown_versioning: &cabal-${VERSION//./}-64-ubuntu22
dlUri: https://downloads.haskell.org/~ghcup/unofficial-bindists/cabal/$VERSION/cabal-install-$VERSION-x86_64-linux-ubuntu22.04.tar.xz
dlHash: $(sha256sum "cabal-install-$VERSION-x86_64-linux-ubuntu22.04.tar.xz" | awk '{ print $1 }')
Linux_Mint:
'< 20':
dlUri: https://downloads.haskell.org/~ghcup/unofficial-bindists/cabal/$VERSION/cabal-install-$VERSION-x86_64-linux-mint19.3.tar.xz
dlHash: $(sha256sum "cabal-install-$VERSION-x86_64-linux-mint19.3.tar.xz" | awk '{ print $1 }')
'(>= 20 && < 21)':
dlUri: https://downloads.haskell.org/~ghcup/unofficial-bindists/cabal/$VERSION/cabal-install-$VERSION-x86_64-linux-mint20.2.tar.xz
dlHash: $(sha256sum "cabal-install-$VERSION-x86_64-linux-mint20.2.tar.xz" | awk '{ print $1 }')
'>= 21': *cabal-${VERSION//./}-64-ubuntu22
Linux_Fedora:
'< 33': &cabal-${VERSION//./}-64-fedora27
dlUri: https://downloads.haskell.org/~ghcup/unofficial-bindists/cabal/$VERSION/cabal-install-$VERSION-x86_64-linux-fedora27.tar.xz
dlHash: $(sha256sum "cabal-install-$VERSION-x86_64-linux-fedora27.tar.xz" | awk '{ print $1 }')
'>= 33': &cabal-${VERSION//./}-64-fedora33
dlUri: https://downloads.haskell.org/~ghcup/unofficial-bindists/cabal/$VERSION/cabal-install-$VERSION-x86_64-linux-fedora33.tar.xz
dlHash: $(sha256sum "cabal-install-$VERSION-x86_64-linux-fedora33.tar.xz" | awk '{ print $1 }')
unknown_versioning: *cabal-${VERSION//./}-64-fedora27
Linux_CentOS:
'( >= 7 && < 8 )': &cabal-${VERSION//./}-64-centos
dlUri: https://downloads.haskell.org/~ghcup/unofficial-bindists/cabal/$VERSION/cabal-install-$VERSION-x86_64-linux-centos7.tar.xz
dlHash: $(sha256sum "cabal-install-$VERSION-x86_64-linux-centos7.tar.xz" | awk '{ print $1 }')
unknown_versioning: *cabal-${VERSION//./}-64-centos
Linux_RedHat:
unknown_versioning: *cabal-${VERSION//./}-64-centos
Linux_UnknownLinux:
unknown_versioning: &cabal-${VERSION//./}-64-unknown
dlUri: https://downloads.haskell.org/~ghcup/unofficial-bindists/cabal/$VERSION/cabal-install-$VERSION-x86_64-linux-unknown.tar.xz
dlHash: $(sha256sum "cabal-install-$VERSION-x86_64-linux-unknown.tar.xz" | awk '{ print $1 }')
Linux_Rocky:
unknown_versioning:
dlUri: https://downloads.haskell.org/~ghcup/unofficial-bindists/cabal/$VERSION/cabal-install-$VERSION-x86_64-linux-rocky8.tar.xz
dlHash: $(sha256sum "cabal-install-$VERSION-x86_64-linux-rocky8.tar.xz" | awk '{ print $1 }')
Linux_Alpine:
unknown_versioning: *cabal-${VERSION//./}-64-unknown
Darwin:
unknown_versioning:
dlUri: https://downloads.haskell.org/~ghcup/unofficial-bindists/cabal/$VERSION/cabal-install-$VERSION-x86_64-apple-darwin.tar.xz
dlHash: $(sha256sum "cabal-install-$VERSION-x86_64-apple-darwin.tar.xz" | awk '{ print $1 }')
Windows:
unknown_versioning:
dlUri: https://downloads.haskell.org/~ghcup/unofficial-bindists/cabal/$VERSION/cabal-install-$VERSION-x86_64-mingw64.zip
dlHash: $(sha256sum "cabal-install-$VERSION-x86_64-mingw64.zip" | awk '{ print $1 }')
FreeBSD:
unknown_versioning:
dlUri: https://downloads.haskell.org/~ghcup/unofficial-bindists/cabal/$VERSION/cabal-install-$VERSION-x86_64-portbld-freebsd.tar.xz
dlHash: $(sha256sum "cabal-install-$VERSION-x86_64-portbld-freebsd.tar.xz" | awk '{ print $1 }')
A_32:
Linux_UnknownLinux:
unknown_versioning: &cabal-${VERSION//./}-32-unknown
dlUri: https://downloads.haskell.org/~ghcup/unofficial-bindists/cabal/$VERSION/cabal-install-$VERSION-i386-linux-unknown.tar.xz
dlHash: $(sha256sum "cabal-install-$VERSION-i386-linux-unknown.tar.xz" | awk '{ print $1 }')
Linux_Alpine:
unknown_versioning: *cabal-${VERSION//./}-32-unknown
A_ARM64:
Linux_UnknownLinux:
unknown_versioning:
dlUri: https://downloads.haskell.org/~ghcup/unofficial-bindists/cabal/$VERSION/cabal-install-$VERSION-aarch64-linux-deb10.tar.xz
dlHash: $(sha256sum "cabal-install-$VERSION-aarch64-linux-deb10.tar.xz" | awk '{ print $1 }')
Darwin:
unknown_versioning:
dlUri: https://downloads.haskell.org/~ghcup/unofficial-bindists/cabal/$VERSION/cabal-install-$VERSION-aarch64-apple-darwin.tar.xz
dlHash: $(sha256sum "cabal-install-$VERSION-aarch64-apple-darwin.tar.xz" | awk '{ print $1 }')
A_ARM:
Linux_UnknownLinux:
unknown_versioning:
dlUri: https://downloads.haskell.org/~ghcup/unofficial-bindists/cabal/$VERSION/cabal-install-$VERSION-armv7-linux-deb10.tar.xz
dlHash: $(sha256sum "cabal-install-$VERSION-armv7-linux-deb10.tar.xz" | awk '{ print $1 }')
EOF

View File

@@ -1,35 +0,0 @@
#!/bin/bash
set -eu
set -o pipefail
RELEASE=$1
VERSION=${RELEASE#cabal-install-v}
SIGNER=$2
echo "RELEASE: $RELEASE"
echo "SIGNER: $SIGNER"
for com in gh gpg curl sha256sum ; do
command -V ${com} >/dev/null 2>&1
done
[ ! -e "gh-release-artifacts/cabal-${VERSION}" ]
mkdir -p "gh-release-artifacts/cabal-${VERSION}"
cd "gh-release-artifacts/cabal-${VERSION}"
# github
gh release download "$RELEASE"
# cirrus
curl --fail -L -o "cabal-install-${VERSION}-x86_64-portbld-freebsd.tar.xz" \
"https://api.cirrus-ci.com/v1/artifact/github/haskell/ghcup-metadata/build/binaries/out/cabal-install-${VERSION}-x86_64-portbld-freebsd.tar.xz?branch=develop"
sha256sum ./* > SHA256SUMS
gpg --detach-sign -u "${SIGNER}" SHA256SUMS
gh release upload "$RELEASE" "cabal-install-${VERSION}-x86_64-portbld-freebsd.tar.xz" SHA256SUMS SHA256SUMS.sig