patch applied (cabal): Refuse to run any commands if the .cabal has
been modified
Duncan Coutts
duncan.coutts at worc.ox.ac.uk
Tue Oct 23 13:41:45 EDT 2007
Tue Oct 23 02:31:11 PDT 2007 Simon Marlow <simonmar at microsoft.com>
* Refuse to run any commands if the .cabal has been modified
See GHC bug #1372
This is a consistency check, intended to prevent this class of build
failures:
* Package P is updated, its version number is bumped, the
new version is compiled and installed.
* Package Q depends on P. Q is modified to use the new P, and Q's
.cabal file is updated with changes to the build-depends field to
depend on the new version of P.
* The user has an old build of Q. They pull the changes to Q and
'setup build' without cleaning or re-configuring. Build errors
ensue, because the code of Q depends on changes to P's API, and
we're still building against the old P.
Note that you can't get segfaults this way, only build errors.
This also relies on some new consistency checking in GHC 6.8 to work
properly. If the user re-configures their Q build and then issues
'setup build' without cleaning, GHC must now realise that the package
flags have changed, and re-compile all the affected Q modules. GHC
6.6 would not do this, but 6.8 does.
M ./Distribution/Simple.hs -23 +40
M ./Distribution/Simple/Configure.hs -3 +15
M ./Distribution/Simple/LocalBuildInfo.hs +2
More information about the cabal-devel
mailing list