Hi all,
On Mon, Apr 25, 2011 at 02:07, Kevin Ryde <[email protected]> wrote:
> Sandro Tosi <[email protected]> writes:
>>
>> First of all, can you still replicate it?
>
> Yes, reportbug on fvwm as in my 623286, with umm, today's python2.6 and
> python-apt, but may be behind on other packages.
Kevin, since you're able to replicate this bug, can you please run the
attached script like this:
$ python bts616455.py fvwm
(or for whatever package you can replicate it) and attach the full output here?
Thanks,
--
Sandro Tosi (aka morph, morpheus, matrixhasu)
My website: http://matrixhasu.altervista.org/
Me at Debian: http://wiki.debian.org/SandroTosi
import re
import sys
from reportbug.utils import get_dpkg_database
def _debug(regex, text, prefix):
m = regex.search(text)
if m:
print prefix, m.groups()
else:
print prefix, m
packages = [((sys.argv[1],), sys.argv[1])]
packinfo = get_dpkg_database()
pkgname = r'(?:[\S]+(?:$|,\s+))'
groupfor = {}
searchpkgs = []
searchbits = []
for (group, package) in packages:
groupfor[package] = group
escpkg = re.escape(package)
searchpkgs.append(escpkg)
searchbits = [
# Package regular expression
r'^(?P<hdr>Package):\s+('+'|'.join(searchpkgs)+')$',
# Provides regular expression
r'^(?P<hdr>Provides):\s+'+pkgname+r'*(?P<pkg>'+'|'.join(searchpkgs)+
r')(?:$|,\s+)'+pkgname+'*$'
]
groups = groupfor.values()
found = {}
searchobs = [re.compile(x, re.MULTILINE) for x in searchbits]
packob = re.compile('^Package: (?P<pkg>.*)$', re.MULTILINE)
statob = re.compile('^Status: (?P<stat>.*)$', re.MULTILINE)
versob = re.compile('^Version: (?P<vers>.*)$', re.MULTILINE)
descob = re.compile('^Description: (?P<desc>.*)$', re.MULTILINE)
ret = []
for p in packinfo:
for ob in searchobs:
m = ob.search(p)
if m:
print "\nfound paragraph:\n%s\n" % p
try:
_debug(packob, p, 'packop:')
pack = packob.search(p).group('pkg')
_debug(statob, p, 'statob:')
stat = statob.search(p).group('stat')
sinfo = stat.split()
print 'sinfo:', sinfo
stat = sinfo[0][0] + sinfo[2][0]
print 'stat:', stat
# check if the package is installed, and in that case, retrieve
# its information; if the first char is not 'i' (installed),
# then skip data retrieval
if stat[0] != 'i':
continue
if m.group('hdr') == 'Provides':
provides = m.group('pkg')
else:
provides = None
print 'provides:', provides
_debug(versob, p, 'versob:')
vers = versob.search(p).group('vers')
_debug(descob, p, 'descob:')
desc = descob.search(p).group('desc')
info = (pack,stat,vers,desc,provides)
ret.append(info)
print 'ret1:', ret
group = groupfor.get(pack)
print 'group:', group
if group:
for item in group:
found[item] = True
if provides not in found:
found[provides] = True
print 'found:', found
except:
pass
#if skip_notfound:
# print ret
print "ret pre group:", ret
for group in groups:
notfound = [x for x in group if x not in found]
if len(notfound) == len(group):
if group not in found:
ret.append( (' | '.join(group), 'pn', '<none>',
'(no description available)', None) )
print "ret post group:", ret
_______________________________________________
Reportbug-maint mailing list
[email protected]
http://lists.alioth.debian.org/mailman/listinfo/reportbug-maint