[Bf-blender-cvs] [cf9d034] master: Update buildbot config to latest actual version

Sergey Sharybin noreply at git.blender.org
Sun Jul 20 14:00:55 CEST 2014


Commit: cf9d03494bb0d79a9801a307380a717ac825fedb
Author: Sergey Sharybin
Date:   Sun Jul 20 18:00:39 2014 +0600
Branches: master
https://developer.blender.org/rBcf9d03494bb0d79a9801a307380a717ac825fedb

Update buildbot config to latest actual version

===================================================================

M	build_files/buildbot/master.cfg

===================================================================

diff --git a/build_files/buildbot/master.cfg b/build_files/buildbot/master.cfg
index 6b3efb4..4480b7e 100644
--- a/build_files/buildbot/master.cfg
+++ b/build_files/buildbot/master.cfg
@@ -3,6 +3,52 @@
 
 # <pep8 compliant>
 
+"""
+Stock Twisted directory lister doesn't provide any information about last file
+modification time, we hack the class a bit in order to have such functionaliity
+:)
+"""
+
+from buildbot.status.web.base import DirectoryLister
+
+
+def get_files_and_directories(self, directory):
+    from twisted.web.static import (getTypeAndEncoding,
+                                    formatFileSize)
+    import urllib
+    import cgi
+    import time
+    import os
+    files = []
+    dirs = []
+    for path in directory:
+        url = urllib.quote(path, "/")
+        escapedPath = cgi.escape(path)
+        lastmodified = time.ctime(os.path.getmtime(
+            os.path.join(self.path, path)))
+        if os.path.isdir(os.path.join(self.path, path)):
+            url = url + '/'
+            dirs.append({'text': escapedPath + "/", 'href': url,
+                         'size': '', 'type': '[Directory]',
+                         'encoding': '',
+                         'lastmodified': lastmodified})
+        else:
+            mimetype, encoding = getTypeAndEncoding(path, self.contentTypes,
+                                                    self.contentEncodings,
+                                                    self.defaultType)
+            try:
+                size = os.stat(os.path.join(self.path, path)).st_size
+            except OSError:
+                continue
+            files.append({
+                'text': escapedPath, "href": url,
+                'type': '[%s]' % mimetype,
+                'encoding': (encoding and '[%s]' % encoding or ''),
+                'size': formatFileSize(size),
+                'lastmodified': lastmodified})
+    return dirs, files
+DirectoryLister._getFilesAndDirectories = get_files_and_directories
+
 # Dictionary that the buildmaster pays attention to.
 c = BuildmasterConfig = {}
 
