From ef106f36ec8fd1bf2be36da5b6db754c36e2c122 Mon Sep 17 00:00:00 2001 From: Amber Yust Date: Wed, 22 Dec 2010 17:25:08 -0800 Subject: [PATCH 1/2] Prevent unhandled error when sighup'ing without specified category --- master/buildbot/process/builder.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/master/buildbot/process/builder.py b/master/buildbot/process/builder.py index f5b6363e52c..8e2a610c014 100644 --- a/master/buildbot/process/builder.py +++ b/master/buildbot/process/builder.py @@ -472,8 +472,8 @@ def compareToSetup(self, setup): diffs.append('logHorizon changed from %s to %s' % (self.logHorizon, setup['logHorizon'])) if setup['eventHorizon'] != self.eventHorizon: diffs.append('eventHorizon changed from %s to %s' % (self.eventHorizon, setup['eventHorizon'])) - if setup['category'] != self.category: - diffs.append('category changed from %r to %r' % (self.category, setup['category'])) + if setup.get('category', None) != self.category: + diffs.append('category changed from %r to %r' % (self.category, setup.get('category', None))) return diffs From 2773a72cf27360a0b904f63ad722b053fbac8ca0 Mon Sep 17 00:00:00 2001 From: Dmitry Nezhevenko Date: Thu, 23 Dec 2010 11:43:26 +0200 Subject: [PATCH 2/2] Fix removing of broken "junctions" on Windows On Windows junction is something like *nix symlink. os.path.isdir() returns True but os.listdir() will not work. os.path.islink() returns False for them. The only way to remove it is to call os.rmdir() --- slave/buildslave/commands/utils.py | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/slave/buildslave/commands/utils.py b/slave/buildslave/commands/utils.py index c74ddf30518..0a90c91a5a8 100644 --- a/slave/buildslave/commands/utils.py +++ b/slave/buildslave/commands/utils.py @@ -59,8 +59,14 @@ def rmdirRecursive(dir): dir = unicode(dir, "utf-8") except: log.msg("rmdirRecursive: decoding from UTF-8 failed") + try: + list = os.listdir(dir) + except WindowsError, e: + log.msg("rmdirRecursive: unable to listdir %s (%s). Trying to remove like a dir" % (dir, e.strerror)) + os.rmdir(dir) + return - for name in os.listdir(dir): + for name in list: full_name = os.path.join(dir, name) # on Windows, if we don't have write permission we can't remove # the file/directory either, so turn that on