From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from lists.gentoo.org (pigeon.gentoo.org [208.92.234.80]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by finch.gentoo.org (Postfix) with ESMTPS id 578A21396D2 for ; Sun, 8 Oct 2017 16:05:26 +0000 (UTC) Received: from pigeon.gentoo.org (localhost [127.0.0.1]) by pigeon.gentoo.org (Postfix) with SMTP id 979D32BC030; Sun, 8 Oct 2017 16:05:25 +0000 (UTC) Received: from smtp.gentoo.org (smtp.gentoo.org [140.211.166.183]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by pigeon.gentoo.org (Postfix) with ESMTPS id 697B42BC030 for ; Sun, 8 Oct 2017 16:05:25 +0000 (UTC) Received: from oystercatcher.gentoo.org (oystercatcher.gentoo.org [148.251.78.52]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.gentoo.org (Postfix) with ESMTPS id 4FC0633D3C7 for ; Sun, 8 Oct 2017 16:05:24 +0000 (UTC) Received: from localhost.localdomain (localhost [IPv6:::1]) by oystercatcher.gentoo.org (Postfix) with ESMTP id CB6C0909F for ; Sun, 8 Oct 2017 16:05:22 +0000 (UTC) From: "Ulrich Müller" To: gentoo-commits@lists.gentoo.org Content-Transfer-Encoding: 8bit Content-type: text/plain; charset=UTF-8 Reply-To: gentoo-dev@lists.gentoo.org, "Ulrich Müller" Message-ID: <1507477675.ffea740f6d2522a07d335e57a00389fe278b7e14.ulm@gentoo> Subject: [gentoo-commits] proj/pms:master commit in: / X-VCS-Repository: proj/pms X-VCS-Files: appendices.tex ebuild-vars.tex names.tex pms.bib X-VCS-Directories: / X-VCS-Committer: ulm X-VCS-Committer-Name: Ulrich Müller X-VCS-Revision: ffea740f6d2522a07d335e57a00389fe278b7e14 X-VCS-Branch: master Date: Sun, 8 Oct 2017 16:05:22 +0000 (UTC) Precedence: bulk List-Post: List-Help: List-Unsubscribe: List-Subscribe: List-Id: Gentoo Linux mail X-BeenThere: gentoo-commits@lists.gentoo.org X-Archives-Salt: ccdc6b63-deb9-413e-bbd5-ae33d654d167 X-Archives-Hash: 8ad3d58553e27e19389c136f7b23a885 commit: ffea740f6d2522a07d335e57a00389fe278b7e14 Author: Ulrich Müller gentoo org> AuthorDate: Sun Aug 27 11:41:40 2017 +0000 Commit: Ulrich Müller gentoo org> CommitDate: Sun Oct 8 15:47:55 2017 +0000 URL: https://gitweb.gentoo.org/proj/pms.git/commit/?id=ffea740f Appendix: Add a list of notable retroactive changes. This should contain all retroactive changes that were approved by the council (and after EAPIs 0, 1 and 2 were finalised). appendices.tex | 30 ++++++++++++++++++++++++++++++ ebuild-vars.tex | 1 + names.tex | 1 + pms.bib | 8 ++++++++ 4 files changed, 40 insertions(+) diff --git a/appendices.tex b/appendices.tex index dd40041..7227fc8 100644 --- a/appendices.tex +++ b/appendices.tex @@ -66,6 +66,10 @@ removed in 2009. In some exceptional cases, changes to the specification have been approved by the Gentoo Council without introducing a new EAPI. This section lists such retroactive changes. +\subsection{Bash version} +EAPIs \t{0}, \t{1} and \t{2} originally specified GNU Bash version 3.0. This was retroactively +updated to version 3.2 (see table~\ref{tab:bash-version}) in November 2009. + \subsection{Old-style virtuals} Historically, virtuals were special packages rather than regular ebuilds. An ebuild could specify in the \t{PROVIDE} metadata that it supplied certain virtuals, and the package manager had to bear this @@ -74,6 +78,32 @@ in mind when handling dependencies. Old-style virtuals were supported by EAPIs \t{0}, \t{1}, \t{2}, \t{3} and \t{4}. They were phased out via GLEP 37~\cite{Glep37} and finally removed in 2011. +\subsection{EAPI parsing} +The method to specify the EAPI of an ebuild used to be a shell variable assignment, and the +package manager had to source the ebuild in order to determine the EAPI. Therefore any ebuild using +a future EAPI would still have to be sourceable by old package managers, which imposed restrictions +e.\,g.\ on updating the Bash version or on possible changes of global scope functions. Several +approaches to overcome this limitation were discussed, notably GLEP 55~\cite{Glep55}, which was +rejected though. + +The current syntax of the \t{EAPI} assignment statement (see section~\ref{sec:eapi}), allowing +the package manager to obtain the EAPI from the ebuild by a regular expression match and without +sourcing it, was introduced in May 2012. + +\subsection{Package names} +Previously, package names were only required not to end in a hyphen followed by one or more digits. +In October 2012 this was tightened to the specification in section~\ref{sec:package-names}, namely +that they must not end in a hyphen followed by anything resembling a package version. + +\subsection{Asterisk in dependency specification} +In the \t{=} dependency operator specified in section~\ref{sec:dep-operator}, an asterisk used to +induce string prefix comparison instead of the normal version comparison logic. That could lead to +surprising results, e.\,g.\ \t{=dev-lang/perl-5.2*} matching \t{dev-lang/perl-5.22.0}. Moreover, +implementation in package managers deviated from what was specified. + +String prefix matching was effective in EAPIs \t{0}, \t{1}, \t{2}, \t{3}, \t{4} and \t{5}. It was +retroactively dropped in favour of the current behaviour in October 2015. + % vim: set filetype=tex fileencoding=utf8 et tw=100 spell spelllang=en : %%% Local Variables: diff --git a/ebuild-vars.tex b/ebuild-vars.tex index b910f25..8c05ce9 100644 --- a/ebuild-vars.tex +++ b/ebuild-vars.tex @@ -115,6 +115,7 @@ Ebuilds may define any of the following variables: \end{centertable} \subsection{EAPI} +\label{sec:eapi} An empty or unset \t{EAPI} value is equivalent to \t{0}. Ebuilds must not assume that they will get a particular one of these two values if they are expecting one of these two values. diff --git a/names.tex b/names.tex index 15c720a..d00088e 100644 --- a/names.tex +++ b/names.tex @@ -13,6 +13,7 @@ a hyphen, a dot or a plus sign. names will contain a hyphen. \subsection{Package names} +\label{sec:package-names} A package name may contain any of the characters [\t{A-Za-z0-9+_-}]. It must not begin with a hyphen or a plus sign, and must not end in a hyphen followed by anything matching the version syntax described in section~\ref{sec:version-spec}. diff --git a/pms.bib b/pms.bib index 2221f75..914c41f 100644 --- a/pms.bib +++ b/pms.bib @@ -14,6 +14,14 @@ howpublished = "\url{https://wiki.gentoo.org/wiki/GLEP:44}" } +@misc{Glep55, + author = {Piotr Jaroszyński}, + title = {{GLEP} 55: Use {EAPI}-suffixed ebuilds}, + year = 2007, + month = Dec, + howpublished = "\url{https://wiki.gentoo.org/wiki/GLEP:55}" +} + @misc{Glep68, author = {Michał Górny}, title = {{GLEP} 68: Package and category metadata},