mirror of
https://review.coreboot.org/flashrom.git
synced 2025-10-13 22:10:23 +02:00

Change-Id: I7b4b3da3b47b90c2113bbe614e47892e9cc29417 Signed-off-by: Anastasia Klimchuk <aklm@flashrom.org> Reviewed-on: https://review.coreboot.org/c/flashrom/+/89418 Reviewed-by: Stefan Reinauer <stefan.reinauer@coreboot.org> Tested-by: build bot (Jenkins) <no-reply@coreboot.org> Reviewed-by: Antonio Vázquez Blanco <antoniovazquezblanco@gmail.com>
139 lines
2.7 KiB
Bash
139 lines
2.7 KiB
Bash
#!/bin/sh
|
|
#
|
|
# This file is part of the flashrom project. It is derived from
|
|
# board_status.sh in coreboot.
|
|
#
|
|
# SPDX-License-Identifier: GPL-2.0-only
|
|
# SPDX-FileCopyrightText: 2016 Google Inc.
|
|
# SPDX-FileCopyrightText: 2014 Sage Electronic Engineering, LLC.
|
|
|
|
USE_CUSTOM_HOOKS=0
|
|
if [ -n "$CUSTOM_HOOKS_FILENAME" ]; then
|
|
USE_CUSTOM_HOOKS=1
|
|
. "$CUSTOM_HOOKS_FILENAME"
|
|
if [ $? -ne 0 ]; then
|
|
echo "Failed to source custom hooks file."
|
|
exit $EXIT_FAILURE
|
|
fi
|
|
|
|
if ! custom_hook_sanity_check; then
|
|
echo "Failed to run sanity check for custom hooks."
|
|
exit $EXIT_FAILURE
|
|
fi
|
|
fi
|
|
|
|
# test a command
|
|
#
|
|
# $1: 0 ($LOCAL) to run command locally,
|
|
# 1 ($REMOTE) to run remotely if remote host defined
|
|
# $2: command to test
|
|
# $3: 0 ($FATAL) Exit with an error if the command fails
|
|
# 1 ($NONFATAL) Don't exit on command test failure
|
|
test_cmd()
|
|
{
|
|
local rc
|
|
local cmd__="$(echo $2 | cut -d ' ' -f -1)"
|
|
local args="$(echo $2 | cut -d ' ' -f 2-)"
|
|
|
|
if [ -e "$cmd__" ]; then
|
|
return
|
|
fi
|
|
|
|
if [ "$1" -eq "$REMOTE" ] && [ -n "$REMOTE_HOST" ]; then
|
|
ssh $REMOTE_PORT_OPTION root@${REMOTE_HOST} command -v "$cmd__" $args > /dev/null 2>&1
|
|
rc=$?
|
|
else
|
|
command -v "$cmd__" $args >/dev/null 2>&1
|
|
rc=$?
|
|
fi
|
|
|
|
if [ $rc -eq 0 ]; then
|
|
return 0
|
|
fi
|
|
|
|
if [ "$3" = "1" ]; then
|
|
return 1
|
|
fi
|
|
|
|
echo "$2 not found"
|
|
exit $EXIT_FAILURE
|
|
}
|
|
|
|
# Same args as cmd() but with the addition of $4 which determines if the
|
|
# command should be totally silenced or not.
|
|
_cmd()
|
|
{
|
|
local silent=$4
|
|
local rc=0
|
|
|
|
if [ -n "$3" ]; then
|
|
pipe_location="${3}"
|
|
else
|
|
pipe_location="/dev/null"
|
|
fi
|
|
|
|
if [ $1 -eq $REMOTE ] && [ -n "$REMOTE_HOST" ]; then
|
|
if [ $silent -eq 0 ]; then
|
|
ssh $REMOTE_PORT_OPTION "root@${REMOTE_HOST}" "$2" > "$pipe_location" 2>/dev/null
|
|
rc=$?
|
|
else
|
|
ssh $REMOTE_PORT_OPTION "root@${REMOTE_HOST}" "$2" >/dev/null 2>&1
|
|
rc=$?
|
|
fi
|
|
else
|
|
if [ $USE_CUSTOM_HOOKS -eq 1 ]; then
|
|
preflash_hook $1 "$2" "$3" $4
|
|
fi
|
|
|
|
if [ $silent -eq 0 ]; then
|
|
$SUDO_CMD $2 > "$pipe_location" 2>/dev/null
|
|
rc=$?
|
|
else
|
|
$SUDO_CMD $2 >/dev/null 2>&1
|
|
rc=$?
|
|
fi
|
|
|
|
if [ $USE_CUSTOM_HOOKS -eq 1 ]; then
|
|
postflash_hook $1 "$2" "$3" $4
|
|
fi
|
|
fi
|
|
|
|
return $rc
|
|
}
|
|
|
|
# run a command
|
|
#
|
|
# $1: 0 ($LOCAL) to run command locally,
|
|
# 1 ($REMOTE) to run remotely if remote host defined
|
|
# $2: command
|
|
# $3: filename to direct output of command into
|
|
cmd()
|
|
{
|
|
_cmd $1 "$2" "$3" 0
|
|
|
|
if [ $? -eq 0 ]; then
|
|
return
|
|
fi
|
|
|
|
echo "Failed to run \"$2\", aborting"
|
|
rm -f "$3" # don't leave an empty file
|
|
return $EXIT_FAILURE
|
|
}
|
|
|
|
# run a command silently
|
|
#
|
|
# $1: 0 ($LOCAL) to run command locally,
|
|
# 1 ($REMOTE) to run remotely if remote host defined
|
|
# $2: command
|
|
scmd()
|
|
{
|
|
_cmd $1 "$2" "" 1
|
|
|
|
if [ $? -eq 0 ]; then
|
|
return
|
|
fi
|
|
|
|
echo "Failed to run \"$2\", aborting"
|
|
return $EXIT_FAILURE
|
|
}
|