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 80A70138200 for ; Fri, 14 Sep 2012 06:16:18 +0000 (UTC) Received: from pigeon.gentoo.org (localhost [127.0.0.1]) by pigeon.gentoo.org (Postfix) with SMTP id 192DC21C00E; Fri, 14 Sep 2012 06:14:51 +0000 (UTC) Received: from smtp.gentoo.org (smtp.gentoo.org [140.211.166.183]) by pigeon.gentoo.org (Postfix) with ESMTP id CC7D321C00E for ; Fri, 14 Sep 2012 06:14:50 +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 183AB33D72F for ; Fri, 14 Sep 2012 06:14:50 +0000 (UTC) Received: from localhost.localdomain (localhost [127.0.0.1]) by hornbill.gentoo.org (Postfix) with ESMTP id 9C499E544A for ; Fri, 14 Sep 2012 06:14:47 +0000 (UTC) From: "Ulrich Mueller" To: gentoo-commits@lists.gentoo.org Content-Transfer-Encoding: 8bit Content-type: text/plain; charset=UTF-8 Reply-To: gentoo-dev@lists.gentoo.org, "Ulrich Mueller" Message-ID: <1347517696.0c4d87bebb5f1fa213ca69381ed2516ee60236ad.ulm@gentoo> Subject: [gentoo-commits] proj/pms:master commit in: / X-VCS-Repository: proj/pms X-VCS-Files: eapi-differences.tex ebuild-env-vars.tex profile-variables.tex X-VCS-Directories: / X-VCS-Committer: ulm X-VCS-Committer-Name: Ulrich Mueller X-VCS-Revision: 0c4d87bebb5f1fa213ca69381ed2516ee60236ad X-VCS-Branch: master Date: Fri, 14 Sep 2012 06:14:47 +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: 6545c8bb-1895-4023-a251-e5eebd8fbaa0 X-Archives-Hash: b986dba5d41334b906d4f02301732a80 commit: 0c4d87bebb5f1fa213ca69381ed2516ee60236ad Author: Ciaran McCreesh googlemail com> AuthorDate: Sun May 6 16:46:45 2012 +0000 Commit: Ulrich Mueller gentoo org> CommitDate: Thu Sep 13 06:28:16 2012 +0000 URL: http://git.overlays.gentoo.org/gitweb/?p=proj/pms.git;a=commit;h=0c4d87be Profile IUSE injection is in EAPI 5. This reverts commit 9d2b8ee57bf3be941cfdfe13650952d91b9edfdc. --- eapi-differences.tex | 4 ++++ ebuild-env-vars.tex | 38 ++++++++++++++++++++++++++++++++++---- profile-variables.tex | 42 +++++++++++++++++++++++++++++++++++++++--- 3 files changed, 77 insertions(+), 7 deletions(-) diff --git a/eapi-differences.tex b/eapi-differences.tex index 83e2e58..8ece012 100644 --- a/eapi-differences.tex +++ b/eapi-differences.tex @@ -109,6 +109,9 @@ Use dependencies & \compactfeatureref{use-deps} & \t{MERGE\_TYPE} & \compactfeatureref{merge-type} & No & No & No & No & Yes & Yes \\ +Profile \t{IUSE} injection & \compactfeatureref{profile-iuse-injection} & + No & No & No & No & No & Yes \\ + \t{REPLACING\_VERSIONS} & \compactfeatureref{replace-version-vars} & No & No & No & No & Yes & Yes \\ @@ -246,6 +249,7 @@ EAPI 5 is EAPI 4 with the following changes: \begin{compactitem} \item Slot operator dependencies, \featureref{slot-operator-deps}. +\item \t{USE} is calculated differently, \featureref{profile-iuse-injection}. \item \t{econf} adds \t{-{}-disable-silent-rules}, \featureref{econf-options}. \end{compactitem} diff --git a/ebuild-env-vars.tex b/ebuild-env-vars.tex index 4d3330e..db636c9 100644 --- a/ebuild-env-vars.tex +++ b/ebuild-env-vars.tex @@ -283,9 +283,13 @@ This section discusses the handling of four variables: In all cases, the values of \t{IUSE\_REFERENCEABLE} and \t{IUSE\_EFFECTIVE} are undefined during metadata generation. -\t{IUSE\_REFERENCEABLE} is equal to the calculated \t{IUSE} value. +For EAPIs listed in table~\ref{tab:profile-iuse-injection-table} as not supporting profile defined +\t{IUSE} injection, \t{IUSE\_REFERENCEABLE} is equal to the calculated \t{IUSE} value. For EAPIs +where profile defined \t{IUSE} injection is supported, \t{IUSE\_REFERENCEABLE} is equal to +\t{IUSE\_EFFECTIVE}. -\t{IUSE\_EFFECTIVE} contains the following values: +For EAPIs listed in table~\ref{tab:profile-iuse-injection-table} as not supporting profile defined +\t{IUSE} injection, \t{IUSE\_EFFECTIVE} contains the following values: \begin{compactitem} \item All values in the calculated \t{IUSE} value. @@ -294,10 +298,36 @@ metadata generation. the profile \t{USE\_EXPAND} variable followed by an underscore. \end{compactitem} +\featurelabel{profile-iuse-injection} For EAPIs listed in +table~\ref{tab:profile-iuse-injection-table} as supporting profile defined \t{IUSE} injection, +\t{IUSE\_EFFECTIVE} contains the following values: + +\begin{compactitem} +\item All values in the calculated \t{IUSE} value. +\item All values in the profile \t{IUSE\_IMPLICIT} variable. +\item All values in the profile variable named \t{USE\_EXPAND\_VALUES\_\$\{v\}}, where \t{\$\{v\}} + is any value in the intersection of the profile \t{USE\_EXPAND\_UNPREFIXED} and + \t{USE\_EXPAND\_IMPLICIT} variables. +\item All values for \t{\$\{lower\_v\}\_\$\{x\}}, where \t{\$\{x\}} is all values in the profile + variable named \t{USE\_EXPAND\_VALUES\_\$\{v\}}, where \t{\$\{v\}} is any value in the + intersection of the profile \t{USE\_EXPAND} and \t{USE\_EXPAND\_IMPLICIT} variables and + \t{\$\{lower\_v\}} is the lowercase equivalent of \t{\$\{v\}}. +\end{compactitem} + The \t{USE} variable is set by the package manager. For each value in \t{IUSE\_EFFECTIVE}, \t{USE} shall contain that value if the flag is to be enabled for the ebuild in question, and shall not -contain that value if it is to be disabled. \t{USE} may contain other flag names that are not -relevant for the ebuild. +contain that value if it is to be disabled. In EAPIs listed in +table~\ref{tab:profile-iuse-injection-table} as not supporting profile defined \t{IUSE} injection, +\t{USE} may contain other flag names that are not relevant for the ebuild. + +For EAPIs listed in table~\ref{tab:profile-iuse-injection-table} as supporting profile defined +\t{IUSE} injection, the variables named in \t{USE\_EXPAND} and \t{USE\_EXPAND\_UNPREFIXED} shall +have their profile-provided values reduced to contain only those values that are present in +\t{IUSE\_EFFECTIVE}. + +For EAPIs listed in table~\ref{tab:profile-iuse-injection-table} as supporting profile defined +\t{IUSE} injection, the package manager must save the calculated value of \t{IUSE\_EFFECTIVE} when +installing a package. Details are beyond the scope of this specification. \subsection{\t{REPLACING\_VERSIONS} and \t{REPLACED\_BY\_VERSION}} \label{sec:replacing-versions} diff --git a/profile-variables.tex b/profile-variables.tex index cb6e63f..cf8cac2 100644 --- a/profile-variables.tex +++ b/profile-variables.tex @@ -20,10 +20,36 @@ variables must be treated in this fashion: \item \t{CONFIG\_PROTECT\_MASK} \end{compactitem} +If the package manager supports any EAPI listed in table~\ref{tab:profile-iuse-injection-table} as +using profile-defined \t{IUSE} injection, the following variables must also be treated +incrementally; otherwise, the following variables may or may not be treated incrementally: +\begin{compactitem} +\item \t{IUSE\_IMPLICIT} +\item \t{USE\_EXPAND\_IMPLICIT} +\item \t{USE\_EXPAND\_UNPREFIXED} +\end{compactitem} + Other variables, except where they affect only package-manager-specific functionality (such as Portage's \t{FEATURES} variable), must not be treated incrementally---later definitions shall completely override those in parent profiles. +\ChangeWhenAddingAnEAPI{5} +\begin{centertable}{Profile-defined \t{IUSE} injection for EAPIs} \label{tab:profile-iuse-injection-table} + \begin{tabular}{ l l l } + \toprule + \multicolumn{1}{c}{\textbf{EAPI}} & + \multicolumn{1}{c}{\textbf{Supports profile-defined \t{IUSE} injection?}} \\ + \midrule + \t{0} & No \\ + \t{1} & No \\ + \t{2} & No \\ + \t{3} & No \\ + \t{4} & No \\ + \t{5} & Yes \\ + \bottomrule + \end{tabular} +\end{centertable} + \subsection{Specific variables and their meanings} The following variables have specific meanings when set in profiles. \begin{description} @@ -37,11 +63,21 @@ The following variables have specific meanings when set in profiles. \item[USE\_EXPAND] Defines a list of variables which are to be treated incrementally and whose contents are to be expanded into the USE variable as passed to ebuilds. See section~\ref{sec:use-iuse-handling} for details. -\item[USE\_EXPAND\_HIDDEN] Contains a (possibly empty) subset of names from \t{USE\_EXPAND}. The - package manager may use this set as a hint to avoid displaying uninteresting or unhelpful - information to an end user. +\item[USE\_EXPAND\_UNPREFIXED] Similar to \t{USE\_EXPAND}, but no prefix is used. If the repository + contains any package using an EAPI supporting profile-defined \t{IUSE} injection (see + table~\ref{tab:profile-iuse-injection-table}), this list must contain at least \t{ARCH}. See + section~\ref{sec:use-iuse-handling} for details. +\item[USE\_EXPAND\_HIDDEN] Contains a (possibly empty) subset of names from \t{USE\_EXPAND} and + \t{USE\_EXPAND\_UNPREFIXED}. The package manager may use this set as a hint to avoid displaying + uninteresting or unhelpful information to an end user. +\item[USE\_EXPAND\_IMPLICIT, IUSE\_IMPLICIT] Used to inject implicit values into \t{IUSE}. See + section~\ref{sec:use-iuse-handling} for details. \end{description} +In addition, for EAPIs listed in table~\ref{tab:profile-iuse-injection-table} as supporting profile +defined \t{IUSE} injection, the variables named in \t{USE\_EXPAND} and \t{USE\_EXPAND\_UNPREFIXED} +have special handling as described in section~\ref{sec:use-iuse-handling}. + Any other variables set in \t{make.defaults} must be passed on into the ebuild environment as-is, and are not required to be interpreted by the package manager.