aboutsummaryrefslogtreecommitdiffstats
path: root/lib/python2.7/site-packages/buildbot-0.8.8-py2.7.egg/buildbot/steps/source/bzr.py
diff options
context:
space:
mode:
Diffstat (limited to 'lib/python2.7/site-packages/buildbot-0.8.8-py2.7.egg/buildbot/steps/source/bzr.py')
-rw-r--r--lib/python2.7/site-packages/buildbot-0.8.8-py2.7.egg/buildbot/steps/source/bzr.py244
1 files changed, 0 insertions, 244 deletions
diff --git a/lib/python2.7/site-packages/buildbot-0.8.8-py2.7.egg/buildbot/steps/source/bzr.py b/lib/python2.7/site-packages/buildbot-0.8.8-py2.7.egg/buildbot/steps/source/bzr.py
deleted file mode 100644
index a7deed93..00000000
--- a/lib/python2.7/site-packages/buildbot-0.8.8-py2.7.egg/buildbot/steps/source/bzr.py
+++ /dev/null
@@ -1,244 +0,0 @@
-# This file is part of Buildbot. Buildbot is free software: you can
-# redistribute it and/or modify it under the terms of the GNU General Public
-# License as published by the Free Software Foundation, version 2.
-#
-# This program is distributed in the hope that it will be useful, but WITHOUT
-# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
-# FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
-# details.
-#
-# You should have received a copy of the GNU General Public License along with
-# this program; if not, write to the Free Software Foundation, Inc., 51
-# Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
-#
-# Copyright Buildbot Team Members
-
-import os
-
-from twisted.python import log
-from twisted.internet import defer
-
-from buildbot.process import buildstep
-from buildbot.steps.source.base import Source
-from buildbot.interfaces import BuildSlaveTooOldError
-
-class Bzr(Source):
-
- name = 'bzr'
- renderables = [ 'repourl', 'baseURL' ]
-
- def __init__(self, repourl=None, baseURL=None, mode='incremental',
- method=None, defaultBranch=None, **kwargs):
-
- self.repourl = repourl
- self.baseURL = baseURL
- self.branch = defaultBranch
- self.mode = mode
- self.method = method
- Source.__init__(self, **kwargs)
- if repourl and baseURL:
- raise ValueError("you must provide exactly one of repourl and"
- " baseURL")
-
- if repourl is None and baseURL is None:
- raise ValueError("you must privide at least one of repourl and"
- " baseURL")
-
- if baseURL is not None and defaultBranch is None:
- raise ValueError("you must provide defaultBranch with baseURL")
-
- assert self.mode in ['incremental', 'full']
-
- if self.mode == 'full':
- assert self.method in ['clean', 'fresh', 'clobber', 'copy', None]
-
- def startVC(self, branch, revision, patch):
- if branch:
- self.branch = branch
- self.revision = revision
- self.method = self._getMethod()
- self.stdio_log = self.addLogForRemoteCommands("stdio")
-
- if self.repourl is None:
- self.repourl = os.path.join(self.baseURL, self.branch)
-
- d = self.checkBzr()
- def checkInstall(bzrInstalled):
- if not bzrInstalled:
- raise BuildSlaveTooOldError("bzr is not installed on slave")
- return 0
-
- d.addCallback(checkInstall)
- if self.mode == 'full':
- d.addCallback(lambda _: self.full())
- elif self.mode == 'incremental':
- d.addCallback(lambda _: self.incremental())
-
- d.addCallback(self.parseGotRevision)
- d.addCallback(self.finish)
- d.addErrback(self.failed)
- return d
-
- def incremental(self):
- d = self._sourcedirIsUpdatable()
- def _cmd(updatable):
- if updatable:
- command = ['update']
- else:
- command = ['checkout', self.repourl, '.']
-
- if self.revision:
- command.extend(['-r', self.revision])
- return command
-
- d.addCallback(_cmd)
- d.addCallback(self._dovccmd)
- return d
-
- @defer.inlineCallbacks
- def full(self):
- if self.method == 'clobber':
- yield self.clobber()
- return
- elif self.method == 'copy':
- self.workdir = 'source'
- yield self.copy()
- return
-
- updatable = self._sourcedirIsUpdatable()
- if not updatable:
- log.msg("No bzr repo present, making full checkout")
- yield self._doFull()
- elif self.method == 'clean':
- yield self.clean()
- elif self.method == 'fresh':
- yield self.fresh()
- else:
- raise ValueError("Unknown method, check your configuration")
-
- def clobber(self):
- cmd = buildstep.RemoteCommand('rmdir', {'dir': self.workdir,
- 'logEnviron': self.logEnviron,})
- cmd.useLog(self.stdio_log, False)
- d = self.runCommand(cmd)
- def checkRemoval(res):
- if res != 0:
- raise RuntimeError("Failed to delete directory")
- return res
- d.addCallback(lambda _: checkRemoval(cmd.rc))
- d.addCallback(lambda _: self._doFull())
- return d
-
- def copy(self):
- cmd = buildstep.RemoteCommand('rmdir', {'dir': 'build',
- 'logEnviron': self.logEnviron,})
- cmd.useLog(self.stdio_log, False)
- d = self.runCommand(cmd)
- d.addCallback(lambda _: self.incremental())
- def copy(_):
- cmd = buildstep.RemoteCommand('cpdir',
- {'fromdir': 'source',
- 'todir':'build',
- 'logEnviron': self.logEnviron,})
- cmd.useLog(self.stdio_log, False)
- d = self.runCommand(cmd)
- return d
- d.addCallback(copy)
- return d
-
- def clean(self):
- d = self._dovccmd(['clean-tree', '--ignored', '--force'])
- command = ['update']
- if self.revision:
- command.extend(['-r', self.revision])
- d.addCallback(lambda _: self._dovccmd(command))
- return d
-
- def fresh(self):
- d = self._dovccmd(['clean-tree', '--force'])
- command = ['update']
- if self.revision:
- command.extend(['-r', self.revision])
- d.addCallback(lambda _: self._dovccmd(command))
- return d
-
- def _doFull(self):
- command = ['checkout', self.repourl, '.']
- if self.revision:
- command.extend(['-r', self.revision])
- d = self._dovccmd(command)
- return d
-
- def finish(self, res):
- d = defer.succeed(res)
- def _gotResults(results):
- self.setStatus(self.cmd, results)
- log.msg("Closing log, sending result of the command %s " % \
- (self.cmd))
- return results
- d.addCallback(_gotResults)
- d.addCallbacks(self.finished, self.checkDisconnect)
- return d
-
- def _sourcedirIsUpdatable(self):
- return self.pathExists(self.build.path_module.join(self.workdir, '.bzr'))
-
- def computeSourceRevision(self, changes):
- if not changes:
- return None
- lastChange = max([int(c.revision) for c in changes])
- return lastChange
-
- def _dovccmd(self, command, abandonOnFailure=True, collectStdout=False):
- cmd = buildstep.RemoteShellCommand(self.workdir, ['bzr'] + command,
- env=self.env,
- logEnviron=self.logEnviron,
- timeout=self.timeout,
- collectStdout=collectStdout)
- cmd.useLog(self.stdio_log, False)
- d = self.runCommand(cmd)
- def evaluateCommand(cmd):
- if abandonOnFailure and cmd.didFail():
- log.msg("Source step failed while running command %s" % cmd)
- raise buildstep.BuildStepFailed()
- if collectStdout:
- return cmd.stdout
- else:
- return cmd.rc
- d.addCallback(lambda _: evaluateCommand(cmd))
- return d
-
- def checkBzr(self):
- d = self._dovccmd(['--version'])
- def check(res):
- if res == 0:
- return True
- return False
- d.addCallback(check)
- return d
-
- def _getMethod(self):
- if self.method is not None and self.mode != 'incremental':
- return self.method
- elif self.mode == 'incremental':
- return None
- elif self.method is None and self.mode == 'full':
- return 'fresh'
-
- def parseGotRevision(self, _):
- d = self._dovccmd(["version-info", "--custom", "--template='{revno}"],
- collectStdout=True)
- def setrev(stdout):
- revision = stdout.strip("'")
- try:
- int(revision)
- except ValueError:
- log.msg("Invalid revision number")
- raise buildstep.BuildStepFailed()
-
- log.msg("Got Git revision %s" % (revision, ))
- self.updateSourceProperty('got_revision', revision)
- return 0
- d.addCallback(setrev)
- return d
-