
#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