Please describe the problem.

What steps will reproduce the problem?

Build git-annex with GHC 8.6.

What version of git-annex are you using? On what operating system?

7.20181211, master

Please provide any additional information below.

Following the implementation plan for the MonadFail Proposal, GHC 8.6 has enabled -XMonadFailDesugaring by default.

Some of the code in git-annex uses failable patterns in do-blocks, so it fails to compile starting from GHC 8.6, as there is no MonadFail instance for Annex. Here is an example of such an error:

Remote/Glacier.hs:165:17: error:
    • No instance for (Control.Monad.Fail.MonadFail Annex)
        arising from a do statement
        with the failable pattern ‘(_, Just h, _, pid)’
    • In a stmt of a 'do' block:
        (_, Just h, _, pid) <- liftIO $ createProcess cmd
      In the expression:
        do let cmd = ...
           (_, Just h, _, pid) <- liftIO $ createProcess cmd
           ok <- ifM
                   (liftIO $ hIsEOF h)
                   (return False, sink =<< liftIO (L.hGetContents h))
           liftIO $ hClose h
           ....
      In an equation for ‘go’:
          go (Just e)
            = do let cmd = ...
                 (_, Just h, _, pid) <- liftIO $ createProcess cmd
                 ok <- ifM
                         (liftIO $ hIsEOF h)
                         (return False, sink =<< liftIO (L.hGetContents h))
                 ....
    |
165 |                 (_, Just h, _, pid) <- liftIO $ createProcess cmd
    |                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

Have you had any luck using git-annex before? (Sometimes we get tired of reading bug reports all day and a lil' positive end note does wonders)

Just trying to start using it. I have built it with -XNoMonadFailDesugaring for now.

fixed (release soonish) --Joey