use spaces rather then tabs + minor pep8 edits.

This commit is contained in:
Campbell Barton
2011-03-21 22:37:08 +00:00
parent 379f55f54c
commit 4bca2e455d
3 changed files with 122 additions and 110 deletions

View File

@@ -15,7 +15,7 @@ import master_private
c['slaves'] = [] c['slaves'] = []
for slave in master_private.slaves: for slave in master_private.slaves:
c['slaves'].append(BuildSlave(slave['name'], slave['password'])) c['slaves'].append(BuildSlave(slave['name'], slave['password']))
# TCP port through which slaves connect # TCP port through which slaves connect
@@ -36,7 +36,7 @@ c['change_source'] = SVNPoller(
# only take place on one slave. # only take place on one slave.
from buildbot.process.factory import BuildFactory from buildbot.process.factory import BuildFactory
from buildbot.steps.source import SVN from buildbot.steps.source import SVN
from buildbot.steps.shell import ShellCommand from buildbot.steps.shell import ShellCommand
from buildbot.steps.shell import Compile from buildbot.steps.shell import Compile
from buildbot.steps.shell import Test from buildbot.steps.shell import Test
@@ -50,88 +50,100 @@ from buildbot.config import BuilderConfig
c['builders'] = [] c['builders'] = []
buildernames = [] buildernames = []
def add_builder(c, name, factory):
slavenames = []
for slave in master_private.slaves: def add_builder(c, name, factory):
if name in slave['builders']: slavenames = []
slavenames.append(slave['name'])
for slave in master_private.slaves:
f = factory(name) if name in slave['builders']:
c['builders'].append(BuilderConfig(name=name, slavenames=slavenames, factory=f, category='blender')) slavenames.append(slave['name'])
buildernames.append(name)
f = factory(name)
c['builders'].append(BuilderConfig(name=name, slavenames=slavenames, factory=f, category='blender'))
buildernames.append(name)
# common steps # common steps
def svn_step(): def svn_step():
return SVN(baseURL='https://svn.blender.org/svnroot/bf-blender/%%BRANCH%%/blender', mode='update', defaultBranch='trunk', workdir='blender') return SVN(baseURL='https://svn.blender.org/svnroot/bf-blender/%%BRANCH%%/blender', mode='update', defaultBranch='trunk', workdir='blender')
def lib_svn_step(dir): 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 cmake_compile_step(): def cmake_compile_step():
return Compile(command=['make'], workdir='blender') return Compile(command=['make'], workdir='blender')
def cmake_test_step(): def cmake_test_step():
return Test(workdir='blender') # make test return Test(workdir='blender') # make test
def scons_compile_step(): def scons_compile_step():
return Compile(command=['python', 'scons/scons.py'], workdir='blender') return Compile(command=['python', 'scons/scons.py'], workdir='blender')
class SlavePack(ShellCommand): class SlavePack(ShellCommand):
pack_script = 'slave_pack.py' pack_script = 'slave_pack.py'
def start(self):
if self.getProperty('buildername').find('scons')>=0: def start(self):
self.setCommand(['python', pack_script, 'scons']) if self.getProperty('buildername').find('scons') >= 0:
else: self.setCommand(['python', pack_script, 'scons'])
self.setCommand(['python', pack_script, 'cmake']) else:
ShellCommand.start(self) self.setCommand(['python', pack_script, 'cmake'])
ShellCommand.start(self)
def file_upload(f, id): def file_upload(f, id):
filename = 'buildbot_upload_' + id + '.zip' filename = 'buildbot_upload_' + id + '.zip'
pack_script = 'slave_pack.py' pack_script = 'slave_pack.py'
unpack_script = 'master_unpack.py' unpack_script = 'master_unpack.py'
f.addStep(FileDownload(name='download', mastersrc=pack_script, slavedest=pack_script)) f.addStep(FileDownload(name='download', mastersrc=pack_script, slavedest=pack_script))
f.addStep(ShellCommand(name='package', command=['python', pack_script], description='packaging', descriptionDone='packaged')) f.addStep(ShellCommand(name='package', command=['python', pack_script], description='packaging', descriptionDone='packaged'))
f.addStep(FileUpload(name='upload', slavesrc='buildbot_upload.zip', masterdest=filename, maxsize=100*1024*1024)) f.addStep(FileUpload(name='upload', slavesrc='buildbot_upload.zip', masterdest=filename, maxsize=100 * 1024 * 1024))
f.addStep(MasterShellCommand(name='unpack', command=['python', unpack_script, filename], description='unpacking', descriptionDone='unpacked')) f.addStep(MasterShellCommand(name='unpack', command=['python', unpack_script, filename], description='unpacking', descriptionDone='unpacked'))
# linux cmake # linux cmake
def linux_cmake(id): def linux_cmake(id):
f = BuildFactory() f = BuildFactory()
f.addStep(svn_step()) f.addStep(svn_step())
f.addStep(cmake_compile_step()) f.addStep(cmake_compile_step())
f.addStep(cmake_test_step()) f.addStep(cmake_test_step())
file_upload(f, id) file_upload(f, id)
return f return f
add_builder(c, 'linux_x86_64_cmake', linux_cmake) add_builder(c, 'linux_x86_64_cmake', linux_cmake)
# mac cmake # mac cmake
def mac_cmake(id): def mac_cmake(id):
f = BuildFactory() f = BuildFactory()
f.addStep(svn_step()) f.addStep(svn_step())
f.addStep(lib_svn_step('darwin-9.x.universal')) f.addStep(lib_svn_step('darwin-9.x.universal'))
f.addStep(cmake_compile_step()) f.addStep(cmake_compile_step())
f.addStep(cmake_test_step()) f.addStep(cmake_test_step())
file_upload(f, id) file_upload(f, id)
return f return f
add_builder(c, 'mac_x86_64_cmake', mac_cmake) add_builder(c, 'mac_x86_64_cmake', mac_cmake)
# win32 scons # win32 scons
# TODO: add scons test target # TODO: add scons test target
def win32_scons(id): def win32_scons(id):
f = BuildFactory() f = BuildFactory()
f.addStep(svn_step()) f.addStep(svn_step())
f.addStep(lib_svn_step('windows')) f.addStep(lib_svn_step('windows'))
f.addStep(scons_compile_step()) f.addStep(scons_compile_step())
file_upload(f, id) file_upload(f, id)
return f return f
add_builder(c, 'win32_scons', win32_scons) add_builder(c, 'win32_scons', win32_scons)
@@ -147,8 +159,8 @@ c['schedulers'] = []
# treeStableTimer=None, # treeStableTimer=None,
# builderNames=[])) # builderNames=[]))
#c['schedulers'].append(timed.Periodic(name="nightly", #c['schedulers'].append(timed.Periodic(name="nightly",
# builderNames=buildernames, # builderNames=buildernames,
# periodicBuildTimer=24*60*60)) # periodicBuildTimer=24*60*60))
c['schedulers'].append(timed.Nightly(name='nightly', c['schedulers'].append(timed.Nightly(name='nightly',
builderNames=buildernames, builderNames=buildernames,
@@ -166,16 +178,16 @@ c['status'] = []
from buildbot.status import html from buildbot.status import html
from buildbot.status.web import auth, authz from buildbot.status.web import auth, authz
authz_cfg=authz.Authz( authz_cfg = authz.Authz(
# change any of these to True to enable; see the manual for more # change any of these to True to enable; see the manual for more
# options # options
gracefulShutdown = False, gracefulShutdown=False,
forceBuild = True, # use this to test your slave once it is set up forceBuild=True, # use this to test your slave once it is set up
forceAllBuilds = False, forceAllBuilds=False,
pingBuilder = False, pingBuilder=False,
stopBuild = False, stopBuild=False,
stopAllBuilds = False, stopAllBuilds=False,
cancelPendingBuild = False, cancelPendingBuild=False,
) )
c['status'].append(html.WebStatus(http_port=8010, authz=authz_cfg)) c['status'].append(html.WebStatus(http_port=8010, authz=authz_cfg))
@@ -200,4 +212,3 @@ c['buildbotURL'] = "http://builder.blender.org/"
# installations. # installations.
c['db_url'] = "sqlite:///state.sqlite" c['db_url'] = "sqlite:///state.sqlite"

View File

@@ -18,67 +18,69 @@
# Runs on Buildbot master, to unpack incoming unload.zip into latest # Runs on Buildbot master, to unpack incoming unload.zip into latest
# builds directory and remove older builds. # builds directory and remove older builds.
import os import os
import shutil import shutil
import sys import sys
import zipfile import zipfile
# extension stripping # extension stripping
def strip_extension(filename): def strip_extension(filename):
extensions = ['.zip', '.tar', '.bz2', '.gz', '.tgz', '.tbz', '.exe'] extensions = ['.zip', '.tar', '.bz2', '.gz', '.tgz', '.tbz', '.exe']
for ext in extensions: for ext in extensions:
if filename.endswith(ext): if filename.endswith(ext):
filename = filename[:-len(ext)] filename = filename[:-len(ext)]
return filename
return filename
# extract platform from package name # extract platform from package name
def get_platform(filename): def get_platform(filename):
# name is blender-version-platform.extension. we want to get the # name is blender-version-platform.extension. we want to get the
# platform out, but there may be some variations, so we fiddle a # platform out, but there may be some variations, so we fiddle a
# bit to handle current and hopefully future names # bit to handle current and hopefully future names
filename = strip_extension(filename) filename = strip_extension(filename)
filename = strip_extension(filename) filename = strip_extension(filename)
tokens = filename.split("-") tokens = filename.split("-")
platforms = ['osx', 'mac', 'bsd', 'windows', 'linux', 'source', 'irix', 'solaris'] platforms = ['osx', 'mac', 'bsd', 'windows', 'linux', 'source', 'irix', 'solaris']
platform_tokens = [] platform_tokens = []
found = False found = False
for i, token in enumerate(tokens): for i, token in enumerate(tokens):
if not found: if not found:
for platform in platforms: for platform in platforms:
if token.lower().find(platform) != -1: if token.lower().find(platform) != -1:
found = True found = True
if found: if found:
platform_tokens += [token] platform_tokens += [token]
return '-'.join(platform_tokens) return '-'.join(platform_tokens)
# get filename # get filename
if len(sys.argv) < 2: if len(sys.argv) < 2:
sys.stderr.write("Not enough arguments, expecting file to unpack\n") sys.stderr.write("Not enough arguments, expecting file to unpack\n")
sys.exit(1) sys.exit(1)
filename = sys.argv[1] filename = sys.argv[1]
# open zip file # open zip file
if not os.path.exists(filename): if not os.path.exists(filename):
sys.stderr.write("File " + filename + " not found.\n") sys.stderr.write("File " + filename + " not found.\n")
sys.exit(1) sys.exit(1)
try: try:
z = zipfile.ZipFile(filename, "r") z = zipfile.ZipFile(filename, "r")
except Exception, ex: except Exception, ex:
sys.stderr.write('Failed to open zip file: ' + str(ex) + '\n') sys.stderr.write('Failed to open zip file: ' + str(ex) + '\n')
sys.exit(1) sys.exit(1)
if len(z.namelist()) != 1: if len(z.namelist()) != 1:
sys.stderr.write("Expected on file in " + filename + ".") sys.stderr.write("Expected on file in " + filename + ".")
sys.exit(1) sys.exit(1)
package = z.namelist()[0] package = z.namelist()[0]
packagename = os.path.basename(package) packagename = os.path.basename(package)
@@ -87,31 +89,30 @@ packagename = os.path.basename(package)
platform = get_platform(packagename) platform = get_platform(packagename)
if platform == '': if platform == '':
sys.stderr.write('Failed to detect platform from package: ' + packagename + '\n') sys.stderr.write('Failed to detect platform from package: ' + packagename + '\n')
sys.exit(1) sys.exit(1)
# extract # extract
dir = 'public_html/latest_builds' dir = 'public_html/latest_builds'
try: try:
zf = z.open(package) zf = z.open(package)
f = file(os.path.join(dir, packagename), "wb") f = file(os.path.join(dir, packagename), "wb")
shutil.copyfileobj(zf, f) shutil.copyfileobj(zf, f)
zf.close() zf.close()
z.close() z.close()
except Exception, ex: except Exception, ex:
sys.stderr.write('Failed to unzip package: ' + str(ex) + '\n') sys.stderr.write('Failed to unzip package: ' + str(ex) + '\n')
sys.exit(1) sys.exit(1)
# remove other files from the same platform # remove other files from the same platform
try: try:
for f in os.listdir(dir): for f in os.listdir(dir):
if f.lower().find(platform.lower()) != -1: if f.lower().find(platform.lower()) != -1:
if f != packagename: if f != packagename:
os.remove(os.path.join(dir, f)) os.remove(os.path.join(dir, f))
except Exception, ex: except Exception, ex:
sys.stderr.write('Failed to remove old packages: ' + str(ex) + '\n') sys.stderr.write('Failed to remove old packages: ' + str(ex) + '\n')
sys.exit(1) sys.exit(1)

View File

@@ -25,6 +25,7 @@ import subprocess
import sys import sys
import zipfile import zipfile
# find release directory # find release directory
def find_release_directory(): def find_release_directory():
for d in os.listdir('.'): for d in os.listdir('.'):
@@ -32,7 +33,7 @@ def find_release_directory():
rd = os.path.join(d, 'release') rd = os.path.join(d, 'release')
if os.path.exists(rd): if os.path.exists(rd):
return rd return rd
return None return None
# clean release directory if it already exists # clean release directory if it already exists
@@ -84,4 +85,3 @@ try:
except Exception, ex: except Exception, ex:
sys.stderr.write('Create buildbot_upload.zip failed' + str(ex) + '\n') sys.stderr.write('Create buildbot_upload.zip failed' + str(ex) + '\n')
sys.exit(1) sys.exit(1)