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 7CDFB1381F3 for ; Sat, 4 May 2013 20:07:55 +0000 (UTC) Received: from pigeon.gentoo.org (localhost [127.0.0.1]) by pigeon.gentoo.org (Postfix) with SMTP id 0242DE08CD; Sat, 4 May 2013 20:07:50 +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 73BD6E08CD for ; Sat, 4 May 2013 20:07:49 +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 6278733DFA8 for ; Sat, 4 May 2013 20:07:48 +0000 (UTC) Received: from localhost.localdomain (localhost [127.0.0.1]) by hornbill.gentoo.org (Postfix) with ESMTP id F0EA6E4AAC for ; Sat, 4 May 2013 20:07:46 +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: <1367697745.4075cba1aa431ab5bb7d630087ab69c1e0530e7b.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: 4075cba1aa431ab5bb7d630087ab69c1e0530e7b X-VCS-Branch: multilib Date: Sat, 4 May 2013 20:07:46 +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: ccb8bb49-e86a-4aa0-80d6-ca3efbbedf92 X-Archives-Hash: 141156e74f265896e0c153c19582d3e3 commit: 4075cba1aa431ab5bb7d630087ab69c1e0530e7b Author: Zac Medico gentoo org> AuthorDate: Sat May 4 20:02:25 2013 +0000 Commit: Zac Medico gentoo org> CommitDate: Sat May 4 20:02:25 2013 +0000 URL: http://git.overlays.gentoo.org/gitweb/?p=proj/portage.git;a=commit;h=4075cba1 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 | 25 +++++++++++++++++++++++++ pym/portage/dep/dep_check.py | 28 +++++++++++++++------------- 2 files changed, 40 insertions(+), 13 deletions(-) diff --git a/pym/_emerge/Package.py b/pym/_emerge/Package.py index 022a98c..715a812 100644 --- a/pym/_emerge/Package.py +++ b/pym/_emerge/Package.py @@ -258,6 +258,31 @@ class Package(Task): (atom.unevaluated_atom,)) self._metadata_exception(k, e) + if not self.built and self.root_config.settings.local_config and \ + 'force-multilib' in self.root_config.settings.features: + mysettings = self.root_config.settings + no_auto_flag = mysettings.get("NO_AUTO_FLAG", "").split() + for i, x in enumerate(validated_atoms): + if not isinstance(x, portage.dep.Atom): + continue + if x.cp in no_auto_flag: + continue + multilib_flags = [] + for multilib_abis in mysettings.get("MULTILIB_ABIS", '').split(): + if x.unevaluated_atom.use is None or \ + x.unevaluated_atom.use.conditional is None or \ + multilib_abis not in x.unevaluated_atom.use.conditional.enabled: + multilib_flags.append('multilib_abi_' + multilib_abis + '?') + 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] = portage.dep.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..bd2b89b 100644 --- a/pym/portage/dep/dep_check.py +++ b/pym/portage/dep/dep_check.py @@ -69,20 +69,22 @@ 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) + if x.unevaluated_atom.use is None or \ + x.unevaluated_atom.use.conditional is None or \ + multilib_abis not in x.unevaluated_atom.use.conditional.enabled: + multilib_flags.append('multilib_abi_' + multilib_abis + '?') + 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 = portage.dep.Atom(x.unevaluated_atom.without_use + + "[%s]" % (",".join(use_tokens))) + x = x.evaluate_conditionals(myuse) mykey = x.cp if not mykey.startswith("virtual/"):