pkgsrc-Changes-HG archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

[pkgsrc/trunk]: pkgsrc Updated pkglint to 4.36.



details:   https://anonhg.NetBSD.org/pkgsrc/rev/be163bab1343
branches:  trunk
changeset: 502405:be163bab1343
user:      rillig <rillig%pkgsrc.org@localhost>
date:      Fri Nov 04 13:57:35 2005 +0000

description:
Updated pkglint to 4.36.

Implemented checking for enumeration types. Added new types Filemask,
Filename, Language, Option, Pathmask, Pathname, Stage, Varname and
WrksrcSubdirectory. Made the check for URLs stricter. Added some
variables to the makevars.map file.

diffstat:

 doc/CHANGES                         |    3 +-
 doc/guide/Makefile                  |    4 +-
 pkgtools/pkglint/Makefile           |    4 +-
 pkgtools/pkglint/files/makevars.map |   33 +++++++----
 pkgtools/pkglint/files/pkglint.pl   |  100 +++++++++++++++++++++++++++++------
 5 files changed, 110 insertions(+), 34 deletions(-)

diffs (truncated from 326 to 300 lines):

diff -r 9d3e2a382c48 -r be163bab1343 doc/CHANGES
--- a/doc/CHANGES       Fri Nov 04 13:44:37 2005 +0000
+++ b/doc/CHANGES       Fri Nov 04 13:57:35 2005 +0000
@@ -1,4 +1,4 @@
-$NetBSD: CHANGES,v 1.11823 2005/11/04 09:32:34 rillig Exp $
+$NetBSD: CHANGES,v 1.11824 2005/11/04 13:58:16 rillig Exp $
 
 Changes to the packages collection and infrastructure in 2005:
 
@@ -5074,3 +5074,4 @@
        Updated pkgtools/pkglint to 4.34 [rillig 2005-11-04]
        Added chat/iip version 1.1.0 [rillig 2005-11-04]
        Updated pkgtools/pkglint to 4.35 [rillig 2005-11-04]
+       Updated pkgtools/pkglint to 4.36 [rillig 2005-11-04]
diff -r 9d3e2a382c48 -r be163bab1343 doc/guide/Makefile
--- a/doc/guide/Makefile        Fri Nov 04 13:44:37 2005 +0000
+++ b/doc/guide/Makefile        Fri Nov 04 13:57:35 2005 +0000
@@ -1,4 +1,4 @@
-# $NetBSD: Makefile,v 1.16 2005/11/03 01:57:15 tv Exp $
+# $NetBSD: Makefile,v 1.17 2005/11/04 13:58:17 rillig Exp $
 #
 
 DISTNAME=              htdocs-share-20050727
@@ -45,7 +45,7 @@
 
 pre-extract:
        ${MKDIR} ${WRKSRC}
