---
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