* [gentoo-pms] [PATCH 2/2] EAPI 9: Defined variables are no longer exported
2025-01-08 8:44 [gentoo-pms] [PATCH 1/2] Clarify use of the terms "export" and "environment variable" Ulrich Müller
@ 2025-01-08 8:44 ` Ulrich Müller
0 siblings, 0 replies; 2+ messages in thread
From: Ulrich Müller @ 2025-01-08 8:44 UTC (permalink / raw
To: gentoo-pms; +Cc: Ulrich Müller
Bug: https://bugs.gentoo.org/721088
Signed-off-by: Ulrich Müller <ulm@gentoo.org>
---
eapi-differences.tex | 4 ++++
ebuild-env-vars.tex | 36 +++++++++++++++++++++++++++++-------
ebuild-vars.tex | 4 ++++
3 files changed, 37 insertions(+), 7 deletions(-)
diff --git a/eapi-differences.tex b/eapi-differences.tex
index c8f8a44..1fd03a0 100644
--- a/eapi-differences.tex
+++ b/eapi-differences.tex
@@ -69,6 +69,9 @@ Accumulate \t{PROPERTIES} & \compactfeatureref{accumulate-vars} &
Accumulate \t{RESTRICT} & \compactfeatureref{accumulate-vars} &
No & No & Yes & Yes \\
+Export variables & \compactfeatureref{export-vars} &
+ Yes & Yes & Yes & No \\
+
\t{PORTDIR} & \compactfeatureref{portdir} &
Yes & No & No & No \\
@@ -365,6 +368,7 @@ EAPI 9 is EAPI 8 with the following changes:
\begin{compactitem}
\item Different default EAPI for profiles, \featureref{profile-eapi-default}.
+\item Defined variables no longer exported, \featureref{export-vars}.
\item \t{assert} banned, \featureref{banned-commands}.
\item \t{pipestatus}, \featureref{pipestatus}.
\item Absolute symlinks no longer rewritten, \featureref{symlink-rewrite}.
diff --git a/ebuild-env-vars.tex b/ebuild-env-vars.tex
index 0fcf457..4c357fd 100644
--- a/ebuild-env-vars.tex
+++ b/ebuild-env-vars.tex
@@ -1,10 +1,10 @@
\section{Defined variables}
\label{sec:ebuild-env-vars}
-The package manager must define the following environment variables. Not all variables are
-universally meaningful; variables that are not meaningful in a given phase or in global scope may
-be unset or set to any value. Ebuilds must not attempt to modify any of these variables, unless
-otherwise specified.
+The package manager must define the following variables. Not all variables are universally
+meaningful; variables that are not meaningful in a given phase or in global scope may be unset
+or set to any value. Ebuilds must not attempt to modify any of these variables, unless otherwise
+specified.
Because of their special meanings, these variables may not be preserved consistently across all
phases as would normally happen due to environment saving (see section~\ref{sec:ebuild-env-state}).
@@ -12,6 +12,26 @@ For example, \t{EBUILD_PHASE} is different for every phase, and \t{ROOT} may hav
the various different \t{pkg_*} phases. Ebuilds must recalculate any variable they derive from an
inconsistent variable.
+\featurelabel{export-vars} These variables are either exported to the shell's environment or kept
+as unexported shell variables, as specified for EAPIs in table~\ref{tab:export-vars}; exceptions
+are \t{TMPDIR} and \t{HOME} which are always exported to the environment. In EAPIs where variables
+are not exported, the package manager must pass those that are required by ebuild-specific external
+commands (see section~\ref{sec:pkg-mgr-commands}) in an implementation-defined manner.
+
+\ChangeWhenAddingAnEAPI{9}
+\begin{centertable}{EAPIs with variables exported to the environment}
+ \label{tab:export-vars}
+ \begin{tabular}{ll}
+ \toprule
+ \multicolumn{1}{c}{\textbf{EAPI}} &
+ \multicolumn{1}{c}{\textbf{Variables exported?}} \\
+ \midrule
+ 0, 1, 2, 3, 4, 5, 6, 7, 8 & Yes \\
+ 9 & No \\
+ \bottomrule
+ \end{tabular}
+\end{centertable}
+
\begin{landscape}
% Reduce width of text area to make room for margin notes
\addtolength{\hsize}{-25mm}
@@ -168,13 +188,15 @@ inconsistent variable.
\t{TMPDIR} &
All &
Partially\footnotemark[\value{footnote}] &
- Must be set to the location of a usable temporary directory, for any applications
- called by an ebuild. Must not be used by ebuilds directly; see \t{T} above. \\
+ Must be set to the location of a usable temporary directory, for any applications called
+ by an ebuild. Must not be used by ebuilds directly; see \t{T} above. \t{TMPDIR} is always
+ exported to the shell's environment. \\
\t{HOME} &
All &
Partially\footnotemark[\value{footnote}] &
The full path to an appropriate temporary directory for use by any programs invoked by the
- ebuild that may read or modify the home directory. \\
+ ebuild that may read or modify the home directory. \t{HOME} is always exported to the shell's
+ environment. \\
\t{EPREFIX} &
All &
Yes &
diff --git a/ebuild-vars.tex b/ebuild-vars.tex
index b030943..a1b0010 100644
--- a/ebuild-vars.tex
+++ b/ebuild-vars.tex
@@ -335,6 +335,10 @@ defined based upon any variant condition.}
\end{tabular}
\end{centertable}
+For EAPIs listed in table~\ref{tab:export-vars} with the property that variables are not exported,
+the package manager must not export any of the variables specified in this section to the shell's
+environment.
+
% vim: set filetype=tex fileencoding=utf8 et tw=100 spell spelllang=en :
%%% Local Variables:
--
2.47.1
^ permalink raw reply related [flat|nested] 2+ messages in thread