import koji import urllib import string import os import operator import time current_time = time.time() # Filter out the false positives false_positives = ['revisor'] # Python-2.7 landed to dist-f14 before this time # 2010 Jul 29, 13:00 +0000 py27landtime = 1280408400 timestamp = time.strftime("%a, %d %b %Y %H:%M:%S +0000", time.gmtime()) hub = "http://koji.fedoraproject.org/kojihub" kojisession = koji.ClientSession(hub) #failedlistfile = open("faillist") #failedlist = failedlistfile.readlines() #failedlistfile.close() command = "repoquery --enablerepo=development --repoid=development -s --verbose --whatrequires 'python(abi) = 2.6' --whatrequires libpython2.6\* |uniq" repoquery = os.popen(command) failedlist = repoquery.readlines() for i in range(len(failedlist)): failedlist[i] = failedlist[i][:string.find(failedlist[i],".src.rpm")] failedlist = list(set(failedlist)) failedlist.sort() fail_in_root_log = [] fail_in_build_log = [] fail_in_unknown = [] succeed = [] fixed = [] for faileditem in failedlist: bi = kojisession.getBuild(faileditem) pkgid = bi['package_id'] builds = kojisession.listBuilds(packageID=pkgid) builds.sort(key=operator.itemgetter('completion_ts')) builds.reverse() failindex = -1 disttags = ['fc14', 'fc13', 'fc12', 'fc11', 'fc10'] for disttag in disttags: for i in range(len(builds)): if disttag in builds[i]['release']: failindex = i break if failindex > -1: break nvr = builds[failindex]['nvr'] task_id = builds[failindex]['task_id'] print nvr tasklink = "http://koji.fedoraproject.org/koji/taskinfo?taskID=" + str(task_id) failinfo = {'nvr': nvr, 'tasklink': tasklink, 'owner': bi['owner_name']} weblink = urllib.urlopen(tasklink) page = weblink.readlines() weblink.close() BuildError = False for line in page: if "BuildError" in line: BuildError = True if "root.log" in line: fail_in_root_log.append(failinfo) elif "build.log" in line: fail_in_build_log.append(failinfo) else: fail_in_unknown.append(failinfo) if BuildError == False: #if not builds[failindex]['completion_ts'] < current_time - 24 * 60 * 60 and 'fc14' in builds[failindex]['release']: if (not builds[failindex]['completion_ts'] < py27landtime and 'fc14' in builds[failindex]['release']) or builds[failindex]['name'] in false_positives: fixed.append(failinfo) else: succeed.append(failinfo) totalnumber = len(fail_in_root_log) + len(fail_in_build_log) + len(fail_in_unknown) + len(succeed) mypage = '' mypage += '
' mypage += timestamp + "