OpenPKG CVS Repository
  http://cvs.openpkg.org/
  ____________________________________________________________________________

  Server: cvs.openpkg.org                  Name:   Ralf S. Engelschall
  Root:   /e/openpkg/cvs                   Email:  [EMAIL PROTECTED]
  Module: openpkg-re                       Date:   22-Jul-2003 21:44:53
  Branch: HEAD                             Handle: 2003072220445200

  Modified files:
    openpkg-re              speclint.pl

  Log:
    add one more check: make sure all used macros exists

  Summary:
    Revision    Changes     Path
    1.46        +19 -1      openpkg-re/speclint.pl
  ____________________________________________________________________________

  patch -p0 <<'@@ .'
  Index: openpkg-re/speclint.pl
  ============================================================================
  $ cvs diff -u -r1.45 -r1.46 speclint.pl
  --- openpkg-re/speclint.pl    22 Jul 2003 15:52:42 -0000      1.45
  +++ openpkg-re/speclint.pl    22 Jul 2003 19:44:52 -0000      1.46
  @@ -866,7 +866,6 @@
   
       #   check for "shtool install" with multiple -e on same line
       my $done = ''; my $this = ''; my $todo = $spec;
  -    #hile ($todo =~ m/%{l_shtool} install[^\n]+\\\n([^\n]*-e[^\n]*-e[^\n]*\\\n)+/s) 
{
       while ($todo =~ m/%{l_shtool} 
install[^\n]+\\\n([^\n]*?-e[^\n]*?-e[^\n]*\\\n)+/s) {
           $done .= $`; $this = $&; $todo = $';
           &lint_warning($file, $done, $this, "found multiple -e options of \"shtool 
install\" on same line (expected separate lines)");
  @@ -899,6 +898,25 @@
       if ($spec !~ m/\n\%No(Source|Patch)/s and $spec =~ m/\n\s*\%integrity/s) {
           &lint_error($file, undef, undef, "found no \"\%NoSource/\%NoPatch\", but 
\"\%integrity\" usage".
                       " (expected to see \"\%NoSource/\%NoPatch\" in source 
section)");
  +    }
  +
  +    #   check for valid RPM macro usage
  +    if ($file !~ m|^(.+/)?openpkg\.spec$|s) {
  +        my $ok = `$rpm --eval '\%dump' 2>&1 | egrep "^-*[0-9][0-9]*: l_" | sed -e 
's;^[^:]*: *\\(l_[a-zA-Z0-9_]*\\).*;\\1;' | sort -u`;
  +        my @ok = split(/\n/, $ok);
  +        my $todo = $spec;
  +        $todo =~ s|^([a-zA-Z][a-zA-Z0-9]+):\s+(.+)$|push(@ok, lc($1)), ''|mge;
  +        $todo =~ s/^\%(?:define|option)\s+(\S+)\s+.+$/push(@ok, $1), ''/mge;
  +        my $done = ''; my $this = ''; my $todo = $spec;
  +        while ($todo =~ m|\%\{([a-zA-Z][a-zA-Z0-9_]+)|s) {
  +            $done .= $`; $this = $&; $todo = $';
  +            my $name = $1;
  +            next if ($name =~ m/^(SOURCE|PATCH)\d*$/ or $name eq 'expand');
  +            if (not grep(/^\Q$name\E$/, @ok)) {
  +                &lint_error($file, $done, $this, "unknown macro \"\%{$name}\"");
  +            }
  +            $done .= $this;
  +        }
       }
   }
   
  @@ .
______________________________________________________________________
The OpenPKG Project                                    www.openpkg.org
CVS Repository Commit List                     [EMAIL PROTECTED]

Reply via email to