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/, pym/repoman/
Date: Tue, 03 May 2016 09:33:59
Message-Id: 1462258464.fdb0fd395a582996cf88df2819bf246a2ddcf914.dolsen@gentoo
1 commit: fdb0fd395a582996cf88df2819bf246a2ddcf914
2 Author: Dirkjan Ochtman <dirkjan <AT> ochtman <DOT> nl>
3 AuthorDate: Mon Jan 25 19:40:29 2016 +0000
4 Commit: Brian Dolbec <dolsen <AT> gentoo <DOT> org>
5 CommitDate: Tue May 3 06:54:24 2016 +0000
6 URL: https://gitweb.gentoo.org/proj/portage.git/commit/?id=fdb0fd39
7
8 repoman: Move parse_metadata_use function to the pkgmetadata.py
9
10 pym/repoman/metadata.py | 50 -----------------------
11 pym/repoman/modules/scan/metadata/pkgmetadata.py | 52 +++++++++++++++++++++++-
12 2 files changed, 51 insertions(+), 51 deletions(-)
13
14 diff --git a/pym/repoman/metadata.py b/pym/repoman/metadata.py
15 index a980184..7c64c8e 100644
16 --- a/pym/repoman/metadata.py
17 +++ b/pym/repoman/metadata.py
18 @@ -17,7 +17,6 @@ except ImportError:
19 # import our initialized portage instance
20 from repoman._portage import portage
21
22 -from portage import exception
23 from portage import os
24 from portage import shutil
25 from portage.output import green
26 @@ -34,55 +33,6 @@ metadata_xsd_uri = 'http://www.gentoo.org/xml-schema/metadata.xsd'
27 metadata_xsd_ctime_interval = 60 * 60 * 24 * 7 # 7 days
28
29
30 -def parse_metadata_use(xml_tree):
31 - """
32 - Records are wrapped in XML as per GLEP 56
33 - returns a dict with keys constisting of USE flag names and values
34 - containing their respective descriptions
35 - """
36 - uselist = {}
37 -
38 - usetags = xml_tree.findall("use")
39 - if not usetags:
40 - return uselist
41 -
42 - # It's possible to have multiple 'use' elements.
43 - for usetag in usetags:
44 - flags = usetag.findall("flag")
45 - if not flags:
46 - # DTD allows use elements containing no flag elements.
47 - continue
48 -
49 - for flag in flags:
50 - pkg_flag = flag.get("name")
51 - if pkg_flag is None:
52 - raise exception.ParseError("missing 'name' attribute for 'flag' tag")
53 - flag_restrict = flag.get("restrict")
54 -
55 - # emulate the Element.itertext() method from python-2.7
56 - inner_text = []
57 - stack = []
58 - stack.append(flag)
59 - while stack:
60 - obj = stack.pop()
61 - if isinstance(obj, basestring):
62 - inner_text.append(obj)
63 - continue
64 - if isinstance(obj.text, basestring):
65 - inner_text.append(obj.text)
66 - if isinstance(obj.tail, basestring):
67 - stack.append(obj.tail)
68 - stack.extend(reversed(obj))
69 -
70 - if pkg_flag not in uselist:
71 - uselist[pkg_flag] = {}
72 -
73 - # (flag_restrict can be None)
74 - uselist[pkg_flag][flag_restrict] = " ".join("".join(inner_text).split())
75 -
76 - return uselist
77 -
78 -
79 def fetch_metadata_xsd(metadata_xsd, repoman_settings):
80 """
81 Fetch metadata.xsd if it doesn't exist or the ctime is older than
82
83 diff --git a/pym/repoman/modules/scan/metadata/pkgmetadata.py b/pym/repoman/modules/scan/metadata/pkgmetadata.py
84 index a7150a9..cde2ba0 100644
85 --- a/pym/repoman/modules/scan/metadata/pkgmetadata.py
86 +++ b/pym/repoman/modules/scan/metadata/pkgmetadata.py
87 @@ -23,7 +23,7 @@ except (ImportError, SystemError, RuntimeError, Exception):
88
89 # import our initialized portage instance
90 from repoman._portage import portage
91 -from repoman.metadata import metadata_dtd_uri, parse_metadata_use
92 +from repoman.metadata import metadata_dtd_uri
93 from repoman.checks.herds.herdbase import get_herd_base
94 from repoman.checks.herds.metadata import check_metadata, UnknownHerdsError
95 from repoman._xml import _XMLParser, _MetadataTreeBuilder, XmlLint
96 @@ -32,6 +32,7 @@ from repoman.modules.scan.scanbase import ScanBase
97 from portage.exception import InvalidAtom
98 from portage import os
99 from portage import _encodings, _unicode_encode
100 +from portage import exception
101 from portage.dep import Atom
102
103 from .use_flags import USEFlagChecks
104 @@ -42,6 +43,55 @@ metadata_xml_declaration = '<?xml version="1.0" encoding="%s"?>' \
105 metadata_doctype_name = 'pkgmetadata'
106
107
108 +def parse_metadata_use(xml_tree):
109 + """
110 + Records are wrapped in XML as per GLEP 56
111 + returns a dict with keys constisting of USE flag names and values
112 + containing their respective descriptions
113 + """
114 + uselist = {}
115 +
116 + usetags = xml_tree.findall("use")
117 + if not usetags:
118 + return uselist
119 +
120 + # It's possible to have multiple 'use' elements.
121 + for usetag in usetags:
122 + flags = usetag.findall("flag")
123 + if not flags:
124 + # DTD allows use elements containing no flag elements.
125 + continue
126 +
127 + for flag in flags:
128 + pkg_flag = flag.get("name")
129 + if pkg_flag is None:
130 + raise exception.ParseError("missing 'name' attribute for 'flag' tag")
131 + flag_restrict = flag.get("restrict")
132 +
133 + # emulate the Element.itertext() method from python-2.7
134 + inner_text = []
135 + stack = []
136 + stack.append(flag)
137 + while stack:
138 + obj = stack.pop()
139 + if isinstance(obj, basestring):
140 + inner_text.append(obj)
141 + continue
142 + if isinstance(obj.text, basestring):
143 + inner_text.append(obj.text)
144 + if isinstance(obj.tail, basestring):
145 + stack.append(obj.tail)
146 + stack.extend(reversed(obj))
147 +
148 + if pkg_flag not in uselist:
149 + uselist[pkg_flag] = {}
150 +
151 + # (flag_restrict can be None)
152 + uselist[pkg_flag][flag_restrict] = " ".join("".join(inner_text).split())
153 +
154 + return uselist
155 +
156 +
157 class PkgMetadata(ScanBase, USEFlagChecks):
158 '''Package metadata.xml checks'''