xref: /openbmc/linux/tools/perf/perf-archive.sh (revision c37fe6aff89cb0d842993fe2f69e48bf3ebe0ab0)
12c585174SArnaldo Carvalho de Melo#!/bin/bash
2b2441318SGreg Kroah-Hartman# SPDX-License-Identifier: GPL-2.0
32c585174SArnaldo Carvalho de Melo# perf archive
42c585174SArnaldo Carvalho de Melo# Arnaldo Carvalho de Melo <acme@redhat.com>
52c585174SArnaldo Carvalho de Melo
62c585174SArnaldo Carvalho de MeloPERF_DATA=perf.data
72c585174SArnaldo Carvalho de Meloif [ $# -ne 0 ] ; then
82c585174SArnaldo Carvalho de Melo	PERF_DATA=$1
92c585174SArnaldo Carvalho de Melofi
102c585174SArnaldo Carvalho de Melo
1145de34bbSStephane Eranian#
1245de34bbSStephane Eranian# PERF_BUILDID_DIR environment variable set by perf
1345de34bbSStephane Eranian# path to buildid directory, default to $HOME/.debug
1445de34bbSStephane Eranian#
1545de34bbSStephane Eranianif [ -z $PERF_BUILDID_DIR ]; then
1645de34bbSStephane Eranian	PERF_BUILDID_DIR=~/.debug/
1745de34bbSStephane Eranianelse
1845de34bbSStephane Eranian        # append / to make substitutions work
1945de34bbSStephane Eranian        PERF_BUILDID_DIR=$PERF_BUILDID_DIR/
2045de34bbSStephane Eranianfi
2145de34bbSStephane Eranian
222c585174SArnaldo Carvalho de MeloBUILDIDS=$(mktemp /tmp/perf-archive-buildids.XXXXXX)
232c585174SArnaldo Carvalho de Melo
24*ec4d0a76SNicholas Fraserperf buildid-list -i $PERF_DATA --with-hits | grep -v "^ " > $BUILDIDS
252c585174SArnaldo Carvalho de Meloif [ ! -s $BUILDIDS ] ; then
262c585174SArnaldo Carvalho de Melo	echo "perf archive: no build-ids found"
2773eb422cSIrina Tirdea	rm $BUILDIDS || true
282c585174SArnaldo Carvalho de Melo	exit 1
292c585174SArnaldo Carvalho de Melofi
302c585174SArnaldo Carvalho de Melo
312c585174SArnaldo Carvalho de MeloMANIFEST=$(mktemp /tmp/perf-archive-manifest.XXXXXX)
32e3b61933SChanho ParkPERF_BUILDID_LINKDIR=$(readlink -f $PERF_BUILDID_DIR)/
332c585174SArnaldo Carvalho de Melo
342c585174SArnaldo Carvalho de Melocut -d ' ' -f 1 $BUILDIDS | \
352c585174SArnaldo Carvalho de Melowhile read build_id ; do
3645de34bbSStephane Eranian	linkname=$PERF_BUILDID_DIR.build-id/${build_id:0:2}/${build_id:2}
372c585174SArnaldo Carvalho de Melo	filename=$(readlink -f $linkname)
3845de34bbSStephane Eranian	echo ${linkname#$PERF_BUILDID_DIR} >> $MANIFEST
39e3b61933SChanho Park	echo ${filename#$PERF_BUILDID_LINKDIR} >> $MANIFEST
402c585174SArnaldo Carvalho de Melodone
412c585174SArnaldo Carvalho de Melo
4287ff50a3SIrina Tirdeatar cjf $PERF_DATA.tar.bz2 -C $PERF_BUILDID_DIR -T $MANIFEST
4373eb422cSIrina Tirdearm $MANIFEST $BUILDIDS || true
4488978e56SArnaldo Carvalho de Meloecho -e "Now please run:\n"
4588978e56SArnaldo Carvalho de Meloecho -e "$ tar xvf $PERF_DATA.tar.bz2 -C ~/.debug\n"
4688978e56SArnaldo Carvalho de Meloecho "wherever you need to run 'perf report' on."
472c585174SArnaldo Carvalho de Meloexit 0
48