Skip to content

Commit

Permalink
Merge branch 'es/chainlint-ncores-fix' into maint-2.45
Browse files Browse the repository at this point in the history
The chainlint script (invoked during "make test") did nothing when
it failed to detect the number of available CPUs.  It now falls
back to 1 CPU to avoid the problem.

* es/chainlint-ncores-fix:
  chainlint.pl: latch CPU count directly reported by /proc/cpuinfo
  chainlint.pl: fix incorrect CPU count on Linux SPARC
  chainlint.pl: make CPU count computation more robust
  • Loading branch information
gitster committed Jun 28, 2024
2 parents 2988b82 + 2e7e920 commit 903b4da
Showing 1 changed file with 17 additions and 3 deletions.
20 changes: 17 additions & 3 deletions t/chainlint.pl
Original file line number Diff line number Diff line change
Expand Up @@ -716,11 +716,25 @@ sub fd_colors {

sub ncores {
# Windows
return $ENV{NUMBER_OF_PROCESSORS} if exists($ENV{NUMBER_OF_PROCESSORS});
if (exists($ENV{NUMBER_OF_PROCESSORS})) {
my $ncpu = $ENV{NUMBER_OF_PROCESSORS};
return $ncpu > 0 ? $ncpu : 1;
}
# Linux / MSYS2 / Cygwin / WSL
do { local @ARGV='/proc/cpuinfo'; return scalar(grep(/^processor[\s\d]*:/, <>)); } if -r '/proc/cpuinfo';
if (open my $fh, '<', '/proc/cpuinfo') {
my $cpuinfo = do { local $/; <$fh> };
close($fh);
if ($cpuinfo =~ /^n?cpus active\s*:\s*(\d+)/m) {
return $1 if $1 > 0;
}
my @matches = ($cpuinfo =~ /^(processor|CPU)[\s\d]*:/mg);
return @matches ? scalar(@matches) : 1;
}
# macOS & BSD
return qx/sysctl -n hw.ncpu/ if $^O =~ /(?:^darwin$|bsd)/;
if ($^O =~ /(?:^darwin$|bsd)/) {
my $ncpu = qx/sysctl -n hw.ncpu/;
return $ncpu > 0 ? $ncpu : 1;
}
return 1;
}

Expand Down

0 comments on commit 903b4da

Please sign in to comment.