Merged from trunk 7086:7089
authorFabian Groffen <grobian@gentoo.org>
Fri, 29 Jun 2007 09:49:07 +0000 (09:49 -0000)
committerFabian Groffen <grobian@gentoo.org>
Fri, 29 Jun 2007 09:49:07 +0000 (09:49 -0000)
   +------------------------------------------------------------------------+
   | 7087   | Store name of source repository in vdb node for later         |
   | genone | comparison                                                    |
   |--------+---------------------------------------------------------------|
   | 7088   | Use better parseable format for list_preserved_libs           |
   | genone |                                                               |
   |--------+---------------------------------------------------------------|
   | 7089   | display source repository for installed package and target    |
   | genone | package (bug #67072)                                          |
   +------------------------------------------------------------------------+

svn path=/main/branches/prefix/; revision=7090

bin/portageq
pym/emerge/__init__.py
pym/portage/dbapi/vartree.py

index e0fef37b4753c6fda4734dbd077df1ace0b81a5d..936324c36c8e8a9a0b1a5c9bdffb1fdbbe432c4d 100755 (executable)
@@ -296,10 +296,13 @@ def list_preserved_libs(argv):
        mylibs = portage.db[argv[0]]["vartree"].dbapi.plib_registry.getPreservedLibs()
        rValue = 0
        for cpv in mylibs:
+               print cpv,
                for path in mylibs[cpv]:
-                       print "%s: %s" % (cpv, path)
+                       print path,
                        rValue = 1
+               print
        return rValue
+list_preserved_libs.uses_root = True
 
 #-----------------------------------------------------------------------------
 #
index 526737ca61e562b4aa34e1ddbd751f75ea199aa8..8f42fcabd25f9219a7b034c16595c6728f5ade53 100644 (file)
@@ -703,7 +703,7 @@ class FakeVartree(portage.vartree):
                        if os.access(vdb_path, os.W_OK):
                                vdb_lock = portage.locks.lockdir(vdb_path)
                        mykeys = ["SLOT", "COUNTER", "PROVIDE", "USE", "IUSE",
-                               "DEPEND", "RDEPEND", "PDEPEND"]
+                               "DEPEND", "RDEPEND", "PDEPEND", "repository"]
                        real_dbapi = real_vartree.dbapi
                        slot_counters = {}
                        for cpv in real_dbapi.cpv_all():
@@ -937,7 +937,7 @@ class depgraph(object):
                self._slot_node_map = {}
                self.mydbapi = {}
                self._mydbapi_keys = ["SLOT", "DEPEND", "RDEPEND", "PDEPEND",
-                       "USE", "IUSE", "PROVIDE"]
+                       "USE", "IUSE", "PROVIDE", "repository"]
                self.useFlags = {}
                self.trees = {}
                for myroot in trees:
@@ -2802,11 +2802,35 @@ class depgraph(object):
                                        # x = ['binary', '/', 'sys-apps/pcmcia-cs-3.2.7.2.6', 'merge']
                                        file_name = portdb.findname(pkg_key)
                                        if file_name: # It might not exist in the tree
+                                               newrepo = pkgsettings["PORTDIR"]
+                                               newrepoindex = "0"
+                                               if self.trees[x[1]]["vartree"].dbapi.cpv_exists(pkg):
+                                                       oldrepo = self.trees[x[1]]["vartree"].dbapi.aux_get(pkg, ["repository"])[0]
+                                               else:
+                                                       oldrepo = ""
+                                               if oldrepo != "":
+                                                       oldrepo = portdb.getRepositoryPath(oldrepo)
                                                dir_name=os.path.abspath(os.path.dirname(file_name)+"/../..")
-                                               if (overlays_real.count(dir_name)>0):
-                                                       verboseadd+=teal("["+str(overlays_real.index(
-                                                               os.path.normpath(dir_name))+1)+"]")+" "
-                                                       display_overlays=True
+                                               if (overlays_real.count(dir_name) > 0):
+                                                       newrepoindex = overlays_real.index(os.path.normpath(dir_name))
+                                                       newrepo = overlays_real[newrepoindex]
+                                                       newrepoindex += 1
+                                               
+                                               # assing lookup indexes
+                                               if oldrepo == "":
+                                                       oldrepoindex = "?"
+                                               elif oldrepo == pkgsettings["PORTDIR"]:
+                                                       oldrepoindex = "0"
+                                               else:
+                                                       oldrepoindex = str(overlays_real.index(os.path.normpath(oldrepo)) + 1)
+                                               if oldrepoindex == newrepoindex \
+                                                               or not self.trees[x[1]]["vartree"].dbapi.cpv_exists(pkg):
+                                                       repoadd = newrepoindex
+                                               else:
+                                                       repoadd = "%s=>%s" % (oldrepoindex, newrepoindex)
+
+                                               verboseadd+=teal("[%s]" % repoadd)+" "
+                                               display_overlays=True
                                        else:
                                                verboseadd += "[No ebuild?]"
 
@@ -2949,11 +2973,13 @@ class depgraph(object):
                        print
                        print counters
                        if overlays and display_overlays:
-                               print "Portage overlays:"
+                               print "Portage tree and overlays:"
                                y=0
+                               print " "+teal("[0]"), self.settings["PORTDIR"]
                                for x in overlays:
                                        y=y+1
                                        print " "+teal("["+str(y)+"]"),x
+                               print " "+teal("[?]"), "indicates that the source repository could not be determined"
 
                if "--changelog" in self.myopts:
                        print
index ad8e464321c43853898113523364dcc2c014169b..06530e4a24d28a400116c411c3080576f761acf6 100644 (file)
@@ -185,7 +185,7 @@ class vardbapi(dbapi):
                        vartree = db[root]["vartree"]
                self.vartree = vartree
                self._aux_cache_keys = set(["SLOT", "COUNTER", "PROVIDE", "USE",
-                       "IUSE", "DEPEND", "RDEPEND", "PDEPEND", "NEEDED"])
+                       "IUSE", "DEPEND", "RDEPEND", "PDEPEND", "NEEDED", "repository"])
                self._aux_cache = None
                self._aux_cache_version = "1"
                self._aux_cache_filename = os.path.join(self.root,
@@ -1699,6 +1699,16 @@ class dblink(object):
                for x in listdir(inforoot):
                        self.copyfile(inforoot+"/"+x)
 
+               # do we have a origin repository name for the current package
+               repopath = os.sep.join(self.settings["O"].split(os.sep)[:-2])
+               if mydbapi != None:
+                       for reponame in mydbapi.getRepositories():
+                               if mydbapi.getRepositoryPath(reponame) == repopath:
+                                       fd = open(os.path.join(self.dbtmpdir, "repository"), "w")
+                                       fd.write(reponame+"\n")
+                                       fd.close()
+                                       break
+
                # write local package counter for recording
                lcfile = open(os.path.join(self.dbtmpdir, "COUNTER"),"w")
                lcfile.write(str(counter))