From owner-svn-src-user@FreeBSD.ORG Thu Dec 12 14:22:52 2013 Return-Path: Delivered-To: svn-src-user@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id 3BE166AB; Thu, 12 Dec 2013 14:22:52 +0000 (UTC) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:1900:2254:2068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mx1.freebsd.org (Postfix) with ESMTPS id 27678160B; Thu, 12 Dec 2013 14:22:52 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.7/8.14.7) with ESMTP id rBCEMqlp037835; Thu, 12 Dec 2013 14:22:52 GMT (envelope-from nwhitehorn@svn.freebsd.org) Received: (from nwhitehorn@localhost) by svn.freebsd.org (8.14.7/8.14.7/Submit) id rBCEMqBC037834; Thu, 12 Dec 2013 14:22:52 GMT (envelope-from nwhitehorn@svn.freebsd.org) Message-Id: <201312121422.rBCEMqBC037834@svn.freebsd.org> From: Nathan Whitehorn Date: Thu, 12 Dec 2013 14:22:52 +0000 (UTC) To: src-committers@freebsd.org, svn-src-user@freebsd.org Subject: svn commit: r259259 - user/nwhitehorn/condorports X-SVN-Group: user MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-user@freebsd.org X-Mailman-Version: 2.1.17 Precedence: list List-Id: "SVN commit messages for the experimental " user" src tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 12 Dec 2013 14:22:52 -0000 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]) +