Skip to content

Commit

Permalink
Support GHC 9.8.
Browse files Browse the repository at this point in the history
Include ghc981 in CI testing.

Test all valid combinations of flags, except for
large-records on GHC 9.6+ and dhall on GHC 9.8,
neither of which is currently possible.
  • Loading branch information
j6carey committed May 10, 2024
1 parent f17a14c commit 3983664
Show file tree
Hide file tree
Showing 33 changed files with 854 additions and 50 deletions.
25 changes: 23 additions & 2 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,28 @@ jobs:
- ghc928
- ghc948
- ghc962
- ghc981
dhall:
- false
- true
swagger:
- false
- true
swaggerWrapper:
- false
- true
largeRecords:
- false
- true
exclude:
- swagger: false
swaggerWrapper: true
- compiler: ghc962
largeRecords: true
- compiler: ghc981
largeRecords: true
- compiler: ghc981
dhall: true
runs-on: ${{ matrix.os }}
steps:
- uses: actions/[email protected]
Expand All @@ -27,5 +49,4 @@ jobs:
with:
name: awakesecurity
authToken: '${{ secrets.CACHIX_AUTH_TOKEN }}'
- run: nix-build --attr proto3-suite --argstr compiler "${{ matrix.compiler }}" --arg enableDhall true --arg enableLargeRecords false
- run: nix-build --attr proto3-suite --argstr compiler "${{ matrix.compiler }}" --arg enableDhall true --arg enableLargeRecords true
- run: nix-build --attr proto3-suite --argstr compiler "${{ matrix.compiler }}" --arg enableDhall "${{ matrix.dhall }}" --arg enableSwagger "${{ matrix.swagger }}" --arg swaggerWrapperFormat "${{ matrix.swaggerWrapper }}" --arg enableLargeRecords "${{ matrix.largeRecords }}"
3 changes: 2 additions & 1 deletion CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -7,8 +7,9 @@
* Proto3.Suite.DotProto.Generate
* Proto3.Suite.DotProto.Generate.LargeRecord
* Proto3.Suite.DotProto.Generate.Syntax
* Add support for GHC 9.6.
* Drop support for GHC 8.10.
* Add support for GHC 9.6.
* Add support for GHC 9.8.

# 0.7.0
* Support GHC 9.2, 9.4.
Expand Down
201 changes: 200 additions & 1 deletion nix/overlays/haskell-packages.nix
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,118 @@ in {

(haskellPackagesNew: haskellPackagesOld: {

# With nixpkgs-23.11 and ghc962, generics-sop thinks that th-abstraction is out of bounds.
# With nixpkgs-23.11 and ghc981, adjunctions wants hspec for testing,
# which causes problems.
adjunctions =
pkgsNew.haskell.lib.dontCheck haskellPackagesOld.adjunctions;

# With nixpkgs-23.11 and ghc981, aeson-2.1.2.1 thinks that th-abstraction is out of bounds.
# Also, in order to avoid the breaking change to package structure in aeson-2.2.0.0,
# we patch the import list of aeson-2.1.2.1.
aeson =
pkgsNew.haskell.lib.doJailbreak
( pkgsNew.haskell.lib.appendPatches haskellPackagesOld.aeson
[ ../patches/aeson-2.1.2.1.patch ] );

# With nixpkgs-23.11 and ghc981, atomic-write wants hspec for testing,
# which causes problems.
atomic-write =
pkgsNew.haskell.lib.dontCheck haskellPackagesOld.atomic-write;

# With nixpkgs-23.11 and ghc981, base-compat-batteries wants hspec for testing,
# which causes problems.
base-compat-batteries =
pkgsNew.haskell.lib.dontCheck haskellPackagesOld.base-compat-batteries;

# With nixpkgs-23.11 and ghc981, base-orphans wants hspec for testing,
# which causes problems.
base-orphans =
pkgsNew.haskell.lib.dontCheck haskellPackagesOld.base-orphans;

# With nixpkgs-23.11 and ghc981, bifunctors wants hspec for testing,
# which causes problems.
bifunctors =
pkgsNew.haskell.lib.dontCheck haskellPackagesOld.bifunctors;

# With nixpkgs-23.11 and ghc981, conduit wants hspec for testing,
# which causes problems.
conduit =
pkgsNew.haskell.lib.dontCheck haskellPackagesOld.conduit;

# With nixpkgs-23.11 and ghc981, constraints wants hspec for testing,
# which causes problems.
constraints =
pkgsNew.haskell.lib.dontCheck haskellPackagesOld.constraints;

# With nixpkgs-23.11 and ghc981, data-diverse wants hspec for testing,
# which causes problems.
data-diverse =
pkgsNew.haskell.lib.dontCheck haskellPackagesOld.data-diverse;

# With nixpkgs-23.11 and ghc981, distribution-nixpkgs wants hspec for testing,
# which causes problems.
distribution-nixpkgs =
pkgsNew.haskell.lib.dontCheck haskellPackagesOld.distribution-nixpkgs;

# With nixpkgs-23.11 and ghc981, distributive wants hspec for testing,
# which causes problems.
distributive =
pkgsNew.haskell.lib.dontCheck haskellPackagesOld.distributive;

# With ghc981, doctest-0.22.2 complains about the version of the base
# package and depends on hspec for testing, which causes problems.
doctest =
pkgsNew.haskell.lib.dontCheck
(pkgsNew.haskell.lib.doJailbreak haskellPackagesOld.doctest);

# With nixpkgs-23.11 and ghc981, generic-deriving wants hspec for testing,
# which causes problems. Also, it generic-deriving thinks that
# th-abstraction is out of bounds.
generic-deriving =
pkgsNew.haskell.lib.dontCheck
(pkgsNew.haskell.lib.doJailbreak haskellPackagesOld.generic-deriving);

# With nixpkgs-23.11 and ghc981, half thinks that deepseq is out of bounds.
half =
pkgsNew.haskell.lib.doJailbreak haskellPackagesOld.half;

# With nixpkgs-23.11 and ghc981, hourglass does not support the version
# of the time package that is provided, but that matters only to tests.
hourglass =
pkgsNew.haskell.lib.dontCheck haskellPackagesOld.hourglass;

# With nixpkgs-23.11 and ghc981, hpack-0.36.0 wants hspec for testing,
# which causes problems.
hpack =
pkgsNew.haskell.lib.dontCheck haskellPackagesOld.hpack;

# With nixpkgs-23.11 and ghc981, http-types wants hspec for testing,
# which causes problems.
http-types =
pkgsNew.haskell.lib.dontCheck haskellPackagesOld.http-types;

# With nixpkgs-23.11 and ghc981, infer-license wants hspec for testing,
# which causes problems.
infer-license =
pkgsNew.haskell.lib.dontCheck haskellPackagesOld.infer-license;

# With nixpkgs-23.11 and our overrides, insert-ordered-containers thinks that lens is out of bounds.
insert-ordered-containers =
pkgsNew.haskell.lib.doJailbreak haskellPackagesOld.insert-ordered-containers;

# With nixpkgs-23.11 and ghc981, invariant indirectly depends on hspec for testing,
# which causes problems. Also, it generic-deriving thinks that
# th-abstraction is out of bounds.
invariant =
pkgsNew.haskell.lib.dontCheck
(pkgsNew.haskell.lib.doJailbreak haskellPackagesOld.invariant);

# With nixpkgs-23.11 and ghc981, iproute wants hspec for testing,
# which causes problems.
iproute =
pkgsNew.haskell.lib.dontCheck haskellPackagesOld.iproute;

# With nixpkgs-23.11 and ghc962, generics-sop-0.5.1.4 thinks that th-abstraction is out of bounds.
generics-sop =
pkgsNew.haskell.lib.doJailbreak haskellPackagesOld.generics-sop;

Expand All @@ -39,6 +150,94 @@ in {
large-records =
pkgsNew.haskell.lib.doJailbreak haskellPackagesOld.large-records;

# With nixpkgs-23.11 and ghc981 (or perhaps our customized dependencies),
# the tests in lifted-base fail.
lifted-base =
pkgsNew.haskell.lib.dontCheck haskellPackagesOld.lifted-base;

# With nixpkgs-23.11 and ghc981, monad-par wants test-framework for testing, which
# wants language-haskell-extract, which does not support modern template-haskell.
monad-par =
pkgsNew.haskell.lib.dontCheck haskellPackagesOld.monad-par;

# With nixpkgs-23.11 and ghc981, mono-traversable wants hspec for testing,
# which causes problems.
mono-traversable =
pkgsNew.haskell.lib.dontCheck haskellPackagesOld.mono-traversable;

# With nixpkgs-23.11 and our overrides, neat-interpolation that rebase is out of bounds.
neat-interpolation =
pkgsNew.haskell.lib.doJailbreak haskellPackagesOld.neat-interpolation;

# With nixpkgs-23.11 and our overrides, rerebase that rebase is out of bounds.
rerebase =
pkgsNew.haskell.lib.doJailbreak haskellPackagesOld.rerebase;

# With nixpkgs-23.11 and ghc981, safe-exceptions wants hspec for testing,
# which causes problems.
safe-exceptions =
pkgsNew.haskell.lib.dontCheck haskellPackagesOld.safe-exceptions;

# With nixpkgs-23.11 and ghc981, streaming-commons wants hspec for testing,
# which causes problems.
streaming-commons =
pkgsNew.haskell.lib.dontCheck haskellPackagesOld.streaming-commons;

# With nixpkgs-23.11 and our dependency overrides, swagger2 wants hspec for testing,
# which causes problems. Also, we jailbreak to allow a newer version of lens.
swagger2 =
pkgsNew.haskell.lib.dontCheck
(pkgsNew.haskell.lib.doJailbreak haskellPackagesOld.swagger2);

# With nixpkgs-23.11 and ghc981, reflection indirectly depends on hspec for testing,
# which causes problems.
reflection =
pkgsNew.haskell.lib.dontCheck haskellPackagesOld.reflection;

# With nixpkgs-23.11 and ghc981, resourceat wants hspec for testing,
# which causes problems.
resourceat =
pkgsNew.haskell.lib.dontCheck haskellPackagesOld.resourceat;

# With nixpkgs-23.11 and ghc981, resourcet wants hspec for testing,
# which causes problems.
resourcet =
pkgsNew.haskell.lib.dontCheck haskellPackagesOld.resourcet;

# With nixpkgs-23.11 and ghc981, tasty-discover wants hspec for testing,
# which causes problems.
tasty-discover =
pkgsNew.haskell.lib.dontCheck haskellPackagesOld.tasty-discover;

# With nixpkgs-23.11 and ghc981, text-metrics wants hspec for testing,
# which causes problems.
text-metrics =
pkgsNew.haskell.lib.dontCheck haskellPackagesOld.text-metrics;

# With nixpkgs-23.11 and ghc981, th-compat wants hspec for testing,
# which causes problems.
th-compat =
pkgsNew.haskell.lib.dontCheck haskellPackagesOld.th-compat;

# With nixpkgs-23.11 and our overrides, th-lift thinks that th-abstraction is out of bounds.
th-lift =
pkgsNew.haskell.lib.doJailbreak haskellPackagesOld.th-lift;

# With nixpkgs-23.11 and ghc981, unix-compat wants hspec for testing,
# which causes problems.
unix-compat =
pkgsNew.haskell.lib.dontCheck haskellPackagesOld.unix-compat;

# With nixpkgs-23.11 and ghc981, hpack-0.36.0 wants hspec for testing,
# which causes problems.
unix-time =
pkgsNew.haskell.lib.dontCheck haskellPackagesOld.unix-time;

# With nixpkgs-23.11 and ghc981, yaml wants hspec for testing,
# which causes problems.
yaml =
pkgsNew.haskell.lib.dontCheck haskellPackagesOld.yaml;

range-set-list =
pkgsNew.haskell.lib.overrideCabal
haskellPackagesOld.range-set-list
Expand Down
22 changes: 22 additions & 0 deletions nix/packages/bifunctors.nix
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
{ mkDerivation, assoc, base, comonad, containers
, foldable1-classes-compat, hspec, hspec-discover, lib, QuickCheck
, tagged, template-haskell, th-abstraction, transformers
, transformers-compat
}:
mkDerivation {
pname = "bifunctors";
version = "5.6.2";
sha256 = "1086a9285061eed0c2c5d3cb65aa223defd52fca6d0515bb69ddf2dbc3d9697a";
libraryHaskellDepends = [
assoc base comonad containers foldable1-classes-compat tagged
template-haskell th-abstraction transformers
];
testHaskellDepends = [
base hspec QuickCheck template-haskell transformers
transformers-compat
];
testToolDepends = [ hspec-discover ];
homepage = "http://github.com/ekmett/bifunctors/";
description = "Bifunctors";
license = lib.licenses.bsd3;
}
21 changes: 21 additions & 0 deletions nix/packages/cborg.nix
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
{ mkDerivation, aeson, array, base, base-orphans, base16-bytestring
, base64-bytestring, bytestring, containers, deepseq, ghc-bignum
, ghc-prim, half, lib, primitive, QuickCheck, random, scientific
, tasty, tasty-hunit, tasty-quickcheck, text, vector
}:
mkDerivation {
pname = "cborg";
version = "0.2.10.0";
sha256 = "17fe070c38fc498cab49bcb9d6215b7747d53bedf96502e9bcce9cad73b9c797";
libraryHaskellDepends = [
array base bytestring containers deepseq ghc-bignum ghc-prim half
primitive text
];
testHaskellDepends = [
aeson array base base-orphans base16-bytestring base64-bytestring
bytestring deepseq half primitive QuickCheck random scientific
tasty tasty-hunit tasty-quickcheck text vector
];
description = "Concise Binary Object Representation (CBOR)";
license = lib.licenses.bsd3;
}
30 changes: 30 additions & 0 deletions nix/packages/doctest.nix
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
{ mkDerivation, base, code-page, deepseq, directory, exceptions
, filepath, ghc, ghc-paths, hspec, hspec-core, hspec-discover
, HUnit, lib, mockery, process, QuickCheck, setenv, silently
, stringbuilder, syb, transformers
}:
mkDerivation {
pname = "doctest";
version = "0.22.2";
sha256 = "afb839c14019c17e3ec7900871a9fc104226028858c724932d53225ae382c6e5";
isLibrary = true;
isExecutable = true;
libraryHaskellDepends = [
base code-page deepseq directory exceptions filepath ghc ghc-paths
process syb transformers
];
executableHaskellDepends = [
base code-page deepseq directory exceptions filepath ghc ghc-paths
process syb transformers
];
testHaskellDepends = [
base code-page deepseq directory exceptions filepath ghc ghc-paths
hspec hspec-core HUnit mockery process QuickCheck setenv silently
stringbuilder syb transformers
];
testToolDepends = [ hspec-discover ];
homepage = "https://github.com/sol/doctest#readme";
description = "Test interactive Haskell examples";
license = lib.licenses.mit;
mainProgram = "doctest";
}
19 changes: 19 additions & 0 deletions nix/packages/free.nix
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
{ mkDerivation, base, comonad, containers, distributive, exceptions
, indexed-traversable, lib, mtl, profunctors, semigroupoids
, template-haskell, th-abstraction, transformers, transformers-base
}:
mkDerivation {
pname = "free";
version = "5.2";
sha256 = "72867f7c89173263765736e8d395e94291f1aaea626ecb1d673d72ce90b94f89";
revision = "4";
editedCabalFile = "0vic3p2viip8gjww8fx19ax6ry7y34h7xclvhzkvmbspjh9d219x";
libraryHaskellDepends = [
base comonad containers distributive exceptions indexed-traversable
mtl profunctors semigroupoids template-haskell th-abstraction
transformers transformers-base
];
homepage = "http://github.com/ekmett/free/";
description = "Monads for free";
license = lib.licenses.bsd3;
}
17 changes: 17 additions & 0 deletions nix/packages/generics-sop.nix
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
{ mkDerivation, base, criterion, deepseq, ghc-prim, lib, sop-core
, template-haskell, th-abstraction
}:
mkDerivation {
pname = "generics-sop";
version = "0.5.1.4";
sha256 = "616a1c2176097469f9514e76d979fffdbc12d569f44fd01deb14377c7888797e";
libraryHaskellDepends = [
base ghc-prim sop-core template-haskell th-abstraction
];
testHaskellDepends = [ base ];
benchmarkHaskellDepends = [
base criterion deepseq template-haskell
];
description = "Generic Programming using True Sums of Products";
license = lib.licenses.bsd3;
}
Loading

0 comments on commit 3983664

Please sign in to comment.