Unreliability of the build system
mainland at apeiron.net
Wed May 15 12:23:39 CEST 2013
On 05/15/2013 10:24 AM, Jan Stolarek wrote:
> Fellow developers,
> I need advice on using GHC build system. Recently I've been spending
> more time on resolving problems with the build system itself than on
> developing GHC, and this is not how things are supposed to be. I have
> found testsuite and validation to be very unreliable - things seem to
> break randomly and results are not repeatable. I suspect that I might
> be doing something wrong and I will appreciate any advice or
> explanations why I'm having these problem.
> I have three GHC trees:
> * ghc-working - source tree I use for development
> * ghc-build - lndir'ed to ghc-working, used for building
> * ghc-validate - source tree used for validation, ghc-working is set
> up as one of the remotes
> Here's the situation from yesterday evening. I updated ghc-working and
> ghc-validate trees from the origin - according to the fingerprint.py
> script both trees were identical. I ran validation in ghc-validate and
> ghc-build trees (on the master branches, no my changes). The only
> difference between them should be that ghc-build is
> symlinked. Validation in ghc-validate passed with two failures (others
> on IRC confirmed they are having same failures), while validation in
> ghc-build failed with:
> Haddock coverage:
> 100% ( 1 / 1) in 'GHC.IntWord64'
> 78% ( 7 / 9) in 'GHC.Types'
> 17% ( 1 / 6) in 'GHC.CString'
> 3% ( 2 / 63) in 'GHC.Tuple'
> 0% ( 0 / 3) in 'GHC.Debug'
> 0% ( 0 /342) in 'GHC.PrimopWrappers'
> 30% (160 /531) in 'GHC.Prim'
> 100% ( 3 / 3) in 'GHC.Magic'
> 38% ( 6 / 16) in 'GHC.Classes'
> haddock: internal error: /dane/uczelnia/projekty/ghc-build/inpl
> ace/lib/html/Ocean.std-theme/ocean.css: copyFile: does not exis
> t (No such file or directory)
> gmake: *** [libraries/ghc-prim/dist-install/doc/html/ghc-pri
> m/ghc-prim.haddock] Błąd 1
> gmake: *** Kasuję plik `libraries/ghc-prim/dist-install/doc/
> Today I ran ./sync-all pull in both trees, but no new commits were
> added (according to fingerprint). I run the validation again and the
> validation in ghc-build fails as previously, while the validation in
> ghc-validate reports over 200 unexpected failures. What is more, I
> found that rerunning some of the failing tests (make TEST=whatever)
> often results with these tests passing. This unreliability is very
> I've been having these problems since I started working on GHC in
> December. I'm wondering whether this is a common thing or am I doing
> something not-so-obviously wrong? As usual, I will appreciate any
> advice from those more experienced than me.
The haddock failure you're seeing is caused by using relative symlinks
with lndir. See #7879.
I don't know what your other failures are, so I can't speak to
them. Perhaps you have different library versions checked out in
different trees; you could check whether or not this is the case by
looking at the various trees' fingerprints.
Personally, I think the current mix of git submodules and non-git
submodule dependencies is horrible. It makes it impossible to check out
a consistent tree without a full fingerprint while also incurring all
the disadvantages of submodules.
More information about the ghc-devs