emerge --info: Print repo names for packages not from $PORTDIR
authorSebastian Luther <SebastianLuther@gmx.de>
Tue, 6 Jul 2010 21:10:48 +0000 (23:10 +0200)
committerZac Medico <zmedico@gentoo.org>
Thu, 8 Jul 2010 11:14:44 +0000 (04:14 -0700)
pym/_emerge/actions.py

index af4380ed1a8b49ad9d0c1f6ca9fbbb282adf9c3e..a4b9f76bae5ea2a540402633f13f2d15c3d32e4d 100644 (file)
@@ -1260,20 +1260,30 @@ def action_info(settings, trees, myopts, myfiles):
        myvars  = portage.util.unique_array(myvars)
        myvars.sort()
 
+       portdb = trees["/"]["porttree"].dbapi
+       vardb = trees["/"]["vartree"].dbapi
+       main_repo = portdb.getRepositoryName(portdb.porttree_root)
+
        for x in myvars:
                if portage.isvalidatom(x):
-                       pkg_matches = trees["/"]["vartree"].dbapi.match(x)
-                       pkg_matches = [portage.catpkgsplit(cpv)[1:] for cpv in pkg_matches]
-                       pkg_matches.sort(key=cmp_sort_key(portage.pkgcmp))
-                       pkgs = []
-                       for pn, ver, rev in pkg_matches:
-                               if rev != "r0":
-                                       pkgs.append(ver + "-" + rev)
+                       pkg_matches = vardb.match(x)
+
+                       versions = []
+                       for cpv in pkg_matches:
+                               ver = portage.versions.cpv_getversion(cpv)
+                               repo = vardb.aux_get(cpv, ["repository"])[0]
+                               if not repo:
+                                       repo = "<unknown repository>"
+                               if repo != main_repo:
+                                       versions.append(ver + "::" + repo)
                                else:
-                                       pkgs.append(ver)
-                       if pkgs:
-                               pkgs = ", ".join(pkgs)
-                               print("%-20s %s" % (x+":", pkgs))
+                                       versions.append(ver)
+
+                       versions.sort(cmp=lambda a,b: portage.versions.vercmp(a.split("::")[0], b.split("::")[0]))
+
+                       if versions:
+                               versions = ", ".join(versions)
+                               print("%-20s %s" % (x+":", versions))
                else:
                        print("%-20s %s" % (x+":", "[NOT VALID]"))