Skip to content

Commit

Permalink
singletons-{th,base}: Require building with GHC 9.6
Browse files Browse the repository at this point in the history
Checks off one box in #540.
  • Loading branch information
RyanGlScott committed Mar 4, 2023
1 parent 68ce40b commit 9db05f4
Show file tree
Hide file tree
Showing 12 changed files with 94 additions and 49 deletions.
84 changes: 56 additions & 28 deletions .github/workflows/haskell-ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -8,9 +8,9 @@
#
# For more information, see https://github.com/haskell-CI/haskell-ci
#
# version: 0.15.20220822
# version: 0.15.20230304
#
# REGENDATA ("0.15.20220822",["github","cabal.project"])
# REGENDATA ("0.15.20230304",["github","cabal.project"])
#
name: Haskell-CI
on:
Expand All @@ -33,14 +33,19 @@ jobs:
compilerVersion: "8.4"
setup-method: hvr-ppa
allow-failure: false
- compiler: ghc-9.4.1
- compiler: ghc-9.6.0.20230302
compilerKind: ghc
compilerVersion: 9.4.1
compilerVersion: 9.6.0.20230302
setup-method: ghcup
allow-failure: false
- compiler: ghc-9.2.4
- compiler: ghc-9.4.4
compilerKind: ghc
compilerVersion: 9.2.4
compilerVersion: 9.4.4
setup-method: ghcup
allow-failure: false
- compiler: ghc-9.2.7
compilerKind: ghc
compilerVersion: 9.2.7
setup-method: ghcup
allow-failure: false
- compiler: ghc-9.0.2
Expand Down Expand Up @@ -101,8 +106,9 @@ jobs:
mkdir -p "$HOME/.ghcup/bin"
curl -sL https://downloads.haskell.org/ghcup/0.1.18.0/x86_64-linux-ghcup-0.1.18.0 > "$HOME/.ghcup/bin/ghcup"
chmod a+x "$HOME/.ghcup/bin/ghcup"
"$HOME/.ghcup/bin/ghcup" config add-release-channel https://raw.githubusercontent.com/haskell/ghcup-metadata/master/ghcup-prereleases-0.0.7.yaml;
"$HOME/.ghcup/bin/ghcup" install ghc "$HCVER" || (cat "$HOME"/.ghcup/logs/*.* && false)
"$HOME/.ghcup/bin/ghcup" install cabal 3.6.2.0 || (cat "$HOME"/.ghcup/logs/*.* && false)
"$HOME/.ghcup/bin/ghcup" install cabal 3.9.0.0 || (cat "$HOME"/.ghcup/logs/*.* && false)
else
apt-add-repository -y 'ppa:hvr/ghc'
if [ $((GHCJSARITH)) -ne 0 ] ; then apt-add-repository -y 'ppa:hvr/ghcjs' ; fi
Expand All @@ -113,7 +119,8 @@ jobs:
mkdir -p "$HOME/.ghcup/bin"
curl -sL https://downloads.haskell.org/ghcup/0.1.18.0/x86_64-linux-ghcup-0.1.18.0 > "$HOME/.ghcup/bin/ghcup"
chmod a+x "$HOME/.ghcup/bin/ghcup"
"$HOME/.ghcup/bin/ghcup" install cabal 3.6.2.0 || (cat "$HOME"/.ghcup/logs/*.* && false)
"$HOME/.ghcup/bin/ghcup" config add-release-channel https://raw.githubusercontent.com/haskell/ghcup-metadata/master/ghcup-prereleases-0.0.7.yaml;
"$HOME/.ghcup/bin/ghcup" install cabal 3.9.0.0 || (cat "$HOME"/.ghcup/logs/*.* && false)
fi
env:
HCKIND: ${{ matrix.compilerKind }}
Expand All @@ -132,20 +139,20 @@ jobs:
echo "HC=$HC" >> "$GITHUB_ENV"
echo "HCPKG=$HOME/.ghcup/bin/$HCKIND-pkg-$HCVER" >> "$GITHUB_ENV"
echo "HADDOCK=$HOME/.ghcup/bin/haddock-$HCVER" >> "$GITHUB_ENV"
echo "CABAL=$HOME/.ghcup/bin/cabal-3.6.2.0 -vnormal+nowrap" >> "$GITHUB_ENV"
echo "CABAL=$HOME/.ghcup/bin/cabal-3.9.0.0 -vnormal+nowrap" >> "$GITHUB_ENV"
else
HC=$HCDIR/bin/$HCKIND
echo "HC=$HC" >> "$GITHUB_ENV"
echo "HCPKG=$HCDIR/bin/$HCKIND-pkg" >> "$GITHUB_ENV"
echo "HADDOCK=$HCDIR/bin/haddock" >> "$GITHUB_ENV"
echo "CABAL=$HOME/.ghcup/bin/cabal-3.6.2.0 -vnormal+nowrap" >> "$GITHUB_ENV"
echo "CABAL=$HOME/.ghcup/bin/cabal-3.9.0.0 -vnormal+nowrap" >> "$GITHUB_ENV"
fi
HCNUMVER=$(${HC} --numeric-version|perl -ne '/^(\d+)\.(\d+)\.(\d+)(\.(\d+))?$/; print(10000 * $1 + 100 * $2 + ($3 == 0 ? $5 != 1 : $3))')
echo "HCNUMVER=$HCNUMVER" >> "$GITHUB_ENV"
echo "ARG_TESTS=--enable-tests" >> "$GITHUB_ENV"
echo "ARG_BENCH=--enable-benchmarks" >> "$GITHUB_ENV"
echo "HEADHACKAGE=false" >> "$GITHUB_ENV"
if [ $((! GHCJSARITH && HCNUMVER >= 90600)) -ne 0 ] ; then echo "HEADHACKAGE=true" >> "$GITHUB_ENV" ; else echo "HEADHACKAGE=false" >> "$GITHUB_ENV" ; fi
echo "ARG_COMPILER=--$HCKIND --with-compiler=$HC" >> "$GITHUB_ENV"
env:
HCKIND: ${{ matrix.compilerKind }}
Expand Down Expand Up @@ -173,6 +180,18 @@ jobs:
repository hackage.haskell.org
url: http://hackage.haskell.org/
EOF
if $HEADHACKAGE; then
cat >> $CABAL_CONFIG <<EOF
repository head.hackage.ghc.haskell.org
url: https://ghc.gitlab.haskell.org/head.hackage/
secure: True
root-keys: 7541f32a4ccca4f97aea3b22f5e593ba2c0267546016b992dfadcd2fe944e55d
26021a13b401500c8eb2761ca95c61f2d625bfef951b939a8124ed12ecf07329
f76d08be13e9a61a377a85e2fb63f4c5435d40f8feb3e12eb05905edb8cdea89
key-threshold: 3
active-repositories: hackage.haskell.org, head.hackage.ghc.haskell.org:override
EOF
fi
cat >> $CABAL_CONFIG <<EOF
program-default-options
ghc-options: $GHCJOBS +RTS -M3G -RTS
Expand All @@ -198,15 +217,15 @@ jobs:
chmod a+x $HOME/.cabal/bin/cabal-plan
cabal-plan --version
- name: checkout
uses: actions/checkout@v2
uses: actions/checkout@v3
with:
path: source
- name: initial cabal.project for sdist
run: |
touch cabal.project
echo "packages: $GITHUB_WORKSPACE/source/./singletons" >> cabal.project
if [ $((! GHCJSARITH && HCNUMVER >= 90400)) -ne 0 ] ; then echo "packages: $GITHUB_WORKSPACE/source/./singletons-th" >> cabal.project ; fi
if [ $((! GHCJSARITH && HCNUMVER >= 90400)) -ne 0 ] ; then echo "packages: $GITHUB_WORKSPACE/source/./singletons-base" >> cabal.project ; fi
if [ $((! GHCJSARITH && HCNUMVER >= 90600)) -ne 0 ] ; then echo "packages: $GITHUB_WORKSPACE/source/./singletons-th" >> cabal.project ; fi
if [ $((! GHCJSARITH && HCNUMVER >= 90600)) -ne 0 ] ; then echo "packages: $GITHUB_WORKSPACE/source/./singletons-base" >> cabal.project ; fi
cat cabal.project
- name: sdist
run: |
Expand All @@ -228,29 +247,32 @@ jobs:
touch cabal.project
touch cabal.project.local
echo "packages: ${PKGDIR_singletons}" >> cabal.project
if [ $((! GHCJSARITH && HCNUMVER >= 90400)) -ne 0 ] ; then echo "packages: ${PKGDIR_singletons_th}" >> cabal.project ; fi
if [ $((! GHCJSARITH && HCNUMVER >= 90400)) -ne 0 ] ; then echo "packages: ${PKGDIR_singletons_base}" >> cabal.project ; fi
if [ $((! GHCJSARITH && HCNUMVER >= 90600)) -ne 0 ] ; then echo "packages: ${PKGDIR_singletons_th}" >> cabal.project ; fi
if [ $((! GHCJSARITH && HCNUMVER >= 90600)) -ne 0 ] ; then echo "packages: ${PKGDIR_singletons_base}" >> cabal.project ; fi
if [ $((GHCJSARITH || ! GHCJSARITH && HCNUMVER >= 80200)) -ne 0 ] ; then echo "package singletons" >> cabal.project ; fi
if [ $((GHCJSARITH || ! GHCJSARITH && HCNUMVER >= 80200)) -ne 0 ] ; then echo " ghc-options: -Werror=missing-methods" >> cabal.project ; fi
if [ $((! GHCJSARITH && HCNUMVER >= 90400)) -ne 0 ] ; then echo "package singletons-th" >> cabal.project ; fi
if [ $((! GHCJSARITH && HCNUMVER >= 90400)) -ne 0 ] ; then echo " ghc-options: -Werror=missing-methods" >> cabal.project ; fi
if [ $((! GHCJSARITH && HCNUMVER >= 90400)) -ne 0 ] ; then echo "package singletons-base" >> cabal.project ; fi
if [ $((! GHCJSARITH && HCNUMVER >= 90400)) -ne 0 ] ; then echo " ghc-options: -Werror=missing-methods" >> cabal.project ; fi
if [ $((! GHCJSARITH && HCNUMVER >= 90600)) -ne 0 ] ; then echo "package singletons-th" >> cabal.project ; fi
if [ $((! GHCJSARITH && HCNUMVER >= 90600)) -ne 0 ] ; then echo " ghc-options: -Werror=missing-methods" >> cabal.project ; fi
if [ $((! GHCJSARITH && HCNUMVER >= 90600)) -ne 0 ] ; then echo "package singletons-base" >> cabal.project ; fi
if [ $((! GHCJSARITH && HCNUMVER >= 90600)) -ne 0 ] ; then echo " ghc-options: -Werror=missing-methods" >> cabal.project ; fi
cat >> cabal.project <<EOF
source-repository-package
type: git
location: https://github.com/goldfirere/th-desugar
tag: 26c48f73b7bae8a446b7a8daf226c98bb55d7479
tag: c33d1dfae5e064be1c143929fd65ce9a10412468
EOF
if $HEADHACKAGE; then
echo "allow-newer: $($HCPKG list --simple-output | sed -E 's/([a-zA-Z-]+)-[0-9.]+/*:\1,/g')" >> cabal.project
fi
$HCPKG list --simple-output --names-only | perl -ne 'for (split /\s+/) { print "constraints: $_ installed\n" unless /^(singletons|singletons-base|singletons-th)$/; }' >> cabal.project.local
cat cabal.project
cat cabal.project.local
- name: dump install plan
run: |
$CABAL v2-build $ARG_COMPILER $ARG_TESTS $ARG_BENCH --dry-run all
cabal-plan
- name: cache
uses: actions/cache@v2
- name: restore cache
uses: actions/cache/restore@v3
with:
key: ${{ runner.os }}-${{ matrix.compiler }}-${{ github.sha }}
path: ~/.cabal/store
Expand All @@ -269,10 +291,16 @@ jobs:
run: |
cd ${PKGDIR_singletons} || false
${CABAL} -vnormal check
if [ $((! GHCJSARITH && HCNUMVER >= 90400)) -ne 0 ] ; then cd ${PKGDIR_singletons_th} || false ; fi
if [ $((! GHCJSARITH && HCNUMVER >= 90400)) -ne 0 ] ; then ${CABAL} -vnormal check ; fi
if [ $((! GHCJSARITH && HCNUMVER >= 90400)) -ne 0 ] ; then cd ${PKGDIR_singletons_base} || false ; fi
if [ $((! GHCJSARITH && HCNUMVER >= 90400)) -ne 0 ] ; then ${CABAL} -vnormal check ; fi
if [ $((! GHCJSARITH && HCNUMVER >= 90600)) -ne 0 ] ; then cd ${PKGDIR_singletons_th} || false ; fi
if [ $((! GHCJSARITH && HCNUMVER >= 90600)) -ne 0 ] ; then ${CABAL} -vnormal check ; fi
if [ $((! GHCJSARITH && HCNUMVER >= 90600)) -ne 0 ] ; then cd ${PKGDIR_singletons_base} || false ; fi
if [ $((! GHCJSARITH && HCNUMVER >= 90600)) -ne 0 ] ; then ${CABAL} -vnormal check ; fi
- name: haddock
run: |
if [ $((! GHCJSARITH)) -ne 0 ] ; then $CABAL v2-haddock $ARG_COMPILER --with-haddock $HADDOCK $ARG_TESTS $ARG_BENCH all ; fi
if [ $((! GHCJSARITH)) -ne 0 ] ; then $CABAL v2-haddock --disable-documentation $ARG_COMPILER --with-haddock $HADDOCK $ARG_TESTS $ARG_BENCH all ; fi
- name: save cache
uses: actions/cache/save@v3
if: always()
with:
key: ${{ runner.os }}-${{ matrix.compiler }}-${{ github.sha }}
path: ~/.cabal/store
2 changes: 1 addition & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -65,7 +65,7 @@ windows for requirements on the compiler version needed to build each library:
GHC language extensions, even more so than `singletons` itself. As such, it
is difficult to maintain support for multiple GHC versions in any given
release of either library, so they only support the latest major GHC version
(currently GHC 9.4).
(currently GHC 9.6).

Any code that uses the singleton-generation functionality from `singletons-th`
or `singletons-base` needs to enable a long list of GHC extensions. This list
Expand Down
1 change: 1 addition & 0 deletions cabal.haskell-ci
Original file line number Diff line number Diff line change
Expand Up @@ -2,5 +2,6 @@ distribution: bionic
no-tests-no-benchmarks: False
unconstrained: False
jobs-selection: any
github-patches: haskell-ci.yml.patch
-- Needed to avoid https://github.com/haskell/cabal/issues/5423
haddock-components: libs
2 changes: 1 addition & 1 deletion cabal.project
Original file line number Diff line number Diff line change
Expand Up @@ -5,4 +5,4 @@ packages: ./singletons
source-repository-package
type: git
location: https://github.com/goldfirere/th-desugar
tag: b64e24b67c91991f5d9b97b055d05693fd99cb9b
tag: c33d1dfae5e064be1c143929fd65ce9a10412468
13 changes: 13 additions & 0 deletions haskell-ci.yml.patch
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
diff --git a/.github/workflows/haskell-ci.yml b/.github/workflows/haskell-ci.yml
index 209f0e3..b4fecf8 100644
--- a/.github/workflows/haskell-ci.yml
+++ b/.github/workflows/haskell-ci.yml
@@ -37,7 +37,7 @@ jobs:
compilerKind: ghc
compilerVersion: 9.6.0.20230302
setup-method: ghcup
- allow-failure: true
+ allow-failure: false
- compiler: ghc-9.4.4
compilerKind: ghc
compilerVersion: 9.4.4
1 change: 1 addition & 0 deletions singletons-base/CHANGES.md
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@ Changelog for the `singletons-base` project

3.2 [????.??.??]
----------------
* Require building with GHC 9.6.
* The kinds of the promoted `Error` and `ErrorWithoutStackTrace` functions have
been monomorphized to `Symbol`. A previous release generalized the kinds of
these arguments to allow passing arguments besides `Symbol`s, but this change
Expand Down
2 changes: 1 addition & 1 deletion singletons-base/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@ that code with `singletons-base`.

`singletons-base` uses code that relies on bleeding-edge GHC language
extensions. As such, `singletons-base` only supports the latest major version
of GHC (currently GHC 9.4). For more information,
of GHC (currently GHC 9.6). For more information,
consult the `singletons`
[`README`](https://github.com/goldfirere/singletons/blob/master/README.md).

Expand Down
16 changes: 8 additions & 8 deletions singletons-base/singletons-base.cabal
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ author: Richard Eisenberg <[email protected]>, Jan Stolarek <jan.stola
maintainer: Ryan Scott <[email protected]>
bug-reports: https://github.com/goldfirere/singletons/issues
stability: experimental
tested-with: GHC == 9.4.1
tested-with: GHC == 9.6.1
extra-source-files: README.md, CHANGES.md, tests/README.md,
tests/compile-and-dump/GradingClient/*.hs,
tests/compile-and-dump/InsertionSort/*.hs,
Expand Down Expand Up @@ -38,7 +38,7 @@ description:
.
@singletons-base@ uses code that relies on bleeding-edge GHC language
extensions. As such, @singletons-base@ only supports the latest major version
of GHC (currently GHC 9.4). For more information,
of GHC (currently GHC 9.6). For more information,
consult the @singletons@
@<https://github.com/goldfirere/singletons/blob/master/README.md README>@.
.
Expand All @@ -65,20 +65,20 @@ source-repository head

custom-setup
setup-depends:
base >= 4.17 && < 4.18,
Cabal >= 3.0 && < 3.9,
base >= 4.18 && < 4.19,
Cabal >= 3.0 && < 3.11,
directory >= 1,
filepath >= 1.3

library
hs-source-dirs: src
build-depends: base >= 4.17 && < 4.18,
build-depends: base >= 4.18 && < 4.19,
pretty,
singletons == 3.0.*,
singletons-th >= 3.2 && < 3.3,
template-haskell >= 2.19 && < 2.20,
template-haskell >= 2.20 && < 2.21,
text >= 1.2,
th-desugar >= 1.14 && < 1.15
th-desugar >= 1.15 && < 1.16
default-language: GHC2021
other-extensions: TemplateHaskell
exposed-modules: Data.Singletons.Base.CustomStar
Expand Down Expand Up @@ -155,7 +155,7 @@ test-suite singletons-base-test-suite
main-is: SingletonsBaseTestSuite.hs
other-modules: SingletonsBaseTestSuiteUtils

build-depends: base >= 4.17 && < 4.18,
build-depends: base >= 4.18 && < 4.19,
bytestring >= 0.10.9,
deepseq >= 1.4.4,
filepath >= 1.3,
Expand Down
1 change: 1 addition & 0 deletions singletons-th/CHANGES.md
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@ Changelog for the `singletons-th` project

3.2 [????.??.??]
----------------
* Require building with GHC 9.6.
* Derived `POrd` and `SOrd` instances (arising from a use of `deriving Ord`)
now use `(<>) @Ordering` in their implementations instead of the custom
`thenCmp :: Ordering -> Ordering -> Ordering` function. While most code will
Expand Down
2 changes: 1 addition & 1 deletion singletons-th/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@ which describes how promotion works in greater detail.

`singletons-th` generates code that relies on bleeding-edge GHC language
extensions. As such, `singletons-th` only supports the latest major version
of GHC (currently GHC 9.4). For more information,
of GHC (currently GHC 9.6). For more information,
consult the `singletons`
[`README`](https://github.com/goldfirere/singletons/blob/master/README.md).

Expand Down
10 changes: 5 additions & 5 deletions singletons-th/singletons-th.cabal
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ author: Richard Eisenberg <[email protected]>, Jan Stolarek <jan.stola
maintainer: Ryan Scott <[email protected]>
bug-reports: https://github.com/goldfirere/singletons/issues
stability: experimental
tested-with: GHC == 9.4.1
tested-with: GHC == 9.6.1
extra-source-files: README.md, CHANGES.md
license: BSD3
license-file: LICENSE
Expand All @@ -26,7 +26,7 @@ description:
.
@singletons-th@ generates code that relies on bleeding-edge GHC language
extensions. As such, @singletons-th@ only supports the latest major version
of GHC (currently GHC 9.4). For more information,
of GHC (currently GHC 9.6). For more information,
consult the @singletons@
@<https://github.com/goldfirere/singletons/blob/master/README.md README>@.
.
Expand All @@ -52,14 +52,14 @@ source-repository head

library
hs-source-dirs: src
build-depends: base >= 4.17 && < 4.18,
build-depends: base >= 4.18 && < 4.19,
containers >= 0.5,
mtl >= 2.2.1 && < 2.4,
ghc-boot-th,
singletons == 3.0.*,
syb >= 0.4,
template-haskell >= 2.19 && < 2.20,
th-desugar >= 1.14 && < 1.15,
template-haskell >= 2.20 && < 2.21,
th-desugar >= 1.15 && < 1.16,
th-orphans >= 0.13.11 && < 0.14,
transformers >= 0.5.2
default-language: GHC2021
Expand Down
9 changes: 5 additions & 4 deletions singletons/singletons.cabal
Original file line number Diff line number Diff line change
Expand Up @@ -15,8 +15,9 @@ tested-with: GHC == 8.0.2
, GHC == 8.8.4
, GHC == 8.10.7
, GHC == 9.0.2
, GHC == 9.2.4
, GHC == 9.4.1
, GHC == 9.2.7
, GHC == 9.4.4
, GHC == 9.6.1
, GHCJS==8.4
extra-source-files: README.md, CHANGES.md
license: BSD3
Expand Down Expand Up @@ -58,7 +59,7 @@ source-repository head

library
hs-source-dirs: src
build-depends: base >= 4.9 && < 4.18
build-depends: base >= 4.9 && < 4.19
default-language: Haskell2010
exposed-modules: Data.Singletons
Data.Singletons.Decide
Expand All @@ -75,5 +76,5 @@ test-suite singletons-test-suite
other-modules: ByHand
ByHand2

build-depends: base >= 4.9 && < 4.18,
build-depends: base >= 4.9 && < 4.19,
singletons

0 comments on commit 9db05f4

Please sign in to comment.