mirror of
https://git.openafs.org/openafs.git
synced 2025-01-18 15:00:12 +00:00
packaging: Check for nonzero $? for command failure
In a few perl scripts (that happen to be for macOS), we check whether '$? >> 8' is zero to see whether a command failed. But the value of '$? >> 8' is just the exit code of the process. If it instead, for example, was killed by a signal, there is no exit code, and '$? >> 8' may not be accurate (the terminating signal is in '$? & 127'). We should check if $? is nonzero at all to see if an error happened. To avoid any possible issues, update all of our checks for command failure to check if $? is nonzero, instead of '$? >> 8'. In notarize.pl, print out the whole status in addition to the exit code, just to be clear in case the command somehow terminates from a signal. Change-Id: I07ed145fae45d0bdc77c1249cf4d89bd5ba5cc56 Reviewed-on: https://gerrit.openafs.org/15980 Reviewed-by: Michael Meffie <mmeffie@sinenomine.net> Reviewed-by: Cheyenne Wills <cwills@sinenomine.net> Reviewed-by: Marcio Brito Barbosa <mbarbosa@sinenomine.net> Tested-by: Andrew Deason <adeason@sinenomine.net> Reviewed-by: Andrew Deason <adeason@sinenomine.net>
This commit is contained in:
parent
e316a38ba9
commit
9ef6aac17a
@ -76,8 +76,7 @@ sub main
|
|||||||
if ($do_nothing == 0) {
|
if ($do_nothing == 0) {
|
||||||
my @rmcmd = ('osascript', '-e', "do shell script \"/bin/rm -f @rmfiles; /bin/rmdir @rmdirs; /bin/rm -rf @rmpkg\" with administrator privileges");
|
my @rmcmd = ('osascript', '-e', "do shell script \"/bin/rm -f @rmfiles; /bin/rmdir @rmdirs; /bin/rm -rf @rmpkg\" with administrator privileges");
|
||||||
system @rmcmd;
|
system @rmcmd;
|
||||||
my $retcode = $? >> 8;
|
if ($? != 0) {
|
||||||
if ($retcode != 0) {
|
|
||||||
print_warning ("Warning: There may have been a problem uninstalling\n");
|
print_warning ("Warning: There may have been a problem uninstalling\n");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -82,8 +82,7 @@ sub main {
|
|||||||
"echo @rmpkg | xargs -n 1 /usr/sbin/pkgutil --forget\" " .
|
"echo @rmpkg | xargs -n 1 /usr/sbin/pkgutil --forget\" " .
|
||||||
"with administrator privileges' | tr '\\r' '\\n'";
|
"with administrator privileges' | tr '\\r' '\\n'";
|
||||||
system $rmcmd;
|
system $rmcmd;
|
||||||
my $retcode = $? >> 8;
|
if ($? != 0) {
|
||||||
if ($retcode != 0) {
|
|
||||||
print_warning ("Warning: There may have been a problem uninstalling\n");
|
print_warning ("Warning: There may have been a problem uninstalling\n");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -63,10 +63,9 @@ sub check_prerequisites {
|
|||||||
|
|
||||||
# Check if the given keychain-profile exists
|
# Check if the given keychain-profile exists
|
||||||
my $output = qx(xcrun notarytool history --keychain-profile "$profile" 2>&1);
|
my $output = qx(xcrun notarytool history --keychain-profile "$profile" 2>&1);
|
||||||
my $exitcode = $? >> 8;
|
if ($? != 0) {
|
||||||
|
my $exitcode = $? >> 8;
|
||||||
if ($exitcode) {
|
print(STDERR "error: exit code $exitcode (status $?)\n");
|
||||||
print(STDERR "error: $exitcode\n");
|
|
||||||
print(STDERR $output);
|
print(STDERR $output);
|
||||||
exit(1);
|
exit(1);
|
||||||
}
|
}
|
||||||
@ -86,10 +85,9 @@ sub process_package {
|
|||||||
# returns after submitting and processing the package, or times out if it
|
# returns after submitting and processing the package, or times out if it
|
||||||
# takes longer than 5 minutes
|
# takes longer than 5 minutes
|
||||||
my $output = qx(xcrun notarytool submit "$package" --keychain-profile "$profile" --wait --timeout 5m 2>&1);
|
my $output = qx(xcrun notarytool submit "$package" --keychain-profile "$profile" --wait --timeout 5m 2>&1);
|
||||||
my $exitcode = $? >> 8;
|
if ($? != 0) {
|
||||||
|
my $exitcode = $? >> 8;
|
||||||
if ($exitcode) {
|
print(STDERR "error: exit code $exitcode (status $?)\n");
|
||||||
print(STDERR "error: $exitcode\n");
|
|
||||||
print(STDERR $output);
|
print(STDERR $output);
|
||||||
exit(1);
|
exit(1);
|
||||||
}
|
}
|
||||||
@ -120,10 +118,10 @@ sub notarize_package {
|
|||||||
print(STDOUT "notarize.pl: notarizing package...\n");
|
print(STDOUT "notarize.pl: notarizing package...\n");
|
||||||
|
|
||||||
my $output = qx(xcrun stapler staple -v "$package" 2>&1);
|
my $output = qx(xcrun stapler staple -v "$package" 2>&1);
|
||||||
my $exitcode = $? >> 8;
|
if ($? != 0) {
|
||||||
|
my $exitcode = $? >> 8;
|
||||||
if ($exitcode) {
|
|
||||||
print(STDERR "error: package could not be notarized (uuid: $uuid)\n");
|
print(STDERR "error: package could not be notarized (uuid: $uuid)\n");
|
||||||
|
print(STDERR "error: exit code $exitcode (status $?)\n");
|
||||||
print(STDERR $output);
|
print(STDERR $output);
|
||||||
exit(1);
|
exit(1);
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user