1 |
This should contain all retroactive changes that were approved by the |
2 |
council (and after EAPIs 0, 1 and 2 were finalised). |
3 |
--- |
4 |
appendices.tex | 30 ++++++++++++++++++++++++++++++ |
5 |
ebuild-vars.tex | 1 + |
6 |
names.tex | 1 + |
7 |
pms.bib | 8 ++++++++ |
8 |
4 files changed, 40 insertions(+) |
9 |
|
10 |
diff --git a/appendices.tex b/appendices.tex |
11 |
index dd40041..7227fc8 100644 |
12 |
--- a/appendices.tex |
13 |
+++ b/appendices.tex |
14 |
@@ -66,6 +66,10 @@ removed in 2009. |
15 |
In some exceptional cases, changes to the specification have been approved by the Gentoo Council |
16 |
without introducing a new EAPI. This section lists such retroactive changes. |
17 |
|
18 |
+\subsection{Bash version} |
19 |
+EAPIs \t{0}, \t{1} and \t{2} originally specified GNU Bash version 3.0. This was retroactively |
20 |
+updated to version 3.2 (see table~\ref{tab:bash-version}) in November 2009. |
21 |
+ |
22 |
\subsection{Old-style virtuals} |
23 |
Historically, virtuals were special packages rather than regular ebuilds. An ebuild could specify in |
24 |
the \t{PROVIDE} metadata that it supplied certain virtuals, and the package manager had to bear this |
25 |
@@ -74,6 +78,32 @@ in mind when handling dependencies. |
26 |
Old-style virtuals were supported by EAPIs \t{0}, \t{1}, \t{2}, \t{3} and \t{4}. They were phased |
27 |
out via GLEP 37~\cite{Glep37} and finally removed in 2011. |
28 |
|
29 |
+\subsection{EAPI parsing} |
30 |
+The method to specify the EAPI of an ebuild used to be a shell variable assignment, and the |
31 |
+package manager had to source the ebuild in order to determine the EAPI. Therefore any ebuild using |
32 |
+a future EAPI would still have to be sourceable by old package managers, which imposed restrictions |
33 |
+e.\,g.\ on updating the Bash version or on possible changes of global scope functions. Several |
34 |
+approaches to overcome this limitation were discussed, notably GLEP 55~\cite{Glep55}, which was |
35 |
+rejected though. |
36 |
+ |
37 |
+The current syntax of the \t{EAPI} assignment statement (see section~\ref{sec:eapi}), allowing |
38 |
+the package manager to obtain the EAPI from the ebuild by a regular expression match and without |
39 |
+sourcing it, was introduced in May 2012. |
40 |
+ |
41 |
+\subsection{Package names} |
42 |
+Previously, package names were only required not to end in a hyphen followed by one or more digits. |
43 |
+In October 2012 this was tightened to the specification in section~\ref{sec:package-names}, namely |
44 |
+that they must not end in a hyphen followed by anything resembling a package version. |
45 |
+ |
46 |
+\subsection{Asterisk in dependency specification} |
47 |
+In the \t{=} dependency operator specified in section~\ref{sec:dep-operator}, an asterisk used to |
48 |
+induce string prefix comparison instead of the normal version comparison logic. That could lead to |
49 |
+surprising results, e.\,g.\ \t{=dev-lang/perl-5.2*} matching \t{dev-lang/perl-5.22.0}. Moreover, |
50 |
+implementation in package managers deviated from what was specified. |
51 |
+ |
52 |
+String prefix matching was effective in EAPIs \t{0}, \t{1}, \t{2}, \t{3}, \t{4} and \t{5}. It was |
53 |
+retroactively dropped in favour of the current behaviour in October 2015. |
54 |
+ |
55 |
% vim: set filetype=tex fileencoding=utf8 et tw=100 spell spelllang=en : |
56 |
|
57 |
%%% Local Variables: |
58 |
diff --git a/ebuild-vars.tex b/ebuild-vars.tex |
59 |
index b910f25..8c05ce9 100644 |
60 |
--- a/ebuild-vars.tex |
61 |
+++ b/ebuild-vars.tex |
62 |
@@ -115,6 +115,7 @@ Ebuilds may define any of the following variables: |
63 |
\end{centertable} |
64 |
|
65 |
\subsection{EAPI} |
66 |
+\label{sec:eapi} |
67 |
|
68 |
An empty or unset \t{EAPI} value is equivalent to \t{0}. Ebuilds must not assume that they will get |
69 |
a particular one of these two values if they are expecting one of these two values. |
70 |
diff --git a/names.tex b/names.tex |
71 |
index 6767c55..af6a50a 100644 |
72 |
--- a/names.tex |
73 |
+++ b/names.tex |
74 |
@@ -13,6 +13,7 @@ a hyphen, a dot or a plus sign. |
75 |
names will contain a hyphen. |
76 |
|
77 |
\subsection{Package names} |
78 |
+\label{sec:package-names} |
79 |
A package name may contain any of the characters [\t{A-Za-z0-9+_-}]. It must not begin with a |
80 |
hyphen or a plus sign, and must not end in a hyphen followed by anything matching the version |
81 |
syntax described in section~\ref{sec:version-spec}. |
82 |
diff --git a/pms.bib b/pms.bib |
83 |
index 2221f75..914c41f 100644 |
84 |
--- a/pms.bib |
85 |
+++ b/pms.bib |
86 |
@@ -14,6 +14,14 @@ |
87 |
howpublished = "\url{https://wiki.gentoo.org/wiki/GLEP:44}" |
88 |
} |
89 |
|
90 |
+@misc{Glep55, |
91 |
+ author = {Piotr Jaroszyński}, |
92 |
+ title = {{GLEP} 55: Use {EAPI}-suffixed ebuilds}, |
93 |
+ year = 2007, |
94 |
+ month = Dec, |
95 |
+ howpublished = "\url{https://wiki.gentoo.org/wiki/GLEP:55}" |
96 |
+} |
97 |
+ |
98 |
@misc{Glep68, |
99 |
author = {Michał Górny}, |
100 |
title = {{GLEP} 68: Package and category metadata}, |
101 |
-- |
102 |
2.14.2 |