From 9ff540777f143dfb29f6f66cef564453115d4183 Mon Sep 17 00:00:00 2001 From: Jens Nolte <git@queezle.net> Date: Sat, 9 Apr 2022 01:19:59 +0200 Subject: [PATCH] Update to GHC 9.2.2 Co-authored-by: Jan Beinke <git@janbeinke.com> --- flake.lock | 30 +++++++++-------- flake.nix | 16 +++++---- quasar-network.cabal | 42 +++--------------------- src/Quasar/Network/Multiplexer.hs | 2 +- src/Quasar/Network/Runtime/Observable.hs | 2 +- src/Quasar/Network/TH.hs | 9 +++-- test/Quasar/NetworkSpec.hs | 1 + 7 files changed, 37 insertions(+), 65 deletions(-) diff --git a/flake.lock b/flake.lock index d7a23bb..12afa7c 100644 --- a/flake.lock +++ b/flake.lock @@ -2,30 +2,34 @@ "nodes": { "nixpkgs": { "locked": { - "lastModified": 1645334861, - "narHash": "sha256-We9ECiMglthzbZ5S6Myqqf+RHzBFZPoM2qL5/jDkUjs=", + "lastModified": 1649225869, + "narHash": "sha256-u1zLtPmQzhT9mNXyM8Ey9pk7orDrIKdwooeGDEXm5xM=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "d5f237872975e6fb6f76eef1368b5634ffcd266f", + "rev": "b6966d911da89e5a7301aaef8b4f0a44c77e103c", "type": "github" }, "original": { - "id": "nixpkgs", - "type": "indirect" + "owner": "NixOS", + "ref": "nixos-unstable", + "repo": "nixpkgs", + "type": "github" } }, "nixpkgs_2": { "locked": { - "lastModified": 1645334861, - "narHash": "sha256-We9ECiMglthzbZ5S6Myqqf+RHzBFZPoM2qL5/jDkUjs=", + "lastModified": 1649225869, + "narHash": "sha256-u1zLtPmQzhT9mNXyM8Ey9pk7orDrIKdwooeGDEXm5xM=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "d5f237872975e6fb6f76eef1368b5634ffcd266f", + "rev": "b6966d911da89e5a7301aaef8b4f0a44c77e103c", "type": "github" }, "original": { - "id": "nixpkgs", - "type": "indirect" + "owner": "NixOS", + "ref": "nixos-unstable", + "repo": "nixpkgs", + "type": "github" } }, "quasar": { @@ -34,11 +38,11 @@ }, "locked": { "host": "git.c3pb.de", - "lastModified": 1649186839, - "narHash": "sha256-hYmuv40Wy302gWHvsEb8FGmMX1fxZlpq77SLE7UxQJQ=", + "lastModified": 1649454868, + "narHash": "sha256-64pCVdiy9hHR71I1d0w3tOVTs3y8tmmkbn/B2KNaHoM=", "owner": "jens", "repo": "quasar", - "rev": "82ebde4fe07002ba7c7a4d5bb4e21d63f30d4eef", + "rev": "c23144b3d2b64446575c2cecabbba11e0813c626", "type": "gitlab" }, "original": { diff --git a/flake.nix b/flake.nix index 74b50d0..858acaa 100644 --- a/flake.nix +++ b/flake.nix @@ -1,5 +1,6 @@ { inputs = { + nixpkgs.url = github:NixOS/nixpkgs/nixos-unstable; quasar = { url = gitlab:jens/quasar?host=git.c3pb.de; }; @@ -16,21 +17,22 @@ self.overlay quasar.overlay ]; }; - in { inherit (pkgs.haskellPackages) quasar-network; } + in rec { + default = quasar-network; + quasar-network = pkgs.haskell.packages.ghc922.quasar-network; + } ); - overlay = self: super: { - haskell = super.haskell // { - packageOverrides = hself: hsuper: super.haskell.packageOverrides hself hsuper // { - quasar-network = import ./. { pkgs = self; haskellPackages = hself; }; + overlay = final: prev: { + haskell = prev.haskell // { + packageOverrides = hfinal: hprev: prev.haskell.packageOverrides hfinal hprev // { + quasar-network = import ./. { pkgs = final; haskellPackages = hfinal; }; }; }; }; overlays.quasar = quasar.overlay; - defaultPackage = forAllSystems (system: self.packages.${system}.quasar-network); - devShell = forAllSystems (system: let pkgs = nixpkgs.legacyPackages.${system}; diff --git a/quasar-network.cabal b/quasar-network.cabal index d40329c..c3d2e1d 100644 --- a/quasar-network.cabal +++ b/quasar-network.cabal @@ -20,54 +20,28 @@ source-repository head common shared-properties default-extensions: AllowAmbiguousTypes - BangPatterns BlockArguments - ConstraintKinds DataKinds DefaultSignatures DeriveAnyClass - DeriveGeneric DerivingStrategies DuplicateRecordFields - ExistentialQuantification - FlexibleContexts - FlexibleInstances FunctionalDependencies GADTs - GeneralizedNewtypeDeriving - ImportQualifiedPost - InstanceSigs LambdaCase - MultiParamTypeClasses - NamedFieldPuns + LexicalNegation NoImplicitPrelude + OverloadedRecordDot OverloadedStrings - PolyKinds - RankNTypes - ScopedTypeVariables - StandaloneDeriving TemplateHaskell - TupleSections - TypeApplications TypeFamilies - TypeOperators ViewPatterns - -- Required for the record-dot-preprocessor plugin - DuplicateRecordFields - TypeApplications - FlexibleContexts - DataKinds - MultiParamTypeClasses - TypeSynonymInstances - FlexibleInstances - UndecidableInstances - GADTs - default-language: Haskell2010 + default-language: GHC2021 ghc-options: - -fplugin=RecordDotPreprocessor -Weverything -Wno-all-missed-specialisations -Wno-missing-safe-haskell-mode + -Wno-missing-kind-signatures -Wno-missing-import-lists -Wno-unsafe -Werror=incomplete-patterns @@ -97,18 +71,13 @@ library async, binary, bytestring, - deepseq, exceptions, mtl, network, quasar, - stm, template-haskell, unix, unordered-containers, - -- required for record-dot-preprocessor - record-dot-preprocessor, - record-hasfield, hs-source-dirs: src @@ -129,9 +98,6 @@ test-suite quasar-network-test quasar, quasar-network, stm, - -- required for record-dot-preprocessor - record-dot-preprocessor, - record-hasfield, main-is: Spec.hs other-modules: Quasar.NetworkSpec diff --git a/src/Quasar/Network/Multiplexer.hs b/src/Quasar/Network/Multiplexer.hs index 692457d..c8190df 100644 --- a/src/Quasar/Network/Multiplexer.hs +++ b/src/Quasar/Network/Multiplexer.hs @@ -1,6 +1,6 @@ module Quasar.Network.Multiplexer ( -- * Channel type - Channel, + Channel(quasar), -- * Sending and receiving messages MessageId, diff --git a/src/Quasar/Network/Runtime/Observable.hs b/src/Quasar/Network/Runtime/Observable.hs index cce2d3a..e61f657 100644 --- a/src/Quasar/Network/Runtime/Observable.hs +++ b/src/Quasar/Network/Runtime/Observable.hs @@ -40,7 +40,7 @@ data ObservableClient a = } instance IsRetrievable a (ObservableClient a) where - -- TODO use withResourceScope to abort on async exception (once supported by the code generator) + -- TODO use withResourceScope to abort on async exception (once aborting requests is supported by the code generator) retrieve client = liftIO $ client.beginRetrieve >>= await instance IsObservable a (ObservableClient a) where diff --git a/src/Quasar/Network/TH.hs b/src/Quasar/Network/TH.hs index 692638e..9249971 100644 --- a/src/Quasar/Network/TH.hs +++ b/src/Quasar/Network/TH.hs @@ -14,15 +14,14 @@ module Quasar.Network.TH ( makeRpc, -- TODO: re-add functions that generate only client and server later RpcProtocol(ProtocolRequest, ProtocolResponse), - HasProtocolImpl + HasProtocolImpl, ) where import Control.Monad.State (State, execState) import Control.Monad.State qualified as State import Data.Binary (Binary) -import GHC.Records.Compat (HasField) -import Language.Haskell.TH hiding (interruptible) -import Language.Haskell.TH.Syntax +import GHC.Records (HasField) +import Language.Haskell.TH hiding (Code, interruptible) import Quasar import Quasar.Network.Multiplexer import Quasar.Network.Runtime @@ -212,7 +211,7 @@ clientRequestStub api req = do requestDataE :: Q Exp requestDataE = applyVars (conE (requestConName api req)) messageConfigurationE :: Q Exp - messageConfigurationE = [|defaultMessageConfiguration{createChannels = $(litE $ integerL $ toInteger $ numPipelinedChannels req)}|] + messageConfigurationE = [|MessageConfiguration False $(litE $ integerL $ toInteger $ numPipelinedChannels req)|] sendE :: Q Exp -> Q Exp sendE msgExp = [|$typedSend $clientE $messageConfigurationE $msgExp|] requestE :: Response -> Q Exp -> Q Exp diff --git a/test/Quasar/NetworkSpec.hs b/test/Quasar/NetworkSpec.hs index b448a79..c6ae81f 100644 --- a/test/Quasar/NetworkSpec.hs +++ b/test/Quasar/NetworkSpec.hs @@ -16,6 +16,7 @@ import Quasar import Quasar.Network import Quasar.Network.Runtime (withStandaloneClient) import Quasar.Network.TH (makeRpc) +import Quasar.Network.Multiplexer import Quasar.Prelude import Test.Hspec.Core.Spec import Test.Hspec.Expectations.Lifted -- GitLab