extras-repoclosure rc-report.py,1.61,1.62
Michael Schwendt
mschwendt at fedoraproject.org
Tue Jun 9 12:16:44 UTC 2009
- Previous message (by thread): extras-repoclosure rc-modified,1.26,1.27
- Next message (by thread): rpms/task/F-11 .cvsignore, 1.2, 1.3 import.log, 1.1, 1.2 sources, 1.2, 1.3 task.spec, 1.1, 1.2
- Messages sorted by:
[ date ]
[ thread ]
[ subject ]
[ author ]
Author: mschwendt
Update of /cvs/fedora/extras-repoclosure
In directory cvs1.fedora.phx.redhat.com:/tmp/cvs-serv10539
Modified Files:
rc-report.py
Log Message:
* add --fedora option to use Fedora Project package owner address
instead of FAS dump
* parse/evaluate "related pkgs:" names in updated rc-modified reports
and mail related package owners
* disable the "packages by owner" summary if --fedora is used (as owner
and co-owners receive their private reports via the same alias addr)
Index: rc-report.py
===================================================================
RCS file: /cvs/fedora/extras-repoclosure/rc-report.py,v
retrieving revision 1.61
retrieving revision 1.62
diff -u -r1.61 -r1.62
--- rc-report.py 15 Dec 2008 20:13:44 -0000 1.61
+++ rc-report.py 9 Jun 2009 12:16:43 -0000 1.62
@@ -38,6 +38,8 @@
self.srpm_name = None
self.owner = ''
self.coowners = []
+ self.relatedpkgs = []
+ self.relatedowners = []
# disabled/stripped feature
self.mail = True # whether to notify owner by mail
# disabled/stripped feature
@@ -64,27 +66,45 @@
return False
-def makeOwners(brokendeps):
- owners = PackageOwners()
- try:
- if FAS['ownerslist']:
- gotowners = owners.FromURL(repoid=FAS['project'],url=FAS['ownerslist'],pkgdb=False)
+def makeOwners(brokendeps,fedora=False):
+ if not fedora:
+ owners = PackageOwners()
+ try:
+ if FAS['ownerslist']:
+ gotowners = owners.FromURL(repoid=FAS['project'],url=FAS['ownerslist'],pkgdb=False)
+ else:
+ gotowners = owners.FromURL(repoid=FAS['project'],username=FAS['user'],password=FAS['passwd'])
+ if not gotowners:
+ raise IOError('ERROR: Could not retrieve package owner data.')
+ except IOError, e:
+ print e
+ sys.exit(1)
+
+ def _getowner(p):
+ if fedora:
+ return '%s-owner at fedoraproject.org' % p.lower()
else:
- gotowners = owners.FromURL(repoid=FAS['project'],username=FAS['user'],password=FAS['passwd'])
- if not gotowners:
- raise IOError('ERROR: Could not retrieve package owner data.')
- except IOError, e:
- print e
- sys.exit(1)
+ return owners.GetOwner(p)
+
+ def _getcoowners(p):
+ if fedora:
+ return []
+ else:
+ return owners.GetCoOwnerList(p)
+
for b in brokendeps:
- toaddr = owners.GetOwner(b.srpm_name)
+ toaddr = _getowner(b.srpm_name)
if toaddr == '':
toaddr = 'UNKNOWN OWNER'
e = 'ERROR: "%s" not in owners.list!\n\n' % b.srpm_name
if e not in errcache:
errcache.append(e)
b.owner = toaddr
- b.coowners = owners.GetCoOwnerList(b.srpm_name)
+ b.coowners = _getcoowners(b.srpm_name)
+ b.relatedowners = []
+ for n in b.relatedpkgs:
+ b.relatedowners.append( _getowner(n) )
+ b.relatedowners += _getcoowners(n)
def mail(smtp, fromaddr, toaddrs, replytoaddr, subject, body):
@@ -196,6 +216,8 @@
help="repository warnings to include (needsign, testing)")
parser.add_option("", "--noowners", default=False, action="store_true",
help="don't fetch package owner data from FAS")
+parser.add_option("", "--fedora", default=False, action="store_true",
+ help="use Fedora Project pkgname-owner addresses instead of FAS")
(opts, args) = parser.parse_args()
loadConfigFile(opts.config)
@@ -216,7 +238,7 @@
f = file( logfilename )
pkgre = re.compile('(?P<name>.*)-[^-]+-[^-]+$')
- inbody = False
+ inbody = 0
srcrpm = ''
for line in f:
if line.startswith('source rpm: '):
@@ -224,13 +246,13 @@
srcrpm = w[2]
res = pkgre.search( srcrpm ) # try to get src.rpm "name"
if not res: # only true for invalid input
- inbody = False
+ inbody = 0
else:
srpm_name = res.group('name')
- inbody = True
continue
- elif inbody and line.startswith('package: '):
+ elif line.startswith('package: '):
+ inbody = 1
b = BrokenDep()
w = line.rstrip().split(' ')
if len(w)==6:
@@ -245,9 +267,18 @@
b.name = rpmUtils.miscutils.splitFilename(b.pkgid)[0]
brokendeps.append(b)
- if inbody:
- # Copy report per broken package.
- b.report.append( line.rstrip() )
+ if inbody == 1:
+ if line.startswith('related pkgs:'):
+ inbody = 2
+ continue
+ else:
+ # Copy report per broken package.
+ b.report.append( line.rstrip() )
+
+ elif inbody == 2:
+ n = line.lstrip().rstrip()
+ if len(n) and n!=srpm_name:
+ b.relatedpkgs.append(n)
def bdSortBySrcName(a,b):
@@ -283,7 +314,7 @@
# Fill in package owners.
if not opts.noowners:
- makeOwners(brokendeps)
+ makeOwners(brokendeps,opts.fedora)
# Build full mail report per owner. Use a flag for new breakage.
reports = {} # map of lists [new,body] - a flag and the full report for a package owner
@@ -300,6 +331,10 @@
for toaddr in b.coowners:
reports.setdefault(toaddr,[None,''])
reports[toaddr][1] += r
+ # Also build mails for related pkg owners.
+ for toaddr in b.relatedowners:
+ reports.setdefault(toaddr,[None,''])
+ reports[toaddr][1] += r
sep = '='*70+'\n'
@@ -347,7 +382,7 @@
return x
return x[0:dpos]+' '+x[dpos+1:]
-if not opts.noowners and len(brokendeps):
+if not opts.noowners and not opts.fedora and len(brokendeps):
summail += ('Summary of broken packages (by primary owner):\n')
brokendeps.sort(bdSortByOwnerAndName)
seenbefore = []
@@ -399,7 +434,7 @@
# Mail reports to owners.
for toaddr,(new,body) in reports.iteritems():
# Send mail to every package owner with broken package dependencies.
- mailtext = 'Your following packages in the repository suffer from broken dependencies:\n\n'
+ mailtext = 'The following packages in the repository suffer from broken dependencies:\n\n'
mailtext += giveNeedsignMsg()
mailtext += giveTestingMsg()
mailtext += body
- Previous message (by thread): extras-repoclosure rc-modified,1.26,1.27
- Next message (by thread): rpms/task/F-11 .cvsignore, 1.2, 1.3 import.log, 1.1, 1.2 sources, 1.2, 1.3 task.spec, 1.1, 1.2
- Messages sorted by:
[ date ]
[ thread ]
[ subject ]
[ author ]
More information about the fedora-extras-commits
mailing list