diff options
-rw-r--r-- | CHANGELOG | 4 | ||||
-rw-r--r-- | CmdLine.hs | 1 | ||||
-rw-r--r-- | Crypto.hs | 8 | ||||
-rw-r--r-- | Graphviz.hs | 3 | ||||
-rw-r--r-- | ProtocolBuffers.hs | 3 | ||||
-rw-r--r-- | Role/Developer.hs | 3 | ||||
-rw-r--r-- | Role/User.hs | 3 | ||||
-rw-r--r-- | Session.hs | 1 | ||||
-rw-r--r-- | Types.hs | 6 | ||||
-rw-r--r-- | Val.hs | 3 | ||||
-rw-r--r-- | WebSockets.hs | 3 | ||||
-rw-r--r-- | debug-me.cabal | 7 | ||||
-rw-r--r-- | doc/bugs/fails_to_build_against_current_LTS_Haskell.mdwn | 2 | ||||
-rw-r--r-- | stack.yaml | 5 |
14 files changed, 35 insertions, 17 deletions
@@ -1,6 +1,6 @@ -debug-me (1.20170811) UNRELEASED; urgency=medium +debug-me (1.20181208) UNRELEASED; urgency=medium - * stack.yaml: Update to lts-11.17. + * Update to lts-12.10, support ghc 8.4, and aeson 1.3. -- Joey Hess <id@joeyh.name> Tue, 10 Jul 2018 13:28:50 -0400 @@ -8,7 +8,6 @@ module CmdLine where import Types import ServerList -import Data.Monoid import Options.Applicative import Network.URI import Network.Wai.Handler.Warp (Port) @@ -16,6 +16,7 @@ import Crypto.Error import Crypto.Random.Entropy import Data.ByteArray (convert) import qualified Data.ByteString as B +import qualified Data.Semigroup as Sem dummySignature :: Signature dummySignature = OtherSignature (Val mempty) @@ -78,10 +79,13 @@ mkSigVerifier (PublicKey (Val pk)) = CryptoPassed pk' -> SigVerifier 1 (Ed25519.verify pk') CryptoFailed _ -> mempty +instance Sem.Semigroup SigVerifier where + SigVerifier na a <> SigVerifier nb b = + SigVerifier (na+nb) $ \d s -> b d s || a d s + instance Monoid SigVerifier where mempty = SigVerifier 0 $ \_b _s -> False - mappend (SigVerifier na a) (SigVerifier nb b) = - SigVerifier (na+nb) $ \d s -> b d s || a d s + mappend = (Sem.<>) data MySessionKey = MySessionKey Ed25519.SecretKey Ed25519.PublicKey diff --git a/Graphviz.hs b/Graphviz.hs index f8f165c..abbb93a 100644 --- a/Graphviz.hs +++ b/Graphviz.hs @@ -12,7 +12,6 @@ import CmdLine import Log import Data.Char hiding (Control) -import Data.Monoid import Data.GraphViz import Data.GraphViz.Attributes.Complete import Data.GraphViz.Types.Generalised as G @@ -23,6 +22,8 @@ import qualified Data.ByteString.Lazy as L import qualified Data.Text.Lazy as T import qualified Data.Text.Lazy.Encoding as T import Data.Text.Encoding.Error +import Data.Monoid +import Prelude graphviz :: GraphvizOpts -> IO () graphviz opts = do diff --git a/ProtocolBuffers.hs b/ProtocolBuffers.hs index e87a156..d7c7799 100644 --- a/ProtocolBuffers.hs +++ b/ProtocolBuffers.hs @@ -5,7 +5,7 @@ {-# LANGUAGE DeriveGeneric, DataKinds, MultiParamTypeClasses #-} {-# LANGUAGE FlexibleContexts, UndecidableInstances #-} -{-# LANGUAGE OverloadedStrings #-} +{-# LANGUAGE OverloadedStrings, MonoLocalBinds #-} {- | Protocol buffers serialization for the debug-me wire protocol. - @@ -319,6 +319,7 @@ instance Encode a => Encode (MessageP a) -- This is why UndecidableInstances is needed. The need -- for a Monoid instance is an implementation detail of -- Data.ProtocolBuffers. +-- MonoLocalBinds is also used to avoid a ghc warning. instance (Monoid (Message a), Generic a, Decode a) => Decode (MessageP a) instance Encode a => Encode (ActivityP a) instance (Monoid (Message a), Generic a, Decode a) => Decode (ActivityP a) diff --git a/Role/Developer.hs b/Role/Developer.hs index d706a7a..abdad08 100644 --- a/Role/Developer.hs +++ b/Role/Developer.hs @@ -38,9 +38,10 @@ import qualified Data.Text as T import Data.List import Data.Maybe import Control.Monad -import Data.Monoid import Data.Time.Clock.POSIX import Network.URI +import Data.Monoid +import Prelude run :: DeveloperOpts -> IO () run = run' developer . debugUrl diff --git a/Role/User.hs b/Role/User.hs index 6ee1a42..6ec0302 100644 --- a/Role/User.hs +++ b/Role/User.hs @@ -30,11 +30,12 @@ import System.Exit import qualified Data.Text.IO as T import qualified Data.ByteString as B import Data.List.NonEmpty (NonEmpty(..), toList) -import Data.Monoid import Data.Maybe import Data.Time.Clock.POSIX import System.IO import System.Environment +import Data.Monoid +import Prelude run :: UserOpts -> IO ExitCode run os = fromMaybe (ExitFailure 101) <$> connect @@ -11,6 +11,7 @@ import qualified Data.ByteString as B import qualified Data.ByteString.Char8 as B8 import System.Exit import Data.Monoid +import Prelude startSession :: B.ByteString startSession = "** debug-me session started" @@ -22,6 +22,7 @@ import JSON import qualified Data.Text as T import Data.Time.Clock.POSIX +import qualified Data.Semigroup as Sem -- | Things that the developer sees. data Seen = Seen @@ -194,9 +195,12 @@ newtype ElapsedTime = ElapsedTime Double mkElapsedTime :: POSIXTime -> POSIXTime -> ElapsedTime mkElapsedTime start end = ElapsedTime $ fromRational $ toRational (end - start) +instance Sem.Semigroup ElapsedTime where + ElapsedTime a <> ElapsedTime b = ElapsedTime (a+b) + instance Monoid ElapsedTime where mempty = ElapsedTime 0 - mappend (ElapsedTime a) (ElapsedTime b) = ElapsedTime (a+b) + mappend = (Sem.<>) instance DataSize ElapsedTime where dataSize _ = 16 -- 128 bit Double @@ -16,10 +16,11 @@ import qualified Codec.Binary.Base64 as B64 import qualified Data.Text as T import qualified Data.Text.Encoding as T import qualified Data.ByteString as B +import qualified Data.Semigroup as Sem -- | Newtype of ByteString so we can have JSON instances without orphans. newtype Val = Val { val :: B.ByteString } - deriving (Show, Generic, Eq, Monoid) + deriving (Show, Generic, Eq, Sem.Semigroup, Monoid) instance DataSize Val where dataSize (Val b) = fromIntegral (B.length b) diff --git a/WebSockets.hs b/WebSockets.hs index c2fcb95..7a53c8c 100644 --- a/WebSockets.hs +++ b/WebSockets.hs @@ -40,12 +40,13 @@ import qualified Data.Serialize import qualified Data.Text as T import qualified Data.ByteString.Lazy as L import Data.List -import Data.Monoid import Data.Maybe import Text.Read import Control.Monad import Network.URI import System.IO +import Data.Monoid +import Prelude -- | Framing protocol used over a websocket connection. -- diff --git a/debug-me.cabal b/debug-me.cabal index a601e34..9fa28b9 100644 --- a/debug-me.cabal +++ b/debug-me.cabal @@ -45,6 +45,9 @@ Extra-Source-Files: debug-me.default developer-keyring.gpg +custom-setup + Setup-Depends: base (>= 4.9 && < 5.0), Cabal, filepath + Executable debug-me Main-Is: debug-me.hs GHC-Options: -threaded -Wall -fno-warn-tabs -O2 @@ -60,11 +63,11 @@ Executable debug-me , stm-chans (>= 3.0) , posix-pty (>= 0.2.1) , terminal-size (>= 0.3) - , aeson (>= 0.11 && < 1.3) + , aeson (>= 0.11 && < 1.4) , sandi (>= 0.4) , text (>= 1.2.2) , optparse-applicative (>= 0.12) - , graphviz (== 2999.18.*) + , graphviz (>= 2999.18.0 && < 2999.21) , time (>= 1.6) , filepath (>= 1.4) , directory (>= 1.2) diff --git a/doc/bugs/fails_to_build_against_current_LTS_Haskell.mdwn b/doc/bugs/fails_to_build_against_current_LTS_Haskell.mdwn index 52b9faf..2d1c0aa 100644 --- a/doc/bugs/fails_to_build_against_current_LTS_Haskell.mdwn +++ b/doc/bugs/fails_to_build_against_current_LTS_Haskell.mdwn @@ -13,3 +13,5 @@ debug-me fails to build against LTS 8.23: make[2]: *** [debug-me] Error 1 --spwhitton + +> [[fixed|done]] --[[Joey]] @@ -1,9 +1,8 @@ packages: - '.' -resolver: lts-11.17 +resolver: lts-12.10 extra-deps: -- graphviz-2999.18.1.2 +- graphviz-2999.20.0.2 - posix-pty-0.2.1.1 - sandi-0.4.2 -- fgl-5.5.4.0 explicit-setup-deps: |