diff options
author | Ciaran McCreesh <ciaran.mccreesh@googlemail.com> | 2012-05-06 17:46:45 +0100 |
---|---|---|
committer | Ulrich Müller <ulm@gentoo.org> | 2012-09-13 08:28:16 +0200 |
commit | 0c4d87bebb5f1fa213ca69381ed2516ee60236ad (patch) | |
tree | d1be1db28fbad3bc0cbb82f2122ad19dcfc30112 | |
parent | Slot operator dependencies are back in EAPI 5 (diff) | |
download | pms-0c4d87bebb5f1fa213ca69381ed2516ee60236ad.tar.gz pms-0c4d87bebb5f1fa213ca69381ed2516ee60236ad.tar.bz2 pms-0c4d87bebb5f1fa213ca69381ed2516ee60236ad.zip |
Profile IUSE injection is in EAPI 5.
This reverts commit 9d2b8ee57bf3be941cfdfe13650952d91b9edfdc.
-rw-r--r-- | eapi-differences.tex | 4 | ||||
-rw-r--r-- | ebuild-env-vars.tex | 38 | ||||
-rw-r--r-- | 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. |