aboutsummaryrefslogtreecommitdiffstats
path: root/scripts
diff options
context:
space:
mode:
authorDave Hansen <dave.hansen@linux.intel.com>2013-09-11 17:23:56 -0400
committerLinus Torvalds <torvalds@linux-foundation.org>2013-09-11 18:58:41 -0400
commitd62a201f24cba74e2fbf9f6f7af86ff5f5e276fc (patch)
tree8744109e08545cc175c0c1aaf86bc82b93dd662e /scripts
parent7e781f67df436b67753a65436c0fef0a0ebf5043 (diff)
checkpatch: enforce sane perl version
I got a bug report from a couple of users who said checkpatch.pl was broken for them. It was erroring out on fairly random lines most commonly with messages like: Nested quantifiers in regex; marked by <--HERE in m/(\((?:[^\(\)]++ <-- HERE |(?-1))*\))/ at ./checkpatch.pl line 340. The bug reporter was running a version of perl 5.8 which was end-of-lifed in 2008: http://www.cpan.org/src/. Versions of perl this old are at _best_ quite untested. At worst, they are crusty and known to be completely broken. If folks have a system _that_ old, then we should have mercy on them and give them a half-decent error message rather than fail with nutty error messages. This patch enforces that checkpatch.pl is run with perl 5.10, which was end-of-lifed in 2009. The new --ignore-perl-version command-line switch will let folks override this if they want. Signed-off-by: Dave Hansen <dave.hansen@linux.intel.com> Cc: Joe Perches <joe@perches.com> Cc: Andy Whitcroft <apw@shadowen.org> Signed-off-by: Andrew Morton <akpm@linux-foundation.org> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Diffstat (limited to 'scripts')
-rwxr-xr-xscripts/checkpatch.pl12
1 files changed, 12 insertions, 0 deletions
diff --git a/scripts/checkpatch.pl b/scripts/checkpatch.pl
index 6b409b0ad457..c00e5108c0d2 100755
--- a/scripts/checkpatch.pl
+++ b/scripts/checkpatch.pl
@@ -37,6 +37,8 @@ my @ignore = ();
37my $help = 0; 37my $help = 0;
38my $configuration_file = ".checkpatch.conf"; 38my $configuration_file = ".checkpatch.conf";
39my $max_line_length = 80; 39my $max_line_length = 80;
40my $ignore_perl_version = 0;
41my $minimum_perl_version = 5.10.0;
40 42
41sub help { 43sub help {
42 my ($exitcode) = @_; 44 my ($exitcode) = @_;
@@ -71,6 +73,8 @@ Options:
71 "<inputfile>.EXPERIMENTAL-checkpatch-fixes" 73 "<inputfile>.EXPERIMENTAL-checkpatch-fixes"
72 with potential errors corrected to the preferred 74 with potential errors corrected to the preferred
73 checkpatch style 75 checkpatch style
76 --ignore-perl-version override checking of perl version. expect
77 runtime errors.
74 -h, --help, --version display this help and exit 78 -h, --help, --version display this help and exit
75 79
76When FILE is - read standard input. 80When FILE is - read standard input.
@@ -123,6 +127,7 @@ GetOptions(
123 'mailback!' => \$mailback, 127 'mailback!' => \$mailback,
124 'summary-file!' => \$summary_file, 128 'summary-file!' => \$summary_file,
125 'fix!' => \$fix, 129 'fix!' => \$fix,
130 'ignore-perl-version!' => \$ignore_perl_version,
126 'debug=s' => \%debug, 131 'debug=s' => \%debug,
127 'test-only=s' => \$tst_only, 132 'test-only=s' => \$tst_only,
128 'h|help' => \$help, 133 'h|help' => \$help,
@@ -133,6 +138,13 @@ help(0) if ($help);
133 138
134my $exit = 0; 139my $exit = 0;
135 140
141if ($^V && $^V lt $minimum_perl_version) {
142 printf "$P: requires at least perl version %vd\n", $minimum_perl_version;
143 if (!$ignore_perl_version) {
144 exit(1);
145 }
146}
147
136if ($#ARGV < 0) { 148if ($#ARGV < 0) {
137 print "$P: no input files\n"; 149 print "$P: no input files\n";
138 exit(1); 150 exit(1);