summaryrefslogtreecommitdiffstats
path: root/bin/lts-missing-uploads.py
diff options
context:
space:
mode:
authorChris Lamb <lamby@debian.org>2016-08-03 15:37:25 +0000
committerChris Lamb <lamby@debian.org>2016-08-03 15:37:25 +0000
commit22f5f99c50a3c77c0d34ac7e326b915c2f6f7896 (patch)
tree96d41653eb30cdb8fdf3f33d6623777ca0d7727e /bin/lts-missing-uploads.py
parentbab8f94c25c84cea177fb5e96afac82e4cf42d37 (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-xbin/lts-missing-uploads.py38
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)

© 2014-2024 Faster IT GmbH | imprint | privacy policy