@@ -37,37 +83,34 @@ c['change_source'] = GitPoller(
 # Decide how to react to incoming changes.
 
 # from buildbot.scheduler import Scheduler
-from buildbot.schedulers import timed
+from buildbot.schedulers import timed, forcesched
 
 c['schedulers'] = []
 
+
+def schedule_force_build(name):
+    c['schedulers'].append(forcesched.ForceScheduler(name='force ' + name,
+        builderNames=[name],
+        branch=forcesched.FixedParameter(name="branch", default=""),
+        revision=forcesched.FixedParameter(name="revision", default=""),
+        repository=forcesched.FixedParameter(name="repository", default=""),
+        project=forcesched.FixedParameter(name="project", default=""),
+            properties=[]))
+
+
 def schedule_build(name, hour, minute=0):
     c['schedulers'].append(timed.Nightly(name='nightly ' + name,
+        branch=None,  # default branch
         builderNames=[name],
         hour=hour,
         minute=minute))
 
-"""
-schedule_cycle = 4
-
-for i in range(0, schedule_cycle):
-    names = []
-    for j in range(0, len(buildernames)):
-        if j % schedule_cycle == i:
-            names += [buildernames[j]]
-
-    print(names)
-    c['schedulers'].append(timed.Nightly(name='nightly' + str(i),
-        builderNames=names,
-        hour=3+i,
-        minute=0))
-"""
 
 # BUILDERS
 #
-# The 'builders' list defines the Builders, which tell Buildbot how to perform a build:
-# what steps, and which slaves can execute them.  Note that any particular build will
-# only take place on one slave.
+# The 'builders' list defines the Builders, which tell Buildbot how to
+# perform a build: what steps, and which slaves can execute them.
+# Note that any particular build will only take place on one slave.
 
 from buildbot.process.factory import BuildFactory
 from buildbot.steps.source import SVN
@@ -76,7 +119,6 @@ from buildbot.steps.shell import ShellCommand
 from buildbot.steps.shell import Compile
 from buildbot.steps.shell import Test
 from buildbot.steps.transfer import FileUpload
-# from buildbot.steps.transfer import FileDownload
 from buildbot.steps.master import MasterShellCommand
 from buildbot.config import BuilderConfig
 
@@ -86,7 +128,8 @@ c['builders'] = []
 buildernames = []
 
 
-def add_builder(c, name, libdir, factory, branch='', rsync=False, hour=3, minute=0):
+def add_builder(c, name, libdir, factory, branch='',
+                rsync=False, hour=3, minute=0):
     slavenames = []
 
     for slave in master_private.slaves:
@@ -95,31 +138,65 @@ def add_builder(c, name, libdir, factory, branch='', rsync=False, hour=3, minute
 
     if len(slavenames) > 0:
         f = factory(name, libdir, branch, rsync)
-        c['builders'].append(BuilderConfig(name=name, slavenames=slavenames, factory=f, category='blender'))
+        c['builders'].append(BuilderConfig(name=name,
+                                           slavenames=slavenames,
+                                           factory=f,
+                                           category='blender'))
         buildernames.append(name)
 
         schedule_build(name, hour, minute)
+        schedule_force_build(name)
 
 # common steps
 
+
 def git_submodule_step(submodule):
-    return Git(name=submodule+'.git', repourl='git://git.blender.org/' + submodule + '.git', mode='update', workdir=submodule + '.git')
+    return Git(name=submodule + '.git',
+               repourl='git://git.blender.org/' + submodule + '.git',
+               mode='update',
+               workdir=submodule + '.git')
+
 
 def git_step(branch=''):
     if branch:
-        return Git(name='blender.git', repourl='git://git.blender.org/blender.git', mode='update', branch=branch, workdir='blender.git', submodules=True)
+        return Git(name='blender.git',
+                   repourl='git://git.blender.org/blender.git',
+                   mode='update',
+                   branch=branch,
+                   workdir='blender.git',
+                   submodules=True)
     else:
-        return Git(name='blender.git', repourl='git://git.blender.org/blender.git', mode='update', workdir='blender.git', submodules=True)
+        return Git(name='blender.git',
+                   repourl='git://git.blender.org/blender.git',
+                   mode='update',
+                   workdir='blender.git',
+                   submodules=True)
+
 
 def git_submodules_update():
-    command = ['git', 'submodule', 'foreach', '--recursive', 'git', 'pull', 'origin', 'master']
-    return ShellCommand(name='Submodules Update', command=command, description='updating', descriptionDone='up to date', workdir='blender.git')
+    command = ['git', 'submodule', 'foreach', '--recursive',
+               'git', 'pull', 'origin', 'master']
+    return ShellCommand(name='Submodules Update',
+                        command=command,
+                        description='updating',
+                        descriptionDone='up to date',
+                        workdir='blender.git')
+
 
 def lib_svn_step(dir):
-    return SVN(name='lib svn', baseURL='https://svn.blender.org/svnroot/bf-blender/%%BRANCH%%/lib/' + dir, mode='update', defaultBranch='trunk', workdir='lib/' + dir)
+    return SVN(name='lib svn',
+               baseURL='https://svn.blender.org/svnroot/bf-blender/%%BRANCH%%/lib/' + dir,
+               mode='update',
+               defaultBranch='trunk',
+               workdir='lib/' + dir)
+
 
 def rsync_step(id, branch, rsync_script):
-    return ShellCommand(name='rsync', command=['python', rsync_script, id, branch], description='uploading', descriptionDone='uploaded', workdir='install')
+    return ShellCommand(name='rsync',
+                        command=['python', rsync_script, id, branch],
+                        description='uploading',
+                        descriptionDone='uploaded',
+                        workdir='install')
 
 # generic builder
 
@@ -136,21 +213,38 @@ def generic_builder(id, libdir='', branch='', rsync=False):
     if libdir != '':
         f.addStep(lib_svn_step(libdir))
 
-    for submodule in ('blender-translations', 'blender-addons', 'blender-addons-contrib', 'scons'):
+    for submodule in ('blender-translations',
+                      'blender-addons',
+                      'blender-addons-contrib',
+                      'scons'):
         f.addStep(git_submodule_step(submodule))
+
     f.addStep(git_step(branch))
     f.addStep(git_submodules_update())
 
     f.addStep(Compile(command=['python', compile_script, id], timeout=3600))
     f.addStep(Test(command=['python', test_script, id]))
-    f.addStep(ShellCommand(name='package', command=['python', pack_script, id, branch], description='packaging', descriptionDone='packaged'))
+    f.addStep(ShellCommand(name='package',
+                           command=['python', pack_script, id, branch],
+                           description='packaging',
+                           descriptionDone='packaged'))
     if rsync:
         f.addStep(rsync_step(id, branch, rsync_script))
     elif id.find('cmake') != -1:
-        f.addStep(FileUpload(name='upload', slavesrc='buildbot_upload.zip', masterdest=filename, maxsize=150 * 1024 * 1024))
+        f.addStep(FileUpload(name='upload',
+                             slavesrc='buildbot_upload.zip',
+                             masterdest=filename,
+                             maxsize=150 * 1024 * 1024))
     else:
-        f.addStep(FileUpload(name='upload', slavesrc='buildbot_upload.zip', masterdest=filename, maxsize=150 * 1024 * 1024, workdir='install'))
-    f.addStep(MasterShellCommand(name='unpack', command=['python', unpack_script, filename], description='unpacking', descriptionDone='unpacked'))
+        f.addStep(FileUpload(name='upload',
+                             slavesrc='buildbot_upload.zip',
+                             masterdest=filename,
+                             maxsize=150 * 1024 * 1024,
+                             workdir='install'))
+    f.addStep(MasterShellCommand(name='unpack',
+                                 command=['python', unpack_script, filename],
+                                 description='unpackin

@@ Diff output truncated at 10240 characters. @@




More information about the Bf-blender-cvs mailing list