commit:     9dabbe3b66b56d41cc618a096e35310f483e961b
Author:     Ulrich Müller <ulm <AT> gentoo <DOT> org>
AuthorDate: Sat Jan 14 09:26:48 2023 +0000
Commit:     Ulrich Müller <ulm <AT> gentoo <DOT> org>
CommitDate: Wed Jan 18 21:12:28 2023 +0000
URL:        https://gitweb.gentoo.org/proj/pms.git/commit/?id=9dabbe3b

names.tex: Specify eclass names

Eclasses may export phase functions prefixed with their name, so
ideally we would follow the syntax of Bash (and POSIX) identifiers:

| A word consisting solely of underscores, digits, and alphabetics
| from the portable character set. The first character of a name is
| not a digit.

Because many existing eclasses have a dot or a hyphen in their name,
we follow usage in the Gentoo repository instead. (The only historical
exception to the above was 64-bit.eclass, not used since 2006 and
removed in 2009.)

An eclass must not be named "default", otherwise names of exported
functions would collide with default_<phase-function>.

Signed-off-by: Ulrich Müller <ulm <AT> gentoo.org>

 eclasses.tex | 1 +
 names.tex    | 5 +++++
 2 files changed, 6 insertions(+)

diff --git a/eclasses.tex b/eclasses.tex
index 01692bc..0b9b5d4 100644
--- a/eclasses.tex
+++ b/eclasses.tex
@@ -10,6 +10,7 @@ hold.
 Eclasses must be located in the \t{eclass} directory in the top level of the 
repository---see
 section~\ref{sec:eclass-dir}. Each eclass is a single file named 
\t{<name>.eclass}, where \t{<name>}
 is the name of this eclass, used by \t{inherit} and \t{EXPORT_FUNCTIONS} among 
other places.
+\t{<name>} must be a valid eclass name, as per section~\ref{sec:eclass-names}.
 
 \section{The inherit Command}
 \label{sec:inherit}

diff --git a/names.tex b/names.tex
index 2994719..76fa72d 100644
--- a/names.tex
+++ b/names.tex
@@ -18,6 +18,11 @@ syntax described in section~\ref{sec:version-spec}.
 \note{A package name does not include the category. The term \i{qualified 
package name} is used
 where a \t{category/package} pair is meant.}
 
+\subsection{Eclass names}
+\label{sec:eclass-names}
+An eclass name may contain any of the characters [\t{A-Za-z0-9_.-}]. It must 
begin with a letter or
+an underscore. In addition, an eclass cannot be named \t{default}.
+
 \subsection{Slot names}
 \label{sec:slot-names}
 A slot name may contain any of the characters [\t{A-Za-z0-9+_.-}]. It must not 
begin with a

Reply via email to