On Sep-21, Gregor N. Purdy wrote:
> Nick --
> 
> Looks like I'm the guilty party. I do tend to do this
> every now and again, even though I don't consider myself
> thoughtless or careless.
> 
> I think sometimes I get focused on my local changes and
> as I'm testing and committing it just isn't natural to
> consider that a change in something that *depends on*
> the rest of Parrot will cause a build failure of Parrot.
> 
> It may be that I'm the only one that feels that way, but
> perhaps not. A sure way to make the problem go away is
> to make the building of these other pieces of code fail
> when the problem exists. One way to accomplish that would
> be to have the various languages have their own MANIFEST
> files that are checked every time you do a 'make' there.
> 
> That way, if I have a clean checkout of the entirety of
> Parrot, and it builds fine, and then I go off and make
> a change to Jako, I'll get the complaint right then and
> there instead of having to remember to go back and build/test
> Parrot again (which hasn't been changed after all).

Given the number of times the same failure has been triggered by other
people, I would say that you are definitely not the only one. I know
I've done it a few times. I don't really like splitting up the
MANIFEST, though -- that changes what it means and reduces its ability
to be plugged into existing tools.

I propose instead that we should make it easy to write local manifest
checks. Then all non-root makefiles could add a local-manicheck target
to their 'test' target that would check only the portions of the
manifest that are within the relevant subdirectory.

Except that parts of a local area may be outside that directory, eg
config/gen/makefiles/jako.in is really part of the Jako project. But
that's easy to fix -- just don't bother to filter out the rest of the
system in your local-manicheck target. Since the MANIFEST should be
up-to-date during checkin at all times, this should catch exactly the
same set of errors, and the check is fast enough to not be a burden.

So we just need to come up with a good canonical way of calling the
root-level t/src/manifest.t from subdirectories. We probably ought to
implement it as a parrot/lib/ module.

Reply via email to