i'm not a fan of cpp, but two things it was good for in other projects was
..
I'm immediately suspicious of any plan involving more CPP use - the
existing CPP we have (for platform-specific code, mostly) is one of the
causes of build problems, as the compiler can't spot that modifying
import lists, refactoring code, giving a function an extra argument,
etc, hasn't broken the build for another platform.

yes, as i said, i'm not a cpp fan either. just a few quick points:

- this particular use is intended to be temporary. the only purpose is to isolate ghc hacker X from patches committed by ghc hacker Y
   for just as long as it takes for hacker Y to fix his patches so that
   they successfully pass all buildbots (assuming there's a buildbot
   for every ghc variant/platform someone cares about). once that
   is achieved, all the TEST_BUILD cpp stuff should be removed
   from hacker Y's patches.

- this use is entirely schematic. once the ghc team has prescribed
an agreeable definition and use pattern of the TEST_BUILD macro, using that pattern should add not extra breakage (note
   that any platform-specific code would have its own cpp use
   inside the TEST_BUILD then-branch). the only issue i can
   think of here would be haskell-code that isn't cpp-friendly.

- noone would be forced to use the TEST_BUILD scheme to
   ease their patches into the main repo. but anyone not using
   the scheme would better be very sure of their work. while
   anyone using the scheme (provided they do a successful
   build on at least one platform) would have some additional
   insurance - they are less likely to break other people's builds,
   because all of their additions will be invisible to anyone but
the buildbots until the TEST_BUILD protection is explicitly removed for a platform - *after* the buildbot for that platform reports a successful build *with* the new code.

i'd be happier if the same advantages could be achieved
without cpp, but the issues that the TEST_BUILD scheme
is intended to isolate us from are likely to be platform-specific,
or else they wouldn't break some builds while working on at
least one build.

the idea is that i develop my presumably standard code, build on a standard platform, and send a patch, protected
by TEST_BUILD. then Manuel checks out the latest ghc,
with my patch in the source but still disabled, and with the SPJ patch he needs, already tested and enabled. he builds ghc successfully and goes on with his work, while the buildbot for his platform tries to build the same source, but with my patch enabled. so i get back error reports that tell me that mingw doesn't support that "standard" header i used, or that Manuel's platform has changed what used to be a "standard" function into a non-standard macro. then i disable my patch for
those two platforms, and ask on this list whether there's
a way to make my patch work on those two platforms
as well. all the while, noone but two buildbots has been
inconvenienced. unlike now, when Manuel's build would
have failed, with my incomplete patch preventing him
from getting easy access to the SPJ patch he needs.

so much for a usage scenario. does this explain what
i'm after? in a sense, the idea is to integrate the last-known-good versions into the main repo: only
buildbots and adventurous souls see the bleeding
edge of untested patches. everyone else is protected
by the TEST_BUILD scheme.. i hope;-)

this is just one proposal. but we do seem to agree that we need something, and this sounds workable at least in theory. perhaps, like the buildbot-specific last-known-good repos, it will have problems in practice. i don't know!-)

claus

_______________________________________________
Cvs-ghc mailing list
[email protected]
http://www.haskell.org/mailman/listinfo/cvs-ghc

Reply via email to