[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