Hi Simon,

(Re-sending from the email address that's allowed on the mailing list.)

> Ugh.  That's not a very happy state of affairs, is it?  It didn't happen with 
> 'make'.
> Is it a fundamental problem, or just not yet fixed?

I think this is not a fundamental problem, but the problem of getting 
dependencies right.

In this case, the complexity comes from the fact that a single invocation of 
GHC produces a set of files, and which set depends on the command line flags, 
which are in turn determined dynamically by reading environment settings 
(specifically, `platformSupportsSharedLibs`).

Such rules are hard to describe precisely, because build systems are tuned to 
the typical case where we statically know, for every output file, which rule 
produces it -- recall the Tasks = k -> Maybe Task function from our paper. In 
this case, we deal with something like k -> f (Maybe Task) instead, i.e. with 
`f` around the Maybe.

The Make build system happens to do the right thing, somehow. I believe we 
should be able to express the same logic in Shake, but it's not easy.

(I never really had a chance to look at dynamic builds, since they are not 
supported on Windows. I guess I should finally find a Linux box for Hadrian.)

Cheers,
Andrey
_______________________________________________
ghc-devs mailing list
ghc-devs@haskell.org
http://mail.haskell.org/cgi-bin/mailman/listinfo/ghc-devs

Reply via email to