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: |