pkgsrc-Changes-HG archive

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

[pkgsrc/trunk]: pkgsrc/pkgtools/pkglint4 pkgtools/pkglint4: update to 4.193.0...



details:   https://anonhg.NetBSD.org/pkgsrc/rev/ba38892812b6
branches:  trunk
changeset: 402249:ba38892812b6
user:      rillig <rillig%pkgsrc.org@localhost>
date:      Sun Oct 06 10:33:34 2019 +0000

description:
pkgtools/pkglint4: update to 4.193.0, remove check for absolute paths

The check for absolute paths is not necessary since it doesn't provide
any benefit. It had been removed from pkgtools/pkglint already.

diffstat:

 pkgtools/pkglint4/Makefile                            |    9 +-
 pkgtools/pkglint4/README                              |   27 -
 pkgtools/pkglint4/TODO                                |   37 -
 pkgtools/pkglint4/files/PkgLint/Patches.pm            |  168 +-----
 pkgtools/pkglint4/files/PkgLint/Shell.pm              |    6 +-
 pkgtools/pkglint4/files/doc/Makefile                  |   27 -
 pkgtools/pkglint4/files/doc/chap.code.xml             |  307 ----------
 pkgtools/pkglint4/files/doc/chap.defs.xml             |   26 -
 pkgtools/pkglint4/files/doc/chap.design.xml           |  117 ---
 pkgtools/pkglint4/files/doc/chap.future.xml           |   91 ---
 pkgtools/pkglint4/files/doc/chap.intro.xml            |   15 -
 pkgtools/pkglint4/files/doc/chap.statemachines.xml    |   77 --
 pkgtools/pkglint4/files/doc/chap.types.xml            |  545 ------------------
 pkgtools/pkglint4/files/doc/pkglint.xml               |   38 -
 pkgtools/pkglint4/files/doc/statemachine.patch.dia    |  Bin 
 pkgtools/pkglint4/files/doc/statemachine.shellcmd.dia |  Bin 
 pkgtools/pkglint4/files/doc/stylesheet.xsl            |    6 -
 pkgtools/pkglint4/files/pkglint.pl                    |   59 +-
 pkgtools/pkglint4/files/pkglint.t                     |   36 +-
 19 files changed, 26 insertions(+), 1565 deletions(-)

diffs (truncated from 1809 to 300 lines):

diff -r 2c54ed2e475a -r ba38892812b6 pkgtools/pkglint4/Makefile
--- a/pkgtools/pkglint4/Makefile        Sun Oct 06 10:00:00 2019 +0000
+++ b/pkgtools/pkglint4/Makefile        Sun Oct 06 10:33:34 2019 +0000
@@ -1,7 +1,6 @@
-# $NetBSD: Makefile,v 1.12 2019/08/11 13:22:36 wiz Exp $
+# $NetBSD: Makefile,v 1.13 2019/10/06 10:33:34 rillig Exp $
 
-PKGNAME=       pkglint4-4.164
-PKGREVISION=   2
+PKGNAME=       pkglint4-4.193.0
 CATEGORIES=    pkgtools
 
 OWNER=         rillig%NetBSD.org@localhost
@@ -36,7 +35,7 @@
 .else
 SUBST_VARS.pkglint=    PKGSRCDIR
 .endif
-SUBST_VARS.pkglint=    PREFIX
+SUBST_VARS.pkglint+=   PREFIX
 SUBST_SED.pkglint+=    -e s\|@DISTVER@\|${PKGNAME:S/pkglint-//}\|g
 SUBST_VARS.pkglint+=   MAKE
 SUBST_SED.pkglint+=    -e s\|@PERL@\|${PERL5:Q}\|g
@@ -57,7 +56,7 @@
                && mv pkglint.pl.inlined pkglint.pl
 
 do-test:
-       cd ${WRKSRC} && prove pkglint.t
+       cd ${WRKSRC} && prove -v -I. pkglint.t
 
 do-install:
        ${INSTALL_SCRIPT} ${WRKSRC}/pkglint.pl ${DESTDIR}${PREFIX}/bin/pkglint
diff -r 2c54ed2e475a -r ba38892812b6 pkgtools/pkglint4/README
--- a/pkgtools/pkglint4/README  Sun Oct 06 10:00:00 2019 +0000
+++ /dev/null   Thu Jan 01 00:00:00 1970 +0000
@@ -1,27 +0,0 @@
-$NetBSD: README,v 1.1 2015/11/25 16:42:21 rillig Exp $
-
-== Current problems ==
-
-There are finally some automated tests that document a few intended
-and actual behaviors. There is still plenty of poorly expressed
-code not yet under test and therefore not yet safe to refactor.
-
-The current pkglint architecture will not scale much further. What is
-needed next are parsers for nested, non-context-free languages (make(1),
-sh(1), sed(1)). The parsers should be able to recognize partial
-structures, as well as structures containing foreign parts. This is
-because most of pkgsrc is heavily based on preprocessors:
-
-- The .if and .for directives in Makefiles are preprocessed by make(1)
-  before building dependencies and shell commands out of the remaining
-  text.
-
-- make(1) assembles shell commands from literal text and variables like
-  ${PKGNAME}.
-
-- Shell commands often use dynamic evaluation of variables.
-
-All this makes enhancing pkglint non-trivial. If you know of any
-academic papers that might be of help in this case, please tell me.
-
-The pkglint source code is much too big for a single file.
diff -r 2c54ed2e475a -r ba38892812b6 pkgtools/pkglint4/TODO
--- a/pkgtools/pkglint4/TODO    Sun Oct 06 10:00:00 2019 +0000
+++ /dev/null   Thu Jan 01 00:00:00 1970 +0000
@@ -1,37 +0,0 @@
-$NetBSD: TODO,v 1.1 2015/11/25 16:42:21 rillig Exp $
-
-Please add your own entries at the bottom of this file. If possible,
-include the name of an example package where a warning should occur.
-
-* When you understand some behavior of the code, document it by
-  adding automated tests to pkglint.t!
-* warn about the use of ${WRKDIR:=...}, as this construct should only
-  be used with lists.
-* Add checks for binary packages. See Debian/lintian for ideas.
-* Of the user-defined variables, some may be used at load-time and some
-  don't. Find out how pkglint can distinguish them.
-* Make sure that no variable is modified at load-time after it has been
-  used once. This should at least flag BUILD_DEFS in bsd.pkg.mk.
-* Invent an annotation scheme for files that intentionally define
-  variables for use in other files.
-* ${MACHINE_ARCH}-${LOWER_OPSYS}elf in PLISTs etc. is a NetBSD config.guess
-  problem ==> use of ${APPEND_ELF}
-* Packages including lang/python/extension.mk must follow the Python version
-  scheme. Enforcing PYPKGPREFIX for those is most likely a good idea.
-* Check for parallel files/dirs whose names differ only in case.
-* Check for license files that are completely unused.
-* If a dependency depends on an option (in options.mk), it should also
-  depend on the same option in the buildlink3.mk file.
-* Complain about ${PKGSRC_COMPILER} == "sunpro", which should be
-  !empty(PKGSRC_COMPILER:Msunpro).
-* If USE_TOOLS has autoconf213, and the package does stuff like
-  cd ${WRKSRC} && autoconf, then an incorrect warning is issued.
-* LOCALBASE should not be used in normal Makefiles
-* don't complain about "procedure calls", like for pkg-build-options in
-  the various buildlink3.mk files.
-* if package A conflicts with B, then B should also conflict with A.
-* When pkglint runs on a case-insensitive filesystem, it should still
-  point out problems that only occur on case-sensitive filesystems. For
-  example, devel/p5-Net-LDAP and devel/p5-Net-ldap should be considered
-  different paths.
-* Warn about using REPLACE_PYTHON without including application.mk.
diff -r 2c54ed2e475a -r ba38892812b6 pkgtools/pkglint4/files/PkgLint/Patches.pm
--- a/pkgtools/pkglint4/files/PkgLint/Patches.pm        Sun Oct 06 10:00:00 2019 +0000
+++ b/pkgtools/pkglint4/files/PkgLint/Patches.pm        Sun Oct 06 10:33:34 2019 +0000
@@ -1,4 +1,4 @@
-# $NetBSD: Patches.pm,v 1.1 2015/11/25 16:42:21 rillig Exp $
+# $NetBSD: Patches.pm,v 1.2 2019/10/06 10:33:34 rillig Exp $
 #
 # Everything concerning checks for patch files.
 #
@@ -6,55 +6,6 @@
 use strict;
 use warnings;
 
-# Guess the type of file based on the filename. This is used to select
-# the proper subroutine for detecting absolute pathnames.
-#
-# Returns one of "source", "shell", "make", "text", "configure",
-# "ignore", "unknown".
-#
-sub get_filetype($$) {
-       my ($line, $fname) = @_;
-       my $basename = basename($fname);
-
-       # The trailig .in part is not needed, since it does not
-       # influence the type of contents.
-       $basename =~ s,\.in$,,;
-
-       # Let's assume that everything else that looks like a Makefile
-       # is indeed a Makefile.
-       if ($basename =~ m"^I?[Mm]akefile(?:\..*|)?|.*\.ma?k$") {
-               return "make";
-       }
-
-       # Too many false positives for shell scripts, so configure
-       # scripts get their own category.
-       if ($basename =~ m"^configure(?:|\.ac)$") {
-               $opt_debug_unchecked and $line->log_debug("Skipped check for absolute pathnames.");
-               return "configure";
-       }
-
-       if ($basename =~ m"\.(?:sh|m4)$"i) {
-               return "shell";
-       }
-
-       if ($basename =~ m"\.(?:cc?|cpp|cxx|el|hh?|hpp|l|pl|pm|py|s|t|y)$"i) {
-               return "source";
-       }
-
-       if ($basename =~ m"^.+\.(?:\d+|conf|html|info|man|po|tex|texi|texinfo|txt|xml)$"i) {
-               return "text";
-       }
-
-       # Filenames without extension are hard to guess right. :(
-       if ($basename !~ m"\.") {
-               return "unknown";
-       }
-
-       $opt_debug_misc and $line->log_debug("Don't know the file type of ${fname}.");
-
-       return "unknown";
-}
-
 sub checkline_cpp_macro_names($$) {
        my ($line, $text) = @_;
        my ($rest);
@@ -120,85 +71,11 @@
        }
 }
 
-# Checks whether the line contains text that looks like absolute
-# pathnames, assuming that the file uses the common syntax with
-# single or double quotes to represent strings.
-#
-sub checkline_source_absolute_pathname($$) {
-       my ($line, $text) = @_;
-       my ($abspath);
-
-       $opt_debug_trace and $line->log_debug("checkline_source_absolute_pathname(${text})");
-
-       if ($text =~ m"(.*)([\"'])(/[^\"']*)\2") {
-               my ($before, $delim, $string) = ($1, $2, $3);
-
-               $opt_debug_misc and $line->log_debug("checkline_source_absolute_pathname(before=${before}, string=${string})");
-               if ($before =~ m"[A-Z_]+\s*$") {
-                       # allowed: PREFIX "/bin/foo"
-
-               } elsif ($string =~ m"^/[*/]") {
-                       # This is more likely to be a C or C++ comment.
-
-               } elsif ($string !~ m"^/\w") {
-                       # Assume that pathnames start with a letter or digit.
-
-               } elsif ($before =~ m"\+\s*$") {
-                       # Something like foodir + '/lib'
-
-               } else {
-                       $abspath = $string;
-               }
-       }
-
-       if (defined($abspath)) {
-               checkword_absolute_pathname($line, $abspath);
-       }
-}
-
-# Last resort if the file does not look like a Makefile or typical
-# source code. All strings that look like pathnames and start with
-# one of the typical Unix prefixes are found.
-#
-sub checkline_other_absolute_pathname($$) {
-       my ($line, $text) = @_;
-
-       $opt_debug_trace and $line->log_debug("checkline_other_absolute_pathname(\"${text}\")");
-
-       if ($text =~ m"^#[^!]") {
-               # Don't warn for absolute pathnames in comments,
-               # except for shell interpreters.
-
-       } elsif ($text =~ m"^(.*?)((?:/[\w.]+)*/(?:bin|dev|etc|home|lib|mnt|opt|proc|sbin|tmp|usr|var)\b[\w./\-]*)(.*)$") {
-               my ($before, $path, $after) = ($1, $2, $3);
-
-               if ($before =~ m"\@$") {
-                       # Something like @PREFIX@/bin
-
-               } elsif ($before =~ m"[)}]$") {
-                       # Something like ${prefix}/bin or $(PREFIX)/bin
-
-               } elsif ($before =~ m"\+\s*[\"']$") {
-                       # Something like foodir + '/lib'
-
-               } elsif ($before =~ m"\w$") {
-                       # Something like $dir/lib
-
-               } elsif ($before =~ m"\.$") {
-                       # ../foo is not an absolute pathname.
-
-               } else {
-                       $opt_debug_misc and $line->log_debug("before=${before}");
-                       checkword_absolute_pathname($line, $path);
-               }
-       }
-}
-
 sub checkfile_patch($) {
        my ($fname) = @_;
        my ($lines);
        my ($state, $redostate, $nextstate, $dellines, $addlines, $hunks);
-       my ($seen_comment, $current_fname, $current_ftype, $patched_files);
+       my ($seen_comment, $current_fname, $patched_files);
        my ($leading_context_lines, $trailing_context_lines, $context_scanning_leading);
 
        # Abbreviations used:
@@ -271,42 +148,6 @@
                return unless $m->has(1);
                $text = $m->text(1);
                checkline_cpp_macro_names($line, $text);
-
-               # XXX: This check is not as accurate as the similar one in
-               # checkline_mk_shelltext().
-               if (defined($current_fname)) {
-                       if ($current_ftype eq "shell" || $current_ftype eq "make") {
-                               my ($mm, $rest) = match_all($text, $regex_shellword);
-
-                               foreach my $m (@{$mm}) {
-                                       my $shellword = $m->text(1);
-
-                                       if ($shellword =~ m"^#") {
-                                               last;
-                                       }
-                                       checkline_mk_absolute_pathname($line, $shellword);
-                               }
-
-                       } elsif ($current_ftype eq "source") {
-                               checkline_source_absolute_pathname($line, $text);
-
-                       } elsif ($current_ftype eq "configure") {
-                               if ($text =~ m": Avoid regenerating within pkgsrc$") {
-                                       $line->log_error("This code must not be included in patches.");
-                                       $line->explain_error(
-"It is generated automatically by pkgsrc after the patch phase.",
-"",
-"For more details, look for \"configure-scripts-override\" in",
-"mk/configure/gnu-configure.mk.");
-                               }
-
-                       } elsif ($current_ftype eq "ignore") {
-                               # Ignore it.
-
-                       } else {
-                               checkline_other_absolute_pathname($line, $text);
-                       }
-               }
        };
 
        my $check_hunk_end = sub($$$) {
@@ -431,8 +272,6 @@
                PST_CFA() =>



Home | Main Index | Thread Index | Old Index