-       @cd ${FILESDIR} && ${PAX} -rw . ${WRKSRC}
+       @${LN} -s ${FILESDIR}/* ${WRKSRC}
 
 do-build:
 .for _output_ in ${OUTPUTS}
diff -r 9d3e2a382c48 -r be163bab1343 pkgtools/pkglint/Makefile
--- a/pkgtools/pkglint/Makefile Fri Nov 04 13:44:37 2005 +0000
+++ b/pkgtools/pkglint/Makefile Fri Nov 04 13:57:35 2005 +0000
@@ -1,7 +1,7 @@
-# $NetBSD: Makefile,v 1.280 2005/11/04 10:09:13 rillig Exp $
+# $NetBSD: Makefile,v 1.281 2005/11/04 13:57:35 rillig Exp $
 #
 
-DISTNAME=      pkglint-4.35
+DISTNAME=      pkglint-4.36
 CATEGORIES=    pkgtools devel
 MASTER_SITES=  # empty
 DISTFILES=     # empty
diff -r 9d3e2a382c48 -r be163bab1343 pkgtools/pkglint/files/makevars.map
--- a/pkgtools/pkglint/files/makevars.map       Fri Nov 04 13:44:37 2005 +0000
+++ b/pkgtools/pkglint/files/makevars.map       Fri Nov 04 13:57:35 2005 +0000
@@ -1,4 +1,4 @@
-# $NetBSD: makevars.map,v 1.23 2005/11/03 18:49:33 rillig Exp $
+# $NetBSD: makevars.map,v 1.24 2005/11/04 13:57:35 rillig Exp $
 #
 
 # This file contains the guessed type of some variables, according to
@@ -12,16 +12,13 @@
 #
 # Type type List is used for variables that should only be initialized
 # to the empty list or have some values appended using the "+=" operator.
-#
-# The type One_Of(...) is just used for explanation. It cannot yet be
-# checked by pkglint.
 
 # some variables from mk/defaults/mk.conf, 1.27
 
 MANZ                   Yes
 MKCRYPTO               YesNo
 USETBL                 Yes
-#ABI                   One_Of(32 64)
+ABI                    { 32 64 }
 IGNORE_RECOMMENDED     YesNo
 PKG_REGISTER_SHELLS    YesNo
 USE_XPKGWEDGE          YesNo
@@ -29,32 +26,39 @@
 EXTRACT_USING_PAX      Yes
 SETGIDGAME             YesNo
 
-#USE_CRYPTO            One_Of(YES NO)
+USE_CRYPTO             { YES NO }
 USE_CUPS               Yes
 USE_I586               YesNo
 USE_INET6              YesNo
 USE_INN                        Yes
-#USE_OPENLDAP          One_Of(YES NO)
+USE_OPENLDAP           { YES NO }
 USE_OSS                        Yes
-#USE_SASL              One_Of(YES NO)
-#USE_SASL2             One_Of(YES NO)
-#USE_SJ3               One_Of(YES NO)
-#USE_SOCKS             One_Of(4 5)
-#USE_WNN4              One_Of(YES NO)
+USE_SASL               { YES NO }
+USE_SASL2              { YES NO }
+USE_SJ3                        { YES NO }
+USE_SOCKS              { 4 5 }
+USE_WNN4               { YES NO }
 USE_XFACE              YesNo
 
 # some other variables, sorted alphabetically
 
+BUILD_DEFS             List of Varname
 BUILD_DEPENDS          List of Dependency
+BUILD_DIRS             List* of WrksrcSubdirectory
 BUILD_USES_MSGFMT      Yes
 CATEGORIES             List* of Category
 CFLAGS                 List
 CONFIGURE_ARGS         List
+CONFIGURE_DIRS         List* of WrksrcSubdirectory
 CONFIGURE_ENV          List
 CPPFLAGS               List
 DEPENDS                        List of Dependency
+DISTNAME               Filename
+DISTFILES              List* of Filename
 GNU_CONFIGURE          Yes
 HOMEPAGE               URL
+INSTALL_DIRS           List* of WrksrcSubdirectory
+LANGUAGES              List* of Language
 LDFLAGS                        List
 LIBS                   List
 MAINTAINER             Mail_Address
@@ -72,9 +76,14 @@
 PKGREVISION            PkgRevision
 PKGVERSION             Readonly
 PKG_PRESERVE           Yes
+PKG_SUGGESTED_OPTIONS  List* of Option
+PKG_SUPPORTED_OPTIONS  List* of Option
 PLIST_SUBST            List
+PTHREAD_OPTS           List of { require native }
 SUBST_CLASSES          List
+SUBST_FILES            List* of Pathmask
 SUBST_SED              List*
+SUBST_STAGE            Stage
 USE_LIBTOOL            Yes
 USE_PKGLOCALEDIR       YesNo
 USE_TOOLS              List of Tool
diff -r 9d3e2a382c48 -r be163bab1343 pkgtools/pkglint/files/pkglint.pl
--- a/pkgtools/pkglint/files/pkglint.pl Fri Nov 04 13:44:37 2005 +0000
+++ b/pkgtools/pkglint/files/pkglint.pl Fri Nov 04 13:57:35 2005 +0000
@@ -11,7 +11,7 @@
 # Freely redistributable.  Absolutely no warranty.
 #
 # From Id: portlint.pl,v 1.64 1998/02/28 02:34:05 itojun Exp
-# $NetBSD: pkglint.pl,v 1.326 2005/11/04 09:32:03 rillig Exp $
+# $NetBSD: pkglint.pl,v 1.327 2005/11/04 13:57:35 rillig Exp $
 #
 # This version contains lots of changes necessary for NetBSD packages
 # done by:
@@ -679,6 +679,7 @@
                        if (exists($optdefs->{$opt})) {
                                ${$optdefs->{$opt}->[0]} = $value;
                        } else {
+                               printf STDERR ("Invalid option: ${opt}\n");
                                help(*STDERR, 1, 0);
                        }
                }
@@ -711,7 +712,7 @@
                if ($line->text =~ qr"^(?:#.*|\s*)$") {
                        # ignore empty and comment lines
 
-               } elsif ($line->text =~ qr"^([\w\d_.]+)\s+([\w_* ]+)$") {
+               } elsif ($line->text =~ qr"^([\w\d_.]+)\s+([\w_* {}]+)$") {
                        $vartypes->{$1} = $2;
 
                } else {
@@ -1447,7 +1448,12 @@
 
 sub checktext_basic_vartype($$$$$) {
        my ($line, $varname, $type, $value, $comment) = @_;
-
+       my ($value_novar);
+
+       $value_novar = $value;
+       while ($value_novar =~ s/\$\{[^{}]*\}//g) {
+       }
+       
        if ($type eq "Category") {
                my $allowed_categories = join("|", qw(
                        archivers audio
@@ -1511,11 +1517,41 @@
                        $line->log_warning("Unknown dependency format.");
                }
 
+       } elsif ($type eq "Filename") {
+               if ($value_novar !~ qr"^[-0-9A-Za-z._~+%]*$") {
+                       $line->log_warning("\"${value}\" is not a valid filename.");
+               }
+
+       } elsif ($type eq "Filemask") {
+               if ($value_novar !~ qr"^[-0-9A-Za-z._~+%*?]*$") {
+                       $line->log_warning("\"${value}\" is not a valid filename mask.");
+               }
+
+       } elsif ($type eq "Language") {
+               if ($value !~ qr"^(?:c|c\+\+|fortran)$") {
+                       $line->log_warning("\"${value}\" is not a valid language.");
+               }
+
        } elsif ($type eq "Mail_Address") {
                if ($value !~ qr"^[-\w\d_.]+\@[-\w\d.]+$") {
                        $line->log_warning("\"${value}\" is not a valid mail address.");
                }
 
+       } elsif ($type eq "Option") {
+               if ($value !~ qr"^-?[a-z][-0-9a-z]*$") {
+                       $line->log_warning("\"${value}\" is not a valid option name.");
+               }
+
+       } elsif ($type eq "Pathname") {
+               if ($value_novar !~ qr"^[-0-9A-Za-z._~+%/]*$") {
+                       $line->log_warning("\"${value}\" is not a valid pathname.");
+               }
+
+       } elsif ($type eq "Pathmask") {
+               if ($value_novar !~ qr"^[-0-9A-Za-z._~+%*?/]*$") {
+                       $line->log_warning("\"${value}\" is not a valid pathname mask.");
+               }
+
        } elsif ($type eq "PkgRevision") {
                if ($value !~ qr"^\d+$") {
                        $line->log_warning("\"${value}\" is not a valid Integer.");
@@ -1524,6 +1560,14 @@
                        $line->log_error("${varname} must not be set outside the package Makefile.");
                }
 
+       } elsif ($type eq "Readonly") {
+               $line->log_error("\"${varname}\" is a read-only variable and therefore must not be modified.");
+
+       } elsif ($type eq "Stage") {
+               if ($value !~ qr"^(?:pre|do|post)-(?:patch|configure|build|install)$") {
+                       $line->log_warning("Invalid stage name. Use one of {pre,do,post}-{patch,configure,build,install}");
+               }
+
        } elsif ($type eq "Tool") {
                if ($value =~ qr"^(.*)(?::(.*))$") {
                        my ($toolname, $tooldep) = ($1, $2);
@@ -1535,9 +1579,6 @@
                        }
                }
 
-       } elsif ($type eq "Readonly") {
-               $line->log_error("\"${varname}\" must not be modified by the package or the user.");
-
        } elsif ($type eq "URL") {
                if ($value =~ qr"\$\{(MASTER_SITE_.*):=(.*)\}$") {
                        my ($name, $subdir) = ($1, $2);
@@ -1552,7 +1593,7 @@
                } elsif ($value =~ regex_unresolved) {
                        # No further checks
                        
-               } elsif ($value =~ qr"^(?:http://|ftp://)[-0-9A-Za-z.]+(?::\d+)?/") {
+               } elsif ($value =~ qr"^(?:http://|ftp://)[-0-9A-Za-z.]+(?::\d+)?/~?([-%&+,./0-9:=?\@A-Z_a-z]|\\#)*?$") {
                        my $sites = get_dist_sites();
 
                        foreach my $site (keys(%{$sites})) {
@@ -1570,6 +1611,27 @@
                        $line->log_warning("\"${value}\" is not a valid URL.");
                }
 
+       } elsif ($type eq "Varname") {
+               if ($value ne "" && $value_novar eq "") {
+                       # The value of another variable
+
+               } elsif ($value_novar !~ qr"^[A-Z][0-9A-Z_]*(?:[.].*)?$") {
+                       $line->log_warning("\"${value}\" is not a valid variable name.");
+               }
+
+       } elsif ($type eq "WrksrcSubdirectory") {
+               if ($value =~ qr"^(\$\{WRKSRC\}(?:/|$))") {
+                       my ($prefix) = ($1);
+                       # TODO: uncomment after 2005Q4
+                       #$line->log_note("The \"${prefix}\" prefix is not needed here.");
+
+               } elsif ($value ne "" && $value_novar eq "") {
+                       # The value of another variable
+
+               } elsif ($value_novar !~ qr"^(?:\.|[0-9A-Za-z][-0-9A-Za-z._/+]*)$") {
+                       $line->log_warning("\"${value}\" is not a valid subdirectory.");
+               }
+
        } elsif ($type eq "Yes") {
                if ($value !~ qr"^(?:YES|yes)(?:\s+#.*)?$") {
                        $line->log_warning("${varname} should be set to YES or yes.");
@@ -1580,6 +1642,20 @@
                        $line->log_warning("${varname} should be set to YES, yes, NO, or no.");
                }
 
+       } elsif ($type =~ qr"^\{\s*(.*?)\s*\}$") {
+               my ($values) = ($1);
+               my @enum = split(qr"\s+", $values);
+               my $found = false;
+
+               foreach my $v (@enum) {
+                       if ($v eq $value) {
+                               $found = true;
+                       }
+               }
+               if (!$found) {
+                       $line->log_warning(sprintf("%s should be set to one of %s.", $varname, join(", ", @enum)));
+               }
+
        } else {



Home | Main Index | Thread Index | Old Index