The NetBSD Project

CVS log for pkgsrc/pkgtools/pkglint/files/vartype_test.go

[BACK] Up to [] / pkgsrc / pkgtools / pkglint / files

Request diff between arbitrary revisions

Default branch: MAIN

Revision 1.27 / (download) - annotate - [select for diffs], Sun Jun 7 15:49:23 2020 UTC (12 months, 1 week ago) by rillig
Branch: MAIN
CVS Tags: pkgsrc-2021Q1-base, pkgsrc-2021Q1, pkgsrc-2020Q4-base, pkgsrc-2020Q4, pkgsrc-2020Q3-base, pkgsrc-2020Q3, pkgsrc-2020Q2-base, pkgsrc-2020Q2, HEAD
Changes since 1.26: +2 -0 lines
Diff to previous 1.26 (colored)

pkgtools/pkglint: update to 20.1.15

Changes since 20.1.14:

Fix confusing wording of diagnostic "should contain text".  It's more
precise to say "this line should consist of this text".  Otherwise it's
too easy to interpret it as "the text should occur somewhere in the

Allow BUILDLINK_PREFIX.* to be used in helper files.  Especially for
programming language packages, files like often include and therefore may refer to the BUILDLINK_PREFIX of this

Warn about redundant BUILDLINK_API_VERSION restrictions.  Previously, the
check had only been enabled if the operators from the default dependency
pattern ( and the additional dependency pattern (package)
used the same operators, which already covered most practical cases.

Determine SuSE versions from the pkgsrc tree.

Revision 1.26 / (download) - annotate - [select for diffs], Sat Jun 6 20:42:56 2020 UTC (12 months, 1 week ago) by rillig
Branch: MAIN
Changes since 1.25: +0 -2 lines
Diff to previous 1.25 (colored)

pkgtools/pkglint: update to 20.1.14

Changes since 20.1.13:

Packages that don't define DISTNAME probably don't download any files
and thus may not need a distinfo file.  (There are several other
conditions involved in this, though.)

When reporting wrong distinfo hashes, always report them in the order in
which they appear in the distinfo file, not by hashmap order.

Fix panic when parsing the Makefile line "./=value", which according to
bmake is a variable assignment.  This is not used in practice though.

Disallow a leading hyphen in package option names.  There are only very
few packages that wrongly use these option selectors in

Distinguish between a tool dependency (USE_TOOLS) and a plain tool name
(TOOLS_NOOP, TOOLS_BROKEN, TOOLS_FAIL).  Allow packages to add arbitrary
tools to these lists.

Revision 1.25 / (download) - annotate - [select for diffs], Mon Dec 30 16:27:13 2019 UTC (17 months, 2 weeks ago) by rillig
Branch: MAIN
CVS Tags: pkgsrc-2020Q1-base, pkgsrc-2020Q1
Changes since 1.24: +17 -0 lines
Diff to previous 1.24 (colored)

pkgtools/pkglint: update to 19.4.0

Changes since 19.3.19:

Empty PLIST files now generate an error instead of a warning since there
is no reason for having these empty files.

If a follow-up line in a Makefile is completely empty, there is no note
about trailing whitespace anymore since the warning about the misleading
empty line already covers this case.

The remaining code changes are only refactorings.

Revision 1.24 / (download) - annotate - [select for diffs], Fri Dec 13 01:39:23 2019 UTC (18 months ago) by rillig
Branch: MAIN
CVS Tags: pkgsrc-2019Q4-base, pkgsrc-2019Q4
Changes since 1.23: +1 -1 lines
Diff to previous 1.23 (colored)

pkgtools/pkglint: update to 19.3.17

Changes since 19.3.16:

Pkglint now handles SUBST blocks correctly, even those in which some of
the variables are defined conditionally. It correctly reports those that
are missing in at least one of the possible branches.

PKG_JVM is no longer marked as deprecated. It was once package-settable.
Since 2002 it is system-provided, and the package-settable counterpart
is PKG_JVM_DEFAULT. This does not fit into pkglint's simple model of
deprecating variables since the variable name is still valid, it should
just not be defined by packages anymore.

The alignment of variable assignments has been fixed in some edge cases.
In continuation lines where the backslash is beyond column 72, the
whitespace before the continuation backslash is fixed to a single space.

Revision 1.23 / (download) - annotate - [select for diffs], Sun Dec 8 00:06:38 2019 UTC (18 months, 1 week ago) by rillig
Branch: MAIN
Changes since 1.22: +77 -4 lines
Diff to previous 1.22 (colored)

pkgtools/pkglint: update to 19.3.14

Changes since 19.3.13:

When pkglint suggests to replace !empty(VARNAME:Mfixed) with ${VARNAME}
== fixed, the exact suggested expression is now part of the diagnostic.
The check and the autofix have been improved. They now apply only to the
last modifier in the whole chain, everything else was a bug in pkglint.

Pkglint now knows the scope of variables better than before. It knows
the difference between variables from <> like MACHINE_ARCH, which
are always in scope, and those from mk/defaults/mk.conf, which only come
into scope later, after has been included. It warns when
variables are used too early, for example in .if conditions.

The pathnames in ALTERNATIVES files are now checked for absolute
pathnames. This mistake doesn't happen in practice, but the code for
converting the different path types internally made it necessary to add
these checks. At least this prevents typos.

The special check for obsolete licenses has been removed since their
license files have been removed and that is checked as well.

Variables named *_AWK may be appended to.

The variables _PKG_SILENT and _PKG_DEBUG are no longer deprecated, they
are obsolete now. They are not used in main pkgsrc and pkgsrc-wip

When a package sets a default value for a user-settable variable (which
is something that should not happen anyway), it should .include before, in order to not accidentally overwrite the
user-specified value.

Variable modifiers of the form :from=to are now parsed like in bmake.
They are greedy and eat up any following colons as well. This means that
${VAR:.c=.o:Q} replaces source.c with source.o:Q, instead of quoting it.
Pkglint now warns about such cases.

The handling of relative paths in diagnostics is now consistent. All
paths that are part of a diagnostic are relative to the line that issues
the diagnostic.

Fatal errors are no longer suppressed in --autofix mode.

Plus lots of refactoring, to prevent accidental mixing of incompatible
relative paths.

Revision 1.22 / (download) - annotate - [select for diffs], Sun Nov 17 01:26:25 2019 UTC (19 months ago) by rillig
Branch: MAIN
Changes since 1.21: +38 -39 lines
Diff to previous 1.21 (colored)

pkgtools/pkglint: update to 19.3.7

Changes since 19.3.6:

Improved variable value alignment.

Fixed wrong warning about comment lines that were interpreted as shell
commands before.

Warn when the first category of a package doesn't correspond to the
path in the filesystem. This affects 603 packages.

No longer warn about deprecated BUILDLINK_TRANSFORM.${OPSYS}. The
deprecation warning was meant for BUILDLINK_TRANSFORM.${pkgbase}, but
since pkglint cannot distinguish between these, the warnings were wrong.

Revision 1.21 / (download) - annotate - [select for diffs], Sun Jul 14 21:25:47 2019 UTC (23 months ago) by rillig
Branch: MAIN
CVS Tags: pkgsrc-2019Q3-base, pkgsrc-2019Q3
Changes since 1.20: +39 -30 lines
Diff to previous 1.20 (colored)

pkgtools/pkglint: update to 5.7.16

Changes since 5.7.15:

* Completely rewrote the code for aligning multiple variable assignment
  lines. It works on the actual lines of the file now instead of the
  parsed lines. This provides more exact diagnostics and also makes the
  handling of these lines easier so that future requirements can be
  implemented more easily.

* Added support for exotic conditions in .if clauses. These conditions
  are not seen in the wild though.

* Fixed wrong diagnostics for ALTERNATIVES files that appear
  conditionally in the PLIST.

* As always: lots of refactorings and newly added tests.

Revision 1.20 / (download) - annotate - [select for diffs], Sun Jun 30 20:56:19 2019 UTC (23 months, 2 weeks ago) by rillig
Branch: MAIN
Changes since 1.19: +4 -4 lines
Diff to previous 1.19 (colored)

pkgtools/pkglint: update to 5.7.14

Changes since 5.7.13:

- Removed the -Cextra command line option since it didn't produce useful

- Removed unwarranted warnings about _WRAP_EXTRA_ARGS.CC being used in

- Cleaned up the canonical order of variables in package Makefiles.

- Added a few commands to those that cannot fail, to reduce the number of
  "at the left of the | operator" in shell programs.

- Fixed warnings about "-ggdb" being an unknown shell command.

- Reduced number of warnings about lists being used where a single value
  is expected.

- Replaced unreliable check for invalid CFLAGS and LDFLAGS with a more
  practical check.

- Renamed "RCS tag" to "CVS tag" to make the diagnostics more modern.

- Added warning when PKGNAME or PKGVERSION is used in MASTER_SITES.

- Reworded warning for missing or superfluous PLIST files.

- Lots of other detail changes, refactorings and automatic tests.

Revision 1.19 / (download) - annotate - [select for diffs], Sun May 26 14:05:57 2019 UTC (2 years ago) by rillig
Branch: MAIN
CVS Tags: pkgsrc-2019Q2-base, pkgsrc-2019Q2
Changes since 1.18: +2 -2 lines
Diff to previous 1.18 (colored)

pkgtools/pkglint: update to 5.7.12

Changes since 5.7.11:

* Fixed an alignment bug when pkglint replaced SUBST_SED with

* Added many test cases.

Revision 1.18 / (download) - annotate - [select for diffs], Sat Apr 20 17:43:25 2019 UTC (2 years, 1 month ago) by rillig
Branch: MAIN
Changes since 1.17: +15 -6 lines
Diff to previous 1.17 (colored)

pkgtools/pkglint: update to 5.7.5

Changes since 5.7.4:

* Warn about invalid variable uses in directives like
  .if and .for

* Do not warn when a package-settable variable is assigned using the ?=
  operator before including This warning only makes sense
  for user-settable and system-provided variables.

* The parser for variable uses like ${VAR:@v@${v:Q}} is more robust now,
  which reduces the number of parse errors and leads to more appropriate
  diagnostics, in cases like ${URL:Mftp://*}, which should really be

* The valid values for OPSYS are now determined by the files in
  mk/platform instead of allowing arbitrary identifiers. This catches a
  few instances where "Solaris" is used instead of the correct "SunOS".

* Setting USE_LANGUAGES only has an effect if mk/ has not yet
  been included. In all other cases, pkglint warns now.

* Missing entries in doc/CHANGES produce a note now. This will lead to
  more accurate statistics for the release notes.

Revision 1.17 / (download) - annotate - [select for diffs], Wed Apr 3 21:49:51 2019 UTC (2 years, 2 months ago) by rillig
Branch: MAIN
Changes since 1.16: +4 -4 lines
Diff to previous 1.16 (colored)

pkgtools/pkglint: update to 5.7.4

Changes since 5.7.3:

* Warn about dependency patterns that are missing a version number,
  such as ${PYPKGPREFIX}-sqlite3:../../databases/py-sqlite3.

* Suggest to replace the := assignment operator with the :sh modifier,
  in some cases where the variable is not obviously used at load time.

Revision 1.16 / (download) - annotate - [select for diffs], Sun Mar 24 13:58:38 2019 UTC (2 years, 2 months ago) by rillig
Branch: MAIN
CVS Tags: pkgsrc-2019Q1-base, pkgsrc-2019Q1
Changes since 1.15: +99 -9 lines
Diff to previous 1.15 (colored)

pkgtools/pkglint: update to 5.7.3

Changes since 5.7.2:

PLIST files are checked for non-ASCII characters. Even though pkgsrc
sets up the environment with LC_ALL=C, there are still some cases
of encoding errors. The case discussed on the tech-pkg mailing list
was lang/go112.

The checks for variable permissions ("may not be set in this file")
have been reworked completely. Many of the variable permissions had
different rules for Makefile and Makefile.common. These different
rules tried to prevent accidental overwriting of variables. Starting
in July 2018, pkglint got a check for redundant variables that is
far more accurate than the previous variable permissions. Therefore
these fine-grained permissions are no longer necessary. This removes
a few hundred wrong warnings about insufficient permissions.

The check that adds missing SHA512 hashes to distinfo files has been
fixed to work correctly in DIST_SUBDIR cases.

Improved the checks regarding tools that are used by a package but
not added to USE_TOOLS. For example, the "make" tool is always
available, as are all tools that are added to TOOLS_CREATE.

Lots of small improvements, as always.

Revision 1.15 / (download) - annotate - [select for diffs], Sat Jan 26 16:31:33 2019 UTC (2 years, 4 months ago) by rillig
Branch: MAIN
Changes since 1.14: +1 -1 lines
Diff to previous 1.14 (colored)

pkgtools/pkglint: update to 5.6.12

Changes since 5.6.11:

* In files, print the paths relative
  to the line, not to the pkgsrc root.

* When explaining that a variable cannot be set/used because of wrong
  permissions, list the permissions. This provides more transparency
  than just stating that the desired action is not allowed.

* When pkglint checks a pkgsrc-wip package, don't warn about malformed
  lines in doc/CHANGES-* since pkgsrc-wip users typically cannot do
  anything about these errors.

* In profiling mode, not only the code coverage and the performance
  statistics are dumped, the whole heap is also dumped to see which
  parts of pkglint consume the most heap memory. Pkglint now needs
  less heap memory than before, which mainly affects full scans.

* The checks for absolute pathnames have gone. They were of questionable
  value since pkglint has failed to give proper advice on how to fix
  them properly, at least for the last 12 years.

* The check that pkgsrc-wip packages should only use exact CVS Ids
  (the unexpanded variant) has been disabled again. It occurred about
  16000 times but even fixing it wouldn't improve anything since it
  was mostly a formatting issue without any practical consequences.

* Warn about trailing variable modifiers like in ${VAR:S,from,to,extra}.

* Properly parse ${VAR:!command!}.

* Suggest to replace SUBST_SED with SUBST_VARS where possible, even
  with complicated shell quoting. Pkglint can autofix most of these
  overly verbose cases.

* Load whenever the corresponding file is
  included. This fixes several warnings about undefined variables
  (especially for packages using OpenSSL).

* Parse .for lines like bmake does since 2015, splitting words like
  in brk_string.

* Optionally show a warning even if it cannot be autofixed by pkglint.
  This is useful for the SUBST_VARS replacement since even when
  pkglint cannot automatically replace the code, there are still cases
  where it can warn at least.

* As always, several refactorings.

Revision 1.14 / (download) - annotate - [select for diffs], Sun Jan 13 19:55:53 2019 UTC (2 years, 5 months ago) by rillig
Branch: MAIN
Changes since 1.13: +10 -5 lines
Diff to previous 1.13 (colored)

pkgtools/pkglint: update to 5.6.11

Changes since 5.6.10:

* Improved the wording of several warnings

* Fixed parsing of complicated dependency patterns such as
  {ssh{,6}-[0-9]*,openssh-[0-9]*}. Pkglint still doesn't understand
  them but at least it doesn't mark them as "unknown" anymore.

* Lots of refactoring, as usual. This is the last part of the big
  refactoring, therefore future changes to pkglint are expected to be
  smaller than in the previous 3 months.

Revision 1.13 / (download) - annotate - [select for diffs], Fri Dec 21 08:05:24 2018 UTC (2 years, 5 months ago) by rillig
Branch: MAIN
CVS Tags: pkgsrc-2018Q4-base, pkgsrc-2018Q4
Changes since 1.12: +1 -1 lines
Diff to previous 1.12 (colored)

pkgtools/pkglint: update to 5.6.10

Changes since 5.6.9:

* ALTERNATIVES files are correctly checked now. Before, pkglint had
  suggested to remove the @PREFIX/ from the alternative, which was
  wrong and simply didn't work.

* Diagnostics about variable assignments are ordered to report the
  left-hand side first and then everything to the right of the
  assignment operator.

* The pkglint output is escaped properly to avoid sending unwanted
  escape sequences to the terminal.

* The items in .for loops are parsed taking "double" and 'single'
  quotes into account since bmake does it in the same way since 2015.

* In DESCR files, overly long lines are only warned about if they
  contain a space and therefore can be made shorter.

* In DESCR files, text like ${PREFIX} only gets a note if it refers
  to a commonly known pkgsrc variable. This avoids distraction when
  a package mentions ${prefix}/bin or ${}.

* Lots of refactorings and small changes.

Revision 1.12 / (download) - annotate - [select for diffs], Mon Dec 17 00:15:39 2018 UTC (2 years, 6 months ago) by rillig
Branch: MAIN
Changes since 1.11: +13 -1 lines
Diff to previous 1.11 (colored)

pkgtools/pkglint: update to 5.6.9

Changes since 5.6.8:

* In addition to the pkglint binary, the whole pkglint code is installed as
  a library, so that other packages can use the code for doing their own
  checks on pkgsrc packages, Makefiles, shell programs, or the other file
  types from pkgsrc.

* BUILDLINK_*.* may be used in all files.

* Lots of refactorings

Revision 1.11 / (download) - annotate - [select for diffs], Sun Dec 2 01:57:48 2018 UTC (2 years, 6 months ago) by rillig
Branch: MAIN
Changes since 1.10: +1 -1 lines
Diff to previous 1.10 (colored)

pkgtools/pkglint: update to 5.6.7

Changes since 5.6.6:

User-defined variables that are not yet added to BUILD_DEFS are only
reported once per file.

Unnecessary space after variable names is only worth a note instead of
a warning. Example:

        MASTER_SITES =

All variable names that are defined in the pkgsrc infrastructure are
assumed to be available to the package Makefiles. This reduces the
number of wrong "used but not defined" warnings, at the expense of

Variable names that are used in other variable names are checked
whether they are defined somewhere. Example:

        CFLAGS+=        ${CFLAGS.${PARAM}}      # PARAM is now checked

In SUBST_SED, when the pattern is s,@VAR@,${VAR}, or a slight variant
thereof, pkglint suggests to define SUBST_VARS instead, which frees the
package author from thinking about how to escape special characters and
is generally easier to read. Example:

        SUBST_SED.class=        s,@VAR@,${VAR:Q},

        SUBST_VARS.class=       VAR

Directives like .if !defined(...) are now handled the same whether or
not there is a space after before the (...).

The check for locally modified files now works independently of the

As always, lots of refactorings have happened under the hood. Many small
bugs have been discovered and fixed accordingly.

Revision 1.10 / (download) - annotate - [select for diffs], Wed Nov 7 20:58:23 2018 UTC (2 years, 7 months ago) by rillig
Branch: MAIN
Changes since 1.9: +1 -1 lines
Diff to previous 1.9 (colored)

pkgtools/pkglint: update to 5.6.6

Changes since 5.6.5:

- Removed plist-clash since it had crashed unconditionally whenever it
  was called. This means that in the last 3 years, nobody can have
  used it in the originally intended way.

- Fixed interactions between the --source, --explain, --show-autofix,
  --autofix and --only options.

- Fixed "defined but not used" and "used but not defined" for variables
  from the pkgsrc infrastructure.

- Lots of small fixes and improvements found by the large pkglint code
  review (12% done).

Revision 1.9 / (download) - annotate - [select for diffs], Tue Oct 9 19:12:13 2018 UTC (2 years, 8 months ago) by rillig
Branch: MAIN
Changes since 1.8: +8 -9 lines
Diff to previous 1.8 (colored)

pkgtools/pkglint: update to 5.6.4

Changes since 5.6.3:

* Allow += for COMMENT

* Sync variable type definitions with reality

* Fix check for "used but not defined" variables. This check had been
  broken since pkgtools/pkglint/files/ r1.776 from 2008-10-18
  (3cd071958e63), which missed its 10-year anniversary by just 9 days.

  After fixing this check, pkglint produces about 800 new warnings
  spread all over pkgsrc, most of which are real typos.

* Detect used variables also in .if and .elif conditions. This is
  closely related to the above fix and reduces the number of "defined
  but not used" variables, while at the same time producing new warnings
  because these variables are used at load time, where some of these
  variables are not yet defined.

* Detect variables for which pkglint doesn't know the exact data type
  by scanning all files under mk/ at startup. Currently there are about
  470 of these variables. No "used but not defined" warnings are issued
  for these variables anymore.

* To speed up pkglint when checking the whole pkgsrc tree at once, the
  most often needed files are cached to reduce IO load. The checks for
  USE_TOOLS are optimized now since they were a major bottleneck.
  Together with other performance improvements this makes pkglint about
  50% faster when checking the whole pkgsrc tree including pkgsrc-wip.

Revision 1.8 / (download) - annotate - [select for diffs], Wed Oct 3 22:27:53 2018 UTC (2 years, 8 months ago) by rillig
Branch: MAIN
Changes since 1.7: +3 -3 lines
Diff to previous 1.7 (colored)

pkgtools/pkglint: Update to 5.6.3

Changes since 5.6.2:

* Add check for version patterns 1.5*, which should rather be 1.5.*

* Re-enable check for "set -e" and commands that may silently fail
  because of missing error checking

* Lots of internal clean-up and tests

Revision 1.7 / (download) - annotate - [select for diffs], Wed Sep 5 17:56:22 2018 UTC (2 years, 9 months ago) by rillig
Branch: MAIN
CVS Tags: pkgsrc-2018Q3-base, pkgsrc-2018Q3
Changes since 1.6: +12 -1 lines
Diff to previous 1.6 (colored)

pkgtools/pkglint: update to 5.6.2

Changes since 5.6.1:

* Improved checks that depend on whether is included or

* Improved checks for tools, whether they may be used at load time
  or at run time.

* Improved tokenizer for shell commands. $| is not a variable but a
  dollar followed by a pipe.

* Warnings about SUBST context are now shown by default.

* A warning is shown when a SUBST block is declared for *-configure
  but the package has defined USE_CONFIGURE=no.

* Don't warn about USE_TOOLS:= ${USE_TOOLS:Ntool}.

* Don't warn about using the ?= operator in files before
  including (for some more variables, but not all).

* Report an error for packages from main pkgsrc that have a TODO or
  README file. Packages should be simple enough that they don't need
  a README file and ready for production so that they don't need a TODO.

* Lots of small bug fixes and new tests.

Revision 1.6 / (download) - annotate - [select for diffs], Sat Mar 24 14:32:49 2018 UTC (3 years, 2 months ago) by rillig
Branch: MAIN
CVS Tags: pkgsrc-2018Q2-base, pkgsrc-2018Q2, pkgsrc-2018Q1-base, pkgsrc-2018Q1
Changes since 1.5: +5 -3 lines
Diff to previous 1.5 (colored)

Update pkglint to 5.5.7

Changes since 5.5.6:

* When pkglint warns about files that are accidentally executable, it
  offers to fix the file permissions.

* Warn about ${HOMEPAGE:=repository/}, since the := modifier should
  only be used with MASTER_SITES.

* When the distinfo file is missing, suggest setting NO_CHECKSUM.

* Several refactorings.

Revision 1.5 / (download) - annotate - [select for diffs], Mon Feb 19 12:40:38 2018 UTC (3 years, 3 months ago) by rillig
Branch: MAIN
Changes since 1.4: +2 -2 lines
Diff to previous 1.4 (colored)

pkgtools/pkglint: update to 5.5.5

Changes since 5.5.3:

- Removed check for PERL5_PACKLIST, since it was not fixable by the
  package author.

- Completely rewrote the check for ordering variables in simple
  package Makefiles. Now it reports the variables in the correct order
  instead of just saying "this above that" for a few variables.

- Lots of code cleanup and documentation.

Revision 1.4 / (download) - annotate - [select for diffs], Sun Jul 10 21:24:47 2016 UTC (4 years, 11 months ago) by rillig
Branch: MAIN
CVS Tags: pkgsrc-2017Q4-base, pkgsrc-2017Q4, pkgsrc-2017Q3-base, pkgsrc-2017Q3, pkgsrc-2017Q2-base, pkgsrc-2017Q2, pkgsrc-2017Q1-base, pkgsrc-2017Q1, pkgsrc-2016Q4-base, pkgsrc-2016Q4, pkgsrc-2016Q3-base, pkgsrc-2016Q3
Changes since 1.3: +2 -2 lines
Diff to previous 1.3 (colored)

Updated pkglint to 5.4.7.

Changes since 5.4.6:

* Allow conditionals of the form "${var1}" == "${var2}"
* Check for indentation of .include directives
* Check arbitrarily complex license conditions
* General code cleanup

Revision 1.3 / (download) - annotate - [select for diffs], Sat Jul 9 09:43:48 2016 UTC (4 years, 11 months ago) by rillig
Branch: MAIN
Changes since 1.2: +6 -10 lines
Diff to previous 1.2 (colored)

Updated pkglint to 5.4.4.

Changes since 5.4.3:

* Improved detection for undocumented patches from Git
* Added warning about unnecessary space after variable names
* Lots of internal housekeeping

Revision 1.2 / (download) - annotate - [select for diffs], Tue Jan 12 01:02:49 2016 UTC (5 years, 5 months ago) by rillig
Branch: MAIN
CVS Tags: pkgsrc-2016Q2-base, pkgsrc-2016Q2, pkgsrc-2016Q1-base, pkgsrc-2016Q1
Changes since 1.1: +19 -5 lines
Diff to previous 1.1 (colored)

Updated pkglint to 5.3

Changes since

* Makefile variables

The warnings about missing permissions sound more natural than before
and give a hint for alternative operators (e.g. set-default instead
of append), or an alternative file where setting this variable is
allowed instead (e.g. PKGREVISION may not be set in Makefile.common,
but in Makefile it is ok).

Warnings about "unknown" allowed permissions are not shown anymore,
since they didn't provide any benefit. To see them again, pkglint must
be run with the -Dunchecked option.

User-defined variables may be used by They may also be
used during load time, not only during run time, under the assumption
that in most cases the has already been loaded.

Some individual variables may be defined or used in places where this
was not allowed before. CHECK_BUILTIN.*, BUILDLINK_TARGETS,

A new parser for Makefile expressions detects and reports more
mistakes than bmake itself. Currently it is only used to check the
basic syntax; more applications are possible.


In PLIST files, conditionals of the form ${PLIST.*} are recognized and
are not part of the pathname. This allows pkglint to better check for
missing manual pages and correctly sorted PLIST files.

In --autofix mode, pkglint can sort PLIST files, which makes these
rather annoying warnings easy to fix.

No more warnings for man pages whose filename doesn't match exactly
the section, e.g. man/man3/exit.3c.

* Patches

The code for checking patch files has been completely rewritten, so
that it is easier understandable and well-structured. As an additional
benefit, it also became faster. Support for context diffs has been
dropped to a minimum, since they are not popular anymore.

Pkglint no longer warns about missing trailing whitespace in a line,
since all patch programs can handle these lines. It also doesn't
request empty lines between multiple diffs in a single file, since
that is simply not necessary.

Pkglint is picky when a patch file continues after the diff with some
text that still looks like a diff, since that means the patch doesn't
do what it looks like on first sight
(example: audio/faad2/patches/patch-au).

* Distinfo

When a patch file listed in distinfo cannot be found in the
filesystem, this is reported clearly instead of complaining about
missing SHA512 hashes (example: audio/libopus).

The inter-package distinfo check that verifies whether a distfile has
different hashes has been enabled. It had been disabled before, but
unintentionally so.

* Misc

- The check for COMMENT has been updated to reflect the changed
  default value from url2pkg.
- BUILDLINK_API_DEPENDS.* may be set in, even if the
  package is not the current one. (The other variables may be only set
  for the current package.)
- In shell commands, the escape sequence \. (and similar ones, which
  are often seen in sed(1) commands) no longer produces a warning,
  since the different shells handle these escape sequences
  consistently. (It is the echo(1) implementations that actually
  differ, therefore this warning was superfluous.)
- Compiler flags in backticks (typically `pkg-config --cflags`) are
  properly recognized.
- Internal pkglint errors when parsing shell commands have been fixed.
- No more warnings about PKGCONFIG_FILE.* being defined but unused.
- Dependencies of the form pkgbase>=1.0<5.0 are recognized.
- Diagnostics use quotes more often to indicate the placeholders.
- The type of GENERATE_PLIST has been changed from List of ShellWord
  to ShellCommands, since that is what the variable is really about.
- The type ShellCommand used to mean "a shell command line in a
  Makefile", which was confusing. Now it means what the name says,
  which reduces the wrong warnings for variables like CC (example:
- Improved checks to generate more helpful diagnostics.
- Fixed the parsing of dependency patterns, so that all but the most
  exotic ones are properly recognized.
- Fixed the parsing of shell variables of the form ${var%.c}.
- Updated the check for the default COMMENT from url2pkg.
- Many more small improvements.
- Performance has improved again, though only a little bit.
- Unit test coverage has increased from 64.2 % to 78.9 %.

This fixes most of the points mentioned in PR pkg/46570.

Revision 1.1 / (download) - annotate - [select for diffs], Wed Nov 25 13:29:07 2015 UTC (5 years, 6 months ago) by rillig
Branch: MAIN
CVS Tags: pkgsrc-2015Q4-base, pkgsrc-2015Q4

Updated pkglint to 5.0

Notable changes include:
* The whole code has been rewritten in Go
* It is much faster, especially in recursive mode
* The code has unit tests, providing examples of use
* Some new explanations for existing warnings
* Some adjustments to previous warnings

This form allows you to request diff's between any two revisions of a file. You may select a symbolic revision name using the selection box or you may type in a numeric name using the type-in text box.

CVSweb <>