1 |
Author: zmedico |
2 |
Date: 2008-03-28 09:43:03 +0000 (Fri, 28 Mar 2008) |
3 |
New Revision: 9535 |
4 |
|
5 |
Modified: |
6 |
main/branches/2.1.2/bin/emerge |
7 |
Log: |
8 |
Add support for file paths as arguments to emerge. If an argument starts |
9 |
with / and it's not recognized as a tbz2 or ebuild then we try to find |
10 |
and owner in the vdb and generate a slot atom from it. Thanks to solar |
11 |
for the suggestion. (trunk r9367) |
12 |
|
13 |
|
14 |
Modified: main/branches/2.1.2/bin/emerge |
15 |
=================================================================== |
16 |
--- main/branches/2.1.2/bin/emerge 2008-03-28 09:32:04 UTC (rev 9534) |
17 |
+++ main/branches/2.1.2/bin/emerge 2008-03-28 09:43:03 UTC (rev 9535) |
18 |
@@ -1469,6 +1469,7 @@ |
19 |
self._reinstall_nodes = {} |
20 |
self.mydbapi = {} |
21 |
self.trees = {} |
22 |
+ self._trees_orig = trees |
23 |
self.roots = {} |
24 |
for myroot in trees: |
25 |
self.trees[myroot] = {} |
26 |
@@ -2010,6 +2011,34 @@ |
27 |
None, "--onlydeps" not in self.myopts, arg=x): |
28 |
return (0,myfavorites) |
29 |
arg_atoms.append((x, "="+mykey)) |
30 |
+ elif x.startswith(os.path.sep): |
31 |
+ if not x.startswith(myroot): |
32 |
+ portage.writemsg(("\n\n!!! '%s' does not start with" + \ |
33 |
+ " $ROOT.\n") % x, noiselevel=-1) |
34 |
+ return 0, [] |
35 |
+ relative_path = x[len(myroot):] |
36 |
+ vartree = self._trees_orig[myroot]["vartree"] |
37 |
+ owner_cpv = None |
38 |
+ for cpv in vardb.cpv_all(): |
39 |
+ self.spinner.update() |
40 |
+ cat, pf = portage.catsplit(cpv) |
41 |
+ if portage.dblink(cat, pf, myroot, |
42 |
+ pkgsettings, vartree=vartree).isowner( |
43 |
+ relative_path, myroot): |
44 |
+ owner_cpv = cpv |
45 |
+ break |
46 |
+ if owner_cpv is None: |
47 |
+ portage.writemsg(("\n\n!!! '%s' is not claimed " + \ |
48 |
+ "by any package.\n") % x, noiselevel=-1) |
49 |
+ return 0, [] |
50 |
+ slot = vardb.aux_get(owner_cpv, ["SLOT"])[0] |
51 |
+ if not slot: |
52 |
+ # portage now masks packages with missing slot, but it's |
53 |
+ # possible that one was installed by an older version |
54 |
+ atom = portage.cpv_getkey(owner_cpv) |
55 |
+ else: |
56 |
+ atom = "%s:%s" % (portage.cpv_getkey(owner_cpv), slot) |
57 |
+ arg_atoms.append((x, atom)) |
58 |
else: |
59 |
if not is_valid_package_atom(x): |
60 |
portage.writemsg("\n\n!!! '%s' is not a valid package atom.\n" % x, |
61 |
|
62 |
-- |
63 |
gentoo-commits@l.g.o mailing list |