Index: channels/pluginmanager2.py ================================================================== --- channels/pluginmanager2.py +++ channels/pluginmanager2.py @@ -133,12 +133,14 @@ # Attach available downloads after checking dependencies # e.g. newpl["depends"] = "streamtuner2 < 2.2.0, config >= 2.5" dep = pluginconf.dependency() for newpl in meta: - if dep.valid(newpl) and dep.depends(newpl): + if dep.valid(newpl, log.DEBUG_VALIDITY) and dep.depends(newpl, log.DEBUG_DEPENDS): self.add_plugin(newpl) + else: + log.DEBUG("plugin fails dependencies:", newpl) # Readd some filler labels _ = [self.add_(uikit.label("")) for i in range(1,3)] Index: pluginconf.py ================================================================== --- pluginconf.py +++ pluginconf.py @@ -422,31 +422,36 @@ for alias in re.split("\s*[,;]\s*", meta["alias"]): self.have[alias] = self.have[name] # basic plugin pre-screening (skip __init__, filter by api:, # exclude installed & same-version plugins) - def valid(self, newpl): + def valid(self, newpl, _log=lambda *x:0): id = newpl.get("$name", "__invalid") have_ver = self.have.get(id, {}).get("version", "0") if id.find("__") == 0: + _log("wrong id") pass elif newpl.get("api") not in ("python", "streamtuner2"): + _log("wrong api") pass elif set((newpl.get("status"), newpl.get("priority"))).intersection(set(("obsolete", "broken"))): + _log("wrong status") pass elif have_ver >= newpl.get("version", "0.0"): + _log("newer version already installed") pass else: return True # Verify depends: and breaks: against existing plugins/modules - def depends(self, plugin): + def depends(self, plugin, _log=lambda *x:0): r = True if plugin.get("depends"): r &= self.and_or(self.split(plugin["depends"]), self.have) if plugin.get("breaks"): r &= self.neither(self.split(plugin["breaks"]), self.have) + _log(r) return r # Split trivial "pkg | alt, mod >= 1, uikit < 4.0" string into nested list [[dep],[alt,alt],[dep]] def split(self, dep_str): dep_cmp = []