[PATCH] Add --buildids-blacklist option to perf archive command
From: Tianyou Li
Date: Sun Jun 08 2025 - 23:02:55 EST
When make a perf archive, it may contains the binaries that user did not want to ship with,
add --buildids-blacklist option to specify a backlist file which contains the buildids need
to be excluded. The blacklist file can be generated from command:
perf buildid-list -i perf.data --with-hits | grep -v "^ " > buildids_blacklist.txt
Then remove the lines from the buildids_blacklist.txt for buildids should be included.
Signed-off-by: Tianyou Li <tianyou.li@xxxxxxxxx>
Reviewed-by: Wangyang Guo <wangyang.guo@xxxxxxxxx>
---
tools/perf/perf-archive.sh | 35 ++++++++++++++++++++++++++++++-----
1 file changed, 30 insertions(+), 5 deletions(-)
diff --git a/tools/perf/perf-archive.sh b/tools/perf/perf-archive.sh
index 6ed7e52ab881..e5ff840ac6b4 100755
--- a/tools/perf/perf-archive.sh
+++ b/tools/perf/perf-archive.sh
@@ -16,6 +16,13 @@ while [ $# -gt 0 ] ; do
elif [ $1 == "--unpack" ]; then
UNPACK=1
shift
+ elif [ $1 == "--buildids-blacklist" ]; then
+ BUILDIDS_BLACKLIST="$2"
+ if [ ! -e "$BUILDIDS_BLACKLIST" ]; then
+ echo "Provided buildids blacklist file $BUILDIDS_BLACKLIST does not exist"
+ exit 1
+ fi
+ shift 2
else
PERF_DATA=$1
UNPACK_TAR=$1
@@ -86,11 +93,29 @@ fi
BUILDIDS=$(mktemp /tmp/perf-archive-buildids.XXXXXX)
-perf buildid-list -i $PERF_DATA --with-hits | grep -v "^ " > $BUILDIDS
-if [ ! -s $BUILDIDS ] ; then
- echo "perf archive: no build-ids found"
- rm $BUILDIDS || true
- exit 1
+#
+# BUILDIDS_BLACKLIST is an optional file that contains build-ids to be excluded from the
+# archive. It is a list of build-ids, one per line, without any leading or trailing spaces.
+# If the file is empty, all build-ids will be included in the archive. To create a blacklist
+# file, you can use the following command:
+# perf buildid-list -i perf.data --with-hits | grep -v "^ " > buildids_blacklist.txt
+# You can edit the file to remove the lines that you want to keep in the archive, then:
+# perf archive --buildids-blacklist buildids_blacklist.txt
+#
+if [ ! -s $BUILDIDS_BLACKLIST ]; then
+ perf buildid-list -i $PERF_DATA --with-hits | grep -v "^ " > $BUILDIDS
+ if [ ! -s $BUILDIDS ] ; then
+ echo "perf archive: no build-ids found"
+ rm $BUILDIDS || true
+ exit 1
+ fi
+else
+ perf buildid-list -i $PERF_DATA --with-hits | grep -v "^ " | grep -Fv -f $BUILDIDS_BLACKLIST > $BUILDIDS
+ if [ ! -s $BUILDIDS ] ; then
+ echo "perf archive: no build-ids found after applying blacklist"
+ rm $BUILDIDS || true
+ exit 1
+ fi
fi
MANIFEST=$(mktemp /tmp/perf-archive-manifest.XXXXXX)
--
2.47.1