summaryrefslogtreecommitdiff
path: root/portato/backend/portage/system_22.py
blob: 18e3b4e5f75c35069d232edf7547cf4b5aa6c551 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
# -*- coding: utf-8 -*-
#
# File: portato/backend/portage/system_22.py
# This file is part of the Portato-Project, a graphical portage-frontend.
#
# Copyright (C) 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.
#
# Written by René 'Necoro' Neumann <necoro@necoro.net>

from __future__ import absolute_import, with_statement

import os
import portage

from collections import defaultdict

from .package_22 import PortagePackage_22
from .settings_22 import PortageSettings_22
from .system import PortageSystem
from . import sets as syssets

class PortageSystem_22 (PortageSystem):

	def __init__ (self):
		self.settings = PortageSettings_22()
		portage.WORLD_FILE = os.path.join(self.settings.settings["ROOT"],portage.WORLD_FILE)

		self.use_descs = {}
		self.local_use_descs = defaultdict(dict)

		self.setmap = {
				self.SET_ALL : syssets.AllSet,
				self.SET_INSTALLED : syssets.InstalledSet,
				self.SET_UNINSTALLED : syssets.UninstalledSet,
				self.SET_TREE : syssets.TreeSet
				}

	def has_set_support (self):
		return True

	def get_sets (self, description = False):
		if description:
			return ((name, set.description) for name, set in self.settings.setsconfig.getSets().iteritems())
		else:
			return tuple(self.settings.setsconfig.getSets())

	def _get_set (self, pkgSet):
		pkgSet = pkgSet.lower()
		if pkgSet == "": pkgSet = self.SET_ALL

		s = self.setmap.get(pkgSet, None)
		if s is None:
			return syssets.PortageSet(pkgSet)
		else:
			return s()

	def new_package (self, cpv):
		return PortagePackage_22(cpv)