Mercurial > bitten > bitten-test
changeset 474:8c3dfe0efe78
Committing rmtree patch for windows submitted by Doug Patterson. Thanks! Closes #211, #183, #236.
author | wbell |
---|---|
date | Wed, 05 Mar 2008 20:43:55 +0000 |
parents | b1d346c4e539 |
children | 7562b9dd22b8 |
files | bitten/slave.py |
diffstat | 1 files changed, 8 insertions(+), 2 deletions(-) [+] |
line wrap: on
line diff
--- a/bitten/slave.py +++ b/bitten/slave.py @@ -35,6 +35,12 @@ temp_net_errors = [errno.ENETUNREACH, errno.ENETDOWN, errno.ETIMEDOUT, errno.ECONNREFUSED] +def _rmtree(root): + """Catch shutil.rmtree failures on Windows when files are read-only.""" + def _handle_error(fn, path, excinfo): + os.chmod(path, 0666) + fn(path) + return shutil.rmtree(root, onerror=_handle_error) class SaneHTTPErrorProcessor(urllib2.HTTPErrorProcessor): "The HTTPErrorProcessor defined in urllib needs some love." @@ -229,7 +235,7 @@ finally: if not self.keep_files: log.debug('Removing build directory %s' % basedir) - shutil.rmtree(basedir) + _rmtree(basedir) if self.single_build: log.info('Exiting after single build completed.') raise ExitSlave() @@ -380,7 +386,7 @@ if not options.work_dir: log.debug('Removing temporary directory %s' % slave.work_dir) - shutil.rmtree(slave.work_dir) + _rmtree(slave.work_dir) if __name__ == '__main__': main()