[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