Author: lamby Date: 2016-08-03 15:37:25 +0000 (Wed, 03 Aug 2016) New Revision: 43748
Modified: bin/lts-missing-uploads.py Log: bin/lts-missing-uploads: Get sources from archive, not UDD Modified: bin/lts-missing-uploads.py =================================================================== --- bin/lts-missing-uploads.py 2016-08-03 15:15:52 UTC (rev 43747) +++ bin/lts-missing-uploads.py 2016-08-03 15:37:25 UTC (rev 43748) @@ -17,16 +17,20 @@ import re import sys +import gzip import datetime import requests import subprocess import dateutil.relativedelta +from debian.deb822 import Sources + +SOURCES = 'http://security.debian.org/dists/wheezy/updates/main/source/Sources.gz' + re_line = re.compile( r'(?P<suffix>msg\d+.html).*\[DLA (?P<dla>[\d-]+)\] (?P<source>[^\s]+) security update.*' ) re_version = re.compile(r'^Version.*: (?P<version>.*)') -re_rmadison = re.compile(r'^\s*(?P<source>[^\s]+)\s+\|\s+(?P<version>[^\s]+)\s+\|\s+(?P<suite>[^\s]+)') session = requests.Session() @@ -69,38 +73,34 @@ if not dlas: return 0 - for _, x in sorted(udd(dlas.keys()).items()): - dla = dlas[x['source']] + sources = get_sources() + for source, dla in sorted(dlas.items()): + version = sources[source] + if subprocess.call(( - 'dpkg', '--compare-versions', dla['version'], 'gt', x['version'], + 'dpkg', '--compare-versions', dla['version'], 'gt', version, )) == 0: - warn("{}: DLA-{} announced version {} but {} has {} <{}>".format( - dla['source'], + warn("{}: DLA-{} announced version {} but LTS has {} <{}>".format( + source, dla['dla'], dla['version'], - x['suite'], - x['version'], + version, dla['url'], )) return 0 -def udd(sources): - result = {} +def get_sources(): + info("Downloading Sources from {} ...", SOURCES) - info("Querying UDD for {} packages ...", len(sources)) + response = requests.get(SOURCES) + response.raise_for_status() - output = subprocess.check_output( - ('rmadison', '--url=udd', '--suite=wheezy-security') + tuple(sources) - ) + val = gzip.decompress(response.content).decode('utf-8') - # Reverse to prefer later versions - for x in reversed(parse(output, re_rmadison)): - result.setdefault(x['source'], x) + return {x['Package']: x['Version'] for x in Sources.iter_paragraphs(val)} - return result - def warn(msg, *args, **kwargs): print("W: " + msg.format(*args, **kwargs), file=sys.stderr) _______________________________________________ Secure-testing-commits mailing list Secure-testing-commits@lists.alioth.debian.org http://lists.alioth.debian.org/cgi-bin/mailman/listinfo/secure-testing-commits