summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNick Mathewson <nickm@torproject.org>2017-09-07 10:51:02 -0400
committerNick Mathewson <nickm@torproject.org>2017-09-07 10:51:02 -0400
commit283be00b0bf515ee80b4b1d809d99a2cd682c46b (patch)
tree2030831cb473293590f9b8745665bad7d11f983d
parent8421756da3fc3cc116d17fe96b50384c0d79af8b (diff)
downloadtor-283be00b0bf515ee80b4b1d809d99a2cd682c46b.tar.gz
tor-283be00b0bf515ee80b4b1d809d99a2cd682c46b.zip
Add support for running "calltool" on Tor via "make callgraph".
Closes #19307.
-rw-r--r--.gitignore1
-rw-r--r--Makefile.am4
-rw-r--r--changes/190377
-rwxr-xr-xscripts/maint/run_calltool.sh29
4 files changed, 41 insertions, 0 deletions
diff --git a/.gitignore b/.gitignore
index 0e0640de2d..e9992fd1af 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 f1f64f2106..3982f1e8a4 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 0000000000..35f323f1b0
--- /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 0000000000..f7fa0c3056
--- /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
+