On Mon, Dec 6, 2010 at 9:34 PM, James Antill <[email protected]> wrote: > --- > yum/__init__.py | 4 ++++ > yum/packages.py | 34 +++++++++++++++++++++++++++++++++- > 2 files changed, 37 insertions(+), 1 deletions(-) > > diff --git a/yum/__init__.py b/yum/__init__.py > index 58e4367..29e0284 100644 > --- a/yum/__init__.py > +++ b/yum/__init__.py > @@ -1524,6 +1524,9 @@ class YumBase(depsolve.Depsolve): > po.yumdb_info.from_repo_timestamp = lp_mtime > except: pass > > + if rpo.xattr_origin_url is not None: > + po.yumdb_info.origin_url = rpo.xattr_origin_url > + > if not hasattr(rpo.repo, 'repoXML'): > continue > > @@ -2090,6 +2093,7 @@ class YumBase(depsolve.Depsolve): > if local: > filelist.extend([txmbr.po.localHdr()]) > else: > + txmbr.po.xattr_origin_url # Load this, before we rm the > file. > filelist.extend([txmbr.po.localPkg(), txmbr.po.localHdr()]) > > # now remove them > diff --git a/yum/packages.py b/yum/packages.py > index 093d3c8..6f61fea 100644 > --- a/yum/packages.py > +++ b/yum/packages.py > @@ -41,6 +41,13 @@ import urlparse > urlparse.uses_fragment.append("media") > from urlgrabber.grabber import URLGrabber, URLGrabError > > +try: > + import xattr > + if not hasattr(xattr, 'get'): > + xattr = None # This is a "newer" API. > +except ImportError: > + xattr = None > + > # For verify > import pwd > import grp > @@ -879,7 +886,32 @@ class YumAvailablePackage(PackageObject, RpmBase): > self._verify_local_pkg_cache = nst > > return True > - > + > + # See: http://www.freedesktop.org/wiki/CommonExtendedAttributes > + def _localXattrUrl(self): > + """ Get the user.xdg.origin.url value from the local pkg. ... if > it's > + present. We cache this so we can access it after the file has > been > + deleted (keepcache=False). """ > + > + if xattr is None: > + return None > + > + if hasattr(self, '__cached_localXattrUrl'): > + return getattr(self, '__cached_localXattrUrl') > + > + if not self.verifyLocalPkg(): > + return None > + > + try: > + ret = xattr.get(self.localPkg(), 'user.xdg.origin.url') > + except: # Documented to be "EnvironmentError", but make sure > + return None > + > + setattr(self, '__cached_localXattrUrl', ret) > + return ret > + > + xattr_origin_url = property(lambda x: x._localXattrUrl()) > + > def prcoPrintable(self, prcoTuple): > """convert the prco tuples into a nicer human string""" > warnings.warn('prcoPrintable() will go away in a future version of > Yum.\n', > -- > 1.7.2.3 > > _______________________________________________ > Yum-devel mailing list > [email protected] > http://lists.baseurl.org/mailman/listinfo/yum-devel >
ACK
_______________________________________________ Yum-devel mailing list [email protected] http://lists.baseurl.org/mailman/listinfo/yum-devel
