extras-repoclosure rc-run.py,1.14,1.15 rc-report.py,1.13,1.14
Michael Schwendt (mschwendt)
fedora-extras-commits at redhat.com
Sat Jul 29 22:10:26 UTC 2006
Author: mschwendt
Update of /cvs/fedora/extras-repoclosure
In directory cvs-int.fedora.redhat.com:/tmp/cvs-serv32697
Modified Files:
rc-run.py rc-report.py
Log Message:
Modify broken deps report scripts to combine all summary mails into one
message when called via the "rc-run-all.py" alias.
Lots of related re-indentation by one level.
Index: rc-run.py
===================================================================
RCS file: /cvs/fedora/extras-repoclosure/rc-run.py,v
retrieving revision 1.14
retrieving revision 1.15
diff -u -r1.14 -r1.15
--- rc-run.py 16 Jul 2006 14:00:04 -0000 1.14
+++ rc-run.py 29 Jul 2006 22:10:23 -0000 1.15
@@ -94,7 +94,6 @@
pass
today = datetime.date.today()
-releases = []
lockfilename = 'rc-run.lockfile'
f = open(lockfilename,'w')
@@ -109,8 +108,11 @@
sys.exit(11)
rs = RepoSupport()
+releases = []
+combinedreport = False
if sys.argv[0].endswith('rc-run-all.py'): # process all releases
+ combinedreport = True
for release in rs.AllReleases():
releases.append(release)
else: # process one release given as command-line argument
@@ -128,7 +130,9 @@
goodlogs = []
badlogs = []
-for release in releases:
+for release in rs.AllReleases():
+ if release not in releases:
+ continue
logfilename = ('rc-fe%s-%s.txt' % (release,today))
rv = False
for count in range(3):
@@ -141,8 +145,14 @@
if ( not rv ):
badlogs.append( (release,logfilename) )
-for (release,logfilename) in goodlogs:
- rc = os.system('rc-report.py %s %s' % (release,logfilename))
+if combinedreport:
+ args = ''
+ for (release,logfilename) in goodlogs:
+ args += ('%s %s ' % (release,logfilename))
+ rc = os.system('rc-report.py %s' % args)
+else:
+ for (release,logfilename) in goodlogs:
+ rc = os.system('rc-report.py %s %s' % (release,logfilename))
fcntl.flock(f, fcntl.LOCK_UN)
f.close()
Index: rc-report.py
===================================================================
RCS file: /cvs/fedora/extras-repoclosure/rc-report.py,v
retrieving revision 1.13
retrieving revision 1.14
diff -u -r1.13 -r1.14
--- rc-report.py 19 Jul 2006 18:31:44 -0000 1.13
+++ rc-report.py 29 Jul 2006 22:10:23 -0000 1.14
@@ -11,9 +11,11 @@
import sys
sys.path.append('/srv/extras-push/work/extras-repoclosure')
from PackageOwners import PackageOwners
+from RepoSupport import RepoSupport
-domail = 1
-mailsummary = 1
+domail = True
+mailsummary = True
+combinedreport = False
maxmailsize = 39*1024
@@ -163,103 +165,117 @@
-if len(sys.argv) != 3:
- print 'SYNTAX: %s <release> <logfile>' % sys.argv[0]
+if len(sys.argv) < 3:
+ print 'SYNTAX: %s <release> <logfile> [release] [logfile]...' % sys.argv[0]
sys.exit(22)
-release = sys.argv[1]
-logfilename = sys.argv[2]
-
-# This is ugly to get the report date from the report file name.
-datere = re.compile('-(?P<timestamp>[0-9]+-[0-9]+-[0-9]+).txt$')
-res = datere.search(logfilename)
-if res:
- datestring = res.group('timestamp')
-else:
- datestring = today
-
-subject += (' %s - %s' % (release,datestring))
-summail = ''
owners = PackageOwners()
-history = History(release)
-report = {} # map, report[email], mail message body to be sent to somebody
+summail = ''
pkgbyowner = {} # map, pkgbyowner[email], list of pkgids for all owner's broken packages
summary = {} # map of maps, summary[repoid][pkgid], unresolved deps line by line
-
-pkgre = re.compile('(?P<name>.*)-[^-]+-[^-]+$')
-inbody = False
-srcrpm = ''
-ownedby = ''
-createreport = False
-try:
- f = file( logfilename )
-except:
- print 'ERROR: could not open input file'
- sys.exit(5)
-
srcrpmdict = {}
-for line in f:
- if line.startswith('source rpm: '):
- w = line.rstrip().split(' ')
- if ( len(w) >= 3 ):
- srcrpm = w[2]
- inbody = True
- createreport = not history.Get(srcrpm)
- else:
- inbody = False
- continue
- elif inbody and line.startswith('package: '):
- w = line.rstrip().split(' ')
- repoid = w[5]
- # Only report broken packages in Fedora Extras.
- if ( repoid.find('extras') < 0 ):
- inbody = False
- continue
- res = pkgre.search(srcrpm) # try to get src.rpm "name"
- if not res: # only true for invalid input
- inbody = False
- continue
- name = res.group('name')
+args = sys.argv[1:]
+if len(args) > 2:
+ combinedreport = True
+while args:
+ (release,logfilename) = (args[0],args[1])
+ del args[0:2]
+
+ # This is ugly to get the report date from the report file name.
+ datere = re.compile('-(?P<timestamp>[0-9]+-[0-9]+-[0-9]+).txt$')
+ res = datere.search(logfilename)
+ if res:
+ datestring = res.group('timestamp')
+ else:
+ datestring = today
+
+ if not combinedreport:
+ mailsubject = subject + ' ' + release + ' - ' + datestring
+ summail = ''
+ pkgbyowner = {}
+ summary = {}
+ else:
+ mailsubject = subject + ' - ' + datestring
- ownedby = owners.GetOwner(name)
- if ownedby == '':
- ownedby = 'UNKNOWN OWNER'
- x = 'ERROR: %s not in owners.list\nERROR: source rpm is %s' % ( name, srcrpm )
- summail += x + '\n\n'
- # name-EVR.arch
- pkgid = w[1]+'-'+w[3]
- pkgid2 = w[1]+' - '+w[3]
-
- srcrpmdict[pkgid2] = srcrpm
- if not pkgbyowner.has_key(ownedby):
- pkgbyowner[ownedby] = [pkgid2]
- else:
- pkgbyowner[ownedby].append(pkgid2)
+ sumsubject = 'Summary - ' + mailsubject
+ history = History(release)
+ report = {}
+
+ pkgre = re.compile('(?P<name>.*)-[^-]+-[^-]+$')
+ inbody = False
+ srcrpm = ''
+ ownedby = ''
+ createreport = False
+ try:
+ f = file( logfilename )
+ except:
+ print 'ERROR: could not open input file'
+ sys.exit(5)
+ for line in f:
+ if line.startswith('source rpm: '):
+ w = line.rstrip().split(' ')
+ if ( len(w) >= 3 ):
+ srcrpm = w[2]
+ inbody = True
+ createreport = not history.Get(srcrpm)
+ else:
+ inbody = False
+ continue
+ elif inbody and line.startswith('package: '):
+ w = line.rstrip().split(' ')
+ repoid = w[5]
+ # Only report broken packages in Fedora Extras.
+ if ( repoid.find('extras') < 0 ):
+ inbody = False
+ continue
+
+ res = pkgre.search(srcrpm) # try to get src.rpm "name"
+ if not res: # only true for invalid input
+ inbody = False
+ continue
+ name = res.group('name')
+
+ ownedby = owners.GetOwner(name)
+ if ownedby == '':
+ ownedby = 'UNKNOWN OWNER'
+ x = 'ERROR: %s not in owners.list\nERROR: source rpm is %s' % ( name, srcrpm )
+ summail += x + '\n\n'
+ # name-EVR.arch
+ pkgid = w[1]+'-'+w[3]
+ pkgid2 = w[1]+' - '+w[3]
+
+ srcrpmdict[pkgid2] = srcrpm
+ if not pkgbyowner.has_key(ownedby):
+ pkgbyowner[ownedby] = [pkgid2]
+ else:
+ pkgbyowner[ownedby].append(pkgid2)
- if not summary.has_key(repoid):
- summary[repoid] = {}
- if not summary[repoid].has_key(pkgid):
- summary[repoid][pkgid] = []
-
- if inbody:
- # Construct report for package owner.
- if createreport:
- try:
- report[ownedby] += line
- except KeyError:
- report[ownedby] = line
- # Add to summary.
- if not line.isspace() and not line.startswith('package: ') and line.find('unresolved deps:') < 0:
- summary[repoid][pkgid].append( line.rstrip().lstrip() )
-
-history.Save()
-
-owners = pkgbyowner.keys()
-owners.sort()
-if len(owners):
+ if not summary.has_key(repoid):
+ summary[repoid] = {}
+ if not summary[repoid].has_key(pkgid):
+ summary[repoid][pkgid] = []
+
+ if inbody:
+ # Construct report for package owner.
+ if createreport:
+ try:
+ report[ownedby] += line
+ except KeyError:
+ report[ownedby] = line
+ # Add to summary.
+ if not line.isspace() and not line.startswith('package: ') and line.find('unresolved deps:') < 0:
+ summary[repoid][pkgid].append( line.rstrip().lstrip() )
+
+ history.Save()
+
+
+# Add list of broken packages sorted by owner to beginning of summary mail.
+ownerlist = pkgbyowner.keys()
+ownerlist.sort()
+if len(ownerlist):
summail += ('Summary of broken packages (by owner):\n') + '-'*70+'\n'
-for owner in owners:
+for owner in ownerlist:
summail += ' '+owner.replace('@',' AT ')+'\n'
pkgs = pkgbyowner[owner]
pkgs.sort()
@@ -269,13 +285,21 @@
summail += ' '+history.GetAge(srcrpmdict[pkg])
summail += '\n'
summail += '\n'
-if len(owners):
+if len(ownerlist):
summail += '\n'
-repos = summary.keys()
-repos.sort()
-for repoid in repos:
- summail += ('Summary of broken packages in %s:\n' % repoid) + '-'*70+'\n'
+# Create the sorted list of all repository ids.
+rs = RepoSupport()
+allrepoids = []
+for release in rs.AllReleases():
+ allrepoids += rs.GenerateRepoIds(release)
+
+# Add details about broken packages, sorted by repository id.
+repoids = summary.keys()
+for repoid in allrepoids:
+ if repoid not in repoids:
+ continue
+ summail += ('Broken packages in %s:\n' % repoid) + '-'*70+'\n'
pkgs = summary[repoid].keys()
pkgs.sort()
for pkg in pkgs:
@@ -283,6 +307,7 @@
summail += ( ' %s requires %s\n' % (pkg,dep) )
summail += '\n'
+# Mail init.
if domail:
srv = smtplib.SMTP( mailserver )
#srv.set_debuglevel(1)
@@ -303,13 +328,13 @@
mailtext = 'This is an automated mail created by an experimental script.\nYour following packages in the repository contain broken dependencies:\n\n'
mailtext += body
if domail and toaddr != 'UNKNOWN OWNER':
- mailsplit( srv, fromaddr, toaddr, replytoaddr, subject, mailtext )
+ mailsplit( srv, fromaddr, toaddr, replytoaddr, mailsubject, mailtext )
-if domail and mailsummary and (len(summail) or subject.find('development') >= 0): # avoid sending empty reports for stable/old branches
+if domail and mailsummary and (len(summail) or mailsubject.find('development') >= 0): # avoid sending empty reports for stable/old branches
if not len(summail):
summail = 'no broken packages'
toaddr = replytoaddr # mail summary to list
- mailsplit( srv, fromaddr, toaddr, '', ('Summary - %s' % subject), summail )
+ mailsplit( srv, fromaddr, toaddr, '', sumsubject, summail )
if domail:
srv.quit()
More information about the fedora-extras-commits
mailing list