pkgsrc-Changes-HG archive

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

[pkgsrc/trunk]: pkgsrc/pkgtools/pkglint pkgtools/pkglint: update to 19.4.12



details:   https://anonhg.NetBSD.org/pkgsrc/rev/3eda039ea9f0
branches:  trunk
changeset: 413304:3eda039ea9f0
user:      rillig <rillig%pkgsrc.org@localhost>
date:      Wed Mar 18 08:24:49 2020 +0000

description:
pkgtools/pkglint: update to 19.4.12

Changes since 19.4.11:

Redundant additions to BUILDLINK_API_DEPENDS and BUILDLINK_ABI_DEPENDS
get warnings since they may have been needed in the past but the
dependent package has increased its required version numbers over time.

diffstat:

 pkgtools/pkglint/Makefile                      |    4 +-
 pkgtools/pkglint/files/buildlink3.go           |   69 +++++++-
 pkgtools/pkglint/files/buildlink3_test.go      |   32 +++-
 pkgtools/pkglint/files/check_test.go           |    3 +-
 pkgtools/pkglint/files/mkassignchecker_test.go |    4 +-
 pkgtools/pkglint/files/mklines.go              |    8 +-
 pkgtools/pkglint/files/mkvarusechecker_test.go |   50 +++--
 pkgtools/pkglint/files/options.go              |    2 +-
 pkgtools/pkglint/files/package.go              |   28 ++-
 pkgtools/pkglint/files/package_test.go         |   27 +++
 pkgtools/pkglint/files/pkglint.go              |    6 +-
 pkgtools/pkglint/files/pkglint_test.go         |   35 ++++
 pkgtools/pkglint/files/pkgsrc.go               |   12 +-
 pkgtools/pkglint/files/pkgsrc_test.go          |   13 +
 pkgtools/pkglint/files/plist.go                |   59 ++++++-
 pkgtools/pkglint/files/plist_test.go           |  136 +++++++++++++++-
 pkgtools/pkglint/files/shell.go                |    2 -
 pkgtools/pkglint/files/shell_test.go           |    7 +-
 pkgtools/pkglint/files/util.go                 |   17 +-
 pkgtools/pkglint/files/util_test.go            |   90 ++++++++++
 pkgtools/pkglint/files/vardefs.go              |  212 ++++++++++++------------
 pkgtools/pkglint/files/vardefs_test.go         |    1 +
 pkgtools/pkglint/files/vartypecheck.go         |   54 ++++++
 pkgtools/pkglint/files/vartypecheck_test.go    |   30 +++-
 24 files changed, 719 insertions(+), 182 deletions(-)

diffs (truncated from 1540 to 300 lines):

diff -r b55b044db530 -r 3eda039ea9f0 pkgtools/pkglint/Makefile
--- a/pkgtools/pkglint/Makefile Wed Mar 18 07:43:15 2020 +0000
+++ b/pkgtools/pkglint/Makefile Wed Mar 18 08:24:49 2020 +0000
@@ -1,6 +1,6 @@
-# $NetBSD: Makefile,v 1.634 2020/03/15 11:31:24 rillig Exp $
+# $NetBSD: Makefile,v 1.635 2020/03/18 08:24:49 rillig Exp $
 
-PKGNAME=       pkglint-19.4.11
+PKGNAME=       pkglint-19.4.12
 CATEGORIES=    pkgtools
 DISTNAME=      tools
 MASTER_SITES=  ${MASTER_SITE_GITHUB:=golang/}
diff -r b55b044db530 -r 3eda039ea9f0 pkgtools/pkglint/files/buildlink3.go
--- a/pkgtools/pkglint/files/buildlink3.go      Wed Mar 18 07:43:15 2020 +0000
+++ b/pkgtools/pkglint/files/buildlink3.go      Wed Mar 18 08:24:49 2020 +0000
@@ -13,8 +13,8 @@
        abi, api         *DependencyPattern
 }
 
-func NewBuildlink3Checker(mklines *MkLines) *Buildlink3Checker {
-       return &Buildlink3Checker{mklines: mklines}
+func CheckLinesBuildlink3Mk(mklines *MkLines) {
+       (&Buildlink3Checker{mklines: mklines}).Check()
 }
 
 func (ck *Buildlink3Checker) Check() {
@@ -90,6 +90,9 @@
 
        mlex.SkipEmptyOrNote()
        ck.pkgbase = pkgbase
+       if pkg := ck.mklines.pkg; pkg != nil {
+               pkg.buildlinkID = ck.pkgbase
+       }
        ck.pkgbaseLine = pkgbaseLine
        return true
 }
@@ -309,3 +312,65 @@
                        "after the specific version has been decided.")
        }
 }
