[cig-commits] r12633 - in cs/buildbot/trunk/buildbot: . slave status
leif at geodynamics.org
leif at geodynamics.org
Wed Aug 13 17:33:53 PDT 2008
Author: leif
Date: 2008-08-13 17:33:52 -0700 (Wed, 13 Aug 2008)
New Revision: 12633
Modified:
cs/buildbot/trunk/buildbot/config.py
cs/buildbot/trunk/buildbot/lines.py
cs/buildbot/trunk/buildbot/slave/commands.py
cs/buildbot/trunk/buildbot/status/html.py
Log:
Guess the content-type of logfiles based upon the log's name, so that
*.gif, *.jpg, *.pdf, etc. "logfiles" (linked from the waterfall) are
displayed correctly by the web browser. Also, allow filtering configs
by project (for project-specific slaves).
Modified: cs/buildbot/trunk/buildbot/config.py
===================================================================
--- cs/buildbot/trunk/buildbot/config.py 2008-08-13 20:39:35 UTC (rev 12632)
+++ cs/buildbot/trunk/buildbot/config.py 2008-08-14 00:33:52 UTC (rev 12633)
@@ -41,11 +41,12 @@
class BuildConfig(object):
- def __init__(self, name, languages, env, tag=None, slaves=None, configureArgs=None, basedir=None,
+ def __init__(self, name, languages, env, projects=None, tag=None, slaves=None, configureArgs=None, basedir=None,
CPPFLAGS=None, LDFLAGS=None, LIBS=None):
self.name = name
self.languages = languages
self.env = env
+ self.projects = projects
self.tag = tag
# I designed BuildConfig & BuildSlave when I thought BuildBot
Modified: cs/buildbot/trunk/buildbot/lines.py
===================================================================
--- cs/buildbot/trunk/buildbot/lines.py 2008-08-13 20:39:35 UTC (rev 12632)
+++ cs/buildbot/trunk/buildbot/lines.py 2008-08-14 00:33:52 UTC (rev 12633)
@@ -177,6 +177,11 @@
for language in self.languages:
if not language in buildConfig.languages:
return None
+
+ # Build configurations can also reject us.
+ if buildConfig.projects:
+ if not self.project in buildConfig.projects:
+ return None
if buildConfig.tag:
# If the build config is tagged, and we have more than one
Modified: cs/buildbot/trunk/buildbot/slave/commands.py
===================================================================
--- cs/buildbot/trunk/buildbot/slave/commands.py 2008-08-13 20:39:35 UTC (rev 12632)
+++ cs/buildbot/trunk/buildbot/slave/commands.py 2008-08-14 00:33:52 UTC (rev 12633)
@@ -261,7 +261,10 @@
# interpolate my environment
for k,v in environ.items():
- environ[k] = v % self.environ
+ try:
+ environ[k] = v % self.environ
+ except:
+ environ[k] = v
self.environ.update(environ)
self.initialStdin = initialStdin
Modified: cs/buildbot/trunk/buildbot/status/html.py
===================================================================
--- cs/buildbot/trunk/buildbot/status/html.py 2008-08-13 20:39:35 UTC (rev 12632)
+++ cs/buildbot/trunk/buildbot/status/html.py 2008-08-14 00:33:52 UTC (rev 12633)
@@ -802,10 +802,7 @@
return data
def render_HEAD(self, request):
- if self.asText:
- request.setHeader("content-type", "text/plain")
- else:
- request.setHeader("content-type", "text/html")
+ self.setContentType(request)
# vague approximation, ignores markup
request.setHeader("content-length", self.original.length)
@@ -814,10 +811,7 @@
def render_GET(self, req):
self.req = req
- if self.asText:
- req.setHeader("content-type", "text/plain")
- else:
- req.setHeader("content-type", "text/html")
+ self.setContentType(req)
if not self.asText:
req.write(self.htmlHeader(req))
@@ -825,6 +819,18 @@
self.original.subscribeConsumer(ChunkConsumer(req, self))
return server.NOT_DONE_YET
+ def setContentType(self, request):
+ import mimetypes
+ ctype, encoding = mimetypes.guess_type(self.original.getName())
+ if ctype is not None and encoding is None:
+ request.setHeader("content-type", ctype)
+ self.asText = True
+ elif self.asText:
+ request.setHeader("content-type", "text/plain")
+ else:
+ request.setHeader("content-type", "text/html")
+ return
+
def finished(self):
if not self.req:
return
More information about the cig-commits
mailing list