Received: by mail.netbsd.org (Postfix, from userid 605) id F140484E78; Sat, 9 Jul 2022 06:40:56 +0000 (UTC) Received: from localhost (localhost [127.0.0.1]) by mail.netbsd.org (Postfix) with ESMTP id 371DF84D59 for ; Sat, 9 Jul 2022 06:40:56 +0000 (UTC) X-Virus-Scanned: amavisd-new at netbsd.org Received: from mail.netbsd.org ([127.0.0.1]) by localhost (mail.netbsd.org [127.0.0.1]) (amavisd-new, port 10025) with ESMTP id kLFaqsuBbs4c for ; Sat, 9 Jul 2022 06:40:55 +0000 (UTC) Received: from cvs.NetBSD.org (ivanova.NetBSD.org [IPv6:2001:470:a085:999:28c:faff:fe03:5984]) by mail.netbsd.org (Postfix) with ESMTP id 48EB084C13 for ; Sat, 9 Jul 2022 06:40:55 +0000 (UTC) Received: by cvs.NetBSD.org (Postfix, from userid 500) id 429D4FB1A; Sat, 9 Jul 2022 06:40:55 +0000 (UTC) Content-Transfer-Encoding: 7bit Content-Type: multipart/mixed; boundary="_----------=_165734885589590" MIME-Version: 1.0 Date: Sat, 9 Jul 2022 06:40:55 +0000 From: "Roland Illig" Subject: CVS commit: pkgsrc/pkgtools/pkglint To: pkgsrc-changes@NetBSD.org Reply-To: rillig@netbsd.org X-Mailer: log_accum Message-Id: <20220709064055.429D4FB1A@cvs.NetBSD.org> Sender: pkgsrc-changes-owner@NetBSD.org List-Id: Precedence: bulk List-Unsubscribe: This is a multi-part message in MIME format. --_----------=_165734885589590 Content-Disposition: inline Content-Transfer-Encoding: 8bit Content-Type: text/plain; charset="US-ASCII" Module Name: pkgsrc Committed By: rillig Date: Sat Jul 9 06:40:55 UTC 2022 Modified Files: pkgsrc/pkgtools/pkglint: Makefile pkgsrc/pkgtools/pkglint/files: distinfo.go mkassignchecker.go mkcondchecker.go mkparser.go mkparser_test.go Log Message: pkgtools/pkglint: update to 22.2.2 Changes since 22.2.1: Require the current checksum algorithms for pkgsrc-wip packages as well. SHA1 and RMD160 are no longer allowed for distfiles. Do not warn about 'Package should not' when checking .mk files in the pkgsrc infrastructure. To generate a diff of this commit: cvs rdiff -u -r1.720 -r1.721 pkgsrc/pkgtools/pkglint/Makefile cvs rdiff -u -r1.49 -r1.50 pkgsrc/pkgtools/pkglint/files/distinfo.go cvs rdiff -u -r1.13 -r1.14 pkgsrc/pkgtools/pkglint/files/mkassignchecker.go cvs rdiff -u -r1.12 -r1.13 pkgsrc/pkgtools/pkglint/files/mkcondchecker.go cvs rdiff -u -r1.43 -r1.44 pkgsrc/pkgtools/pkglint/files/mkparser.go cvs rdiff -u -r1.42 -r1.43 pkgsrc/pkgtools/pkglint/files/mkparser_test.go Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files. --_----------=_165734885589590 Content-Disposition: inline Content-Length: 7003 Content-Transfer-Encoding: binary Content-Type: text/x-diff; charset=us-ascii Modified files: Index: pkgsrc/pkgtools/pkglint/Makefile diff -u pkgsrc/pkgtools/pkglint/Makefile:1.720 pkgsrc/pkgtools/pkglint/Makefile:1.721 --- pkgsrc/pkgtools/pkglint/Makefile:1.720 Wed Jul 6 06:14:24 2022 +++ pkgsrc/pkgtools/pkglint/Makefile Sat Jul 9 06:40:54 2022 @@ -1,6 +1,6 @@ -# $NetBSD: Makefile,v 1.720 2022/07/06 06:14:24 rillig Exp $ +# $NetBSD: Makefile,v 1.721 2022/07/09 06:40:54 rillig Exp $ -PKGNAME= pkglint-22.2.1 +PKGNAME= pkglint-22.2.2 CATEGORIES= pkgtools DISTNAME= tools MASTER_SITES= ${MASTER_SITE_GITHUB:=golang/} Index: pkgsrc/pkgtools/pkglint/files/distinfo.go diff -u pkgsrc/pkgtools/pkglint/files/distinfo.go:1.49 pkgsrc/pkgtools/pkglint/files/distinfo.go:1.50 --- pkgsrc/pkgtools/pkglint/files/distinfo.go:1.49 Sat Nov 20 18:06:13 2021 +++ pkgsrc/pkgtools/pkglint/files/distinfo.go Sat Jul 9 06:40:55 2022 @@ -6,7 +6,6 @@ import ( "crypto/sha512" "encoding/hex" "golang.org/x/crypto/blake2s" - "golang.org/x/crypto/ripemd160" hashpkg "hash" "io" "strings" @@ -149,18 +148,6 @@ func (ck *distinfoLinesChecker) checkAlg return case algorithms == "BLAKE2s, SHA512, Size" && isPatch != yes: return - case G.Wip && algorithms == "RMD160, SHA512, Size" && isPatch != yes: - // TODO: remove after 2021Q4. Until then, allow pkgsrc-wip to - // be used with the stable 2021Q3. - return - case G.Wip && algorithms == "SHA1, RMD160, SHA512, Size" && isPatch != yes: - // TODO: remove after 2021Q4. Until then, allow pkgsrc-wip to - // be used with the stable 2021Q3. - return - case G.Wip && algorithms == "SHA1, BLAKE2s, SHA512, Size" && isPatch != yes: - // TODO: remove after 2021Q4. Until then, allow pkgsrc-wip to - // be used with the stable 2021Q3. - return } switch { @@ -277,8 +264,6 @@ func (ck *distinfoLinesChecker) checkAlg switch alg { case "SHA1": return computeHash(sha1.New()) - case "RMD160": // TODO: remove after 2021Q4 - return computeHash(ripemd160.New()) case "BLAKE2s": blake, err := blake2s.New256(nil) assertNil(err, "blake2s") @@ -462,15 +447,6 @@ func (info *distinfoFileInfo) algorithms func (info *distinfoFileInfo) hasDistfileAlgorithms() bool { h := info.hashes - // TODO: remove after 2021Q4. Until then, allow pkgsrc-wip to - // be used with the stable 2021Q3. - if G.Wip && len(h) == 4 && - h[0].algorithm == "SHA1" && - h[1].algorithm == "RMD160" && - h[2].algorithm == "SHA512" && - h[3].algorithm == "Size" { - return true - } return len(h) == 3 && h[0].algorithm == "BLAKE2s" && h[1].algorithm == "SHA512" && Index: pkgsrc/pkgtools/pkglint/files/mkassignchecker.go diff -u pkgsrc/pkgtools/pkglint/files/mkassignchecker.go:1.13 pkgsrc/pkgtools/pkglint/files/mkassignchecker.go:1.14 --- pkgsrc/pkgtools/pkglint/files/mkassignchecker.go:1.13 Mon Mar 21 22:30:06 2022 +++ pkgsrc/pkgtools/pkglint/files/mkassignchecker.go Sat Jul 9 06:40:55 2022 @@ -199,6 +199,10 @@ func (ck *MkAssignChecker) checkLeftUser } switch { + case G.Infrastructure: + // No warnings, as the usage patterns between the packages + // and the pkgsrc infrastructure differ a lot. + case mkline.HasComment(): // Assume that the comment contains a rationale for disabling // this particular check. Index: pkgsrc/pkgtools/pkglint/files/mkcondchecker.go diff -u pkgsrc/pkgtools/pkglint/files/mkcondchecker.go:1.12 pkgsrc/pkgtools/pkglint/files/mkcondchecker.go:1.13 --- pkgsrc/pkgtools/pkglint/files/mkcondchecker.go:1.12 Wed Jul 6 06:14:24 2022 +++ pkgsrc/pkgtools/pkglint/files/mkcondchecker.go Sat Jul 9 06:40:55 2022 @@ -246,10 +246,12 @@ func (ck *MkCondChecker) simplify(varuse // Replace empty(VAR:M*.c) with !${VAR:M*.c}. if fromEmpty && positive && !exact && vartype != nil && isDefined() && // Restrict replacements to very simple patterns with only few - // special characters. + // special characters, for now. // Before generalizing this to arbitrary strings, there has to be // a proper code generator for these conditions that handles all // possible escaping. + // The same reasoning applies to the variable name, even though the + // variable name typically only uses a restricted character set. matches(varuse.Mod(), `^[*.:\w]+$`) { fixedPart := varname + modsExceptLast + ":M" + pattern Index: pkgsrc/pkgtools/pkglint/files/mkparser.go diff -u pkgsrc/pkgtools/pkglint/files/mkparser.go:1.43 pkgsrc/pkgtools/pkglint/files/mkparser.go:1.44 --- pkgsrc/pkgtools/pkglint/files/mkparser.go:1.43 Sun Jun 14 11:35:54 2020 +++ pkgsrc/pkgtools/pkglint/files/mkparser.go Sat Jul 9 06:40:55 2022 @@ -437,8 +437,10 @@ func ToVarUse(str string) *MkVarUse { // // The representation is somewhere between syntactic and semantic. // Unnecessary parentheses are omitted in this representation, +// (TODO: double-check; the 'paren(paren(paren()))' tests contradict) // but !empty(VARNAME) is represented differently from ${VARNAME} != "". // For higher level analysis, a unified representation might be better. +// See MkParser.MkCond. type MkCond struct { Or []*MkCond And []*MkCond Index: pkgsrc/pkgtools/pkglint/files/mkparser_test.go diff -u pkgsrc/pkgtools/pkglint/files/mkparser_test.go:1.42 pkgsrc/pkgtools/pkglint/files/mkparser_test.go:1.43 --- pkgsrc/pkgtools/pkglint/files/mkparser_test.go:1.42 Sat Jan 1 12:44:25 2022 +++ pkgsrc/pkgtools/pkglint/files/mkparser_test.go Sat Jul 9 06:40:55 2022 @@ -1,6 +1,7 @@ package pkglint import ( + "encoding/json" "gopkg.in/check.v1" "strings" ) @@ -40,13 +41,22 @@ func (s *Suite) Test_MkParser_MkCond(c * defined := func(varname string) *MkCond { return &MkCond{Defined: varname} } paren := func(cond *MkCond) *MkCond { return &MkCond{Paren: cond} } + toJSON := func(obj interface{}) string { + var sb strings.Builder + encoder := json.NewEncoder(&sb) + encoder.SetIndent("", " ") + err := encoder.Encode(obj) + t.AssertNil(err) + return sb.String() + } + testRest := func(input string, expectedTree *MkCond, expectedRest string) { // As of July 2019 p.MkCond does not emit warnings; // this is left to MkCondChecker.Check. line := t.NewLine("filename.mk", 1, ".if "+input) p := NewMkParser(line, input) actualTree := p.MkCond() - t.CheckDeepEquals(actualTree, expectedTree) + t.CheckDeepEquals(toJSON(actualTree), toJSON(expectedTree)) t.CheckEquals(p.Rest(), expectedRest) } test := func(input string, expectedTree *MkCond) { @@ -187,6 +197,18 @@ func (s *Suite) Test_MkParser_MkCond(c * test("target(do-build)", call("target", "do-build")) + test("(!defined(VAR))", + paren(not(defined("VAR")))) + + test("(((((!defined(VAR))))))", + paren(paren(paren(paren(paren(not(defined("VAR")))))))) + + test("(${VAR} == \"value\")", + paren(cmp(cvar("VAR"), "==", cstr("value")))) + + test("(((((${VAR} == \"value\")))))", + paren(paren(paren(paren(paren(cmp(cvar("VAR"), "==", cstr("value")))))))) + // TODO: ok "${q}text${q} == ${VAR}" // TODO: fail "text${q} == ${VAR}" // TODO: ok "${VAR} == ${q}text${q}" --_----------=_165734885589590--