Gentoo Archives: gentoo-commits

From: Slava Bacherikov <slava@××××××××××××××.ua>
To: gentoo-commits@l.g.o
Subject: [gentoo-commits] proj/gentoo-packages:master commit in: gpackages/libs/package_info/generic_metadata/
Date: Mon, 30 Jul 2012 12:59:49
Message-Id: 1343578525.65bad05abe1e03cc14ce2ef1817ef9268a72d18b.bacher09@gentoo
1 commit: 65bad05abe1e03cc14ce2ef1817ef9268a72d18b
2 Author: Slava Bacherikov <slava <AT> bacher09 <DOT> org>
3 AuthorDate: Sun Jul 29 16:15:25 2012 +0000
4 Commit: Slava Bacherikov <slava <AT> bacherikov <DOT> org <DOT> ua>
5 CommitDate: Sun Jul 29 16:15:25 2012 +0000
6 URL: http://git.overlays.gentoo.org/gitweb/?p=proj/gentoo-packages.git;a=commit;h=65bad05a
7
8 Parse affected in glsa
9
10 ---
11 .../libs/package_info/generic_metadata/glsa.py | 53 ++++++++++++++++++++
12 1 files changed, 53 insertions(+), 0 deletions(-)
13
14 diff --git a/gpackages/libs/package_info/generic_metadata/glsa.py b/gpackages/libs/package_info/generic_metadata/glsa.py
15 index 570aeb8..be29ce5 100644
16 --- a/gpackages/libs/package_info/generic_metadata/glsa.py
17 +++ b/gpackages/libs/package_info/generic_metadata/glsa.py
18 @@ -35,6 +35,41 @@ class GLSAs(ToStrMixin):
19 def __unicode__(self):
20 return self.repo_path
21
22 +class VersionCheck(ToStrMixin):
23 + ranges = ('le', 'lt', 'eq', 'gt', 'ge', 'rlt', 'rle', 'rgt', 'rge')
24 + types = {'unaffected' : 0, 'vulnerable' : 1}
25 +
26 + def __init__(self, type, range, version):
27 + if type in self.types:
28 + self.type_num = self.types[type]
29 + else:
30 + raise ValueError
31 +
32 + self.range = range
33 + self.version = version
34 +
35 + def __unicode__(self):
36 + return 'test'
37 +
38 +class PackageMatch(ToStrMixin):
39 +
40 + def __init__(self, name, archs, auto = False, versions = []):
41 + self.name = name
42 + self.archs = archs
43 + self.auto = auto
44 + for item in versions:
45 + if not isinstance(item, VersionCheck):
46 + raise ValueError
47 + self.versions = versions
48 +
49 + def add_version(self, version):
50 + if not isinstance(version, VersionCheck):
51 + raise ValueError
52 + self.versions.append(version)
53 +
54 + def __unicode__(self):
55 + return self.name
56 +
57 class GLSA(ToStrMixin):
58
59 simple_attrs = ('synopsis', 'background', 'description',
60 @@ -82,6 +117,24 @@ class GLSA(ToStrMixin):
61 else:
62 self.access = None
63
64 + self._set_affected(root)
65 +
66 + def _set_affected(self, root):
67 + affected_xml = root.find('affected')
68 + packages = []
69 + for package_xml in affected_xml.iterfind('package'):
70 + name = package_xml.attrib.get('name')
71 + archs = package_xml.attrib.get('arch')
72 + auto = package_xml.attrib.get('auto')
73 + package = PackageMatch(name, archs, auto)
74 + for item in package_xml.iterchildren():
75 + v = item.text
76 + type = item.tag
77 + range = item.attrib.get('range')
78 + o = VersionCheck(type, range, v)
79 + package.add_version(o)
80 + packages.append(package)
81 + self.affected = packages
82
83 def _set_references(self, root):
84 references = []