pkgtools/pkglint4: remove more unreliable or outdated checks

CFLAGS and LDFLAGS had been checked for GCC-style flags only. This didn't
make sense since wrong flags would be detected on the exotic platforms
anyway.

The experimental --autofix has been removed.

The check for "# used by" comments in Makefile.common has been removed.
Especially the --autofix could damage files.

The warnings for ICON_THEMES have been removed since they appear in
groups of thousands, and the old pkglint cannot issue warnings "once per
file" simply.
This commit is contained in:
rillig 2019-10-06 11:45:05 +00:00
parent 2d92ac45af
commit 167f4e9d9c
7 changed files with 43 additions and 358 deletions

View file

@ -1,12 +1,10 @@
# $NetBSD: FileUtil.pm,v 1.1 2015/11/25 16:42:21 rillig Exp $
# $NetBSD: FileUtil.pm,v 1.2 2019/10/06 11:45:05 rillig Exp $
#
# Subroutines for loading and saving line-oriented files.
# The load_file() subroutine loads a file completely into memory,
# optionally handling continuation line folding. The load_lines() subrou-
# tine is an abbreviation for the common case of loading files without
# continuation lines. The save_autofix_changes() subroutine examines an
# array of lines if some of them have changed. It then saves the modified
# files.
# continuation lines.
#
package PkgLint::FileUtil;
@ -19,7 +17,6 @@ BEGIN {
@ISA = qw(Exporter);
@EXPORT_OK = qw(
load_file load_lines
save_autofix_changes
);
import PkgLint::Util qw(
@ -128,39 +125,3 @@ sub load_file($) {
return load_lines($fname, false);
}
sub save_autofix_changes($) {
my ($lines) = @_;
my (%changed, %physlines);
foreach my $line (@{$lines}) {
if ($line->is_changed) {
$changed{$line->fname}++;
}
push(@{$physlines{$line->fname}}, @{$line->physlines});
}
foreach my $fname (sort(keys(%changed))) {
my $new = "${fname}.pkglint.tmp";
my $f;
if (!open($f, ">", $new)) {
log_error($new, NO_LINE_NUMBER, "$!");
next;
}
foreach my $physline (@{$physlines{$fname}}) {
print $f ($physline->[1]);
}
if (!close($f)) {
log_error($new, NO_LINE_NUMBER, "$!");
next;
}
if (!rename($new, $fname)) {
log_error($fname, NO_LINE_NUMBER, "$!");
next;
}
log_note($fname, NO_LINE_NUMBER, "Has been autofixed. Please re-run pkglint.");
}
}

View file

@ -1,4 +1,4 @@
# $NetBSD: Line.pm,v 1.1 2015/11/25 16:42:21 rillig Exp $
# $NetBSD: Line.pm,v 1.2 2019/10/06 11:45:05 rillig Exp $
#
# When files are read in by pkglint, they are interpreted in terms of
# lines. For Makefiles, line continuations are handled properly, allowing
@ -13,10 +13,6 @@
# C<lines>, C<text>, C<physlines> and C<is_changed>, as well as some
# methods for printing diagnostics easily.
#
# Some other methods allow modification of the physical lines, but leave
# the logical line (the C<text>) untouched. These methods are used in the
# --autofix mode.
#
# A line can have some "extra" fields that allow the results of parsing to
# be saved under a name.
#

View file

@ -1,4 +1,4 @@
# $NetBSD: makevars.map,v 1.12 2019/10/06 11:06:42 rillig Exp $
# $NetBSD: makevars.map,v 1.13 2019/10/06 11:45:05 rillig Exp $
#
# This file contains the guessed type of some variables, according to
@ -145,7 +145,7 @@ BDB185_DEFAULT Unchecked []
BDBBASE Pathname [$system]
BDB_ACCEPTED List of { db1 db2 db3 db4 db5 } [$package]
BDB_DEFAULT { db1 db2 db3 db4 db5 } []
BDB_LIBS List of LdFlag [$system]
BDB_LIBS List of ShellWord [$system]
BDB_TYPE { db1 db2 db3 db4 db5 } [$system]
BINGRP UserGroupName [$system]
BINMODE FileMode [$system]
@ -161,10 +161,10 @@ BUILDLINK_ABI_DEPENDS.* InternalList of Dependency [*:a]
BUILDLINK_API_DEPENDS.* InternalList of Dependency [*:a]
BUILDLINK_CONTENTS_FILTER List of ShellWord []
# ^^ ShellCommand
BUILDLINK_CFLAGS List of CFlag [$system]
BUILDLINK_CFLAGS.* List of CFlag [$bl_list]
BUILDLINK_CPPFLAGS List of CFlag [$system]
BUILDLINK_CPPFLAGS.* List of CFlag [$bl_list]
BUILDLINK_CFLAGS List of ShellWord [$system]
BUILDLINK_CFLAGS.* List of ShellWord [$bl_list]
BUILDLINK_CPPFLAGS List of ShellWord [$system]
BUILDLINK_CPPFLAGS.* List of ShellWord [$bl_list]
BUILDLINK_CONTENTS_FILTER.* ShellCommand [b:s]
BUILDLINK_DEPENDS InternalList of Identifier [b:a]
BUILDLINK_DEPMETHOD.* List of BuildlinkDepmethod [b:ad,m:as,c:a,*.mk:a]
@ -176,11 +176,11 @@ BUILDLINK_FILES_CMD.* List of ShellWord []
# ^^ ShellCommand
BUILDLINK_INCDIRS.* List of Pathname [b:ad] # b:d?
BUILDLINK_JAVA_PREFIX.* Pathname [b:s]
BUILDLINK_LDADD.* List of LdFlag [builtin.mk:adsu, b:, m:u, c:u, *.mk:u]
BUILDLINK_LDFLAGS List of LdFlag [$system]
BUILDLINK_LDFLAGS.* List of LdFlag [$bl_list]
BUILDLINK_LDADD.* List of ShellWord [builtin.mk:adsu, b:, m:u, c:u, *.mk:u]
BUILDLINK_LDFLAGS List of ShellWord [$system]
BUILDLINK_LDFLAGS.* List of ShellWord [$bl_list]
BUILDLINK_LIBDIRS.* List of Pathname [$bl_list]
BUILDLINK_LIBS.* List of LdFlag [b:a]
BUILDLINK_LIBS.* List of ShellWord [b:a]
BUILDLINK_PACKAGES BuildlinkPackages [b:aps]
BUILDLINK_PASSTHRU_DIRS List of Pathname [m:a,c:a,b:a,h:a]
BUILDLINK_PASSTHRU_RPATHDIRS List of Pathname [m:a,c:a,b:a,h:a]
@ -212,7 +212,7 @@ BUILTIN_X11_VERSION Unchecked [$system]
CATEGORIES List of Category [m:as,c:ads]
CC_VERSION Message [$system]
CC ShellCommand [$system]
CFLAGS* List of CFlag [$package_list]
CFLAGS* List of ShellWord [$package_list]
# ^^ may also be changed by the user
CHECK_BUILTIN YesNo [builtin.mk:d,m:s]
CHECK_BUILTIN.* YesNo [*:p]
@ -254,10 +254,10 @@ CONF_FILES_PERMS List of ShellWord [$package_list]
COPY { -c } [$system]
# ^^ the flag that tells ${INSTALL} to copy a file
CPP ShellCommand [$system]
CPPFLAGS* List of CFlag [$package_list]
CPPFLAGS* List of ShellWord [$package_list]
CRYPTO Yes [m:s]
CXX ShellCommand [$system]
CXXFLAGS* List of CFlag [$package_list]
CXXFLAGS* List of ShellWord [$package_list]
DEINSTALL_FILE Pathname [m:s]
DEINSTALL_SRC List of Pathname [m:s,c:ds]
DEINSTALL_TEMPLATES List of Pathname [m:as,c:ads]
@ -287,7 +287,7 @@ DJB_RESTRICTED YesNo [m:s]
DJB_SLASHPACKAGE YesNo
DLOPEN_REQUIRE_PTHREADS YesNo
DL_AUTO_VARS Yes [m:s,c:s,o:s]
DL_LIBS List of LdFlag
DL_LIBS List of ShellWord
DOCOWN UserGroupName [$system]
DOCGRP UserGroupName [$system]
DOCMODE FileMode [$system]
@ -334,7 +334,7 @@ ERROR_CAT ShellCommand [$system]
ERROR_MSG ShellCommand [$system]
EVAL_PREFIX InternalList of ShellWord [m:a,c:a]
# ^^ FIXME: Looks like a type mismatch.
EXPORT_SYMBOLS_LDFLAGS List of LdFlag [$system]
EXPORT_SYMBOLS_LDFLAGS List of ShellWord [$system]
EXTRACT_CMD ShellCommand [$system]
EXTRACT_DIR Pathname [$package]
EXTRACT_ELEMENTS List of Pathmask [$package_list]
@ -429,12 +429,12 @@ KRB5_ACCEPTED List of { heimdal mit-krb5 }
KRB5_DEFAULT { heimdal mit-krb5 } [$user]
KRB5_TYPE Unchecked [$system]
LD ShellCommand [$system]
LDFLAGS* List of LdFlag [$package_list]
LDFLAGS* List of ShellWord [$package_list]
LIBGRP UserGroupName [$system]
LIBMODE FileMode [$system]
LIBOWN UserGroupName [$system]
LIBOSSAUDIO Pathname [$system]
LIBS* List of LdFlag [$package_list]
LIBS* List of ShellWord [$package_list]
LIBTOOL ShellCommand [$system]
LIBTOOL_OVERRIDE List of Pathmask [m:as]
LIBTOOL_REQD List of Version [$package_list]
@ -649,9 +649,9 @@ PREV_PKGPATH Pathname [*:u] # doesn't exist any longer
PRINT_PLIST_AWK AwkCommand [*:a]
PRIVILEGED_STAGES List of { install package clean }
PTHREAD_AUTO_VARS YesNo [m:s]
PTHREAD_CFLAGS List of CFlag [$system]
PTHREAD_LDFLAGS List of LdFlag [$system]
PTHREAD_LIBS List of LdFlag [$system]
PTHREAD_CFLAGS List of ShellWord [$system]
PTHREAD_LDFLAGS List of ShellWord [$system]
PTHREAD_LIBS List of ShellWord [$system]
PTHREAD_OPTS List of { native optional require } [m:as,c:a,b:a]
PTHREAD_TYPE Identifier [$system]
# ^^ or "native" or "none".

View file

@ -1,4 +1,4 @@
PKGLINT(1) General Commands Manual PKGLINT(1)
PKGLINT(1) NetBSD General Commands Manual PKGLINT(1)
NNAAMMEE
ppkkgglliinntt -- static analyzer for pkgsrc packages
@ -10,7 +10,6 @@ DDEESSCCRRIIPPTTIIOONN
ppkkgglliinntt attempts to detect features of the named pkgsrc packages that are
likely to be bugs, or that are simply deprecated.
OOppttiioonnss
--CC{{[[nnoo--]]cchheecckk,,......}} Enable or disable specific checks. For a list of
checks, see below.
@ -18,8 +17,6 @@ DDEESSCCRRIIPPTTIIOONN
--DD{{[[nnoo--]]ddeebbuugg,,......}} Enable or disable debugging categories. For a list
of categories, see below.
--FF|----aauuttooffiixx Repair trivial things automatically.
--II Show the _M_a_k_e_f_i_l_e that is constructed by including
all the files that are slurped in via `.include'
directives. This flag is mainly for debugging.
@ -32,9 +29,9 @@ DDEESSCCRRIIPPTTIIOONN
--WW{{[[nnoo--]]wwaarrnn,,......}} Enable or disable specific warnings. For a list of
warnings, see below.
--ee|----eexxppllaaiinn Print further explanations for diagnostics.
Sometimes the reasons for diagnostics are not obvious
and need further explanation.
--ee|----eexxppllaaiinn Print further explanations for diagnostics. Some-
times the reasons for diagnostics are not obvious and
need further explanation.
--gg|----ggcccc--oouuttppuutt--ffoorrmmaatt
Use a format for the diagnostics that is understood
@ -125,8 +122,6 @@ DDEESSCCRRIIPPTTIIOONN
nnoonnee Disable all warnings.
[[nnoo--]]aabbssnnaammee Warn if a file contains an absolute pathname.
[[nnoo--]]ddiirreeccttccmmdd Warn if a system command name is used instead of a
variable (e.g. sed instead of ${SED}).
@ -136,28 +131,11 @@ DDEESSCCRRIIPPTTIIOONN
[[nnoo--]]oorrddeerr Warn if Makefile variables are not in the preferred
order.
[[nnoo--]]ppeerrmm Warn if a variable is used or defined outside its
specified scope. The available permissions are:
append
append something using +=
default
set a default value using ?=
preprocess
use a variable during preprocessing
runtime
use a variable at runtime
set set a variable using :=, =, !=
unknown
permissions for this variable currently not
known
A `?' means that it is not yet clear which
permissions are allowed and which aren't.
[[nnoo--]]pplliisstt--ddeepprr Warn if deprecated pathnames are used in _P_L_I_S_T files.
This warning is disabled by default.
[[nnoo--]]pplliisstt--ssoorrtt Warn if items of a PLIST file are not sorted
alphabetically. This warning is disabled by default.
[[nnoo--]]pplliisstt--ssoorrtt Warn if items of a PLIST file are not sorted alpha-
betically. This warning is disabled by default.
[[nnoo--]]qquuoottiinngg Warn for possibly invalid quoting of make variables
in shell programs and shell variables themselves.
@ -174,11 +152,11 @@ DDEESSCCRRIIPPTTIIOONN
ordered in the way it is described the pkgsrc guide.
OOtthheerr aarrgguummeennttss
_d_i_r _._._. The pkgsrc directories to be checked. If
omitted, the current directory is checked.
_d_i_r _._._. The pkgsrc directories to be checked. If omit-
ted, the current directory is checked.
FFIILLEESS
_p_k_g_s_r_c_/_m_k_/_* Files from the pkgsrc infrastructure.
pkgsrc/mk/* Files from the pkgsrc infrastructure.
EEXXAAMMPPLLEESS
ppkkgglliinntt --CCnnoonnee,,ppaattcchheess ..
@ -202,7 +180,7 @@ DDIIAAGGNNOOSSTTIICCSS
critical as errors.
AAUUTTHHOORRSS
Roland Illig <rillig@NetBSD.org>
Roland Illig <_r_i_l_l_i_g_@_N_e_t_B_S_D_._o_r_g>
BBUUGGSS
Many more checks could be added.
@ -210,4 +188,4 @@ BBUUGGSS
If you don't understand the messages, feel free to ask on the
<tech-pkg@NetBSD.org> mailing list.
NetBSD 6.99.8 July 14, 2012 NetBSD 6.99.8
NetBSD 8.0 October 6, 2019 NetBSD 8.0

View file

@ -1,4 +1,4 @@
.\" $NetBSD: pkglint.1,v 1.1 2015/11/25 16:42:21 rillig Exp $
.\" $NetBSD: pkglint.1,v 1.2 2019/10/06 11:45:05 rillig Exp $
.\" From FreeBSD: portlint.1,v 1.8 1997/11/25 14:53:14 itojun Exp
.\"
.\" Copyright (c) 1997 by Jun-ichiro Itoh <itojun@itojun.org>.
@ -7,7 +7,7 @@
.\" Roland Illig <roland.illig@gmx.de>, 2004, 2005.
.\" Thomas Klausner <wiz@NetBSD.org>, 2012.
.\"
.Dd July 14, 2012
.Dd October 6, 2019
.Dt PKGLINT 1
.Os
.Sh NAME
@ -31,8 +31,6 @@ For a list of checks, see below.
.It Fl D{[no-]debug,...}
Enable or disable debugging categories.
For a list of categories, see below.
.It Fl F Ns | Ns Fl -autofix
Repair trivial things automatically.
.It Fl I
Show the
.Pa Makefile
@ -145,8 +143,6 @@ Information about the contexts in which variables are used.
Enable all warnings.
.It Cm none
Disable all warnings.
.It Cm [no-]absname
Warn if a file contains an absolute pathname.
.It Cm [no-]directcmd
Warn if a system command name is used instead of a variable (e.g. sed
instead of ${SED}).
@ -155,26 +151,6 @@ Emit some additional warnings that are not enabled by default,
for whatever reason.
.It Cm [no-]order
Warn if Makefile variables are not in the preferred order.
.It Cm [no-]perm
Warn if a variable is used or defined outside its specified scope.
The available permissions are:
.Bl -tag -width 3n -compact
.It append
append something using +=
.It default
set a default value using ?=
.It preprocess
use a variable during preprocessing
.It runtime
use a variable at runtime
.It set
set a variable using :=, =, !=
.It unknown
permissions for this variable currently not known
.El
A
.Sq \&?
means that it is not yet clear which permissions are allowed and which aren't.
.It Cm [no-]plist-depr
Warn if deprecated pathnames are used in
.Pa PLIST

View file

@ -1,5 +1,5 @@
#! @PERL@
# $NetBSD: pkglint.pl,v 1.9 2019/10/06 11:06:42 rillig Exp $
# $NetBSD: pkglint.pl,v 1.10 2019/10/06 11:45:05 rillig Exp $
#
# pkglint - static analyzer and checker for pkgsrc packages
@ -98,7 +98,6 @@ BEGIN {
);
import PkgLint::FileUtil qw(
load_file load_lines
save_autofix_changes
);
import PkgLint::Type qw(
LK_NONE LK_INTERNAL LK_EXTERNAL
@ -190,34 +189,27 @@ my (%debug) = (
"varuse" => [\$opt_debug_varuse, "contexts where variables are used"],
);
my $opt_warn_absname = true;
my $opt_warn_directcmd = true;
our $opt_warn_extra = false; # used by PkgLint::SubstContext
my $opt_warn_order = true;
my $opt_warn_perm = false;
my $opt_warn_plist_depr = false;
my $opt_warn_plist_sort = false;
my $opt_warn_quoting = false;
my $opt_warn_space = false;
my $opt_warn_style = false;
my $opt_warn_types = true;
my $opt_warn_varorder = false;
my (%warnings) = (
"absname" => [\$opt_warn_absname, "warn about use of absolute file names"],
"directcmd" => [\$opt_warn_directcmd, "warn about use of direct command names instead of Make variables"],
"extra" => [\$opt_warn_extra, "enable some extra warnings"],
"order" => [\$opt_warn_order, "warn if Makefile entries are unordered"],
"perm" => [\$opt_warn_perm, "warn about unforeseen variable definition and use"],
"plist-depr" => [\$opt_warn_plist_depr, "warn about deprecated paths in PLISTs"],
"plist-sort" => [\$opt_warn_plist_sort, "warn about unsorted entries in PLISTs"],
"quoting" => [\$opt_warn_quoting, "warn about quoting issues"],
"space" => [\$opt_warn_space, "warn about inconsistent use of white-space"],
"style" => [\$opt_warn_style, "warn about stylistic issues"],
"types" => [\$opt_warn_types, "do some simple type checking in Makefiles"],
"varorder" => [\$opt_warn_varorder, "warn about the ordering of variables"],
);
my $opt_autofix = false;
my $opt_dumpmakefile = false;
my $opt_import = false;
my $opt_quiet = false;
@ -237,8 +229,6 @@ my (@options) = (
my ($opt, $val) = @_;
parse_multioption($val, \%debug);
} ],
[ "-F|--autofix", "Try to automatically fix some errors (experimental)",
"autofix|F", \$opt_autofix ],
[ "-I|--dumpmakefile", "Dump the Makefile after parsing",
"dumpmakefile|I", \$opt_dumpmakefile ],
[ "-R|--rcsidstring", "Set the allowed RCS Id strings",
@ -499,93 +489,6 @@ sub parse_command_line() {
}
}
#
# Caching subroutines.
#
# The get_regex_plurals() function returns a regular expression that
# matches for all make(1) variable names that are considered lists
# of something.
#
# Rationale:
#
# The pkglint author thinks that variables containing lists of things
# should have a name indicating some plural form. Sadly, there are other
# reasons like backwards compatibility and other developer's
# expectations that make changes to most of the following variables
# highly unlikely.
sub get_regex_plurals() {
state $result = undef;
return $result if defined($result);
my @plurals_ok = qw(
.*S
.*LIST
.*_AWK
.*_ENV
.*_REQD
.*_SED
.*_SKIP
BUILDLINK_LDADD
COMMENT
EXTRACT_ONLY
FETCH_MESSAGE
GENERATE_PLIST
PLIST_CAT
PLIST_PRE
PREPEND_PATH
);
my @plurals_missing_an_s = qw(
.*_OVERRIDE
.*_PREREQ
.*_SRC
.*_SUBST
.*_TARGET
.*_TMPL
BROKEN_EXCEPT_ON_PLATFORM
BROKEN_ON_PLATFORM
BUILDLINK_DEPMETHOD
BUILDLINK_TRANSFORM
EVAL_PREFIX
INTERACTIVE_STAGE
LICENSE
MASTER_SITE_.*
MASTER_SORT_REGEX
NOT_FOR_COMPILER
NOT_FOR_PLATFORM
ONLY_FOR_COMPILER
ONLY_FOR_PLATFORM
PERL5_PACKLIST
PKG_FAIL_REASON
PKG_SKIP_REASON
);
my @plurals_reluctantly_accepted = qw(
CRYPTO
DEINSTALL_TEMPLATE
FIX_RPATH
INSTALL_TEMPLATE
PYTHON_VERSIONS_INCOMPATIBLE
REPLACE_INTERPRETER
REPLACE_PERL
REPLACE_RUBY
RESTRICTED
SITES_.*
TOOLS_ALIASES\.*
TOOLS_BROKEN
TOOLS_CREATE
TOOLS_GNU_MISSING
TOOLS_NOOP
);
my $plurals = join("|",
@plurals_ok,
@plurals_missing_an_s,
@plurals_reluctantly_accepted
);
$result = qr"^(?:${plurals})$";
return $result;
}
#
# Loading pkglint-specific data from files.
#
@ -730,25 +633,6 @@ sub get_vartypes_map() {
}
}
# TODO: Enable when the time is ripe.
if (false) {
# Additionally, scan mk/defaults/mk.conf for variable
# definitions. All these variables are reserved for the user and
# must not be set within packages.
$fname = "${cwd_pkgsrcdir}/mk/defaults/mk.conf";
if ((my $lines = load_file($fname))) {
foreach my $line (@{$lines}) {
if ($line->text =~ m"^#?([\w_]+)\?=") {
my ($varname) = ($1);
$opt_debug_misc and $line->log_debug("Found user-definable variable ${varname}.");
$vartypes->{$varname} = "Userdefined"; # FIXME: type error
}
}
} else {
log_fatal($fname, NO_LINE_NUMBER, "Cannot be read.");
}
}
return ($result = $vartypes);
}
@ -1237,14 +1121,6 @@ sub match_all($$) {
return ($mm, substr($rest, $lastpos));
}
sub autofix($) {
my ($lines) = @_;
if ($opt_autofix) {
save_autofix_changes($lines);
}
}
# Checks whether a file is already committed to the CVS repository or not.
sub is_committed($) {
my ($fname) = @_;
@ -2105,34 +1981,6 @@ sub readmakefile($$$$) {
$opt_debug_include and $line->log_debug("Including \"$dirname/$includefile\".");
my $last_lineno = $#{$all_lines};
readmakefile("$dirname/$includefile", $main_lines, $all_lines, $seen_Makefile_include) or return false;
# Check that there is a comment in each
# Makefile.common that says which files
# include it.
if ($includefile =~ m"/Makefile\.common$") {
my @mc_lines = @{$all_lines}[$last_lineno+1 .. $#{$all_lines}];
my $expected = "# used by " . relative_path($cwd_pkgsrcdir, $fname);
if (!(grep { $_->text eq $expected } @mc_lines)) {
my $lineno = 0;
while ($lineno < $#mc_lines && $mc_lines[$lineno]->has("is_comment")) {
$lineno++;
}
my $iline = $mc_lines[$lineno];
$iline->log_warning("Please add a line \"$expected\" here.");
$iline->explain_warning(
"Since Makefile.common files usually don't have any comments and",
"therefore not a clearly defined interface, they should at least contain",
"references to all files that include them, so that it is easier to see",
"what effects future changes may have.",
"",
"If there are more than five packages that use a Makefile.common,",
"you should think about giving it a proper name (maybe plugin.mk) and",
"documenting its interface.");
$iline->append_before($expected);
autofix(\@mc_lines);
}
}
}
}
@ -2711,42 +2559,6 @@ sub checkline_mk_vartype_basic($$$$$$$$) {
}
},
CFlag => sub {
if ($value =~ m"^-D([0-9A-Z_a-z]+)=(.*)") {
my ($macname, $macval) = ($1, $2);
# No checks needed, since the macro definitions
# are usually directory names, which don't need
# any quoting.
} elsif ($value =~ m"^-[DU]([0-9A-Z_a-z]+)") {
my ($macname) = ($1);
$opt_debug_unchecked and $line->log_debug("Unchecked macro ${macname} in ${varname}.");
} elsif ($value =~ m"^-I(.*)") {
my ($dirname) = ($1);
$opt_debug_unchecked and $line->log_debug("Unchecked directory ${dirname} in ${varname}.");
} elsif ($value eq "-c99") {
# Only works on IRIX, but is usually enclosed with
# the proper preprocessor conditional.
} elsif ($value =~ m"^-[OWfgm]|^-std=.*") {
$opt_debug_unchecked and $line->log_debug("Unchecked compiler flag ${value} in ${varname}.");
} elsif ($value =~ m"^-.*") {
$line->log_warning("Unknown compiler flag \"${value}\".");
} elsif ($value =~ regex_unresolved) {
$opt_debug_unchecked and $line->log_debug("Unchecked CFLAG: ${value}");
} else {
$line->log_warning("Compiler flag \"${value}\" does not start with a dash.");
}
},
Comment => sub {
if ($value eq "SHORT_DESCRIPTION_OF_THE_PACKAGE") {
$line->log_error("COMMENT must be set.");
@ -2935,35 +2747,6 @@ sub checkline_mk_vartype_basic($$$$$$$$) {
}
},
LdFlag => sub {
if ($value =~ m"^-L(.*)") {
my ($dirname) = ($1);
$opt_debug_unchecked and $line->log_debug("Unchecked directory ${dirname} in ${varname}.");
} elsif ($value =~ m"^-l(.*)") {
my ($libname) = ($1);
$opt_debug_unchecked and $line->log_debug("Unchecked library name ${libname} in ${varname}.");
} elsif ($value =~ m"^(?:-static)$") {
# Assume that the wrapper framework catches these.
} elsif ($value =~ m"^(-Wl,(?:-R|-rpath|--rpath))") {
my ($rpath_flag) = ($1);
$line->log_warning("Please use \${COMPILER_RPATH_FLAG} instead of ${rpath_flag}.");
} elsif ($value =~ m"^-.*") {
$line->log_warning("Unknown linker flag \"${value}\".");
} elsif ($value =~ regex_unresolved) {
$opt_debug_unchecked and $line->log_debug("Unchecked LDFLAG: ${value}");
} else {
$line->log_warning("Linker flag \"${value}\" does not start with a dash.");
}
},
License => sub {
use constant deprecated_licenses => array_to_hash(qw(
@ -4343,7 +4126,6 @@ sub checkfile_DESCR($) {
"fit on one screen. It is also intended to give a _brief_ summary",
"about the package's contents.");
}
autofix($lines);
}
sub checkfile_distinfo($) {
@ -4536,7 +4318,6 @@ sub checkfile_mk($) {
parselines_mk($lines);
checklines_mk($lines);
autofix($lines);
}
sub checkfile_package_Makefile($$) {
@ -4673,7 +4454,6 @@ sub checkfile_package_Makefile($$) {
}
checklines_mk($lines);
autofix($lines);
}
#include PkgLint/Patches.pm
@ -4925,9 +4705,6 @@ sub checkfile_PLIST($) {
}
} elsif ($text =~ m"^share/icons/[^/]+/.+$") {
if (defined($pkgctx_vardef) && !exists($pkgctx_vardef->{"ICON_THEMES"})) {
$line->log_warning("Packages that install icon theme files should set ICON_THEMES.");
}
} elsif ($pkgpath ne "graphics/hicolor-icon-theme" && $text =~ m"^share/icons/hicolor(?:$|/)") {
my $f = "../../graphics/hicolor-icon-theme/buildlink3.mk";
@ -5005,7 +4782,6 @@ sub checkfile_PLIST($) {
}
}
checklines_trailing_empty_lines($lines);
autofix($lines);
}
sub checkfile($) {
@ -5359,8 +5135,6 @@ sub checkdir_category() {
checklines_mk($lines);
autofix($lines);
if ($opt_recursive) {
unshift(@todo_items, @subdirs);
}

View file

@ -1,5 +1,5 @@
#! @PERL@
# $NetBSD: pkglint.t,v 1.3 2019/10/06 10:33:34 rillig Exp $
# $NetBSD: pkglint.t,v 1.4 2019/10/06 11:45:05 rillig Exp $
#
require 'pkglint.pl'; # so we can test its internals
@ -28,10 +28,10 @@ sub test_unit {
if (defined $exitcode) {
is($trap->exit, $exitcode, qq{exits $exitcode});
} else {
is($trap->exit, undef, q{doesn't exit});
is($trap->exit, undef, q{doesn't exit}); #'
}
like($trap->stdout, qr/$stdout_re/sm, qq{stdout matches $stdout_re});
like($trap->stderr, qr/$stderr_re/sm, qq{stderr matches $stderr_re});
like($trap->stdout, qr/$stdout_re/sm, sprintf(qq{stdout '%s' matches '%s'}, $trap->stdout, $stdout_re));
like($trap->stderr, qr/$stderr_re/sm, sprintf(qq{stderr '%s' matches '%s'}, $trap->stderr, $stderr_re));
return @results;
}
@ -73,11 +73,11 @@ sub test_get_vartypes_basictypes {
my @all_vartypes_basictypes = qw(
AwkCommand BrokenIn
BuildlinkDepmethod BuildlinkDepth BuildlinkPackages
CFlag Category Comment
Category Comment
Dependency DependencyWithPath
DistSuffix EmulPlatform
FetchURL FileMode Filemask Filename
Identifier Integer LdFlag License Mail_Address Message Option
Identifier Integer License Mail_Address Message Option
Pathlist Pathmask Pathname
Perl5Packlist
PkgName PkgOptionsVar PkgPath PkgRevision