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.