diff options
author | Chris Lamb <lamby@debian.org> | 2016-08-03 15:37:25 +0000 |
---|---|---|
committer | Chris Lamb <lamby@debian.org> | 2016-08-03 15:37:25 +0000 |
commit | 22f5f99c50a3c77c0d34ac7e326b915c2f6f7896 (patch) | |
tree | 96d41653eb30cdb8fdf3f33d6623777ca0d7727e /bin/lts-missing-uploads.py | |
parent | bab8f94c25c84cea177fb5e96afac82e4cf42d37 (diff) |
bin/lts-missing-uploads: Get sources from archive, not UDD
git-svn-id: svn+ssh://svn.debian.org/svn/secure-testing@43748 e39458fd-73e7-0310-bf30-c45bca0a0e42
Diffstat (limited to 'bin/lts-missing-uploads.py')
-rwxr-xr-x | bin/lts-missing-uploads.py | 38 |
1 files changed, 19 insertions, 19 deletions
diff --git a/bin/lts-missing-uploads.py b/bin/lts-missing-uploads.py index 3ff67d489d..c6f6156594 100755 --- a/bin/lts-missing-uploads.py +++ b/bin/lts-missing-uploads.py @@ -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,37 +73,33 @@ def main(*args): 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) - ) - - # Reverse to prefer later versions - for x in reversed(parse(output, re_rmadison)): - result.setdefault(x['source'], x) + val = gzip.decompress(response.content).decode('utf-8') - return result + return {x['Package']: x['Version'] for x in Sources.iter_paragraphs(val)} def warn(msg, *args, **kwargs): print("W: " + msg.format(*args, **kwargs), file=sys.stderr) |