[Checkins] SVN: keas.build/trunk/src/keas/build/package.py more windows happiness -- it cannot remove a readonly file and an svn repo is full of those

Adam Groszer agroszer at gmail.com
Mon Sep 7 04:01:27 EDT 2009


Log message for revision 103606:
  more windows happiness -- it cannot remove a readonly file and an svn repo is full of those

Changed:
  U   keas.build/trunk/src/keas/build/package.py

-=-
Modified: keas.build/trunk/src/keas/build/package.py
===================================================================
--- keas.build/trunk/src/keas/build/package.py	2009-09-07 07:55:03 UTC (rev 103605)
+++ keas.build/trunk/src/keas/build/package.py	2009-09-07 08:01:27 UTC (rev 103606)
@@ -27,6 +27,7 @@
 import re
 import shutil
 import sys
+import stat
 import tempfile
 import urllib
 import urllib2
@@ -36,6 +37,21 @@
 
 is_win32 = sys.platform == 'win32'
 
+def checkRO(function, path, excinfo):
+    if (function == os.remove
+        and excinfo[0] == WindowsError
+        and excinfo[1].winerror == 5):
+        #Access is denied
+        #because it's a readonly file
+        os.chmod(path, stat.S_IWRITE)
+        os.remove(path)
+
+def rmtree(dirname):
+    if is_win32:
+        shutil.rmtree(dirname, ignore_errors=False, onerror=checkRO)
+    else:
+        shutil.rmtree(dirname)
+
 class PackageBuilder(object):
 
     pkg = None
@@ -253,7 +269,7 @@
                 base.do('svn ci -m "Update version number." %s' %(branchDir))
 
         # 6. Cleanup
-        shutil.rmtree(buildDir)
+        rmtree(buildDir)
 
     def runCLI(self, configFile, askToCreateRelease=False):
         logger.info('Start releasing new version of ' + self.pkg)



More information about the checkins mailing list