[tor-commits] [tor/master] Add support for running "calltool" on Tor via "make callgraph".

nickm at torproject.org nickm at torproject.org
Thu Sep 7 14:51:29 UTC 2017


commit 283be00b0bf515ee80b4b1d809d99a2cd682c46b
Author: Nick Mathewson <nickm at torproject.org>
Date:   Thu Sep 7 10:51:02 2017 -0400

    Add support for running "calltool" on Tor via "make callgraph".
    
    Closes #19307.
---
 .gitignore                    |  1 +
 Makefile.am                   |  4 ++++
 changes/19037                 |  7 +++++++
 scripts/maint/run_calltool.sh | 29 +++++++++++++++++++++++++++++
 4 files changed, 41 insertions(+)

diff --git a/.gitignore b/.gitignore
index 0e0640de2..e9992fd1a 100644
--- a/.gitignore
+++ b/.gitignore
@@ -70,6 +70,7 @@ uptime-*.json
 /Tor*Bundle.dmg
 /tor-*-win32.exe
 /coverage_html/
+/callgraph/
 
 # /contrib/
 /contrib/dist/tor.sh
diff --git a/Makefile.am b/Makefile.am
index f1f64f210..3982f1e8a 100644
--- a/Makefile.am
+++ b/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 \
diff --git a/changes/19037 b/changes/19037
new file mode 100644
index 000000000..35f323f1b
--- /dev/null
+++ b/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.
diff --git a/scripts/maint/run_calltool.sh b/scripts/maint/run_calltool.sh
new file mode 100755
index 000000000..f7fa0c305
--- /dev/null
+++ b/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
+





More information about the tor-commits mailing list