[Author Prev][Author Next][Thread Prev][Thread Next][Author Index][Thread Index]
[or-cvs] [tor/master] Command-line option to dump SHA1 digests of all source files.
Author: Nick Mathewson <nickm@xxxxxxxxxxxxx>
Date: Sat, 3 Jan 2009 21:43:05 -0500
Subject: Command-line option to dump SHA1 digests of all source files.
Commit: 6ac3a8b0cd1946e90a4c997e8fad1bfc63890abd
Now, when you call tor --digests, it dumps the SHA1 digest of each
source file that Tor was built with. We support both 'sha1sum' and
'openssl sha1'. If the user is building from a tarball and they
haven't edited anything, they don't need any program that calculates
SHA1. If they _have_ modified a file but they don't have a program to
calculate SHA1, we try to build so we do not output digests.
---
.gitignore | 2 ++
ChangeLog | 6 ++++++
configure.in | 4 ++++
src/common/Makefile.am | 14 ++++++++++++++
src/common/util.c | 7 +++++++
src/common/util.h | 2 ++
src/or/Makefile.am | 16 +++++++++++++++-
src/or/config.c | 8 ++++++++
8 files changed, 58 insertions(+), 1 deletions(-)
diff --git a/.gitignore b/.gitignore
index f5d2d4e..8c80e09 100644
--- a/.gitignore
+++ b/.gitignore
@@ -107,6 +107,7 @@
# /src/common/
/src/common/Makefile
/src/common/Makefile.in
+/src/common/common_sha1.i
/src/common/libor.a
/src/common/libor-crypto.a
@@ -120,6 +121,7 @@
# /src/or/
/src/or/Makefile
/src/or/Makefile.in
+/src/or/or_sha1.i
/src/or/micro-revision.*
/src/or/tor
/src/or/test
diff --git a/ChangeLog b/ChangeLog
index 3ca41e1..5103456 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,9 @@
+Changes in version 0.2.2.1-alpha - 2009-??-??
+ o Minor features
+ - New --digests command-line switch to output the digests of the source
+ files Tor was built with.
+
+
Changes in version 0.2.1.15??? - ????-??-??
o Minor bugfixes:
- Actually return -1 in the error case for read_bandwidth_usage. Bug
diff --git a/configure.in b/configure.in
index a7ea5e1..2b8a915 100644
--- a/configure.in
+++ b/configure.in
@@ -107,6 +107,10 @@ AC_PROG_CC
AC_PROG_CPP
AC_PROG_MAKE_SET
AC_PROG_RANLIB
+AC_PROG_SED
+
+AC_PATH_PROG([SHA1SUM], [sha1sum], none)
+AC_PATH_PROG([OPENSSL], [openssl], none)
TORUSER=_tor
AC_ARG_WITH(tor-user,
diff --git a/src/common/Makefile.am b/src/common/Makefile.am
index 105c413..78c8ab5 100644
--- a/src/common/Makefile.am
+++ b/src/common/Makefile.am
@@ -1,6 +1,8 @@
noinst_LIBRARIES = libor.a libor-crypto.a
+EXTRA_DIST = common_sha1.i
+
#CFLAGS = -Wall -Wpointer-arith -O2
if USE_OPENBSD_MALLOC
@@ -14,3 +16,15 @@ libor_a_SOURCES = address.c log.c util.c compat.c container.c mempool.c \
libor_crypto_a_SOURCES = crypto.c aes.c tortls.c torgzip.c
noinst_HEADERS = address.h log.h crypto.h test.h util.h compat.h aes.h torint.h tortls.h strlcpy.c strlcat.c torgzip.h container.h ht.h mempool.h memarea.h ciphers.inc
+
+common_sha1.i: $(libor_SOURCES) $(libor_crypto_a_SOURCES) $(noinst_HEADERS)
+ if test "@SHA1SUM@" != none; then \
+ @SHA1SUM@ $(libor_SOURCES) $(libor_crypto_a_SOURCES) $(noinst_HEADERS) | @SED@ -n 's/^\(.*\)$$/"\1\\n"/p' > common_sha1.i; \
+ elif test "@OPENSSL@" != none; then \
+ @OPENSSL@ sha1 $(libor_SOURCES) $(libor_crypto_a_SOURCES) $(noinst_HEADERS) | @SED@ -n 's/SHA1(\(.*\))= \(.*\)/"\2 \1\\n"/p' > common_sha1.i; \
+ else \
+ rm common_sha1.i; \
+ touch common_sha1.i; \
+ fi
+
+util.o: common_sha1.i
diff --git a/src/common/util.c b/src/common/util.c
index 6310811..bb227e4 100644
--- a/src/common/util.c
+++ b/src/common/util.c
@@ -2562,3 +2562,10 @@ write_pidfile(char *filename)
}
}
+const char *
+libor_get_digests(void)
+{
+ return ""
+#include "common_sha1.i"
+ ;
+}
diff --git a/src/common/util.h b/src/common/util.h
index cbf5334..363a23b 100644
--- a/src/common/util.h
+++ b/src/common/util.h
@@ -294,5 +294,7 @@ void start_daemon(void);
void finish_daemon(const char *desired_cwd);
void write_pidfile(char *filename);
+const char *libor_get_digests(void);
+
#endif
diff --git a/src/or/Makefile.am b/src/or/Makefile.am
index 28d7e73..03e7900 100644
--- a/src/or/Makefile.am
+++ b/src/or/Makefile.am
@@ -10,7 +10,7 @@ else
tor_platform_source=
endif
-EXTRA_DIST=ntmain.c
+EXTRA_DIST=ntmain.c or_sha1.i
tor_SOURCES = buffers.c circuitbuild.c circuitlist.c \
circuituse.c command.c config.c \
@@ -52,6 +52,8 @@ test_LDADD = ../common/libor.a ../common/libor-crypto.a \
noinst_HEADERS = or.h eventdns.h eventdns_tor.h micro-revision.i
+config.o: or_sha1.i
+
tor_main.o: micro-revision.i
micro-revision.i: FORCE
@@ -103,5 +105,17 @@ micro-revision.i: FORCE
mv micro-revision.tmp micro-revision.i; \
fi; true
+or_sha1.i: $(tor_SOURCES) test_data.c test.c
+ if test "@SHA1SUM@" != none; then \
+ @SHA1SUM@ $(tor_SOURCES) test_data.c test.c | @SED@ -n 's/^\(.*\)$$/"\1\\n"/p' > or_sha1.i; \
+ elif test "@OPENSSL@" != none; then \
+ @OPENSSL@ sha1 $(tor_SOURCES) test_data.c test.c | @SED@ -n 's/SHA1(\(.*\))= \(.*\)/"\2 \1\\n"/p' > or_sha1.i; \
+ else \
+ rm or_sha1.i; \
+ touch or_sha1.i; \
+ fi
+
+
+
#Dummy target to ensure that micro-revision.i _always_ gets built.
FORCE:
diff --git a/src/or/config.c b/src/or/config.c
index aa61ecf..14418d2 100644
--- a/src/or/config.c
+++ b/src/or/config.c
@@ -3927,6 +3927,14 @@ options_init_from_torrc(int argc, char **argv)
printf("Tor version %s.\n",get_version());
exit(0);
}
+ if (argc > 1 && (!strcmp(argv[1],"--digests"))) {
+ printf("Tor version %s.\n",get_version());
+ printf("%s", libor_get_digests());
+ printf("%s", ""
+#include "or_sha1.i"
+ );
+ exit(0);
+ }
/* Go through command-line variables */
if (!global_cmdline_options) {
--
1.5.6.5