aboutsummaryrefslogtreecommitdiffstats
path: root/lib/python2.7/site-packages/buildbot_slave-0.8.8-py2.7.egg/buildslave/commands/mtn.py
diff options
context:
space:
mode:
Diffstat (limited to 'lib/python2.7/site-packages/buildbot_slave-0.8.8-py2.7.egg/buildslave/commands/mtn.py')
-rw-r--r--lib/python2.7/site-packages/buildbot_slave-0.8.8-py2.7.egg/buildslave/commands/mtn.py202
1 files changed, 0 insertions, 202 deletions
diff --git a/lib/python2.7/site-packages/buildbot_slave-0.8.8-py2.7.egg/buildslave/commands/mtn.py b/lib/python2.7/site-packages/buildbot_slave-0.8.8-py2.7.egg/buildslave/commands/mtn.py
deleted file mode 100644
index 99cae5d4..00000000
--- a/lib/python2.7/site-packages/buildbot_slave-0.8.8-py2.7.egg/buildslave/commands/mtn.py
+++ /dev/null
@@ -1,202 +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
-#from buildslave.util import remove_userpassword
-
-class MonotoneError(Exception):
- """Error class for this module."""
-
-
-class Monotone(SourceBaseCommand):
- """Monotone specific VC operation. In addition to the arguments
- handled by SourceBaseCommand, this command reads the following keys:
-
- ['repourl'] (required): the Monotone repository string
- ['branch'] (required): which branch to retrieve.
-
- ['revision'] (optional): which revision (revision selector)
- to retrieve.
- ['progress'] (optional): have mtn output progress markers,
- avoiding timeouts for long fetches;
- """
-
- header = "monotone operation"
-
- def setup(self, args):
- SourceBaseCommand.setup(self, args)
-
- self.repourl = args['repourl']
- self.branch = args['branch']
-
- self.revision = args.get('revision', None)
- self.progress = args.get('progress', False)
-
- self._pull_timeout = args.get("timeout")
-
- self.sourcedata = "%s?%s" % (self.repourl, self.branch)
- self.stdout = ""
- self.stderr = ""
- self.database = os.path.join(self.builder.basedir, 'db.mtn')
- self.mtn = self.getCommand("mtn")
-
- def start(self):
- def cont(res):
- # Continue with start() method in superclass.
- return SourceBaseCommand.start(self)
-
- d = self._checkDb();
- d.addCallback(cont)
- return d
-
- def doVCUpdate(self):
- return self._dovccmd(self._update, True)
-
- def doVCFull(self):
- return self._dovccmd(self._checkout, True)
-
- def _fullSrcdir(self):
- return os.path.join(self.builder.basedir, self.srcdir)
-
- def sourcedirIsUpdateable(self):
- return os.path.isdir(os.path.join(self._fullSrcdir(), "_MTN"))
-
- def _dovccmd(self, fn, dopull, cb=None, **kwargs):
- if dopull:
- command = [self.mtn, 'pull', self.sourcedata,
- '--db', self.database]
- if self.progress:
- command.extend(['--ticker=dot'])
- else:
- command.extend(['--ticker=none'])
- c = runprocess.RunProcess(self.builder, command,
- self.builder.basedir,
- environ=self.env, sendRC=False,
- timeout=self.timeout,
- maxTime=self.maxTime,
- keepStdout=True, usePTY=False,
- logEnviron=self.logEnviron)
- self.sendStatus({"header": "pulling %s from %s\n"
- % (self.branch, self.sourcedata)})
- self.command = c
- d = c.start()
- d.addCallback(self._abandonOnFailure)
- d.addCallback(fn)
- else:
- d = fn(None)
- if cb:
- d.addCallback(cb)
- return d
-
- def _update(self, res):
- command = [self.mtn, 'update',
- '--db', self.database]
- if self.revision:
- command.extend(['--revision', self.revision])
- else:
- command.extend(["-r", "h:" + self.branch])
- command.extend(["-b", self.branch])
- c = runprocess.RunProcess(self.builder, command, self._fullSrcdir(),
- environ=self.env, sendRC=False,
- timeout=self.timeout, maxTime=self.maxTime,
- keepStdout=True, usePTY=False,
- logEnviron=self.logEnviron)
- d = c.start()
- return d
-
- def _checkout(self, res):
- command = [self.mtn, 'checkout', self._fullSrcdir(),
- '--db', self.database]
- if self.revision:
- command.extend(['--revision', self.revision])
- command.extend(['--branch', self.branch])
- c = runprocess.RunProcess(self.builder, command, self.builder.basedir,
- environ=self.env, sendRC=False,
- timeout=self.timeout, maxTime=self.maxTime,
- keepStdout=True, usePTY=False,
- logEnviron=self.logEnviron)
- d = c.start()
- return d
-
- def _checkDb(self):
- # Don't send stderr. When there is no database, this might confuse
- # users, as they will see a mtn error message. But having no database
- # repo is not an error, just an indication that we need to pull one.
- c = runprocess.RunProcess(self.builder, [self.mtn, 'db', 'info',
- '--db', self.database],
- self.builder.basedir,
- environ=self.env, sendRC=False,
- keepStdout=True, sendStderr=False,
- usePTY=False, logEnviron=self.logEnviron)
- d = c.start()
- def afterCheckRepo(res, cdi):
- if type(res) is int and res != 0:
- log.msg("No database found, creating it")
- # mtn info fails, try to create shared repo.
- # We'll be doing an initial pull, so up the timeout to
- # 3 hours to make sure it will have time to complete.
- self._pull_timeout = max(self._pull_timeout, 3 * 60 * 60)
- c = runprocess.RunProcess(self.builder, [self.mtn, 'db', 'init',
- '--db', self.database],
- self.builder.basedir,
- environ=self.env,
- sendRC=False, usePTY=False,
- logEnviron=self.logEnviron)
- self.command = c
- return c.start()
- elif cdi.stdout.find("(migration needed)") > 0:
- log.msg("Older format database found, migrating it")
- # mtn info fails, try to create shared repo.
- c = runprocess.RunProcess(self.builder, [self.mtn,
- 'db', 'migrate',
- '--db', self.database],
- self.builder.basedir,
- environ=self.env,
- sendRC=False, usePTY=False,
- logEnviron=self.logEnviron)
- self.command = c
- return c.start()
- elif cdi.stdout.find("(too new, cannot use)") > 0:
- raise MonotoneError, "The database is of a newer format than mtn can handle... Abort!"
- else:
- return defer.succeed(res)
- d.addCallback(afterCheckRepo, c)
- return d
-
- def parseGotRevision(self):
- def _parse(res):
- hash = self.command.stdout.strip()
- if len(hash) != 40:
- return None
- return hash
- return self._dovccmd(self._get_base_revision, False, _parse)
-
- def _get_base_revision(self, res):
- c = runprocess.RunProcess(self.builder,
- [self.mtn, 'automate', 'select', 'w:'],
- self._fullSrcdir(),
- sendRC=False,
- timeout=self.timeout, maxTime=self.maxTime,
- keepStdout=True, usePTY=False,
- logEnviron=self.logEnviron)
- d = c.start()
- d.addCallback(self._abandonOnFailure)
- return d