mirror of
https://github.com/openwrt/openwrt.git
synced 2024-12-22 15:02:32 +00:00
ffdf98b204
Having the build time written on stderr make it appear with V=w
although it is not an error or warning. Just write the time on stdout
to have it part of the build log like all the rest, but not clutter
the output when only warnings and errors should be shown.
Signed-off-by: Alban Bedel <albeu@free.fr>
(cherry picked from commit 340df72e07
)
66 lines
1.1 KiB
Perl
Executable File
66 lines
1.1 KiB
Perl
Executable File
#!/usr/bin/env perl
|
|
|
|
use strict;
|
|
use warnings;
|
|
use Config;
|
|
|
|
if (@ARGV < 2) {
|
|
die "Usage: $0 <prefix> <command...>\n";
|
|
}
|
|
|
|
sub gettime {
|
|
my ($sec, $usec);
|
|
|
|
eval {
|
|
require Time::HiRes;
|
|
($sec, $usec) = Time::HiRes::gettimeofday();
|
|
};
|
|
|
|
unless (defined($sec) && defined($usec)) {
|
|
my $tv_t = ($Config{'longsize'} == 8) ? 'qq' : 'll';
|
|
my $tv = pack $tv_t, 0, 0;
|
|
|
|
eval {
|
|
require 'syscall.ph';
|
|
syscall(SYS_gettimeofday(), $tv, 0);
|
|
};
|
|
|
|
($sec, $usec) = unpack $tv_t, $tv;
|
|
}
|
|
|
|
return ($sec, $usec);
|
|
}
|
|
|
|
my ($prefix, @cmd) = @ARGV;
|
|
my ($sec, $usec) = gettime();
|
|
my $pid = fork();
|
|
|
|
if (!defined($pid)) {
|
|
die "$0: Failure to fork(): $!\n";
|
|
}
|
|
elsif ($pid == 0) {
|
|
exec(@cmd);
|
|
die "$0: Failure to exec(): $!\n";
|
|
}
|
|
else {
|
|
$SIG{'INT'} = 'IGNORE';
|
|
$SIG{'QUIT'} = 'IGNORE';
|
|
|
|
if (waitpid($pid, 0) == -1) {
|
|
die "$0: Failure to waitpid(): $!\n";
|
|
}
|
|
|
|
my $exitcode = $? >> 8;
|
|
my ($sec2, $usec2) = gettime();
|
|
my (undef, undef, $cuser, $csystem) = times();
|
|
|
|
printf STDOUT "%s#%.2f#%.2f#%.2f\n",
|
|
$prefix, $cuser, $csystem,
|
|
($sec2 - $sec) + ($usec2 - $usec) / 1000000;
|
|
|
|
$SIG{'INT'} = 'DEFAULT';
|
|
$SIG{'QUIT'} = 'DEFAULT';
|
|
|
|
exit $exitcode;
|
|
}
|