mirror of https://github.com/odrling/Aegisub
738 lines
20 KiB
INI
738 lines
20 KiB
INI
###############
|
|
# General Setup
|
|
###############
|
|
c = BuildmasterConfig = {}
|
|
|
|
|
|
# Import our passwords
|
|
passwd_file = open('passwd.py')
|
|
exec passwd_file
|
|
passwd_file.close()
|
|
|
|
c['db_url'] = "mysql://buildbot:%s@localhost/buildbot?max_idle=300" % passwd["mysql"]
|
|
|
|
# What port to listen on, used for try attempts as well.
|
|
c['slavePortnum'] = "tcp:9899:interface=68.233.14.102"
|
|
|
|
c['projectName'] = "Aegisub"
|
|
c['projectURL'] = "http://devel.aegisub.org/"
|
|
c['buildbotURL'] = "http://buildbot.aegisub.org/"
|
|
|
|
# Used for accepting wchange notifications (svn-commit-hook) _and_ try attempts.
|
|
from buildbot.changes.pb import PBChangeSource
|
|
c['change_source'] = PBChangeSource(port="tcp:9900:interface=127.0.0.1")
|
|
|
|
####################################
|
|
# Check if a file is worth a rebuild
|
|
####################################
|
|
|
|
re_common = [
|
|
'^trunk/aegisub/.*\.c$',
|
|
'^trunk/aegisub/.*\.cpp$',
|
|
'^trunk/aegisub/.*\.h$',
|
|
'^trunk/aegisub/FFmpegSource2/.*',
|
|
'^trunk/aegisub/src/include/aegisub/.*',
|
|
'^trunk/aegisub/src/boost/.*',
|
|
'^trunk/aegisub/src/bitmaps/.*',
|
|
'^trunk/aegisub/src/config/.*',
|
|
'^trunk/aegisub/universalchardet/.*',
|
|
'^trunk/aegisub/src/gl/.*',
|
|
'^trunk/aegisub/libaegisub/common/.*',
|
|
'^trunk/aegisub/libaegisub/include/.*',
|
|
'^trunk/aegisub/*.h',
|
|
'^trunk/aegisub/src/command/.*\.h$',
|
|
'^trunk/aegisub/src/command/.*\.cpp$',
|
|
]
|
|
|
|
re_common_unix = [
|
|
'^trunk/aegisub/configure.in$',
|
|
'^trunk/aegisub/libass/.*',
|
|
'^trunk/aegisub/.*Makefile.*$',
|
|
'^trunk/aegisub/m4macros/.*',
|
|
'^trunk/aegisub/scripts/unix-.*',
|
|
'^trunk/aegisub/src/libresrc/.*',
|
|
'^trunk/aegisub/po/.*',
|
|
'^trunk/aegisub/acinclude.m4$',
|
|
'^trunk/aegisub/desktop/.*'
|
|
'^trunk/aegisub/libaegisub/unix/.*',
|
|
]
|
|
|
|
re_osx = [
|
|
'^trunk/aegisub/src/libosxutil/.*',
|
|
'^trunk/aegisub/packages/osx_.*',
|
|
'^trunk/aegisub/scripts/osx-.*'
|
|
'^trunk/aegisub/libaegisub/osx/.*',
|
|
]
|
|
|
|
re_windows = [
|
|
'^trunk/aegisub/build/.*',
|
|
'^trunk/contrib/csri/.*',
|
|
'^trunk/contrib/lua51/.*',
|
|
'^trunk/contrib/hunspell/.*',
|
|
'^trunk/aegisub/packages/win_installer/.*',
|
|
'^trunk/aegisub/tinderbox/windows/.*',
|
|
'^trunk/aegisub/src/msvc/.*'
|
|
'^trunk/aegisub/libaegisub/windows/.*',
|
|
]
|
|
|
|
re_doxygen = [
|
|
'^trunk/aegisub/docs/doxygen/.*',
|
|
'^trunk/aegisub/src/.*\.c$',
|
|
'^trunk/aegisub/src/.*\.cpp$',
|
|
'^trunk/aegisub/src/.*\.h$',
|
|
'^trunk/aegisub/src/libosxutil/.*\.h$',
|
|
'^trunk/aegisub/src/libosxutil/.*\.c$',
|
|
'^trunk/aegisub/libaegisub/.*\.h$'
|
|
'^trunk/aegisub/libaegisub/.*\.cpp$'
|
|
'^trunk/aegisub/src/command/.*.h$'
|
|
'^trunk/aegisub/src/command/.*.cpp$'
|
|
'^trunk/aegisub/src/include/aegisub/.*'
|
|
'^trunk/aegisub/reporter/.*\.c$',
|
|
'^trunk/aegisub/reporter/.*\.cpp$',
|
|
'^trunk/aegisub/reporter/.*\.h$',
|
|
]
|
|
|
|
|
|
import re, string
|
|
def check_changes(files, re_array):
|
|
re_compiled = re.compile(string.joinfields(re_array, "|"), re.I)
|
|
for changed_file in files:
|
|
if re.match(re_compiled, changed_file):
|
|
return True
|
|
return False
|
|
|
|
def interested_windows(change):
|
|
return check_changes(change.files, re_common + re_windows)
|
|
|
|
def interested_unix(change):
|
|
return check_changes(change.files, re_common + re_common_unix)
|
|
|
|
def interested_osx(change):
|
|
return check_changes(change.files, re_common + re_common_unix + re_osx)
|
|
|
|
def interested_doxygen(change):
|
|
return check_changes(change.files, re_doxygen)
|
|
|
|
|
|
|
|
#############
|
|
# BUILDSLAVES
|
|
#############
|
|
|
|
from buildbot.buildslave import BuildSlave
|
|
c['slaves'] = [
|
|
BuildSlave("mochi", passwd['mochi'], max_builds=1, properties={'os':'Debian', 'version':'5.0.1', 'osname':'Squeeze'}),
|
|
BuildSlave("kokoro", passwd['kokoro'], max_builds=1, properties={'os':'OSX', 'version':'10.6.3', 'osname':'Snow Leopard'}),
|
|
BuildSlave("anpan", passwd['anpan'], max_builds=1, properties={'os':'Windows', 'version':'SP2', 'osname':'Vista'}),
|
|
BuildSlave("tako", passwd['tako'], max_builds=1, properties={'os':'FreeBSD', 'version':'9.0', 'osname':'CURRENT'}),
|
|
BuildSlave("nori", passwd['nori'], max_builds=1, properties={'os':'Ubuntu', 'version':'10.10', 'osname':'Maverick'}),
|
|
BuildSlave("mokona", passwd['mokona'], max_builds=1, properties={'os':'OSX', 'version': '10.4.11', 'osname':'Tiger'}),
|
|
BuildSlave("shoyu", passwd['shoyu'], max_builds=2, properties={'os':'FreeBSD', 'version': '???', 'osname':'???'})
|
|
]
|
|
|
|
|
|
###########
|
|
# FACTORIES
|
|
###########
|
|
|
|
from buildbot.steps import source, shell
|
|
from buildbot.steps.shell import Configure, Compile, WithProperties
|
|
from buildbot.process import factory
|
|
from buildbot import locks
|
|
from agi_upload import agi_upload
|
|
#from OOCompile import OOCompile
|
|
|
|
# General settings
|
|
source_unix = "http://svn.aegisub.org/trunk/aegisub/"
|
|
source_windows = "http://svn.aegisub.org/branches/windows"
|
|
stub = factory.BuildFactory()
|
|
|
|
|
|
##############
|
|
# Factory
|
|
# General Unix
|
|
##############
|
|
flinux = factory.BuildFactory()
|
|
flinux.addStep(source.SVN(mode="clobber", svnurl=source_unix))
|
|
|
|
flinux.addStep(shell.ShellCommand(
|
|
command=["./autogen.sh", "--skip-configure"],
|
|
env={
|
|
'ACLOCAL_FLAGS': '-I /home/verm/build/wx/share/aclocal'
|
|
},
|
|
name = "autogen",
|
|
description = ["autogening"],
|
|
descriptionDone = ["autogen"],
|
|
haltOnFailure=True
|
|
))
|
|
|
|
flinux.addStep(shell.ShellCommand(
|
|
command=["./configure",
|
|
WithProperties("--with-build-credit=BuildBot: %s (%s)", "buildername", "slavename"),
|
|
"--disable-check-wx-stc",
|
|
"--disable-check-wx-opengl",
|
|
"--with-wx-config=/home/verm/build/wx/bin/wx-config"
|
|
],
|
|
env={
|
|
'CC': '/usr/lib/ccache/gcc',
|
|
'CXX': '/usr/lib/ccache/g++',
|
|
'LDFLAGS': '-Wl,-rpath=/home/verm/build/wx/lib',
|
|
'CCACHE_PATH': '/usr/bin',
|
|
'CCACHE_DIR': '/home/verm/.ccache',
|
|
'LUA_CFLAGS': '-I/usr/include/lua5.1',
|
|
'LUA_LDFLAGS': '-llua5.1'
|
|
},
|
|
name = "configure",
|
|
description = ["configuring"],
|
|
descriptionDone = ["configure"],
|
|
logfiles={
|
|
'config.log': 'config.log',
|
|
'config.status': 'config.status'
|
|
},
|
|
haltOnFailure=True
|
|
))
|
|
|
|
flinux.addStep(Compile(
|
|
command=["make"],
|
|
env={
|
|
'CCACHE_PATH': '/usr/bin',
|
|
'CCACHE_DIR': '/home/verm/.ccache'
|
|
},
|
|
name = "build",
|
|
description = ["building"],
|
|
descriptionDone = ["build"],
|
|
haltOnFailure=True
|
|
))
|
|
|
|
|
|
#########
|
|
# Factory
|
|
# FreeBSD
|
|
#########
|
|
ffbsd = factory.BuildFactory()
|
|
ffbsd.addStep(source.SVN(mode="clobber", svnurl=source_unix))
|
|
|
|
ffbsd.addStep(shell.ShellCommand(
|
|
name = "autogen",
|
|
description = "autogening",
|
|
descriptionDone = "autogen",
|
|
haltOnFailure=True,
|
|
|
|
command=["./autogen.sh", "--skip-configure"],
|
|
env={
|
|
'ACLOCAL_FLAGS': '-I /usr/local/share/aclocal -I /home/verm/build/wx/share/aclocal',
|
|
'ACLOCAL': 'aclocal-1.11',
|
|
'AUTOCONF': 'autoconf-2.68',
|
|
'AUTOHEADER': 'autoheader-2.68'
|
|
}
|
|
))
|
|
|
|
ffbsd.addStep(shell.ShellCommand(
|
|
command=["./configure",
|
|
"--prefix=/usr/local",
|
|
WithProperties("--with-build-credit=BuildBot: %s (%s)", "buildername", "slavename"),
|
|
"--with-wx-config=/home/verm/build/wx/bin/wx-config",
|
|
"--enable-maintainer-mode",
|
|
"--disable-check-wx-opengl",
|
|
"--disable-check-wx-stc"
|
|
],
|
|
env={
|
|
'CCACHE_PATH': '/usr/bin:/usr/local/bin',
|
|
'CCACHE_DIR': '/usr/home/verm/.ccache',
|
|
'CC': '/usr/local/libexec/ccache/gcc',
|
|
'CXX': '/usr/local/libexec/ccache/g++',
|
|
'CFLAGS': '-I/usr/local/include',
|
|
'CXXFLAGS': '-I/usr/local/include',
|
|
'LDFLAGS': '-rpath /usr/home/verm/build/wx/lib',
|
|
# 'LUA_CFLAGS': '-I/usr/local/include/lua51',
|
|
# 'LUA_LDFLAGS': '-L/usr/local/lib -llua-5.1'
|
|
},
|
|
name = "configure",
|
|
description = ["configuring"],
|
|
descriptionDone = ["configure"],
|
|
logfiles={
|
|
'config.log': 'config.log',
|
|
'config.status': 'config.status'
|
|
},
|
|
haltOnFailure=True
|
|
))
|
|
|
|
ffbsd.addStep(Compile(
|
|
command=["gmake"],
|
|
name = "build",
|
|
description = ["building"],
|
|
descriptionDone = ["build"],
|
|
env={
|
|
'CCACHE_PATH': '/usr/bin:/usr/local/bin',
|
|
'CCACHE_DIR': '/usr/home/verm/.ccache'
|
|
},
|
|
haltOnFailure=True
|
|
))
|
|
|
|
|
|
###############
|
|
# Factory
|
|
# Unix Snapshot
|
|
###############
|
|
|
|
funix_dist = factory.BuildFactory()
|
|
funix_dist.addStep(source.SVN(mode="clobber", svnurl=source_unix))
|
|
funix_dist.addStep(shell.ShellCommand(
|
|
name = "dist",
|
|
description = "disting",
|
|
descriptionDone = "dist",
|
|
command=[
|
|
"sh",
|
|
"-x",
|
|
"tinderbox/unix/dist.sh",
|
|
WithProperties("%s", "got_revision"),
|
|
WithProperties("%s", "slavename"),
|
|
],
|
|
haltOnFailure=True
|
|
))
|
|
|
|
#funix_dist.addStep(agi_upload(
|
|
# blocksize=640*1024,
|
|
# slavesrc="dist.tar.bz2",
|
|
# mode=0644,
|
|
# masterdest=WithProperties("tinderbox/snapshot/aegisub-snap-r%s.tar.bz2", "got_revision"),
|
|
# name = "upload",
|
|
# description = ["uploading"],
|
|
# descriptionDone = ["uploaded"],
|
|
# haltOnFailure=False,
|
|
# flunkOnFailure=False
|
|
#))
|
|
|
|
|
|
############
|
|
# Factory
|
|
# OS X Intel
|
|
############
|
|
|
|
fosx = factory.BuildFactory()
|
|
fosx.addStep(source.SVN(mode="clobber", svnurl=source_unix))
|
|
|
|
fosx.addStep(shell.ShellCommand(
|
|
name = "autogen",
|
|
description = "autogening",
|
|
descriptionDone = "autogen",
|
|
haltOnFailure=True,
|
|
command=["./autogen.sh", "--skip-configure"],
|
|
env={
|
|
'ACLOCAL_FLAGS': '-I /Users/verm/prefix/share/aclocal -I /Developer/usr/share/aclocal -I /opt/local/share/aclocal',
|
|
'AUTOMAKE': '/Users/verm/prefix/bin/automake-1.10',
|
|
'ACLOCAL': '/Users/verm/prefix/bin/aclocal-1.10',
|
|
'AUTOCONF': '/Users/verm/prefix/bin/autoconf',
|
|
'AUTOHEADER': '/Users/verm/prefix/bin/autoheader',
|
|
'BIN_CONVERT': '/Users/verm/prefix/bin/convert'
|
|
}
|
|
))
|
|
|
|
fosx.addStep(shell.ShellCommand(
|
|
command=["./configure",
|
|
"--prefix=/Users/verm/prefix",
|
|
WithProperties("--with-build-credit=BuildBot: %s (%s)", "buildername", "slavename"),
|
|
"--with-apple-opengl-framework",
|
|
"--with-wx-config=/Users/verm/prefix/bin/wx-config",
|
|
"--enable-debug",
|
|
"--disable-check-wx-opengl",
|
|
"--disable-check-wx-stc"
|
|
],
|
|
env={
|
|
'CCACHE_PATH': '/usr/bin',
|
|
'CCACHE_DIR': '/Users/verm/.ccache',
|
|
'CC': '/opt/local/libexec/ccache/gcc',
|
|
'CXX': '/opt/local/libexec/ccache/g++',
|
|
'PKG_CONFIG': '/Users/verm/prefix/bin/pkg-config',
|
|
'PKG_CONFIG_PATH': '/Users/verm/prefix/lib/pkgconfig',
|
|
'CXXFLAGS': '-I/Users/verm/prefix/include',
|
|
'LDFLAGS': '-L/Users/verm/prefix/lib -Wl,-rpath=/Users/verm/prefix/lib',
|
|
'LUA_CFLAGS': '-I/Users/verm/prefix/include/lua51',
|
|
'LUA_LDFLAGS': '-L/Users/verm/prefix/lib/lua51 -llua',
|
|
'OPENAL_CFLAGS': '-framework OpenAL',
|
|
'OPENAL_LIBS': '-framework OpenAL',
|
|
'CFLAGS': '-I/Developer/SDKs/MacOSX10.5.sdk/usr/include',
|
|
'ICONV_LDFLAGS': '/usr/lib/libiconv.dylib',
|
|
},
|
|
name = "configure",
|
|
description = ["configuring"],
|
|
descriptionDone = ["configure"],
|
|
logfiles={
|
|
'config.log': 'config.log',
|
|
'config.status': 'config.status'
|
|
},
|
|
haltOnFailure=True
|
|
))
|
|
|
|
fosx.addStep(Compile(
|
|
command=["make"],
|
|
name = "build",
|
|
description = ["building"],
|
|
descriptionDone = ["build"],
|
|
env={
|
|
'CCACHE_PATH': '/usr/bin',
|
|
'CCACHE_DIR': '/Users/verm/.ccache'
|
|
},
|
|
haltOnFailure=True
|
|
))
|
|
|
|
fosx.addStep(shell.ShellCommand(
|
|
command=["make", "osx-tinderbox-bundle"],
|
|
env={
|
|
'T_BUNDLE': WithProperties("aegisub-%s-%s-%s-r%s", "buildername", "slavename", "buildnumber", "got_revision"),
|
|
},
|
|
name = "bundle",
|
|
description = ["bundling"],
|
|
descriptionDone = ["bundle"],
|
|
haltOnFailure=True
|
|
))
|
|
|
|
fosx.addStep(shell.ShellCommand(
|
|
command=["make", "osx-tinderbox-dmg"],
|
|
env={
|
|
'T_BUNDLE': WithProperties("aegisub-%s-%s-%s-r%s", "buildername", "slavename", "buildnumber", "got_revision"),
|
|
'T_DMG': WithProperties("aegisub-%s-%s-%s-r%s", "buildername", "slavename", "buildnumber", "got_revision"),
|
|
},
|
|
name = "dmg",
|
|
description = ["dmging"],
|
|
descriptionDone = ["dmg"],
|
|
haltOnFailure=True
|
|
))
|
|
|
|
#fosx.addStep(agi_upload(
|
|
# blocksize=640*1024,
|
|
# slavesrc="bundle.dmg",
|
|
# mode=0644,
|
|
# masterdest=WithProperties("tinderbox/osx/aegisub-%s-%s-%s-r%s.dmg", "buildername", "slavename", "buildnumber", "got_revision")),
|
|
# name = "upload",
|
|
# description = ["uploading"],
|
|
# descriptionDone = ["uploaded"],
|
|
# haltOnFailure=False,
|
|
# flunkOnFailure=False
|
|
#)
|
|
|
|
|
|
#########
|
|
# Factory
|
|
# Windows
|
|
#########
|
|
fwin = factory.BuildFactory()
|
|
fwin.addStep(source.SVN(mode="clobber", svnurl=source_windows))
|
|
|
|
fwin.addStep(shell.ShellCommand(
|
|
command=["copy aegisub\\tinderbox\\windows\\config_windows.h aegisub\\src\\config\\config_windows.h"],
|
|
name = "configure",
|
|
description = ["configuring"],
|
|
descriptionDone = ["configure"],
|
|
haltOnFailure=True
|
|
))
|
|
|
|
fwin.addStep(Compile(
|
|
command=["aegisub\\tinderbox\\windows\\anpan.bat", "Release", "Win32"],
|
|
name = "build",
|
|
description = ["building"],
|
|
descriptionDone = ["build"],
|
|
haltOnFailure=True
|
|
))
|
|
|
|
fwin.addStep(shell.ShellCommand(
|
|
command=[WithProperties("aegisub\\tinderbox\\windows\\dist.bat %s %s %s %s", "buildername", "slavename", "buildnumber", "got_revision")],
|
|
name = "dist",
|
|
description = ["dist"],
|
|
descriptionDone = ["dist"],
|
|
haltOnFailure=True
|
|
))
|
|
|
|
#fwin.addStep(agi_upload(
|
|
# blocksize=640*1024,
|
|
# slavesrc="dist.7z",
|
|
# mode=0644,
|
|
# masterdest=WithProperties("tinderbox/windows/aegisub-%s-%s-%s-r%s.7z", "buildername", "slavename", "buildnumber", "got_revision")),
|
|
# name = "upload",
|
|
# description = ["uploading"],
|
|
# descriptionDone = ["uploaded"],
|
|
# haltOnFailure=False,
|
|
# flunkOnFailure=False
|
|
#)
|
|
|
|
|
|
fwin64 = factory.BuildFactory()
|
|
fwin64.addStep(source.SVN(mode="clobber", svnurl=source_windows))
|
|
|
|
fwin64.addStep(shell.ShellCommand(
|
|
command=["copy aegisub\\tinderbox\\windows\\config_windows.h aegisub\\src\\config\\config_windows.h"],
|
|
name = "configure",
|
|
description = ["configuring"],
|
|
descriptionDone = ["configure"],
|
|
haltOnFailure=True
|
|
))
|
|
|
|
fwin64.addStep(Compile(
|
|
name = "build",
|
|
command=["aegisub\\tinderbox\\windows\\anpan.bat", "Release", "x64"],
|
|
description = ["building"],
|
|
descriptionDone = ["build"],
|
|
haltOnFailure=True
|
|
))
|
|
|
|
fwin64.addStep(shell.ShellCommand(
|
|
command=[WithProperties("aegisub\\tinderbox\\windows\\dist.bat %s %s %s %s", "buildername", "slavename", "buildnumber", "got_revision")],
|
|
name = "dist",
|
|
description = ["dist"],
|
|
descriptionDone = ["dist"],
|
|
haltOnFailure=True
|
|
))
|
|
|
|
#fwin64.addStep(agi_upload(
|
|
# blocksize=640*1024,
|
|
# slavesrc="dist.7z",
|
|
# mode=0644,
|
|
# masterdest=WithProperties("tinderbox/windows/aegisub-%s-%s-%s-r%s.7z", "buildername", "slavename", "buildnumber", "got_revision")),
|
|
# name = "upload",
|
|
# description = ["uploading"],
|
|
# descriptionDone = ["uploaded"],
|
|
# haltOnFailure=False,
|
|
# flunkOnFailure=False
|
|
#)
|
|
|
|
|
|
#########
|
|
# Factory
|
|
# WWW
|
|
#########
|
|
|
|
fwww_dox = factory.BuildFactory()
|
|
fwww_dox.addStep(source.SVN(mode="clobber", svnurl=source_unix))
|
|
|
|
fwww_dox.addStep(shell.ShellCommand(
|
|
name = "aegisub",
|
|
description = "generating",
|
|
descriptionDone = "aegisub",
|
|
logfiles={
|
|
'doxygen.log': 'doxygen.log'
|
|
},
|
|
command=[
|
|
"sh",
|
|
"-x",
|
|
"tinderbox/www/doxygen.sh",
|
|
"aegisub"
|
|
],
|
|
haltOnFailure=True
|
|
))
|
|
|
|
fwww_dox.addStep(shell.ShellCommand(
|
|
name = "libaegisub",
|
|
description = "generating",
|
|
descriptionDone = "libaegisub",
|
|
logfiles={
|
|
'doxygen.log': 'doxygen.log'
|
|
},
|
|
command=[
|
|
"sh",
|
|
"-x",
|
|
"tinderbox/www/doxygen.sh",
|
|
"libaegisub"
|
|
],
|
|
haltOnFailure=True
|
|
))
|
|
|
|
fwww_dox.addStep(shell.ShellCommand(
|
|
name = "reporter",
|
|
description = "generating",
|
|
descriptionDone = "reporter",
|
|
logfiles={
|
|
'doxygen.log': 'doxygen.log'
|
|
},
|
|
command=[
|
|
"sh",
|
|
"-x",
|
|
"tinderbox/www/doxygen.sh",
|
|
"reporter"
|
|
],
|
|
haltOnFailure=True
|
|
))
|
|
|
|
|
|
##########
|
|
# BUILDERS
|
|
##########
|
|
|
|
slave_win = ["anpan"]
|
|
slave_freebsd = ["tako"]
|
|
slave_debian = ["mochi"]
|
|
slave_ubuntu = ["nori"]
|
|
slave_osx = ["kokoro"]
|
|
slave_www = ['shoyu']
|
|
|
|
Windowsx8632 = { 'name': "Windows-x86_32", 'slavenames': slave_win, 'builddir': "full_Windows-x86_32", 'factory': fwin }
|
|
Windowsx8664 = { 'name': "Windows-x86_64", 'slavenames': slave_win, 'builddir': "full_Windows-x86_64", 'factory': fwin64 }
|
|
Darwinx8664 = { 'name': "Darwin-x86_64", 'slavenames': slave_osx, 'builddir': "full_Darwin-x86_64", 'factory': fosx }
|
|
FreeBSDx8664 = { 'name': "FreeBSD-x86_64", 'slavenames': slave_freebsd, 'builddir': "full_FreeBSD-x86_64", 'factory': ffbsd }
|
|
Ubuntux8664 = { 'name': "Ubuntu-x86_64", 'slavenames': slave_ubuntu, 'builddir': "full_Ubuntu-x86_64", 'factory': flinux }
|
|
Debianx8632 = { 'name': "Debian-x86_32", 'slavenames': slave_debian, 'builddir': "full_Debian-x86_32", 'factory': flinux }
|
|
|
|
UNIXDist = { 'name': "UNIX Dist", 'slavenames': slave_debian + slave_ubuntu + slave_freebsd, 'builddir': "UNIX_Dist", 'factory': funix_dist }
|
|
Doxygen = { 'name': "Doxygen", 'slavenames': slave_www, 'builddir': "www_Doxygen", 'factory': fwww_dox }
|
|
|
|
c['builders'] = [
|
|
Windowsx8632,
|
|
Windowsx8664,
|
|
Darwinx8664,
|
|
FreeBSDx8664,
|
|
Ubuntux8664,
|
|
Debianx8632,
|
|
UNIXDist,
|
|
Doxygen
|
|
]
|
|
|
|
builder_name_windows = [
|
|
"Windows-x86_32",
|
|
"Windows-x86_64"
|
|
]
|
|
|
|
builder_name_unix = [
|
|
"FreeBSD-x86_64",
|
|
"Ubuntu-x86_64",
|
|
"Debian-x86_32"
|
|
]
|
|
|
|
builder_name_darwin = [
|
|
"Darwin-x86_64"
|
|
]
|
|
|
|
builder_name_www = [
|
|
"Doxygen"
|
|
]
|
|
|
|
|
|
############
|
|
# SCHEDULERS
|
|
############
|
|
|
|
from buildbot.scheduler import Scheduler
|
|
from buildbot.scheduler import Dependent
|
|
|
|
full_windows = Scheduler(name="full_windows",
|
|
branch=None,
|
|
treeStableTimer=901,
|
|
builderNames=builder_name_windows,
|
|
fileIsImportant=interested_windows)
|
|
|
|
full_unix = Scheduler(name="full_unix",
|
|
branch=None,
|
|
treeStableTimer=901,
|
|
builderNames=builder_name_unix,
|
|
fileIsImportant=interested_unix)
|
|
|
|
full_darwin = Scheduler(name="full_darwin",
|
|
branch=None,
|
|
treeStableTimer=901,
|
|
builderNames=builder_name_darwin,
|
|
fileIsImportant=interested_osx)
|
|
|
|
full_www = Scheduler(name="full_www",
|
|
branch=None,
|
|
treeStableTimer=901,
|
|
builderNames=builder_name_www,
|
|
fileIsImportant=interested_doxygen)
|
|
|
|
unix_dist = Dependent("unix_dist",
|
|
full_unix,
|
|
builderNames=["UNIX Dist"])
|
|
|
|
|
|
|
|
from buildbot.scheduler import Try_Jobdir
|
|
try_job = Try_Jobdir("try", builder_name_windows + builder_name_unix + builder_name_darwin, jobdir="jobdir")
|
|
|
|
c['schedulers'] = [full_windows, full_unix, full_darwin, full_www, unix_dist]
|
|
|
|
from buildbot import scheduler
|
|
|
|
|
|
|
|
################
|
|
# STATUS TARGETS
|
|
################
|
|
|
|
c['status'] = []
|
|
|
|
# Website http://builder.aegisub.org/
|
|
from buildbot.status import html
|
|
c['status'].append(html.WebStatus(http_port="tcp:8001:interface=127.0.0.1", allowForce=1))
|
|
|
|
|
|
# Send out status emails.
|
|
from buildbot.status import mail
|
|
from buildbot.status.builder import Results
|
|
from datetime import datetime
|
|
def message(attrs):
|
|
text = list()
|
|
|
|
text.append("STATUS : %s" % attrs['result'].title())
|
|
text.append("REVISION : %s" % attrs['revision'])
|
|
text.append("BUILD URL : %s" % attrs['buildURL'])
|
|
text.append("COMMITTERS : %s" % ' '.join(sorted(attrs['responsibleUsers'])))
|
|
text.append("")
|
|
text.append("LOG FILES")
|
|
for log in attrs['logs']:
|
|
name, url, lines, logstatus = log
|
|
text.append(" %s (%s):\n %s" % (name, Results[logstatus], url))
|
|
text.append("")
|
|
|
|
if attrs['changes']:
|
|
text.append("CHANGES")
|
|
|
|
for change in attrs['changes']:
|
|
text.append(" Committer : %s" % change.who)
|
|
text.append(" Revision : %s" % change.revision)
|
|
text.append(" Changeset : http://devel.aegisub.org/changeset/%s" % change.revision)
|
|
text.append(" Time : %s" % datetime.fromtimestamp(change.when).strftime("%Y-%m-%d %H:%M:%S"))
|
|
text.append("")
|
|
text.append(" Files")
|
|
for file in change.files:
|
|
text.append(" %s" % file)
|
|
text.append(" Log:\n%s" % ' ' + change.comments.replace("\n", "\n "))
|
|
text.append("")
|
|
text.append("---------------------------------------------------------------")
|
|
text.append("")
|
|
text.append("")
|
|
|
|
text.append("- %s" % attrs['buildbotURL'])
|
|
return ("\n".join(text), 'plain')
|
|
|
|
c['status'].append(mail.MailNotifier(fromaddr="tinderbox@aegisub.org",
|
|
extraRecipients=["aegisub-tinderbox@aegisub.org"],
|
|
sendToInterestedUsers=False,
|
|
customMesg=message,
|
|
mode="problem",
|
|
extraHeaders={'Reply-To':'aegisub-tinderbox@aegisub.org'}))
|
|
|
|
# IRC!
|
|
from buildbot.status import words
|
|
c['status'].append(words.IRC(
|
|
host="irc.rizon.net",
|
|
nick="aegibuild",
|
|
channels=["#aegisub"],
|
|
notify_events={
|
|
'exception': 1,
|
|
'successToFailure': 1,
|
|
'failureToSuccess': 1
|
|
}
|
|
))
|
|
|
|
c['status'].append(words.IRC(
|
|
host="irc.freenode.net",
|
|
nick="aegibuild",
|
|
channels=["#aegisub"],
|
|
notify_events={
|
|
'exception': 1,
|
|
'successToFailure': 1,
|
|
'failureToSuccess': 1
|
|
}
|
|
))
|
|
|
|
# Realtime client
|
|
# from buildbot.status import client
|
|
# c['status'].append(client.PBListener(9988))
|