From 403d7889d98e597ca64981790c9434ffd1fcb8a4 Mon Sep 17 00:00:00 2001 From: Thomas Leonard Date: Sun, 27 Feb 2011 15:58:01 +0000 Subject: [PATCH] Added IfaceCache.usable_feeds --- zeroinstall/injector/iface_cache.py | 12 ++++++++++++ zeroinstall/injector/policy.py | 17 +++++------------ 2 files changed, 17 insertions(+), 12 deletions(-) diff --git a/zeroinstall/injector/iface_cache.py b/zeroinstall/injector/iface_cache.py index 41fc049..3635aa4 100644 --- a/zeroinstall/injector/iface_cache.py +++ b/zeroinstall/injector/iface_cache.py @@ -548,4 +548,16 @@ class IfaceCache(object): return True + def usable_feeds(self, iface, arch): + """Generator for C{iface.feeds} that are valid for this architecture. + @rtype: generator + @see: L{arch} + @since: 0.53""" + for f in self.get_feed_imports(iface): + if f.os in arch.os_ranks and f.machine in arch.machine_ranks: + yield f + else: + debug(_("Skipping '%(feed)s'; unsupported architecture %(os)s-%(machine)s"), + {'feed': f, 'os': f.os, 'machine': f.machine}) + iface_cache = IfaceCache() diff --git a/zeroinstall/injector/policy.py b/zeroinstall/injector/policy.py index 6268ae9..46545ac 100644 --- a/zeroinstall/injector/policy.py +++ b/zeroinstall/injector/policy.py @@ -93,18 +93,11 @@ class Policy(object): """Generator for C{iface.feeds} that are valid for our architecture. @rtype: generator @see: L{arch}""" - if self.requirements.source and iface.uri == self.root: - # Note: when feeds are recursive, we'll need a better test for root here - machine_ranks = {'src': 1} - else: - machine_ranks = arch.machine_ranks - - for f in self.config.iface_cache.get_feed_imports(iface): - if f.os in arch.os_ranks and f.machine in machine_ranks: - yield f - else: - debug(_("Skipping '%(feed)s'; unsupported architecture %(os)s-%(machine)s"), - {'feed': f, 'os': f.os, 'machine': f.machine}) + a = self.driver.target_arch + if iface.uri != self.root: + # note: assumes that only the root arch may be different (e.g. if using --source) + a = a.child_arch + return self.config.iface_cache.usable_feeds(iface, a) def is_stale(self, feed): """@deprecated: use IfaceCache.is_stale""" -- 2.11.4.GIT