David Hendricks (dhendrix@chromium.org) just uploaded a new patch set to gerrit, which you can find at http://review.coreboot.org/4038
-gerrit
commit 84998dc8327dcfc87738c594d62767e0b0947214 Author: David Hendricks dhendrix@chromium.org Date: Mon Nov 11 18:43:39 2013 -0800
rename status-related stuff to board_status
This just moves stuff to be more clear about the purpose of the script. Other suggestions are welcome.
Change-Id: Ic6095fd4eb347daa5a03eff21b5952d2d42a6bfd Signed-off-by: David Hendricks dhendrix@chromium.org --- util/board_status/board_status.sh | 137 +++++++++++++++++++++++ util/board_status/getrevision.sh | 228 ++++++++++++++++++++++++++++++++++++++ util/status/getrevision.sh | 228 -------------------------------------- util/status/status.sh | 137 ----------------------- 4 files changed, 365 insertions(+), 365 deletions(-)
diff --git a/util/board_status/board_status.sh b/util/board_status/board_status.sh new file mode 100644 index 0000000..d2955e0 --- /dev/null +++ b/util/board_status/board_status.sh @@ -0,0 +1,137 @@ +#!/bin/sh +# +# This file is part of the coreboot project. +# +# Copyright (C) 2013 Google Inc. +# + +EXIT_SUCCESS=0 +EXIT_FAILURE=1 +OUTDIR="status" + +# Stuff from command-line switches +REMOTE_HOST="" +CLOBBER_OUTPUT=0 +UPLOAD_RESULTS=0 + +show_help() { + echo "Usage: + ${0} <option> + +Options + -h + Show this message. + -c + Clobber output when finished. + -r <host> + Obtain machine information from remote host (using ssh). + -u + Upload results to coreboot.org. +" +} + +# test a command +# +# $1: test command on remote host (0=no, 1=yes) +# $2: command to test +test_cmd() +{ + local rc + + if [ -e "$2" ]; then + return + fi + + if [[ $1 -eq 1 && "$REMOTE_HOST" ]]; then + ssh root@${REMOTE_HOST} which "$2" >/dev/null + rc=$? + else + which "$2" >/dev/null + rc=$? + fi + + if [ $rc -eq 0 ]; then + return + fi + + echo "$2 not found" + exit $EXIT_FAILURE +} + +# run a command +# +# $1: 0 to run command locally, 1 to run remotely if remote host defined +# $2: command +cmd() +{ + if [ -e "$2" ]; then + return + fi + + if [[ $1 -eq 1 && -n "$REMOTE_HOST" ]]; then + ssh root@${REMOTE_HOST} "$2" + else + $2 + fi + + if [ $? -eq 0 ]; then + return + fi + + echo "Failed to run command: $2" + exit $EXIT_FAILURE +} + +while getopts "chr:u" opt; do + case "$opt" in + h) + show_help + exit $EXIT_SUCCESS + ;; + c) + CLOBBER_OUTPUT=1 + ;; + r) + REMOTE_HOST="$OPTARG" + ;; + u) + UPLOAD_RESULTS=1 + ;; + esac +done + +if [ -e "$OUTDIR" ]; then + echo "Output directory exists, aborting." + exit $EXIT_FAILURE +fi + +mkdir "$OUTDIR" + +getrevision="util/board_status/getrevision.sh" +test_cmd 0 $getrevision +touch ${OUTDIR}/revision.txt +printf "Local revision: %s\n" $($getrevision -l) >> ${OUTDIR}/revision.txt +printf "Upstream revision: %s\n" $($getrevision -u) >> ${OUTDIR}/revision.txt +printf "Upstream URL: %s\n" $($getrevision -U)>> ${OUTDIR}/revision.txt +printf "Timestamp: %s\n" $($getrevision -t) >> ${OUTDIR}/revision.txt + +cbfstool_cmd="util/cbfstool/cbfstool" +test_cmd 0 "$cbfstool_cmd" +$cbfstool_cmd build/coreboot.rom extract -n config -f ${OUTDIR}/config.txt + +test_cmd 1 "cbmem" +cmd 1 "cbmem -c" > ${OUTDIR}/coreboot_console.txt +cmd 1 "cbmem -t" > ${OUTDIR}/coreboot_timestamps.txt +cmd 1 "cbmem -C" > ${OUTDIR}/coreboot_coverage.txt + +cmd 1 dmesg > ${OUTDIR}/kernel_log.txt + +#if [ $UPLOAD_RESULTS -eq 1 ]; then +# FIXME: implement this part +#fi + +if [ $CLOBBER_OUTPUT -eq 1 ]; then + rm -rf ${OUTDIR} +fi + +exit $EXIT_SUCCESS diff --git a/util/board_status/getrevision.sh b/util/board_status/getrevision.sh new file mode 100755 index 0000000..c8c126a --- /dev/null +++ b/util/board_status/getrevision.sh @@ -0,0 +1,228 @@ +#!/bin/sh +# +# This file is part of the coreboot project. It originated in the +# flashrom project but has been heavily modified since then. +# +# Copyright (C) 2013 Stefan Tauner +# Copyright (C) 2013 Google Inc. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA +# + +EXIT_SUCCESS=0 +EXIT_FAILURE=1 + +# Make sure we don't get translated output +export LC_ALL=C +# nor local times or dates +export TZ=UTC0 + +# Helper functions +git_has_local_changes() { + git update-index -q --refresh >/dev/null + ! git diff-index --quiet HEAD -- "$1" +} + +git_last_commit() { + git log --pretty=format:"%h" -1 -- "$1" +} + +git_is_file_tracked() { + git ls-files --error-unmatch -- "$1" >/dev/null 2>&1 +} + +is_file_tracked() { + git_is_file_tracked "$1" +} + +# Tries to find a remote source for the changes committed locally. +# This includes the URL of the remote repository including the last commit and a suitable branch name. +# Takes one optional argument: the path to inspect +git_url() { + # Note: This may not work as expected if multiple remotes are fetched from. + echo $(git remote -v | \ + awk '/fetch/ {split($2, pieces, "@"); print pieces[2]; exit 0}') +} + +# Returns a string indicating where others can get the current source code (excluding uncommitted changes) +# Takes one optional argument: the path to inspect +scm_url() { + local url + + url="$(git_url "$1")" + + echo "${url}" +} + +# Retrieve timestamp since last modification. If the sources are pristine, +# then the timestamp will match that of the SCM's most recent modification +# date. +timestamp() { + local t + + # date syntaxes are manifold: + # gnu date [-d input]... [+FORMAT] + # netbsd date [-ajnu] [-d date] [-r seconds] [+format] [[[[[[CC]yy]mm]dd]HH]MM[.SS]] + # freebsd date [-jnu] [-d dst] [-r seconds] [-f fmt date | [[[[[cc]yy]mm]dd]HH]MM[.ss]] [+format] [...] + # dragonflybsd date [-jnu] [-d dst] [-r seconds] [-f fmt date | [[[[[cc]yy]mm]dd]HH]MM[.ss]] [+format] [...] + # openbsd date [-aju] [-d dst] [-r seconds] [+format] [[[[[[cc]yy]mm]dd]HH]MM[.SS]] [...] + if git_is_file_tracked "$2" ; then + # are there local changes? + if git_has_local_changes "$2" ; then + t=$(date -u "${1}") + else + # No local changes, get date of the last commit + case $(uname) in + # Most BSD dates do not support parsing date values from user input with -d but all of + # them support parsing epoch seconds with -r. Thanks to git we can easily use that: + NetBSD|OpenBSD|DragonFly|FreeBSD) + t=$(date -u -r "$(git log --pretty=format:%ct -1 -- $2)" "$1" 2>/dev/null);; + *) + t=$(date -d "$(git log --pretty=format:%cD -1 -- $2)" -u "$1" 2>/dev/null);; + esac + fi + else + t=$(date -u "$1") + fi + + if [ -z "$t" ]; then + echo "Warning: Could not determine timestamp." 2>/dev/null + fi + echo "${t}" +} + +# Retrieve local SCM revision info. This is useful if we're working in a different SCM than upstream and/or +# have local changes. +local_revision() { + local r + + if git_is_file_tracked "$1" ; then + r=$(git_last_commit "$1") + + if git_has_local_changes "$1" ; then + r="$r-dirty" + fi + else + return ${EXIT_FAILURE} + fi + + echo "${r}" +} + +upstream_revision() { + local r= + + r=$(git log remotes/origin/master -1 --format=format:%h) + + if [ -z "$r" ]; then + r="unknown" # default to unknown + fi + echo "${r}" +} + +show_help() { + echo "Usage: + ${0} <command> [path] + +Commands + -h or --help + this message + -l or --local + local revision information including an indicator for uncommitted changes + -u or --upstream + upstream revision + -U or --url + URL associated with the latest commit + -d or --date + date of most recent modification + -t or --timestamp + timestamp of most recent modification +" + return +} + +check_action() { + if [ -n "$action" ]; then + echo "Error: Multiple actions given.">&2 + exit ${EXIT_FAILURE} + fi +} + +main() { + local query_path= + local action= + + # The is the main loop + while [ $# -gt 0 ]; + do + case ${1} in + -h|--help) + action=show_help; + shift;; + -l|--local) + check_action $1 + action=local_revision + shift;; + -u|--upstream) + check_action $1 + action=upstream_revision + shift;; + -U|--url) + check_action $1 + action=scm_url + shift;; + -d|--date) + check_action $1 + action="timestamp +%Y-%m-%d" # refrain from suffixing 'Z' to indicate it's UTC + shift;; + -t|--timestamp) + check_action $1 + action="timestamp +%Y-%m-%dT%H:%M:%SZ" # There is only one valid time format! ISO 8601 + shift;; + -*) + show_help; + echo "Error: Invalid option: ${1}" + exit ${EXIT_FAILURE};; + *) + if [ -z "$query_path" ] ; then + if [ ! -e "$1" ] ; then + echo "Error: Path "${1}" does not exist.">&2 + exit ${EXIT_FAILURE} + fi + query_path=$1 + else + echo "Warning: Ignoring over-abundant paramter: "${1}"">&2 + fi + shift;; + esac; + done + + # default to current directory (usually equals the whole repository) + if [ -z "$query_path" ] ; then + query_path=. + fi + if ! is_file_tracked "$query_path" ; then + echo "Warning: Path "${query_path}" is not under version control.">&2 + fi + if [ -z "$action" ] ; then + show_help + echo "Error: No actions specified" + exit ${EXIT_FAILURE} + fi + + $action "$query_path" +} + +main $@ diff --git a/util/status/getrevision.sh b/util/status/getrevision.sh deleted file mode 100755 index c8c126a..0000000 --- a/util/status/getrevision.sh +++ /dev/null @@ -1,228 +0,0 @@ -#!/bin/sh -# -# This file is part of the coreboot project. It originated in the -# flashrom project but has been heavily modified since then. -# -# Copyright (C) 2013 Stefan Tauner -# Copyright (C) 2013 Google Inc. -# -# This program is free software; you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation; either version 2 of the License, or -# (at your option) any later version. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with this program; if not, write to the Free Software -# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA -# - -EXIT_SUCCESS=0 -EXIT_FAILURE=1 - -# Make sure we don't get translated output -export LC_ALL=C -# nor local times or dates -export TZ=UTC0 - -# Helper functions -git_has_local_changes() { - git update-index -q --refresh >/dev/null - ! git diff-index --quiet HEAD -- "$1" -} - -git_last_commit() { - git log --pretty=format:"%h" -1 -- "$1" -} - -git_is_file_tracked() { - git ls-files --error-unmatch -- "$1" >/dev/null 2>&1 -} - -is_file_tracked() { - git_is_file_tracked "$1" -} - -# Tries to find a remote source for the changes committed locally. -# This includes the URL of the remote repository including the last commit and a suitable branch name. -# Takes one optional argument: the path to inspect -git_url() { - # Note: This may not work as expected if multiple remotes are fetched from. - echo $(git remote -v | \ - awk '/fetch/ {split($2, pieces, "@"); print pieces[2]; exit 0}') -} - -# Returns a string indicating where others can get the current source code (excluding uncommitted changes) -# Takes one optional argument: the path to inspect -scm_url() { - local url - - url="$(git_url "$1")" - - echo "${url}" -} - -# Retrieve timestamp since last modification. If the sources are pristine, -# then the timestamp will match that of the SCM's most recent modification -# date. -timestamp() { - local t - - # date syntaxes are manifold: - # gnu date [-d input]... [+FORMAT] - # netbsd date [-ajnu] [-d date] [-r seconds] [+format] [[[[[[CC]yy]mm]dd]HH]MM[.SS]] - # freebsd date [-jnu] [-d dst] [-r seconds] [-f fmt date | [[[[[cc]yy]mm]dd]HH]MM[.ss]] [+format] [...] - # dragonflybsd date [-jnu] [-d dst] [-r seconds] [-f fmt date | [[[[[cc]yy]mm]dd]HH]MM[.ss]] [+format] [...] - # openbsd date [-aju] [-d dst] [-r seconds] [+format] [[[[[[cc]yy]mm]dd]HH]MM[.SS]] [...] - if git_is_file_tracked "$2" ; then - # are there local changes? - if git_has_local_changes "$2" ; then - t=$(date -u "${1}") - else - # No local changes, get date of the last commit - case $(uname) in - # Most BSD dates do not support parsing date values from user input with -d but all of - # them support parsing epoch seconds with -r. Thanks to git we can easily use that: - NetBSD|OpenBSD|DragonFly|FreeBSD) - t=$(date -u -r "$(git log --pretty=format:%ct -1 -- $2)" "$1" 2>/dev/null);; - *) - t=$(date -d "$(git log --pretty=format:%cD -1 -- $2)" -u "$1" 2>/dev/null);; - esac - fi - else - t=$(date -u "$1") - fi - - if [ -z "$t" ]; then - echo "Warning: Could not determine timestamp." 2>/dev/null - fi - echo "${t}" -} - -# Retrieve local SCM revision info. This is useful if we're working in a different SCM than upstream and/or -# have local changes. -local_revision() { - local r - - if git_is_file_tracked "$1" ; then - r=$(git_last_commit "$1") - - if git_has_local_changes "$1" ; then - r="$r-dirty" - fi - else - return ${EXIT_FAILURE} - fi - - echo "${r}" -} - -upstream_revision() { - local r= - - r=$(git log remotes/origin/master -1 --format=format:%h) - - if [ -z "$r" ]; then - r="unknown" # default to unknown - fi - echo "${r}" -} - -show_help() { - echo "Usage: - ${0} <command> [path] - -Commands - -h or --help - this message - -l or --local - local revision information including an indicator for uncommitted changes - -u or --upstream - upstream revision - -U or --url - URL associated with the latest commit - -d or --date - date of most recent modification - -t or --timestamp - timestamp of most recent modification -" - return -} - -check_action() { - if [ -n "$action" ]; then - echo "Error: Multiple actions given.">&2 - exit ${EXIT_FAILURE} - fi -} - -main() { - local query_path= - local action= - - # The is the main loop - while [ $# -gt 0 ]; - do - case ${1} in - -h|--help) - action=show_help; - shift;; - -l|--local) - check_action $1 - action=local_revision - shift;; - -u|--upstream) - check_action $1 - action=upstream_revision - shift;; - -U|--url) - check_action $1 - action=scm_url - shift;; - -d|--date) - check_action $1 - action="timestamp +%Y-%m-%d" # refrain from suffixing 'Z' to indicate it's UTC - shift;; - -t|--timestamp) - check_action $1 - action="timestamp +%Y-%m-%dT%H:%M:%SZ" # There is only one valid time format! ISO 8601 - shift;; - -*) - show_help; - echo "Error: Invalid option: ${1}" - exit ${EXIT_FAILURE};; - *) - if [ -z "$query_path" ] ; then - if [ ! -e "$1" ] ; then - echo "Error: Path "${1}" does not exist.">&2 - exit ${EXIT_FAILURE} - fi - query_path=$1 - else - echo "Warning: Ignoring over-abundant paramter: "${1}"">&2 - fi - shift;; - esac; - done - - # default to current directory (usually equals the whole repository) - if [ -z "$query_path" ] ; then - query_path=. - fi - if ! is_file_tracked "$query_path" ; then - echo "Warning: Path "${query_path}" is not under version control.">&2 - fi - if [ -z "$action" ] ; then - show_help - echo "Error: No actions specified" - exit ${EXIT_FAILURE} - fi - - $action "$query_path" -} - -main $@ diff --git a/util/status/status.sh b/util/status/status.sh deleted file mode 100644 index 4b5496c..0000000 --- a/util/status/status.sh +++ /dev/null @@ -1,137 +0,0 @@ -#!/bin/sh -# -# This file is part of the coreboot project. -# -# Copyright (C) 2013 Google Inc. -# - -EXIT_SUCCESS=0 -EXIT_FAILURE=1 -OUTDIR="status" - -# Stuff from command-line switches -REMOTE_HOST="" -CLOBBER_OUTPUT=0 -UPLOAD_RESULTS=0 - -show_help() { - echo "Usage: - ${0} <option> - -Options - -h - Show this message. - -c - Clobber output when finished. - -r <host> - Obtain machine information from remote host (using ssh). - -u - Upload results to coreboot.org. -" -} - -# test a command -# -# $1: test command on remote host (0=no, 1=yes) -# $2: command to test -test_cmd() -{ - local rc - - if [ -e "$2" ]; then - return - fi - - if [[ $1 -eq 1 && "$REMOTE_HOST" ]]; then - ssh root@${REMOTE_HOST} which "$2" >/dev/null - rc=$? - else - which "$2" >/dev/null - rc=$? - fi - - if [ $rc -eq 0 ]; then - return - fi - - echo "$2 not found" - exit $EXIT_FAILURE -} - -# run a command -# -# $1: 0 to run command locally, 1 to run remotely if remote host defined -# $2: command -cmd() -{ - if [ -e "$2" ]; then - return - fi - - if [[ $1 -eq 1 && -n "$REMOTE_HOST" ]]; then - ssh root@${REMOTE_HOST} "$2" - else - $2 - fi - - if [ $? -eq 0 ]; then - return - fi - - echo "Failed to run command: $2" - exit $EXIT_FAILURE -} - -while getopts "chr:u" opt; do - case "$opt" in - h) - show_help - exit $EXIT_SUCCESS - ;; - c) - CLOBBER_OUTPUT=1 - ;; - r) - REMOTE_HOST="$OPTARG" - ;; - u) - UPLOAD_RESULTS=1 - ;; - esac -done - -if [ -e "$OUTDIR" ]; then - echo "Output directory exists, aborting." - exit $EXIT_FAILURE -fi - -mkdir "$OUTDIR" - -getrevision="util/status/getrevision.sh" -test_cmd 0 $getrevision -touch ${OUTDIR}/revision.txt -printf "Local revision: %s\n" $($getrevision -l) >> ${OUTDIR}/revision.txt -printf "Upstream revision: %s\n" $($getrevision -u) >> ${OUTDIR}/revision.txt -printf "Upstream URL: %s\n" $($getrevision -U)>> ${OUTDIR}/revision.txt -printf "Timestamp: %s\n" $($getrevision -t) >> ${OUTDIR}/revision.txt - -cbfstool_cmd="util/cbfstool/cbfstool" -test_cmd 0 "$cbfstool_cmd" -$cbfstool_cmd build/coreboot.rom extract -n config -f ${OUTDIR}/config.txt - -test_cmd 1 "cbmem" -cmd 1 "cbmem -c" > ${OUTDIR}/coreboot_console.txt -cmd 1 "cbmem -t" > ${OUTDIR}/coreboot_timestamps.txt -cmd 1 "cbmem -C" > ${OUTDIR}/coreboot_coverage.txt - -cmd 1 dmesg > ${OUTDIR}/kernel_log.txt - -#if [ $UPLOAD_RESULTS -eq 1 ]; then -# FIXME: implement this part -#fi - -if [ $CLOBBER_OUTPUT -eq 1 ]; then - rm -rf ${OUTDIR} -fi - -exit $EXIT_SUCCESS