[GHC] #9219: Parallel build proceeds despite errors

GHC ghc-devs at haskell.org
Thu Jun 19 13:59:34 UTC 2014


#9219: Parallel build proceeds despite errors
-------------------------+-------------------------------------------------
       Reporter:         |             Owner:
  jstolarek              |            Status:  new
           Type:  bug    |         Milestone:
       Priority:         |           Version:  7.8.2
  normal                 |  Operating System:  Unknown/Multiple
      Component:         |   Type of failure:  Incorrect warning at
  Driver                 |  compile-time
       Keywords:         |         Test Case:
   Architecture:         |          Blocking:
  Unknown/Multiple       |
     Difficulty:         |
  Unknown                |
     Blocked By:         |
Related Tickets:         |
-------------------------+-------------------------------------------------
 A few weeks back during my work on singletons I got the following build
 log:

 {{{
 Building singletons-1.0...
 Preprocessing library singletons-1.0...
 [ 6 of 45] Compiling Data.Singletons.Util ( src/Data/Singletons/Util.hs,
 dist/build/Data/Singletons/Util.o )
 [ 7 of 45] Compiling Data.Singletons.Syntax (
 src/Data/Singletons/Syntax.hs, dist/build/Data/Singletons/Syntax.o )
 [Data.Singletons.Util changed]
 [ 8 of 45] Compiling Data.Singletons.Names ( src/Data/Singletons/Names.hs,
 dist/build/Data/Singletons/Names.o ) [Data.Singletons.Util changed]
 [ 9 of 45] Compiling Data.Singletons.Promote.Monad (
 src/Data/Singletons/Promote/Monad.hs,
 dist/build/Data/Singletons/Promote/Monad.o ) [Data.Singletons.Util
 changed]
 [10 of 45] Compiling Data.Singletons.Single.Monad (
 src/Data/Singletons/Single/Monad.hs,
 dist/build/Data/Singletons/Single/Monad.o ) [Data.Singletons.Promote.Monad
 changed]
 [11 of 45] Compiling Data.Singletons.Promote.Eq (
 src/Data/Singletons/Promote/Eq.hs, dist/build/Data/Singletons/Promote/Eq.o
 ) [Data.Singletons.Util changed]
 [12 of 45] Compiling Data.Singletons.Promote.Ord (
 src/Data/Singletons/Promote/Ord.hs,
 dist/build/Data/Singletons/Promote/Ord.o ) [Data.Singletons.Util changed]
 [13 of 45] Compiling Data.Singletons.Promote.Bounded (
 src/Data/Singletons/Promote/Bounded.hs,
 dist/build/Data/Singletons/Promote/Bounded.o ) [Data.Singletons.Util
 changed]
 [14 of 45] Compiling Data.Singletons.Promote.Type (
 src/Data/Singletons/Promote/Type.hs,
 dist/build/Data/Singletons/Promote/Type.o ) [Data.Singletons.Util changed]
 [15 of 45] Compiling Data.Singletons.Promote.Defun (
 src/Data/Singletons/Promote/Defun.hs,
 dist/build/Data/Singletons/Promote/Defun.o )
 [Data.Singletons.Promote.Monad changed]
 [16 of 45] Compiling Data.Singletons.Promote (
 src/Data/Singletons/Promote.hs, dist/build/Data/Singletons/Promote.o )
 [Data.Singletons.Promote.Defun changed]
 [17 of 45] Compiling Data.Promotion.Prelude.Bounded (
 src/Data/Promotion/Prelude/Bounded.hs,
 dist/build/Data/Promotion/Prelude/Bounded.o )
 Loading package ghc-prim ... linking ... done.
 Loading package integer-gmp ... linking ... done.
 Loading package base ... linking ... done.
 Loading package array-0.5.0.0 ... linking ... done.
 Loading package deepseq-1.3.0.2 ... linking ... done.
 Loading package containers-0.5.5.1 ... linking ... done.
 Loading package transformers-0.3.0.0 ... linking ... done.
 Loading package mtl-2.1.2 ... linking ... done.
 Loading package syb-0.4.1 ... linking ... done.
 Loading package pretty-1.1.1.1 ... linking ... done.
 Loading package template-haskell ... linking ... done.
 Loading package th-desugar-1.4.0 ... linking ... done.

 src/Data/Promotion/Prelude/Bounded.hs:34:27:
     Not in scope: ‘boundedTypes’

 src/Data/Promotion/Prelude/Bounded.hs:34:27:
     GHC stage restriction:
       ‘boundedTypes’ is used in a top-level splice or annotation,
       and must be imported, not defined locally
     In the first argument of ‘promoteBoundedInstances’, namely
       ‘boundedTypes’
     In the expression: promoteBoundedInstances boundedTypes
 [18 of 45] Compiling Data.Singletons.Single.Type (
 src/Data/Singletons/Single/Type.hs,
 dist/build/Data/Singletons/Single/Type.o ) [Data.Singletons.Single.Monad
 changed]
 [19 of 45] Compiling Data.Singletons.Single.Eq (
 src/Data/Singletons/Single/Eq.hs, dist/build/Data/Singletons/Single/Eq.o )
 [Data.Singletons.Util changed]
 [20 of 45] Compiling Data.Singletons.Single.Data (
 src/Data/Singletons/Single/Data.hs,
 dist/build/Data/Singletons/Single/Data.o ) [Data.Singletons.Single.Monad
 changed]
 [21 of 45] Compiling Data.Singletons.Single (
 src/Data/Singletons/Single.hs, dist/build/Data/Singletons/Single.o )
 [Data.Singletons.Promote changed]
 [22 of 45] Compiling Data.Singletons.Prelude.Instances (
 src/Data/Singletons/Prelude/Instances.hs,
 dist/build/Data/Singletons/Prelude/Instances.o ) [Data.Singletons.Single
 changed]
 [23 of 45] Compiling Data.Singletons.Prelude.Bool (
 src/Data/Singletons/Prelude/Bool.hs,
 dist/build/Data/Singletons/Prelude/Bool.o )
 [Data.Singletons.Prelude.Instances changed]
 [24 of 45] Compiling Data.Singletons.Prelude.Eq (
 src/Data/Singletons/Prelude/Eq.hs, dist/build/Data/Singletons/Prelude/Eq.o
 ) [Data.Singletons.Prelude.Bool changed]
 [25 of 45] Compiling Data.Singletons.CustomStar (
 src/Data/Singletons/CustomStar.hs, dist/build/Data/Singletons/CustomStar.o
 ) [Data.Singletons.Prelude.Bool changed]
 [26 of 45] Compiling Data.Promotion.Prelude.Eq (
 src/Data/Promotion/Prelude/Eq.hs, dist/build/Data/Promotion/Prelude/Eq.o )
 [Data.Singletons.Prelude.Eq changed]
 [27 of 45] Compiling Data.Promotion.Prelude.Bool (
 src/Data/Promotion/Prelude/Bool.hs,
 dist/build/Data/Promotion/Prelude/Bool.o ) [Data.Singletons.Prelude.Bool
 changed]
 [28 of 45] Compiling Data.Singletons.TypeRepStar (
 src/Data/Singletons/TypeRepStar.hs,
 dist/build/Data/Singletons/TypeRepStar.o ) [Data.Singletons.Prelude.Eq
 changed]
 [29 of 45] Compiling Data.Singletons.Prelude.Ord (
 src/Data/Singletons/Prelude/Ord.hs,
 dist/build/Data/Singletons/Prelude/Ord.o ) [Data.Singletons.Prelude.Bool
 changed]
 [30 of 45] Compiling Data.Promotion.Prelude.Ord (
 src/Data/Promotion/Prelude/Ord.hs, dist/build/Data/Promotion/Prelude/Ord.o
 ) [Data.Singletons.Prelude.Ord changed]
 [31 of 45] Compiling Data.Singletons.TypeLits (
 src/Data/Singletons/TypeLits.hs, dist/build/Data/Singletons/TypeLits.o )
 [Data.Singletons.Prelude.Bool changed]
 [32 of 45] Compiling Data.Singletons.TH ( src/Data/Singletons/TH.hs,
 dist/build/Data/Singletons/TH.o ) [Data.Singletons.Prelude.Bool changed]
 [33 of 45] Compiling Data.Singletons.Prelude.Base (
 src/Data/Singletons/Prelude/Base.hs,
 dist/build/Data/Singletons/Prelude/Base.o ) [Data.Singletons.Prelude.Bool
 changed]
 [34 of 45] Compiling Data.Singletons.Prelude.Either (
 src/Data/Singletons/Prelude/Either.hs,
 dist/build/Data/Singletons/Prelude/Either.o )
 [Data.Singletons.Prelude.Base changed]
 [35 of 45] Compiling Data.Promotion.Prelude.Either (
 src/Data/Promotion/Prelude/Either.hs,
 dist/build/Data/Promotion/Prelude/Either.o )
 [Data.Singletons.Prelude.Either changed]
 [36 of 45] Compiling Data.Singletons.Prelude.Tuple (
 src/Data/Singletons/Prelude/Tuple.hs,
 dist/build/Data/Singletons/Prelude/Tuple.o )
 [Data.Singletons.Prelude.Instances changed]
 [37 of 45] Compiling Data.Promotion.Prelude.Tuple (
 src/Data/Promotion/Prelude/Tuple.hs,
 dist/build/Data/Promotion/Prelude/Tuple.o ) [Data.Singletons.Prelude.Tuple
 changed]
 [38 of 45] Compiling Data.Promotion.Prelude.Base (
 src/Data/Promotion/Prelude/Base.hs,
 dist/build/Data/Promotion/Prelude/Base.o ) [Data.Singletons.Prelude.Base
 changed]
 [39 of 45] Compiling Data.Singletons.Prelude.List (
 src/Data/Singletons/Prelude/List.hs,
 dist/build/Data/Singletons/Prelude/List.o ) [Data.Singletons.Prelude.Base
 changed]
 [40 of 45] Compiling Data.Singletons.Prelude.Maybe (
 src/Data/Singletons/Prelude/Maybe.hs,
 dist/build/Data/Singletons/Prelude/Maybe.o
 )[Data.Singletons.Prelude.Instances changed]
 [41 of 45] Compiling Data.Singletons.Prelude (
 src/Data/Singletons/Prelude.hs, dist/build/Data/Singletons/Prelude.o )
 [Data.Singletons.Prelude.Base changed]
 [42 of 45] Compiling Data.Promotion.Prelude.List (
 src/Data/Promotion/Prelude/List.hs,
 dist/build/Data/Promotion/Prelude/List.o ) [Data.Promotion.Prelude.Ord
 changed]
 [43 of 45] Compiling Data.Promotion.Prelude.Maybe (
 src/Data/Promotion/Prelude/Maybe.hs,
 dist/build/Data/Promotion/Prelude/Maybe.o ) [Data.Singletons.Prelude.Maybe
 changed]
 [45 of 45] Compiling Data.Promotion.TH ( src/Data/Promotion/TH.hs,
 dist/build/Data/Promotion/TH.o ) [Data.Singletons.Prelude.Bool changed]
 }}}

 Notice how file 18 of 45 fails to build and yet the build does not stop.
 It seems that while one thread fails the remaining ones pick up other
 files that can be compiled despite the failure. I'm not really sure if I'm
 against this design choice, but I'd certainly expect to get information
 that something went wrong during the build. Here I was confused when I
 realised that despite seemingly successful compilation my package was not
 built. Only after examining the build log I saw that one of the modules
 failed to build. This should be changed to clearly notify the user that
 compilation was not successful.

 PS. At first I thought this is cabal-install's fault, but
 [https://github.com/haskell/cabal/issues/1809 this was ruled out].

--
Ticket URL: <http://ghc.haskell.org/trac/ghc/ticket/9219>
GHC <http://www.haskell.org/ghc/>
The Glasgow Haskell Compiler


More information about the ghc-tickets mailing list