From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from pigeon.gentoo.org ([208.92.234.80] helo=lists.gentoo.org) by finch.gentoo.org with esmtp (Exim 4.60) (envelope-from ) id 1RAoRZ-0002AX-1j for garchives@archives.gentoo.org; Mon, 03 Oct 2011 19:44:53 +0000 Received: from pigeon.gentoo.org (localhost [127.0.0.1]) by pigeon.gentoo.org (Postfix) with SMTP id 96D9C21C092; Mon, 3 Oct 2011 19:44:10 +0000 (UTC) Received: from smtp.gentoo.org (smtp.gentoo.org [140.211.166.183]) by pigeon.gentoo.org (Postfix) with ESMTP id 5719721C092 for ; Mon, 3 Oct 2011 19:44:09 +0000 (UTC) Received: from pelican.gentoo.org (unknown [66.219.59.40]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by smtp.gentoo.org (Postfix) with ESMTPS id 5ED131B401F for ; Mon, 3 Oct 2011 19:44:09 +0000 (UTC) Received: from localhost.localdomain (localhost [127.0.0.1]) by pelican.gentoo.org (Postfix) with ESMTP id B40A88004C for ; Mon, 3 Oct 2011 19:44:08 +0000 (UTC) From: "Александр Берсенев" To: gentoo-commits@lists.gentoo.org Content-type: text/plain; charset=UTF-8 Reply-To: gentoo-dev@lists.gentoo.org, "Александр Берсенев" Message-ID: <14c641d3404c14cc87c2fa91ddc761d9a804912b.bay@gentoo> Subject: [gentoo-commits] proj/autodep:master commit in: portage_with_autodep/pym/_emerge/ X-VCS-Repository: proj/autodep X-VCS-Files: portage_with_autodep/pym/_emerge/EventsAnalyser.py X-VCS-Directories: portage_with_autodep/pym/_emerge/ X-VCS-Committer: bay X-VCS-Committer-Name: Александр Берсенев X-VCS-Revision: 14c641d3404c14cc87c2fa91ddc761d9a804912b Date: Mon, 3 Oct 2011 19:44:08 +0000 (UTC) Precedence: bulk List-Post: List-Help: List-Unsubscribe: List-Subscribe: List-Id: Gentoo Linux mail X-BeenThere: gentoo-commits@lists.gentoo.org Content-Transfer-Encoding: quoted-printable X-Archives-Salt: X-Archives-Hash: 1c11ea3425165059a2b4d08ae06fd820 commit: 14c641d3404c14cc87c2fa91ddc761d9a804912b Author: Alexander Bersenev hackerdom ru> AuthorDate: Mon Oct 3 16:00:07 2011 +0000 Commit: =D0=90=D0=BB=D0=B5=D0=BA=D1=81=D0=B0=D0=BD=D0=B4=D1=80 =D0=91= =D0=B5=D1=80=D1=81=D0=B5=D0=BD=D0=B5=D0=B2 hackerdom ru> CommitDate: Mon Oct 3 16:00:07 2011 +0000 URL: http://git.overlays.gentoo.org/gitweb/?p=3Dproj/autodep.git;a= =3Dcommit;h=3D14c641d3 apply previous commit to modfied version of emerge --- portage_with_autodep/pym/_emerge/EventsAnalyser.py | 89 ++++++++++++--= ------ 1 files changed, 53 insertions(+), 36 deletions(-) diff --git a/portage_with_autodep/pym/_emerge/EventsAnalyser.py b/portage= _with_autodep/pym/_emerge/EventsAnalyser.py index df7a345..da4ba93 100644 --- a/portage_with_autodep/pym/_emerge/EventsAnalyser.py +++ b/portage_with_autodep/pym/_emerge/EventsAnalyser.py @@ -18,39 +18,51 @@ class PortageUtils: self.metadata_keys =3D [k for k in portage.auxdbkeys if not k.startswi= th("UNUSED_")] self.use=3Dself.settings["USE"] =20 - def get_best_visible_pkg(self,pkg): + def get_best_visible_pkg(self,pkg,db=3D"portdb"): """ Gets best candidate on installing. Returns empty string if no found =20 :param pkg: package name + :param db: name of db to look. Can be "vardb" or "portdb"=20 =20 """ try: - return self.portdbapi.xmatch("bestmatch-visible", pkg) + if db=3D=3D"portdb": + return self.portdbapi.xmatch("bestmatch-visible", pkg) + elif db=3D=3D"vardb": + return self.vardbapi.match(pkg)[0] + else: + return '' except: return '' =20 # non-recursive dependency getter - def get_dep(self,pkg,dep_type=3D["RDEPEND","DEPEND"]): + def get_dep(self,pkg,dep_type=3D["RDEPEND","DEPEND"],db=3D"portdb"): """ Gets current dependencies of a package. Looks in portage db =20 :param pkg: name of package :param dep_type: type of dependencies to recurse. Can be ["DEPEND"] o= r=20 ["RDEPEND", "DEPEND"] + :param db: name of db to look. Can be "vardb" or "portdb" :returns: **set** of packages names """ ret=3Dset() =20 - pkg =3D self.get_best_visible_pkg(pkg)=09 + pkg =3D self.get_best_visible_pkg(pkg,db)=09 if not pkg: return ret =20 # we found the best visible match in common tree =20 + if db=3D=3D"portdb": + aux_get=3Dself.portdbapi.aux_get + elif db=3D=3D"vardb": + aux_get=3Dself.vardbapi.aux_get + else: + return ret =20 - metadata =3D dict(zip(self.metadata_keys,=20 - self.portdbapi.aux_get(pkg, self.metadata_keys))) + metadata =3D dict(zip(self.metadata_keys, aux_get(pkg, self.metadata_= keys))) dep_str =3D " ".join(metadata[k] for k in dep_type) =20 # the IUSE default are very important for us @@ -82,7 +94,7 @@ class PortageUtils: return ret =20 # recursive dependency getter - def get_deps(self,pkg,dep_type=3D["RDEPEND","DEPEND"]): + def get_deps(self,pkg,dep_type=3D["RDEPEND","DEPEND"],db=3D"portdb"): """=20 Gets current dependencies of a package on any depth=20 All dependencies **must** be installed @@ -90,19 +102,20 @@ class PortageUtils: :param pkg: name of package :param dep_type: type of dependencies to recurse. Can be ["DEPEND"] or= =20 ["RDEPEND", "DEPEND"] + :param db: name of db to look. Can be "vardb" or "portdb"=20 :returns: **set** of packages names """ ret=3Dset() =20 - + import pdb; pdb.set_trace() # get porttree dependencies on the first package =20 - pkg =3D self.portdbapi.xmatch("bestmatch-visible", pkg)=09 + pkg =3D self.get_best_visible_pkg(pkg,db)=09 if not pkg: return ret =20 known_packages=3Dset() - unknown_packages=3Dself.get_dep(pkg,dep_type) + unknown_packages=3Dself.get_dep(pkg,dep_type,db) ret=3Dret.union(unknown_packages) =09 while unknown_packages: @@ -111,36 +124,40 @@ class PortageUtils: continue known_packages.add(p) =20 - metadata =3D dict(zip(self.metadata_keys, self.vardbapi.aux_get(p, se= lf.metadata_keys))) + current_deps=3Dself.get_dep(p,dep_type,'vardb') + unknown_packages=3Dunknown_packages.union(current_deps) + ret=3Dret.union(current_deps) + =09 + #metadata =3D dict(zip(self.metadata_keys, self.vardbapi.aux_get(p, s= elf.metadata_keys))) =20 - dep_str =3D " ".join(metadata[k] for k in dep_type) + #dep_str =3D " ".join(metadata[k] for k in dep_type) =09 # the IUSE default are very important for us - iuse_defaults=3D[ - u[1:] for u in metadata.get("IUSE",'').split() if u.startswith("+")= ] + #iuse_defaults=3D[ + # u[1:] for u in metadata.get("IUSE",'').split() if u.startswith("+"= )] =20 - use=3Dself.use.split() + #use=3Dself.use.split() =20 - for u in iuse_defaults: - if u not in use: - use.append(u) + #for u in iuse_defaults: + # if u not in use: + # use.append(u) =09 - success, atoms =3D portage.dep_check(dep_str, None, self.settings,=20 - myuse=3Duse, myroot=3Dself.settings["ROOT"], - trees=3D{self.settings["ROOT"]:{"vartree":self.vartree,"porttree": s= elf.vartree}}) - - if not success: - continue - - for atom in atoms: - atomname =3D self.vartree.dep_bestmatch(atom) - if not atomname: - continue - =09 - for unvirt_pkg in expand_new_virt(self.vardbapi,'=3D'+atomname): - for pkg in self.vartree.dep_match(unvirt_pkg): - ret.add(pkg) - unknown_packages.add(pkg) + #success, atoms =3D portage.dep_check(dep_str, None, self.settings,=20 + # myuse=3Duse, myroot=3Dself.settings["ROOT"], + # trees=3D{self.settings["ROOT"]:{"vartree":self.vartree,"porttree": = self.vartree}}) + + #if not success: + # continue + + #for atom in atoms: + # atomname =3D self.vartree.dep_bestmatch(atom) + # if not atomname: + # continue + # =09 + # for unvirt_pkg in expand_new_virt(self.vardbapi,'=3D'+atomname): + # for pkg in self.vartree.dep_match(unvirt_pkg): + # ret.add(pkg) + # unknown_packages.add(pkg) return ret =20 def get_deps_for_package_building(self, pkg): @@ -148,10 +165,10 @@ class PortageUtils: returns buildtime dependencies of current package and=20 all runtime dependencies of that buildtime dependencies """ - buildtime_deps=3Dself.get_dep(pkg, ["DEPEND"]) + buildtime_deps=3Dself.get_dep(pkg, ["DEPEND"],"portdb") runtime_deps=3Dset() for dep in buildtime_deps: - runtime_deps=3Druntime_deps.union(self.get_deps(dep,["RDEPEND"])) + runtime_deps=3Druntime_deps.union(self.get_deps(dep,["RDEPEND"],"vard= b")) =20 ret=3Dbuildtime_deps.union(runtime_deps) =09