Date: Thu, 12 Dec 2013 14:22:52 +0000 (UTC) From: Nathan Whitehorn <nwhitehorn@FreeBSD.org> To: src-committers@freebsd.org, svn-src-user@freebsd.org Subject: svn commit: r259259 - user/nwhitehorn/condorports Message-ID: <201312121422.rBCEMqBC037834@svn.freebsd.org>
next in thread | raw e-mail | index | archive | help
Author: nwhitehorn Date: Thu Dec 12 14:22:51 2013 New Revision: 259259 URL: http://svnweb.freebsd.org/changeset/base/259259 Log: Script to parse DAG output for debugging why ports won't build. Added: user/nwhitehorn/condorports/dag_status_summary.py (contents, props changed) Added: user/nwhitehorn/condorports/dag_status_summary.py ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ user/nwhitehorn/condorports/dag_status_summary.py Thu Dec 12 14:22:51 2013 (r259259) @@ -0,0 +1,56 @@ +import sys + +dag = file(sys.argv[1], 'r') +rescue_dag = file(sys.argv[2], 'r') + +dag = dag.readlines() +rescue_dag = rescue_dag.readlines() + +jobs = {} +for line in dag: + line = line.split(' ') + if line[0] == 'JOB': + jobs[line[1].strip()] = {'done': False, 'children': 0, 'deps': [], 'failed': False} + if line[0] == 'PARENT': + deps = [] + for dep in line[1:]: + if dep == 'CHILD': + break + deps.append(dep) + jobs[line[-1].strip()]['deps'] = deps + +for line in rescue_dag: + line = line.split(' ') + if line[0] == 'DONE': + jobs[line[1].strip()]['done'] = True + +jdone = 0 +jfailed = 0 +for job in jobs.values(): + if job['done']: + jdone += 1 + continue + deps_met = True + for dep in job['deps']: + dep = jobs[dep] + dep['children'] += 1 + if not dep['done']: + deps_met = False + if deps_met: + job['failed'] = True + jfailed += 1 + +print '%d jobs complete' % jdone +print '%d jobs failed' % jfailed + +blocking = [] +for job in jobs: + j = jobs[job] + if j['failed']: + blocking.append((job, j['children'])) + +blocking.sort(cmp=lambda a,b: cmp(a[1], b[1]), reverse=True) +print 'Top ten failed jobs blocking other jobs:' +for job in blocking[:10]: + print '\t%s blocking %d dependent jobs' % (job[0], job[1]) +
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201312121422.rBCEMqBC037834>