diff --git a/.gitignore b/.gitignore index f94ebe4..ff10551 100644 --- a/.gitignore +++ b/.gitignore @@ -2,4 +2,5 @@ dist-newstyle/ *~ tags +stack.yaml.lock result* diff --git a/schema/migration-2-0003-20201001.sql b/schema/migration-2-0003-20201001.sql new file mode 100644 index 0000000..8daf171 --- /dev/null +++ b/schema/migration-2-0003-20201001.sql @@ -0,0 +1,32 @@ +-- Persistent generated migration. + +CREATE FUNCTION migrate() RETURNS void AS $$ +DECLARE + next_version int ; +BEGIN + SELECT stage_two + 1 INTO next_version FROM schema_version ; + IF next_version = 3 THEN + ALTER TABLE "pool_metadata_reference" ALTER COLUMN "pool_id" TYPE text; + ALTER TABLE "pool_metadata_reference" ALTER COLUMN "url" TYPE text; + ALTER TABLE "pool_metadata_reference" ALTER COLUMN "hash" TYPE text; + ALTER TABLE "pool_metadata" ALTER COLUMN "pool_id" TYPE text; + ALTER TABLE "pool_metadata" ALTER COLUMN "ticker_name" TYPE text; + ALTER TABLE "pool_metadata" ALTER COLUMN "hash" TYPE text; + ALTER TABLE "pool_metadata" ALTER COLUMN "metadata" TYPE text; + ALTER TABLE "pool_metadata_fetch_error" ALTER COLUMN "pool_id" TYPE text; + ALTER TABLE "pool_metadata_fetch_error" ALTER COLUMN "pool_hash" TYPE text; + ALTER TABLE "delisted_pool" ALTER COLUMN "pool_id" TYPE text; + ALTER TABLE "delisted_pool" ADD CONSTRAINT "unique_delisted_pool" UNIQUE("pool_id"); + ALTER TABLE "delisted_pool" DROP CONSTRAINT "unique_blacklisted_pool"; + ALTER TABLE "reserved_ticker" ALTER COLUMN "name" TYPE text; + ALTER TABLE "reserved_ticker" ALTER COLUMN "pool_hash" TYPE text; + -- Hand written SQL statements can be added here. + UPDATE schema_version SET stage_two = 3 ; + RAISE NOTICE 'DB has been migrated to stage_two version %', next_version ; + END IF ; +END ; +$$ LANGUAGE plpgsql ; + +SELECT migrate() ; + +DROP FUNCTION migrate() ; diff --git a/smash.cabal b/smash.cabal index 050912e..dab51a9 100644 --- a/smash.cabal +++ b/smash.cabal @@ -50,6 +50,7 @@ library -- DB operations , Cardano.Db.Error , Cardano.Db.Insert + , Cardano.Db.Delete , Cardano.Db.Query , Cardano.Db.Types diff --git a/src/Cardano/Db/Delete.hs b/src/Cardano/Db/Delete.hs new file mode 100644 index 0000000..36d40ae --- /dev/null +++ b/src/Cardano/Db/Delete.hs @@ -0,0 +1,29 @@ +{-# LANGUAGE FlexibleContexts #-} +{-# LANGUAGE TypeFamilies #-} + +module Cardano.Db.Delete + ( deleteDelistedPool + ) where + +import Cardano.Prelude hiding (Meta) + +import Control.Monad.IO.Class (MonadIO) +import Control.Monad.Trans.Reader (ReaderT) + +import Database.Persist.Class (AtLeastOneUniqueKey, Key, PersistEntityBackend, + getByValue, insert, checkUnique) +import Database.Persist.Sql (SqlBackend, (==.), deleteCascade, selectKeysList) +import Database.Persist.Types (entityKey) + +import Cardano.Db.Schema +import Cardano.Db.Error +import qualified Cardano.Db.Types as Types + +-- | Delete a delisted pool if it exists. Returns 'True' if it did exist and has been +-- deleted and 'False' if it did not exist. +deleteDelistedPool :: MonadIO m => Types.PoolId -> ReaderT SqlBackend m Bool +deleteDelistedPool poolId = do + keys <- selectKeysList [ DelistedPoolPoolId ==. poolId ] [] + mapM_ deleteCascade keys + pure $ not (null keys) + diff --git a/src/Cardano/Db/Error.hs b/src/Cardano/Db/Error.hs index fd2db8c..852a687 100644 --- a/src/Cardano/Db/Error.hs +++ b/src/Cardano/Db/Error.hs @@ -26,6 +26,7 @@ data DBFail | UnableToEncodePoolMetadataToJSON !Text | UnknownError !Text | ReservedTickerAlreadyInserted !Text + | RecordDoesNotExist deriving (Eq, Show, Generic) {- @@ -86,7 +87,11 @@ instance ToJSON DBFail where [ "code" .= String "ReservedTickerAlreadyInserted" , "description" .= String (renderLookupFail failure) ] - + toJSON failure@(RecordDoesNotExist) = + object + [ "code" .= String "RecordDoesNotExist" + , "description" .= String (renderLookupFail failure) + ] renderLookupFail :: DBFail -> Text renderLookupFail lf = @@ -100,4 +105,5 @@ renderLookupFail lf = UnableToEncodePoolMetadataToJSON err -> "Unable to encode the content to JSON. " <> err UnknownError text -> "Unknown error. Context: " <> text ReservedTickerAlreadyInserted tickerName -> "Ticker '" <> tickerName <> "' has already been inserted." + RecordDoesNotExist -> "The requested record does not exist." diff --git a/src/Cardano/Db/Schema.hs b/src/Cardano/Db/Schema.hs index 1960dec..b020d03 100644 --- a/src/Cardano/Db/Schema.hs +++ b/src/Cardano/Db/Schema.hs @@ -114,7 +114,7 @@ share -- A table containing a list of delisted pools. DelistedPool poolId Types.PoolId sqltype=text - UniqueBlacklistedPool poolId + UniqueDelistedPool poolId -- A table containing a managed list of reserved ticker names. -- For now they are grouped under the specific hash of the pool. diff --git a/src/DB.hs b/src/DB.hs index baded97..1f0c736 100644 --- a/src/DB.hs +++ b/src/DB.hs @@ -23,6 +23,7 @@ import Data.Time.Clock.POSIX (utcTimeToPOSIXSeconds) import Types +import Cardano.Db.Delete (deleteDelistedPool) import Cardano.Db.Insert (insertDelistedPool, insertPoolMetadata, insertPoolMetadataFetchError, @@ -65,6 +66,7 @@ data DataLayer = DataLayer , dlGetDelistedPools :: IO [PoolId] , dlCheckDelistedPool :: PoolId -> IO Bool , dlAddDelistedPool :: PoolId -> IO (Either DBFail PoolId) + , dlRemoveDelistedPool :: PoolId -> IO (Either DBFail PoolId) , dlGetAdminUsers :: IO (Either DBFail [AdminUser]) @@ -86,28 +88,25 @@ stubbedDataLayer ioDataMap ioDelistedPool = DataLayer case (Map.lookup (poolId, poolmdHash) ioDataMap') of Just poolOfflineMetadata' -> return . Right $ ("Test", poolOfflineMetadata') Nothing -> return $ Left (DbLookupPoolMetadataHash poolId poolmdHash) - , dlAddPoolMetadata = \ _ poolId poolmdHash poolMetadata poolTicker -> do -- TODO(KS): What if the pool metadata already exists? _ <- modifyIORef ioDataMap (Map.insert (poolId, poolmdHash) poolMetadata) return . Right $ poolMetadata - , dlAddReservedTicker = \tickerName poolMetadataHash -> panic "!" + , dlAddMetaDataReference = \poolId poolUrl poolMetadataHash -> panic "!" + , dlAddReservedTicker = \tickerName poolMetadataHash -> panic "!" , dlCheckReservedTicker = \tickerName -> panic "!" - , dlAddMetaDataReference = \poolId poolUrl poolMetadataHash -> panic "!" - , dlGetDelistedPools = readIORef ioDelistedPool - , dlCheckDelistedPool = \poolId -> do blacklistedPool' <- readIORef ioDelistedPool return $ poolId `elem` blacklistedPool' - , dlAddDelistedPool = \poolId -> do - _ <- modifyIORef ioDelistedPool (\pool -> [poolId] ++ pool) - -- TODO(KS): Do I even need to query this? - _blacklistedPool' <- readIORef ioDelistedPool + _ <- modifyIORef ioDelistedPool (\pools -> [poolId] ++ pools) + return $ Right poolId + , dlRemoveDelistedPool = \poolId -> do + _ <- modifyIORef ioDelistedPool (\pools -> filter (/= poolId) pools) return $ Right poolId , dlGetAdminUsers = return $ Right [] @@ -132,9 +131,7 @@ postgresqlDataLayer = DataLayer poolMetadata <- runDbAction Nothing $ queryPoolMetadata poolId poolMetadataHash let poolTickerName = Types.getTickerName . poolMetadataTickerName <$> poolMetadata let poolMetadata' = Types.getPoolMetadata . poolMetadataMetadata <$> poolMetadata - -- Ugh. Very sorry about this. return $ (,) <$> poolTickerName <*> poolMetadata' - , dlAddPoolMetadata = \ mRefId poolId poolHash poolMetadata poolTicker -> do let poolTickerName = Types.TickerName $ getPoolTicker poolTicker _ <- runDbAction Nothing $ insertPoolMetadata $ PoolMetadata poolId poolTickerName poolHash (Types.PoolMetadataRaw poolMetadata) mRefId @@ -151,7 +148,6 @@ postgresqlDataLayer = DataLayer , dlAddReservedTicker = \tickerName poolMetadataHash -> runDbAction Nothing $ insertReservedTicker $ ReservedTicker tickerName poolMetadataHash - , dlCheckReservedTicker = \tickerName -> runDbAction Nothing $ queryReservedTicker tickerName @@ -159,13 +155,17 @@ postgresqlDataLayer = DataLayer delistedPoolsDB <- runDbAction Nothing queryAllDelistedPools -- Convert from DB-specific type to the "general" type return $ map (\delistedPoolDB -> PoolId . getPoolId $ delistedPoolPoolId delistedPoolDB) delistedPoolsDB - , dlCheckDelistedPool = \poolId -> do runDbAction Nothing $ queryDelistedPool poolId - , dlAddDelistedPool = \poolId -> do delistedPoolId <- runDbAction Nothing $ insertDelistedPool $ DelistedPool poolId return $ Right poolId + , dlRemoveDelistedPool = \poolId -> do + isDeleted <- runDbAction Nothing $ deleteDelistedPool poolId + -- Up for a discussion, but this might be more sensible in the lower DB layer. + if isDeleted + then return $ Right poolId + else return $ Left RecordDoesNotExist , dlGetAdminUsers = do adminUsers <- runDbAction Nothing $ queryAdminUsers @@ -174,11 +174,9 @@ postgresqlDataLayer = DataLayer , dlAddFetchError = \poolMetadataFetchError -> do poolMetadataFetchErrorId <- runDbAction Nothing $ insertPoolMetadataFetchError poolMetadataFetchError return $ Right poolMetadataFetchErrorId - , dlGetFetchErrors = \mPoolId -> do poolMetadataFetchErrors <- runDbAction Nothing (queryPoolMetadataFetchError mPoolId) pure $ sequence $ Right <$> map convertPoolMetadataFetchError poolMetadataFetchErrors - } convertPoolMetadataFetchError :: PoolMetadataFetchError -> PoolFetchError diff --git a/src/Lib.hs b/src/Lib.hs index b72b84f..d1698d1 100644 --- a/src/Lib.hs +++ b/src/Lib.hs @@ -56,6 +56,8 @@ type DelistedPoolsAPI = "api" :> "v1" :> "delisted" :> ApiRes Get [PoolId] #ifdef DISABLE_BASIC_AUTH type DelistPoolAPI = "api" :> "v1" :> "delist" :> ReqBody '[JSON] PoolId :> ApiRes Patch PoolId +type EnlistPoolAPI = "api" :> "v1" :> "enlist" :> ReqBody '[JSON] PoolId :> ApiRes Patch PoolId + type FetchPoolErrorAPI = "api" :> "v1" :> "errors" :> QueryParam "poolId" PoolId :> ApiRes Get [PoolFetchError] #else -- The basic auth. @@ -63,10 +65,17 @@ type BasicAuthURL = BasicAuth "smash" User type DelistPoolAPI = BasicAuthURL :> "api" :> "v1" :> "delist" :> ReqBody '[JSON] PoolId :> ApiRes Patch PoolId +type EnlistPoolAPI = BasicAuthURL :> "api" :> "v1" :> "enlist" :> ReqBody '[JSON] PoolId :> ApiRes Patch PoolId + type FetchPoolErrorAPI = BasicAuthURL :> "api" :> "v1" :> "errors" :> QueryParam "poolId" PoolId :> ApiRes Get [PoolFetchError] #endif -type SmashAPI = OfflineMetadataAPI :<|> DelistPoolAPI :<|> FetchPoolErrorAPI :<|> DelistedPoolsAPI +-- The full API. +type SmashAPI = OfflineMetadataAPI + :<|> DelistedPoolsAPI + :<|> DelistPoolAPI + :<|> EnlistPoolAPI + :<|> FetchPoolErrorAPI -- | Swagger spec for Todo API. todoSwagger :: Swagger @@ -82,7 +91,7 @@ todoSwagger = Nothing Nothing Nothing - "0.0.1" + "1.1.0" -- | API for serving @swagger.json@. type SwaggerAPI = "swagger.json" :> Get '[JSON] Swagger @@ -97,10 +106,6 @@ fullAPI = Proxy smashApi :: Proxy SmashAPI smashApi = Proxy --- 403 if it is delisted --- 404 if it is not available (e.g. it could not be downloaded, or was invalid) --- 200 with the JSON content. Note that this must be the original content with the expected hash, not a re-rendering of the original. - runApp :: Configuration -> IO () runApp configuration = do let port = cPortNumber configuration @@ -223,48 +228,15 @@ server :: Configuration -> DataLayer -> Server API server configuration dataLayer = return todoSwagger :<|> getPoolOfflineMetadata dataLayer - :<|> postDelistPool dataLayer - :<|> fetchPoolErrorAPI dataLayer :<|> getDelistedPools dataLayer - -#ifdef DISABLE_BASIC_AUTH -fetchPoolErrorAPI :: DataLayer -> Maybe PoolId -> Handler (ApiResult DBFail [PoolFetchError]) -fetchPoolErrorAPI dataLayer mPoolId = convertIOToHandler $ do - - let getFetchErrors = dlGetFetchErrors dataLayer - fetchErrors <- getFetchErrors mPoolId - - return . ApiResult $ fetchErrors -#else -fetchPoolErrorAPI :: DataLayer -> User -> Maybe PoolId -> Handler (ApiResult DBFail [PoolFetchError]) -fetchPoolErrorAPI dataLayer _user mPoolId = convertIOToHandler $ do - - let getFetchErrors = dlGetFetchErrors dataLayer - fetchErrors <- getFetchErrors mPoolId - - return . ApiResult $ fetchErrors -#endif - -#ifdef DISABLE_BASIC_AUTH -postDelistPool :: DataLayer -> PoolId -> Handler (ApiResult DBFail PoolId) -postDelistPool dataLayer poolId = convertIOToHandler $ do - - let addDelistedPool = dlAddDelistedPool dataLayer - delistedPool' <- addDelistedPool poolId - - return . ApiResult $ delistedPool' -#else -postDelistPool :: DataLayer -> User -> PoolId -> Handler (ApiResult DBFail PoolId) -postDelistPool dataLayer user poolId = convertIOToHandler $ do - - let addDelistedPool = dlAddDelistedPool dataLayer - delistedPool' <- addDelistedPool poolId - - return . ApiResult $ delistedPool' -#endif + :<|> delistPool dataLayer + :<|> enlistPool dataLayer + :<|> fetchPoolErrorAPI dataLayer --- throwError err404 +-- 403 if it is delisted +-- 404 if it is not available (e.g. it could not be downloaded, or was invalid) +-- 200 with the JSON content. Note that this must be the original content with the expected hash, not a re-rendering of the original. getPoolOfflineMetadata :: DataLayer -> PoolId @@ -306,6 +278,68 @@ getDelistedPools dataLayer = convertIOToHandler $ do allDelistedPools <- getAllDelisted return . ApiResult . Right $ allDelistedPools + +#ifdef DISABLE_BASIC_AUTH +delistPool :: DataLayer -> PoolId -> Handler (ApiResult DBFail PoolId) +delistPool dataLayer poolId = convertIOToHandler $ do + + let addDelistedPool = dlAddDelistedPool dataLayer + delistedPool' <- addDelistedPool poolId + + return . ApiResult $ delistedPool' +#else +delistPool :: DataLayer -> User -> PoolId -> Handler (ApiResult DBFail PoolId) +delistPool dataLayer user poolId = convertIOToHandler $ do + + let addDelistedPool = dlAddDelistedPool dataLayer + delistedPool' <- addDelistedPool poolId + + return . ApiResult $ delistedPool' +#endif + + +#ifdef DISABLE_BASIC_AUTH +enlistPool :: DataLayer -> PoolId -> Handler (ApiResult DBFail PoolId) +enlistPool dataLayer poolId = convertIOToHandler $ do + + let removeDelistedPool = dlRemoveDelistedPool dataLayer + delistedPool' <- removeDelistedPool poolId + + case delistedPool' of + Left err -> throwIO err404 + Right poolId' -> return . ApiResult . Right $ poolId +#else +enlistPool :: DataLayer -> User -> PoolId -> Handler (ApiResult DBFail PoolId) +enlistPool dataLayer user poolId = convertIOToHandler $ do + + let removeDelistedPool = dlRemoveDelistedPool dataLayer + delistedPool' <- removeDelistedPool poolId + + case delistedPool' of + Left err -> throwIO err404 + Right poolId' -> return . ApiResult . Right $ poolId' +#endif + + +#ifdef DISABLE_BASIC_AUTH +fetchPoolErrorAPI :: DataLayer -> Maybe PoolId -> Handler (ApiResult DBFail [PoolFetchError]) +fetchPoolErrorAPI dataLayer mPoolId = convertIOToHandler $ do + + let getFetchErrors = dlGetFetchErrors dataLayer + fetchErrors <- getFetchErrors mPoolId + + return . ApiResult $ fetchErrors +#else +fetchPoolErrorAPI :: DataLayer -> User -> Maybe PoolId -> Handler (ApiResult DBFail [PoolFetchError]) +fetchPoolErrorAPI dataLayer _user mPoolId = convertIOToHandler $ do + + let getFetchErrors = dlGetFetchErrors dataLayer + fetchErrors <- getFetchErrors mPoolId + + return . ApiResult $ fetchErrors +#endif + + -- For now, we just ignore the @BasicAuth@ definition. instance (HasSwagger api) => HasSwagger (BasicAuth name typo :> api) where toSwagger _ = toSwagger (Proxy :: Proxy api) diff --git a/src/Types.hs b/src/Types.hs index 97bdbb8..36612b7 100644 --- a/src/Types.hs +++ b/src/Types.hs @@ -1,5 +1,7 @@ {-# LANGUAGE DeriveGeneric #-} {-# LANGUAGE DerivingStrategies #-} +{-# LANGUAGE MultiParamTypeClasses #-} + module Types ( ApplicationUser (..) @@ -31,6 +33,8 @@ module Types -- * HTTP , FetchError (..) , PoolFetchError (..) + -- * Util + , DBConversion (..) ) where import Cardano.Prelude @@ -307,6 +311,19 @@ instance ToJSON PoolFetchError where , "retryCount" .= retryCount ] - formatTimeToNormal :: Time.POSIXTime -> Text formatTimeToNormal = toS . formatTime defaultTimeLocale "%d.%m.%Y. %T" . Time.posixSecondsToUTCTime + +-- We need a "conversion" layer between custom DB types and the rest of the +-- codebase se we can have a clean separation and replace them at any point. +-- The natural place to have this conversion is in the types. +-- The choice is to use the typeclass here since the operation is general and +-- will be used multiple times (more than 3!). +class DBConversion dbType regularType where + convertFromDB :: dbType -> regularType + convertToDB :: regularType -> dbType + +--instance DBConversion Types.PoolId PoolId where +-- convertFromDB (Types.PoolId poolId) = PoolId poolId +-- convertFromDB (PoolId poolId) = Types.PoolId poolId + diff --git a/stack.yaml.lock b/stack.yaml.lock deleted file mode 100644 index 11d83e9..0000000 --- a/stack.yaml.lock +++ /dev/null @@ -1,1019 +0,0 @@ -# This file was autogenerated by Stack. -# You should not edit this file by hand. -# For more information, please see the documentation at: -# https://docs.haskellstack.org/en/stable/lock_files - -packages: -- completed: - subdir: cborg - name: cborg - version: 0.2.2.1 - git: https://github.com/well-typed/cborg - pantry-tree: - size: 2711 - sha256: 46906962e840d9d9c7a37c15fac8d5b5a7b44d172d037b46ba5256b524ce8b6f - commit: 42a83192749774268337258f4f94c97584b80ca6 - original: - subdir: cborg - git: https://github.com/well-typed/cborg - commit: 42a83192749774268337258f4f94c97584b80ca6 -- completed: - hackage: base58-bytestring-0.1.0@sha256:a1da72ee89d5450bac1c792d9fcbe95ed7154ab7246f2172b57bd4fd9b5eab79,1913 - pantry-tree: - size: 419 - sha256: 053784f8edef6433518c873a7c502dc75348f812e2384e1306f90467ea54f40b - original: - hackage: base58-bytestring-0.1.0 -- completed: - hackage: hedgehog-1.0.2@sha256:bc80f8df76a122c6c5d0bbf66efd53cca1c29691a53110628894802ba3f207e2,4582 - pantry-tree: - size: 2549 - sha256: 2129144cdfa14318a04c102eaf47ab751297ab62c1c97fa567e6abf21e4676e5 - original: - hackage: hedgehog-1.0.2 -- completed: - hackage: micro-recursion-schemes-5.0.2.2@sha256:3e7e4e3aa4b1bb1f6b72add2804602db1460dae541dc1c59d1b741477879be7d,1869 - pantry-tree: - size: 641 - sha256: 698cb91cbc5a3bcd8a82417a4632db96aaf84bd70eb6783693be44f8f0593c53 - original: - hackage: micro-recursion-schemes-5.0.2.2 -- completed: - hackage: quiet-0.2@sha256:60bb3cb8dd4a225557351b6d622147a4e541f1564847e05a81621365a155ad6c,1413 - pantry-tree: - size: 416 - sha256: c64a9ec9827f140768c01f1d9df1ed9ec9de2d70682a3822061bbe52cf85006c - original: - hackage: quiet-0.2 -- completed: - hackage: streaming-binary-0.3.0.1@sha256:f02a45297ca42a27cf9b3888711aafaf25e7cf7e640ac3133ebac856bb690083,1058 - pantry-tree: - size: 443 - sha256: fdc2e67e1117e5c536ae6c8707cedc9b08fa2344d8735bdefd56b9815fdc43d4 - original: - hackage: streaming-binary-0.3.0.1 -- completed: - hackage: canonical-json-0.6.0.0@sha256:9021f435ccb884a3b4c55bcc6b50eb19d5fc3cc3f29d5fcbdef016f5bbae23a2,3488 - pantry-tree: - size: 646 - sha256: 18e3afbd09480a247cd39355929d638e0888ccd2c3873cb79c5a5bc2231fae4f - original: - hackage: canonical-json-0.6.0.0 -- completed: - hackage: binary-0.8.7.0@sha256:ae3e6cca723ac55c54bbb3fa771bcf18142bc727afd57818e66d6ee6c8044f12,7705 - pantry-tree: - size: 1976 - sha256: 35e44b6d3ccf0d56fc5407dc3f0895e74696a66da189afbd65973c95743f5e25 - original: - hackage: binary-0.8.7.0 -- completed: - hackage: bimap-0.4.0@sha256:c59d587b56b575c299ba0c2fff44e630991a120a167de5a19cd7a81320f63c84,1717 - pantry-tree: - size: 414 - sha256: f88d0c994fdb5fe7780e4a1ed722a303520abebc12151451b9b0791551725d5d - original: - hackage: bimap-0.4.0 -- completed: - hackage: brick-0.47.1@sha256:de548e3c39cc393dafbc1ecfe788746103fe5233d5a69c2cca5da8ed819ba661,13868 - pantry-tree: - size: 3752 - sha256: bea3f31fbc18a56f0a78d3b27438eba5eb4a81d59c5ca120ddee4ca919183018 - original: - hackage: brick-0.47.1 -- completed: - hackage: config-ini-0.2.4.0@sha256:bfa283598b71db63e7ef431bf758bc267f68f2d5855725e987a986824ac03e97,3340 - pantry-tree: - size: 886 - sha256: 0b81e8d96be4ff42e570dc1b06b725c5fc56a2539acb36da6d96b126b44fd8a7 - original: - hackage: config-ini-0.2.4.0 -- completed: - hackage: containers-0.5.11.0@sha256:28ad7337057442f75bc689315ab4ec7bdf5e6b2c39668f306672cecd82c02798,16685 - pantry-tree: - size: 4849 - sha256: faa4e75922a28f7cfe9920c1d7ab3866b792cefcd29bf79f54cfe3b6b5f57cbf - original: - hackage: containers-0.5.11.0 -- completed: - hackage: data-clist-0.1.2.3@sha256:1e26251c8921821c8a1c7e168955449822f1bacf03d056cc59c84fd2863a0f8e,983 - pantry-tree: - size: 219 - sha256: d4b6685ed28130114f99aead9854656ea5a7006e8598ad948c953a20e786e43d - original: - hackage: data-clist-0.1.2.3 -- completed: - hackage: ekg-prometheus-adapter-0.1.0.4@sha256:d95487be7f282976cfb23c5b3826eaa1a279aff1e3821b29cf60ad3164e903ab,1494 - pantry-tree: - size: 300 - sha256: 7879229e738c82a340a9c5584a39771df432ef2e36c62430ee2b4160e2f562cd - original: - hackage: ekg-prometheus-adapter-0.1.0.4 -- completed: - hackage: esqueleto-3.2.2@sha256:11d0727b58a9473d7ecb3a2404b557b17a29e4b6874e803743f68a3a69c895f9,5483 - pantry-tree: - size: 1461 - sha256: 5a3d0287f757460581e18f16808acf054bd69ce1b4b8bb49b53dc6518b685530 - original: - hackage: esqueleto-3.2.2 -- completed: - hackage: generic-monoid-0.1.0.0@sha256:5af8a7d43a97fa9f148ef614f7fe5e8b01c9c487110732015e77834ee07efdc7,856 - pantry-tree: - size: 393 - sha256: d162e8289e15bbccfeb12c9e31ccc833f558dd353646672be2d67f7c0497f51a - original: - hackage: generic-monoid-0.1.0.0 -- completed: - hackage: libsystemd-journal-1.4.4@sha256:ad86652aad0c1755945a15c323ec77afc139d1f66d60dfe2c02c1caf6efd913e,1238 - pantry-tree: - size: 280 - sha256: 3e3ac394e103c996eb606acf2c31bf90ec97a7e758afa0165d4c1afc2cf21a4d - original: - hackage: libsystemd-journal-1.4.4 -- completed: - hackage: network-3.1.1.1@sha256:b704cb6676c03e98267190df797497587576a2e96094550ea143415239bbe66e,4268 - pantry-tree: - size: 3297 - sha256: 975170abd872edadd5afea9911eaebfd7683fe6e53f0a898343743d938b7b80d - original: - hackage: network-3.1.1.1 -- completed: - hackage: snap-core-1.0.4.1@sha256:8f9e5b2e8af35c2d620e284c027ff446b8b4fb3befeb0460f2409924f3d31b55,9669 - pantry-tree: - size: 3376 - sha256: fc9d9bee8a9cc4db7ff3cb7fd62855d4e222d3d926db6a739b9fb74602ea601b - original: - hackage: snap-core-1.0.4.1 -- completed: - hackage: snap-server-1.1.1.1@sha256:c5e1e4d89fbfb1d1f2cf4238a031c586a0461ca7e0ac85713a38f815f218aaf6,15089 - pantry-tree: - size: 3360 - sha256: 6491260abc6613fdfd333cf2a95d7078f055c5ed14a07588b1c049414a5b46aa - original: - hackage: snap-server-1.1.1.1 -- completed: - hackage: persistent-2.10.5.1@sha256:878a69d07888af8889195dca35b66b03d1f6fdb933f0af1107a9760541672d55,4740 - pantry-tree: - size: 2096 - sha256: 58316a510ecb23b99468d4f6aab8af468538f8927720bc7823425d8e441f2a39 - original: - hackage: persistent-2.10.5.1 -- completed: - hackage: persistent-postgresql-2.10.1.2@sha256:e9a16e1dd9be459bb7580fe8deea36ff16d089fddc31246d22c19e8e8fdfefe5,2873 - pantry-tree: - size: 740 - sha256: 3c62919b34f42839edcd711d36775aa98b8105132133038f33171e3d495b1839 - original: - hackage: persistent-postgresql-2.10.1.2 -- completed: - hackage: persistent-template-2.8.2.3@sha256:26f398b06fdc05c6a1a1a75afdc06f28dfd1f33626249db7e28aa3f117d52a0a,2774 - pantry-tree: - size: 561 - sha256: 3dee1f219ab93cab19c5b87e25a0942c5bae0b75b260d71d377fc8c04f0b88d9 - original: - hackage: persistent-template-2.8.2.3 -- completed: - hackage: prometheus-2.1.2@sha256:dbd20f6003bd0b4602433b67ced7696322ec486143efc12b1d452dd312152224,3990 - pantry-tree: - size: 1559 - sha256: 1365a10d00c6c0e14a0c13de2fd281409dbc10416dd7fa74f22bfe4bf7bbfc60 - original: - hackage: prometheus-2.1.2 -- completed: - hackage: pvss-0.2.0@sha256:8a35561a8620e299ec8b85705c2721eb0c5866c68c426ba395691560ee02c3e4,2382 - pantry-tree: - size: 685 - sha256: 32a629c92f858a287a543d530d2180012f4b26eaa0eb3e50a952a63f6a3d9607 - original: - hackage: pvss-0.2.0 -- completed: - hackage: tasty-hedgehog-1.0.0.2@sha256:874e810030bd982d7bc7fd23ae9db1c22938bb14cecf8d869971c632fbb892ec,1845 - pantry-tree: - size: 330 - sha256: 60b7210949aaf5597a524bcf77d65d0bf63646af6c3c995c18a6777d518395d7 - original: - hackage: tasty-hedgehog-1.0.0.2 -- completed: - hackage: text-zipper-0.10.1@sha256:8b73a97a3717a17df9b0a722b178950c476ff2268ca5c583e99d010c94af849e,1471 - pantry-tree: - size: 600 - sha256: ebd5f0e2fc8c59b1bde6706cef1fdb012d52bb26b3953a97a4fa6502f56cdd65 - original: - hackage: text-zipper-0.10.1 -- completed: - hackage: time-units-1.0.0@sha256:27cf54091c4a0ca73d504fc11d5c31ab4041d17404fe3499945e2055697746c1,928 - pantry-tree: - size: 212 - sha256: 9b516d4195fcea22cd1f4335cfe210e88deca397ba7dacc494d5a2feb69e1af8 - original: - hackage: time-units-1.0.0 -- completed: - hackage: word-wrap-0.4.1@sha256:f72233b383ef569c557bfd9812cbb8e306c415ce509082c0bd15ee51c0239ccc,1606 - pantry-tree: - size: 423 - sha256: dcf5071895ee477e60e3c9de1e30eb711e11e9a7335db160616f80baeb20ad71 - original: - hackage: word-wrap-0.4.1 -- completed: - hackage: transformers-except-0.1.1@sha256:6c12ef8e632a10440968cd541e75074bd6ef4b5ff4012677f8f8189d7b2d0df6,1387 - pantry-tree: - size: 322 - sha256: db2c54886fc6de6966bd00d437bb790053d621d8bb357a116040feb80845fd82 - original: - hackage: transformers-except-0.1.1 -- completed: - hackage: text-ansi-0.1.0@sha256:2112c437a4be5337a3e99b63aa05414bac03f1f6e6f5147048f9c9c5777a1d62,1389 - pantry-tree: - size: 317 - sha256: d2aa51b82fed1411d86a35e3a0c4bf19e043464017bdda63d6ff5c97c444d5ed - original: - hackage: text-ansi-0.1.0 -- completed: - hackage: Diff-0.4.0@sha256:b5cfbeed498f555a18774ffd549bbeff7a24bdfe5984154dcfc9f4328a3c2847,1275 - pantry-tree: - size: 415 - sha256: 01b215c454152a0fe10a5378a4013d92e89da2f0695ffffc466ead5f3343cf3a - original: - hackage: Diff-0.4.0 -- completed: - hackage: katip-0.8.3.0@sha256:8a67c0aec3ba1f0eabcfae443cb909e4cf9405e29bac99ccf1420f1f1bbda9c4,4097 - pantry-tree: - size: 1140 - sha256: cad8c67256ec85819309d77bdcbc15b67885940ef76f2b850c8be20c2efd0149 - original: - hackage: katip-0.8.3.0 -- completed: - hackage: moo-1.2@sha256:0c4be1a01548db785dcbbe6b8c98579dbf03c5b3b536e0420dce3ba6a61337cb,5951 - pantry-tree: - size: 2861 - sha256: a32c48fefc42e1f7775c868794a91604522a59a1c0d2b2accff12197329f2d17 - original: - hackage: moo-1.2 -- completed: - hackage: gray-code-0.3.1@sha256:2c8a4ed9c9ee37320305610604d6d93504e0813d7c9768949af418b53043185a,2388 - pantry-tree: - size: 506 - sha256: 7b133d19b93231ea84b286cfe1a2038d67f9b553826845b33fad6526464e1de7 - original: - hackage: gray-code-0.3.1 -- completed: - hackage: Unique-0.4.7.6@sha256:a1ff411f4d68c756e01e8d532fbe8e57f1ac77f2cc0ee8a999770be2bca185c5,2723 - pantry-tree: - size: 1366 - sha256: 587d279ff94e8d6f43da3710634ca3611fa4f6886b1e541a73c69303c00297b9 - original: - hackage: Unique-0.4.7.6 -- completed: - hackage: statistics-linreg-0.3@sha256:95c6efe6c7f6b26bc6e9ada90ab2d18216371cf59a6ef2b517b4a6fd35d9a76f,2544 - pantry-tree: - size: 233 - sha256: 8d1978a6497e4fd9c66b0c5f24ea659aa9714f5b7e8b1dcfce7fb7bb8d4dee0e - original: - hackage: statistics-linreg-0.3 -- completed: - hackage: socks-0.6.1@sha256:ac190808eea704672df18f702e8f2ad0b7a4d0af528e95ee55ea6ee0be672e2a,1258 - pantry-tree: - size: 692 - sha256: 53d29c06c42e737ae99660e077c7c4b286f1272b3394ad7f74163867a5b3b8fa - original: - hackage: socks-0.6.1 -- completed: - hackage: servant-0.17@sha256:e78734cb6b75c5d1e52e8f5e16bc3f557154a580bbde4932a7e1a6a90da7eb04,5029 - pantry-tree: - size: 2392 - sha256: 36561a606c35393386aa48b7cc2407fa4013aba62a19d69f004ec9c2010209aa - original: - hackage: servant-0.17 -- completed: - hackage: servant-server-0.17@sha256:1a5adf564f0b703535eb733f249b282ef2ca7b587a303c357b549fb88e7a6dcd,5388 - pantry-tree: - size: 2460 - sha256: ea65ba54acb4362efedbfa7db616a51023579a6c83f18ab6d2ea6a84dea56021 - original: - hackage: servant-server-0.17 -- completed: - hackage: connection-0.3.1@sha256:65da1c055610095733bcd228d85dff80804b23a5d18fede994a0f9fcd1b0c121,1554 - pantry-tree: - size: 386 - sha256: 13a2c21049e69068e4c3d725533d94729772f2d3e05f5ef611bef28363b08798 - original: - hackage: connection-0.3.1 -- completed: - hackage: http-api-data-0.4.1.1@sha256:998b3a5e4d2707dff19e2a877c2f9859ac5fdf491a94d31024d20212c2c250b7,3704 - pantry-tree: - size: 887 - sha256: 4e76b5bc6a9e45679e25665be7dd1ed8161840d4d781e3e125557e6f2b9d1fd7 - original: - hackage: http-api-data-0.4.1.1 -- completed: - hackage: time-compat-1.9.2.2@sha256:ccf268e6ec91a6d9a79392697634c670c095a34a60d1ccfa1be1c84f20bb24c5,4254 - pantry-tree: - size: 3602 - sha256: f16cc56a43fa6047ad46b23770d5a16b9c400fd8d019e9b010b766a13e8eb588 - original: - hackage: time-compat-1.9.2.2 -- completed: - hackage: quiet-0.2@sha256:60bb3cb8dd4a225557351b6d622147a4e541f1564847e05a81621365a155ad6c,1413 - pantry-tree: - size: 416 - sha256: c64a9ec9827f140768c01f1d9df1ed9ec9de2d70682a3822061bbe52cf85006c - original: - hackage: quiet-0.2 -- completed: - hackage: base64-0.4.2.2@sha256:7aaab1623fd3a003efc840f679d6f582b33536c8e508bd989bc88c22618fa6bd,2849 - pantry-tree: - size: 2116 - sha256: d83c62f2c369dd8625e7abf2fbce72105885bd100c42b176ba77cffd0aa62909 - original: - hackage: base64-0.4.2.2 -- completed: - hackage: bech32-1.1.0@sha256:33234b3ae405198b0f4af484753c6a06b4edb107dc256eafa6ef6d0ffe1d74c5,2551 - pantry-tree: - size: 534 - sha256: 9f52146b3734b3c292407687328fdebb49eb05f943f23764cfb7ed921ac86647 - original: - hackage: bech32-1.1.0 -- completed: - hackage: ghc-byteorder-4.11.0.0.10@sha256:5ee4a907279bfec27b0f9de7b8fba4cecfd34395a0235a7784494de70ad4e98f,1535 - pantry-tree: - size: 169 - sha256: 54a4636f72c3b9eff7f081714cb1a7b809fc1f3b2e239caaf0d65d79aa9cb56f - original: - hackage: ghc-byteorder-4.11.0.0.10 -- completed: - hackage: quickcheck-state-machine-0.6.0@sha256:3e4f8df0f6b5d415e3c8840dc75034a63e37f56f5f8cfa1035ded16345235ac4,3825 - pantry-tree: - size: 1926 - sha256: ae502fd7f4c6680294149bed482d1896904c1259d5ae614093da01e0731ec92e - original: - hackage: quickcheck-state-machine-0.6.0 -- completed: - subdir: cardano-db - name: cardano-db - version: 3.1.0 - git: https://github.com/input-output-hk/cardano-db-sync - pantry-tree: - size: 2615 - sha256: a7c8a918a6507b9103030d147fb3346b7b9dcec6662cb9cd564d6a4e4107c463 - commit: 7f9959c9a0746d44d331cffcf7abb0ef4f4fb948 - original: - subdir: cardano-db - git: https://github.com/input-output-hk/cardano-db-sync - commit: 7f9959c9a0746d44d331cffcf7abb0ef4f4fb948 -- completed: - subdir: cardano-db-sync - name: cardano-db-sync - version: 3.1.0 - git: https://github.com/input-output-hk/cardano-db-sync - pantry-tree: - size: 1945 - sha256: ca8758aaa3b75df35ecd2bfabd89f242f3461c1bde4014cb33d5be33449e9aad - commit: 7f9959c9a0746d44d331cffcf7abb0ef4f4fb948 - original: - subdir: cardano-db-sync - git: https://github.com/input-output-hk/cardano-db-sync - commit: 7f9959c9a0746d44d331cffcf7abb0ef4f4fb948 -- completed: - subdir: cardano-db-sync-extended - name: cardano-db-sync-extended - version: 3.1.0 - git: https://github.com/input-output-hk/cardano-db-sync - pantry-tree: - size: 416 - sha256: f93d442f08cf116fed6f625e5dc5ee4e812da8f875c91e31c4d533514a786057 - commit: 7f9959c9a0746d44d331cffcf7abb0ef4f4fb948 - original: - subdir: cardano-db-sync-extended - git: https://github.com/input-output-hk/cardano-db-sync - commit: 7f9959c9a0746d44d331cffcf7abb0ef4f4fb948 -- completed: - subdir: cardano-shell - name: cardano-shell - version: 0.1.0.0 - git: https://github.com/input-output-hk/cardano-shell - pantry-tree: - size: 3420 - sha256: fc6a60dc4ce5ff86345b6721e98fcf1f583557c5f5eaa4177416d521999a480f - commit: b3231f7f3b8b6d07fef08f8cc41aa804524f94c2 - original: - subdir: cardano-shell - git: https://github.com/input-output-hk/cardano-shell - commit: b3231f7f3b8b6d07fef08f8cc41aa804524f94c2 -- completed: - name: cardano-crypto - version: 1.1.0 - git: https://github.com/input-output-hk/cardano-crypto - pantry-tree: - size: 5282 - sha256: dd0cccf3ea66557d90599f596467ca0c4a758b644393da913629572cb83c5613 - commit: 2547ad1e80aeabca2899951601079408becbc92c - original: - git: https://github.com/input-output-hk/cardano-crypto - commit: 2547ad1e80aeabca2899951601079408becbc92c -- completed: - subdir: . - name: cardano-prelude - version: 0.1.0.0 - git: https://github.com/input-output-hk/cardano-prelude - pantry-tree: - size: 4461 - sha256: 5b4f0e02e9422ee0eb098e4597757b0b4d6d78c8a9ffd2d76dc489926ebd54dc - commit: 316c854d1d3089f480708ad5cd5ecf8a74423ddd - original: - subdir: . - git: https://github.com/input-output-hk/cardano-prelude - commit: 316c854d1d3089f480708ad5cd5ecf8a74423ddd -- completed: - subdir: test - name: cardano-prelude-test - version: 0.1.0.0 - git: https://github.com/input-output-hk/cardano-prelude - pantry-tree: - size: 1153 - sha256: bd6687f172eb8150e5f0142a49349180f9ac611ade8cbb4bf6b778b9ffc5266f - commit: 316c854d1d3089f480708ad5cd5ecf8a74423ddd - original: - subdir: test - git: https://github.com/input-output-hk/cardano-prelude - commit: 316c854d1d3089f480708ad5cd5ecf8a74423ddd -- completed: - subdir: contra-tracer - name: contra-tracer - version: 0.1.0.0 - git: https://github.com/input-output-hk/iohk-monitoring-framework - pantry-tree: - size: 338 - sha256: 7902fbc68aba33d6f139d0815a6e71e704a62684bf2bddaca9959e569301f25d - commit: efa4b5ecd7f0a13124616b12679cd42517cd905a - original: - subdir: contra-tracer - git: https://github.com/input-output-hk/iohk-monitoring-framework - commit: efa4b5ecd7f0a13124616b12679cd42517cd905a -- completed: - subdir: iohk-monitoring - name: iohk-monitoring - version: 0.1.10.1 - git: https://github.com/input-output-hk/iohk-monitoring-framework - pantry-tree: - size: 4798 - sha256: 85a90850dd6c0fa5828a7757382265bb5fb4ad35f6d5eb2ea218fe0ee80b271c - commit: efa4b5ecd7f0a13124616b12679cd42517cd905a - original: - subdir: iohk-monitoring - git: https://github.com/input-output-hk/iohk-monitoring-framework - commit: efa4b5ecd7f0a13124616b12679cd42517cd905a -- completed: - subdir: plugins/backend-aggregation - name: lobemo-backend-aggregation - version: 0.1.0.0 - git: https://github.com/input-output-hk/iohk-monitoring-framework - pantry-tree: - size: 343 - sha256: fe1d61fe24e95753a3824d453143ef4e7a51ccba2331dd1160a58c8b2abedc95 - commit: efa4b5ecd7f0a13124616b12679cd42517cd905a - original: - subdir: plugins/backend-aggregation - git: https://github.com/input-output-hk/iohk-monitoring-framework - commit: efa4b5ecd7f0a13124616b12679cd42517cd905a -- completed: - subdir: plugins/backend-ekg - name: lobemo-backend-ekg - version: 0.1.0.1 - git: https://github.com/input-output-hk/iohk-monitoring-framework - pantry-tree: - size: 409 - sha256: 7f0145c55891efb584effa03427a07221a0bf28a5d37b5ffa1feae5db53c9b45 - commit: efa4b5ecd7f0a13124616b12679cd42517cd905a - original: - subdir: plugins/backend-ekg - git: https://github.com/input-output-hk/iohk-monitoring-framework - commit: efa4b5ecd7f0a13124616b12679cd42517cd905a -- completed: - subdir: plugins/backend-monitoring - name: lobemo-backend-monitoring - version: 0.1.0.0 - git: https://github.com/input-output-hk/iohk-monitoring-framework - pantry-tree: - size: 471 - sha256: 37c92978d1dbcc78c17e25ff9cb95dbc0770a5165fdca3184249ed05a8335d1e - commit: efa4b5ecd7f0a13124616b12679cd42517cd905a - original: - subdir: plugins/backend-monitoring - git: https://github.com/input-output-hk/iohk-monitoring-framework - commit: efa4b5ecd7f0a13124616b12679cd42517cd905a -- completed: - subdir: plugins/backend-trace-forwarder - name: lobemo-backend-trace-forwarder - version: 0.1.0.0 - git: https://github.com/input-output-hk/iohk-monitoring-framework - pantry-tree: - size: 350 - sha256: a619867f2613b76c4c9105095e13798b668821cef21c6cd9d482fb7fcb9539e5 - commit: efa4b5ecd7f0a13124616b12679cd42517cd905a - original: - subdir: plugins/backend-trace-forwarder - git: https://github.com/input-output-hk/iohk-monitoring-framework - commit: efa4b5ecd7f0a13124616b12679cd42517cd905a -- completed: - subdir: plugins/scribe-systemd - name: lobemo-scribe-systemd - version: 0.1.0.0 - git: https://github.com/input-output-hk/iohk-monitoring-framework - pantry-tree: - size: 332 - sha256: f0481607ca5a9ea854202ba5a3bc91b85b14617e6d3ae471ae05bfad7cf1aaa1 - commit: efa4b5ecd7f0a13124616b12679cd42517cd905a - original: - subdir: plugins/scribe-systemd - git: https://github.com/input-output-hk/iohk-monitoring-framework - commit: efa4b5ecd7f0a13124616b12679cd42517cd905a -- completed: - subdir: tracer-transformers - name: tracer-transformers - version: 0.1.0.1 - git: https://github.com/input-output-hk/iohk-monitoring-framework - pantry-tree: - size: 631 - sha256: ef26fb18daa504590d1b60a320d2dbadac77c68be750aa873eb33bfbae2a4020 - commit: efa4b5ecd7f0a13124616b12679cd42517cd905a - original: - subdir: tracer-transformers - git: https://github.com/input-output-hk/iohk-monitoring-framework - commit: efa4b5ecd7f0a13124616b12679cd42517cd905a -- completed: - subdir: binary - name: cardano-binary - version: 1.5.0 - git: https://github.com/input-output-hk/cardano-base - pantry-tree: - size: 1884 - sha256: b91847fafaf9798a563b6834ab9469fc2d573059662beee4ea8c07c17e485d94 - commit: 7d795c3040ea7785812efa1c97864bbb41b15d3e - original: - subdir: binary - git: https://github.com/input-output-hk/cardano-base - commit: 7d795c3040ea7785812efa1c97864bbb41b15d3e -- completed: - subdir: cardano-crypto-praos - name: cardano-crypto-praos - version: 2.0.0 - git: https://github.com/input-output-hk/cardano-base - pantry-tree: - size: 1886 - sha256: 32619d69330c30dd8dbf359ce5c91028c75da179c185cf2e6bf7400af885e594 - commit: 7d795c3040ea7785812efa1c97864bbb41b15d3e - original: - subdir: cardano-crypto-praos - git: https://github.com/input-output-hk/cardano-base - commit: 7d795c3040ea7785812efa1c97864bbb41b15d3e -- completed: - subdir: binary/test - name: cardano-binary-test - version: 1.3.0 - git: https://github.com/input-output-hk/cardano-base - pantry-tree: - size: 1007 - sha256: e86851cebba16ed9ab7cb76d4531a391ef37f19eb0fc24efdc7b3a7f77efef56 - commit: 7d795c3040ea7785812efa1c97864bbb41b15d3e - original: - subdir: binary/test - git: https://github.com/input-output-hk/cardano-base - commit: 7d795c3040ea7785812efa1c97864bbb41b15d3e -- completed: - subdir: cardano-crypto-class - name: cardano-crypto-class - version: 2.0.0 - git: https://github.com/input-output-hk/cardano-base - pantry-tree: - size: 2406 - sha256: 2123996055b174634a83f13dffdee581aa7bca479d94dc8b05439a9ed5289fd0 - commit: 7d795c3040ea7785812efa1c97864bbb41b15d3e - original: - subdir: cardano-crypto-class - git: https://github.com/input-output-hk/cardano-base - commit: 7d795c3040ea7785812efa1c97864bbb41b15d3e -- completed: - subdir: slotting - name: cardano-slotting - version: 0.1.0.0 - git: https://github.com/input-output-hk/cardano-base - pantry-tree: - size: 648 - sha256: f76432c3ccfb6dc635343e7a505239394df9339a10147377d6ada3d66c1537d9 - commit: 7d795c3040ea7785812efa1c97864bbb41b15d3e - original: - subdir: slotting - git: https://github.com/input-output-hk/cardano-base - commit: 7d795c3040ea7785812efa1c97864bbb41b15d3e -- completed: - name: goblins - version: 0.1.0.0 - git: https://github.com/input-output-hk/goblins - pantry-tree: - size: 928 - sha256: f4ed50e2715fbcfd91e326b1c46d5ece67accd17e4761db6a0bb8e1123bdea17 - commit: 26d35ad52fe9ade3391532dbfeb2f416f07650bc - original: - git: https://github.com/input-output-hk/goblins - commit: 26d35ad52fe9ade3391532dbfeb2f416f07650bc -- completed: - subdir: byron/crypto - name: cardano-crypto-wrapper - version: 1.3.0 - git: https://github.com/input-output-hk/cardano-ledger-specs - pantry-tree: - size: 4532 - sha256: 0710cdaba50b9f8f063be3caf64e63b510b2f9ae8a3e9b3baae83c5ac9efecff - commit: 183a70c001587d9b1977541deae28c3e44713907 - original: - subdir: byron/crypto - git: https://github.com/input-output-hk/cardano-ledger-specs - commit: 183a70c001587d9b1977541deae28c3e44713907 -- completed: - subdir: byron/crypto/test - name: cardano-crypto-test - version: 1.3.0 - git: https://github.com/input-output-hk/cardano-ledger-specs - pantry-tree: - size: 2412 - sha256: 88aba4aecf2734753e3a18e39aef0e895b4d9835d8858b138135c20dda58ecbe - commit: 183a70c001587d9b1977541deae28c3e44713907 - original: - subdir: byron/crypto/test - git: https://github.com/input-output-hk/cardano-ledger-specs - commit: 183a70c001587d9b1977541deae28c3e44713907 -- completed: - subdir: byron/chain/executable-spec - name: byron-spec-chain - version: 0.1.0.0 - git: https://github.com/input-output-hk/cardano-ledger-specs - pantry-tree: - size: 1031 - sha256: 761f835535a74066c6adf300c1a3ce7a30c32ec40b81602344104192f4acaa2e - commit: 183a70c001587d9b1977541deae28c3e44713907 - original: - subdir: byron/chain/executable-spec - git: https://github.com/input-output-hk/cardano-ledger-specs - commit: 183a70c001587d9b1977541deae28c3e44713907 -- completed: - subdir: byron/ledger/executable-spec - name: byron-spec-ledger - version: 0.1.0.0 - git: https://github.com/input-output-hk/cardano-ledger-specs - pantry-tree: - size: 5104 - sha256: 3d36c802452fcc1a04eee066518cf80d22f74c12c5ced0551cf1a6ed4b2c93ee - commit: 183a70c001587d9b1977541deae28c3e44713907 - original: - subdir: byron/ledger/executable-spec - git: https://github.com/input-output-hk/cardano-ledger-specs - commit: 183a70c001587d9b1977541deae28c3e44713907 -- completed: - subdir: byron/ledger/impl - name: cardano-ledger - version: 0.1.0.0 - git: https://github.com/input-output-hk/cardano-ledger-specs - pantry-tree: - size: 19676 - sha256: d9ad459a6d7082423bc95d96d315ecf299c5bdff86bfec7e26dd60511f184421 - commit: 183a70c001587d9b1977541deae28c3e44713907 - original: - subdir: byron/ledger/impl - git: https://github.com/input-output-hk/cardano-ledger-specs - commit: 183a70c001587d9b1977541deae28c3e44713907 -- completed: - subdir: byron/ledger/impl/test - name: cardano-ledger-test - version: 1.3.0 - git: https://github.com/input-output-hk/cardano-ledger-specs - pantry-tree: - size: 11396 - sha256: 03f4ebbff508d4b00a6a45b1f41e49d8aecbe6b31eddd17bd8258c74cbef975b - commit: 183a70c001587d9b1977541deae28c3e44713907 - original: - subdir: byron/ledger/impl/test - git: https://github.com/input-output-hk/cardano-ledger-specs - commit: 183a70c001587d9b1977541deae28c3e44713907 -- completed: - subdir: semantics/executable-spec - name: small-steps - version: 0.1.0.0 - git: https://github.com/input-output-hk/cardano-ledger-specs - pantry-tree: - size: 913 - sha256: 5de1cd924ca81e8c466b60a5aebca8b7d1f661644c886564a49c0c28e8d216b5 - commit: 183a70c001587d9b1977541deae28c3e44713907 - original: - subdir: semantics/executable-spec - git: https://github.com/input-output-hk/cardano-ledger-specs - commit: 183a70c001587d9b1977541deae28c3e44713907 -- completed: - subdir: semantics/small-steps-test - name: small-steps-test - version: 0.1.0.0 - git: https://github.com/input-output-hk/cardano-ledger-specs - pantry-tree: - size: 975 - sha256: f5cccc1ca79b9360d72bf7697a18ad92ad3e76ba0de171f2ba7a970385337f35 - commit: 183a70c001587d9b1977541deae28c3e44713907 - original: - subdir: semantics/small-steps-test - git: https://github.com/input-output-hk/cardano-ledger-specs - commit: 183a70c001587d9b1977541deae28c3e44713907 -- completed: - subdir: shelley/chain-and-ledger/dependencies/non-integer - name: shelley-spec-non-integral - version: 0.1.0.0 - git: https://github.com/input-output-hk/cardano-ledger-specs - pantry-tree: - size: 1939 - sha256: d11be0068e5d8e89306532920370b6ed3385f7426cc10d580cf17ac83b5ae402 - commit: 183a70c001587d9b1977541deae28c3e44713907 - original: - subdir: shelley/chain-and-ledger/dependencies/non-integer - git: https://github.com/input-output-hk/cardano-ledger-specs - commit: 183a70c001587d9b1977541deae28c3e44713907 -- completed: - subdir: shelley/chain-and-ledger/executable-spec - name: shelley-spec-ledger - version: 0.1.0.0 - git: https://github.com/input-output-hk/cardano-ledger-specs - pantry-tree: - size: 9459 - sha256: be9518ceec890cc442c87fe4c77010bdd705687921a4bb404088433e03164a07 - commit: 183a70c001587d9b1977541deae28c3e44713907 - original: - subdir: shelley/chain-and-ledger/executable-spec - git: https://github.com/input-output-hk/cardano-ledger-specs - commit: 183a70c001587d9b1977541deae28c3e44713907 -- completed: - subdir: shelley/chain-and-ledger/executable-spec/test - name: shelley-spec-ledger-test - version: 0.1.0.0 - git: https://github.com/input-output-hk/cardano-ledger-specs - pantry-tree: - size: 4363 - sha256: 5518877c115988ae91239b5aea09b0fbe3d83637a7ada946b9b9f36a22ee8525 - commit: 183a70c001587d9b1977541deae28c3e44713907 - original: - subdir: shelley/chain-and-ledger/executable-spec/test - git: https://github.com/input-output-hk/cardano-ledger-specs - commit: 183a70c001587d9b1977541deae28c3e44713907 -- completed: - subdir: cardano-client - name: cardano-client - version: 0.1.0.0 - git: https://github.com/input-output-hk/ouroboros-network - pantry-tree: - size: 233 - sha256: 203a20f233a5b32d01afa83e92c491a7985ca608d2bd4a1764ed43a46685baf5 - commit: ec74d1c463b6d18bdca2b714abe730c1d237cc32 - original: - subdir: cardano-client - git: https://github.com/input-output-hk/ouroboros-network - commit: ec74d1c463b6d18bdca2b714abe730c1d237cc32 -- completed: - subdir: io-sim - name: io-sim - version: 0.1.0.0 - git: https://github.com/input-output-hk/ouroboros-network - pantry-tree: - size: 388 - sha256: 07a69abdffea4dbeeb4716841c55eef1c9da84af2cf6ffb8e1690cf383414faf - commit: ec74d1c463b6d18bdca2b714abe730c1d237cc32 - original: - subdir: io-sim - git: https://github.com/input-output-hk/ouroboros-network - commit: ec74d1c463b6d18bdca2b714abe730c1d237cc32 -- completed: - subdir: io-sim-classes - name: io-sim-classes - version: 0.1.0.0 - git: https://github.com/input-output-hk/ouroboros-network - pantry-tree: - size: 1053 - sha256: 02b4a7eeaad0b62257ffd5fca2ad394c5e70d1d6bc2ea21b0b1d02c301f7eacd - commit: ec74d1c463b6d18bdca2b714abe730c1d237cc32 - original: - subdir: io-sim-classes - git: https://github.com/input-output-hk/ouroboros-network - commit: ec74d1c463b6d18bdca2b714abe730c1d237cc32 -- completed: - subdir: network-mux - name: network-mux - version: 0.1.0.0 - git: https://github.com/input-output-hk/ouroboros-network - pantry-tree: - size: 1939 - sha256: 2fff559cbe905b0a985ed63c8b55e9583e31ebe1b45e182a36d5680c8d943fc5 - commit: ec74d1c463b6d18bdca2b714abe730c1d237cc32 - original: - subdir: network-mux - git: https://github.com/input-output-hk/ouroboros-network - commit: ec74d1c463b6d18bdca2b714abe730c1d237cc32 -- completed: - subdir: ouroboros-network - name: ouroboros-network - version: 0.1.0.0 - git: https://github.com/input-output-hk/ouroboros-network - pantry-tree: - size: 10372 - sha256: bf015caf1f0ee1d9fc7bb67144759ead3d2dd31de195dd0aee6bb08f66f9f82f - commit: ec74d1c463b6d18bdca2b714abe730c1d237cc32 - original: - subdir: ouroboros-network - git: https://github.com/input-output-hk/ouroboros-network - commit: ec74d1c463b6d18bdca2b714abe730c1d237cc32 -- completed: - subdir: ouroboros-network-framework - name: ouroboros-network-framework - version: 0.1.0.0 - git: https://github.com/input-output-hk/ouroboros-network - pantry-tree: - size: 3672 - sha256: 01c384c19db5dee728c60f66cd0a99e713c499eccc7a95fd42e72ae0b27467df - commit: ec74d1c463b6d18bdca2b714abe730c1d237cc32 - original: - subdir: ouroboros-network-framework - git: https://github.com/input-output-hk/ouroboros-network - commit: ec74d1c463b6d18bdca2b714abe730c1d237cc32 -- completed: - subdir: Win32-network - name: Win32-network - version: 0.1.0.0 - git: https://github.com/input-output-hk/ouroboros-network - pantry-tree: - size: 1802 - sha256: f36b6a44badc4d2867891a7d543a4408fbed31f1936a9b298a8dfb949efdcc92 - commit: ec74d1c463b6d18bdca2b714abe730c1d237cc32 - original: - subdir: Win32-network - git: https://github.com/input-output-hk/ouroboros-network - commit: ec74d1c463b6d18bdca2b714abe730c1d237cc32 -- completed: - subdir: ouroboros-consensus - name: ouroboros-consensus - version: 0.1.0.0 - git: https://github.com/input-output-hk/ouroboros-network - pantry-tree: - size: 31346 - sha256: 4ccd4d09b4f5996796c41237b30d9702129ffd25ad65c9e4344562a0c7366a2f - commit: ec74d1c463b6d18bdca2b714abe730c1d237cc32 - original: - subdir: ouroboros-consensus - git: https://github.com/input-output-hk/ouroboros-network - commit: ec74d1c463b6d18bdca2b714abe730c1d237cc32 -- completed: - subdir: ouroboros-consensus-byron - name: ouroboros-consensus-byron - version: 0.1.0.0 - git: https://github.com/input-output-hk/ouroboros-network - pantry-tree: - size: 2102 - sha256: 3d825687d6c3b523b9c1a02cd4f592541fd9de2e77705dcaf9a3dd803a1825dd - commit: ec74d1c463b6d18bdca2b714abe730c1d237cc32 - original: - subdir: ouroboros-consensus-byron - git: https://github.com/input-output-hk/ouroboros-network - commit: ec74d1c463b6d18bdca2b714abe730c1d237cc32 -- completed: - subdir: ouroboros-consensus-byronspec - name: ouroboros-consensus-byronspec - version: 0.1.0.0 - git: https://github.com/input-output-hk/ouroboros-network - pantry-tree: - size: 1219 - sha256: 968a73e74f3a7cae04057dca80c63bc1ddb2ee721ce5fee267761f807e9f59af - commit: ec74d1c463b6d18bdca2b714abe730c1d237cc32 - original: - subdir: ouroboros-consensus-byronspec - git: https://github.com/input-output-hk/ouroboros-network - commit: ec74d1c463b6d18bdca2b714abe730c1d237cc32 -- completed: - subdir: ouroboros-consensus-shelley - name: ouroboros-consensus-shelley - version: 0.1.0.0 - git: https://github.com/input-output-hk/ouroboros-network - pantry-tree: - size: 1794 - sha256: a768a9d74b51687cecc715826239a166df7b7d07f5ff65d698a59e9a6bc4713e - commit: ec74d1c463b6d18bdca2b714abe730c1d237cc32 - original: - subdir: ouroboros-consensus-shelley - git: https://github.com/input-output-hk/ouroboros-network - commit: ec74d1c463b6d18bdca2b714abe730c1d237cc32 -- completed: - subdir: ouroboros-consensus-cardano - name: ouroboros-consensus-cardano - version: 0.1.0.0 - git: https://github.com/input-output-hk/ouroboros-network - pantry-tree: - size: 12897 - sha256: 270d0414382a0d71d52fd104d4ae632b46b2a37308beefdcc9b262aea28ac3bd - commit: ec74d1c463b6d18bdca2b714abe730c1d237cc32 - original: - subdir: ouroboros-consensus-cardano - git: https://github.com/input-output-hk/ouroboros-network - commit: ec74d1c463b6d18bdca2b714abe730c1d237cc32 -- completed: - subdir: typed-protocols - name: typed-protocols - version: 0.1.0.0 - git: https://github.com/input-output-hk/ouroboros-network - pantry-tree: - size: 536 - sha256: 6b37e2e082df5a349914e431cf7183718eb6da44d4aa4e128bcf745515b9db6d - commit: ec74d1c463b6d18bdca2b714abe730c1d237cc32 - original: - subdir: typed-protocols - git: https://github.com/input-output-hk/ouroboros-network - commit: ec74d1c463b6d18bdca2b714abe730c1d237cc32 -- completed: - subdir: typed-protocols-examples - name: typed-protocols-examples - version: 0.1.0.0 - git: https://github.com/input-output-hk/ouroboros-network - pantry-tree: - size: 1469 - sha256: a9bf62acb9a1521146e142dd5e9c9dff16cbd3e2aa34df5f44de6f031927831e - commit: ec74d1c463b6d18bdca2b714abe730c1d237cc32 - original: - subdir: typed-protocols-examples - git: https://github.com/input-output-hk/ouroboros-network - commit: ec74d1c463b6d18bdca2b714abe730c1d237cc32 -- completed: - subdir: ouroboros-network-testing - name: ouroboros-network-testing - version: 0.1.0.0 - git: https://github.com/input-output-hk/ouroboros-network - pantry-tree: - size: 386 - sha256: 36a80a531e1fe994883caed0407da9117f27f54af397dfba38f5274a32ec2c84 - commit: ec74d1c463b6d18bdca2b714abe730c1d237cc32 - original: - subdir: ouroboros-network-testing - git: https://github.com/input-output-hk/ouroboros-network - commit: ec74d1c463b6d18bdca2b714abe730c1d237cc32 -- completed: - subdir: ouroboros-consensus/ouroboros-consensus-mock - name: ouroboros-consensus-mock - version: 0.1.0.0 - git: https://github.com/input-output-hk/ouroboros-network - pantry-tree: - size: 2624 - sha256: 8d2df6816e4133566310bab007c43dce29bf4710de46e9ef7c5b4e2a2459499b - commit: ec74d1c463b6d18bdca2b714abe730c1d237cc32 - original: - subdir: ouroboros-consensus/ouroboros-consensus-mock - git: https://github.com/input-output-hk/ouroboros-network - commit: ec74d1c463b6d18bdca2b714abe730c1d237cc32 -- completed: - subdir: ouroboros-consensus/ouroboros-consensus-test-infra - name: ouroboros-consensus-test-infra - version: 0.1.0.0 - git: https://github.com/input-output-hk/ouroboros-network - pantry-tree: - size: 4126 - sha256: 03adba783c4a0a4c29944bee6231482598c896fb3959c61dd8ea65c479711b56 - commit: ec74d1c463b6d18bdca2b714abe730c1d237cc32 - original: - subdir: ouroboros-consensus/ouroboros-consensus-test-infra - git: https://github.com/input-output-hk/ouroboros-network - commit: ec74d1c463b6d18bdca2b714abe730c1d237cc32 -- completed: - subdir: cardano-config - name: cardano-config - version: 0.1.0.0 - git: https://github.com/input-output-hk/cardano-node - pantry-tree: - size: 1432 - sha256: 338545e0965d1eab7c266c4557becc786424d13e098de9d1512d4a5aac23a3e5 - commit: 3258fdbb2ce8c56ca175401630aa71d75a4d6ab2 - original: - subdir: cardano-config - git: https://github.com/input-output-hk/cardano-node - commit: 3258fdbb2ce8c56ca175401630aa71d75a4d6ab2 -- completed: - subdir: cardano-api - name: cardano-api - version: 1.18.0 - git: https://github.com/input-output-hk/cardano-node - pantry-tree: - size: 1940 - sha256: deebdf8a3e1462879a4611f1093c15c69715305623edc53b5339244e8b2c2223 - commit: 3258fdbb2ce8c56ca175401630aa71d75a4d6ab2 - original: - subdir: cardano-api - git: https://github.com/input-output-hk/cardano-node - commit: 3258fdbb2ce8c56ca175401630aa71d75a4d6ab2 -snapshots: -- completed: - size: 432 - url: https://raw.githubusercontent.com/input-output-hk/cardano-prelude/316c854d1d3089f480708ad5cd5ecf8a74423ddd/snapshot.yaml - sha256: c7d5cfd5bdadd1d35264c52e806477d212f419cae2737fadc2b457a7e2288bd6 - original: - url: https://raw.githubusercontent.com/input-output-hk/cardano-prelude/316c854d1d3089f480708ad5cd5ecf8a74423ddd/snapshot.yaml -- completed: - size: 499889 - url: https://raw.githubusercontent.com/commercialhaskell/stackage-snapshots/master/lts/13/26.yaml - sha256: ecb02ee16829df8d7219e7d7fe6c310819820bf335b0b9534bce84d3ea896684 - original: lts-13.26