+
+type Buildlink3Data struct {
+       id             Buildlink3ID
+       pkgsrcdir      PackagePath
+       apiDepends     *DependencyPattern
+       apiDependsLine *MkLine
+       abiDepends     *DependencyPattern
+       abiDependsLine *MkLine
+}
+
+// Buildlink3ID is the identifier that is used in the BUILDLINK_TREE
+// for referring to a dependent package.
+//
+// It almost uniquely identifies a package.
+// Packages that are alternatives to each other may use the same identifier.
+type Buildlink3ID string
+
+func LoadBuildlink3Data(mklines *MkLines) *Buildlink3Data {
+       assert(mklines.lines.BaseName == "buildlink3.mk")
+
+       var data Buildlink3Data
+       mklines.ForEach(func(mkline *MkLine) {
+               if mkline.IsVarassign() {
+                       varname := mkline.Varname()
+                       varbase := varnameBase(varname)
+                       varid := Buildlink3ID(varnameParam(varname))
+
+                       if varname == "BUILDLINK_TREE" {
+                               value := mkline.Value()
+                               if !hasPrefix(value, "-") {
+                                       data.id = Buildlink3ID(mkline.Value())
+                               }
+                       }
+
+                       if varbase == "BUILDLINK_API_DEPENDS" && varid == data.id {
+                               p := NewMkParser(nil, mkline.Value())
+                               dep := p.DependencyPattern()
+                               if dep != nil && p.EOF() {
+                                       data.apiDepends = dep
+                                       data.apiDependsLine = mkline
+                               }
+                       }
+
+                       if varbase == "BUILDLINK_ABI_DEPENDS" && varid == data.id {
+                               p := NewMkParser(nil, mkline.Value())
+                               dep := p.DependencyPattern()
+                               if dep != nil && p.EOF() {
+                                       data.abiDepends = dep
+                                       data.abiDependsLine = mkline
+                               }
+                       }
+
+                       if varbase == "BUILDLINK_PKGSRCDIR" && varid == data.id {
+                               data.pkgsrcdir = NewPackagePathString(mkline.Value())
+                       }
+               }
+       })
+       if data.id != "" && !data.pkgsrcdir.IsEmpty() && data.apiDepends != nil && data.abiDepends != nil {
+               return &data
+       }
+       return nil
+}
diff -r b55b044db530 -r 3eda039ea9f0 pkgtools/pkglint/files/buildlink3_test.go
--- a/pkgtools/pkglint/files/buildlink3_test.go Wed Mar 18 07:43:15 2020 +0000
+++ b/pkgtools/pkglint/files/buildlink3_test.go Wed Mar 18 08:24:49 2020 +0000
@@ -2,10 +2,6 @@
 
 import "gopkg.in/check.v1"
 
-func CheckLinesBuildlink3Mk(mklines *MkLines) {
-       NewBuildlink3Checker(mklines).Check()
-}
-
 // This test ensures that CheckLinesBuildlink3Mk really checks for
 // buildlink3.mk files that are included by the buildlink3.mk file
 // but not by the package.
@@ -1066,3 +1062,31 @@
                "WARN: buildlink3.mk:3: Please replace \"${LICENSE}\" with a simple string "+
                        "(also in other variables in this file).")
 }
+
+func (s *Suite) Test_LoadBuildlink3Data(c *check.C) {
+       t := s.Init(c)
+
+       t.CreateFileBuildlink3("category/package/buildlink3.mk",
+               "BUILDLINK_ABI_DEPENDS.package+=\tpackage>=0.1")
+       t.Chdir("category/package")
+       mklines := LoadMk("buildlink3.mk", nil, MustSucceed)
+
+       data := LoadBuildlink3Data(mklines)
+
+       t.CheckDeepEquals(data, &Buildlink3Data{
+               id:        "package",
+               pkgsrcdir: "../../category/package",
+               apiDepends: &DependencyPattern{
+                       Pkgbase: "package",
+                       LowerOp: ">=",
+                       Lower:   "0",
+               },
+               apiDependsLine: mklines.mklines[7],
+               abiDepends: &DependencyPattern{
+                       Pkgbase: "package",
+                       LowerOp: ">=",
+                       Lower:   "0.1",
+               },
+               abiDependsLine: mklines.mklines[11],
+       })
+}
diff -r b55b044db530 -r 3eda039ea9f0 pkgtools/pkglint/files/check_test.go
--- a/pkgtools/pkglint/files/check_test.go      Wed Mar 18 07:43:15 2020 +0000
+++ b/pkgtools/pkglint/files/check_test.go      Wed Mar 18 08:24:49 2020 +0000
@@ -243,7 +243,7 @@
 
 func (t *Tester) SetUpMasterSite(varname string, urls ...string) {
        if !G.Pkgsrc.vartypes.IsDefinedExact(varname) {
-               G.Pkgsrc.vartypes.DefineParse(varname, BtFetchURL,
+               t.SetUpType(varname, BtFetchURL,
                        List|SystemProvided,
                        "buildlink3.mk: none",
                        "*: use")
@@ -613,6 +613,7 @@
                sprintf("%s_BUILDLINK3_MK:=", upperID),
                "",
                aligned("BUILDLINK_API_DEPENDS.%s+=", id)+sprintf("%s>=0", id),
+               // TODO: Add ABI_DEPENDS; see Test_LoadBuildlink3Data
                aligned("BUILDLINK_PKGSRCDIR.%s?=", id)+sprintf("../../%s", dir),
                aligned("BUILDLINK_DEPMETHOD.%s?=", id)+"build",
                "")
diff -r b55b044db530 -r 3eda039ea9f0 pkgtools/pkglint/files/mkassignchecker_test.go
--- a/pkgtools/pkglint/files/mkassignchecker_test.go    Wed Mar 18 07:43:15 2020 +0000
+++ b/pkgtools/pkglint/files/mkassignchecker_test.go    Wed Mar 18 08:24:49 2020 +0000
@@ -427,9 +427,9 @@
 
        t.SetUpVartypes()
        t.SetUpTool("awk", "AWK", AtRunTime)
-       G.Pkgsrc.vartypes.DefineParse("SET_ONLY", BtUnknown, NoVartypeOptions,
+       t.SetUpType("SET_ONLY", BtUnknown, NoVartypeOptions,
                "options.mk: set")
-       G.Pkgsrc.vartypes.DefineParse("SET_ONLY_DEFAULT_ELSEWHERE", BtUnknown, NoVartypeOptions,
+       t.SetUpType("SET_ONLY_DEFAULT_ELSEWHERE", BtUnknown, NoVartypeOptions,
                "options.mk: set",
                "*.mk: default, set")
        mklines := t.NewMkLines("options.mk",
diff -r b55b044db530 -r 3eda039ea9f0 pkgtools/pkglint/files/mklines.go
--- a/pkgtools/pkglint/files/mklines.go Wed Mar 18 07:43:15 2020 +0000
+++ b/pkgtools/pkglint/files/mklines.go Wed Mar 18 08:24:49 2020 +0000
@@ -248,13 +248,7 @@
 }
 
 func (mklines *MkLines) collectVariables() {
-       if trace.Tracing {
-               defer trace.Call0()()
-       }
-
-       mklines.ForEach(func(mkline *MkLine) {
-               mklines.collectVariable(mkline)
-       })
+       mklines.ForEach(mklines.collectVariable)
 }
 
 func (mklines *MkLines) collectVariable(mkline *MkLine) {
diff -r b55b044db530 -r 3eda039ea9f0 pkgtools/pkglint/files/mkvarusechecker_test.go
--- a/pkgtools/pkglint/files/mkvarusechecker_test.go    Wed Mar 18 07:43:15 2020 +0000
+++ b/pkgtools/pkglint/files/mkvarusechecker_test.go    Wed Mar 18 08:24:49 2020 +0000
@@ -455,9 +455,9 @@
        t := s.Init(c)
 
        t.SetUpPkgsrc()
-       G.Pkgsrc.vartypes.DefineParse("LOAD_TIME", BtPathPattern, List,
+       t.SetUpType("LOAD_TIME", BtPathPattern, List,
                "special:filename.mk: use-loadtime")
-       G.Pkgsrc.vartypes.DefineParse("RUN_TIME", BtPathPattern, List,
+       t.SetUpType("RUN_TIME", BtPathPattern, List,
                "special:filename.mk: use")
        t.Chdir(".")
        t.FinishSetUp()
@@ -479,9 +479,9 @@
        t := s.Init(c)
 
        t.SetUpPkgsrc()
-       G.Pkgsrc.vartypes.DefineParse("LOAD_TIME", BtPathPattern, List,
+       t.SetUpType("LOAD_TIME", BtPathPattern, List,
                "special:filename.mk: use-loadtime")
-       G.Pkgsrc.vartypes.DefineParse("RUN_TIME", BtPathPattern, List,
+       t.SetUpType("RUN_TIME", BtPathPattern, List,
                "special:filename.mk: use")
        t.Chdir(".")
        t.FinishSetUp()
@@ -532,16 +532,16 @@
        t := s.Init(c)
 
        t.SetUpPkgsrc()
-       G.Pkgsrc.vartypes.DefineParse("LOAD_TIME", BtUnknown, NoVartypeOptions,
+       t.SetUpType("LOAD_TIME", BtUnknown, NoVartypeOptions,
                "*.mk: use, use-loadtime")
-       G.Pkgsrc.vartypes.DefineParse("RUN_TIME", BtUnknown, NoVartypeOptions,
+       t.SetUpType("RUN_TIME", BtUnknown, NoVartypeOptions,
                "*.mk: use")
-       G.Pkgsrc.vartypes.DefineParse("WRITE_ONLY", BtUnknown, NoVartypeOptions,
+       t.SetUpType("WRITE_ONLY", BtUnknown, NoVartypeOptions,
                "*.mk: set")
-       G.Pkgsrc.vartypes.DefineParse("LOAD_TIME_ELSEWHERE", BtUnknown, NoVartypeOptions,
+       t.SetUpType("LOAD_TIME_ELSEWHERE", BtUnknown, NoVartypeOptions,
                "Makefile: use-loadtime",
                "*.mk: set")
-       G.Pkgsrc.vartypes.DefineParse("RUN_TIME_ELSEWHERE", BtUnknown, NoVartypeOptions,
+       t.SetUpType("RUN_TIME_ELSEWHERE", BtUnknown, NoVartypeOptions,
                "Makefile: use",
                "*.mk: set")
        t.Chdir(".")
@@ -637,7 +637,7 @@
 func (s *Suite) Test_MkVarUseChecker_checkPermissions__usable_only_at_loadtime_in_other_file(c *check.C) {
        t := s.Init(c)
 
-       G.Pkgsrc.vartypes.DefineParse("VAR", BtFilename, NoVartypeOptions,
+       t.SetUpType("VAR", BtFilename, NoVartypeOptions,
                "*: set, use-loadtime")
        mklines := t.NewMkLines("Makefile",
                MkCvsID,
@@ -656,9 +656,8 @@
 
        // This combination of BtUnknown and all permissions is typical for
        // otherwise unknown variables from the pkgsrc infrastructure.
-       G.Pkgsrc.vartypes.Define("INFRA", BtUnknown, NoVartypeOptions,
-               NewACLEntry("*", aclpAll))
-       G.Pkgsrc.vartypes.DefineParse("VAR", BtUnknown, NoVartypeOptions,
+       t.SetUpType("INFRA", BtUnknown, NoVartypeOptions)
+       t.SetUpType("VAR", BtUnknown, NoVartypeOptions,
                "buildlink3.mk: none",
                "*: use")
        mklines := t.NewMkLines("buildlink3.mk",
@@ -692,10 +691,10 @@
        // to use its value in LOAD_TIME, as the latter might be evaluated later
        // at load time, and at that point VAR would be evaluated as well.
 
-       G.Pkgsrc.vartypes.DefineParse("LOAD_TIME", BtMessage, NoVartypeOptions,
+       t.SetUpType("LOAD_TIME", BtMessage, NoVartypeOptions,
                "buildlink3.mk: set",
                "*.mk: use-loadtime")
-       G.Pkgsrc.vartypes.DefineParse("VAR", BtUnknown, NoVartypeOptions,
+       t.SetUpType("VAR", BtUnknown, NoVartypeOptions,
                "buildlink3.mk: none",
                "*.mk: use")
        mklines := t.NewMkLines("buildlink3.mk",
@@ -963,7 +962,8 @@
        t.SetUpVartypes()
        mklines := t.NewMkLines("filename.mk",
                "BUILTIN_FIND_FILES_VAR:=\tBIN_FILE",
-               "BUILTIN_FIND_FILES.BIN_FILE=\t${TOOLS_PLATFORM.file} /bin/file /usr/bin/file")
+               "BUILTIN_FIND_FILES.BIN_FILE=\t${TOOLS_PLATFORM.file} /bin/file /usr/bin/file",
+               "PKG_SHELL.user=\t${TOOLS_PLATFORM.false:Q}")
 
        mklines.ForEach(func(mkline *MkLine) {
                ck := NewMkAssignChecker(mkline, mklines)
@@ -971,8 +971,11 @@
        })
 
        t.CheckOutputLines(
-               "WARN: filename.mk:2: Incompatible types: " +
-                       "TOOLS_PLATFORM.file (type \"ShellCommand\") " +



Home | Main Index | Thread Index | Old Index