aboutsummaryrefslogtreecommitdiffstats
path: root/lib/python2.7/site-packages/buildbot_slave-0.8.8-py2.7.egg/buildslave/commands/fs.py
diff options
context:
space:
mode:
Diffstat (limited to 'lib/python2.7/site-packages/buildbot_slave-0.8.8-py2.7.egg/buildslave/commands/fs.py')
-rw-r--r--lib/python2.7/site-packages/buildbot_slave-0.8.8-py2.7.egg/buildslave/commands/fs.py244
1 files changed, 0 insertions, 244 deletions
diff --git a/lib/python2.7/site-packages/buildbot_slave-0.8.8-py2.7.egg/buildslave/commands/fs.py b/lib/python2.7/site-packages/buildbot_slave-0.8.8-py2.7.egg/buildslave/commands/fs.py
deleted file mode 100644
index ae720cdf..00000000
--- a/lib/python2.7/site-packages/buildbot_slave-0.8.8-py2.7.egg/buildslave/commands/fs.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
-import sys
-import shutil
-
-from twisted.internet import threads, defer
-from twisted.python import runtime, log
-
-from buildslave import runprocess
-from buildslave.commands import base, utils
-
-class MakeDirectory(base.Command):
-
- header = "mkdir"
-
- def start(self):
- args = self.args
- # args['dir'] is relative to Builder directory, and is required.
- assert args['dir'] is not None
- dirname = os.path.join(self.builder.basedir, args['dir'])
-
- try:
- if not os.path.isdir(dirname):
- os.makedirs(dirname)
- self.sendStatus({'rc': 0})
- except:
- self.sendStatus({'rc': 1})
-
-class RemoveDirectory(base.Command):
-
- header = "rmdir"
-
- def setup(self,args):
- self.logEnviron = args.get('logEnviron',True)
-
-
- @defer.deferredGenerator
- def start(self):
- args = self.args
- # args['dir'] is relative to Builder directory, and is required.
- assert args['dir'] is not None
- dirnames = args['dir']
-
- self.timeout = args.get('timeout', 120)
- self.maxTime = args.get('maxTime', None)
- self.rc = 0
- if type(dirnames) is list:
- assert len(dirnames) != 0
- for dirname in dirnames:
- wfd = defer.waitForDeferred(self.removeSingleDir(dirname))
- yield wfd
- res = wfd.getResult()
- # Even if single removal of single file/dir consider it as
- # failure of whole command, but continue removing other files
- # Send 'rc' to master to handle failure cases
- if res != 0:
- self.rc = res
- else:
- wfd = defer.waitForDeferred(self.removeSingleDir(dirnames))
- yield wfd
- self.rc = wfd.getResult()
-
- self.sendStatus({'rc': self.rc})
-
- def removeSingleDir(self, dirname):
- self.dir = os.path.join(self.builder.basedir, dirname)
- if runtime.platformType != "posix":
- d = threads.deferToThread(utils.rmdirRecursive, self.dir)
- def cb(_):
- return 0 # rc=0
- def eb(f):
- self.sendStatus({'header' : 'exception from rmdirRecursive\n' + f.getTraceback()})
- return -1 # rc=-1
- d.addCallbacks(cb, eb)
- else:
- d = self._clobber(None)
-
- return d
-
- def _clobber(self, dummy, chmodDone = False):
- command = ["rm", "-rf", self.dir]
- c = runprocess.RunProcess(self.builder, command, self.builder.basedir,
- sendRC=0, timeout=self.timeout, maxTime=self.maxTime,
- logEnviron=self.logEnviron, usePTY=False)
-
- self.command = c
- # sendRC=0 means the rm command will send stdout/stderr to the
- # master, but not the rc=0 when it finishes. That job is left to
- # _sendRC
- d = c.start()
- # The rm -rf may fail if there is a left-over subdir with chmod 000
- # permissions. So if we get a failure, we attempt to chmod suitable
- # permissions and re-try the rm -rf.
- if not chmodDone:
- d.addCallback(self._tryChmod)
- return d
-
- def _tryChmod(self, rc):
- assert isinstance(rc, int)
- if rc == 0:
- return defer.succeed(0)
- # Attempt a recursive chmod and re-try the rm -rf after.
-
- command = ["chmod", "-Rf", "u+rwx", os.path.join(self.builder.basedir, self.dir)]
- if sys.platform.startswith('freebsd'):
- # Work around a broken 'chmod -R' on FreeBSD (it tries to recurse into a
- # directory for which it doesn't have permission, before changing that
- # permission) by running 'find' instead
- command = ["find", os.path.join(self.builder.basedir, self.dir),
- '-exec', 'chmod', 'u+rwx', '{}', ';' ]
- c = runprocess.RunProcess(self.builder, command, self.builder.basedir,
- sendRC=0, timeout=self.timeout, maxTime=self.maxTime,
- logEnviron=self.logEnviron, usePTY=False)
-
- self.command = c
- d = c.start()
- d.addCallback(lambda dummy: self._clobber(dummy, True))
- return d
-
-class CopyDirectory(base.Command):
-
- header = "cpdir"
-
- def setup(self,args):
- self.logEnviron = args.get('logEnviron',True)
-
- def start(self):
- args = self.args
- # args['todir'] is relative to Builder directory, and is required.
- # args['fromdir'] is relative to Builder directory, and is required.
- assert args['todir'] is not None
- assert args['fromdir'] is not None
-
- fromdir = os.path.join(self.builder.basedir, args['fromdir'])
- todir = os.path.join(self.builder.basedir, args['todir'])
-
- self.timeout = args.get('timeout', 1200)
- self.maxTime = args.get('maxTime', None)
-
- if runtime.platformType != "posix":
- d = threads.deferToThread(shutil.copytree, fromdir, todir)
- def cb(_):
- return 0 # rc=0
- def eb(f):
- self.sendStatus({'header' : 'exception from copytree\n' + f.getTraceback()})
- return -1 # rc=-1
- d.addCallbacks(cb, eb)
- @d.addCallback
- def send_rc(rc):
- self.sendStatus({'rc' : rc})
- else:
- if not os.path.exists(os.path.dirname(todir)):
- os.makedirs(os.path.dirname(todir))
- if os.path.exists(todir):
- # I don't think this happens, but just in case..
- log.msg("cp target '%s' already exists -- cp will not do what you think!" % todir)
-
- command = ['cp', '-R', '-P', '-p', fromdir, todir]
- 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()
- d.addCallback(self._abandonOnFailure)
-
- d.addCallbacks(self._sendRC, self._checkAbandoned)
- return d
-
-class Move(base.Command):
-
- header = "mv"
-
- def setup(self,args):
- self.logEnviron = args.get('logEnviron',True)
-
- def start(self):
- args = self.args
- # args['todir'] is relative to Builder directory, and is required.
- # args['fromdir'] is relative to Builder directory, and is required.
- assert args['todir'] is not None
- assert args['fromdir'] is not None
-
- fromdir = os.path.join(self.builder.basedir, args['fromdir'])
- todir = args['todir']
-
- self.timeout = args.get('timeout', 1200)
- self.maxTime = args.get('maxTime', None)
-
- if runtime.platformType != "posix":
- d = threads.deferToThread(shutil.move, fromdir, todir)
- def cb(_):
- return 0 # rc=0
- def eb(f):
- self.sendStatus({'header' : 'exception from move\n' + f.getTraceback()})
- return -1 # rc=-1
- d.addCallbacks(cb, eb)
- @d.addCallback
- def send_rc(rc):
- self.sendStatus({'rc' : rc})
- else:
- if not os.path.exists(os.path.dirname(todir)):
- os.makedirs(os.path.dirname(todir))
-
- command = ['mv', fromdir, todir]
- 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()
- d.addCallback(self._abandonOnFailure)
-
- d.addCallbacks(self._sendRC, self._checkAbandoned)
- return d
-
-class StatFile(base.Command):
-
- header = "stat"
-
- def start(self):
- args = self.args
- # args['dir'] is relative to Builder directory, and is required.
- assert args['file'] is not None
- filename = os.path.join(self.builder.basedir, args['file'])
-
- try:
- stat = os.stat(filename)
- self.sendStatus({'stat': tuple(stat)})
- self.sendStatus({'rc': 0})
- except:
- self.sendStatus({'rc': 1})