summaryrefslogtreecommitdiff
path: root/portato/backend/catapult
diff options
context:
space:
mode:
Diffstat (limited to 'portato/backend/catapult')
-rw-r--r--portato/backend/catapult/package.py63
-rw-r--r--portato/backend/catapult/system.py32
2 files changed, 69 insertions, 26 deletions
diff --git a/portato/backend/catapult/package.py b/portato/backend/catapult/package.py
index ffc249b..e42ac6a 100644
--- a/portato/backend/catapult/package.py
+++ b/portato/backend/catapult/package.py
@@ -3,7 +3,7 @@
# File: portato/backend/catapult/package.py
# This file is part of the Portato-Project, a graphical portage-frontend.
#
-# Copyright (C) 2007 René 'Necoro' Neumann
+# Copyright (C) 2007-2008 René 'Necoro' Neumann
# This is free software. You may redistribute copies of it under the terms of
# the GNU General Public License version 2.
# There is NO WARRANTY, to the extent permitted by law.
@@ -29,6 +29,19 @@ class CatapultPackage(Package):
dbus_object = bus.get_object("org.gentoo.catapult.portage", "/org/gentoo/catapult/Package", follow_name_owner_changes = True)
proxy = dbus.Interface(dbus_object, "org.gentoo.catapult.Package")
+ def _new_flags (self):
+ flags = self.get_new_use_flags()
+
+ nflags = []
+
+ for flag in flags:
+ if flag[0] == "~":
+ nflags.append(flag[1:], True)
+ else:
+ nflags.append(flag, False)
+
+ return nflags
+
def use_expanded (self, flag, suggest = None):
if not suggest:
suggest = ""
@@ -80,29 +93,17 @@ class CatapultPackage(Package):
if self.proxy.is_masked(self.get_cpv()):
if not flags.is_locally_masked(self, changes = False): # assume that if it is locally masked, it is not masked by the system
return True
-# else: # more difficult: get the ones we unmasked, but are masked by the system
-# try:
-# masked = self._settings.settings.pmaskdict[self.get_cp()]
-# except KeyError: # key error: not masked
-# return False
-#
-# for cpv in masked:
-# if self.matches(cpv):
-# if not flags.is_locally_masked(self, changes = False): # assume that if it is locally masked, it is not masked by the system
-# return True
-# else:
-# return False
return False
def get_masking_reason (self):
return str(self.proxy.get_masking_reason(self.get_cpv()))
- def get_iuse_flags (self, installed = False):
- return [str(x) for x in self.proxy.get_iuse_flags(self.get_cpv(), installed)]
+ def get_iuse_flags (self, installed = False, removeForced = True):
+ return [str(x) for x in self.proxy.get_iuse_flags(self.get_cpv(), installed, removeForced)]
def get_matched_dep_packages (self, depvar):
- return [str(x) for x in self.proxy.get_matched_dep_packages(self.get_cpv(), self.get_new_use_flags())]
+ return [str(x) for x in self.proxy.get_matched_dep_packages(self.get_cpv(), self._new_flags())]
def get_dep_packages (self, depvar = ["RDEPEND", "PDEPEND", "DEPEND"], with_criterions = False):
pkgs = self.proxy.get_dep_packages(self.get_cpv(), depvar, self.get_new_use_flags())
@@ -112,8 +113,8 @@ class CatapultPackage(Package):
else:
return [(str(x),str(y)) for x,y in pkgs]
- def get_global_settings(self, key):
- return str(self.proxy.get_global_settings(self.get_cpv(), key))
+ def get_global_settings(self, key, installed = True):
+ return str(self.proxy.get_global_settings(self.get_cpv(), key, installed))
def get_ebuild_path(self):
return str(self.proxy.get_ebuild_path(self.get_cpv()))
@@ -121,11 +122,33 @@ class CatapultPackage(Package):
def get_package_settings(self, var, tree = True):
return str(self.proxy.get_package_settings(self.get_cpv(), var, tree))
- def get_use_flags(self):
- return " ".join(self.proxy.get_use_flags(self.get_cpv()))
+ def get_installed_use_flags(self):
+ return self.proxy.get_installed_use_flags(self.get_cpv())
+
+ def get_actual_use_flags(self):
+ return self.proxy.get_actual_use_flags(self.get_cpv(), self._new_flags())
def compare_version(self, other):
return self.proxy.compare_version(self.get_cpv(), other.get_cpv())
def matches (self, criterion):
return self.proxy.matches(self.get_cpv(), criterion)
+
+ def get_files (self):
+ return self.proxy.get_files(self.get_cpv())
+
+ def get_dependencies (self):
+ from ...dependency import DependencyTree
+ d = DependencyTree()
+ d.add("Dependency calculation not supported for Catapult Backend")
+ return d
+
+ def get_name(self):
+ return str(self.proxy.get_name(self.get_cpv()))
+
+ def get_version(self):
+ return str(self.proxy.get_version(self.get_cpv()))
+
+ def get_category(self):
+ return str(self.proxy.get_category(self.get_cpv()))
+
diff --git a/portato/backend/catapult/system.py b/portato/backend/catapult/system.py
index da54d07..eecf122 100644
--- a/portato/backend/catapult/system.py
+++ b/portato/backend/catapult/system.py
@@ -3,7 +3,7 @@
# File: portato/backend/catapult/system.py
# This file is part of the Portato-Project, a graphical portage-frontend.
#
-# Copyright (C) 2006-2007 René 'Necoro' Neumann
+# Copyright (C) 2007-2008 René 'Necoro' Neumann
# This is free software. You may redistribute copies of it under the terms of
# the GNU General Public License version 2.
# There is NO WARRANTY, to the extent permitted by law.
@@ -49,7 +49,11 @@ class CatapultSystem (SystemInterface):
def split_cpv (self, cpv):
- return [str(x) for x in self.proxy.split_cpv(cpv)]
+ split = self.proxy.split_cpv(cpv)
+ if all(split):
+ return map(str, split)
+ else:
+ return None
def cpv_matches (self, cpv, criterion):
return CatapultPackage(cpv).matches(criterion)
@@ -63,9 +67,12 @@ class CatapultSystem (SystemInterface):
def find_best_match (self, search_key, masked = False, only_installed = False, only_cpv = False):
p = self.proxy.find_best_match(search_key, masked, only_installed)
- if p and not only_cpv:
- return CatapultPackage(p)
- return str(p)
+ if p :
+ if not only_cpv:
+ return CatapultPackage(p)
+ else:
+ return str(p)
+ return None
def find_packages (self, search_key, masked = False, only_cpv = False):
return self.geneticize_list(self.proxy.find_packages(search_key, "all", masked, True), only_cpv)
@@ -156,7 +163,20 @@ class CatapultSystem (SystemInterface):
# return [(CatapultPackage(x), CatapultPackage(y)) for x,y in self.proxy.update_world(newuse, deep, {}, timeout = 300)]
def get_updated_packages (self):
- return self.geneticize_list(self.proxy.get_updated_packages())
+ ret = []
+ e = Event()
+
+ def wait (list):
+ ret.extend([CatapultPackage(x) for x in list])
+ e.set()
+
+ def error (ex):
+ e.set()
+ raise ex
+
+ self.proxy.get_updated_packages(reply_handler = wait, error_handler = error, timeout = 300)
+ e.wait()
+ return ret
def get_use_desc (self, flag, package = None):
if not package: