[arch-dev-public] [PATCH 2/2] Move the extravars work to the PKGBUILD parser

Dan McGee dan at archlinux.org
Tue Mar 15 03:36:27 EDT 2011


Add an additional fake package variable '%SETVARS%' that shows the
currently defined variables when processing a PKGBUILD. Use this list in
the extravars rule instead of broke-ass regex parsing that will never
catch every possible corner case.

Signed-off-by: Dan McGee <dan at archlinux.org>
---
 Namcap/rules/extravars.py |   11 ++++-------
 parsepkgbuild.sh          |    8 ++++----
 2 files changed, 8 insertions(+), 11 deletions(-)

diff --git a/Namcap/rules/extravars.py b/Namcap/rules/extravars.py
index 01031f5..0fcdb53 100644
--- a/Namcap/rules/extravars.py
+++ b/Namcap/rules/extravars.py
@@ -31,12 +31,9 @@ class package(PkgbuildRule):
 				 'pkgbase', 'pkgver', 'pkgrel', 'pkgdesc', 'groups',
 				 'url', 'install', 'changelog',
 				 'options', 'optdepends']
-		for i in pkginfo.pkgbuild:
-			m = re.match('[\s]*([a-z][^\s=]*[^+])=', i)
-			if m:
-				varname = m.group(1)
-				if varname not in stdvars:
-					if not varname.startswith('_'):
-						self.warnings.append(("extra-var-begins-without-underscore %s", varname))
+		for varname in pkginfo["setvars"]:
+			if varname.islower() and varname not in stdvars \
+					and not varname.startswith('_'):
+				self.warnings.append(("extra-var-begins-without-underscore %s", varname))
 
 # vim: set ts=4 sw=4 noet:
diff --git a/parsepkgbuild.sh b/parsepkgbuild.sh
index d601579..5ffa566 100644
--- a/parsepkgbuild.sh
+++ b/parsepkgbuild.sh
@@ -124,6 +124,9 @@ if [ -n "$install" ]; then
 	echo -e "%INSTALL%\n$install\n"
 fi
 
+unset i
+echo "%SETVARS%"
+compgen -A variable
 }
 
 # is it a split pkgbuild ?
@@ -136,10 +139,7 @@ if [ -n "${pkgbase}" ]; then
 	for i in ${pkgnames[@]}; do echo $i; done
 	echo ""
 	pkginfo
-fi
-
-# print per package information
-if [ -n "${pkgbase}" ]; then
+	# print per package information
 	for subpkg in ${pkgnames[@]}
 	do
 		echo -e '\0'
-- 
1.7.4.1



More information about the arch-dev-public mailing list