mirror of
https://github.com/haskell-nix/hnix-store.git
synced 2024-09-11 18:05:56 +03:00
core,remote: add OldBuildResult as it is the one we claim to support now
This commit is contained in:
parent
2cd4c32b84
commit
8936300fbe
@ -5,15 +5,17 @@ Maintainer : srk <srk@48.io>
|
||||
module System.Nix.Build
|
||||
( BuildMode(..)
|
||||
, BuildStatus(..)
|
||||
, BuildResult(..)
|
||||
, buildSuccess
|
||||
, BuildResult(..)
|
||||
, OldBuildResult(..)
|
||||
) where
|
||||
|
||||
import Data.Time (UTCTime)
|
||||
import Data.Text (Text)
|
||||
import GHC.Generics (Generic)
|
||||
|
||||
-- keep the order of these Enums to match enums from reference implementations
|
||||
-- | Mode of the build operation
|
||||
-- Keep the order of these Enums to match enums from reference implementations
|
||||
-- src/libstore/store-api.hh
|
||||
data BuildMode
|
||||
= BuildMode_Normal
|
||||
@ -41,9 +43,9 @@ data BuildStatus =
|
||||
|
||||
-- | Result of the build
|
||||
data BuildResult = BuildResult
|
||||
{ -- | build status, MiscFailure should be default
|
||||
{ -- | Build status, MiscFailure should be the default
|
||||
buildResultStatus :: !BuildStatus
|
||||
, -- | possible build error message
|
||||
, -- | Possible build error message
|
||||
buildResultErrorMessage :: !(Maybe Text)
|
||||
, -- | How many times this build was performed
|
||||
buildResultTimesBuilt :: !Int
|
||||
@ -56,10 +58,19 @@ data BuildResult = BuildResult
|
||||
}
|
||||
deriving (Eq, Generic, Ord, Show)
|
||||
|
||||
buildSuccess :: BuildResult -> Bool
|
||||
buildSuccess BuildResult {..} =
|
||||
buildResultStatus `elem`
|
||||
buildSuccess :: BuildStatus -> Bool
|
||||
buildSuccess x =
|
||||
x `elem`
|
||||
[ BuildStatus_Built
|
||||
, BuildStatus_Substituted
|
||||
, BuildStatus_AlreadyValid
|
||||
]
|
||||
|
||||
-- | Result of the build, for protocol version <= 1.27
|
||||
data OldBuildResult = OldBuildResult
|
||||
{ -- | Build status, MiscFailure should be the default
|
||||
oldBuildResultStatus :: !BuildStatus
|
||||
, -- | Possible build error message
|
||||
oldBuildResultErrorMessage :: !(Maybe Text)
|
||||
}
|
||||
deriving (Eq, Generic, Ord, Show)
|
||||
|
@ -52,7 +52,7 @@ import Network.Socket (Family, SockAddr(SockAddrUnix))
|
||||
import System.Nix.Nar (NarSource)
|
||||
import System.Nix.Derivation (Derivation)
|
||||
import System.Nix.Store.Types (FileIngestionMethod(..), RepairMode(..))
|
||||
import System.Nix.Build (BuildMode, BuildResult)
|
||||
import System.Nix.Build (BuildMode, OldBuildResult)
|
||||
import System.Nix.Hash (NamedAlgo(..), BaseEncoding(Base16), decodeDigestWith)
|
||||
import System.Nix.StorePath (StoreDir(..), StorePath, StorePathName, StorePathHashPart, InvalidPathError)
|
||||
import System.Nix.StorePath.Metadata (Metadata(..), StorePathTrust(..))
|
||||
@ -226,7 +226,7 @@ buildDerivation
|
||||
:: StorePath
|
||||
-> Derivation StorePath Text
|
||||
-> BuildMode
|
||||
-> MonadStore BuildResult
|
||||
-> MonadStore OldBuildResult
|
||||
buildDerivation p drv buildMode = do
|
||||
storeDir <- getStoreDir
|
||||
runOpArgs WorkerOp_BuildDerivation $ do
|
||||
|
@ -20,7 +20,7 @@ import qualified Data.Text
|
||||
import qualified Data.Vector
|
||||
|
||||
import System.Nix.Derivation (Derivation(..), DerivationOutput(..))
|
||||
import System.Nix.Build (BuildMode(..), BuildStatus(..), BuildResult(..))
|
||||
import System.Nix.Build (BuildMode(..), BuildStatus(..), BuildResult(..), OldBuildResult(..))
|
||||
import System.Nix.StorePath (StoreDir, StorePath)
|
||||
import System.Nix.Store.Remote.Serialize.Prim
|
||||
import System.Nix.Store.Remote.Types
|
||||
@ -49,7 +49,7 @@ instance Serialize BuildResult where
|
||||
buildResultIsNonDeterministic <- getBool
|
||||
buildResultStartTime <- getTime
|
||||
buildResultStopTime <- getTime
|
||||
pure $ BuildResult{..}
|
||||
pure BuildResult{..}
|
||||
|
||||
put BuildResult{..} = do
|
||||
put buildResultStatus
|
||||
@ -61,6 +61,20 @@ instance Serialize BuildResult where
|
||||
putTime buildResultStartTime
|
||||
putTime buildResultStopTime
|
||||
|
||||
instance Serialize OldBuildResult where
|
||||
get = do
|
||||
oldBuildResultStatus <- get
|
||||
oldBuildResultErrorMessage <-
|
||||
(\em -> Data.Bool.bool (Just em) Nothing (Data.Text.null em))
|
||||
<$> get
|
||||
pure OldBuildResult{..}
|
||||
|
||||
put OldBuildResult{..} = do
|
||||
put oldBuildResultStatus
|
||||
case oldBuildResultErrorMessage of
|
||||
Just err -> putText err
|
||||
Nothing -> putText mempty
|
||||
|
||||
-- * GCAction
|
||||
--
|
||||
instance Serialize GCAction where
|
||||
|
@ -54,6 +54,7 @@ module System.Nix.Store.Remote.Serializer
|
||||
-- * Build
|
||||
, buildMode
|
||||
, buildResult
|
||||
, oldBuildResult
|
||||
-- * Logger
|
||||
, LoggerSError(..)
|
||||
, activityID
|
||||
@ -117,7 +118,7 @@ import qualified Data.Vector
|
||||
|
||||
import Data.Serializer
|
||||
import System.Nix.Base (BaseEncoding(NixBase32))
|
||||
import System.Nix.Build (BuildMode, BuildResult(..))
|
||||
import System.Nix.Build (BuildMode, BuildResult(..), OldBuildResult(..))
|
||||
import System.Nix.ContentAddress (ContentAddress)
|
||||
import System.Nix.Derivation (Derivation(..), DerivationOutput(..))
|
||||
import System.Nix.DerivedPath (DerivedPath, ParseOutputsError)
|
||||
@ -710,7 +711,7 @@ buildResult = Serializer
|
||||
buildResultIsNonDeterministic <- getS bool
|
||||
buildResultStartTime <- getS time
|
||||
buildResultStopTime <- getS time
|
||||
pure $ BuildResult{..}
|
||||
pure BuildResult{..}
|
||||
|
||||
, putS = \BuildResult{..} -> do
|
||||
putS enum buildResultStatus
|
||||
@ -721,6 +722,18 @@ buildResult = Serializer
|
||||
putS time buildResultStopTime
|
||||
}
|
||||
|
||||
oldBuildResult :: NixSerializer r SError OldBuildResult
|
||||
oldBuildResult = Serializer
|
||||
{ getS = do
|
||||
oldBuildResultStatus <- getS enum
|
||||
oldBuildResultErrorMessage <- getS maybeText
|
||||
pure OldBuildResult{..}
|
||||
|
||||
, putS = \OldBuildResult{..} -> do
|
||||
putS enum oldBuildResultStatus
|
||||
putS maybeText oldBuildResultErrorMessage
|
||||
}
|
||||
|
||||
-- * Logger
|
||||
|
||||
data LoggerSError
|
||||
|
@ -67,6 +67,7 @@ spec = parallel $ do
|
||||
|
||||
describe "Complex" $ do
|
||||
prop "BuildResult" $ roundtripS buildResult
|
||||
prop "OldBuildResult" $ roundtripS oldBuildResult
|
||||
|
||||
prop "StorePath" $
|
||||
roundtripSReader @StoreDir storePath
|
||||
|
@ -14,7 +14,7 @@ import qualified Data.Either
|
||||
import qualified Data.HashSet
|
||||
|
||||
import System.Nix.Arbitrary ()
|
||||
import System.Nix.Build (BuildMode(..), BuildResult, BuildStatus(..))
|
||||
import System.Nix.Build (BuildMode(..), BuildResult, BuildStatus(..), OldBuildResult(..))
|
||||
import System.Nix.Derivation (Derivation(inputDrvs))
|
||||
import System.Nix.Store.Remote.Arbitrary ()
|
||||
import System.Nix.Store.Remote.Serialize (getDerivation, putDerivation)
|
||||
@ -76,6 +76,7 @@ spec = parallel $ do
|
||||
prop "BuildMode" $ roundtripS @BuildMode
|
||||
prop "BuildStatus" $ roundtripS @BuildStatus
|
||||
prop "BuildResult" $ roundtripS @BuildResult
|
||||
prop "OldBuildResult" $ roundtripS @OldBuildResult
|
||||
|
||||
prop "ProtoVersion" $ roundtripS @ProtoVersion
|
||||
|
||||
|
@ -27,3 +27,6 @@ instance Arbitrary BuildResult where
|
||||
buildResultStopTime <- arbitrary
|
||||
|
||||
pure $ BuildResult{..}
|
||||
|
||||
deriving via GenericArbitrary OldBuildResult
|
||||
instance Arbitrary OldBuildResult
|
||||
|
Loading…
Reference in New Issue
Block a user