[Secure-testing-commits] r43748 - bin
Chris Lamb
lamby at moszumanska.debian.org
Wed Aug 3 15:37:25 UTC 2016
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)
More information about the Secure-testing-commits
mailing list