diff options
author | Brecht Van Lommel <brechtvanlommel@pandora.be> | 2011-06-04 00:44:23 +0400 |
---|---|---|
committer | Brecht Van Lommel <brechtvanlommel@pandora.be> | 2011-06-04 00:44:23 +0400 |
commit | 06ca70373768826da6c98f5eb5631f817164e11d (patch) | |
tree | 036051690d7b4406a879f988ba3b38ffd54c07e0 /build_files/buildbot | |
parent | ed072f2fef757cd46113b1216b46c40fbaa532f8 (diff) |
BuildBot: various changes to support building branches.
Diffstat (limited to 'build_files/buildbot')
-rw-r--r-- | build_files/buildbot/master.cfg | 35 | ||||
-rw-r--r-- | build_files/buildbot/master_unpack.py | 23 | ||||
-rw-r--r-- | build_files/buildbot/slave_compile.py | 10 | ||||
-rw-r--r-- | build_files/buildbot/slave_pack.py | 10 |
4 files changed, 54 insertions, 24 deletions
diff --git a/build_files/buildbot/master.cfg b/build_files/buildbot/master.cfg index 6913ed2dab0..b4d69a289ee 100644 --- a/build_files/buildbot/master.cfg +++ b/build_files/buildbot/master.cfg @@ -53,7 +53,7 @@ c['builders'] = [] buildernames = [] -def add_builder(c, name, libdir, factory): +def add_builder(c, name, libdir, factory, branch=''): slavenames = [] for slave in master_private.slaves: @@ -61,16 +61,18 @@ def add_builder(c, name, libdir, factory): slavenames.append(slave['name']) if len(slavenames) > 0: - f = factory(name, libdir) + f = factory(name, libdir, branch) c['builders'].append(BuilderConfig(name=name, slavenames=slavenames, factory=f, category='blender')) buildernames.append(name) # common steps -def svn_step(): - return SVN(baseURL='https://svn.blender.org/svnroot/bf-blender/%%BRANCH%%/blender', mode='update', defaultBranch='trunk', workdir='blender') - +def svn_step(branch=''): + if branch: + return SVN(baseURL='https://svn.blender.org/svnroot/bf-blender/branches/%%BRANCH%%', mode='update', defaultBranch=branch, workdir='blender') + else: + return SVN(baseURL='https://svn.blender.org/svnroot/bf-blender/%%BRANCH%%/blender', mode='update', defaultBranch='trunk', workdir='blender') 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) @@ -78,7 +80,7 @@ def lib_svn_step(dir): # generic builder -def generic_builder(id, libdir=""): +def generic_builder(id, libdir='', branch=''): filename = 'buildbot_upload_' + id + '.zip' compile_script = '../blender/build_files/buildbot/slave_compile.py' test_script = '../blender/build_files/buildbot/slave_test.py' @@ -86,13 +88,13 @@ def generic_builder(id, libdir=""): unpack_script = 'master_unpack.py' f = BuildFactory() - f.addStep(svn_step()) + f.addStep(svn_step(branch)) if libdir != '': f.addStep(lib_svn_step(libdir)) f.addStep(Compile(command=['python', compile_script, id])) f.addStep(Test(command=['python', test_script, id])) - f.addStep(ShellCommand(name='package', command=['python', pack_script, id], description='packaging', descriptionDone='packaged')) + f.addStep(ShellCommand(name='package', command=['python', pack_script, id, branch], description='packaging', descriptionDone='packaged')) if id.find('cmake') != -1: f.addStep(FileUpload(name='upload', slavesrc='buildbot_upload.zip', masterdest=filename, maxsize=100 * 1024 * 1024)) else: @@ -102,12 +104,19 @@ def generic_builder(id, libdir=""): # builders -add_builder(c, 'mac_x86_64_cmake', 'darwin-9.x.universal', generic_builder) -add_builder(c, 'mac_i386_cmake', 'darwin-9.x.universal', generic_builder) -add_builder(c, 'mac_ppc_cmake', 'darwin-9.x.universal', generic_builder) -add_builder(c, 'linux_x86_64_cmake', '', generic_builder) +add_builder(c, 'mac_x86_64_scons', 'darwin-9.x.universal', generic_builder) +add_builder(c, 'salad_mac_x86_64_scons', 'darwin-9.x.universal', generic_builder, 'soc-2011-salad') +add_builder(c, 'mac_i386_scons', 'darwin-9.x.universal', generic_builder) +add_builder(c, 'mac_ppc_scons', 'darwin-9.x.universal', generic_builder) +#add_builder(c, 'linux_x86_64_cmake', '', generic_builder) +add_builder(c, 'linux_i386_scons', '', generic_builder) +add_builder(c, 'salad_linux_i386_scons', '', generic_builder, 'soc-2011-salad') add_builder(c, 'linux_x86_64_scons', '', generic_builder) +add_builder(c, 'salad_linux_x86_64_scons', '', generic_builder, 'soc-2011-salad') add_builder(c, 'win32_scons', 'windows', generic_builder) +add_builder(c, 'salad_win32_scons', 'windows', generic_builder, 'soc-2011-salad') +#add_builder(c, 'freebsd_i386_cmake', '', generic_builder) +#add_builder(c, 'freebsd_x86_64_cmake', '', generic_builder) # SCHEDULERS # @@ -149,7 +158,7 @@ authz_cfg = authz.Authz( pingBuilder=False, stopBuild=False, stopAllBuilds=False, - cancelPendingBuild=False, + cancelPendingBuild=True, ) c['status'].append(html.WebStatus(http_port=8010, authz=authz_cfg)) diff --git a/build_files/buildbot/master_unpack.py b/build_files/buildbot/master_unpack.py index 06c11b368b0..3e1dec726e5 100644 --- a/build_files/buildbot/master_unpack.py +++ b/build_files/buildbot/master_unpack.py @@ -43,6 +43,7 @@ def get_platform(filename): # platform out, but there may be some variations, so we fiddle a # bit to handle current and hopefully future names filename = strip_extension(filename) + filename = strip_extension(filename) tokens = filename.split("-") platforms = ('osx', 'mac', 'bsd', @@ -63,6 +64,21 @@ def get_platform(filename): return '-'.join(platform_tokens) +def get_branch(filename): + tokens = filename.split("-") + branch = "" + + for token in tokens: + if branch == "": + branch = token + else: + branch = branch + "-" + token + + if token == "blender": + return branch + + return "" + # get filename if len(sys.argv) < 2: sys.stderr.write("Not enough arguments, expecting file to unpack\n") @@ -88,8 +104,9 @@ if len(z.namelist()) != 1: package = z.namelist()[0] packagename = os.path.basename(package) -# detect platform +# detect platform and branch platform = get_platform(packagename) +branch = get_branch(packagename) if platform == '': sys.stderr.write('Failed to detect platform ' + @@ -113,10 +130,10 @@ except Exception, ex: sys.stderr.write('Failed to unzip package: %s\n' % str(ex)) sys.exit(1) -# remove other files from the same platform +# remove other files from the same platform and branch try: for f in os.listdir(directory): - if platform.lower() in f.lower(): + if get_platform(f) == platform and get_branch(f) == branch: if f != packagename: os.remove(os.path.join(directory, f)) except Exception, ex: diff --git a/build_files/buildbot/slave_compile.py b/build_files/buildbot/slave_compile.py index 2a1af0578a9..9980207cb0b 100644 --- a/build_files/buildbot/slave_compile.py +++ b/build_files/buildbot/slave_compile.py @@ -38,11 +38,11 @@ if builder.find('cmake') != -1: # set build options cmake_options = ['-DCMAKE_BUILD_TYPE:STRING=Release'] - if builder == 'mac_x86_64_cmake': + if builder.endswith('mac_x86_64_cmake'): cmake_options.append('-DCMAKE_OSX_ARCHITECTURES:STRING=x86_64') - elif builder == 'mac_i386_cmake': + elif builder.endswith('mac_i386_cmake'): cmake_options.append('-DCMAKE_OSX_ARCHITECTURES:STRING=i386') - elif builder == 'mac_ppc_cmake': + elif builder.endswith('mac_ppc_cmake'): cmake_options.append('-DCMAKE_OSX_ARCHITECTURES:STRING=ppc') # configure and make @@ -75,10 +75,10 @@ else: config_dir = os.path.join(buildbot_dir, 'config') configs = [] - if builder == 'linux_x86_64_scons': + if builder.endswith('linux_x86_64_scons'): configs = ['user-config-player-x86_64.py', 'user-config-x86_64.py'] - elif builder == 'linux_i386_scons': + elif builder.endswith('linux_i386_scons'): configs = ['user-config-player-i686.py', 'user-config-i686.py'] diff --git a/build_files/buildbot/slave_pack.py b/build_files/buildbot/slave_pack.py index 81402b3aca4..13578cbaaef 100644 --- a/build_files/buildbot/slave_pack.py +++ b/build_files/buildbot/slave_pack.py @@ -33,11 +33,15 @@ if len(sys.argv) < 2: sys.exit(1) builder = sys.argv[1] +branch = '' + +if len(sys.argv) >= 3: + branch = sys.argv[2] # scons does own packaging if builder.find('scons') != -1: os.chdir('../blender') - scons_options = ['BF_QUICK=slnt', 'buildslave'] + scons_options = ['BF_QUICK=slnt', 'BUILDBOT_BRANCH=' + branch, 'buildslave'] if builder.startswith('linux'): buildbot_dir = os.path.dirname(os.path.realpath(__file__)) @@ -52,9 +56,9 @@ if builder.find('scons') != -1: config = None - if builder == 'linux_x86_64_scons': + if builder.endswith('linux_x86_64_scons'): config = 'user-config-x86_64.py' - elif builder == 'linux_i386_scons': + elif builder.endswith('linux_i386_scons'): config = 'user-config-x86_64.py' if config is not None: |