diff options
author | René 'Necoro' Neumann <necoro@necoro.net> | 2008-09-02 13:01:17 +0200 |
---|---|---|
committer | René 'Necoro' Neumann <necoro@necoro.net> | 2008-09-02 13:01:17 +0200 |
commit | afa1de13f0576ace6dcbb0176490fd20922950cd (patch) | |
tree | 056a5fd646f53dfa83f2fe231ec0943747b15ffc /portato/backend/portage | |
parent | 02d96210d9102f0cdec95b4e0f595cbd8fdd1e10 (diff) | |
download | portato-afa1de13f0576ace6dcbb0176490fd20922950cd.tar.gz portato-afa1de13f0576ace6dcbb0176490fd20922950cd.tar.bz2 portato-afa1de13f0576ace6dcbb0176490fd20922950cd.zip |
Switch from tabs to 4 spaces
Diffstat (limited to 'portato/backend/portage')
-rw-r--r-- | portato/backend/portage/__init__.py | 8 | ||||
-rw-r--r-- | portato/backend/portage/package.py | 572 | ||||
-rw-r--r-- | portato/backend/portage/package_22.py | 10 | ||||
-rw-r--r-- | portato/backend/portage/sets.py | 168 | ||||
-rw-r--r-- | portato/backend/portage/settings.py | 78 | ||||
-rw-r--r-- | portato/backend/portage/settings_22.py | 12 | ||||
-rw-r--r-- | portato/backend/portage/system.py | 768 | ||||
-rw-r--r-- | portato/backend/portage/system_22.py | 60 |
8 files changed, 838 insertions, 838 deletions
diff --git a/portato/backend/portage/__init__.py b/portato/backend/portage/__init__.py index be6cce6..02a4a82 100644 --- a/portato/backend/portage/__init__.py +++ b/portato/backend/portage/__init__.py @@ -17,8 +17,8 @@ from portage import VERSION as PV VERSION = tuple(map(int, (x.split("_")[0] for x in PV.split(".")))) if VERSION >= (2, 2): - from .system_22 import PortageSystem_22 as PortageSystem - from .package_22 import PortagePackage_22 as PortagePackage + from .system_22 import PortageSystem_22 as PortageSystem + from .package_22 import PortagePackage_22 as PortagePackage else: - from .system import PortageSystem - from .package import PortagePackage + from .system import PortageSystem + from .package import PortagePackage diff --git a/portato/backend/portage/package.py b/portato/backend/portage/package.py index 351b7e0..0270029 100644 --- a/portato/backend/portage/package.py +++ b/portato/backend/portage/package.py @@ -21,294 +21,294 @@ from ...helper import debug, error, unique_array import portage try: - import portage.dep as portage_dep + import portage.dep as portage_dep except ImportError: - import portage_dep + import portage_dep import os.path class PortagePackage (Package): - """This is a class abstracting a normal package which can be installed for the portage-system.""" - - def __init__ (self, cpv): - """Constructor. - - @param cpv: The cpv which describes the package to create. - @type cpv: string (cat/pkg-ver)""" - - Package.__init__(self, cpv) - self._scpv = system.split_cpv(self._cpv) - - if not self._scpv: - raise ValueError("invalid cpv: %s" % cpv) - - self._settings = system.settings - self._settingslock = system.settings.settingslock - self._settings_installed = None - - self._trees = system.settings.trees - - self.forced_flags = set() - - with self._settingslock: - self._init_settings(True) - self.forced_flags.update(self._settings.settings.usemask) - self.forced_flags.update(self._settings.settings.useforce) - - try: - self._status = portage.getmaskingstatus(self.get_cpv(), settings = self._settings.settings) - except KeyError: # package is not located in the system - self._status = None - - if self._status and len(self._status) == 1 and self._status[0] == "corrupted": - self._status = None - - def _init_settings (self, installed): - inst = (installed and self.is_installed()) or (self.is_installed() and not self.is_in_system()) - - if self._settings_installed is not None and self._settings_installed != inst: - self._settings.settings.reset() - - self._settings_installed = inst - - if inst: - dbapi = self._settings.vartree.dbapi - else: - dbapi = self._settings.porttree.dbapi - - self._settings.settings.setcpv(self.get_cpv(), mydb = dbapi) - - def get_name(self): - return self._scpv[1] - - def get_version(self): - v = self._scpv[2] - if self._scpv[3] != "r0": - v += "-" + self._scpv[3] - return v - - def get_category(self): - return self._scpv[0] - - def is_installed(self): - return self._settings.vartree.dbapi.cpv_exists(self._cpv) - - def is_in_overlay(self): - ovl = self.get_overlay_path() - return ovl != self._settings.settings["PORTDIR"] and str(ovl) != "0" - - def get_overlay_path (self): - dir,ovl = self._settings.porttree.dbapi.findname2(self._cpv) - return ovl - - def is_in_system (self): - return (self._status != None) - - def is_missing_keyword(self): - return self._status and "missing keyword" in self._status - - def is_testing(self, use_keywords = True): - testArch = "~" + self.get_global_settings("ARCH") - if not use_keywords: # keywords are NOT taken into account - return testArch in self.get_package_settings("KEYWORDS").split() - - else: # keywords are taken into account - status = flags.new_testing_status(self.get_cpv()) - if status is None: # we haven't changed it in any way - return self._status and testArch+" keyword" in self._status - else: - return status - - def is_masked (self, use_changed = True): - - if use_changed: - status = flags.new_masking_status(self.get_cpv()) - if status != None: # we have locally changed it - if status == "masked": return True - elif status == "unmasked": return False - else: - error(_("BUG in flags.new_masking_status. It returns \'%s\'"), status) - else: # we have not touched the status - return self._status and ("profile" in self._status or "package.mask" in self._status) - - else: # we want the original portage value XXX: bug if masked by user AND by system - - # get the normal masked ones - if self._status and ("profile" in self._status or "package.mask" in self._status): - return not flags.is_locally_masked(self, changes = False) # assume that if it is locally masked, it is not masked by the system - 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): - return not flags.is_locally_masked(self, changes = False) # assume that if it is locally masked, it is not masked by the system - - return False - - def get_masking_reason(self): - reason = portage.getmaskingreason(self.get_cpv(), settings = self._settings.settings) - - if reason: - return reason.strip() - else: - return reason - - def get_iuse_flags (self, installed = False, removeForced = True): - if not self.is_in_system(): - installed = True - - iuse = flags.filter_defaults(self.get_package_settings("IUSE", installed = installed).split()) - - iuse = set(iuse) - - if removeForced: - return list(iuse.difference(self.forced_flags)) - else: - return list(iuse) - - def get_matched_dep_packages (self, depvar): - # change the useflags, because we have internally changed some, but not made them visible for portage - actual = self.get_actual_use_flags() - - depstring = "" - try: - for d in depvar: - depstring += self.get_package_settings(d, installed = False)+" " - except KeyError: # not found in porttree - use vartree - depstring = "" - for d in depvar: - depstring += self.get_package_settings(d, installed = True)+" " - - deps = portage.dep_check(depstring, None, self._settings.settings, myuse = actual, trees = self._trees) - - if not deps: # FIXME: what is the difference to [1, []] ? - return [] - - if deps[0] == 0: # error - raise DependencyCalcError, deps[1] - - deps = deps[1] - - return [d for d in deps if d[0] != "!"] - - def get_dep_packages (self, depvar = ["RDEPEND", "PDEPEND", "DEPEND"], with_criterions = False, return_blocks = False): - dep_pkgs = [] # the package list - - # change the useflags, because we have internally changed some, but not made them visible for portage - actual = self.get_actual_use_flags() - - depstring = "" - for d in depvar: - depstring += self.get_package_settings(d, installed = False)+" " - - # let portage do the main stuff ;) - # pay attention to any changes here - deps = portage.dep_check (depstring, self._settings.vartree.dbapi, self._settings.settings, myuse = actual, trees = self._trees) - - if not deps: # FIXME: what is the difference to [1, []] ? - return [] - - if deps[0] == 0: # error - raise DependencyCalcError, deps[1] - - deps = deps[1] - - def create_dep_pkgs_data (dep, pkg): - """Returns the data to enter into the dep_pkgs list, which is either the package cpv or a tuple - consisting of the cpv and the criterion.""" - if with_criterions: - return (pkg.get_cpv(), dep) - else: - return pkg.get_cpv() - - for dep in deps: - if dep[0] == '!': # blocking sth - blocked = system.find_packages(dep, system.SET_INSTALLED) - if len(blocked) == 1: # only exact one match allowed to be harmless - if blocked[0].get_slot_cp() == self.get_slot_cp(): # blocks in the same slot are harmless - continue - - if return_blocks: - if with_criterions: - dep_pkgs.append((dep, dep)) - else: - dep_pkgs.append(dep) - else: - raise BlockedException, (self.get_cpv(), blocked[0].get_cpv()) - - continue # finished with the blocking one -> next - - pkg = system.find_best_match(dep) - if not pkg: # try to find masked ones - pkgs = system.find_packages(dep, masked = True) - if not pkgs: - raise PackageNotFoundException, dep - - pkgs = system.sort_package_list(pkgs) - pkgs.reverse() - done = False - for p in pkgs: - if not p.is_masked(): - dep_pkgs.append(create_dep_pkgs_data(dep, p)) - done = True - break - if not done: - dep_pkgs.append(create_dep_pkgs_data(dep, pkgs[0])) - else: - dep_pkgs.append(create_dep_pkgs_data(dep, pkg)) - - return dep_pkgs - - def get_global_settings(self, key, installed = True): - with self._settingslock: - self._init_settings(installed) - v = self._settings.settings[key] - - return v - - def get_ebuild_path(self): - if self.is_in_system(): - return self._settings.porttree.dbapi.findname(self._cpv) - else: - return self._settings.vartree.dbapi.findname(self._cpv) - - def get_files (self): - if self.is_installed(): - path = os.path.join(self.get_global_settings("ROOT"), portage.VDB_PATH, self.get_cpv(), "CONTENTS") - with open(path) as f: - for line in f: - yield line.split()[1].strip() - - def get_package_settings(self, var, installed = True): - if installed and self.is_installed(): - mytree = self._settings.vartree - else: - mytree = self._settings.porttree - - r = mytree.dbapi.aux_get(self._cpv,[var]) - - return r[0] - - def get_installed_use_flags(self): - if self.is_installed(): - return self.get_package_settings("USE", installed = True).split() - else: return [] - - def compare_version(self,other): - v1 = self._scpv - v2 = portage.catpkgsplit(other.get_cpv()) - # if category is different - if v1[0] != v2[0]: - return cmp(v1[0],v2[0]) - # if name is different - elif v1[1] != v2[1]: - return cmp(v1[1],v2[1]) - # Compare versions - else: - return portage.pkgcmp(v1[1:],v2[1:]) - - def matches (self, criterion): - return system.cpv_matches(self.get_cpv(), criterion) + """This is a class abstracting a normal package which can be installed for the portage-system.""" + + def __init__ (self, cpv): + """Constructor. + + @param cpv: The cpv which describes the package to create. + @type cpv: string (cat/pkg-ver)""" + + Package.__init__(self, cpv) + self._scpv = system.split_cpv(self._cpv) + + if not self._scpv: + raise ValueError("invalid cpv: %s" % cpv) + + self._settings = system.settings + self._settingslock = system.settings.settingslock + self._settings_installed = None + + self._trees = system.settings.trees + + self.forced_flags = set() + + with self._settingslock: + self._init_settings(True) + self.forced_flags.update(self._settings.settings.usemask) + self.forced_flags.update(self._settings.settings.useforce) + + try: + self._status = portage.getmaskingstatus(self.get_cpv(), settings = self._settings.settings) + except KeyError: # package is not located in the system + self._status = None + + if self._status and len(self._status) == 1 and self._status[0] == "corrupted": + self._status = None + + def _init_settings (self, installed): + inst = (installed and self.is_installed()) or (self.is_installed() and not self.is_in_system()) + + if self._settings_installed is not None and self._settings_installed != inst: + self._settings.settings.reset() + + self._settings_installed = inst + + if inst: + dbapi = self._settings.vartree.dbapi + else: + dbapi = self._settings.porttree.dbapi + + self._settings.settings.setcpv(self.get_cpv(), mydb = dbapi) + + def get_name(self): + return self._scpv[1] + + def get_version(self): + v = self._scpv[2] + if self._scpv[3] != "r0": + v += "-" + self._scpv[3] + return v + + def get_category(self): + return self._scpv[0] + + def is_installed(self): + return self._settings.vartree.dbapi.cpv_exists(self._cpv) + + def is_in_overlay(self): + ovl = self.get_overlay_path() + return ovl != self._settings.settings["PORTDIR"] and str(ovl) != "0" + + def get_overlay_path (self): + dir,ovl = self._settings.porttree.dbapi.findname2(self._cpv) + return ovl + + def is_in_system (self): + return (self._status != None) + + def is_missing_keyword(self): + return self._status and "missing keyword" in self._status + + def is_testing(self, use_keywords = True): + testArch = "~" + self.get_global_settings("ARCH") + if not use_keywords: # keywords are NOT taken into account + return testArch in self.get_package_settings("KEYWORDS").split() + + else: # keywords are taken into account + status = flags.new_testing_status(self.get_cpv()) + if status is None: # we haven't changed it in any way + return self._status and testArch+" keyword" in self._status + else: + return status + + def is_masked (self, use_changed = True): + + if use_changed: + status = flags.new_masking_status(self.get_cpv()) + if status != None: # we have locally changed it + if status == "masked": return True + elif status == "unmasked": return False + else: + error(_("BUG in flags.new_masking_status. It returns \'%s\'"), status) + else: # we have not touched the status + return self._status and ("profile" in self._status or "package.mask" in self._status) + + else: # we want the original portage value XXX: bug if masked by user AND by system + + # get the normal masked ones + if self._status and ("profile" in self._status or "package.mask" in self._status): + return not flags.is_locally_masked(self, changes = False) # assume that if it is locally masked, it is not masked by the system + 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): + return not flags.is_locally_masked(self, changes = False) # assume that if it is locally masked, it is not masked by the system + + return False + + def get_masking_reason(self): + reason = portage.getmaskingreason(self.get_cpv(), settings = self._settings.settings) + + if reason: + return reason.strip() + else: + return reason + + def get_iuse_flags (self, installed = False, removeForced = True): + if not self.is_in_system(): + installed = True + + iuse = flags.filter_defaults(self.get_package_settings("IUSE", installed = installed).split()) + + iuse = set(iuse) + + if removeForced: + return list(iuse.difference(self.forced_flags)) + else: + return list(iuse) + + def get_matched_dep_packages (self, depvar): + # change the useflags, because we have internally changed some, but not made them visible for portage + actual = self.get_actual_use_flags() + + depstring = "" + try: + for d in depvar: + depstring += self.get_package_settings(d, installed = False)+" " + except KeyError: # not found in porttree - use vartree + depstring = "" + for d in depvar: + depstring += self.get_package_settings(d, installed = True)+" " + + deps = portage.dep_check(depstring, None, self._settings.settings, myuse = actual, trees = self._trees) + + if not deps: # FIXME: what is the difference to [1, []] ? + return [] + + if deps[0] == 0: # error + raise DependencyCalcError, deps[1] + + deps = deps[1] + + return [d for d in deps if d[0] != "!"] + + def get_dep_packages (self, depvar = ["RDEPEND", "PDEPEND", "DEPEND"], with_criterions = False, return_blocks = False): + dep_pkgs = [] # the package list + + # change the useflags, because we have internally changed some, but not made them visible for portage + actual = self.get_actual_use_flags() + + depstring = "" + for d in depvar: + depstring += self.get_package_settings(d, installed = False)+" " + + # let portage do the main stuff ;) + # pay attention to any changes here + deps = portage.dep_check (depstring, self._settings.vartree.dbapi, self._settings.settings, myuse = actual, trees = self._trees) + + if not deps: # FIXME: what is the difference to [1, []] ? + return [] + + if deps[0] == 0: # error + raise DependencyCalcError, deps[1] + + deps = deps[1] + + def create_dep_pkgs_data (dep, pkg): + """Returns the data to enter into the dep_pkgs list, which is either the package cpv or a tuple + consisting of the cpv and the criterion.""" + if with_criterions: + return (pkg.get_cpv(), dep) + else: + return pkg.get_cpv() + + for dep in deps: + if dep[0] == '!': # blocking sth + blocked = system.find_packages(dep, system.SET_INSTALLED) + if len(blocked) == 1: # only exact one match allowed to be harmless + if blocked[0].get_slot_cp() == self.get_slot_cp(): # blocks in the same slot are harmless + continue + + if return_blocks: + if with_criterions: + dep_pkgs.append((dep, dep)) + else: + dep_pkgs.append(dep) + else: + raise BlockedException, (self.get_cpv(), blocked[0].get_cpv()) + + continue # finished with the blocking one -> next + + pkg = system.find_best_match(dep) + if not pkg: # try to find masked ones + pkgs = system.find_packages(dep, masked = True) + if not pkgs: + raise PackageNotFoundException, dep + + pkgs = system.sort_package_list(pkgs) + pkgs.reverse() + done = False + for p in pkgs: + if not p.is_masked(): + dep_pkgs.append(create_dep_pkgs_data(dep, p)) + done = True + break + if not done: + dep_pkgs.append(create_dep_pkgs_data(dep, pkgs[0])) + else: + dep_pkgs.append(create_dep_pkgs_data(dep, pkg)) + + return dep_pkgs + + def get_global_settings(self, key, installed = True): + with self._settingslock: + self._init_settings(installed) + v = self._settings.settings[key] + + return v + + def get_ebuild_path(self): + if self.is_in_system(): + return self._settings.porttree.dbapi.findname(self._cpv) + else: + return self._settings.vartree.dbapi.findname(self._cpv) + + def get_files (self): + if self.is_installed(): + path = os.path.join(self.get_global_settings("ROOT"), portage.VDB_PATH, self.get_cpv(), "CONTENTS") + with open(path) as f: + for line in f: + yield line.split()[1].strip() + + def get_package_settings(self, var, installed = True): + if installed and self.is_installed(): + mytree = self._settings.vartree + else: + mytree = self._settings.porttree + + r = mytree.dbapi.aux_get(self._cpv,[var]) + + return r[0] + + def get_installed_use_flags(self): + if self.is_installed(): + return self.get_package_settings("USE", installed = True).split() + else: return [] + + def compare_version(self,other): + v1 = self._scpv + v2 = portage.catpkgsplit(other.get_cpv()) + # if category is different + if v1[0] != v2[0]: + return cmp(v1[0],v2[0]) + # if name is different + elif v1[1] != v2[1]: + return cmp(v1[1],v2[1]) + # Compare versions + else: + return portage.pkgcmp(v1[1:],v2[1:]) + + def matches (self, criterion): + return system.cpv_matches(self.get_cpv(), criterion) diff --git a/portato/backend/portage/package_22.py b/portato/backend/portage/package_22.py index 4fe03d9..1dae1fe 100644 --- a/portato/backend/portage/package_22.py +++ b/portato/backend/portage/package_22.py @@ -15,8 +15,8 @@ from __future__ import absolute_import, with_statement from .package import PortagePackage class PortagePackage_22 (PortagePackage): - """ - The 2.2 specialization of the portage package. - Currently this is identical to the normal one. - """ - pass + """ + The 2.2 specialization of the portage package. + Currently this is identical to the normal one. + """ + pass diff --git a/portato/backend/portage/sets.py b/portato/backend/portage/sets.py index 24ceaca..8d8ef28 100644 --- a/portato/backend/portage/sets.py +++ b/portato/backend/portage/sets.py @@ -17,130 +17,130 @@ import itertools as itt import portage try: - import portage.dep as portage_dep + import portage.dep as portage_dep except ImportError: - import portage_dep + import portage_dep from .. import system from ...helper import debug class Set(object): - def get_pkgs(self, key, is_regexp, masked, with_version, only_cpv): - raise NotImplementedError + def get_pkgs(self, key, is_regexp, masked, with_version, only_cpv): + raise NotImplementedError - def find (self, key, masked = False, with_version = True, only_cpv = False): - if key is None: key = "" - - is_regexp = key == "" or ("*" in key and key[0] not in ("*","=","<",">","~","!")) + def find (self, key, masked = False, with_version = True, only_cpv = False): + if key is None: key = "" + + is_regexp = key == "" or ("*" in key and key[0] not in ("*","=","<",">","~","!")) - try: - t = self.get_pkgs(key, is_regexp, masked, with_version, only_cpv) - # catch the "ambigous package" Exception - except ValueError, e: - if isinstance(e[0], list): - t = set() - for cp in e[0]: - t.update(self.get_pkgs(cp, is_regexp, masked, with_version, only_cpv)) - else: - raise + try: + t = self.get_pkgs(key, is_regexp, masked, with_version, only_cpv) + # catch the "ambigous package" Exception + except ValueError, e: + if isinstance(e[0], list): + t = set() + for cp in e[0]: + t.update(self.get_pkgs(cp, is_regexp, masked, with_version, only_cpv)) + else: + raise - return t + return t class FilterSet (Set): - def get_list(self): - raise NotImplementedError - - def get_pkgs (self, key, is_regexp, masked, with_version, only_cpv): - t = set() - for pkg in self.get_list(): - if is_regexp: - if not re.match(key, pkg, re.I): continue + def get_list(self): + raise NotImplementedError + + def get_pkgs (self, key, is_regexp, masked, with_version, only_cpv): + t = set() + for pkg in self.get_list(): + if is_regexp: + if not re.match(key, pkg, re.I): continue - if not with_version: - t.add(portage_dep.dep_getkey(pkg)) - - t.add(system.find_best_match(pkg, only_cpv = True)) + if not with_version: + t.add(portage_dep.dep_getkey(pkg)) + + t.add(system.find_best_match(pkg, only_cpv = True)) - return t + return t class PortageSet (FilterSet): - def __init__ (self, name): - FilterSet.__init__(self) - debug("Loading portage set '%s'", name) - self.portageSet = system.settings.setsconfig.getSets()[name] + def __init__ (self, name): + FilterSet.__init__(self) + debug("Loading portage set '%s'", name) + self.portageSet = system.settings.setsconfig.getSets()[name] - def get_list(self): - return itt.imap(str, self.portageSet.getAtoms()) + def get_list(self): + return itt.imap(str, self.portageSet.getAtoms()) class SystemSet (FilterSet): - def get_list(self): - for cp in system.settings.settings.packages: - if cp[0] == "*": yield cp[1:] + def get_list(self): + for cp in system.settings.settings.packages: + if cp[0] == "*": yield cp[1:] class WorldSet (FilterSet): - def get_list(self): - with open(portage.WORLD_FILE) as f: - for cp in f: - cp = cp.strip() - if cp and cp[0] != "#": - yield cp + def get_list(self): + with open(portage.WORLD_FILE) as f: + for cp in f: + cp = cp.strip() + if cp and cp[0] != "#": + yield cp class InstalledSet (Set): - def get_pkgs (self, key, is_regexp, masked, with_version, only_cpv): - if is_regexp: - if with_version: - t = system.settings.vartree.dbapi.cpv_all() - else: - t = system.settings.vartree.dbapi.cp_all() + def get_pkgs (self, key, is_regexp, masked, with_version, only_cpv): + if is_regexp: + if with_version: + t = system.settings.vartree.dbapi.cpv_all() + else: + t = system.settings.vartree.dbapi.cp_all() - if key: - t = filter(lambda x: re.match(key, x, re.I), t) + if key: + t = filter(lambda x: re.match(key, x, re.I), t) - return set(t) - else: - return set(system.settings.vartree.dbapi.match(key)) + return set(t) + else: + return set(system.settings.vartree.dbapi.match(key)) class TreeSet (Set): - def get_pkgs (self, key, is_regexp, masked, with_version, only_cpv): - if is_regexp: - if with_version: - t = system.settings.porttree.dbapi.cpv_all() - else: - t = system.settings.porttree.dbapi.cp_all() + def get_pkgs (self, key, is_regexp, masked, with_version, only_cpv): + if is_regexp: + if with_version: + t = system.settings.porttree.dbapi.cpv_all() + else: + t = system.settings.porttree.dbapi.cp_all() - if key: - t = filter(lambda x: re.match(key, x, re.I), t) + if key: + t = filter(lambda x: re.match(key, x, re.I), t) - elif masked: - t = system.settings.porttree.dbapi.xmatch("match-all", key) - else: - t = system.settings.porttree.dbapi.match(key) + elif masked: + t = system.settings.porttree.dbapi.xmatch("match-all", key) + else: + t = system.settings.porttree.dbapi.match(key) - return set(t) + return set(t) class AllSet (Set): - - def __init__ (self): - Set.__init__(self) - self.tree = TreeSet() - self.installed = InstalledSet() + + def __init__ (self): + Set.__init__(self) + self.tree = TreeSet() + self.installed = InstalledSet() - def find (self, *args, **kwargs): - return self.tree.find(*args, **kwargs) | self.installed.find(*args, **kwargs) + def find (self, *args, **kwargs): + return self.tree.find(*args, **kwargs) | self.installed.find(*args, **kwargs) class UninstalledSet (Set): - def __init__ (self): - Set.__init__(self) - self.all = AllSet() - self.installed = InstalledSet() + def __init__ (self): + Set.__init__(self) + self.all = AllSet() + self.installed = InstalledSet() - def find (self, *args, **kwargs): - return self.all.find(*args, **kwargs) - self.installed.find(*args, **kwargs) + def find (self, *args, **kwargs): + return self.all.find(*args, **kwargs) - self.installed.find(*args, **kwargs) diff --git a/portato/backend/portage/settings.py b/portato/backend/portage/settings.py index 5d466ad..0e7eccb 100644 --- a/portato/backend/portage/settings.py +++ b/portato/backend/portage/settings.py @@ -17,42 +17,42 @@ import portage from threading import Lock class PortageSettings: - """Encapsulation of the portage settings. - - @ivar settings: portage settings - @ivar settingslock: a simple Lock - @ivar trees: a dictionary of the trees - @ivar porttree: shortcut to C{trees[root]["porttree"]} - @ivar vartree: shortcut to C{trees[root]["vartree"]} - @ivar virtuals: shortcut to C{trees[root]["virtuals"]}""" - - def __init__ (self): - """Initializes the instance. Calls L{load()}.""" - self.settingslock = Lock() - self.trees = None - self.load() - - def load(self): - """(Re)loads the portage settings and sets the variables.""" - - kwargs = {} - for k, envvar in (("config_root", "PORTAGE_CONFIGROOT"), ("target_root", "ROOT")): - kwargs[k] = os.environ.get(envvar, None) - self.trees = portage.create_trees(trees=self.trees, **kwargs) - - self.settings = self.trees["/"]["vartree"].settings - - for myroot in self.trees: - if myroot != "/": - self.settings = self.trees[myroot]["vartree"].settings - break - - self.settings.unlock() - - root = self.settings["ROOT"] - - self.porttree = self.trees[root]["porttree"] - self.vartree = self.trees[root]["vartree"] - self.virtuals = self.trees[root]["virtuals"] - - portage.settings = None # we use our own one ... + """Encapsulation of the portage settings. + + @ivar settings: portage settings + @ivar settingslock: a simple Lock + @ivar trees: a dictionary of the trees + @ivar porttree: shortcut to C{trees[root]["porttree"]} + @ivar vartree: shortcut to C{trees[root]["vartree"]} + @ivar virtuals: shortcut to C{trees[root]["virtuals"]}""" + + def __init__ (self): + """Initializes the instance. Calls L{load()}.""" + self.settingslock = Lock() + self.trees = None + self.load() + + def load(self): + """(Re)loads the portage settings and sets the variables.""" + + kwargs = {} + for k, envvar in (("config_root", "PORTAGE_CONFIGROOT"), ("target_root", "ROOT")): + kwargs[k] = os.environ.get(envvar, None) + self.trees = portage.create_trees(trees=self.trees, **kwargs) + + self.settings = self.trees["/"]["vartree"].settings + + for myroot in self.trees: + if myroot != "/": + self.settings = self.trees[myroot]["vartree"].settings + break + + self.settings.unlock() + + root = self.settings["ROOT"] + + self.porttree = self.trees[root]["porttree"] + self.vartree = self.trees[root]["vartree"] + self.virtuals = self.trees[root]["virtuals"] + + portage.settings = None # we use our own one ... diff --git a/portato/backend/portage/settings_22.py b/portato/backend/portage/settings_22.py index a43d69e..5274b3b 100644 --- a/portato/backend/portage/settings_22.py +++ b/portato/backend/portage/settings_22.py @@ -16,12 +16,12 @@ import portage.sets from .settings import PortageSettings class PortageSettings_22 (PortageSettings): - """Enhances the normal PortageSettings in ways, that it adds the setsconfig.""" + """Enhances the normal PortageSettings in ways, that it adds the setsconfig.""" - def __init__ (self): - PortageSettings.__init__(self) + def __init__ (self): + PortageSettings.__init__(self) - def load (self): - PortageSettings.load(self) + def load (self): + PortageSettings.load(self) - self.setsconfig = portage.sets.load_default_config(self.settings, self.trees[self.settings["ROOT"]]) + self.setsconfig = portage.sets.load_default_config(self.settings, self.trees[self.settings["ROOT"]]) diff --git a/portato/backend/portage/system.py b/portato/backend/portage/system.py index 2394a10..e81951e 100644 --- a/portato/backend/portage/system.py +++ b/portato/backend/portage/system.py @@ -15,9 +15,9 @@ from __future__ import absolute_import, with_statement import re, os, os.path import portage try: - import portage.dep as portage_dep + import portage.dep as portage_dep except ImportError: - import portage_dep + import portage_dep from collections import defaultdict import itertools as itt @@ -30,386 +30,386 @@ from ..system_in |