commit:     75c790503028fd1d609b56c55865a38ae6a6e392
Author:     Paul Varner <fuzzyray <AT> gentoo <DOT> org>
AuthorDate: Mon Jun  6 21:14:27 2016 +0000
Commit:     Zac Medico <zmedico <AT> gentoo <DOT> org>
CommitDate: Wed Jan 18 16:14:31 2017 +0000
URL:        https://gitweb.gentoo.org/proj/portage.git/commit/?id=75c79050

glsa-check: Apply list only affected versions patch from bug 400763

Author: Roland Hopferwieser <gentoo <AT> int0x80.at>
X-Gentoo-bug: 400763
X-Gentoo-bug-url: https://bugs.gentoo.org/show_bug.cgi?id=400763

 bin/glsa-check | 15 +++++++++++----
 1 file changed, 11 insertions(+), 4 deletions(-)

diff --git a/bin/glsa-check b/bin/glsa-check
index 54a7ae1..afc8eb8 100755
--- a/bin/glsa-check
+++ b/bin/glsa-check
@@ -7,6 +7,8 @@ from __future__ import print_function
 import argparse
 import sys
 import codecs
+from functools import reduce
+import operator
 
 from os import path as osp
 if osp.isfile(osp.join(osp.dirname(osp.dirname(osp.realpath(__file__))), 
".portage_not_installed")):
@@ -14,6 +16,7 @@ if 
osp.isfile(osp.join(osp.dirname(osp.dirname(osp.realpath(__file__))), ".porta
 import portage
 portage._internal_caller = True
 from portage import os
+from portage.glsa import match
 from portage.output import green, red, nocolor, white
 
 __program__ = "glsa-check"
@@ -185,11 +188,15 @@ def summarylist(myglsalist, fd1=sys.stdout, 
fd2=sys.stderr, encoding="utf-8"):
                        if len(myglsa.packages) > 3:
                                fd1.write("... ")
                else:
-                       for pkg in myglsa.packages:
-                               mylist = vardb.match(pkg)
+                       for cpv in myglsa.packages.keys():
+                               pkg = myglsa.packages[cpv]
+                               for path in pkg:
+                                       v_installed = reduce(operator.add, 
[match(v, vardb) for v in path["vul_atoms"]], [])
+                                       u_installed = reduce(operator.add, 
[match(u, vardb) for u in path["unaff_atoms"]], [])
+                               mylist = 
sorted(set(v_installed).difference(set(u_installed)))
                                if len(mylist) > 0:
-                                       pkg = color(" ".join(mylist))
-                               fd1.write(" " + pkg + " ")
+                                       cpv = color(" ".join(mylist))
+                               fd1.write(" " + cpv + " ")
 
                fd1.write(")")
                if list_cve:

Reply via email to