aboutsummaryrefslogtreecommitdiffstats
path: root/lib/python2.7/site-packages/buildbot-0.8.8-py2.7.egg/buildbot/steps/source/base.py
diff options
context:
space:
mode:
Diffstat (limited to 'lib/python2.7/site-packages/buildbot-0.8.8-py2.7.egg/buildbot/steps/source/base.py')
-rw-r--r--lib/python2.7/site-packages/buildbot-0.8.8-py2.7.egg/buildbot/steps/source/base.py230
1 files changed, 0 insertions, 230 deletions
diff --git a/lib/python2.7/site-packages/buildbot-0.8.8-py2.7.egg/buildbot/steps/source/base.py b/lib/python2.7/site-packages/buildbot-0.8.8-py2.7.egg/buildbot/steps/source/base.py
deleted file mode 100644
index 13da81c3..00000000
--- a/lib/python2.7/site-packages/buildbot-0.8.8-py2.7.egg/buildbot/steps/source/base.py
+++ /dev/null
@@ -1,230 +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
-
-
-from twisted.python import log
-from buildbot.process.buildstep import LoggingBuildStep
-from buildbot.status.builder import SKIPPED, FAILURE
-from buildbot.steps.slave import CompositeStepMixin
-
-class Source(LoggingBuildStep, CompositeStepMixin):
- """This is a base class to generate a source tree in the buildslave.
- Each version control system has a specialized subclass, and is expected
- to override __init__ and implement computeSourceRevision() and
- startVC(). The class as a whole builds up the self.args dictionary, then
- starts a RemoteCommand with those arguments.
- """
-
- renderables = LoggingBuildStep.renderables + [
- 'description', 'descriptionDone', 'descriptionSuffix',
- 'workdir' ]
-
- description = None # set this to a list of short strings to override
- descriptionDone = None # alternate description when the step is complete
- descriptionSuffix = None # extra information to append to suffix
-
- # if the checkout fails, there's no point in doing anything else
- haltOnFailure = True
- flunkOnFailure = True
- notReally = False
-
- branch = None # the default branch, should be set in __init__
-
- def __init__(self, workdir=None, mode='update', alwaysUseLatest=False,
- timeout=20*60, retry=None, env=None, logEnviron=True,
- description=None, descriptionDone=None, descriptionSuffix=None,
- codebase='', **kwargs):
- """
- @type workdir: string
- @param workdir: local directory (relative to the Builder's root)
- where the tree should be placed
-
- @type alwaysUseLatest: boolean
- @param alwaysUseLatest: whether to always update to the most
- recent available sources for this build.
-
- Normally the Source step asks its Build for a list of all
- Changes that are supposed to go into the build, then computes a
- 'source stamp' (revision number or timestamp) that will cause
- exactly that set of changes to be present in the checked out
- tree. This is turned into, e.g., 'cvs update -D timestamp', or
- 'svn update -r revnum'. If alwaysUseLatest=True, bypass this
- computation and always update to the latest available sources
- for each build.
-
- The source stamp helps avoid a race condition in which someone
- commits a change after the master has decided to start a build
- but before the slave finishes checking out the sources. At best
- this results in a build which contains more changes than the
- buildmaster thinks it has (possibly resulting in the wrong
- person taking the blame for any problems that result), at worst
- is can result in an incoherent set of sources (splitting a
- non-atomic commit) which may not build at all.
-
- @type logEnviron: boolean
- @param logEnviron: If this option is true (the default), then the
- step's logfile will describe the environment
- variables on the slave. In situations where the
- environment is not relevant and is long, it may
- be easier to set logEnviron=False.
-
- @type codebase: string
- @param codebase: Specifies which changes in a build are processed by
- the step. The default codebase value is ''. The codebase must correspond
- to a codebase assigned by the codebaseGenerator. If no codebaseGenerator
- is defined in the master then codebase doesn't need to be set, the
- default value will then match all changes.
- """
-
- LoggingBuildStep.__init__(self, **kwargs)
-
- # This will get added to args later, after properties are rendered
- self.workdir = workdir
-
- self.sourcestamp = None
-
- self.codebase = codebase
- if self.codebase:
- self.name = ' '.join((self.name, self.codebase))
-
- self.alwaysUseLatest = alwaysUseLatest
-
- self.logEnviron = logEnviron
- self.env = env
- self.timeout = timeout
-
- descriptions_for_mode = {
- "clobber": "checkout",
- "export": "exporting"}
- descriptionDones_for_mode = {
- "clobber": "checkout",
- "export": "export"}
- if description:
- self.description = description
- else:
- self.description = [
- descriptions_for_mode.get(mode, "updating")]
- if isinstance(self.description, str):
- self.description = [self.description]
-
- if descriptionDone:
- self.descriptionDone = descriptionDone
- else:
- self.descriptionDone = [
- descriptionDones_for_mode.get(mode, "update")]
- if isinstance(self.descriptionDone, str):
- self.descriptionDone = [self.descriptionDone]
-
- if descriptionSuffix:
- self.descriptionSuffix = descriptionSuffix
- else:
- self.descriptionSuffix = self.codebase or None # want None in lieu of ''
- if isinstance(self.descriptionSuffix, str):
- self.descriptionSuffix = [self.descriptionSuffix]
-
- def updateSourceProperty(self, name, value, source=''):
- """
- Update a property, indexing the property by codebase if codebase is not
- ''. Source steps should generally use this instead of setProperty.
- """
- # pick a decent source name
- if source == '':
- source = self.__class__.__name__
-
- if self.codebase != '':
- assert not isinstance(self.getProperty(name, None), str), \
- "Sourcestep %s has a codebase, other sourcesteps don't" \
- % self.name
- property_dict = self.getProperty(name, {})
- property_dict[self.codebase] = value
- LoggingBuildStep.setProperty(self, name, property_dict, source)
- else:
- assert not isinstance(self.getProperty(name, None), dict), \
- "Sourcestep %s does not have a codebase, other sourcesteps do" \
- % self.name
- LoggingBuildStep.setProperty(self, name, value, source)
-
- def setStepStatus(self, step_status):
- LoggingBuildStep.setStepStatus(self, step_status)
-
- def setDefaultWorkdir(self, workdir):
- self.workdir = self.workdir or workdir
-
- def describe(self, done=False):
- desc = self.descriptionDone if done else self.description
- if self.descriptionSuffix:
- desc = desc[:]
- desc.extend(self.descriptionSuffix)
- return desc
-
- def computeSourceRevision(self, changes):
- """Each subclass must implement this method to do something more
- precise than -rHEAD every time. For version control systems that use
- repository-wide change numbers (SVN, P4), this can simply take the
- maximum such number from all the changes involved in this build. For
- systems that do not (CVS), it needs to create a timestamp based upon
- the latest Change, the Build's treeStableTimer, and an optional
- self.checkoutDelay value."""
- return None
-
- def start(self):
- if self.notReally:
- log.msg("faking %s checkout/update" % self.name)
- self.step_status.setText(["fake", self.name, "successful"])
- self.addCompleteLog("log",
- "Faked %s checkout/update 'successful'\n" \
- % self.name)
- return SKIPPED
-
- if not self.alwaysUseLatest:
- # what source stamp would this step like to use?
- s = self.build.getSourceStamp(self.codebase)
- self.sourcestamp = s
-
- if self.sourcestamp:
- # if branch is None, then use the Step's "default" branch
- branch = s.branch or self.branch
- # if revision is None, use the latest sources (-rHEAD)
- revision = s.revision
- if not revision:
- revision = self.computeSourceRevision(s.changes)
- # the revision property is currently None, so set it to something
- # more interesting
- if revision is not None:
- self.updateSourceProperty('revision', str(revision))
-
- # if patch is None, then do not patch the tree after checkout
-
- # 'patch' is None or a tuple of (patchlevel, diff, root)
- # root is optional.
- patch = s.patch
- if patch:
- self.addCompleteLog("patch", patch[1])
- else:
- log.msg("No sourcestamp found in build for codebase '%s'" % self.codebase)
- self.step_status.setText(["Codebase", '%s' % self.codebase ,"not", "in", "build" ])
- self.addCompleteLog("log",
- "No sourcestamp found in build for codebase '%s'" \
- % self.codebase)
- self.finished(FAILURE)
- return FAILURE
-
- else:
- revision = None
- branch = self.branch
- patch = None
-
- self.startVC(branch, revision, patch)
-