commit:     95ee9439b7b04f802ffdd39255d0a854ac50f0f0
Author:     Ulrich Müller <ulm <AT> gentoo <DOT> org>
AuthorDate: Tue Jan  7 17:13:28 2025 +0000
Commit:     Ulrich Müller <ulm <AT> gentoo <DOT> org>
CommitDate: Mon Jan 13 17:21:44 2025 +0000
URL:        https://gitweb.gentoo.org/proj/pms.git/commit/?id=95ee9439

EAPI 9: Defined variables are no longer exported

Bug: https://bugs.gentoo.org/721088
Signed-off-by: Ulrich Müller <ulm <AT> 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 0564ab4..df04ff9 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 \\
 
@@ -357,6 +360,7 @@ EAPI 9 is EAPI 8 with the following changes:
 \begin{compactitem}
 \item Bash version is 5.2, \featureref{bash-version}.
 \item Different default EAPI for profiles, \featureref{profile-eapi-default}.
+\item Defined variables no longer exported, \featureref{export-vars}.
 \end{compactitem}
 
 \ChangeWhenAddingAnEAPI{9}

diff --git a/ebuild-env-vars.tex b/ebuild-env-vars.tex
index 268fa36..4f19d70 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 
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 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
+    environment. \\
 \t{EPREFIX} &
     All &
     Yes &

diff --git a/ebuild-vars.tex b/ebuild-vars.tex
index b030943..9979ce9 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
+environment.
+
 % vim: set filetype=tex fileencoding=utf8 et tw=100 spell spelllang=en :
 
 %%% Local Variables:

Reply via email to