Gentoo Archives: gentoo-commits

From: Zac Medico <zmedico@g.o>
To: gentoo-commits@l.g.o
Subject: [gentoo-commits] proj/portage:master commit in: bin/
Date: Fri, 31 Aug 2012 16:38:05
Message-Id: 1346430842.821fe40222e75ba08e5456577321fa5d1f12e69a.zmedico@gentoo
1 commit: 821fe40222e75ba08e5456577321fa5d1f12e69a
2 Author: Gregory M. Turner <gmturner007 <AT> ameritech <DOT> net>
3 AuthorDate: Fri Aug 31 16:34:02 2012 +0000
4 Commit: Zac Medico <zmedico <AT> gentoo <DOT> org>
5 CommitDate: Fri Aug 31 16:34:02 2012 +0000
6 URL: http://git.overlays.gentoo.org/gitweb/?p=proj/portage.git;a=commit;h=821fe402
7
8 portageq: clarify meaning of uses_root
9
10 o s/uses_root/uses_eroot/g -- This name was chosen
11 before its meaning was changed; update it to reflect its purporse.
12
13 o Fix a left-over "<root>" arg-doc that never got updated to "<eroot>"
14
15 o If a provided eroot argument was shorter than the ${EPREFIX}, portageq
16 was truncating it down to nothing and activating relative root,
17 which means this became equivalent to an explicit argument of
18 "${PWD}/${EPREFIX}/". This is obviously wrong; and a simple case
19 of failing to sanity-check inputs from an interface that changed in a
20 backward-incompatible way.
21
22 There's no provision in portageq to query EROOT's that don't end in
23 ${EPREFIX}; so if the user makes such a request, instead of doing
24 something pathological, dump a helpful error message and bail with
25 a nonzero exit code.
26
27 Signed-off-by: Gregory M. Turner <gmturner007 <AT> ameritech.net>
28
29 ---
30 bin/portageq | 49 +++++++++++++++++++++++++++++--------------------
31 1 files changed, 29 insertions(+), 20 deletions(-)
32
33 diff --git a/bin/portageq b/bin/portageq
34 index d9abb0b..eeea277 100755
35 --- a/bin/portageq
36 +++ b/bin/portageq
37 @@ -125,7 +125,7 @@ def has_version(argv):
38 portage.writemsg("ERROR: Invalid atom: '%s'\n" % argv[1],
39 noiselevel=-1)
40 return 2
41 -has_version.uses_root = True
42 +has_version.uses_eroot = True
43
44
45 def best_version(argv):
46 @@ -166,7 +166,7 @@ def best_version(argv):
47 print(portage.best(mylist))
48 except KeyError:
49 return 1
50 -best_version.uses_root = True
51 +best_version.uses_eroot = True
52
53
54 def mass_best_version(argv):
55 @@ -182,7 +182,7 @@ def mass_best_version(argv):
56 print(pack+":"+portage.best(mylist))
57 except KeyError:
58 return 1
59 -mass_best_version.uses_root = True
60 +mass_best_version.uses_eroot = True
61
62 def metadata(argv):
63 if (len(argv) < 4):
64 @@ -216,7 +216,7 @@ Available keys: %s
65 """ % ','.join(sorted(x for x in portage.auxdbkeys \
66 if not x.startswith('UNUSED_')))
67
68 -metadata.uses_root = True
69 +metadata.uses_eroot = True
70
71 def contents(argv):
72 """<eroot> <category/package>
73 @@ -238,7 +238,7 @@ def contents(argv):
74 treetype="vartree", vartree=vartree)
75 writemsg_stdout(''.join('%s\n' % x for x in sorted(db.getcontents())),
76 noiselevel=-1)
77 -contents.uses_root = True
78 +contents.uses_eroot = True
79
80 def owners(argv):
81 """<eroot> [<filename>]+
82 @@ -319,7 +319,7 @@ def owners(argv):
83 return 0
84 return 1
85
86 -owners.uses_root = True
87 +owners.uses_eroot = True
88
89 def is_protected(argv):
90 """<eroot> <filename>
91 @@ -366,7 +366,7 @@ def is_protected(argv):
92 return 0
93 return 1
94
95 -is_protected.uses_root = True
96 +is_protected.uses_eroot = True
97
98 def filter_protected(argv):
99 """<eroot>
100 @@ -426,7 +426,7 @@ def filter_protected(argv):
101
102 return 0
103
104 -filter_protected.uses_root = True
105 +filter_protected.uses_eroot = True
106
107 def best_visible(argv):
108 """<eroot> [pkgtype] <atom>
109 @@ -508,11 +508,11 @@ def best_visible(argv):
110 writemsg_stdout("\n", noiselevel=-1)
111
112 return 1
113 -best_visible.uses_root = True
114 +best_visible.uses_eroot = True
115
116
117 def mass_best_visible(argv):
118 - """<root> [<type>] [<category/package>]+
119 + """<eroot> [<type>] [<category/package>]+
120 Returns category/package-version (without .ebuild).
121 The pkgtype argument defaults to "ebuild" if unspecified,
122 otherwise it must be one of ebuild, binary, or installed.
123 @@ -535,7 +535,7 @@ def mass_best_visible(argv):
124 best_visible([root, pkgtype, pack])
125 except KeyError:
126 return 1
127 -mass_best_visible.uses_root = True
128 +mass_best_visible.uses_eroot = True
129
130
131 def all_best_visible(argv):
132 @@ -552,7 +552,7 @@ def all_best_visible(argv):
133 mybest=portage.best(portage.db[argv[0]]["porttree"].dbapi.match(pkg))
134 if mybest:
135 print(mybest)
136 -all_best_visible.uses_root = True
137 +all_best_visible.uses_eroot = True
138
139
140 def match(argv):
141 @@ -601,7 +601,7 @@ def match(argv):
142 results = vardb.match(atom)
143 for cpv in results:
144 print(cpv)
145 -match.uses_root = True
146 +match.uses_eroot = True
147
148 def expand_virtual(argv):
149 """<eroot> <atom>
150 @@ -637,7 +637,7 @@ def expand_virtual(argv):
151
152 return os.EX_OK
153
154 -expand_virtual.uses_root = True
155 +expand_virtual.uses_eroot = True
156
157 def vdb_path(argv):
158 """
159 @@ -733,7 +733,7 @@ def get_repos(argv):
160 return 2
161 print(" ".join(portage.db[argv[0]]["porttree"].dbapi.getRepositories()))
162
163 -get_repos.uses_root = True
164 +get_repos.uses_eroot = True
165
166 def get_repo_path(argv):
167 """<eroot> <repo_id>+
168 @@ -748,7 +748,7 @@ def get_repo_path(argv):
169 path = ""
170 print(path)
171
172 -get_repo_path.uses_root = True
173 +get_repo_path.uses_eroot = True
174
175 def list_preserved_libs(argv):
176 """<eroot>
177 @@ -771,7 +771,7 @@ def list_preserved_libs(argv):
178 msg.append('\n')
179 writemsg_stdout(''.join(msg), noiselevel=-1)
180 return rValue
181 -list_preserved_libs.uses_root = True
182 +list_preserved_libs.uses_eroot = True
183
184 #-----------------------------------------------------------------------------
185 #
186 @@ -860,8 +860,8 @@ def main():
187 usage(sys.argv)
188 sys.exit(os.EX_USAGE)
189 function = globals()[cmd]
190 - uses_root = getattr(function, "uses_root", False) and len(sys.argv) > 2
191 - if uses_root:
192 + uses_eroot = getattr(function, "uses_eroot", False) and len(sys.argv) > 2
193 + if uses_eroot:
194 if not os.path.isdir(sys.argv[2]):
195 sys.stderr.write("Not a directory: '%s'\n" % sys.argv[2])
196 sys.stderr.write("Run portageq with --help for info\n")
197 @@ -869,10 +869,19 @@ def main():
198 sys.exit(os.EX_USAGE)
199 eprefix = portage.const.EPREFIX
200 eroot = portage.util.normalize_path(sys.argv[2])
201 +
202 if eprefix:
203 + if not eroot.endswith(eprefix):
204 + sys.stderr.write("ERROR: This version of portageq"
205 + " only supports <eroot>s ending in"
206 + " '%s'. The provided <eroot>, '%s',"
207 + " doesn't.\n" % (eprefix, eroot));
208 + sys.stderr.flush()
209 + sys.exit(os.EX_USAGE)
210 root = eroot[:1-len(eprefix)]
211 else:
212 root = eroot
213 +
214 os.environ["ROOT"] = root
215
216 args = sys.argv[2:]
217 @@ -881,7 +890,7 @@ def main():
218 args[i] = portage._unicode_decode(args[i])
219
220 try:
221 - if uses_root:
222 + if uses_eroot:
223 args[0] = portage.settings['EROOT']
224 retval = function(args)
225 if retval: