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 1Plntv-0001o1-LA for garchives@archives.gentoo.org; Sat, 05 Feb 2011 19:34:32 +0000 Received: from pigeon.gentoo.org (localhost [127.0.0.1]) by pigeon.gentoo.org (Postfix) with SMTP id BA8CF1C086; Sat, 5 Feb 2011 19:34:04 +0000 (UTC) Received: from smtp.gentoo.org (smtp.gentoo.org [140.211.166.183]) by pigeon.gentoo.org (Postfix) with ESMTP id 8D5781C086 for ; Sat, 5 Feb 2011 19:34: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 288111B414C for ; Sat, 5 Feb 2011 19:34:04 +0000 (UTC) Received: from localhost.localdomain (localhost [127.0.0.1]) by pelican.gentoo.org (Postfix) with ESMTP id 796C980091 for ; Sat, 5 Feb 2011 12:25:05 +0000 (UTC) From: "Fabian Groffen" To: gentoo-commits@lists.gentoo.org Content-type: text/plain; charset=UTF-8 Reply-To: gentoo-dev@lists.gentoo.org, "Fabian Groffen" Message-ID: <7af8dcf3997cfaf1def14dbfb090242a0751f6a9.grobian@gentoo> Subject: [gentoo-commits] proj/portage:prefix commit in: pym/portage/package/ebuild/ X-VCS-Repository: proj/portage X-VCS-Files: pym/portage/package/ebuild/doebuild.py X-VCS-Directories: pym/portage/package/ebuild/ X-VCS-Committer: grobian X-VCS-Committer-Name: Fabian Groffen X-VCS-Revision: 7af8dcf3997cfaf1def14dbfb090242a0751f6a9 Date: Sat, 5 Feb 2011 12:25:05 +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: 19156ccc7236d491f0ac124b98074fc5 commit: 7af8dcf3997cfaf1def14dbfb090242a0751f6a9 Author: Zac Medico gentoo org> AuthorDate: Fri Feb 4 17:17:46 2011 +0000 Commit: Fabian Groffen gentoo org> CommitDate: Fri Feb 4 17:17:46 2011 +0000 URL: http://git.overlays.gentoo.org/gitweb/?p=3Dproj/portage.git;a= =3Dcommit;h=3D7af8dcf3 ebuild(1): ensure REQUIRED_USE is satisfied --- pym/portage/package/ebuild/doebuild.py | 27 +++++++++++++++++++++++++-= - 1 files changed, 25 insertions(+), 2 deletions(-) diff --git a/pym/portage/package/ebuild/doebuild.py b/pym/portage/package= /ebuild/doebuild.py index bbc3a4a..2eb9f11 100644 --- a/pym/portage/package/ebuild/doebuild.py +++ b/pym/portage/package/ebuild/doebuild.py @@ -39,9 +39,10 @@ from portage.data import portage_gid, portage_uid, sec= pass, \ uid, userpriv_groups from portage.dbapi.porttree import _parse_uri_map from portage.dbapi.virtual import fakedbapi -from portage.dep import Atom, paren_enclose, use_reduce +from portage.dep import Atom, check_required_use, \ + human_readable_required_use, paren_enclose, use_reduce from portage.eapi import eapi_exports_KV, eapi_exports_merge_type, \ - eapi_exports_replace_vars, \ + eapi_exports_replace_vars, eapi_has_required_use, \ eapi_has_src_prepare_and_src_configure, eapi_has_pkg_pretend from portage.elog import elog_process from portage.elog.messages import eerror, eqawarn @@ -1056,6 +1057,28 @@ def _validate_deps(mysettings, myroot, mydo, mydba= pi): if mydo not in invalid_dep_exempt_phases: return 1 =20 + if not pkg.built and pkg.metadata["REQUIRED_USE"] and \ + eapi_has_required_use(pkg.metadata["EAPI"]): + result =3D check_required_use(pkg.metadata["REQUIRED_USE"], + pkg.use.enabled, pkg.iuse.is_valid_flag) + if not result: + reduced_noise =3D result.tounicode() + writemsg("\n %s\n" % _("The following REQUIRED_USE flag" + \ + " constraints are unsatisfied:"), noiselevel=3D-1) + writemsg(" %s\n" % reduced_noise, + noiselevel=3D-1) + normalized_required_use =3D \ + " ".join(pkg.metadata["REQUIRED_USE"].split()) + if reduced_noise !=3D normalized_required_use: + writemsg("\n %s\n" % _("The above constraints " + \ + "are a subset of the following complete expression:"), + noiselevel=3D-1) + writemsg(" %s\n" % \ + human_readable_required_use(normalized_required_use), + noiselevel=3D-1) + writemsg("\n", noiselevel=3D-1) + return 1 + return os.EX_OK =20 # XXX This would be to replace getstatusoutput completely.