Commit d62a201f authored by Dave Hansen's avatar Dave Hansen Committed by Linus Torvalds

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: default avatarDave Hansen <dave.hansen@linux.intel.com>
Cc: Joe Perches <joe@perches.com>
Cc: Andy Whitcroft <apw@shadowen.org>
Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
parent 7e781f67
...@@ -37,6 +37,8 @@ my @ignore = (); ...@@ -37,6 +37,8 @@ my @ignore = ();
my $help = 0; my $help = 0;
my $configuration_file = ".checkpatch.conf"; my $configuration_file = ".checkpatch.conf";
my $max_line_length = 80; my $max_line_length = 80;
my $ignore_perl_version = 0;
my $minimum_perl_version = 5.10.0;
sub help { sub help {
my ($exitcode) = @_; my ($exitcode) = @_;
...@@ -71,6 +73,8 @@ Options: ...@@ -71,6 +73,8 @@ Options:
"<inputfile>.EXPERIMENTAL-checkpatch-fixes" "<inputfile>.EXPERIMENTAL-checkpatch-fixes"
with potential errors corrected to the preferred with potential errors corrected to the preferred
checkpatch style checkpatch style
--ignore-perl-version override checking of perl version. expect
runtime errors.
-h, --help, --version display this help and exit -h, --help, --version display this help and exit
When FILE is - read standard input. When FILE is - read standard input.
...@@ -123,6 +127,7 @@ GetOptions( ...@@ -123,6 +127,7 @@ GetOptions(
'mailback!' => \$mailback, 'mailback!' => \$mailback,
'summary-file!' => \$summary_file, 'summary-file!' => \$summary_file,
'fix!' => \$fix, 'fix!' => \$fix,
'ignore-perl-version!' => \$ignore_perl_version,
'debug=s' => \%debug, 'debug=s' => \%debug,
'test-only=s' => \$tst_only, 'test-only=s' => \$tst_only,
'h|help' => \$help, 'h|help' => \$help,
...@@ -133,6 +138,13 @@ help(0) if ($help); ...@@ -133,6 +138,13 @@ help(0) if ($help);
my $exit = 0; my $exit = 0;
if ($^V && $^V lt $minimum_perl_version) {
printf "$P: requires at least perl version %vd\n", $minimum_perl_version;
if (!$ignore_perl_version) {
exit(1);
}
}
if ($#ARGV < 0) { if ($#ARGV < 0) {
print "$P: no input files\n"; print "$P: no input files\n";
exit(1); exit(1);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment