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:47
Message-Id: 1462256753.e66ee7b35405a650c517939e503443948b660ca9.dolsen@gentoo
1 commit: e66ee7b35405a650c517939e503443948b660ca9
2 Author: Dirkjan Ochtman <dirkjan <AT> ochtman <DOT> nl>
3 AuthorDate: Mon Jan 25 18:33:32 2016 +0000
4 Commit: Brian Dolbec <dolsen <AT> gentoo <DOT> org>
5 CommitDate: Tue May 3 06:25:53 2016 +0000
6 URL: https://gitweb.gentoo.org/proj/portage.git/commit/?id=e66ee7b3
7
8 repoman/modules/.../pkgmetadata.py: Early return in metadata check code for readability
9
10 pym/repoman/modules/scan/metadata/pkgmetadata.py | 190 ++++++++++++-----------
11 1 file changed, 96 insertions(+), 94 deletions(-)
12
13 diff --git a/pym/repoman/modules/scan/metadata/pkgmetadata.py b/pym/repoman/modules/scan/metadata/pkgmetadata.py
14 index 5c6452a..3c1c2d0 100644
15 --- a/pym/repoman/modules/scan/metadata/pkgmetadata.py
16 +++ b/pym/repoman/modules/scan/metadata/pkgmetadata.py
17 @@ -83,112 +83,114 @@ class PkgMetadata(ScanBase, USEFlagChecks):
18 # metadata.xml file check
19 if "metadata.xml" not in checkdirlist:
20 self.qatracker.add_error("metadata.missing", xpkg + "/metadata.xml")
21 + self.muselist = frozenset(self.musedict)
22 + return False
23 +
24 # metadata.xml parse check
25 + metadata_bad = False
26 + xml_info = {}
27 + xml_parser = _XMLParser(xml_info, target=_MetadataTreeBuilder())
28 +
29 + # read metadata.xml into memory
30 + try:
31 + _metadata_xml = xml.etree.ElementTree.parse(
32 + _unicode_encode(
33 + os.path.join(checkdir, "metadata.xml"),
34 + encoding=_encodings['fs'], errors='strict'),
35 + parser=xml_parser)
36 + except (ExpatError, SyntaxError, EnvironmentError) as e:
37 + metadata_bad = True
38 + self.qatracker.add_error("metadata.bad", "%s/metadata.xml: %s" % (xpkg, e))
39 + del e
40 else:
41 - metadata_bad = False
42 - xml_info = {}
43 - xml_parser = _XMLParser(xml_info, target=_MetadataTreeBuilder())
44 -
45 - # read metadata.xml into memory
46 - try:
47 - _metadata_xml = xml.etree.ElementTree.parse(
48 - _unicode_encode(
49 - os.path.join(checkdir, "metadata.xml"),
50 - encoding=_encodings['fs'], errors='strict'),
51 - parser=xml_parser)
52 - except (ExpatError, SyntaxError, EnvironmentError) as e:
53 - metadata_bad = True
54 - self.qatracker.add_error("metadata.bad", "%s/metadata.xml: %s" % (xpkg, e))
55 - del e
56 + if not hasattr(xml_parser, 'parser') or \
57 + sys.hexversion < 0x2070000 or \
58 + (sys.hexversion > 0x3000000 and sys.hexversion < 0x3020000):
59 + # doctype is not parsed with python 2.6 or 3.1
60 + pass
61 else:
62 - if not hasattr(xml_parser, 'parser') or \
63 - sys.hexversion < 0x2070000 or \
64 - (sys.hexversion > 0x3000000 and sys.hexversion < 0x3020000):
65 - # doctype is not parsed with python 2.6 or 3.1
66 - pass
67 + if "XML_DECLARATION" not in xml_info:
68 + self.qatracker.add_error(
69 + "metadata.bad", "%s/metadata.xml: "
70 + "xml declaration is missing on first line, "
71 + "should be '%s'" % (xpkg, metadata_xml_declaration))
72 else:
73 - if "XML_DECLARATION" not in xml_info:
74 + xml_version, xml_encoding, xml_standalone = \
75 + xml_info["XML_DECLARATION"]
76 + if xml_encoding is None or \
77 + xml_encoding.upper() != metadata_xml_encoding:
78 + if xml_encoding is None:
79 + encoding_problem = "but it is undefined"
80 + else:
81 + encoding_problem = "not '%s'" % xml_encoding
82 self.qatracker.add_error(
83 "metadata.bad", "%s/metadata.xml: "
84 - "xml declaration is missing on first line, "
85 - "should be '%s'" % (xpkg, metadata_xml_declaration))
86 - else:
87 - xml_version, xml_encoding, xml_standalone = \
88 - xml_info["XML_DECLARATION"]
89 - if xml_encoding is None or \
90 - xml_encoding.upper() != metadata_xml_encoding:
91 - if xml_encoding is None:
92 - encoding_problem = "but it is undefined"
93 - else:
94 - encoding_problem = "not '%s'" % xml_encoding
95 - self.qatracker.add_error(
96 - "metadata.bad", "%s/metadata.xml: "
97 - "xml declaration encoding should be '%s', %s" %
98 - (xpkg, metadata_xml_encoding, encoding_problem))
99 -
100 - if "DOCTYPE" not in xml_info:
101 - metadata_bad = True
102 - self.qatracker.add_error(
103 - "metadata.bad",
104 - "%s/metadata.xml: %s" % (xpkg, "DOCTYPE is missing"))
105 - else:
106 - doctype_name, doctype_system, doctype_pubid = \
107 - xml_info["DOCTYPE"]
108 - if doctype_system != metadata_dtd_uri:
109 - if doctype_system is None:
110 - system_problem = "but it is undefined"
111 - else:
112 - system_problem = "not '%s'" % doctype_system
113 - self.qatracker.add_error(
114 - "metadata.bad", "%s/metadata.xml: "
115 - "DOCTYPE: SYSTEM should refer to '%s', %s" %
116 - (xpkg, metadata_dtd_uri, system_problem))
117 + "xml declaration encoding should be '%s', %s" %
118 + (xpkg, metadata_xml_encoding, encoding_problem))
119
120 - if doctype_name != metadata_doctype_name:
121 - self.qatracker.add_error(
122 - "metadata.bad", "%s/metadata.xml: "
123 - "DOCTYPE: name should be '%s', not '%s'" %
124 - (xpkg, metadata_doctype_name, doctype_name))
125 -
126 - # load USE flags from metadata.xml
127 - try:
128 - self.musedict = parse_metadata_use(_metadata_xml)
129 - except portage.exception.ParseError as e:
130 + if "DOCTYPE" not in xml_info:
131 metadata_bad = True
132 self.qatracker.add_error(
133 - "metadata.bad", "%s/metadata.xml: %s" % (xpkg, e))
134 + "metadata.bad",
135 + "%s/metadata.xml: %s" % (xpkg, "DOCTYPE is missing"))
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 + doctype_name, doctype_system, doctype_pubid = \
144 + xml_info["DOCTYPE"]
145 + if doctype_system != metadata_dtd_uri:
146 + if doctype_system is None:
147 + system_problem = "but it is undefined"
148 + else:
149 + system_problem = "not '%s'" % doctype_system
150 + self.qatracker.add_error(
151 + "metadata.bad", "%s/metadata.xml: "
152 + "DOCTYPE: SYSTEM should refer to '%s', %s" %
153 + (xpkg, metadata_dtd_uri, system_problem))
154 +
155 + if doctype_name != metadata_doctype_name:
156 + self.qatracker.add_error(
157 + "metadata.bad", "%s/metadata.xml: "
158 + "DOCTYPE: name should be '%s', not '%s'" %
159 + (xpkg, metadata_doctype_name, doctype_name))
160 +
161 + # load USE flags from metadata.xml
162 + try:
163 + self.musedict = parse_metadata_use(_metadata_xml)
164 + except portage.exception.ParseError as e:
165 + metadata_bad = True
166 + self.qatracker.add_error(
167 + "metadata.bad", "%s/metadata.xml: %s" % (xpkg, e))
168 + else:
169 + for atom in chain(*self.musedict.values()):
170 + if atom is None:
171 + continue
172 + try:
173 + atom = Atom(atom)
174 + except InvalidAtom as e:
175 + self.qatracker.add_error(
176 + "metadata.bad",
177 + "%s/metadata.xml: Invalid atom: %s" % (xpkg, e))
178 + else:
179 + if atom.cp != xpkg:
180 self.qatracker.add_error(
181 "metadata.bad",
182 - "%s/metadata.xml: Invalid atom: %s" % (xpkg, e))
183 - else:
184 - if atom.cp != xpkg:
185 - self.qatracker.add_error(
186 - "metadata.bad",
187 - "%s/metadata.xml: Atom contains "
188 - "unexpected cat/pn: %s" % (xpkg, atom))
189 -
190 - # Run other metadata.xml checkers
191 - try:
192 - check_metadata(_metadata_xml, get_herd_base(
193 - self.repoman_settings))
194 - except (UnknownHerdsError, ) as e:
195 - metadata_bad = True
196 - self.qatracker.add_error(
197 - "metadata.bad", "%s/metadata.xml: %s" % (xpkg, e))
198 - del e
199 -
200 - # Only carry out if in package directory or check forced
201 - if not metadata_bad:
202 - if not self.xmllint.check(checkdir, repolevel):
203 - self.qatracker.add_error("metadata.bad", xpkg + "/metadata.xml")
204 - del metadata_bad
205 + "%s/metadata.xml: Atom contains "
206 + "unexpected cat/pn: %s" % (xpkg, atom))
207 +
208 + # Run other metadata.xml checkers
209 + try:
210 + check_metadata(_metadata_xml, get_herd_base(
211 + self.repoman_settings))
212 + except (UnknownHerdsError, ) as e:
213 + metadata_bad = True
214 + self.qatracker.add_error(
215 + "metadata.bad", "%s/metadata.xml: %s" % (xpkg, e))
216 + del e
217 +
218 + # Only carry out if in package directory or check forced
219 + if not metadata_bad:
220 + if not self.xmllint.check(checkdir, repolevel):
221 + self.qatracker.add_error("metadata.bad", xpkg + "/metadata.xml")
222 + del metadata_bad
223 self.muselist = frozenset(self.musedict)
224 return False