pkgsrc-Changes-HG archive

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

[pkgsrc/trunk]: pkgsrc/pkgtools/pkglint Update pkglint to 5.5.9



details:   https://anonhg.NetBSD.org/pkgsrc/rev/7d9466a4a6f9
branches:  trunk
changeset: 379317:7d9466a4a6f9
user:      rillig <rillig%pkgsrc.org@localhost>
date:      Sat Apr 28 23:32:52 2018 +0000

description:
Update pkglint to 5.5.9

Changes since 5.5.8:
* Improved support for the "strip" tool, which has a special definition
  and is not directly connected to the STRIP variable.
* Miscellaneous code cleanup and new tests.

diffstat:

 pkgtools/pkglint/Makefile                   |   5 +-
 pkgtools/pkglint/files/autofix.go           |   2 +
 pkgtools/pkglint/files/licenses_test.go     |  49 ++++++++++++++++++++++++++++-
 pkgtools/pkglint/files/mkline_test.go       |   4 +-
 pkgtools/pkglint/files/mklines.go           |   3 +-
 pkgtools/pkglint/files/mktypes.go           |   7 +++-
 pkgtools/pkglint/files/pkglint.go           |   6 +-
 pkgtools/pkglint/files/pkgsrc.go            |  28 +++++++--------
 pkgtools/pkglint/files/pkgsrc_test.go       |  25 ++++++++++++--
 pkgtools/pkglint/files/shell_test.go        |  26 +++++++++++++++
 pkgtools/pkglint/files/shtypes.go           |  21 +++++------
 pkgtools/pkglint/files/shtypes_test.go      |  15 ++++++++-
 pkgtools/pkglint/files/tools.go             |  44 ++++++++++++++++++-------
 pkgtools/pkglint/files/tools_test.go        |  20 +++++++++++
 pkgtools/pkglint/files/util.go              |   2 +-
 pkgtools/pkglint/files/util_test.go         |   7 ++++
 pkgtools/pkglint/files/vardefs.go           |   1 +
 pkgtools/pkglint/files/vartype.go           |   1 +
 pkgtools/pkglint/files/vartypecheck.go      |   5 +-
 pkgtools/pkglint/files/vartypecheck_test.go |  24 ++++++++++++++
 20 files changed, 237 insertions(+), 58 deletions(-)

diffs (truncated from 646 to 300 lines):

diff -r 0d9f7e0fec05 -r 7d9466a4a6f9 pkgtools/pkglint/Makefile
--- a/pkgtools/pkglint/Makefile Sat Apr 28 20:19:09 2018 +0000
+++ b/pkgtools/pkglint/Makefile Sat Apr 28 23:32:52 2018 +0000
@@ -1,6 +1,6 @@
-# $NetBSD: Makefile,v 1.535 2018/04/06 21:04:22 rillig Exp $
+# $NetBSD: Makefile,v 1.536 2018/04/28 23:32:52 rillig Exp $
 
-PKGNAME=       pkglint-5.5.8
+PKGNAME=       pkglint-5.5.9
 DISTFILES=     # none
 CATEGORIES=    pkgtools
 
@@ -11,7 +11,6 @@
 CONFLICTS+=    pkglint4-[0-9]*
 
 NO_CHECKSUM=   yes
-USE_LANGUAGES= c
 USE_TOOLS+=    pax
 AUTO_MKDIRS=   yes
 GO_SRCPATH=    netbsd.org/pkglint
diff -r 0d9f7e0fec05 -r 7d9466a4a6f9 pkgtools/pkglint/files/autofix.go
--- a/pkgtools/pkglint/files/autofix.go Sat Apr 28 20:19:09 2018 +0000
+++ b/pkgtools/pkglint/files/autofix.go Sat Apr 28 23:32:52 2018 +0000
@@ -42,8 +42,10 @@
 // because of the --only option.
 //
 // The fixer function must always call Describef.
+//
 // If printAutofix or autofix is true, the fix should be done in
 // memory as far as possible (e.g. changes to the text of the line).
+//
 // If autofix is true, the fix should be done permanently
 // (e.g. direct changes to the file system).
 func (fix *Autofix) Custom(fixer func(printAutofix, autofix bool)) {
diff -r 0d9f7e0fec05 -r 7d9466a4a6f9 pkgtools/pkglint/files/licenses_test.go
--- a/pkgtools/pkglint/files/licenses_test.go   Sat Apr 28 20:19:09 2018 +0000
+++ b/pkgtools/pkglint/files/licenses_test.go   Sat Apr 28 23:32:52 2018 +0000
@@ -1,7 +1,7 @@
 package main
 
 import (
-       check "gopkg.in/check.v1"
+       "gopkg.in/check.v1"
 )
 
 func (s *Suite) Test_checklineLicense(c *check.C) {
@@ -44,3 +44,50 @@
 
        t.CheckOutputEmpty()
 }
+
+func (s *Suite) Test_checkToplevelUnusedLicenses(c *check.C) {
+       t := s.Init(c)
+
+       t.SetupFileLines("mk/bsd.pkg.mk", "# dummy")
+       t.SetupFileLines("mk/fetch/sites.mk", "# dummy")
+       t.SetupFileLines("mk/defaults/options.description", "option\tdescription")
+       t.SetupFileLines("doc/TODO")
+       t.SetupFileLines("mk/defaults/mk.conf")
+       t.SetupFileLines("mk/tools/bsd.tools.mk",
+               ".include \"actual-tools.mk\"")
+       t.SetupFileLines("mk/tools/actual-tools.mk")
+       t.SetupFileLines("mk/tools/defaults.mk")
+       t.SetupFileLines("mk/bsd.prefs.mk")
+       t.SetupFileLines("mk/misc/category.mk")
+       t.SetupFileLines("licenses/2-clause-bsd")
+       t.SetupFileLines("licenses/gnu-gpl-v3")
+
+       t.SetupFileLines("Makefile",
+               MkRcsID,
+               "SUBDIR+=\tcategory")
+
+       t.SetupFileLines("category/Makefile",
+               MkRcsID,
+               "COMMENT=\tExample category",
+               "",
+               "SUBDIR+=\tpackage",
+               "",
+               ".include \"../mk/misc/category.mk\"")
+
+       t.SetupFileLines("category/package/Makefile",
+               MkRcsID,
+               "CATEGORIES=\tcategory",
+               "",
+               "COMMENT=Example package",
+               "LICENSE=\t2-clause-bsd",
+               "NO_CHECKSUM=\tyes")
+       t.SetupFileLines("category/package/PLIST",
+               PlistRcsID,
+               "bin/program")
+
+       G.Main("pkglint", "-r", "-Cglobal", t.TmpDir())
+
+       t.CheckOutputLines(
+               "WARN: ~/licenses/gnu-gpl-v3: This license seems to be unused.",
+               "0 errors and 1 warning found.")
+}
diff -r 0d9f7e0fec05 -r 7d9466a4a6f9 pkgtools/pkglint/files/mkline_test.go
--- a/pkgtools/pkglint/files/mkline_test.go     Sat Apr 28 20:19:09 2018 +0000
+++ b/pkgtools/pkglint/files/mkline_test.go     Sat Apr 28 23:32:52 2018 +0000
@@ -627,7 +627,7 @@
 
        t.SetupCommandLine("-Wall")
        t.SetupVartypes()
-       G.Pkgsrc.Tools.RegisterVarname("tar", "TAR")
+       G.Pkgsrc.Tools.RegisterVarname("tar", "TAR", dummyLine)
        mklines := t.NewMkLines("Makefile",
                MkRcsID,
                "",
@@ -648,7 +648,7 @@
 
        t.SetupCommandLine("-Wall")
        t.SetupVartypes()
-       G.Pkgsrc.Tools.RegisterVarname("cat", "CAT")
+       G.Pkgsrc.Tools.RegisterVarname("cat", "CAT", dummyLine)
        mklines := t.NewMkLines("Makefile",
                MkRcsID,
                "",
diff -r 0d9f7e0fec05 -r 7d9466a4a6f9 pkgtools/pkglint/files/mklines.go
--- a/pkgtools/pkglint/files/mklines.go Sat Apr 28 20:19:09 2018 +0000
+++ b/pkgtools/pkglint/files/mklines.go Sat Apr 28 23:32:52 2018 +0000
@@ -19,6 +19,7 @@
        toolRegistry   ToolRegistry    // Tools defined in file scope.
        SeenBsdPrefsMk bool
        indentation    Indentation // Indentation depth of preprocessing directives
+       // XXX: Why both tools and toolRegistry?
 }
 
 func NewMkLines(lines []Line) *MkLines {
@@ -289,7 +290,7 @@
 type varalignBlockInfo struct {
        mkline         MkLine
        varnameOp      string // Variable name + assignment operator
-       varnameOpWidth int    // Screen width of varnameOp + space
+       varnameOpWidth int    // Screen width of varnameOp
        space          string // Whitespace between varnameOp and the variable value
        totalWidth     int    // Screen width of varnameOp + space
        continuation   bool   // A continuation line with no value in the first line.
diff -r 0d9f7e0fec05 -r 7d9466a4a6f9 pkgtools/pkglint/files/mktypes.go
--- a/pkgtools/pkglint/files/mktypes.go Sat Apr 28 20:19:09 2018 +0000
+++ b/pkgtools/pkglint/files/mktypes.go Sat Apr 28 23:32:52 2018 +0000
@@ -11,10 +11,15 @@
 
 // MkVarUse represents a reference to a Make variable, with optional modifiers.
 //
+// For nested variable expressions, the variable name can contain references
+// to other variables. For example, ${TOOLS.${t}} is a MkVarUse with varname
+// "TOOLS.${t}" and no modifiers.
+//
 // Example: ${PKGNAME}
+//
 // Example: ${PKGNAME:S/from/to/}
 type MkVarUse struct {
-       varname   string
+       varname   string   // E.g. "PKGNAME", or "${BUILD_DEFS}"
        modifiers []string // E.g. "Q", "S/from/to/"
 }
 
diff -r 0d9f7e0fec05 -r 7d9466a4a6f9 pkgtools/pkglint/files/pkglint.go
--- a/pkgtools/pkglint/files/pkglint.go Sat Apr 28 20:19:09 2018 +0000
+++ b/pkgtools/pkglint/files/pkglint.go Sat Apr 28 23:32:52 2018 +0000
@@ -119,8 +119,8 @@
 }
 
 // Main runs the main program with the given arguments.
-// args[0] is the program name.
-func (pkglint *Pkglint) Main(args ...string) (exitcode int) {
+// argv[0] is the program name.
+func (pkglint *Pkglint) Main(argv ...string) (exitcode int) {
        defer func() {
                if r := recover(); r != nil {
                        if _, ok := r.(pkglintFatal); ok {
@@ -131,7 +131,7 @@
                }
        }()
 
-       if exitcode := pkglint.ParseCommandLine(args); exitcode != nil {
+       if exitcode := pkglint.ParseCommandLine(argv); exitcode != nil {
                return *exitcode
        }
 
diff -r 0d9f7e0fec05 -r 7d9466a4a6f9 pkgtools/pkglint/files/pkgsrc.go
--- a/pkgtools/pkglint/files/pkgsrc.go  Sat Apr 28 20:19:09 2018 +0000
+++ b/pkgtools/pkglint/files/pkgsrc.go  Sat Apr 28 23:32:52 2018 +0000
@@ -14,7 +14,6 @@
 type Pkgsrc = *PkgsrcImpl
 
 type PkgsrcImpl struct {
-
        // The top directory (PKGSRCDIR), either absolute or relative to
        // the current working directory.
        topdir string
@@ -145,7 +144,8 @@
 func (src *PkgsrcImpl) loadTools() {
        toolFiles := []string{"defaults.mk"}
        {
-               lines := G.Pkgsrc.LoadExistingLines("mk/tools/bsd.tools.mk", true)
+               toc := G.Pkgsrc.File("mk/tools/bsd.tools.mk")
+               lines := LoadExistingLines(toc, true)
                for _, line := range lines {
                        if m, _, _, includefile := MatchMkInclude(line.Text); m {
                                if !contains(includefile, "/") {
@@ -154,16 +154,16 @@
                        }
                }
                if len(toolFiles) <= 1 {
-                       lines[0].Fatalf("Too few tool files.")
+                       NewLine(toc, 0, "", nil).Fatalf("Too few tool files.")
                }
        }
 
        reg := src.Tools
-       reg.RegisterTool(&Tool{"echo", "ECHO", true, true, true})
-       reg.RegisterTool(&Tool{"echo -n", "ECHO_N", true, true, true})
-       reg.RegisterTool(&Tool{"false", "FALSE", true /*why?*/, true, false})
-       reg.RegisterTool(&Tool{"test", "TEST", true, true, true})
-       reg.RegisterTool(&Tool{"true", "TRUE", true /*why?*/, true, true})
+       reg.RegisterTool(&Tool{"echo", "ECHO", true, true, true}, dummyLine)
+       reg.RegisterTool(&Tool{"echo -n", "ECHO_N", true, true, true}, dummyLine)
+       reg.RegisterTool(&Tool{"false", "FALSE", true /*why?*/, true, false}, dummyLine)
+       reg.RegisterTool(&Tool{"test", "TEST", true, true, true}, dummyLine)
+       reg.RegisterTool(&Tool{"true", "TRUE", true /*why?*/, true, true}, dummyLine)
 
        for _, basename := range toolFiles {
                lines := G.Pkgsrc.LoadExistingLines("mk/tools/"+basename, true)
@@ -190,11 +190,10 @@
                                        if condDepth == 0 || condDepth == 1 && relativeName == "mk/bsd.prefs.mk" {
                                                for _, toolname := range splitOnSpace(value) {
                                                        if !containsVarRef(toolname) {
-                                                               for _, tool := range [...]*Tool{reg.Register(toolname), reg.Register("TOOLS_" + toolname)} {
-                                                                       tool.Predefined = true
-                                                                       if relativeName == "mk/bsd.prefs.mk" {
-                                                                               tool.UsableAtLoadtime = true
-                                                                       }
+                                                               tool := reg.Register(toolname, line)
+                                                               tool.Predefined = true
+                                                               if relativeName == "mk/bsd.prefs.mk" {
+                                                                       tool.UsableAtLoadtime = true
                                                                }
                                                        }
                                                }
@@ -357,7 +356,6 @@
 
 func (src *PkgsrcImpl) initDeprecatedVars() {
        src.Deprecated = map[string]string{
-
                // December 2003
                "FIX_RPATH": "It has been removed from pkgsrc in 2003.",
 
@@ -519,7 +517,7 @@
 
 // LoadExistingLines loads the file relative to the pkgsrc top directory.
 func (src *PkgsrcImpl) LoadExistingLines(fileName string, joinBackslashLines bool) []Line {
-       return LoadExistingLines(src.topdir+"/"+fileName, joinBackslashLines)
+       return LoadExistingLines(src.File(fileName), joinBackslashLines)
 }
 
 // File resolves a file name relative to the pkgsrc top directory.
diff -r 0d9f7e0fec05 -r 7d9466a4a6f9 pkgtools/pkglint/files/pkgsrc_test.go
--- a/pkgtools/pkglint/files/pkgsrc_test.go     Sat Apr 28 20:19:09 2018 +0000
+++ b/pkgtools/pkglint/files/pkgsrc_test.go     Sat Apr 28 23:32:52 2018 +0000
@@ -66,7 +66,9 @@
 
        t.SetupFileLines("mk/tools/bsd.tools.mk",
                ".include \"flex.mk\"",
-               ".include \"gettext.mk\"")
+               ".include \"gettext.mk\"",
+               ".include \"strip.mk\"",
+               ".include \"replace.mk\"")
        t.SetupFileLines("mk/tools/defaults.mk",
                "_TOOLS_VARNAME.chown=CHOWN",
                "_TOOLS_VARNAME.gawk=AWK",
@@ -77,8 +79,21 @@
        t.SetupFileLines("mk/tools/gettext.mk",
                "USE_TOOLS+=msgfmt",
                "TOOLS_CREATE+=msgfmt")
+       t.SetupFileLines("mk/tools/strip.mk",
+               ".if defined(_INSTALL_UNSTRIPPED) || !defined(TOOLS_PLATFORM.strip)",
+               "TOOLS_NOOP+=            strip",
+               ".else",
+               "TOOLS_CREATE+=          strip",
+               "TOOLS_PATH.strip=       ${TOOLS_PLATFORM.strip}",
+               ".endif",
+               "STRIP?=         strip")
+       t.SetupFileLines("mk/tools/replace.mk",
+               "_TOOLS.bzip2=\tbzip2 bzcat",
+               "#TOOLS_CREATE+=commented out",
+               "_UNRELATED_VAR=\t# empty")
        t.SetupFileLines("mk/bsd.prefs.mk",
-               "USE_TOOLS+=\tpwd")
+               "USE_TOOLS+=\tpwd",
+               "USE_TOOLS+=\tm4:pkgsrc")
        t.SetupFileLines("mk/bsd.pkg.mk",
                "USE_TOOLS+=\tmv")
        G.CurrentDir = t.TmpDir()
@@ -91,16 +106,18 @@
 
        t.CheckOutputLines(
                "TRACE: + (*ToolRegistry).Trace()",
-               "TRACE: 1   tool &{Name:TOOLS_mv Varname: MustUseVarForm:false Predefined:true UsableAtLoadtime:false}",



Home | Main Index | Thread Index | Old Index