From the I-can’t-believe-that-worked-department…

01/08/2007

Last week, the Firefox trunk build needed to be clobbered due to a checkin that broke depend builds.
dbaron emailed us, requesting the clobber, but then he must’ve remembered me mentioning adding CLOBBER file support to the Tinderbox client.
The idea was that developers shouldn’t have to find someone in #build to clobber builds for them; as long as the person requesting the clobber and reason can be tracked, developers should be able to clobber their own builds.
Implementation of the idea original stalled, though, because CLOBBER file support relies on a) all the configs being public and 2) all the Tinderboxen paying attention to those public configs. That’s been done for awhile now (thanks again Coop), but we never had a chance to finish testing the clobber file support, so I had never announced it.
Well, dbaron tried it out and—much to my surprise—it actually worked!
I also tested on the 1.8 branch later that day and it worked there, too.
So, if you need to clobber a build for a checkin, here’s how you do it:

  1. After your code goes in…
  2. Checkout mozilla/tools/tinderbox-configs; you probably want mozilla/tools/tinderbox-configs/[product]/[platform], i.e. mozilla/tools/tinderbox-configs/firefox/win32. If you want to clobber the 1.8 or 1.8.0 branch(es), check out those branches (-rMOZILLA_1_8_BRANCH).
  3. If there’s not a CLOBBER file in that directory (case matters), cvs add one. Edit the file with the reason (and hopefully a bug number?) for the clobber request.
  4. Check it back in; include the reason in the commit message (yes, this is duplicated from the step above…)
  5. Annotate the build on Tinderbox to let others know it will (should be ;-) a clobber build, and thus will take longer to complete.
  6. If you’re feeling benevolent, please stop by #build to let us know you requested a clobber, so we know to expect it
  7. Next build should be a clobber build; if it's not, please stop by #build to let us know, so we can track down why it didn't work

Obviously, clobber builds take longer than depend builds, so please only use this functionality only when necessary (there's a code change that requires it; nightlies are broken for some obvious reason). I'm pretty confident that we all know valid reasons for requesting clobbers. And please coordinate clobbering on IRC, if you can.
While it took us awhile to get here, this is the type of functionality I was talking about working more on this year to give developers the tools they need to be more productive/"agile," but in a framework that tracks the information we need to track.
I'm hoping this is just the beginning.