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 1Q2LT7-0000QG-IU for garchives@archives.gentoo.org; Wed, 23 Mar 2011 10:39:13 +0000 Received: from pigeon.gentoo.org (localhost [127.0.0.1]) by pigeon.gentoo.org (Postfix) with SMTP id E94D91C01B; Wed, 23 Mar 2011 10:39:04 +0000 (UTC) Received: from smtp.gentoo.org (smtp.gentoo.org [140.211.166.183]) by pigeon.gentoo.org (Postfix) with ESMTP id A93221C01B for ; Wed, 23 Mar 2011 10:39:04 +0000 (UTC) Received: from pelican.gentoo.org (unknown [66.219.59.40]) (using TLSv1 with cipher ADH-CAMELLIA256-SHA (256/256 bits)) (No client certificate requested) by smtp.gentoo.org (Postfix) with ESMTPS id 0CB911B4043 for ; Wed, 23 Mar 2011 10:39:04 +0000 (UTC) Received: from localhost.localdomain (localhost [127.0.0.1]) by pelican.gentoo.org (Postfix) with ESMTP id 5DF768006A for ; Wed, 23 Mar 2011 10:39:03 +0000 (UTC) From: "Gilles Dartiguelongue" To: gentoo-commits@lists.gentoo.org Content-type: text/plain; charset=UTF-8 Reply-To: gentoo-dev@lists.gentoo.org, "Gilles Dartiguelongue" Message-ID: <8bb3e59a8c562be082a926bc3bdb7deddd183f3f.eva@gentoo> Subject: [gentoo-commits] proj/gnome:master commit in: scripts/ X-VCS-Repository: proj/gnome X-VCS-Files: scripts/slot_rindex2.py X-VCS-Directories: scripts/ X-VCS-Committer: eva X-VCS-Committer-Name: Gilles Dartiguelongue X-VCS-Revision: 8bb3e59a8c562be082a926bc3bdb7deddd183f3f Date: Wed, 23 Mar 2011 10:39:03 +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: 867005e7f341110dc3a3be247f3da404 commit: 8bb3e59a8c562be082a926bc3bdb7deddd183f3f Author: Gilles Dartiguelongue gentoo org> AuthorDate: Wed Mar 23 10:38:12 2011 +0000 Commit: Gilles Dartiguelongue gentoo org> CommitDate: Wed Mar 23 10:38:48 2011 +0000 URL: http://git.overlays.gentoo.org/gitweb/?p=3Dproj/gnome.git;a=3D= commit;h=3D8bb3e59a scripts: add slot_rindex2.py --- scripts/slot_rindex2.py | 72 +++++++++++++++++++++++++++++++++++++++++= ++++++ 1 files changed, 72 insertions(+), 0 deletions(-) diff --git a/scripts/slot_rindex2.py b/scripts/slot_rindex2.py new file mode 100644 index 0000000..e3db2fc --- /dev/null +++ b/scripts/slot_rindex2.py @@ -0,0 +1,72 @@ +#!/usr/bin/python +# -*- coding: utf-8 -*- + +""" Checks what slots are used for a package in its reverse dependencies= . """ + +import portage + +import sys +#from pprint import pprint + +def main(): + trees =3D portage.create_trees() + trees["/"]["porttree"].settings =3D portage.settings + portdb =3D trees["/"]["porttree"] + portdb.dbapi.settings =3D portage.settings + portdb.dbapi.porttrees =3D [portage.portdb.porttree_root] + + # does it make sense to remove _all_ useless stuff or just leave it = as it is? + #portdb.dbapi._aux_cache_keys.clear() + #portdb.dbapi._aux_cache_keys.update(["EAPI", "KEYWORDS", "SLOT"]) + + res_slots =3D {} + + # Loop through all package names + for cp in portdb.dbapi.cp_all(): + #print(cp) + + # Get versions + cpvrs =3D portdb.dbapi.match(cp) + + # Group by slots + slots =3D {} + for cpvr in cpvrs: + slot =3D portdb.dbapi.aux_get(cpvr, ["SLOT"])[0] + if slot is None: + slot =3D 0 + if not slot in slots: + slots[slot] =3D [] + slots[slot].append(cpvr) + + # XXX: Walk through slots (walk twice for ~arch and arch) + for slot in sorted(slots): + cpvr =3D portage.versions.best(slots[slot]) + depends =3D portdb.dbapi.aux_get(cpvr, ['DEPEND', 'RDEPEND',= 'PDEPEND']) + depends =3D set(portage.dep.use_reduce(' '.join(depends), ma= tchall=3DTrue, flat=3DTrue)) + depends =3D [dep for dep in depends if portage.dep.isvalidat= om(dep)] + + #print('DEPEND:') + #pprint(depends) + + for depend in depends: + if portage.dep.dep_getkey(depend) =3D=3D sys.argv[1]: + mypkg_slot =3D portage.dep.dep_getslot(depend) + if mypkg_slot is None: + mypkg_slot =3D "unset" + + if mypkg_slot not in res_slots: + res_slots[mypkg_slot] =3D [cpvr] + else: + res_slots[mypkg_slot].append(cpvr) + #print(portage.dep.dep_getkey(depend) + ' uses ' + s= ys.argv[1] + ' slot ' + portage.dep.dep_getslot(depend)) + + for slot in sorted(res_slots): + print('%s:%s' % (sys.argv[1], slot)) + for rescpv in res_slots[slot]: + print(' ' + rescpv) + + +if __name__ =3D=3D "__main__": + main() + +## vim:set sts=3D4 ts=3D4 sw=3D4 expandtab: