| Index: third_party/buildbot_7_12/buildbot/changes/freshcvs.py
|
| diff --git a/third_party/buildbot_7_12/buildbot/changes/freshcvs.py b/third_party/buildbot_7_12/buildbot/changes/freshcvs.py
|
| deleted file mode 100644
|
| index 53a2ac46a6d1625b30ff7c1773a1816e4e985f67..0000000000000000000000000000000000000000
|
| --- a/third_party/buildbot_7_12/buildbot/changes/freshcvs.py
|
| +++ /dev/null
|
| @@ -1,144 +0,0 @@
|
| -
|
| -import os.path
|
| -
|
| -from zope.interface import implements
|
| -from twisted.cred import credentials
|
| -from twisted.spread import pb
|
| -from twisted.application.internet import TCPClient
|
| -from twisted.python import log
|
| -
|
| -import cvstoys.common # to make sure VersionedPatch gets registered
|
| -
|
| -from buildbot.interfaces import IChangeSource
|
| -from buildbot.pbutil import ReconnectingPBClientFactory
|
| -from buildbot.changes.changes import Change
|
| -from buildbot import util
|
| -
|
| -class FreshCVSListener(pb.Referenceable):
|
| - def remote_notify(self, root, files, message, user):
|
| - try:
|
| - self.source.notify(root, files, message, user)
|
| - except Exception, e:
|
| - print "notify failed"
|
| - log.err()
|
| -
|
| - def remote_goodbye(self, message):
|
| - pass
|
| -
|
| -class FreshCVSConnectionFactory(ReconnectingPBClientFactory):
|
| -
|
| - def gotPerspective(self, perspective):
|
| - log.msg("connected to FreshCVS daemon")
|
| - ReconnectingPBClientFactory.gotPerspective(self, perspective)
|
| - self.source.connected = True
|
| - # TODO: freshcvs-1.0.10 doesn't handle setFilter correctly, it will
|
| - # be fixed in the upcoming 1.0.11 . I haven't been able to test it
|
| - # to make sure the failure mode is survivable, so I'll just leave
|
| - # this out for now.
|
| - return
|
| - if self.source.prefix is not None:
|
| - pathfilter = "^%s" % self.source.prefix
|
| - d = perspective.callRemote("setFilter",
|
| - None, pathfilter, None)
|
| - # ignore failures, setFilter didn't work in 1.0.10 and this is
|
| - # just an optimization anyway
|
| - d.addErrback(lambda f: None)
|
| -
|
| - def clientConnectionLost(self, connector, reason):
|
| - ReconnectingPBClientFactory.clientConnectionLost(self, connector,
|
| - reason)
|
| - self.source.connected = False
|
| -
|
| -class FreshCVSSourceNewcred(TCPClient, util.ComparableMixin):
|
| - """This source will connect to a FreshCVS server associated with one or
|
| - more CVS repositories. Each time a change is committed to a repository,
|
| - the server will send us a message describing the change. This message is
|
| - used to build a Change object, which is then submitted to the
|
| - ChangeMaster.
|
| -
|
| - This class handles freshcvs daemons which use newcred. CVSToys-1.0.9
|
| - does not, later versions might.
|
| - """
|
| -
|
| - implements(IChangeSource)
|
| - compare_attrs = ["host", "port", "username", "password", "prefix"]
|
| -
|
| - changemaster = None # filled in when we're added
|
| - connected = False
|
| -
|
| - def __init__(self, host, port, user, passwd, prefix=None):
|
| - self.host = host
|
| - self.port = port
|
| - self.username = user
|
| - self.password = passwd
|
| - if prefix is not None and not prefix.endswith("/"):
|
| - log.msg("WARNING: prefix '%s' should probably end with a slash" \
|
| - % prefix)
|
| - self.prefix = prefix
|
| - self.listener = l = FreshCVSListener()
|
| - l.source = self
|
| - self.factory = f = FreshCVSConnectionFactory()
|
| - f.source = self
|
| - self.creds = credentials.UsernamePassword(user, passwd)
|
| - f.startLogin(self.creds, client=l)
|
| - TCPClient.__init__(self, host, port, f)
|
| -
|
| - def __repr__(self):
|
| - return "<FreshCVSSource where=%s, prefix=%s>" % \
|
| - ((self.host, self.port), self.prefix)
|
| -
|
| - def describe(self):
|
| - online = ""
|
| - if not self.connected:
|
| - online = " [OFFLINE]"
|
| - return "freshcvs %s:%s%s" % (self.host, self.port, online)
|
| -
|
| - def notify(self, root, files, message, user):
|
| - pathnames = []
|
| - isdir = 0
|
| - for f in files:
|
| - if not isinstance(f, (cvstoys.common.VersionedPatch,
|
| - cvstoys.common.Directory)):
|
| - continue
|
| - pathname, filename = f.pathname, f.filename
|
| - #r1, r2 = getattr(f, 'r1', None), getattr(f, 'r2', None)
|
| - if isinstance(f, cvstoys.common.Directory):
|
| - isdir = 1
|
| - path = os.path.join(pathname, filename)
|
| - log.msg("FreshCVS notify '%s'" % path)
|
| - if self.prefix:
|
| - if path.startswith(self.prefix):
|
| - path = path[len(self.prefix):]
|
| - else:
|
| - continue
|
| - pathnames.append(path)
|
| - if pathnames:
|
| - # now() is close enough: FreshCVS *is* realtime, after all
|
| - when=util.now()
|
| - c = Change(user, pathnames, message, isdir, when=when)
|
| - self.parent.addChange(c)
|
| -
|
| -class FreshCVSSourceOldcred(FreshCVSSourceNewcred):
|
| - """This is for older freshcvs daemons (from CVSToys-1.0.9 and earlier).
|
| - """
|
| -
|
| - def __init__(self, host, port, user, passwd,
|
| - serviceName="cvstoys.notify", prefix=None):
|
| - self.host = host
|
| - self.port = port
|
| - self.prefix = prefix
|
| - self.listener = l = FreshCVSListener()
|
| - l.source = self
|
| - self.factory = f = FreshCVSConnectionFactory()
|
| - f.source = self
|
| - f.startGettingPerspective(user, passwd, serviceName, client=l)
|
| - TCPClient.__init__(self, host, port, f)
|
| -
|
| - def __repr__(self):
|
| - return "<FreshCVSSourceOldcred where=%s, prefix=%s>" % \
|
| - ((self.host, self.port), self.prefix)
|
| -
|
| -# this is suitable for CVSToys-1.0.10 and later. If you run CVSToys-1.0.9 or
|
| -# earlier, use FreshCVSSourceOldcred instead.
|
| -FreshCVSSource = FreshCVSSourceNewcred
|
| -
|
|
|