diff options
Diffstat (limited to 'lib/python2.7/site-packages/buildbot_slave-0.8.8-py2.7.egg/buildslave/commands/bzr.py')
-rw-r--r-- | lib/python2.7/site-packages/buildbot_slave-0.8.8-py2.7.egg/buildslave/commands/bzr.py | 193 |
1 files changed, 0 insertions, 193 deletions
diff --git a/lib/python2.7/site-packages/buildbot_slave-0.8.8-py2.7.egg/buildslave/commands/bzr.py b/lib/python2.7/site-packages/buildbot_slave-0.8.8-py2.7.egg/buildslave/commands/bzr.py deleted file mode 100644 index d64265e7..00000000 --- a/lib/python2.7/site-packages/buildbot_slave-0.8.8-py2.7.egg/buildslave/commands/bzr.py +++ /dev/null @@ -1,193 +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 buildslave.commands.base import SourceBaseCommand -from buildslave import runprocess - - -class Bzr(SourceBaseCommand): - """bzr-specific VC operation. In addition to the arguments - handled by SourceBaseCommand, this command reads the following keys: - - ['repourl'] (required): the Bzr repository string - ['forceSharedRepo']: force this to a shared repo - """ - - header = "bzr operation" - - def setup(self, args): - SourceBaseCommand.setup(self, args) - self.repourl = args['repourl'] - self.sourcedata = "%s\n" % self.repourl - self.revision = self.args.get('revision') - self.forceSharedRepo = args.get('forceSharedRepo') - - def sourcedirIsUpdateable(self): - # checking out a specific revision requires a full 'bzr checkout' - return (not self.revision and - not self.sourcedirIsPatched() and - os.path.isdir(os.path.join(self.builder.basedir, - self.srcdir, ".bzr"))) - - def start(self): - def cont(res): - # Continue with start() method in superclass. - return SourceBaseCommand.start(self) - - if self.forceSharedRepo: - d = self.doForceSharedRepo(); - d.addCallback(cont) - return d - else: - return cont(None) - - def doVCUpdate(self): - bzr = self.getCommand('bzr') - assert not self.revision - # update: possible for mode in ('copy', 'update') - srcdir = os.path.join(self.builder.basedir, self.srcdir) - command = [bzr, 'update'] - c = runprocess.RunProcess(self.builder, command, srcdir, - sendRC=False, timeout=self.timeout, - maxTime=self.maxTime, logEnviron=self.logEnviron, - usePTY=False) - self.command = c - return c.start() - - def doVCFull(self): - bzr = self.getCommand('bzr') - - # checkout or export - d = self.builder.basedir - if self.mode == "export": - # exporting in bzr requires a separate directory - return self.doVCExport() - # originally I added --lightweight here, but then 'bzr revno' is - # wrong. The revno reported in 'bzr version-info' is correct, - # however. Maybe this is a bzr bug? - # - # In addition, you cannot perform a 'bzr update' on a repo pulled - # from an HTTP repository that used 'bzr checkout --lightweight'. You - # get a "ERROR: Cannot lock: transport is read only" when you try. - # - # So I won't bother using --lightweight for now. - - command = [bzr, 'checkout'] - if self.revision: - command.append('--revision') - command.append(str(self.revision)) - command.append(self.repourl) - command.append(self.srcdir) - - c = runprocess.RunProcess(self.builder, command, d, - sendRC=False, timeout=self.timeout, - maxTime=self.maxTime, logEnviron=self.logEnviron, - usePTY=False) - self.command = c - d = c.start() - return d - - def doVCExport(self): - bzr = self.getCommand('bzr') - tmpdir = os.path.join(self.builder.basedir, "export-temp") - srcdir = os.path.join(self.builder.basedir, self.srcdir) - command = [bzr, 'checkout', '--lightweight'] - if self.revision: - command.append('--revision') - command.append(str(self.revision)) - command.append(self.repourl) - command.append(tmpdir) - c = runprocess.RunProcess(self.builder, command, self.builder.basedir, - sendRC=False, timeout=self.timeout, - maxTime=self.maxTime, logEnviron=self.logEnviron, - usePTY=False) - self.command = c - d = c.start() - def _export(res): - command = [bzr, 'export', srcdir] - c = runprocess.RunProcess(self.builder, command, tmpdir, - sendRC=False, timeout=self.timeout, - maxTime=self.maxTime, logEnviron=self.logEnviron, - usePTY=False) - self.command = c - return c.start() - d.addCallback(_export) - return d - - def doForceSharedRepo(self): - bzr = self.getCommand('bzr') - - # Don't send stderr. When there is no shared repo, this might confuse - # users, as they will see a bzr error message. But having no shared - # repo is not an error, just an indication that we need to make one. - c = runprocess.RunProcess(self.builder, [bzr, 'info', '.'], - self.builder.basedir, - sendStderr=False, sendRC=False, - logEnviron=self.logEnviron,usePTY=False) - d = c.start() - def afterCheckSharedRepo(res): - if type(res) is int and res != 0: - log.msg("No shared repo found, creating it") - # bzr info fails, try to create shared repo. - c = runprocess.RunProcess(self.builder, [bzr, 'init-repo', '.'], - self.builder.basedir, - sendRC=False, logEnviron=self.logEnviron, - usePTY=False) - self.command = c - return c.start() - else: - return defer.succeed(res) - d.addCallback(afterCheckSharedRepo) - return d - - def get_revision_number(self, out): - # it feels like 'bzr revno' sometimes gives different results than - # the 'revno:' line from 'bzr version-info', and the one from - # version-info is more likely to be correct. - for line in out.split("\n"): - colon = line.find(":") - if colon != -1: - key, value = line[:colon], line[colon+2:] - if key == "revno": - return int(value) - raise ValueError("unable to find revno: in bzr output: '%s'" % out) - - def parseGotRevision(self): - bzr = self.getCommand('bzr') - command = [bzr, "version-info"] - c = runprocess.RunProcess(self.builder, command, - os.path.join(self.builder.basedir, self.srcdir), - environ=self.env, - sendStdout=False, sendStderr=False, sendRC=False, - keepStdout=True, logEnviron=self.logEnviron, - usePTY=False) - d = c.start() - def _parse(res): - try: - return self.get_revision_number(c.stdout) - except ValueError: - msg =("Bzr.parseGotRevision unable to parse output " - "of bzr version-info: '%s'" % c.stdout.strip()) - log.msg(msg) - self.sendStatus({'header': msg + "\n"}) - return None - d.addCallback(_parse) - return d - |