commit: 7177e5fa5d5dd606bc634440868b9fa99700ec90 Author: Michał Górny <mgorny <AT> gentoo <DOT> org> AuthorDate: Thu Nov 9 16:33:34 2017 +0000 Commit: Michał Górny <mgorny <AT> gentoo <DOT> org> CommitDate: Thu Nov 9 16:49:53 2017 +0000 URL: https://gitweb.gentoo.org/proj/pms.git/commit/?id=7177e5fa
EAPI 7 has ENV_BLACKLIST eapi-differences.tex | 4 ++++ ebuild-env-vars.tex | 36 +++++++++++++++++++++++++++++------- profile-variables.tex | 4 ++++ 3 files changed, 37 insertions(+), 7 deletions(-) diff --git a/eapi-differences.tex b/eapi-differences.tex index b666500..3f25555 100644 --- a/eapi-differences.tex +++ b/eapi-differences.tex @@ -181,6 +181,9 @@ Parallel tests & \compactfeatureref{parallel-tests} & Sane locale settings & \compactfeatureref{locale-settings} & Undefined & Undefined & Undefined & Yes & Yes \\ +\t{ENV_BLACKLIST} & \compactfeatureref{env-blacklist} & + No & No & No & No & Yes \\ + Profile \t{IUSE} injection & \compactfeatureref{profile-iuse-inject} & No & No & Yes & Yes & Yes \\ @@ -483,6 +486,7 @@ EAPI 7 is EAPI 6 with the following changes: \item \t{domo} installs to \t{/usr}, \featureref{domo-path}. \item Controllable stripping and \t{dostrip}, \featureref{dostrip}. \item Version manipulation and comparison commands, \featureref{ver-commands}. +\item \t{ENV_BLACKLIST}, \featureref{env-blacklist}. \end{compactitem} \ChangeWhenAddingAnEAPI{7} diff --git a/ebuild-env-vars.tex b/ebuild-env-vars.tex index 32ed634..0382f04 100644 --- a/ebuild-env-vars.tex +++ b/ebuild-env-vars.tex @@ -334,22 +334,44 @@ must not be set. \featurelabel{locale-settings} The package manager must ensure that the \t{LC_CTYPE} and \t{LC_COLLATE} locale categories are equivalent to the POSIX locale, as far as characters in the ASCII range (U+0000 to U+007F) are concerned. Only for EAPIs listed in such a manner in -table~\ref{tab:locale-settings}. +table~\ref{tab:system-env-vars}. \ChangeWhenAddingAnEAPI{7} -\begin{centertable}{Locale settings for EAPIs} - \label{tab:locale-settings} - \begin{tabular}{ll} +\begin{centertable}{System environment variables} + \label{tab:system-env-vars} + \begin{tabular}{lll} \toprule \multicolumn{1}{c}{\textbf{EAPI}} & - \multicolumn{1}{c}{\textbf{Sane \t{LC_CTYPE} and \t{LC_COLLATE}?}} \\ + \multicolumn{1}{c}{\textbf{Sane \t{LC_CTYPE} and \t{LC_COLLATE}?}} & + \multicolumn{1}{c}{\textbf{\t{ENV_BLACKLIST}?}} \\ \midrule - 0, 1, 2, 3, 4, 5 & Undefined \\ - 6, 7 & Yes \\ + 0, 1, 2, 3, 4, 5 & Undefined & No \\ + 6 & Yes & No \\ + 7 & Yes & Yes \\ \bottomrule \end{tabular} \end{centertable} +\subsection{Environment variable blacklist} + +\featurelabel{env-blacklist} If the ebuild uses EAPI listed in table~\ref{tab:system-env-vars} +as supporting the \t{ENV_BLACKLIST} variable, the package manager must construct the environment +variable blacklist in the following manner. + +The value of the \t{ENV_BLACKLIST} variable as specified by the profile \t{make.defaults} files +provides a whitespace-separated list of variable names. Each item can optionally be preceded +by a hyphen. The blacklist is initially empty. For each item: + +\begin{compactitem} +\item If the item is not preceded by a hyphen, then the variable is added to the blacklist. +\item If the item is preceded by a hyphen, then the variable is removed from the blacklist. +\item As a special case, \t{*} adds all the variables currently set in the environment + to the blacklist, except for variables explicitly set by the package manager. +\end{compactitem} + +Once the blacklist is constructed, the package manager must ensure that all variable whose names +are listed in it are unset in the ebuild environment. + \subsection{USE and IUSE handling} \label{sec:use-iuse-handling} diff --git a/profile-variables.tex b/profile-variables.tex index 309f9e9..fa967b2 100644 --- a/profile-variables.tex +++ b/profile-variables.tex @@ -29,6 +29,10 @@ incrementally; otherwise, the following variables may or may not be treated incr \item \t{USE_EXPAND_UNPREFIXED} \end{compactitem} +If the package manager supports any EAPI listed in table~\ref{tab:system-env-vars} as supporting +\t{ENV_BLACKLIST} variable, this variable must be treated incrementally. Otherwise, it may or may +not be treated incrementally. + 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.