Gentoo Archives: gentoo-pms

From: "Ulrich Müller" <ulm@g.o>
To: gentoo-pms@l.g.o
Subject: [gentoo-pms] [PATCH 2/2] Appendix: Add a list of notable retroactive changes.
Date: Mon, 02 Oct 2017 07:58:41
Message-Id: 22993.61868.180524.427341@a1i15.kph.uni-mainz.de
In Reply to: [gentoo-pms] [PATCH 0/2] Document notable retroactive changes by "Ulrich Müller"
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