Upgrade to GHC 9.10 (#33)

This commit is contained in:
Taylor Fausak
2024-05-18 13:09:22 -05:00
committed by GitHub
parent 7dd919e934
commit f0befa6100
12 changed files with 150 additions and 334 deletions

View File

@@ -1,21 +0,0 @@
{
"services": {
"devcontainer": {
"command": "sh -exc 'sleep infinity'",
"image": "public.ecr.aws/acilearning/haskell:9.6.2",
"init": true,
"volumes": [
"..:/workspace",
"cabal-cache:/home/vscode/.cache/cabal",
"cabal-state:/home/vscode/.local/state/cabal"
],
"working_dir": "/workspace"
}
},
"volumes": {
"cabal-cache": null,
"cabal-state": {
"external": true
}
}
}

View File

@@ -1,14 +0,0 @@
{
"customizations": {
"vscode": {
"extensions": [
"taylorfausak.purple-yolk"
]
}
},
"dockerComposeFile": "compose.yaml",
"initializeCommand": "docker volume create cabal-state",
"postCreateCommand": "cabal update",
"service": "devcontainer",
"workspaceFolder": "/workspace"
}

View File

@@ -1,12 +0,0 @@
{
"updates": [
{
"directory": "/",
"package-ecosystem": "github-actions",
"schedule": {
"interval": "weekly"
}
}
],
"version": 2
}

6
.github/dependabot.yml vendored Normal file
View File

@@ -0,0 +1,6 @@
updates:
- directory: /
package-ecosystem: github-actions
schedule:
interval: weekly
version: 2

113
.github/workflows/ci.yml vendored Normal file
View File

@@ -0,0 +1,113 @@
jobs:
build:
name: GHC ${{ matrix.ghc }} on ${{ matrix.os }}
runs-on: ${{ matrix.os }}
steps:
- uses: actions/checkout@v4
- run: mkdir artifact
- id: haskell
uses: haskell-actions/setup@v2
with:
ghc-version: ${{ matrix.ghc }}
- run: ghc-pkg list
- run: cabal sdist --output-dir artifact
- run: cabal configure --enable-optimization=2 --flags=pedantic --jobs
- run: cat cabal.project.local
- run: cp cabal.project.local artifact
- run: cabal freeze
- run: cat cabal.project.freeze
- run: cp cabal.project.freeze artifact
- run: cabal outdated --v2-freeze-file
- uses: actions/cache@v4
with:
key: ${{ matrix.os }}-${{ matrix.ghc }}-${{ hashFiles('cabal.project.freeze') }}
path: ${{ steps.haskell.outputs.cabal-store }}
restore-keys: ${{ matrix.os }}-${{ matrix.ghc }}-
- run: cabal build --only-download
- run: cabal build --only-dependencies
- run: cabal build
- run: cp $( cabal list-bin github-release ) artifact
- run: tar --create --file artifact.tar --verbose artifact
- uses: actions/upload-artifact@v4
with:
name: github-release-${{ github.sha }}-ghc-${{ matrix.ghc }}-${{ matrix.os }}
path: artifact.tar
strategy:
matrix:
include:
- ghc: '9.10'
os: macos-13
- ghc: '9.10'
os: macos-14
- ghc: 9.6
os: ubuntu-22.04
- ghc: 9.8
os: ubuntu-22.04
- ghc: '9.10'
os: ubuntu-22.04
- ghc: '9.10'
os: windows-2022
cabal:
name: Cabal
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- run: cabal check
hlint:
name: HLint
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: haskell-actions/hlint-setup@9e09cc3653fc13702000a35f638a27b064adfbbe
- uses: haskell-actions/hlint-run@v2
with:
fail-on: status
gild:
name: Gild
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: tfausak/cabal-gild-setup-action@v2
- run: cabal-gild --input github-release.cabal --mode check
ormolu:
name: Ormolu
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: haskell-actions/run-ormolu@v15
release:
env:
PREFIX: github-release-${{ github.event.release.tag_name }}
if: ${{ github.event_name == 'release' }}
name: Release
needs: build
runs-on: ubuntu-latest
steps:
- uses: actions/download-artifact@v4
- run: sh -exc 'for d in *; do cd $d; tar --extract --file artifact.tar --verbose; cd ..; done'
- run: cp github-release-${{ github.sha }}-ghc-9.10-ubuntu-22.04/artifact/${{ env.PREFIX }}.tar.gz .
- run: tar --auto-compress --create --file ../../${{ env.PREFIX }}-darwin-x64.tar.gz --verbose github-release
working-directory: github-release-${{ github.sha }}-ghc-9.10-macos-13/artifact
- run: tar --auto-compress --create --file ../../${{ env.PREFIX }}-darwin-arm64.tar.gz --verbose github-release
working-directory: github-release-${{ github.sha }}-ghc-9.10-macos-14/artifact
- run: tar --auto-compress --create --file ../../${{ env.PREFIX }}-linux-x64.tar.gz --verbose github-release
working-directory: github-release-${{ github.sha }}-ghc-9.10-ubuntu-22.04/artifact
- run: tar --auto-compress --create --file ../../${{ env.PREFIX }}-win32-x64.tar.gz --verbose github-release.exe
working-directory: github-release-${{ github.sha }}-ghc-9.10-windows-2022/artifact
- uses: softprops/action-gh-release@v2
with:
files: ${{ env.PREFIX }}*.tar.gz
- run: cabal upload --publish --username '${{ secrets.HACKAGE_USERNAME }}' --password '${{ secrets.HACKAGE_PASSWORD }}' ${{ env.PREFIX }}.tar.gz
name: CI
on:
pull_request:
branches:
- main
push:
branches:
- main
release:
types:
- created
schedule:
- cron: 0 0 * * 1

View File

@@ -1,230 +0,0 @@
{
"jobs": {
"build": {
"name": "Build on ${{ matrix.platform }} with GHC ${{ matrix.ghc }}",
"runs-on": "${{ matrix.platform }}-${{ matrix.version }}",
"steps": [
{
"uses": "actions/checkout@v4"
},
{
"run": "mkdir artifact"
},
{
"id": "artifact",
"run": "echo 'directory=artifact/${{ matrix.platform }}-${{ matrix.ghc }}' >> $GITHUB_OUTPUT",
"shell": "bash"
},
{
"run": "mkdir ${{ steps.artifact.outputs.directory }}"
},
{
"id": "haskell",
"uses": "haskell-actions/setup@v2",
"with": {
"cabal-version": "3.10.2.1",
"ghc-version": "${{ matrix.ghc }}"
}
},
{
"run": "cabal sdist --output-dir ${{ steps.artifact.outputs.directory }}"
},
{
"run": "cabal configure --enable-optimization=2 --flags pedantic --jobs"
},
{
"run": "cat cabal.project.local"
},
{
"run": "cp cabal.project.local ${{ steps.artifact.outputs.directory }}"
},
{
"run": "cabal freeze"
},
{
"run": "cat cabal.project.freeze"
},
{
"run": "cp cabal.project.freeze ${{ steps.artifact.outputs.directory }}"
},
{
"run": "cabal outdated --v2-freeze-file cabal.project.freeze"
},
{
"uses": "actions/cache@v3",
"with": {
"key": "${{ matrix.platform }}-${{ matrix.ghc }}-${{ hashFiles('cabal.project.freeze') }}",
"path": "${{ steps.haskell.outputs.cabal-store }}",
"restore-keys": "${{ matrix.platform }}-${{ matrix.ghc }}-"
}
},
{
"run": "cabal build --only-download"
},
{
"run": "cabal build --only-dependencies"
},
{
"run": "cabal build"
},
{
"run": "cp \"$( cabal list-bin github-release )\" ${{ steps.artifact.outputs.directory }}"
},
{
"uses": "svenstaro/upx-action@v2",
"with": {
"files": "${{ steps.artifact.outputs.directory }}/github-release${{ matrix.extension }}"
}
},
{
"uses": "actions/upload-artifact@v3",
"with": {
"name": "github-release-${{ github.sha }}",
"path": "artifact"
}
}
],
"strategy": {
"matrix": {
"include": [
{
"ghc": "9.8.1",
"platform": "macos",
"version": "12"
},
{
"ghc": "9.4.8",
"platform": "ubuntu",
"version": "22.04"
},
{
"ghc": "9.6.4",
"platform": "ubuntu",
"version": "22.04"
},
{
"ghc": "9.8.1",
"platform": "ubuntu",
"version": "22.04"
},
{
"extension": ".exe",
"ghc": "9.8.1",
"platform": "windows",
"version": "2022"
}
]
}
}
},
"cabal": {
"name": "Cabal",
"runs-on": "ubuntu-22.04",
"steps": [
{
"uses": "actions/checkout@v4"
},
{
"run": "cabal check"
}
]
},
"hlint": {
"name": "HLint",
"runs-on": "ubuntu-22.04",
"steps": [
{
"uses": "actions/checkout@v4"
},
{
"uses": "haskell-actions/hlint-setup@v2",
"with": {
"version": 3.5
}
},
{
"uses": "haskell-actions/hlint-run@v2",
"with": {
"fail-on": "status"
}
}
]
},
"ormolu": {
"name": "Ormolu",
"runs-on": "ubuntu-22.04",
"steps": [
{
"uses": "actions/checkout@v4"
},
{
"uses": "haskell-actions/run-ormolu@v15"
}
]
},
"release": {
"if": "github.event_name == 'release'",
"name": "Release",
"needs": "build",
"runs-on": "ubuntu-22.04",
"steps": [
{
"uses": "actions/download-artifact@v3",
"with": {
"name": "github-release-${{ github.sha }}",
"path": "artifact"
}
},
{
"uses": "svenstaro/upload-release-action@v2",
"with": {
"asset_name": "github-release-${{ github.event.release.tag_name }}-ubuntu",
"file": "artifact/ubuntu-9.8.1/github-release",
"tag": "${{ github.event.release.tag_name }}"
}
},
{
"uses": "svenstaro/upload-release-action@v2",
"with": {
"asset_name": "github-release-${{ github.event.release.tag_name }}-macos",
"file": "artifact/macos-9.8.1/github-release",
"tag": "${{ github.event.release.tag_name }}"
}
},
{
"uses": "svenstaro/upload-release-action@v2",
"with": {
"asset_name": "github-release-${{ github.event.release.tag_name }}-windows.exe",
"file": "artifact/windows-9.8.1/github-release.exe",
"tag": "${{ github.event.release.tag_name }}"
}
},
{
"uses": "svenstaro/upload-release-action@v2",
"with": {
"asset_name": "github-release-${{ github.event.release.tag_name }}.tar.gz",
"file": "artifact/ubuntu-9.8.1/github-release-${{ github.event.release.tag_name }}.tar.gz",
"tag": "${{ github.event.release.tag_name }}"
}
},
{
"run": "cabal upload --publish --username '${{ secrets.HACKAGE_USERNAME }}' --password '${{ secrets.HACKAGE_PASSWORD }}' artifact/ubuntu-9.8.1/github-release-${{ github.event.release.tag_name }}.tar.gz"
}
]
}
},
"name": "Workflow",
"on": {
"push": null,
"release": {
"types": [
"created"
]
},
"schedule": [
{
"cron": "0 0 * * 1"
}
]
}
}

View File

@@ -1,24 +1,10 @@
[
{
"group": {
"enabled": true,
"name": "dollar"
}
},
{
"group": {
"enabled": true,
"name": "generalise"
}
},
{
"ignore": {
"name": "Use lambda-case"
}
},
{
"ignore": {
"name": "Use tuple-section"
}
}
]
- group:
enabled: true
name: dollar
- group:
enabled: true
name: generalise
- ignore:
name: Use lambda-case
- ignore:
name: Use tuple-section

View File

@@ -1,6 +1,6 @@
MIT License
Copyright (c) 2023 Taylor Fausak
Copyright (c) 2024 Taylor Fausak
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal

View File

@@ -1,8 +1,7 @@
# [GitHub Release][]
[![Workflow](https://github.com/tfausak/github-release/actions/workflows/workflow.yaml/badge.svg)](https://github.com/tfausak/github-release/actions/workflows/workflow.yaml)
[![Hackage](https://img.shields.io/hackage/v/github-release)](https://hackage.haskell.org/package/github-release)
[![Stackage](https://www.stackage.org/package/github-release/badge/nightly?label=stackage)](https://www.stackage.org/package/github-release)
[![CI](https://github.com/tfausak/github-release/actions/workflows/ci.yml/badge.svg)](https://github.com/tfausak/github-release/actions/workflows/ci.yml)
[![Hackage](https://badgen.net/hackage/v/github-release)](https://hackage.haskell.org/package/github-release)
GitHub Release is a command-line utility for uploading files to GitHub
releases.

View File

@@ -1,9 +1 @@
packages: .
allow-newer:
-- https://github.com/tfausak/burrito/pull/23
, burrito:base
, burrito:template-haskell
, burrito:text
, burrito:transformers
, optparse-generic:text

View File

@@ -1,15 +1,15 @@
cabal-version: 2.2
name: github-release
version: 2.0.0.10
synopsis: Upload files to GitHub releases.
description: GitHub Release uploads files to GitHub releases.
build-type: Simple
category: Utility
extra-source-files: CHANGELOG.markdown README.markdown
license-file: LICENSE.markdown
extra-doc-files:
CHANGELOG.md
README.md
license-file: LICENSE.txt
license: MIT
maintainer: Taylor Fausak
@@ -23,18 +23,7 @@ flag pedantic
manual: True
common library
build-depends:
, aeson >= 2.0.3 && < 2.3
, base >= 4.16.0 && < 4.20
, burrito >= 1.2.0 && < 1.3 || >= 2.0.0 && < 2.1
, bytestring >= 0.11.3 && < 0.13
, http-client >= 0.7.13 && < 0.8
, http-client-tls >= 0.3.6 && < 0.4
, http-types >= 0.12.3 && < 0.13
, mime-types >= 0.1.0 && < 0.2
, optparse-generic >= 1.4.8 && < 1.6
, text >= 1.2.5 && < 1.3 || >= 2.0 && < 2.2
, unordered-containers >= 0.2.17 && < 0.3
build-depends: base ^>=4.18.0.0 || ^>=4.19.0.0 || ^>=4.20.0.0
default-language: Haskell2010
ghc-options:
-Weverything
@@ -54,23 +43,31 @@ common library
common executable
import: library
build-depends: github-release
ghc-options:
-rtsopts
-threaded
-Wno-unused-packages
library
import: library
autogen-modules: Paths_github_release
build-depends:
aeson ^>=2.1.2.1 || ^>=2.2.2.0,
burrito ^>=2.0.1.9,
bytestring ^>=0.11.4.0 || ^>=0.12.0.2,
http-client ^>=0.7.17,
http-client-tls ^>=0.3.6.3,
http-types ^>=0.12.4,
mime-types ^>=0.1.2.0,
optparse-generic ^>=1.5.2,
text ^>=2.0.2 || ^>=2.1,
unordered-containers ^>=0.2.20,
exposed-modules: GitHubRelease
hs-source-dirs: source/library
other-modules: Paths_github_release
executable github-release
import: executable
hs-source-dirs: source/executable
main-is: Main.hs