Print filename when displaying package.mask comments (trunk r5974)
authorZac Medico <zmedico@gentoo.org>
Fri, 22 Jun 2007 01:36:59 +0000 (01:36 -0000)
committerZac Medico <zmedico@gentoo.org>
Fri, 22 Jun 2007 01:36:59 +0000 (01:36 -0000)
svn path=/main/branches/2.1.2/; revision=6928

bin/emerge
pym/portage.py

index 12d7a292ac47ac5f0c625bc54c9eb1fb4b5fcb1d..3ba0e9e5142e5653ca425e08c097358a58df3474 100755 (executable)
@@ -1668,9 +1668,10 @@ class depgraph:
                                                                mreasons = portage.getmaskingstatus(p,
                                                                        settings=pkgsettings, portdb=portdb)
                                                                print "- "+p+" (masked by: "+", ".join(mreasons)+")"
-                                                               comment = portage.getmaskingreason(p,
-                                                                       settings=pkgsettings, portdb=portdb)
+                                                               comment, filename = portage.getmaskingreason(p,
+                                                                       settings=pkgsettings, portdb=portdb, return_location=True)
                                                                if comment and comment != oldcomment:
+                                                                       print filename+":"
                                                                        print comment
                                                                        oldcomment = comment
                                                        print
index fb20fd0baa91b4643fbd348e707bffde4a88c14e..ff016c0213c2e4a0874175dd1dfcde35d6311534 100644 (file)
@@ -4636,7 +4636,7 @@ def cpv_expand(mycpv, mydb=None, use_cache=1, settings=None):
        else:
                return mykey
 
-def getmaskingreason(mycpv, settings=None, portdb=None):
+def getmaskingreason(mycpv, settings=None, portdb=None, return_location=False):
        from portage_util import grablines
        if settings is None:
                settings = globals()["settings"]
@@ -4659,11 +4659,7 @@ def getmaskingreason(mycpv, settings=None, portdb=None):
        locations.append(os.path.join(settings["PORTAGE_CONFIGROOT"],
                USER_CONFIG_PATH.lstrip(os.path.sep)))
        locations.reverse()
-       pmasklists = [grablines(os.path.join(x, "package.mask"), recursive=1) for x in locations]
-       pmasklines = []
-       while pmasklists: # stack_lists doesn't preserve order so it can't be used
-               pmasklines.extend(pmasklists.pop(0))
-       del pmasklists
+       pmasklists = [(x, grablines(os.path.join(x, "package.mask"), recursive=1)) for x in locations]
 
        if settings.pmaskdict.has_key(mycp):
                for x in settings.pmaskdict[mycp]:
@@ -4671,23 +4667,31 @@ def getmaskingreason(mycpv, settings=None, portdb=None):
                                comment = ""
                                l = "\n"
                                comment_valid = -1
-                               for i in xrange(len(pmasklines)):
-                                       l = pmasklines[i].strip()
-                                       if l == "":
-                                               comment = ""
-                                               comment_valid = -1
-                                       elif l[0] == "#":
-                                               comment += (l+"\n")
-                                               comment_valid = i + 1
-                                       elif l == x:
-                                               if comment_valid != i:
+                               for pmask in pmasklists:
+                                       pmask_filename = os.path.join(pmask[0], "package.mask")
+                                       for i in xrange(len(pmask[1])):
+                                               l = pmask[1][i].strip()
+                                               if l == "":
                                                        comment = ""
-                                               return comment
-                                       elif comment_valid != -1:
-                                               # Apparently this comment applies to muliple masks, so
-                                               # it remains valid until a blank line is encountered.
-                                               comment_valid += 1
-       return None
+                                                       comment_valid = -1
+                                               elif l[0] == "#":
+                                                       comment += (l+"\n")
+                                                       comment_valid = i + 1
+                                               elif l == x:
+                                                       if comment_valid != i:
+                                                               comment = ""
+                                                       if return_location:
+                                                               return (comment, pmask_filename)
+                                                       else:
+                                                               return comment
+                                               elif comment_valid != -1:
+                                                       # Apparently this comment applies to muliple masks, so
+                                                       # it remains valid until a blank line is encountered.
+                                                       comment_valid += 1
+       if return_location:
+               return (None, None)
+       else:
+               return None
 
 def getmaskingstatus(mycpv, settings=None, portdb=None):
        if settings is None: