Gentoo Logo
Gentoo Spaceship




Note: Due to technical difficulties, the Archives are currently not up to date. GMANE provides an alternative service for most mailing lists.
c.f. bug 424647
List Archive: gentoo-pms
Navigation:
Lists: gentoo-pms: < Prev By Thread Next > < Prev By Date Next >
Headers:
To: gentoo-pms@g.o
From: Ulrich Mueller <ulm@g.o>
Subject: Re: EAPI 4
Date: Sat, 4 Dec 2010 12:46:48 +0100
>>>>> On Tue, 30 Nov 2010, Ulrich Mueller wrote:

> Excluded / postponed to next EAPI:
>   - slot operator dependencies
>   - profile defined IUSE injection

> Additionally included:
>   + REQUIRED_USE (bug 347353)
>   + MERGING_FROM (bug 347351)

> How should we proceed now? Should we move the two excluded features
> off to a branch (like eapi-5), and keep only EAPI 4 things in master?

Anyway, for the time being I have saved them in a local branch. We can
decide later how we shall proceed for EAPI 5.

I've prepared patches for the missing pieces of EAPI 4: See bug 347351
for MERGE_TYPE and bug 347353 for REQUIRED_USE. 

Attached to this message are another two patches for removal of "Slot
operator dependencies" and "Profile IUSE injection". I've tried to
keep them as unobtrusive as possible, especially the latter.

Please review the patches.

Still missing is an update of the EAPI cheat sheet. Fauli, could you
(as usual) take care of that?

Ulrich

From 30a38fcf12ec0c5053e12153be0a08695d439b3e Mon Sep 17 00:00:00 2001
From: Ulrich Mueller <ulm@g.o>
Date: Sat, 4 Dec 2010 11:54:23 +0100
Subject: [PATCH 1/2] Slot operator dependencies are not in EAPI 4.

---
 dependencies.tex     |   25 ++++---------------------
 eapi-differences.tex |    3 +--
 2 files changed, 5 insertions(+), 23 deletions(-)

diff --git a/dependencies.tex b/dependencies.tex
index d2acd30..9e9571d 100644
--- a/dependencies.tex
+++ b/dependencies.tex
@@ -137,10 +137,10 @@ manager must warn or error if this feature is used with an EAPI not supporting u
             \multicolumn{1}{c}{\textbf{Supports \t{SLOT} dependencies?}} \\
             \midrule
     \t{0} & No \\
-    \t{1} & Named only \\
-    \t{2} & Named only \\
-    \t{3} & Named only \\
-    \t{4} & Named and operator \\
+    \t{1} & Yes \\
+    \t{2} & Yes \\
+    \t{3} & Yes \\
+    \t{4} & Yes \\
     \bottomrule
     \end{tabular}
 \end{centertable}
@@ -219,23 +219,6 @@ specification with a named slot dependency matches only if the slot of the match
 to the slot specified. If the slot of the package to match cannot be determined (e.\,g.\ because it
 is not a supported \t{EAPI}), the match is treated as unsuccessful.
 
-\featurelabel{slot-operator-deps} An operator slot dependency consists of a colon followed by one of
-the following operators:
-
-\begin{description}
-\item[*] Indicates that any slot value is acceptable. In addition, for runtime dependencies,
-indicates that the package will not break if the matched package is uninstalled and replaced by
-a different matching package in a different slot.
-\item[=] Indicates that any slot value is acceptable. In addition, for runtime dependencies,
-indicates that the package will break unless a matching package with slot equal to the slot of
-the best installed version at the time the package was installed is available.
-\end{description}
-
-To implement the equals slot operator, the package manager will need to store the slot of the
-best installed version of the matching package. The package manager may do this by appending
-the appropriate slot after the equals sign when saving the package's dependencies. This syntax
-is only for package manager use and must not be used by ebuilds.
-
 \subsubsection{2-Style and 4-Style Use Dependencies}
 \label{sec:use-dep}
 
diff --git a/eapi-differences.tex b/eapi-differences.tex
index cb9d41d..4a53459 100644
--- a/eapi-differences.tex
+++ b/eapi-differences.tex
@@ -58,7 +58,7 @@ Profile \t{IUSE} injection & \compactfeatureref{profile-iuse-injection} &
     No & No & Yes & Yes & Yes \\
 
 Slot dependencies & \compactfeatureref{slot-deps} &
-    No & Named & Named & Named & Named and Operator \\
+    No & Yes & Yes & Yes & Yes \\
 
 Use dependencies & \compactfeatureref{use-deps} &
     No & No & 2-style & 2-style & 4-style \\
@@ -214,7 +214,6 @@ EAPI 4 is EAPI 3 with the following changes:
 \item \t{REQUIRED\_USE}, \featureref{required-use}.
 \item \t{RDEPEND=DEPEND} no longer done, \featureref{rdepend-depend}.
 \item \t{DEFINED\_PHASES} support is mandatory, \featureref{defined-phases}.
-\item Slot operator dependencies, \featureref{slot-operator-deps}.
 \item Use dependency defaults, \featureref{use-dep-defaults}.
 \item \t{S} to \t{WORKDIR} fallback restricted, \featureref{s-workdir-fallback}.
 \item \t{pkg\_pretend}, \featureref{pkg-pretend}.
-- 
1.7.3.2

From 148ffb006e0a38b5d0f0ee9835fc059bd2884ad9 Mon Sep 17 00:00:00 2001
From: Ulrich Mueller <ulm@g.o>
Date: Sat, 4 Dec 2010 12:20:55 +0100
Subject: [PATCH 2/2] Profile IUSE injection is not in EAPI 4.

---
 eapi-differences.tex  |    4 ----
 ebuild-env-vars.tex   |   38 ++++----------------------------------
 profile-variables.tex |   40 +++-------------------------------------
 3 files changed, 7 insertions(+), 75 deletions(-)

diff --git a/eapi-differences.tex b/eapi-differences.tex
index 4a53459..4eb41f4 100644
--- a/eapi-differences.tex
+++ b/eapi-differences.tex
@@ -36,9 +36,6 @@
 \bottomrule
 \endlastfoot
 
-Profile \t{IUSE} injection & \compactfeatureref{profile-iuse-injection} &
-    No & No & No & No & Yes \\
-
 \t{IUSE} defaults & \compactfeatureref{iuse-defaults} &
     No & Yes & Yes & Yes & Yes \\
 
@@ -221,7 +218,6 @@ EAPI 4 is EAPI 3 with the following changes:
 \item \t{pkg\_info} can run on non-installed packages, \featureref{pkg-info}.
 \item \t{AA} is gone, \featureref{aa}.
 \item \t{KV} is gone, \featureref{kv}.
-\item \t{USE} is calculated differently, \featureref{profile-iuse-injection}.
 \item \t{MERGE\_TYPE}, \featureref{merge-type}.
 \item \t{REPLACING\_VERSIONS} and \t{REPLACED\_BY\_VERSION}, \featureref{replace-version-vars}.
 \item Utilities now die on failure, \featureref{die-on-failure}, unless called under \t{nonfatal},
diff --git a/ebuild-env-vars.tex b/ebuild-env-vars.tex
index 8bb5ee6..eb235e7 100644
--- a/ebuild-env-vars.tex
+++ b/ebuild-env-vars.tex
@@ -273,13 +273,9 @@ 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.
 
-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\_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\_EFFECTIVE} contains the following values:
+\t{IUSE\_EFFECTIVE} contains the following values:
 
 \begin{compactitem}
 \item All values in the calculated \t{IUSE} value.
@@ -288,36 +284,10 @@ For EAPIs listed in table~\ref{tab:profile-iuse-injection-table} as not supporti
     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. 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.
+contain that value if it is to be disabled. \t{USE} may contain other flag names that are not
+relevant for the ebuild.
 
 \subsection{\t{REPLACING\_VERSIONS} and \t{REPLACED\_BY\_VERSION}}
 \label{sec:replacing-versions}
diff --git a/profile-variables.tex b/profile-variables.tex
index 8533b71..cb6e63f 100644
--- a/profile-variables.tex
+++ b/profile-variables.tex
@@ -20,34 +20,10 @@ 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.
 
-\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} & Yes \\
-    \bottomrule
-    \end{tabular}
-\end{centertable}
-
 \subsection{Specific variables and their meanings}
 The following variables have specific meanings when set in profiles.
 \begin{description}
@@ -61,21 +37,11 @@ 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\_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.
+\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.
 \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.
 
-- 
1.7.3.2

Replies:
Re: EAPI 4
-- Ulrich Mueller
References:
EAPI 4
-- Ulrich Mueller
Navigation:
Lists: gentoo-pms: < Prev By Thread Next > < Prev By Date Next >
Previous by thread:
Re: EAPI 4
Next by thread:
Re: EAPI 4
Previous by date:
Patch for review: Fix scope of ED variable
Next by date:
Re: Patch for review: Fix scope of ED variable


Updated Jul 18, 2012

Summary: Archive of the gentoo-pms mailing list.

Donate to support our development efforts.

Copyright 2001-2013 Gentoo Foundation, Inc. Questions, Comments? Contact us.