
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