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
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
|
# Copyright 2007 Gentoo Foundation
# Distributed under the terms of the GNU General Public License v2
# $Id$
import os
OPERATIONS = ["merge", "unmerge"]
DEFAULT_SETS = ["world", "system", "everything", "security"] \
+["package_"+x for x in ["mask", "unmask", "use", "keywords"]]
del x
def make_default_sets(configroot, root, profile_paths, settings=None,
vdbapi=None, portdbapi=None):
from portage.sets.files import StaticFileSet, ConfigFileSet
from portage.sets.profiles import PackagesSystemSet
from portage.sets.security import NewAffectedSet
from portage.sets.dbapi import EverythingSet
from portage.const import PRIVATE_PATH, USER_CONFIG_PATH
rValue = set()
worldset = StaticFileSet("world", os.path.join(root, PRIVATE_PATH, "world"))
worldset.description = "Set of packages that were directly installed"
rValue.add(worldset)
for suffix in ["mask", "unmask", "keywords", "use"]:
myname = "package_"+suffix
myset = ConfigFileSet(myname, os.path.join(configroot, USER_CONFIG_PATH.lstrip(os.sep), "package."+suffix))
rValue.add(myset)
rValue.add(PackagesSystemSet("system", profile_paths))
if settings != None and portdbapi != None:
rValue.add(NewAffectedSet("security", settings, vdbapi, portdbapi))
else:
rValue.add(InternalPackageSet("security"))
if vdbapi != None:
rValue.add(EverythingSet("everything", vdbapi))
else:
rValue.add(InternalPackageSet("everything"))
return rValue
def make_extra_static_sets(configroot):
from portage.sets.files import StaticFileSet
from portage.const import PRIVATE_PATH, USER_CONFIG_PATH
rValue = set()
mydir = os.path.join(configroot, USER_CONFIG_PATH.lstrip(os.sep), "sets")
try:
mysets = os.listdir(mydir)
except (OSError, IOError):
return rValue
for myname in mysets:
if myname in DEFAULT_SETS:
continue
rValue.add(StaticFileSet(myname, os.path.join(mydir, myname)))
return rValue
def make_category_sets(portdbapi, settings, only_visible=True):
from portage.sets.dbapi import CategorySet
rValue = set()
for c in settings.categories:
rValue.add(CategorySet("category_%s" % c, c, portdbapi, only_visible=only_visible))
return rValue
# adhoc test code
if __name__ == "__main__":
import portage, sys, os
from portage.sets.dbapi import CategorySet
from portage.sets.files import StaticFileSet
l = make_default_sets("/", "/", portage.settings.profiles, portage.settings, portage.db["/"]["vartree"].dbapi, portage.db["/"]["porttree"].dbapi)
l.update(make_extra_static_sets("/"))
if len(sys.argv) > 1:
for s in sys.argv[1:]:
if s.startswith("category_"):
c = s[9:]
l.add(CategorySet("category_%s" % c, c, portage.db['/']['porttree'].dbapi, only_visible=False))
elif os.path.exists(s):
l.add(StaticFileSet(os.path.basename(s), s))
elif s != "*":
print "ERROR: could not create set '%s'" % s
if not "*" in sys.argv:
l = [s for s in l if s.name in sys.argv[1:]]
for x in l:
print x.name+":"
print "DESCRIPTION = %s" % x.getMetadata("Description")
for n in sorted(x.getAtoms()):
print "- "+n
print
|