Subject: Non-deterministic GHC build errors
From: Ludovic Courtès <[email-masked]>
To: Bug Guix <[email-masked]>
Date: Sun, 27 Jan 2019 22:52:52 +0100
List-Id: <debbugs-submit.debbugs.gnu.org>

Hello,

I’ve noticed something really unexpected: take a Haskell package, say
‘ghc-libmpd’, build it several times (with --rounds or --check), and
notice that sometimes it will build successfully, and other times,
you’ll get a compiler error like this:

--8<---------------cut here---------------start------------->8---
Configuring libmpd-0.9.0.9...
phase `configure' succeeded after 0.9 seconds
starting phase `patch-generated-file-shebangs'
phase `patch-generated-file-shebangs' succeeded after 0.0 seconds
starting phase `build'
running "runhaskell Setup.hs" with command "build" and parameters ()
Preprocessing library for libmpd-0.9.0.9..
Building library for libmpd-0.9.0.9..
[ 1 of 36] Compiling Network.MPD.Core.Error ( src/Network/MPD/Core/Error.hs, dist/build/Network/MPD/Core/Error.o )

src/Network/MPD/Core/Error.hs:18:1: warning: [-Wdeprecations]
    Module ‘Control.Monad.Error’ is deprecated:
      Use "Control.Monad.Except" instead
   |
18 | import           Control.Monad.Error (Error(..))
   | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

src/Network/MPD/Core/Error.hs:48:10: warning: [-Wdeprecations]
    In the use of type constructor or class ‘Error’
    (imported from Control.Monad.Error, but defined in transformers-0.5.5.0:Control.Monad.Trans.Error):
    Deprecated: "Use Control.Monad.Trans.Except instead"
   |
48 | instance Error MPDError where
   |          ^^^^^

src/Network/MPD/Core/Error.hs:48:10: warning: [-Wdeprecations]
    In the use of type constructor or class ‘Error’
    (imported from Control.Monad.Error, but defined in transformers-0.5.5.0:Control.Monad.Trans.Error):
    Deprecated: "Use Control.Monad.Trans.Except instead"
   |
48 | instance Error MPDError where
   |          ^^^^^
[ 2 of 36] Compiling Network.MPD.Core.Class ( src/Network/MPD/Core/Class.hs, dist/build/Network/MPD/Core/Class.o )

src/Network/MPD/Core/Class.hs:17:1: warning: [-Wdeprecations]
    Module ‘Control.Monad.Error’ is deprecated:
      Use "Control.Monad.Except" instead
   |
17 | import           Control.Monad.Error (MonadError)
   | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[ 3 of 36] Compiling Network.MPD.Util ( src/Network/MPD/Util.hs, dist/build/Network/MPD/Util.o )
--8<---------------cut here---------------end--------------->8---

That seems surreal to me.

Thoughts?

Ludo’.