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 1ShCxW-0007Nd-BB for garchives@archives.gentoo.org; Wed, 20 Jun 2012 04:56:02 +0000 Received: from pigeon.gentoo.org (localhost [127.0.0.1]) by pigeon.gentoo.org (Postfix) with SMTP id AC523E079C; Wed, 20 Jun 2012 04:55:47 +0000 (UTC) Received: from smtp.gentoo.org (smtp.gentoo.org [140.211.166.183]) by pigeon.gentoo.org (Postfix) with ESMTP id 66EADE079C for ; Wed, 20 Jun 2012 04:55:47 +0000 (UTC) Received: from hornbill.gentoo.org (hornbill.gentoo.org [94.100.119.163]) (using TLSv1 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by smtp.gentoo.org (Postfix) with ESMTPS id A638F1B400A for ; Wed, 20 Jun 2012 04:55:46 +0000 (UTC) Received: from localhost.localdomain (localhost [127.0.0.1]) by hornbill.gentoo.org (Postfix) with ESMTP id 7AF38E5435 for ; Wed, 20 Jun 2012 04:55:44 +0000 (UTC) From: "Zac Medico" To: gentoo-commits@lists.gentoo.org Content-type: text/plain; charset=UTF-8 Reply-To: gentoo-dev@lists.gentoo.org, "Zac Medico" Message-ID: <1340168003.fbc46ae218e70401749f43e5f99a17a0b04a0ff4.zmedico@gentoo> Subject: [gentoo-commits] proj/portage:master commit in: pym/_emerge/ X-VCS-Repository: proj/portage X-VCS-Files: pym/_emerge/DependencyArg.py pym/_emerge/depgraph.py X-VCS-Directories: pym/_emerge/ X-VCS-Committer: zmedico X-VCS-Committer-Name: Zac Medico X-VCS-Revision: fbc46ae218e70401749f43e5f99a17a0b04a0ff4 X-VCS-Branch: master Date: Wed, 20 Jun 2012 04:55:44 +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: e1574be6-af5f-400e-90e8-6c28b27d6a3e X-Archives-Hash: c61527b4c8c310affc3c9446dccdf32f commit: fbc46ae218e70401749f43e5f99a17a0b04a0ff4 Author: Zac Medico gentoo org> AuthorDate: Wed Jun 20 04:30:00 2012 +0000 Commit: Zac Medico gentoo org> CommitDate: Wed Jun 20 04:53:23 2012 +0000 URL: http://git.overlays.gentoo.org/gitweb/?p=3Dproj/portage.git;a= =3Dcommit;h=3Dfbc46ae2 depgraph._iter_atoms_for_pkg: fix for --rebuild-* The SetArg instances that are generated for --rebuild-if-* behvior need to be passed into _set_args() in order for _iter_atoms_for_pkg to be aware of these arguments. --- pym/_emerge/DependencyArg.py | 13 ++++++++++--- pym/_emerge/depgraph.py | 24 +++++++++++++++++------- 2 files changed, 27 insertions(+), 10 deletions(-) diff --git a/pym/_emerge/DependencyArg.py b/pym/_emerge/DependencyArg.py index fa1a47f..ba36f78 100644 --- a/pym/_emerge/DependencyArg.py +++ b/pym/_emerge/DependencyArg.py @@ -7,10 +7,17 @@ from portage import _encodings, _unicode_encode, _unico= de_decode =20 class DependencyArg(object): =20 - __slots__ =3D ('arg', 'root_config') - - def __init__(self, arg=3DNone, root_config=3DNone): + __slots__ =3D ('arg', 'force_reinstall', 'reset_depth', 'root_config') + + def __init__(self, arg=3DNone, force_reinstall=3DFalse, + reset_depth=3DTrue, root_config=3DNone): + """ + Use reset_depth=3DFalse for special arguments that should not interact + with depth calculations (see the emerge --deep=3DDEPTH option). + """ self.arg =3D arg + self.force_reinstall =3D force_reinstall + self.reset_depth =3D reset_depth self.root_config =3D root_config =20 def __eq__(self, other): diff --git a/pym/_emerge/depgraph.py b/pym/_emerge/depgraph.py index 291080a..ad28d69 100644 --- a/pym/_emerge/depgraph.py +++ b/pym/_emerge/depgraph.py @@ -1316,8 +1316,12 @@ class depgraph(object): # Installing package A, we need to make sure package A's deps are met. # emerge --deep ; we need to recursively check dependencies o= f pkgspec # If we are in --nodeps (no recursion) mode, we obviously only check 1= level of dependencies. - if arg_atoms: - depth =3D 0 + if arg_atoms and depth > 0: + for parent, atom in arg_atoms: + if parent.reset_depth: + depth =3D 0 + break + if previously_added and pkg.depth is not None: depth =3D min(pkg.depth, depth) pkg.depth =3D depth @@ -2226,6 +2230,7 @@ class depgraph(object): args =3D revised_greedy_args del revised_greedy_args =20 + args.extend(self._gen_reinstall_sets()) self._set_args(args) =20 myfavorites =3D set(myfavorites) @@ -2258,7 +2263,13 @@ class depgraph(object): =20 for (root, set_name), atoms in set_dict.items(): yield SetArg(arg=3D(SETPREFIX + set_name), + # Set reset_depth=3DFalse here, since we don't want these + # special sets to interact with depth calculations (see + # the emerge --deep=3DDEPTH option), though we want them + # to behave like normal arguments in most other respects. pset=3DInternalPackageSet(initial_atoms=3Datoms), + force_reinstall=3DTrue, + reset_depth=3DFalse, root_config=3Dself._frozen_config.roots[root]) =20 def _resolve(self, myfavorites): @@ -2273,8 +2284,6 @@ class depgraph(object): virtuals =3D pkgsettings.getvirtuals() args =3D self._dynamic_config._initial_arg_list[:] =20 - args.extend(self._gen_reinstall_sets()) - for arg in self._expand_set_args(args, add_to_digraph=3DTrue): for atom in arg.pset.getAtoms(): self._spinner_update() @@ -3963,9 +3972,10 @@ class depgraph(object): myarg =3D None if root =3D=3D self._frozen_config.target_root: try: - myarg =3D next(self._iter_atoms_for_pkg(pkg)) - except StopIteration: - pass + for myarg, myarg_atom in self._iter_atoms_for_pkg(pkg): + if myarg.force_reinstall: + reinstall =3D True + break except portage.exception.InvalidDependString: if not installed: # masked by corruption