diff --git a/pkgtools/pkglint4/files/PkgLint/FileUtil.pm b/pkgtools/pkglint4/files/PkgLint/FileUtil.pm index f29c2bdccc74..00bf59eaa357 100644 --- a/pkgtools/pkglint4/files/PkgLint/FileUtil.pm +++ b/pkgtools/pkglint4/files/PkgLint/FileUtil.pm @@ -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."); - } -} diff --git a/pkgtools/pkglint4/files/PkgLint/Line.pm b/pkgtools/pkglint4/files/PkgLint/Line.pm index cc93af4f59eb..d8d675a586fb 100644 --- a/pkgtools/pkglint4/files/PkgLint/Line.pm +++ b/pkgtools/pkglint4/files/PkgLint/Line.pm @@ -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, C, C and C, 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) 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. # diff --git a/pkgtools/pkglint4/files/makevars.map b/pkgtools/pkglint4/files/makevars.map index 5d2421a7bd7b..4a845c86075e 100644 --- a/pkgtools/pkglint4/files/makevars.map +++ b/pkgtools/pkglint4/files/makevars.map @@ -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". diff --git a/pkgtools/pkglint4/files/pkglint.0 b/pkgtools/pkglint4/files/pkglint.0 index d814bdaf4e67..233bd1ebd5b1 100644 --- a/pkgtools/pkglint4/files/pkglint.0 +++ b/pkgtools/pkglint4/files/pkglint.0 @@ -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 + 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 mailing list. -NetBSD 6.99.8 July 14, 2012 NetBSD 6.99.8 +NetBSD 8.0 October 6, 2019 NetBSD 8.0 diff --git a/pkgtools/pkglint4/files/pkglint.1 b/pkgtools/pkglint4/files/pkglint.1 index 811746f41b93..fae383813aa2 100644 --- a/pkgtools/pkglint4/files/pkglint.1 +++ b/pkgtools/pkglint4/files/pkglint.1 @@ -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 . @@ -7,7 +7,7 @@ .\" Roland Illig , 2004, 2005. .\" Thomas Klausner , 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 diff --git a/pkgtools/pkglint4/files/pkglint.pl b/pkgtools/pkglint4/files/pkglint.pl index e37a6fdc8437..490c6546190c 100644 --- a/pkgtools/pkglint4/files/pkglint.pl +++ b/pkgtools/pkglint4/files/pkglint.pl @@ -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); } diff --git a/pkgtools/pkglint4/files/pkglint.t b/pkgtools/pkglint4/files/pkglint.t index 41ee25772a10..b067c3ed5a39 100644 --- a/pkgtools/pkglint4/files/pkglint.t +++ b/pkgtools/pkglint4/files/pkglint.t @@ -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