From 5a345672dc9723777e067edc30c79a91e4ebb523 Mon Sep 17 00:00:00 2001 From: sheaf Date: Fri, 24 Nov 2023 15:21:00 +0100 Subject: [PATCH] Add some Binary & Structured instances This commit adds instances for several datatypes across the codebase that were missing them. These are mostly Binary and Structured instances. In particular, this allows serialisation/deserialisation of Component and of the flags pertinent to each phase (e.g. build flags, copy flags, etc). --- Cabal-syntax/src/Distribution/Types/Component.hs | 5 ++++- Cabal/src/Distribution/Simple/InstallDirs.hs | 1 + Cabal/src/Distribution/Simple/Setup/Benchmark.hs | 3 +++ Cabal/src/Distribution/Simple/Setup/Build.hs | 3 +++ Cabal/src/Distribution/Simple/Setup/Clean.hs | 3 +++ Cabal/src/Distribution/Simple/Setup/Copy.hs | 3 +++ Cabal/src/Distribution/Simple/Setup/Haddock.hs | 3 +++ Cabal/src/Distribution/Simple/Setup/Hscolour.hs | 3 +++ Cabal/src/Distribution/Simple/Setup/Repl.hs | 3 +++ Cabal/src/Distribution/Simple/Setup/Test.hs | 3 +++ Cabal/src/Distribution/Types/TargetInfo.hs | 5 +++++ 11 files changed, 34 insertions(+), 1 deletion(-) diff --git a/Cabal-syntax/src/Distribution/Types/Component.hs b/Cabal-syntax/src/Distribution/Types/Component.hs index 6a6027bd2..fee1201fb 100644 --- a/Cabal-syntax/src/Distribution/Types/Component.hs +++ b/Cabal-syntax/src/Distribution/Types/Component.hs @@ -29,7 +29,10 @@ data Component | CExe Executable | CTest TestSuite | CBench Benchmark - deriving (Show, Eq, Read) + deriving (Generic, Show, Eq, Read) + +instance Binary Component +instance Structured Component instance Semigroup Component where CLib l <> CLib l' = CLib (l <> l') diff --git a/Cabal/src/Distribution/Simple/InstallDirs.hs b/Cabal/src/Distribution/Simple/InstallDirs.hs index eead40c59..6321eabdb 100644 --- a/Cabal/src/Distribution/Simple/InstallDirs.hs +++ b/Cabal/src/Distribution/Simple/InstallDirs.hs @@ -345,6 +345,7 @@ data CopyDest deriving (Eq, Show, Generic) instance Binary CopyDest +instance Structured CopyDest -- | Check which of the paths are relative to the installation $prefix. -- diff --git a/Cabal/src/Distribution/Simple/Setup/Benchmark.hs b/Cabal/src/Distribution/Simple/Setup/Benchmark.hs index 3f657c224..5eac60aee 100644 --- a/Cabal/src/Distribution/Simple/Setup/Benchmark.hs +++ b/Cabal/src/Distribution/Simple/Setup/Benchmark.hs @@ -49,6 +49,9 @@ data BenchmarkFlags = BenchmarkFlags } deriving (Show, Generic, Typeable) +instance Binary BenchmarkFlags +instance Structured BenchmarkFlags + defaultBenchmarkFlags :: BenchmarkFlags defaultBenchmarkFlags = BenchmarkFlags diff --git a/Cabal/src/Distribution/Simple/Setup/Build.hs b/Cabal/src/Distribution/Simple/Setup/Build.hs index 434558ca5..aa1fa5e61 100644 --- a/Cabal/src/Distribution/Simple/Setup/Build.hs +++ b/Cabal/src/Distribution/Simple/Setup/Build.hs @@ -58,6 +58,9 @@ data BuildFlags = BuildFlags } deriving (Read, Show, Generic, Typeable) +instance Binary BuildFlags +instance Structured BuildFlags + defaultBuildFlags :: BuildFlags defaultBuildFlags = BuildFlags diff --git a/Cabal/src/Distribution/Simple/Setup/Clean.hs b/Cabal/src/Distribution/Simple/Setup/Clean.hs index b08a3cac7..14cb65bae 100644 --- a/Cabal/src/Distribution/Simple/Setup/Clean.hs +++ b/Cabal/src/Distribution/Simple/Setup/Clean.hs @@ -47,6 +47,9 @@ data CleanFlags = CleanFlags } deriving (Show, Generic, Typeable) +instance Binary CleanFlags +instance Structured CleanFlags + defaultCleanFlags :: CleanFlags defaultCleanFlags = CleanFlags diff --git a/Cabal/src/Distribution/Simple/Setup/Copy.hs b/Cabal/src/Distribution/Simple/Setup/Copy.hs index 56416ddae..466263ffe 100644 --- a/Cabal/src/Distribution/Simple/Setup/Copy.hs +++ b/Cabal/src/Distribution/Simple/Setup/Copy.hs @@ -55,6 +55,9 @@ data CopyFlags = CopyFlags } deriving (Show, Generic) +instance Binary CopyFlags +instance Structured CopyFlags + defaultCopyFlags :: CopyFlags defaultCopyFlags = CopyFlags diff --git a/Cabal/src/Distribution/Simple/Setup/Haddock.hs b/Cabal/src/Distribution/Simple/Setup/Haddock.hs index 3efc6640b..5c1bf25f7 100644 --- a/Cabal/src/Distribution/Simple/Setup/Haddock.hs +++ b/Cabal/src/Distribution/Simple/Setup/Haddock.hs @@ -109,6 +109,9 @@ data HaddockFlags = HaddockFlags } deriving (Show, Generic, Typeable) +instance Binary HaddockFlags +instance Structured HaddockFlags + defaultHaddockFlags :: HaddockFlags defaultHaddockFlags = HaddockFlags diff --git a/Cabal/src/Distribution/Simple/Setup/Hscolour.hs b/Cabal/src/Distribution/Simple/Setup/Hscolour.hs index 6b5e27611..443be76c5 100644 --- a/Cabal/src/Distribution/Simple/Setup/Hscolour.hs +++ b/Cabal/src/Distribution/Simple/Setup/Hscolour.hs @@ -51,6 +51,9 @@ data HscolourFlags = HscolourFlags } deriving (Show, Generic, Typeable) +instance Binary HscolourFlags +instance Structured HscolourFlags + emptyHscolourFlags :: HscolourFlags emptyHscolourFlags = mempty diff --git a/Cabal/src/Distribution/Simple/Setup/Repl.hs b/Cabal/src/Distribution/Simple/Setup/Repl.hs index 19c758363..2fae5bffc 100644 --- a/Cabal/src/Distribution/Simple/Setup/Repl.hs +++ b/Cabal/src/Distribution/Simple/Setup/Repl.hs @@ -70,6 +70,9 @@ data ReplFlags = ReplFlags } deriving (Show, Generic, Typeable) +instance Binary ReplFlags +instance Structured ReplFlags + defaultReplFlags :: ReplFlags defaultReplFlags = ReplFlags diff --git a/Cabal/src/Distribution/Simple/Setup/Test.hs b/Cabal/src/Distribution/Simple/Setup/Test.hs index bee0ccbef..12501c791 100644 --- a/Cabal/src/Distribution/Simple/Setup/Test.hs +++ b/Cabal/src/Distribution/Simple/Setup/Test.hs @@ -93,6 +93,9 @@ data TestFlags = TestFlags } deriving (Show, Generic, Typeable) +instance Binary TestFlags +instance Structured TestFlags + defaultTestFlags :: TestFlags defaultTestFlags = TestFlags diff --git a/Cabal/src/Distribution/Types/TargetInfo.hs b/Cabal/src/Distribution/Types/TargetInfo.hs index 8f724d894..a743b0b21 100644 --- a/Cabal/src/Distribution/Types/TargetInfo.hs +++ b/Cabal/src/Distribution/Types/TargetInfo.hs @@ -1,3 +1,4 @@ +{-# LANGUAGE DeriveGeneric #-} {-# LANGUAGE TypeFamilies #-} module Distribution.Types.TargetInfo @@ -27,6 +28,10 @@ data TargetInfo = TargetInfo -- generalization. Figure it out later. -- targetSub :: Maybe (Either ModuleName FilePath) } + deriving (Generic, Show) + +instance Binary TargetInfo +instance Structured TargetInfo instance IsNode TargetInfo where type Key TargetInfo = UnitId -- 2.11.4.GIT