summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCiaran McCreesh <ciaran.mccreesh@googlemail.com>2012-05-06 17:46:45 +0100
committerUlrich Müller <ulm@gentoo.org>2012-09-13 08:28:16 +0200
commit0c4d87bebb5f1fa213ca69381ed2516ee60236ad (patch)
treed1be1db28fbad3bc0cbb82f2122ad19dcfc30112
parentSlot operator dependencies are back in EAPI 5 (diff)
downloadpms-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.tex4
-rw-r--r--ebuild-env-vars.tex38
-rw-r--r--profile-variables.tex42
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.