Matt,
Can you the ability for self.installNeeded to check the date from hg log for the particular package? Something such as:
hg log -l 1 config/PETSc/packages/metis.py --template '{date|isodatesec}'
2012-03-20 15:11:27 -0500
and then redownload && reinstall based on this information (as well as the current method of checking options written to a file). Since buildsystem is already written in python, this could be implemented with a fancy call to a mercurial command server, or whatever you prefer.
While we're at it, can the mkfile argument self.installNeeded be optional and default to self.package?
Thanks!