From 67771facff8cc6075337d4eb7ec19ea1f8ca0026 Mon Sep 17 00:00:00 2001 From: Gregor Kleen Date: Mon, 17 Aug 2020 17:57:44 +0200 Subject: [PATCH] chore: use fewer segfault-y packages (hopefully) --- package.yaml | 3 +- src/Audit.hs | 14 +- src/Import/NoModel.hs | 4 +- src/Model/Migration.hs | 6 +- src/{Net/IP => Network/IP/Addr}/Instances.hs | 27 ++- stack.yaml | 26 +-- stack.yaml.lock | 201 ++++++++----------- 7 files changed, 123 insertions(+), 158 deletions(-) rename src/{Net/IP => Network/IP/Addr}/Instances.hs (60%) diff --git a/package.yaml b/package.yaml index 8b7f1a461..6c4004b53 100644 --- a/package.yaml +++ b/package.yaml @@ -117,7 +117,6 @@ dependencies: - hsass - semigroupoids - http-types - - ip - jose-jwt - mono-traversable - lens-aeson @@ -150,6 +149,8 @@ dependencies: - HsYAML - HsYAML-aeson - minio-hs + - network-ip + - data-textual other-extensions: - GeneralizedNewtypeDeriving diff --git a/src/Audit.hs b/src/Audit.hs index 6027f80ea..2014caa91 100644 --- a/src/Audit.hs +++ b/src/Audit.hs @@ -19,8 +19,8 @@ import Utils.Lens import qualified Network.Wai as Wai import qualified Network.Socket as Wai -import qualified Net.IP as IP -import qualified Net.IPv6 as IPv6 +import Network.IP.Addr (IP46(..), ip4FromOctets, ip6FromWords, anyIP6) +import qualified Data.Textual as Textual import Control.Exception (ErrorCall(..)) @@ -53,24 +53,24 @@ getRemote = handle testHandler $ do (h, v) <- Wai.requestHeaders wai guard $ h `elem` ["x-real-ip", "x-forwarded-for"] v' <- either (const mzero) return $ Text.decodeUtf8' v - maybeToList $ IP.decode v' + maybeToList $ Textual.fromText v' byRemoteHost wai = case Wai.remoteHost wai of Wai.SockAddrInet _ hAddr -> let (b1, b2, b3, b4) = Wai.hostAddressToTuple hAddr - in return $ IP.ipv4 b1 b2 b3 b4 + in return . IPv4 $ ip4FromOctets b1 b2 b3 b4 Wai.SockAddrInet6 _ _ hAddr _ -> let (w1, w2, w3, w4, w5, w6, w7, w8) = Wai.hostAddress6ToTuple hAddr - in return $ IP.ipv6 w1 w2 w3 w4 w5 w6 w7 w8 + in return . IPv6 $ ip6FromWords w1 w2 w3 w4 w5 w6 w7 w8 _other -> throwM ARUnsupportedSocketKind testHandler :: ErrorCall -> m IP -- ^ `Yesod.Core.Unsafe.runFakeHandler` does not set a `Wai.remoteHost` -- -- We catch only the specific error call used by - -- `Yesod.Core.Unsafe.runFakeHandler` and replace it with `IPv6.any` as a + -- `Yesod.Core.Unsafe.runFakeHandler` and replace it with `anyIP6` as a -- placeholder value for testing. - testHandler (ErrorCall "runFakeHandler-remoteHost") = return $ IP.fromIPv6 IPv6.any + testHandler (ErrorCall "runFakeHandler-remoteHost") = return $ IPv6 anyIP6 testHandler err = throwM err diff --git a/src/Import/NoModel.hs b/src/Import/NoModel.hs index 76a848624..ed39106a0 100644 --- a/src/Import/NoModel.hs +++ b/src/Import/NoModel.hs @@ -74,7 +74,7 @@ import System.FilePath as Import hiding (joinPath, normalise, isValid, ma import Numeric.Natural as Import (Natural) import Data.Ratio as Import ((%)) -import Net.IP as Import (IP) +import Network.IP.Addr as Import (IP) import Database.Persist.Sql as Import (SqlReadBackend, SqlReadT, SqlWriteT, IsSqlBackend, fromSqlKey, toSqlKey) @@ -155,7 +155,7 @@ import Database.Persist.Class.Instances as Import () import Database.Persist.Types.Instances as Import () import Data.UUID.Instances as Import () import System.FilePath.Instances as Import () -import Net.IP.Instances as Import () +import Network.IP.Addr.Instances as Import () import Data.Void.Instances as Import () import Crypto.Hash.Instances as Import () import Colonnade.Instances as Import () diff --git a/src/Model/Migration.hs b/src/Model/Migration.hs index 1bc6a8e62..6726fda53 100644 --- a/src/Model/Migration.hs +++ b/src/Model/Migration.hs @@ -27,9 +27,7 @@ import Text.Read (readMaybe) import Control.Monad.Except (MonadError(..)) import Utils.Lens (_NoUpload) -import qualified Net.IP as IP -import qualified Net.IPv4 as IPv4 -import qualified Net.IPv6 as IPv6 +import Network.IP.Addr import qualified Data.Char as Char import qualified Data.CaseInsensitive as CI @@ -381,7 +379,7 @@ customMigrations = Map.fromListWith (>>) , ( AppliedMigrationKey [migrationVersion|15.0.0|] [version|16.0.0|] , whenM (tableExists "transaction_log") $ do [executeQQ| - UPDATE transaction_log SET remote = null WHERE remote = #{IP.fromIPv4 IPv4.loopback} OR remote = #{IP.fromIPv6 IPv6.loopback} + UPDATE transaction_log SET remote = null WHERE remote = #{IPv4 loopbackIP4 :: IP} OR remote = #{IPv6 loopbackIP6 :: IP} |] [executeQQ| diff --git a/src/Net/IP/Instances.hs b/src/Network/IP/Addr/Instances.hs similarity index 60% rename from src/Net/IP/Instances.hs rename to src/Network/IP/Addr/Instances.hs index c7e1995f7..7a85bbce9 100644 --- a/src/Net/IP/Instances.hs +++ b/src/Network/IP/Addr/Instances.hs @@ -1,12 +1,14 @@ {-# OPTIONS_GHC -fno-warn-orphans #-} -module Net.IP.Instances + +module Network.IP.Addr.Instances ( ) where + import ClassyPrelude -import Net.IP (IP) -import qualified Net.IP as IP +import Network.IP.Addr +import qualified Data.Textual as Textual import Database.Persist.Sql @@ -14,10 +16,21 @@ import qualified Data.Text.Encoding as Text instance PersistField IP where - toPersistValue = PersistDbSpecific . encodeUtf8 . IP.encode - fromPersistValue (PersistDbSpecific bs) = first tshow (Text.decodeUtf8' bs) >>= maybe (Left "Could not parse IP-address") Right . IP.decode - fromPersistValue (PersistByteString bs) = first tshow (Text.decodeUtf8' bs) >>= maybe (Left "Could not parse IP-address") Right . IP.decode - fromPersistValue (PersistText t) = maybe (Left "Could not parse IP-address") Right $ IP.decode t + toPersistValue = PersistDbSpecific . Textual.toUtf8 + fromPersistValue (PersistDbSpecific bs) = first tshow (Text.decodeUtf8' bs) >>= maybe (Left "Could not parse IP-address") Right . Textual.fromText + fromPersistValue (PersistByteString bs) = first tshow (Text.decodeUtf8' bs) >>= maybe (Left "Could not parse IP-address") Right . Textual.fromText + fromPersistValue (PersistText t) = maybe (Left "Could not parse IP-address") Right $ Textual.fromText t fromPersistValue _ = Left "IP-address values must be converted from PersistDbSpecific, PersistText, or PersistByteString" instance PersistFieldSql IP where sqlType _ = SqlOther "inet" + + +instance (NFData v4, NFData v6) => NFData (IP46 v4 v6) where + rnf (IPv4 v4) = rnf v4 + rnf (IPv6 v6) = rnf v6 + +instance NFData IP4 where + rnf = rnf . ip4ToOctets + +instance NFData IP6 where + rnf = rnf . ip6ToWords diff --git a/stack.yaml b/stack.yaml index f1fa64f1c..7a30d4701 100644 --- a/stack.yaml +++ b/stack.yaml @@ -37,40 +37,32 @@ extra-deps: - git: git@gitlab2.rz.ifi.lmu.de:uni2work/minio-hs.git commit: 42103ab247057c04c8ce7a83d9d4c160713a3df1 + - git: git@gitlab2.rz.ifi.lmu.de:uni2work/cryptoids.git + commit: 5e9a7e4c3c9905d192185c9f70528b5d2b9e0bd9 + subdirs: + - cryptoids-class + - cryptoids-types + - cryptoids + - filepath-crypto + - uuid-crypto + - generic-lens-1.2.0.0@sha256:b19e7970c93743a46bc3702331512a96d163de4356472f2d51a2945887aefe8c,6524 # manual downgrade; won't compile with >=2.0.0.0 - acid-state-0.16.0.1@sha256:d43f6ee0b23338758156c500290c4405d769abefeb98e9bc112780dae09ece6f,6207 - - bytebuild-0.3.6.0@sha256:aec785c906db5c7ec730754683196eb99a0d48e0deff7d4034c7b58307040b85,2982 - - byteslice-0.2.3.0@sha256:3ebcc77f8ac9fec3ca1a8304e66cfe0a1590c9272b768f2b19637e06de00bf6d,2014 - - bytesmith-0.3.7.0@sha256:a11e4ca0fb72cd966c21d82dcc2eb7f3aa748b3fbfe30ab6c7fa8beea38c8e83,1863 - commonmark-0.1.0.2@sha256:fbff7a2ade0ce7d699964a87f765e503a3a9e22542c05f0f02ba7aad64e38af4,3278 - commonmark-extensions-0.2.0.1@sha256:647aa8dba5fd46984ddedc15c3693c9c4d9655503d42006576bd8f0dadf8cd39,3176 - commonmark-pandoc-0.2.0.0@sha256:84a9f6846d4fe33e9f0dcd938ef1c83162fb4fe81cca66315249e86414aac226,1167 - - contiguous-0.5.1@sha256:902b74d8e369fef384c20b116c3c81e65eca2672d79f525ab374fe98ee50e9d4,1757 - - cryptoids-0.5.1.0@sha256:729cd89059c6b6a50e07b2e279f6d95ee9432caeedc7e2f38f71e59c422957bc,1570 - - cryptoids-class-0.0.0@sha256:8d22912538faa99849fed7f51eb742fbbf5f9557d04e1d81bcac408d88c16c30,985 - - cryptoids-types-1.0.0@sha256:96a74b33a32ebeebf5bee08e2a205e5c1585b4b46b8bac086ca7fde49aec5f5b,1271 - - filepath-crypto-0.1.0.0@sha256:e02bc15858cf06edf9788a38b5b58d45e82c7f5589785a178a903d792af04125,1593 - hlibsass-0.1.10.1@sha256:08db56c633e9a83a642d8ea57dffa93112b092d05bf8f3b07491cfee9ee0dfa5,2565 - hsass-0.8.0@sha256:05fb3d435dbdf9f66a98db4e1ee57a313170a677e52ab3a5a05ced1fc42b0834,2899 - - ip-1.7.2@sha256:2148bbc7b5e66ea7273b6014bb30483cc656b2cd4e53efaf165c2223bdbbeb46,3742 - - natural-arithmetic-0.1.2.0@sha256:ac25a0561c8378530a62f02df83680afb193ed1059bb43e3130e0074b5b3f16b,3411 - normaldistribution-1.1.0.3@sha256:2615b784c4112cbf6ffa0e2b55b76790290a9b9dff18a05d8c89aa374b213477,2160 - pandoc-2.10.1@sha256:23d7ec480c7cb86740475a419d6ca4819987b6dd23bbae9b50bc3d42a7ed2f9f,36933 - pkcs7-1.0.0.1@sha256:b26e5181868667abbde3ce17f9a61cf705eb695da073cdf82e1f9dfd6cc11176,3594 - - primitive-offset-0.2.0.0@sha256:f8006927d5c0a3e83707610bbc5514aabe8f84a907ecb07edd2c815f58299dea,843 - - primitive-unlifted-0.1.3.0@sha256:a98f827740f5dcf097d885b3a47c32f4462204449620abc9d51b8c4f8619f9e6,1427 - prometheus-metrics-ghc-1.0.1.1@sha256:d378a7186a967140fe0e09d325fe5e3bfd7b77a1123934b40f81fdfed2eacbdc,1233 - - run-st-0.1.1.0@sha256:a43245bb23984089016772481bf52bfe63eaff0c5040303f69c9b15e80872fdc,883 - - sandi-0.5@sha256:b278d072ca717706ea38f9bd646e023f7f2576a778fb43565b434f93638849aa,3010 - system-locale-0.3.0.0@sha256:13b3982403d8ac8cc6138e68802be8d8e7cf7ebc4cbc7e47e99e3c0dd1be066a,1529 - token-bucket-0.1.0.1@sha256:d8e85f2fc373939975e7ace7907baee177531ab6e43df94e330a2357e64a2d11,1899 - - tuples-0.1.0.0@sha256:7006c1cab721ad3e39cdbf1ccb07ec050b94d654cc6e39277d46241eee6ac7c9,1088 - tz-0.1.3.4@sha256:bd311e202b8bdd15bcd6a4ca182e69794949d3b3b9f4aa835e9ccff011284979,5086 - unidecode-0.1.0.4@sha256:99581ee1ea334a4596a09ae3642e007808457c66893b587e965b31f15cbf8c4d,1144 - - uuid-crypto-1.4.0.0@sha256:9e2f271e61467d9ea03e78cddad75a97075d8f5108c36a28d59c65abb3efd290,1325 - wai-middleware-prometheus-1.0.0@sha256:1625792914fb2139f005685be8ce519111451cfb854816e430fbf54af46238b4,1314 - - hlint-test-0.1.0.0@sha256:e427c0593433205fc629fb05b74c6b1deb1de72d1571f26142de008f0d5ee7a9,1814 resolver: nightly-2020-08-08 compiler: ghc-8.10.2 diff --git a/stack.yaml.lock b/stack.yaml.lock index 7e6921adc..7d4ed7b5d 100644 --- a/stack.yaml.lock +++ b/stack.yaml.lock @@ -164,13 +164,93 @@ packages: original: git: git@gitlab2.rz.ifi.lmu.de:uni2work/minio-hs.git commit: 42103ab247057c04c8ce7a83d9d4c160713a3df1 +- completed: + subdir: cryptoids-class + cabal-file: + size: 1155 + sha256: 1fa96858ded816798f8e1c77d7945185c0d7ceb2536185d39fc72496da8a0125 + name: cryptoids-class + version: 0.0.0 + git: git@gitlab2.rz.ifi.lmu.de:uni2work/cryptoids.git + pantry-tree: + size: 350 + sha256: f014c9ff9666a4d4bab82dd2b3092fd2004b40ebf2bcd32cf7d90035e08ce75b + commit: 5e9a7e4c3c9905d192185c9f70528b5d2b9e0bd9 + original: + subdir: cryptoids-class + git: git@gitlab2.rz.ifi.lmu.de:uni2work/cryptoids.git + commit: 5e9a7e4c3c9905d192185c9f70528b5d2b9e0bd9 +- completed: + subdir: cryptoids-types + cabal-file: + size: 1214 + sha256: ee8966212554a156f2de236d4f005ff3a9d3098778ff6cc3f114ccaa0aff8825 + name: cryptoids-types + version: 1.0.0 + git: git@gitlab2.rz.ifi.lmu.de:uni2work/cryptoids.git + pantry-tree: + size: 258 + sha256: d1465d25a1a1807d5a88d9a09085fd4a2f49f2e57b8398496691ffad30e8f88c + commit: 5e9a7e4c3c9905d192185c9f70528b5d2b9e0bd9 + original: + subdir: cryptoids-types + git: git@gitlab2.rz.ifi.lmu.de:uni2work/cryptoids.git + commit: 5e9a7e4c3c9905d192185c9f70528b5d2b9e0bd9 +- completed: + subdir: cryptoids + cabal-file: + size: 1505 + sha256: fcf07cd0dca21db976c25cbdf4dcc5c747cebcb7bf14c05804c8ae14223f6046 + name: cryptoids + version: 0.5.1.0 + git: git@gitlab2.rz.ifi.lmu.de:uni2work/cryptoids.git + pantry-tree: + size: 510 + sha256: 7c16ce6b5de6988ba628027a055fe7faa8b3a2e2bc77d7088e8dad23e9bac7a1 + commit: 5e9a7e4c3c9905d192185c9f70528b5d2b9e0bd9 + original: + subdir: cryptoids + git: git@gitlab2.rz.ifi.lmu.de:uni2work/cryptoids.git + commit: 5e9a7e4c3c9905d192185c9f70528b5d2b9e0bd9 +- completed: + subdir: filepath-crypto + cabal-file: + size: 1716 + sha256: 218da063bb7b00e3728deebf830904174b2b78bc29b3f203e6824b8caac92788 + name: filepath-crypto + version: 0.1.0.0 + git: git@gitlab2.rz.ifi.lmu.de:uni2work/cryptoids.git + pantry-tree: + size: 614 + sha256: 075cdc34365a1756a064b9d3778615f843b37a78e9707594cc5c6f64ce3df48f + commit: 5e9a7e4c3c9905d192185c9f70528b5d2b9e0bd9 + original: + subdir: filepath-crypto + git: git@gitlab2.rz.ifi.lmu.de:uni2work/cryptoids.git + commit: 5e9a7e4c3c9905d192185c9f70528b5d2b9e0bd9 +- completed: + subdir: uuid-crypto + cabal-file: + size: 1460 + sha256: 1db54db1b85303e50cec3c99ddb8de6c9bedc388fa9ce5a1fce61520023b9ee5 + name: uuid-crypto + version: 1.4.0.0 + git: git@gitlab2.rz.ifi.lmu.de:uni2work/cryptoids.git + pantry-tree: + size: 359 + sha256: 1861593e0b304b8a09db3e7b435ae6763f57d2051a1c8770a051adc5aa0f0edd + commit: 5e9a7e4c3c9905d192185c9f70528b5d2b9e0bd9 + original: + subdir: uuid-crypto + git: git@gitlab2.rz.ifi.lmu.de:uni2work/cryptoids.git + commit: 5e9a7e4c3c9905d192185c9f70528b5d2b9e0bd9 - completed: hackage: generic-lens-1.2.0.0@sha256:b19e7970c93743a46bc3702331512a96d163de4356472f2d51a2945887aefe8c,6524 pantry-tree: size: 4315 sha256: 9ed161eadfda5b1eb36cfcf077146f7b66db1da69f1041fc720aea287ec021b0 original: - hackage: generic-lens-1.2.0.0 + hackage: generic-lens-1.2.0.0@sha256:b19e7970c93743a46bc3702331512a96d163de4356472f2d51a2945887aefe8c,6524 - completed: hackage: acid-state-0.16.0.1@sha256:d43f6ee0b23338758156c500290c4405d769abefeb98e9bc112780dae09ece6f,6207 pantry-tree: @@ -178,27 +258,6 @@ packages: sha256: d57bcb2ad5e01fe7424abbcf9e58cf943027b5c4a8496d93625c57b6e1272274 original: hackage: acid-state-0.16.0.1@sha256:d43f6ee0b23338758156c500290c4405d769abefeb98e9bc112780dae09ece6f,6207 -- completed: - hackage: bytebuild-0.3.6.0@sha256:aec785c906db5c7ec730754683196eb99a0d48e0deff7d4034c7b58307040b85,2982 - pantry-tree: - size: 844 - sha256: 5e6fd3de57a4d44257fb475433633939459e0294fafe79b21ff67aeb93a81591 - original: - hackage: bytebuild-0.3.6.0@sha256:aec785c906db5c7ec730754683196eb99a0d48e0deff7d4034c7b58307040b85,2982 -- completed: - hackage: byteslice-0.2.3.0@sha256:3ebcc77f8ac9fec3ca1a8304e66cfe0a1590c9272b768f2b19637e06de00bf6d,2014 - pantry-tree: - size: 1095 - sha256: 9ada4e1c418e8d9029edefdf664c64ff419ed1f02564e5a0dd28dd03e1e716a6 - original: - hackage: byteslice-0.2.3.0@sha256:3ebcc77f8ac9fec3ca1a8304e66cfe0a1590c9272b768f2b19637e06de00bf6d,2014 -- completed: - hackage: bytesmith-0.3.7.0@sha256:a11e4ca0fb72cd966c21d82dcc2eb7f3aa748b3fbfe30ab6c7fa8beea38c8e83,1863 - pantry-tree: - size: 1185 - sha256: 3396c1b29577cff2491382d0b144fe586c75987e9ad28bc0cadbc88a97ee7315 - original: - hackage: bytesmith-0.3.7.0@sha256:a11e4ca0fb72cd966c21d82dcc2eb7f3aa748b3fbfe30ab6c7fa8beea38c8e83,1863 - completed: hackage: commonmark-0.1.0.2@sha256:fbff7a2ade0ce7d699964a87f765e503a3a9e22542c05f0f02ba7aad64e38af4,3278 pantry-tree: @@ -220,41 +279,6 @@ packages: sha256: aa88fb10bd382b8d942b51b2ad0b94f52a72a4e37c8085abc5c380964c7eeb7c original: hackage: commonmark-pandoc-0.2.0.0@sha256:84a9f6846d4fe33e9f0dcd938ef1c83162fb4fe81cca66315249e86414aac226,1167 -- completed: - hackage: contiguous-0.5.1@sha256:902b74d8e369fef384c20b116c3c81e65eca2672d79f525ab374fe98ee50e9d4,1757 - pantry-tree: - size: 442 - sha256: 39ee8ba3b4725ed1057429cd1f613275bfecbc618f289559203bebb1ff4a259e - original: - hackage: contiguous-0.5.1@sha256:902b74d8e369fef384c20b116c3c81e65eca2672d79f525ab374fe98ee50e9d4,1757 -- completed: - hackage: cryptoids-0.5.1.0@sha256:729cd89059c6b6a50e07b2e279f6d95ee9432caeedc7e2f38f71e59c422957bc,1570 - pantry-tree: - size: 513 - sha256: 563e8d2b616ec3e0e7984d6b069095b6c3959065c0bb047fc8dd5809711a3e6b - original: - hackage: cryptoids-0.5.1.0@sha256:729cd89059c6b6a50e07b2e279f6d95ee9432caeedc7e2f38f71e59c422957bc,1570 -- completed: - hackage: cryptoids-class-0.0.0@sha256:8d22912538faa99849fed7f51eb742fbbf5f9557d04e1d81bcac408d88c16c30,985 - pantry-tree: - size: 359 - sha256: 6a5af7c785c230501fa6088ecf963c7de7463ab75b3f646510612f17dff69744 - original: - hackage: cryptoids-class-0.0.0@sha256:8d22912538faa99849fed7f51eb742fbbf5f9557d04e1d81bcac408d88c16c30,985 -- completed: - hackage: cryptoids-types-1.0.0@sha256:96a74b33a32ebeebf5bee08e2a205e5c1585b4b46b8bac086ca7fde49aec5f5b,1271 - pantry-tree: - size: 268 - sha256: 0e9b11f6414a0a179cd11dec55261a1f9995663fcf27bfd4a386c48652655404 - original: - hackage: cryptoids-types-1.0.0@sha256:96a74b33a32ebeebf5bee08e2a205e5c1585b4b46b8bac086ca7fde49aec5f5b,1271 -- completed: - hackage: filepath-crypto-0.1.0.0@sha256:e02bc15858cf06edf9788a38b5b58d45e82c7f5589785a178a903d792af04125,1593 - pantry-tree: - size: 623 - sha256: bce236365ebdc6e5c46f740876a6fb5ad688e8ee3b305933822ab027e5b5fd86 - original: - hackage: filepath-crypto-0.1.0.0@sha256:e02bc15858cf06edf9788a38b5b58d45e82c7f5589785a178a903d792af04125,1593 - completed: hackage: hlibsass-0.1.10.1@sha256:08db56c633e9a83a642d8ea57dffa93112b092d05bf8f3b07491cfee9ee0dfa5,2565 pantry-tree: @@ -269,20 +293,6 @@ packages: sha256: b25aeb947cb4e0b550f8a6f226d06503ef0edcb54712ad9cdd4fb2b05bf16c7c original: hackage: hsass-0.8.0@sha256:05fb3d435dbdf9f66a98db4e1ee57a313170a677e52ab3a5a05ced1fc42b0834,2899 -- completed: - hackage: ip-1.7.2@sha256:2148bbc7b5e66ea7273b6014bb30483cc656b2cd4e53efaf165c2223bdbbeb46,3742 - pantry-tree: - size: 1437 - sha256: c60e78361b92eebfa341027377787e39de5a16218ab605456cf4cf1de5f58b2a - original: - hackage: ip-1.7.2@sha256:2148bbc7b5e66ea7273b6014bb30483cc656b2cd4e53efaf165c2223bdbbeb46,3742 -- completed: - hackage: natural-arithmetic-0.1.2.0@sha256:ac25a0561c8378530a62f02df83680afb193ed1059bb43e3130e0074b5b3f16b,3411 - pantry-tree: - size: 716 - sha256: e1e5b16f53fe2a7378d38dcae5069dcc1c6e37f8e1473f091ae1f7d788b1c688 - original: - hackage: natural-arithmetic-0.1.2.0@sha256:ac25a0561c8378530a62f02df83680afb193ed1059bb43e3130e0074b5b3f16b,3411 - completed: hackage: normaldistribution-1.1.0.3@sha256:2615b784c4112cbf6ffa0e2b55b76790290a9b9dff18a05d8c89aa374b213477,2160 pantry-tree: @@ -304,20 +314,6 @@ packages: sha256: ab3c2d2880179a945ab3122c51d1657ab4a7a628292b646e047cd32b0751a80c original: hackage: pkcs7-1.0.0.1@sha256:b26e5181868667abbde3ce17f9a61cf705eb695da073cdf82e1f9dfd6cc11176,3594 -- completed: - hackage: primitive-offset-0.2.0.0@sha256:f8006927d5c0a3e83707610bbc5514aabe8f84a907ecb07edd2c815f58299dea,843 - pantry-tree: - size: 368 - sha256: 6dbc2fbfd70920a1de5a76d3715506edc0895c81a2f7b856d3abb027865d4605 - original: - hackage: primitive-offset-0.2.0.0@sha256:f8006927d5c0a3e83707610bbc5514aabe8f84a907ecb07edd2c815f58299dea,843 -- completed: - hackage: primitive-unlifted-0.1.3.0@sha256:a98f827740f5dcf097d885b3a47c32f4462204449620abc9d51b8c4f8619f9e6,1427 - pantry-tree: - size: 420 - sha256: c882dca2a96b98d02b0d21875b651edb11ac67d90e736c0de7a92c410a19eb7f - original: - hackage: primitive-unlifted-0.1.3.0@sha256:a98f827740f5dcf097d885b3a47c32f4462204449620abc9d51b8c4f8619f9e6,1427 - completed: hackage: prometheus-metrics-ghc-1.0.1.1@sha256:d378a7186a967140fe0e09d325fe5e3bfd7b77a1123934b40f81fdfed2eacbdc,1233 pantry-tree: @@ -325,20 +321,6 @@ packages: sha256: 0732085a4148b269bbc15eeb7ab422e65ac287878a42a7388a7b6e140ec740e5 original: hackage: prometheus-metrics-ghc-1.0.1.1@sha256:d378a7186a967140fe0e09d325fe5e3bfd7b77a1123934b40f81fdfed2eacbdc,1233 -- completed: - hackage: run-st-0.1.1.0@sha256:a43245bb23984089016772481bf52bfe63eaff0c5040303f69c9b15e80872fdc,883 - pantry-tree: - size: 269 - sha256: 06d5d7ecf185a26c15e48cda6c30e8865dae715c528a31466701272fae36d822 - original: - hackage: run-st-0.1.1.0@sha256:a43245bb23984089016772481bf52bfe63eaff0c5040303f69c9b15e80872fdc,883 -- completed: - hackage: sandi-0.5@sha256:b278d072ca717706ea38f9bd646e023f7f2576a778fb43565b434f93638849aa,3010 - pantry-tree: - size: 3455 - sha256: 5ca7ce4bc22ab9d4427bb149b5e283ab9db43375df14f7131fdfd48775f36350 - original: - hackage: sandi-0.5@sha256:b278d072ca717706ea38f9bd646e023f7f2576a778fb43565b434f93638849aa,3010 - completed: hackage: system-locale-0.3.0.0@sha256:13b3982403d8ac8cc6138e68802be8d8e7cf7ebc4cbc7e47e99e3c0dd1be066a,1529 pantry-tree: @@ -353,13 +335,6 @@ packages: sha256: b0b4a08ea1bf76bd108310f64d7f80e0f30b61ddc3d71f6cab7bdce329d2c1fa original: hackage: token-bucket-0.1.0.1@sha256:d8e85f2fc373939975e7ace7907baee177531ab6e43df94e330a2357e64a2d11,1899 -- completed: - hackage: tuples-0.1.0.0@sha256:7006c1cab721ad3e39cdbf1ccb07ec050b94d654cc6e39277d46241eee6ac7c9,1088 - pantry-tree: - size: 320 - sha256: 57009cc671ed8e43738be3bf7b1392461ad086083df633a2f4f9c7206a14a79c - original: - hackage: tuples-0.1.0.0@sha256:7006c1cab721ad3e39cdbf1ccb07ec050b94d654cc6e39277d46241eee6ac7c9,1088 - completed: hackage: tz-0.1.3.4@sha256:bd311e202b8bdd15bcd6a4ca182e69794949d3b3b9f4aa835e9ccff011284979,5086 pantry-tree: @@ -374,13 +349,6 @@ packages: sha256: 4959068a0caf410dd4b8046f0b0138e3cf6471abb0cc865c9993db3b2930d283 original: hackage: unidecode-0.1.0.4@sha256:99581ee1ea334a4596a09ae3642e007808457c66893b587e965b31f15cbf8c4d,1144 -- completed: - hackage: uuid-crypto-1.4.0.0@sha256:9e2f271e61467d9ea03e78cddad75a97075d8f5108c36a28d59c65abb3efd290,1325 - pantry-tree: - size: 364 - sha256: 6650b51ea060397c412b07b256c043546913292973284a7149ddd08f489b3e48 - original: - hackage: uuid-crypto-1.4.0.0@sha256:9e2f271e61467d9ea03e78cddad75a97075d8f5108c36a28d59c65abb3efd290,1325 - completed: hackage: wai-middleware-prometheus-1.0.0@sha256:1625792914fb2139f005685be8ce519111451cfb854816e430fbf54af46238b4,1314 pantry-tree: @@ -388,13 +356,6 @@ packages: sha256: 6d64803c639ed4c7204ea6fab0536b97d3ee16cdecb9b4a883cd8e56d3c61402 original: hackage: wai-middleware-prometheus-1.0.0@sha256:1625792914fb2139f005685be8ce519111451cfb854816e430fbf54af46238b4,1314 -- completed: - hackage: hlint-test-0.1.0.0@sha256:e427c0593433205fc629fb05b74c6b1deb1de72d1571f26142de008f0d5ee7a9,1814 - pantry-tree: - size: 442 - sha256: 347eac6c8a3c02fc0101444d6526b57b3c27785809149b12f90d8db57c721fea - original: - hackage: hlint-test-0.1.0.0@sha256:e427c0593433205fc629fb05b74c6b1deb1de72d1571f26142de008f0d5ee7a9,1814 snapshots: - completed: size: 524392