Sign Up
Log In
Log In
or
Sign Up
Places
All Projects
Status Monitor
Collapse sidebar
home:pbleser:osc
osc-plugin-faillog
faillog.py
Overview
Repositories
Revisions
Requests
Users
Attributes
Meta
File faillog.py of Package osc-plugin-faillog
# -*- coding: utf-8 -*- # vim: ts=4 sw=4 sta ai: # Smart build failure log display for lazy people (like me) # Author: Pascal Bleser <pascal.bleser@opensuse.org> import re faillog_rank_repo = [ re.compile(r'factory', re.I), ] faillog_rank_arch = [ re.compile(r'x86_64'), ] @cmdln.alias('f') @cmdln.alias('fl') def do_faillog(self, subcmd, opts, *args): global faillog_rank_repo, faillog_rank_arch """${cmd_name}: show the most informative failed build ${cmd_usage} """ import pprint args = parseargs(args) pacs = findpacs(args) failed = [] for pac in pacs: f = show_results_meta(pac.apiurl, pac.prjname, pac.name) tree = ET.parse(StringIO(''.join(f))) root = tree.getroot() for node in root.findall('result'): rmap = {} rmap['prj'] = pac.prjname rmap['pac'] = pac.name rmap['rep'] = node.get('repository') rmap['arch'] = node.get('arch') statusnode = node.find('status') try: rmap['status'] = statusnode.get('code') except: # code can be missing when package is too new: rmap['status'] = "?" pass if not rmap['status'] in ['succeeded', 'disabled', 'blocked', 'building', 'finished', 'scheduled']: failed.append((rmap['rep'], rmap['arch'], rmap['status'])) pass pass pass if len(failed) < 1: return winner_repo = None repos = map(lambda x: x[0], failed) repos.sort() for r, a, s in failed: #print "%s: r=%s a=%s" % (s, r, a) for rx in faillog_rank_repo: if rx.search(r): winner_repo = r break pass pass if winner_repo == None: winner_repo = repos[-1] pass winner_arch = None archs = map(lambda x: x[1], filter(lambda x: x[0] == winner_repo, failed)) archs.sort() for a in archs: for rx in faillog_rank_arch: if rx.search(a): winner_arch = a break pass pass if winner_arch == None: winner_arch = archs[0] pass #print "%s %s" % (winner_repo, winner_arch) wd = os.curdir package = store_read_package(wd) project = store_read_project(wd) apiurl = store_read_apiurl(wd) print_buildlog(apiurl, project, package, winner_repo, winner_arch) pass
Locations
Projects
Search
Status Monitor
Help
OpenBuildService.org
Documentation
API Documentation
Code of Conduct
Contact
Support
@OBShq
Terms
openSUSE Build Service is sponsored by
The Open Build Service is an
openSUSE project
.
Sign Up
Log In
Places
Places
All Projects
Status Monitor