diff --git a/scripts/Check-PkgFormat b/scripts/Check-PkgFormat index d7cfd50bb..f866408d6 100755 --- a/scripts/Check-PkgFormat +++ b/scripts/Check-PkgFormat @@ -47,10 +47,15 @@ if [ "$1" != "${1#-}" -o $# -eq 0 ] ; then exit 1 fi +. ./scripts/functions +# from ../scripts/parse-config +base=$(pwd -P) + for package ; do + pkg=${package%=*} ; xpkg=${package#*=} lastpdir="" - for pdir in package/*/$package ; do - [ -f $pdir/$package.desc ] || continue + for pdir in package/*/$pkg ; do + [ -f $pdir/$pkg.desc ] || continue [ "$lastpdir" ] && echo "$package: Found dup: $pdir $lastpdir" lastpdir="$pdir" done @@ -60,41 +65,41 @@ for package ; do pdir="$lastpdir" fi - if [ -f $pdir/$package.conf ] ; then - if egrep -q '^[^#]*\bflistdel' $pdir/$package.conf ; then + if [ -f $pdir/$pkg.conf ] ; then + if egrep -q '^[^#]*\bflistdel' $pdir/$pkg.conf ; then echo "$package: Use of \$flistdel is evil!" fi fi - if [ -f $pdir/$package.desc ] ; then - grep '[^ ]' $pdir/$package.desc | \ + if [ -f $pdir/$pkg.desc ] ; then + grep '[^ ]' $pdir/$pkg.desc | \ egrep -v '^(\[[A-Z0-9-]+\]( |$)|#)' | \ - sed "s,^,$package: Syntax error in $package.desc: ," + sed "s,^,$package: Syntax error in $pkg.desc: ," - egrep '^\[[A-Z0-9-]+\]( |$)' $pdir/$package.desc | \ + egrep '^\[[A-Z0-9-]+\]( |$)' $pdir/$pkg.desc | \ tr '[]' '||' | cut -f2 -d'|' | \ while read tag ; do grep -q "\\[$tag\\]" Documentation/Developers/$( )PKG-DESC-FORMAT && continue [ "${tag#X-}" != "$tag" ] && continue - echo "$package: Unknown tag in $package.desc: [$tag]" + echo "$package: Unknown tag in $pkg.desc: [$tag]" done - for x in `egrep '^\[(C|CATEGORY)\]' $pdir/$package.desc | \ + for x in `egrep '^\[(C|CATEGORY)\]' $pdir/$pkg.desc | \ cut -f2- -d']'` ; do egrep -q "^$x( |$)" Documentation/Developers/$( )PKG-CATEGORIES && continue echo "$package: Unknown package category: $x" done - for x in `egrep '^\[(F|FLAG)\]' $pdir/$package.desc | \ + for x in `egrep '^\[(F|FLAG)\]' $pdir/$pkg.desc | \ cut -f2- -d']'` ; do egrep -q "^$x " Documentation/Developers/$( )PKG-FLAGS && continue echo "$package: Unknown package flag: $x" done - for x in `egrep '^\[(S|STATUS)\]' $pdir/$package.desc | \ + for x in `egrep '^\[(S|STATUS)\]' $pdir/$pkg.desc | \ cut -f2- -d']'` ; do case $x in Alpha|Beta|Gamma|Stable) ;; @@ -103,7 +108,7 @@ for package ; do esac done - for x in `egrep '^\[(L|LICENSE)\]' $pdir/$package.desc | \ + for x in `egrep '^\[(L|LICENSE)\]' $pdir/$pkg.desc | \ cut -f2- -d']'` ; do case $x in Unknown|GPL|LGPL|MPL|FDL|MIT|BSD) ;; @@ -117,15 +122,16 @@ for package ; do grep '^\[.*(\*)$' Documentation/Developers/PKG-DESC-FORMAT | sed 's/. ./|/g; s/|\*)//; s/^\[//;' | \ while read line ; do - egrep -q "^\[($line)\]" $pdir/$package.desc || - echo "$package: No [$line] tag found." + parse_desc $pdir/$pkg.desc "${line%%\|*}" + eval tag="desc_${line%%\|*}" + eval [ -z "$tag" ] && echo "$package: No [$line] tag found." done else - echo "$package: File not found: $pdir/$package.desc" + echo "$package: File not found: $pdir/$pkg.desc" fi - if [ -f $pdir/$package.conf ] ; then - bash -n $pdir/$package.conf 2>&1 | sed "s,^,$package: ," + if [ -f $pdir/$pkg.conf ] ; then + bash -n $pdir/$pkg.conf 2>&1 | sed "s,^,$package: ," fi done