Browse Source

Add support for running "calltool" on Tor via "make callgraph".

Closes #19307.
Nick Mathewson 6 years ago
parent
commit
283be00b0b
4 changed files with 41 additions and 0 deletions
  1. 1 0
      .gitignore
  2. 4 0
      Makefile.am
  3. 7 0
      changes/19037
  4. 29 0
      scripts/maint/run_calltool.sh

+ 1 - 0
.gitignore

@@ -70,6 +70,7 @@ uptime-*.json
 /Tor*Bundle.dmg
 /tor-*-win32.exe
 /coverage_html/
+/callgraph/
 
 # /contrib/
 /contrib/dist/tor.sh

+ 4 - 0
Makefile.am

@@ -224,6 +224,10 @@ check-changes:
 update-versions:
 	$(PERL) $(top_builddir)/scripts/maint/updateVersions.pl
 
+.PHONY: callgraph
+callgraph:
+	$(top_builddir)/scripts/maint/run_calltool.sh
+
 version:
 	@echo "Tor @VERSION@"
 	@if test -d "$(top_srcdir)/.git" && test -x "`which git 2>&1;true`"; then \

+ 7 - 0
changes/19037

@@ -0,0 +1,7 @@
+  o Minor features (development support):
+    - Developers can now generate a call-graph for Tor using the
+      "calltool" python program, which post-processes object dumps.  It
+      should work okay on many Linux and OSX platforms, and might work
+      elsewhere too.  To run this, install calltool from
+      https://gitweb.torproject.org/user/nickm/calltool.git and run
+      "make callgraph". Closes ticket 19307.

+ 29 - 0
scripts/maint/run_calltool.sh

@@ -0,0 +1,29 @@
+#!/bin/sh
+
+# You can find calltool at https://gitweb.torproject.org/user/nickm/calltool.git
+
+set -e
+
+if test "x$CALLTOOL_PATH" != "x"; then
+  PYTHONPATH="${CALLTOOL_PATH}:${PYTHONPATH}"
+  export PYTHONPATH
+fi
+
+mkdir -p callgraph
+
+SUBITEMS="fn_invgraph fn_scc fn_scc_weaklinks module_graph module_invgraph module_scc module_scc_weaklinks"
+
+for calculation in $SUBITEMS; do
+  echo "======== $calculation"
+  python -m calltool $calculation > callgraph/$calculation
+done
+
+echo <<EOF > callgraph/README
+This directory holds output from calltool, as run on Tor.  For more
+information about each of these files, see the NOTES and README files in
+the calltool distribution.
+
+You can find calltool at
+    https://gitweb.torproject.org/user/nickm/calltool.git
+EOF
+