Gentoo Archives: gentoo-commits

From: "Александр Берсенев" <bay@×××××××××.ru>
To: gentoo-commits@l.g.o
Subject: [gentoo-commits] proj/autodep:master commit in: portage_with_autodep/pym/_emerge/
Date: Mon, 03 Oct 2011 19:44:53
Message-Id: 14c641d3404c14cc87c2fa91ddc761d9a804912b.bay@gentoo
1 commit: 14c641d3404c14cc87c2fa91ddc761d9a804912b
2 Author: Alexander Bersenev <bay <AT> hackerdom <DOT> ru>
3 AuthorDate: Mon Oct 3 16:00:07 2011 +0000
4 Commit: Александр Берсенев <bay <AT> hackerdom <DOT> ru>
5 CommitDate: Mon Oct 3 16:00:07 2011 +0000
6 URL: http://git.overlays.gentoo.org/gitweb/?p=proj/autodep.git;a=commit;h=14c641d3
7
8 apply previous commit to modfied version of emerge
9
10 ---
11 portage_with_autodep/pym/_emerge/EventsAnalyser.py | 89 ++++++++++++--------
12 1 files changed, 53 insertions(+), 36 deletions(-)
13
14 diff --git a/portage_with_autodep/pym/_emerge/EventsAnalyser.py b/portage_with_autodep/pym/_emerge/EventsAnalyser.py
15 index df7a345..da4ba93 100644
16 --- a/portage_with_autodep/pym/_emerge/EventsAnalyser.py
17 +++ b/portage_with_autodep/pym/_emerge/EventsAnalyser.py
18 @@ -18,39 +18,51 @@ class PortageUtils:
19 self.metadata_keys = [k for k in portage.auxdbkeys if not k.startswith("UNUSED_")]
20 self.use=self.settings["USE"]
21
22 - def get_best_visible_pkg(self,pkg):
23 + def get_best_visible_pkg(self,pkg,db="portdb"):
24 """
25 Gets best candidate on installing. Returns empty string if no found
26
27 :param pkg: package name
28 + :param db: name of db to look. Can be "vardb" or "portdb"
29
30 """
31 try:
32 - return self.portdbapi.xmatch("bestmatch-visible", pkg)
33 + if db=="portdb":
34 + return self.portdbapi.xmatch("bestmatch-visible", pkg)
35 + elif db=="vardb":
36 + return self.vardbapi.match(pkg)[0]
37 + else:
38 + return ''
39 except:
40 return ''
41
42 # non-recursive dependency getter
43 - def get_dep(self,pkg,dep_type=["RDEPEND","DEPEND"]):
44 + def get_dep(self,pkg,dep_type=["RDEPEND","DEPEND"],db="portdb"):
45 """
46 Gets current dependencies of a package. Looks in portage db
47
48 :param pkg: name of package
49 :param dep_type: type of dependencies to recurse. Can be ["DEPEND"] or
50 ["RDEPEND", "DEPEND"]
51 + :param db: name of db to look. Can be "vardb" or "portdb"
52 :returns: **set** of packages names
53 """
54 ret=set()
55
56 - pkg = self.get_best_visible_pkg(pkg)
57 + pkg = self.get_best_visible_pkg(pkg,db)
58 if not pkg:
59 return ret
60
61 # we found the best visible match in common tree
62
63 + if db=="portdb":
64 + aux_get=self.portdbapi.aux_get
65 + elif db=="vardb":
66 + aux_get=self.vardbapi.aux_get
67 + else:
68 + return ret
69
70 - metadata = dict(zip(self.metadata_keys,
71 - self.portdbapi.aux_get(pkg, self.metadata_keys)))
72 + metadata = dict(zip(self.metadata_keys, aux_get(pkg, self.metadata_keys)))
73 dep_str = " ".join(metadata[k] for k in dep_type)
74
75 # the IUSE default are very important for us
76 @@ -82,7 +94,7 @@ class PortageUtils:
77 return ret
78
79 # recursive dependency getter
80 - def get_deps(self,pkg,dep_type=["RDEPEND","DEPEND"]):
81 + def get_deps(self,pkg,dep_type=["RDEPEND","DEPEND"],db="portdb"):
82 """
83 Gets current dependencies of a package on any depth
84 All dependencies **must** be installed
85 @@ -90,19 +102,20 @@ class PortageUtils:
86 :param pkg: name of package
87 :param dep_type: type of dependencies to recurse. Can be ["DEPEND"] or
88 ["RDEPEND", "DEPEND"]
89 + :param db: name of db to look. Can be "vardb" or "portdb"
90 :returns: **set** of packages names
91 """
92 ret=set()
93
94 -
95 + import pdb; pdb.set_trace()
96 # get porttree dependencies on the first package
97
98 - pkg = self.portdbapi.xmatch("bestmatch-visible", pkg)
99 + pkg = self.get_best_visible_pkg(pkg,db)
100 if not pkg:
101 return ret
102
103 known_packages=set()
104 - unknown_packages=self.get_dep(pkg,dep_type)
105 + unknown_packages=self.get_dep(pkg,dep_type,db)
106 ret=ret.union(unknown_packages)
107
108 while unknown_packages:
109 @@ -111,36 +124,40 @@ class PortageUtils:
110 continue
111 known_packages.add(p)
112
113 - metadata = dict(zip(self.metadata_keys, self.vardbapi.aux_get(p, self.metadata_keys)))
114 + current_deps=self.get_dep(p,dep_type,'vardb')
115 + unknown_packages=unknown_packages.union(current_deps)
116 + ret=ret.union(current_deps)
117 +
118 + #metadata = dict(zip(self.metadata_keys, self.vardbapi.aux_get(p, self.metadata_keys)))
119
120 - dep_str = " ".join(metadata[k] for k in dep_type)
121 + #dep_str = " ".join(metadata[k] for k in dep_type)
122
123 # the IUSE default are very important for us
124 - iuse_defaults=[
125 - u[1:] for u in metadata.get("IUSE",'').split() if u.startswith("+")]
126 + #iuse_defaults=[
127 + # u[1:] for u in metadata.get("IUSE",'').split() if u.startswith("+")]
128
129 - use=self.use.split()
130 + #use=self.use.split()
131
132 - for u in iuse_defaults:
133 - if u not in use:
134 - use.append(u)
135 + #for u in iuse_defaults:
136 + # if u not in use:
137 + # use.append(u)
138
139 - success, atoms = portage.dep_check(dep_str, None, self.settings,
140 - myuse=use, myroot=self.settings["ROOT"],
141 - trees={self.settings["ROOT"]:{"vartree":self.vartree,"porttree": self.vartree}})
142 -
143 - if not success:
144 - continue
145 -
146 - for atom in atoms:
147 - atomname = self.vartree.dep_bestmatch(atom)
148 - if not atomname:
149 - continue
150 -
151 - for unvirt_pkg in expand_new_virt(self.vardbapi,'='+atomname):
152 - for pkg in self.vartree.dep_match(unvirt_pkg):
153 - ret.add(pkg)
154 - unknown_packages.add(pkg)
155 + #success, atoms = portage.dep_check(dep_str, None, self.settings,
156 + # myuse=use, myroot=self.settings["ROOT"],
157 + # trees={self.settings["ROOT"]:{"vartree":self.vartree,"porttree": self.vartree}})
158 +
159 + #if not success:
160 + # continue
161 +
162 + #for atom in atoms:
163 + # atomname = self.vartree.dep_bestmatch(atom)
164 + # if not atomname:
165 + # continue
166 + #
167 + # for unvirt_pkg in expand_new_virt(self.vardbapi,'='+atomname):
168 + # for pkg in self.vartree.dep_match(unvirt_pkg):
169 + # ret.add(pkg)
170 + # unknown_packages.add(pkg)
171 return ret
172
173 def get_deps_for_package_building(self, pkg):
174 @@ -148,10 +165,10 @@ class PortageUtils:
175 returns buildtime dependencies of current package and
176 all runtime dependencies of that buildtime dependencies
177 """
178 - buildtime_deps=self.get_dep(pkg, ["DEPEND"])
179 + buildtime_deps=self.get_dep(pkg, ["DEPEND"],"portdb")
180 runtime_deps=set()
181 for dep in buildtime_deps:
182 - runtime_deps=runtime_deps.union(self.get_deps(dep,["RDEPEND"]))
183 + runtime_deps=runtime_deps.union(self.get_deps(dep,["RDEPEND"],"vardb"))
184
185 ret=buildtime_deps.union(runtime_deps)