The branch, master has been updated via f4e6c42 Only display fields if they are available. from bd8f53b Cope with a single revision having multiple builds.
http://gitweb.samba.org/?p=build-farm.git;a=shortlog;h=master - Log ----------------------------------------------------------------- commit f4e6c4263180908d7f6cd902e4c3d28479befa05 Author: Jelmer Vernooij <jel...@samba.org> Date: Sun Nov 21 16:30:38 2010 +0100 Only display fields if they are available. ----------------------------------------------------------------------- Summary of changes: buildfarm/sqldb.py | 13 ++++++++----- buildfarm/web/__init__.py | 33 +++++++++++++++++++-------------- 2 files changed, 27 insertions(+), 19 deletions(-) Changeset truncated at 500 lines: diff --git a/buildfarm/sqldb.py b/buildfarm/sqldb.py index 934a7ad..c5d2825 100644 --- a/buildfarm/sqldb.py +++ b/buildfarm/sqldb.py @@ -54,9 +54,7 @@ class StormBuild(Build): compiler = RawStr() checksum = RawStr() upload_time = Int(name="age") - commit = Unicode() status_str = RawStr(name="status") - commit_revision = RawStr() basename = RawStr() host_id = Int() @@ -220,12 +218,17 @@ class StormCachingBuildResultStore(BuildResultStore): StormBuild.host == host, StormBuild.compiler == compiler).order_by(Desc(StormBuild.upload_time)) - def get_build(self, tree, host, compiler, revision): - result = self.store.find(StormBuild, + def get_build(self, tree, host, compiler, revision=None, checksum=None): + expr = [ StormBuild.tree == tree, StormBuild.host == host, StormBuild.compiler == compiler, - StormBuild.revision == revision).order_by(Desc(StormBuild.upload_time)) + ] + if revision is not None: + expr.append(StormBuild.revision == revision) + if checksum is not None: + expr.append(StormBuild.checksum == checksum) + result = self.store.find(StormBuild, *expr).order_by(Desc(StormBuild.upload_time)) ret = result.first() if ret is None: raise NoSuchBuildError(tree, host, compiler, revision) diff --git a/buildfarm/web/__init__.py b/buildfarm/web/__init__.py index 3506250..6f2b225 100755 --- a/buildfarm/web/__init__.py +++ b/buildfarm/web/__init__.py @@ -104,7 +104,7 @@ def html_build_status(status): def build_status_html(myself, build): - return "<a href='%s?function=View+Build;host=%s;tree=%s;compiler=%s;revision=%s'>%s</a>" % (myself, build.host, build.tree, build.compiler, build.revision, html_build_status(build.status())) + return "<a href='%s?function=View+Build;host=%s;tree=%s;compiler=%s;revision=%s;checksum=%s'>%s</a>" % (myself, build.host, build.tree, build.compiler, build.revision, html_build_status(build.status()), build.log_checksum()) def build_status_vals(status): @@ -442,25 +442,25 @@ class ViewBuildPage(BuildFarmPage): yield "</tbody></table>\n" - def render(self, myself, tree, host, compiler, rev, plain_logs=False): + def render(self, myself, tree, host, compiler, rev, checksum=None, + plain_logs=False): """view one build in detail""" - uname = "" - cflags = "" - config = "" + uname = None + cflags = None + config = None try: - build = self.buildfarm.get_build(tree, host, compiler, rev) + build = self.buildfarm.get_build(tree, host, compiler, rev, + checksum=checksum) except data.NoSuchBuildError: - yield "No such build: %s on %s with %s, rev %s" % (tree, host, compiler, rev) + yield "No such build: %s on %s with %s, rev %r, checksum %r" % ( + tree, host, compiler, rev, checksum) return try: (revision, revision_time) = build.revision_details() except data.MissingRevisionInfo: revision = None - if rev: - assert re.match("^[0-9a-fA-F]*$", rev) - try: f = build.read_log() try: @@ -500,14 +500,17 @@ class ViewBuildPage(BuildFarmPage): yield "<tr><td>Host:</td><td><a href='%s?function=View+Host;host=%s;tree=%s;"\ "compiler=%s#'>%s</a> - %s</td></tr>\n" %\ (myself, host, tree, compiler, host, self.buildfarm.hostdb[host].platform.encode("utf-8")) - yield "<tr><td>Uname:</td><td>%s</td></tr>\n" % uname + if uname is not None: + yield "<tr><td>Uname:</td><td>%s</td></tr>\n" % uname yield "<tr><td>Tree:</td><td>%s</td></tr>\n" % self.tree_link(myself, tree) yield "<tr><td>Build Revision:</td><td>%s</td></tr>\n" % revision_link(myself, revision, tree) yield "<tr><td>Build age:</td><td><div class='age'>%s</div></td></tr>\n" % self.red_age(build.age) yield "<tr><td>Status:</td><td>%s</td></tr>\n" % build_status_html(myself, build) yield "<tr><td>Compiler:</td><td>%s</td></tr>\n" % compiler - yield "<tr><td>CFLAGS:</td><td>%s</td></tr>\n" % cflags - yield "<tr><td>configure options:</td><td>%s</td></tr>\n" % config + if cflags is not None: + yield "<tr><td>CFLAGS:</td><td>%s</td></tr>\n" % cflags + if config is not None: + yield "<tr><td>configure options:</td><td>%s</td></tr>\n" % config yield "</table>\n" yield "".join(self.show_oldrevs(myself, tree, host, compiler)) @@ -922,8 +925,10 @@ class BuildFarmApp(object): tree = get_param(form, "tree") host = get_param(form, "host") compiler = get_param(form, "compiler") + revision = get_param(form, "revision") + checksum = get_param(form, "checksum") page = ViewBuildPage(self.buildfarm) - yield "".join(page.render(myself, tree, host, compiler, get_param(form, "revision"), plain_logs)) + yield "".join(page.render(myself, tree, host, compiler, revision, checksum, plain_logs)) elif fn_name == "View_Host": page = ViewHostPage(self.buildfarm) yield "".join(page.render_html(myself, get_param(form, 'host'))) -- build.samba.org