This is a quick summary of the results of building most of hackage using
three combinations of ghc and Cabal.
I reported the breakage due to Cabal-1.6 previously. This is a brief
look at breakage introduced with ghc-6.10 and the associated library
changes.
I have build summary logs and individual package build logs. I will post
those later. Anyway, here's the summary of the summary:
ghc-6.8.2 & Cabal-1.4.0.2
1 UnpackFailed
3 InstallFailed
20 ConfigureFailed
27 DependencyFailed
87 BuildFailed
547 InstallOk
ghc-6.8.2 & Cabal-1.5.6
1 UnpackFailed
3 InstallFailed
26 ConfigureFailed
27 DependencyFailed
87 BuildFailed
541 InstallOk
ghc-6.10.0 (5th Oct version) & Cabal-1.6.0.0
1 InstallFailed
21 ConfigureFailed
121 DependencyFailed
126 BuildFailed
422 InstallOk
If we look at a breakdown of the builds that caused three or more
knock-on failures (ie the causes of the 121 DependencyFailed above):
3 hxt-8.1.0
4 hsql-1.7
4 hsx-0.4.4
4 plugins-1.3
4 TypeCompose-0.5
6 arrows-0.4
24 hslogger-1.0.5
46 time-1.1.2.1
Hmm, time and hslogger are big ones there. Let's look at the individual
package build logs. First time:
Data/Time/Clock/CTimeval.hs:1:11:
Warning: -ffi is deprecated: use -XForeignFunctionInterface or
pragma {-# LANGUAGE ForeignFunctionInterface#-} instead
<no location info>:
Failing due to -Werror.
NOOOOooooooooooooooooooo!!!!!!
This is the reason that hackage now rejects the use of -Werror in
released packages. It causes unnecessary breakage when new compilers add
new warnings.
Ok, lets look at hslogger:
src/System/Log/Logger.hs:333:20:
Couldn't match expected type `Maybe Logger'
against inferred type `IO Logger'
In a stmt of a 'do' expression: result <- Map.lookup lname newlt
Ah ok, so that's the change in Map.lookup to return Maybe rather than in
any monad. So that's an easy source code fix:
result <- maybe (fail "Arrgh!") return (Map.lookup lname newlt)
Note of course this will also work with the previous implementation of
lookup.
Duncan