aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMaxim Kuvyrkov <maxim.kuvyrkov@linaro.org>2017-02-21 07:10:01 +0000
committerMaxim Kuvyrkov <maxim.kuvyrkov@linaro.org>2017-02-21 07:10:01 +0000
commited0b91a25ca0116ee02d02d463c61ce5061b11dc (patch)
tree63070eba6a79ffdfa6a25eeb1ea6a34325996b5b
parentd6437c9d70f030ce4074a450534bfda48e731a1f (diff)
perf-archive.sh: Rework interface to support multiple *.data files
Change-Id: Id538fe602bd70a89abc2d5cdbbd0e267211fad4d
-rwxr-xr-xperf-archive.sh77
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