Resolving dependencies... Starting base64-bytestring-1.2.1.0 Starting auto-update-0.1.6 Starting base-orphans-0.8.6 Starting base-compat-0.12.1 Building auto-update-0.1.6 Building base-orphans-0.8.6 Building base64-bytestring-1.2.1.0 Building base-compat-0.12.1 Completed auto-update-0.1.6 Starting blaze-builder-0.4.2.2 Building blaze-builder-0.4.2.2 Completed base64-bytestring-1.2.1.0 Starting data-default-class-0.1.2.0 Building data-default-class-0.1.2.0 Completed data-default-class-0.1.2.0 Starting dlist-1.0 Building dlist-1.0 Completed base-orphans-0.8.6 Starting easy-file-0.2.2 Completed blaze-builder-0.4.2.2 Starting hashable-1.3.5.0 Building easy-file-0.2.2 Completed base-compat-0.12.1 Starting indexed-traversable-0.1.2 Building hashable-1.3.5.0 Building indexed-traversable-0.1.2 Completed easy-file-0.2.2 Starting integer-logarithms-1.0.3.1 Building integer-logarithms-1.0.3.1 Completed dlist-1.0 Starting lift-type-0.1.0.1 Building lift-type-0.1.0.1 Completed hashable-1.3.5.0 Starting microlens-0.4.12.0 Completed integer-logarithms-1.0.3.1 Starting monad-loops-0.4.3 Completed lift-type-0.1.0.1 Starting network-3.1.2.5 Building microlens-0.4.12.0 Building monad-loops-0.4.3 Completed indexed-traversable-0.1.2 Starting old-locale-1.0.0.7 Building old-locale-1.0.0.7 Completed monad-loops-0.4.3 Starting path-pieces-0.2.1 Completed old-locale-1.0.0.7 Starting primitive-0.7.3.0 Building path-pieces-0.2.1 Building primitive-0.7.3.0 Building network-3.1.2.5 Completed microlens-0.4.12.0 Starting silently-1.2.5.2 Building silently-1.2.5.2 Completed path-pieces-0.2.1 Starting split-0.2.3.4 Building split-0.2.3.4 Completed silently-1.2.5.2 Starting splitmix-0.1.0.4 Building splitmix-0.1.0.4 Completed split-0.2.3.4 Starting stm-chans-3.0.0.6 Building stm-chans-3.0.0.6 Completed splitmix-0.1.0.4 Starting tagged-0.8.6.1 Building tagged-0.8.6.1 Completed stm-chans-3.0.0.6 Starting th-abstraction-0.4.3.0 Building th-abstraction-0.4.3.0 Completed tagged-0.8.6.1 Starting transformers-compat-0.7.1 Building transformers-compat-0.7.1 Completed network-3.1.2.5 Starting unix-compat-0.5.3 Building unix-compat-0.5.3 Completed th-abstraction-0.4.3.0 Starting unliftio-core-0.2.0.1 Building unliftio-core-0.2.0.1 Completed transformers-compat-0.7.1 Starting validity-0.12.0.0 Completed primitive-0.7.3.0 Starting zlib-0.6.2.3 Building validity-0.12.0.0 Completed unix-compat-0.5.3 Starting cookie-0.4.5 Building zlib-0.6.2.3 Completed unliftio-core-0.2.0.1 Starting blaze-markup-0.8.2.8 Building cookie-0.4.5 Building blaze-markup-0.8.2.8 Completed validity-0.12.0.0 Starting unordered-containers-0.2.15.0 Completed cookie-0.4.5 Starting time-compat-1.9.6.1 Building unordered-containers-0.2.15.0 Building time-compat-1.9.6.1 Completed blaze-markup-0.8.2.8 Starting data-fix-0.3.2 Building data-fix-0.3.2 Completed zlib-0.6.2.3 Starting case-insensitive-1.2.1.0 Building case-insensitive-1.2.1.0 Completed time-compat-1.9.6.1 Starting async-2.2.4 Completed data-fix-0.3.2 Starting OneTuple-0.3.1 Building async-2.2.4 Completed case-insensitive-1.2.1.0 Starting old-time-1.1.0.3 Building OneTuple-0.3.1 Building old-time-1.1.0.3 Completed async-2.2.4 Starting random-1.2.1 Completed OneTuple-0.3.1 Starting distributive-0.6.2.1 Building random-1.2.1 Building distributive-0.6.2.1 Completed old-time-1.1.0.3 Starting th-lift-0.8.2 Completed unordered-containers-0.2.15.0 Starting transformers-base-0.4.6 Completed distributive-0.6.2.1 Starting vector-0.12.3.1 Building th-lift-0.8.2 Building transformers-base-0.4.6 Building vector-0.12.3.1 Completed transformers-base-0.4.6 Starting scientific-0.3.7.0 Completed th-lift-0.8.2 Starting resourcet-1.2.4.3 Building scientific-0.3.7.0 Building resourcet-1.2.4.3 Completed resourcet-1.2.4.3 Starting validity-time-0.4.0.0 Completed random-1.2.1 Starting validity-containers-0.5.0.4 Building validity-time-0.4.0.0 Completed scientific-0.3.7.0 Starting blaze-html-0.9.1.2 Building validity-containers-0.5.0.4 Building blaze-html-0.9.1.2 Completed validity-time-0.4.0.0 Starting http-types-0.12.3 Completed validity-containers-0.5.0.4 Starting unliftio-0.2.20 Building http-types-0.12.3 Building unliftio-0.2.20 Completed http-types-0.12.3 Starting typed-process-0.2.7.0 Building typed-process-0.2.7.0 Completed typed-process-0.2.7.0 Starting base-compat-batteries-0.12.1 Building base-compat-batteries-0.12.1 Completed unliftio-0.2.20 Starting unix-time-0.4.7 Building unix-time-0.4.7 Completed base-compat-batteries-0.12.1 Starting comonad-5.0.8 Completed unix-time-0.4.7 Starting monad-control-1.0.3.1 Building comonad-5.0.8 Building monad-control-1.0.3.1 Completed blaze-html-0.9.1.2 Starting uuid-types-1.0.5 Building uuid-types-1.0.5 Completed monad-control-1.0.3.1 Starting streaming-commons-0.2.2.2 Building streaming-commons-0.2.2.2 Completed comonad-5.0.8 Starting attoparsec-0.14.2 Building attoparsec-0.14.2 Completed uuid-types-1.0.5 Starting fast-logger-3.0.5 Building fast-logger-3.0.5 Completed fast-logger-3.0.5 Starting lifted-base-0.2.3.12 Building lifted-base-0.2.3.12 Completed streaming-commons-0.2.2.2 Starting bifunctors-5.5.11 Building bifunctors-5.5.11 Completed lifted-base-0.2.3.12 Completed attoparsec-0.14.2 Starting attoparsec-iso8601-1.0.2.0 Completed vector-0.12.3.1 Starting th-lift-instances-0.1.18 Starting vector-algorithms-0.8.0.4 Building attoparsec-iso8601-1.0.2.0 Building th-lift-instances-0.1.18 Building vector-algorithms-0.8.0.4 Completed attoparsec-iso8601-1.0.2.0 Starting resource-pool-0.2.3.2 Completed th-lift-instances-0.1.18 Starting http-api-data-0.4.3 Building resource-pool-0.2.3.2 Building http-api-data-0.4.3 Completed resource-pool-0.2.3.2 Completed bifunctors-5.5.11 Starting assoc-1.0.2 Building assoc-1.0.2 Completed http-api-data-0.4.3 Completed vector-algorithms-0.8.0.4 Starting mono-traversable-1.0.15.3 Completed assoc-1.0.2 Starting these-1.1.1.1 Building mono-traversable-1.0.15.3 Building these-1.1.1.1 Completed these-1.1.1.1 Starting strict-0.4.0.1 Building strict-0.4.0.1 Completed strict-0.4.0.1 Starting aeson-1.5.6.0 Building aeson-1.5.6.0 Completed mono-traversable-1.0.15.3 Starting conduit-1.3.4.2 Building conduit-1.3.4.2 Completed conduit-1.3.4.2 Starting conduit-extra-1.3.5 Building conduit-extra-1.3.5 Completed conduit-extra-1.3.5 Starting monad-logger-0.3.36 Building monad-logger-0.3.36 Completed aeson-1.5.6.0 Starting mergeful-0.2.0.0 Building mergeful-0.2.0.0 Completed monad-logger-0.3.36 Starting persistent-2.13.2.1 Building persistent-2.13.2.1 Completed mergeful-0.2.0.0 Completed persistent-2.13.2.1 Starting mergeful-persistent-0.1.0.0 Building mergeful-persistent-0.1.0.0 Failed to install mergeful-persistent-0.1.0.0 Build log ( /home/builder/.cabal/logs/ghc-8.10.2/mergeful-persistent-0.1.0.0-6bZJGqD4Cg9AI6aEmwTz1X.log ): cabal: Entering directory '/tmp/cabal-tmp-30428/mergeful-persistent-0.1.0.0' Configuring mergeful-persistent-0.1.0.0... Preprocessing library for mergeful-persistent-0.1.0.0.. Building library for mergeful-persistent-0.1.0.0.. [1 of 2] Compiling Data.Mergeful.Persistent ( src/Data/Mergeful/Persistent.hs, dist/build/Data/Mergeful/Persistent.o, dist/build/Data/Mergeful/Persistent.dyn_o ) src/Data/Mergeful/Persistent.hs:207:19: error: " Constructor ClientSyncProcessor does not have the required strict field(s): clientSyncProcessorSyncMergedConflict " In the expression: ClientSyncProcessor {..} In an equation for clientSyncProcessor: clientSyncProcessor serverIdField serverTimeField changedField deletedField makeSyncedClientThing unmakeSyncedClientThing recordUpdates = ClientSyncProcessor {..} where clientSyncProcessorQuerySyncedButChangedValues :: Set sid -> SqlPersistT m (Map sid (Timed a)) clientSyncProcessorQuerySyncedButChangedValues si = fmap (M.fromList . map (\ (Entity _ r) -> unmakeSyncedClientThing r) . catMaybes) $ forM (S.toList si) $ \ sid -> selectFirst ... [] clientSyncProcessorSyncClientAdded :: Map (Key record) (ClientAddition sid) -> SqlPersistT m () clientSyncProcessorSyncClientAdded m = forM_ (M.toList m) $ \ (cid, ClientAddition {..}) -> update cid ... .... | 207 | recordUpdates = ClientSyncProcessor {..} | ^^^^^^^^^^^^^^^^^^^^^^^^ src/Data/Mergeful/Persistent.hs:419:26: error: " Couldn't match type a -> transformers-0.5.6.2:Control.Monad.Trans.Reader.ReaderT backend0 m0 (Maybe (Key record)) with transformers-0.5.6.2:Control.Monad.Trans.Reader.ReaderT SqlBackend m (Key record) Expected type: a -> SqlPersistT m (Key record) Actual type: cid -> a -> transformers-0.5.6.2:Control.Monad.Trans.Reader.ReaderT backend0 m0 (Maybe (Key record)) " Probable cause: serverSyncProcessorAddItem is applied to too few arguments In the serverSyncProcessorAddItem field of a record In the expression: ServerSyncProcessor {..} :: ServerSyncProcessor cid (Key record) a (SqlPersistT m) In an equation for serverSyncProcessor: serverSyncProcessor serverTimeField filters unmakeFunc makeFunc recordUpdates = ServerSyncProcessor {..} :: ServerSyncProcessor cid (Key record) a (SqlPersistT m) where serverSyncProcessorRead = M.fromList . map (\ (Entity i r) -> (i, unmakeFunc r)) <$> selectList filters [] serverSyncProcessorAddItem cid a = fmap Just $ insert $ makeFunc cid a serverSyncProcessorChangeItem si st a = update si $ (serverTimeField =. st) : recordUpdates a serverSyncProcessorDeleteItem = delete " Relevant bindings include serverSyncProcessorRead :: transformers-0.5.6.2:Control.Monad.Trans.Reader.ReaderT SqlBackend m (Map (Key record) (Timed a)) (bound at src/Data/Mergeful/Persistent.hs:421:7) serverSyncProcessorAddItem :: cid -> a -> transformers-0.5.6.2:Control.Monad.Trans.Reader.ReaderT backend0 m0 (Maybe (Key record)) (bound at src/Data/Mergeful/Persistent.hs:422:7) serverSyncProcessorChangeItem :: Key record -> ServerTime -> a -> transformers-0.5.6.2:Control.Monad.Trans.Reader.ReaderT SqlBackend m () (bound at src/Data/Mergeful/Persistent.hs:423:7) serverSyncProcessorDeleteItem :: Key record -> transformers-0.5.6.2:Control.Monad.Trans.Reader.ReaderT SqlBackend m () (bound at src/Data/Mergeful/Persistent.hs:424:7) recordUpdates :: a -> [Update record] (bound at src/Data/Mergeful/Persistent.hs:418:3) makeFunc :: cid -> a -> record (bound at src/Data/Mergeful/Persistent.hs:417:3) (Some bindings suppressed; use -fmax-relevant-binds=N or -fno-max-relevant-binds) | 419 | ServerSyncProcessor {..} :: ServerSyncProcessor cid (Key record) a (SqlPersistT m) | ^^ src/Data/Mergeful/Persistent.hs:506:40: error: " Couldn't match type a -> transformers-0.5.6.2:Control.Monad.Trans.Reader.ReaderT SqlBackend m (Maybe sid) with transformers-0.5.6.2:Control.Monad.Trans.Reader.ReaderT SqlBackend m sid Expected type: a -> SqlPersistT m sid Actual type: cid -> a -> transformers-0.5.6.2:Control.Monad.Trans.Reader.ReaderT SqlBackend m (Maybe sid) " Probable cause: serverSyncProcessorAddItem is applied to too few arguments In the serverSyncProcessorAddItem field of a record In the expression: ServerSyncProcessor {..} :: ServerSyncProcessor cid sid a (SqlPersistT m) In an equation for serverSyncWithCustomIdProcessor: serverSyncWithCustomIdProcessor idField uuidGen serverTimeField filters unmakeFunc makeFunc recordUpdates = ServerSyncProcessor {..} :: ServerSyncProcessor cid sid a (SqlPersistT m) where serverSyncProcessorRead = M.fromList . map (\ (Entity _ record) -> unmakeFunc record) <$> selectList filters [] serverSyncProcessorAddItem cid a = do uuid <- uuidGen .... serverSyncProcessorChangeItem si st a = updateWhere [idField ==. si] $ (serverTimeField =. st) : recordUpdates a serverSyncProcessorDeleteItem si = deleteWhere [idField ==. si] " Relevant bindings include serverSyncProcessorRead :: transformers-0.5.6.2:Control.Monad.Trans.Reader.ReaderT SqlBackend m (Map sid (Timed a)) (bound at src/Data/Mergeful/Persistent.hs:508:7) serverSyncProcessorAddItem :: cid -> a -> transformers-0.5.6.2:Control.Monad.Trans.Reader.ReaderT SqlBackend m (Maybe sid) (bound at src/Data/Mergeful/Persistent.hs:509:7) serverSyncProcessorChangeItem :: sid -> ServerTime -> a -> transformers-0.5.6.2:Control.Monad.Trans.Reader.ReaderT SqlBackend m () (bound at src/Data/Mergeful/Persistent.hs:513:7) serverSyncProcessorDeleteItem :: sid -> transformers-0.5.6.2:Control.Monad.Trans.Reader.ReaderT SqlBackend m () (bound at src/Data/Mergeful/Persistent.hs:514:7) recordUpdates :: a -> [Update record] (bound at src/Data/Mergeful/Persistent.hs:506:3) makeFunc :: cid -> sid -> a -> record (bound at src/Data/Mergeful/Persistent.hs:505:3) (Some bindings suppressed; use -fmax-relevant-binds=N or -fno-max-relevant-binds) | 506 | recordUpdates = ServerSyncProcessor {..} :: ServerSyncProcessor cid sid a (SqlPersistT m) | ^^ cabal: Leaving directory '/tmp/cabal-tmp-30428/mergeful-persistent-0.1.0.0' cabal: Error: some packages failed to install: mergeful-persistent-0.1.0.0-6bZJGqD4Cg9AI6aEmwTz1X failed during the building phase. The exception was: ExitFailure 1