Subject: pkglint and variable with number (was Re: CVS commit: wip/XFree86-docs)
To: None <>
From: Jeremy C. Reed <>
List: tech-pkg
Date: 07/23/2003 22:12:09
(Previously mentioned on pkgsrc-wip-discuss where this message is also

Is this fix okay?

--- /usr/pkg/bin/pkglint	Sat Apr  5 17:54:31 2003
+++ /home/reed/netbsd/pkglint	Wed Jul 23 22:07:18 2003
@@ -1084,7 +1084,7 @@
 				(($pkgname eq '') ? "DISTNAME." : "PKGNAME."));
 		# Be very smart. Kids, don't do this at home.
-		if ($k =~ /\$(\(|\{)([A-Z_-]+)(\)|\})/) {
+		if ($k =~ /\$(\(|\{)([A-Z][A-Z0-9_-]*)(\)|\})/) {
 			$k1 = $2;
 			$k = $1 if ($rawwhole =~ /\n$k1[ \t]*?=[ \t]*([^\n]+)\n/);

By the way, make(1) says: "Variables in make are much like variables in
the shell, and, by tradition, consist of all upper-case letters."

But that "all upper-case letters" means that X11BASE, MOTIF12BASE,
EMACS_USE_XAW3D, P4ROOT, MPG123_ARM_FIXED64, and various other variables
are illegal. So make(1) appears to be wrong.

And we know and sh(1) says "Variables set by the user must have a name
consisting solely of alphabetics, numerics, and underscores - the first of
which must not be numeric."

My patch above has it start with uppercase letter and then followed by
optional letter, number, dash and/or underscore. (I don't care if it ends
with a dash or underscore, but maybe it should check for that too?)

   Jeremy C. Reed