Gentoo Archives: gentoo-commits

From: Brian Dolbec <dolsen@g.o>
To: gentoo-commits@l.g.o
Subject: [gentoo-commits] proj/portage:repoman commit in: pym/repoman/modules/scan/metadata/
Date: Tue, 03 May 2016 09:33:46
Message-Id: 1462257227.4ef6bc69a3fe62d980c285ac0b9bb5bbadeefe9b.dolsen@gentoo
1 commit: 4ef6bc69a3fe62d980c285ac0b9bb5bbadeefe9b
2 Author: Brian Dolbec <dolsen <AT> gentoo <DOT> org>
3 AuthorDate: Tue May 3 06:33:47 2016 +0000
4 Commit: Brian Dolbec <dolsen <AT> gentoo <DOT> org>
5 CommitDate: Tue May 3 06:33:47 2016 +0000
6 URL: https://gitweb.gentoo.org/proj/portage.git/commit/?id=4ef6bc69
7
8 repoman/modules/.../pkgmetadata.py: Early return on metadata parse errors
9
10 pym/repoman/modules/scan/metadata/pkgmetadata.py | 148 ++++++++++++-----------
11 1 file changed, 75 insertions(+), 73 deletions(-)
12
13 diff --git a/pym/repoman/modules/scan/metadata/pkgmetadata.py b/pym/repoman/modules/scan/metadata/pkgmetadata.py
14 index 3c1c2d0..3b48b8e 100644
15 --- a/pym/repoman/modules/scan/metadata/pkgmetadata.py
16 +++ b/pym/repoman/modules/scan/metadata/pkgmetadata.py
17 @@ -102,89 +102,91 @@ class PkgMetadata(ScanBase, USEFlagChecks):
18 metadata_bad = True
19 self.qatracker.add_error("metadata.bad", "%s/metadata.xml: %s" % (xpkg, e))
20 del e
21 + self.muselist = frozenset(self.musedict)
22 + return False
23 +
24 + if not hasattr(xml_parser, 'parser') or \
25 + sys.hexversion < 0x2070000 or \
26 + (sys.hexversion > 0x3000000 and sys.hexversion < 0x3020000):
27 + # doctype is not parsed with python 2.6 or 3.1
28 + pass
29 else:
30 - if not hasattr(xml_parser, 'parser') or \
31 - sys.hexversion < 0x2070000 or \
32 - (sys.hexversion > 0x3000000 and sys.hexversion < 0x3020000):
33 - # doctype is not parsed with python 2.6 or 3.1
34 - pass
35 + if "XML_DECLARATION" not in xml_info:
36 + self.qatracker.add_error(
37 + "metadata.bad", "%s/metadata.xml: "
38 + "xml declaration is missing on first line, "
39 + "should be '%s'" % (xpkg, metadata_xml_declaration))
40 else:
41 - if "XML_DECLARATION" not in xml_info:
42 + xml_version, xml_encoding, xml_standalone = \
43 + xml_info["XML_DECLARATION"]
44 + if xml_encoding is None or \
45 + xml_encoding.upper() != metadata_xml_encoding:
46 + if xml_encoding is None:
47 + encoding_problem = "but it is undefined"
48 + else:
49 + encoding_problem = "not '%s'" % xml_encoding
50 self.qatracker.add_error(
51 "metadata.bad", "%s/metadata.xml: "
52 - "xml declaration is missing on first line, "
53 - "should be '%s'" % (xpkg, metadata_xml_declaration))
54 - else:
55 - xml_version, xml_encoding, xml_standalone = \
56 - xml_info["XML_DECLARATION"]
57 - if xml_encoding is None or \
58 - xml_encoding.upper() != metadata_xml_encoding:
59 - if xml_encoding is None:
60 - encoding_problem = "but it is undefined"
61 - else:
62 - encoding_problem = "not '%s'" % xml_encoding
63 - self.qatracker.add_error(
64 - "metadata.bad", "%s/metadata.xml: "
65 - "xml declaration encoding should be '%s', %s" %
66 - (xpkg, metadata_xml_encoding, encoding_problem))
67 + "xml declaration encoding should be '%s', %s" %
68 + (xpkg, metadata_xml_encoding, encoding_problem))
69
70 - if "DOCTYPE" not in xml_info:
71 - metadata_bad = True
72 - self.qatracker.add_error(
73 - "metadata.bad",
74 - "%s/metadata.xml: %s" % (xpkg, "DOCTYPE is missing"))
75 - else:
76 - doctype_name, doctype_system, doctype_pubid = \
77 - xml_info["DOCTYPE"]
78 - if doctype_system != metadata_dtd_uri:
79 - if doctype_system is None:
80 - system_problem = "but it is undefined"
81 - else:
82 - system_problem = "not '%s'" % doctype_system
83 - self.qatracker.add_error(
84 - "metadata.bad", "%s/metadata.xml: "
85 - "DOCTYPE: SYSTEM should refer to '%s', %s" %
86 - (xpkg, metadata_dtd_uri, system_problem))
87 -
88 - if doctype_name != metadata_doctype_name:
89 - self.qatracker.add_error(
90 - "metadata.bad", "%s/metadata.xml: "
91 - "DOCTYPE: name should be '%s', not '%s'" %
92 - (xpkg, metadata_doctype_name, doctype_name))
93 -
94 - # load USE flags from metadata.xml
95 - try:
96 - self.musedict = parse_metadata_use(_metadata_xml)
97 - except portage.exception.ParseError as e:
98 + if "DOCTYPE" not in xml_info:
99 metadata_bad = True
100 self.qatracker.add_error(
101 - "metadata.bad", "%s/metadata.xml: %s" % (xpkg, e))
102 + "metadata.bad",
103 + "%s/metadata.xml: %s" % (xpkg, "DOCTYPE is missing"))
104 else:
105 - for atom in chain(*self.musedict.values()):
106 - if atom is None:
107 - continue
108 - try:
109 - atom = Atom(atom)
110 - except InvalidAtom as e:
111 + doctype_name, doctype_system, doctype_pubid = \
112 + xml_info["DOCTYPE"]
113 + if doctype_system != metadata_dtd_uri:
114 + if doctype_system is None:
115 + system_problem = "but it is undefined"
116 + else:
117 + system_problem = "not '%s'" % doctype_system
118 + self.qatracker.add_error(
119 + "metadata.bad", "%s/metadata.xml: "
120 + "DOCTYPE: SYSTEM should refer to '%s', %s" %
121 + (xpkg, metadata_dtd_uri, system_problem))
122 +
123 + if doctype_name != metadata_doctype_name:
124 + self.qatracker.add_error(
125 + "metadata.bad", "%s/metadata.xml: "
126 + "DOCTYPE: name should be '%s', not '%s'" %
127 + (xpkg, metadata_doctype_name, doctype_name))
128 +
129 + # load USE flags from metadata.xml
130 + try:
131 + self.musedict = parse_metadata_use(_metadata_xml)
132 + except portage.exception.ParseError as e:
133 + metadata_bad = True
134 + self.qatracker.add_error(
135 + "metadata.bad", "%s/metadata.xml: %s" % (xpkg, e))
136 + else:
137 + for atom in chain(*self.musedict.values()):
138 + if atom is None:
139 + continue
140 + try:
141 + atom = Atom(atom)
142 + except InvalidAtom as e:
143 + self.qatracker.add_error(
144 + "metadata.bad",
145 + "%s/metadata.xml: Invalid atom: %s" % (xpkg, e))
146 + else:
147 + if atom.cp != xpkg:
148 self.qatracker.add_error(
149 "metadata.bad",
150 - "%s/metadata.xml: Invalid atom: %s" % (xpkg, e))
151 - else:
152 - if atom.cp != xpkg:
153 - self.qatracker.add_error(
154 - "metadata.bad",
155 - "%s/metadata.xml: Atom contains "
156 - "unexpected cat/pn: %s" % (xpkg, atom))
157 -
158 - # Run other metadata.xml checkers
159 - try:
160 - check_metadata(_metadata_xml, get_herd_base(
161 - self.repoman_settings))
162 - except (UnknownHerdsError, ) as e:
163 - metadata_bad = True
164 - self.qatracker.add_error(
165 - "metadata.bad", "%s/metadata.xml: %s" % (xpkg, e))
166 - del e
167 + "%s/metadata.xml: Atom contains "
168 + "unexpected cat/pn: %s" % (xpkg, atom))
169 +
170 + # Run other metadata.xml checkers
171 + try:
172 + check_metadata(_metadata_xml, get_herd_base(
173 + self.repoman_settings))
174 + except (UnknownHerdsError, ) as e:
175 + metadata_bad = True
176 + self.qatracker.add_error(
177 + "metadata.bad", "%s/metadata.xml: %s" % (xpkg, e))
178 + del e
179
180 # Only carry out if in package directory or check forced
181 if not metadata_bad: