Merged from trunk -r14284:14288
authorFabian Groffen <grobian@gentoo.org>
Mon, 21 Sep 2009 17:07:18 +0000 (17:07 -0000)
committerFabian Groffen <grobian@gentoo.org>
Mon, 21 Sep 2009 17:07:18 +0000 (17:07 -0000)
   | 14285   | Fix config.setinst() to add Atom instances to the provider   |
   | zmedico | lists instead of plain str.                                  |

   | 14286   | Add isinstance(mydep, Atom) checks to the dep_* functions    |
   | zmedico | since we don't use a metaclass to do that anymore (due to    |
   |         | performance).                                                |

   | 14288   | Bug #285637 - Fix NameError exception triggered by           |
   | zmedico | InvalidAtom in grabfile_package().                           |

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

pym/portage/__init__.py
pym/portage/dep.py
pym/portage/util.py

index c9939c24ba273c654f28b303f6372027067d2daf..be76389a072e423a3a12507c80bb0a4334cd4d9c 100644 (file)
@@ -3198,7 +3198,7 @@ class config(object):
                virts = flatten(portage.dep.use_reduce(portage.dep.paren_reduce(provides), uselist=myuse.split()))
 
                modified = False
-               cp = dep_getkey(mycpv)
+               cp = dep.Atom(cpv_getkey(mycpv))
                for virt in virts:
                        virt = dep_getkey(virt)
                        providers = self.virtuals.get(virt)
index bd576b7686e4755d3f30bc8a7e617096c48052e3..66557c0c640b99ff2767c161e556ff05eb7c88e6 100644 (file)
@@ -683,6 +683,8 @@ def get_operator(mydep):
        @return: The operator. One of:
                '~', '=', '>', '<', '=*', '>=', or '<='
        """
+       if isinstance(mydep, Atom):
+               return mydep.operator
        try:
                return Atom(mydep).operator
        except InvalidAtom:
@@ -724,7 +726,8 @@ def dep_getcpv(mydep):
        @rtype: String
        @return: The depstring with the operator removed
        """
-
+       if isinstance(mydep, Atom):
+               return mydep.cpv
        try:
                return Atom(mydep).cpv
        except InvalidAtom:
@@ -885,7 +888,8 @@ def isvalidatom(atom, allow_blockers=False):
                2) True if the atom is valid
        """
        try:
-               atom = Atom(atom)
+               if not isinstance(atom, Atom):
+                       atom = Atom(atom)
                if not allow_blockers and atom.blocker:
                        return False
                return True
@@ -910,7 +914,9 @@ def isjustname(mypkg):
                2) True if it is
        """
        try:
-               return mypkg == Atom(mypkg).cp
+               if not isinstance(mypkg, Atom):
+                       mypkg = Atom(mypkg)
+               return mypkg == mypkg.cp
        except InvalidAtom:
                pass
 
@@ -938,7 +944,9 @@ def isspecific(mypkg):
                2) True if it is
        """
        try:
-               return mypkg != Atom(mypkg).cp
+               if not isinstance(mypkg, Atom):
+                       mypkg = Atom(mypkg)
+               return mypkg != mypkg.cp
        except InvalidAtom:
                pass
 
@@ -956,9 +964,10 @@ def dep_getkey(mydep):
        @param mydep: The depstring to retrieve the category/package-name of
        @type mydep: String
        @rtype: String
-       @return: The package category/package-version
+       @return: The package category/package-name
        """
-
+       if isinstance(mydep, Atom):
+               return mydep.cp
        try:
                return Atom(mydep).cp
        except InvalidAtom:
index 0c84d6310d7ce9018069c6634cfe0fd9f06cf5d8..955fa0396325f982db98847e160bd3508b1281eb 100644 (file)
@@ -319,7 +319,7 @@ def grabfile_package(myfilename, compatlevel=0, recursive=0):
                try:
                        pkg = Atom(pkg)
                except InvalidAtom:
-                       writemsg(_("--- Invalid atom in %s: %s\n") % (myfilename, pkgs[x]),
+                       writemsg(_("--- Invalid atom in %s: %s\n") % (myfilename, pkg),
                                noiselevel=-1)
                else:
                        if pkg_orig == str(pkg):