diff options
author | Maxim Kuvyrkov <maxim.kuvyrkov@linaro.org> | 2017-02-21 07:10:01 +0000 |
---|---|---|
committer | Maxim Kuvyrkov <maxim.kuvyrkov@linaro.org> | 2017-02-21 07:10:01 +0000 |
commit | ed0b91a25ca0116ee02d02d463c61ce5061b11dc (patch) | |
tree | 63070eba6a79ffdfa6a25eeb1ea6a34325996b5b | |
parent | d6437c9d70f030ce4074a450534bfda48e731a1f (diff) |
perf-archive.sh: Rework interface to support multiple *.data files
Change-Id: Id538fe602bd70a89abc2d5cdbbd0e267211fad4d
-rwxr-xr-x | perf-archive.sh | 77 |
1 files changed, 53 insertions, 24 deletions
diff --git a/perf-archive.sh b/perf-archive.sh index e919306..15781e9 100755 --- a/perf-archive.sh +++ b/perf-archive.sh @@ -2,46 +2,75 @@ # perf archive # Arnaldo Carvalho de Melo <acme@redhat.com> -PERF_DATA=perf.data -if [ $# -ne 0 ] ; then - PERF_DATA=$1 -fi +set -e + +buildid_dir="$HOME/.debug" +output="" +verbose="" + +OPTS="`getopt -o vo: -l output:,verbose -- "$@"`" +while test $# -gt 0; do + case $1 in + --buildid-dir) buildid_dir="$2"; shift ;; + --output|-o) output="$2"; shift ;; + --verbose|-v) verbose="set -x" ;; + --) shift; break ;; + esac + shift +done -# -# PERF_BUILDID_DIR environment variable set by perf -# path to buildid directory, default to $HOME/.debug -# -if [ -z $PERF_BUILDID_DIR ]; then - PERF_BUILDID_DIR=~/.debug/ +$verbose + +if [ $# -eq 0 ] ; then + PERF_DATA=perf.data else - # append / to make substitutions work - PERF_BUILDID_DIR=$PERF_BUILDID_DIR/ + PERF_DATA="$@" +fi + +if [ x"$output" = x"" ]; then + if [ $# -le 1 ]; then + output=$PERF_DATA.tar.bz2 + else + echo "ERROR: Please specify --output option" + exit 1 + fi fi +case "$output" in + *".tar.bz2") compression="j" ;; + *".tar.xz") compression="J" ;; + *) + echo "ERROR: Uknown output format: $output" + exit 1 + ;; +esac + +# append / to make substitutions work +buildid_dir=$buildid_dir/ + BUILDIDS=$(mktemp /tmp/perf-archive-buildids.XXXXXX) +MANIFEST=$(mktemp /tmp/perf-archive-manifest.XXXXXX) +trap "rm -f $BUILDIDS MANIFEST" EXIT + NOBUILDID=0000000000000000000000000000000000000000 -perf buildid-list -i $PERF_DATA --with-hits | grep -v "^$NOBUILDID " > $BUILDIDS +( + for data in $PERF_DATA; do + perf buildid-list -i $data --with-hits + done) | grep -v "^$NOBUILDID " | sort -u > $BUILDIDS if [ ! -s $BUILDIDS ] ; then echo "perf archive: no build-ids found" - rm $BUILDIDS || true exit 1 fi -MANIFEST=$(mktemp /tmp/perf-archive-manifest.XXXXXX) -PERF_BUILDID_LINKDIR=$(readlink -f $PERF_BUILDID_DIR)/ +PERF_BUILDID_LINKDIR=$(readlink -f $buildid_dir)/ cut -d ' ' -f 1 $BUILDIDS | \ while read build_id ; do - linkname=$PERF_BUILDID_DIR.build-id/${build_id:0:2}/${build_id:2} + linkname=$buildid_dir.build-id/${build_id:0:2}/${build_id:2} filename=$(readlink -f $linkname) - echo ${linkname#$PERF_BUILDID_DIR} >> $MANIFEST + echo ${linkname#$buildid_dir} >> $MANIFEST echo ${filename#$PERF_BUILDID_LINKDIR} >> $MANIFEST done -tar cjf $PERF_DATA.tar.bz2 -C $PERF_BUILDID_DIR -T $MANIFEST -rm $MANIFEST $BUILDIDS || true -echo -e "Now please run:\n" -echo -e "$ tar xvf $PERF_DATA.tar.bz2 -C ~/.debug\n" -echo "wherever you need to run 'perf report' on." -exit 0 +tar c${comression}f $output -C $buildid_dir -T $MANIFEST |