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