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 1QfjIF-0006pB-50 for garchives@archives.gentoo.org; Sun, 10 Jul 2011 01:58:47 +0000 Received: from pigeon.gentoo.org (localhost [127.0.0.1]) by pigeon.gentoo.org (Postfix) with SMTP id 2502521C26E; Sun, 10 Jul 2011 01:58:39 +0000 (UTC) Received: from smtp.gentoo.org (smtp.gentoo.org [140.211.166.183]) by pigeon.gentoo.org (Postfix) with ESMTP id E15EB21C26E for ; Sun, 10 Jul 2011 01:58:38 +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 458BC2AC12F for ; Sun, 10 Jul 2011 01:58:38 +0000 (UTC) Received: from localhost.localdomain (localhost [127.0.0.1]) by pelican.gentoo.org (Postfix) with ESMTP id 4B7418003D for ; Sun, 10 Jul 2011 01:58:37 +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: <05a8d3512c5880d45f2e44b95127c2cac676be9d.zmedico@gentoo> Subject: [gentoo-commits] proj/portage:master commit in: pym/_emerge/resolver/ X-VCS-Repository: proj/portage X-VCS-Files: pym/_emerge/resolver/circular_dependency.py X-VCS-Directories: pym/_emerge/resolver/ X-VCS-Committer: zmedico X-VCS-Committer-Name: Zac Medico X-VCS-Revision: 05a8d3512c5880d45f2e44b95127c2cac676be9d Date: Sun, 10 Jul 2011 01:58:37 +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: de57acc9b48e5ab7667ef89f213116de commit: 05a8d3512c5880d45f2e44b95127c2cac676be9d Author: Zac Medico gentoo org> AuthorDate: Sun Jul 10 01:57:50 2011 +0000 Commit: Zac Medico gentoo org> CommitDate: Sun Jul 10 01:57:50 2011 +0000 URL: http://git.overlays.gentoo.org/gitweb/?p=3Dproj/portage.git;a= =3Dcommit;h=3D05a8d351 circular_dependency: fix REQUIRED_USE test --- pym/_emerge/resolver/circular_dependency.py | 17 +++++++++++++++++ 1 files changed, 17 insertions(+), 0 deletions(-) diff --git a/pym/_emerge/resolver/circular_dependency.py b/pym/_emerge/re= solver/circular_dependency.py index cb64962..e4d679f 100644 --- a/pym/_emerge/resolver/circular_dependency.py +++ b/pym/_emerge/resolver/circular_dependency.py @@ -138,7 +138,24 @@ class circular_dependency_handler(object): usemask, useforce =3D self._get_use_mask_and_force(parent) autounmask_changes =3D self._get_autounmask_changes(parent) untouchable_flags =3D frozenset(chain(usemask, useforce, autounmask_c= hanges)) + affecting_use.difference_update(untouchable_flags) + + #If any of the flags we're going to touch is in REQUIRED_USE, add all + #other flags in REQUIRED_USE to affecting_use, to not lose any soluti= on. + required_use_flags =3D get_required_use_flags(parent.metadata["REQUIR= ED_USE"]) + + if affecting_use.intersection(required_use_flags): + # TODO: Find out exactly which REQUIRED_USE flags are + # entangled with affecting_use. We have to limit the + # number of flags since the number of loops is + # exponentially related (see bug #374397). + total_flags =3D set() + total_flags.update(affecting_use, required_use_flags) + if len(total_flags) <=3D 10: + affecting_use.update(required_use_flags) + affecting_use.difference_update(untouchable_flags) + affecting_use =3D tuple(affecting_use) =20 if not affecting_use: