From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from lists.gentoo.org (pigeon.gentoo.org [208.92.234.80]) by finch.gentoo.org (Postfix) with ESMTP id A6A4F138200 for ; Sun, 5 May 2013 16:42:53 +0000 (UTC) Received: from pigeon.gentoo.org (localhost [127.0.0.1]) by pigeon.gentoo.org (Postfix) with SMTP id EC95FE0960; Sun, 5 May 2013 16:42:51 +0000 (UTC) Received: from smtp.gentoo.org (smtp.gentoo.org [140.211.166.183]) (using TLSv1 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by pigeon.gentoo.org (Postfix) with ESMTPS id 6DC7CE0960 for ; Sun, 5 May 2013 16:42:51 +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 6745333DF6A for ; Sun, 5 May 2013 16:42:50 +0000 (UTC) Received: from localhost.localdomain (localhost [127.0.0.1]) by hornbill.gentoo.org (Postfix) with ESMTP id EA60BE4BA6 for ; Sun, 5 May 2013 16:42:48 +0000 (UTC) From: "Zac Medico" To: gentoo-commits@lists.gentoo.org Content-Transfer-Encoding: 8bit Content-type: text/plain; charset=UTF-8 Reply-To: gentoo-dev@lists.gentoo.org, "Zac Medico" Message-ID: <1367772141.4d435d0496332964fc10daca9e3ee95dd41ece10.zmedico@gentoo> Subject: [gentoo-commits] proj/portage:multilib commit in: pym/portage/dep/, pym/_emerge/ X-VCS-Repository: proj/portage X-VCS-Files: pym/_emerge/Package.py pym/portage/dep/dep_check.py X-VCS-Directories: pym/portage/dep/ pym/_emerge/ X-VCS-Committer: zmedico X-VCS-Committer-Name: Zac Medico X-VCS-Revision: 4d435d0496332964fc10daca9e3ee95dd41ece10 X-VCS-Branch: multilib Date: Sun, 5 May 2013 16:42:48 +0000 (UTC) Precedence: bulk List-Post: List-Help: List-Unsubscribe: List-Subscribe: List-Id: Gentoo Linux mail X-BeenThere: gentoo-commits@lists.gentoo.org X-Archives-Salt: d6b1269c-517f-4efe-8b0d-577fb11139ed X-Archives-Hash: bc3c32f50918f71998715d9f3bc932d5 commit: 4d435d0496332964fc10daca9e3ee95dd41ece10 Author: Zac Medico gentoo org> AuthorDate: Sat May 4 20:02:25 2013 +0000 Commit: Zac Medico gentoo org> CommitDate: Sun May 5 16:42:21 2013 +0000 URL: http://git.overlays.gentoo.org/gitweb/?p=proj/portage.git;a=commit;h=4d435d04 Make multilib atoms consistent, so rebuilds work. The atoms need to be consistent so that the "unevaluated_atom not in selected_atoms" code from commit ef125a7885f4f5a614265f3f8a97803f6a8c1264 works properly. --- pym/_emerge/Package.py | 26 ++++++++++++++++++++++++++ pym/portage/dep/dep_check.py | 29 ++++++++++++++++------------- 2 files changed, 42 insertions(+), 13 deletions(-) diff --git a/pym/_emerge/Package.py b/pym/_emerge/Package.py index 022a98c..932fbbd 100644 --- a/pym/_emerge/Package.py +++ b/pym/_emerge/Package.py @@ -258,6 +258,32 @@ class Package(Task): (atom.unevaluated_atom,)) self._metadata_exception(k, e) + if self.root_config.settings.local_config and \ + 'force-multilib' in self.root_config.settings.features: + mysettings = self.root_config.settings + no_auto_flag = frozenset(mysettings.get("NO_AUTO_FLAG", "").split()) + for i, x in enumerate(validated_atoms): + if not isinstance(x, Atom): + continue + if x.cp in no_auto_flag: + continue + multilib_flags = [] + for multilib_abis in mysettings.get("MULTILIB_ABIS", '').split(): + multilib_flag = 'multilib_abi_' + multilib_abis + if x.unevaluated_atom.use is None or \ + x.unevaluated_atom.use.conditional is None or \ + multilib_flag not in x.unevaluated_atom.use.conditional.enabled: + multilib_flags.append(multilib_flag + '?') + if multilib_flags: + if x.unevaluated_atom.use is None: + use_tokens = [] + else: + use_tokens = list(x.unevaluated_atom.use.tokens) + use_tokens.extend(multilib_flags) + validated_atoms[i] = Atom( + x.unevaluated_atom.without_use + \ + "[%s]" % (",".join(use_tokens))) + self._validated_atoms = tuple(set(atom for atom in validated_atoms if isinstance(atom, Atom))) diff --git a/pym/portage/dep/dep_check.py b/pym/portage/dep/dep_check.py index 325d6b4..b051b6e 100644 --- a/pym/portage/dep/dep_check.py +++ b/pym/portage/dep/dep_check.py @@ -69,20 +69,23 @@ def _expand_new_virtuals(mysplit, edebug, mydbapi, mysettings, myroot="/", x = x._eval_qa_conditionals(use_mask, use_force) if 'force-multilib' in mysettings.features: - if not repoman : + if not repoman and x.cp not in mysettings.get("NO_AUTO_FLAG", "").split(): + multilib_flags = [] for multilib_abis in mysettings.get("MULTILIB_ABIS", '').split(): - if multilib_abis not in ("multilib_abi_" + x) and portage.dep_getkey(x) not in mysettings.get("NO_AUTO_FLAG", None): - if ']' in x: - x = str(x).replace(']',',multilib_abi_' + multilib_abis + '?]') - else: - x = str(x) + '[multilib_abi_' + multilib_abis + '?]' - try: - x = portage.dep.Atom(x) - x = x.evaluate_conditionals(myuse) - except portage.exception.InvalidAtom: - if portage.dep._dep_check_strict: - raise portage.exception.ParseError( - "invalid atom: '%s'" % x) + multilib_flag = 'multilib_abi_' + multilib_abis + if x.unevaluated_atom.use is None or \ + x.unevaluated_atom.use.conditional is None or \ + multilib_flag not in x.unevaluated_atom.use.conditional.enabled: + multilib_flags.append(multilib_flag + '?') + if multilib_flags: + if x.unevaluated_atom.use is None: + use_tokens = [] + else: + use_tokens = list(x.unevaluated_atom.use.tokens) + use_tokens.extend(multilib_flags) + x = Atom(x.unevaluated_atom.without_use + + "[%s]" % (",".join(use_tokens))) + x = x.evaluate_conditionals(myuse) mykey = x.cp if not mykey.startswith("virtual/"):