]> git.ipfire.org Git - thirdparty/tor.git/commitdiff
A hack I've been wanting for a while: when building a -dev version
authorNick Mathewson <nickm@torproject.org>
Mon, 16 Apr 2007 23:56:31 +0000 (23:56 +0000)
committerNick Mathewson <nickm@torproject.org>
Mon, 16 Apr 2007 23:56:31 +0000 (23:56 +0000)
from an SVN repository, use the current svn revision in the platform
string and in the output of --version.

svn:r9976

ChangeLog
doc/TODO
src/or/Makefile.am
src/or/config.c
src/or/router.c
src/or/test.c
src/or/tor_main.c

index c260d7335d5cb92a6bcd669d76cab456eb196b07..e77e5070fc390421387add194ce0d62fbd44e8d6 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -23,6 +23,8 @@ Changes in version 0.2.0.1-alpha - 2007-??-??
     - When warning about missing headers, tell the user to let us
       know if the compile succeeds anyway, so we can downgrade the
       warning.
+    - If we're building from a subversion repository, include the current
+      SVN revision as part of the version string.
 
   o Minor features (logging):
     - Always prepend "Bug: " to any log message about a bug.
index 921385a8a8af170f45e0db9a40e5eb1deb9ae88e..1cb461d123799cbdf27fb6ad851e4c5381d0dc34 100644 (file)
--- a/doc/TODO
+++ b/doc/TODO
@@ -357,8 +357,9 @@ Future version:
     such errors recently, then don't warn about it.
   - More consistent error checking in router_parse_entry_from_string().
     I can say "banana" as my bandwidthcapacity, and it won't even squeak.
-  - Include the output of svn info/svk info output into the binary, so
-    it's trivial to see what version a binary was built from.
+  o Include the output of svn info in the binary, so it's trivial to see what
+    version a binary was built from.
+    - Do the same for svk info.
   - Add a doxygen style checker to make check-spaces so nick doesn't drift
     too far from arma's undocumented styleguide.  Also, document that
     styleguide in HACKING.  (See r9634 for example.)
index 9991a67a2ecec69f2916c0900b4cc863f081272c..8e2011017e1a653eae08ed98b96c7d5e40e83a47 100644 (file)
@@ -28,3 +28,17 @@ test_LDADD = ../common/libor.a ../common/libor-crypto.a
 
 noinst_HEADERS = or.h eventdns.h eventdns_tor.h
 
+tor_main.o: micro-revision.i
+
+micro-revision.i: FORCE
+       rm -f micro-revision.i;                                 \
+       if test -d ../../.svn ; then                            \
+         svn info ../.. |                                      \
+         sed -n 's/^Revision: \([0-9][0-9]*\).*/"\1"/p' > micro-revision.i \
+            || true; \
+       fi;                                                     \
+       if test ! -f micro-revision.i; then                     \
+         echo '""' > micro-revision.i;                         \
+       fi
+
+FORCE:
index c7b7fdf24bc17febe8aef8cf88775c43cba88d39..568cd934beb77daa3d8551bd23c97599249565b5 100644 (file)
@@ -2982,6 +2982,8 @@ check_nickname_list(const char *lst, const char *name, char **msg)
   return r;
 }
 
+extern const char tor_svn_revision[]; /* from main.c */
+
 /** Read a configuration file into <b>options</b>, finding the configuration
  * file location based on the command line.  After loading the options,
  * validate them for consistency, then take actions based on them.
@@ -3018,7 +3020,13 @@ options_init_from_torrc(int argc, char **argv)
   }
 
   if (argc > 1 && (!strcmp(argv[1],"--version"))) {
-    printf("Tor version %s.\n",VERSION);
+    char vbuf[128];
+    if (tor_svn_revision && strlen(tor_svn_revision)) {
+      tor_snprintf(vbuf, sizeof(vbuf), " (r%s)", tor_svn_revision);
+    } else {
+      vbuf[0] = 0;
+    }
+    printf("Tor version %s%s.\n",VERSION,vbuf);
     if (argc > 2 && (!strcmp(argv[2],"--version"))) {
       print_svn_version();
     }
index 3c3255a49dc5c7a6157b7c2e257b649d44a8ebca..ad7ad96a24bebcedd8911022303c9a2a5b2e1bc1 100644 (file)
@@ -1172,6 +1172,8 @@ router_guess_address_from_dir_headers(uint32_t *guess)
   return -1;
 }
 
+extern const char tor_svn_revision[]; /* from main.c */
+
 /** Set <b>platform</b> (max length <b>len</b>) to a NUL-terminated short
  * string describing the version of Tor and the operating system we're
  * currently running on.
@@ -1179,8 +1181,17 @@ router_guess_address_from_dir_headers(uint32_t *guess)
 void
 get_platform_str(char *platform, size_t len)
 {
-  tor_snprintf(platform, len, "Tor %s on %s",
-           VERSION, get_uname());
+  char svn_version_buf[128];
+  if (!strcmpend(VERSION, "-dev") &&
+      tor_svn_revision && strlen(tor_svn_revision)) {
+    tor_snprintf(svn_version_buf, sizeof(svn_version_buf), " (r%s)",
+                 tor_svn_revision);
+  } else {
+    svn_version_buf[0] = 0;
+  }
+
+  tor_snprintf(platform, len, "Tor %s%s on %s",
+               VERSION, svn_version_buf, get_uname());
   return;
 }
 
index 73de80fe578ec28b03154903df725acc31a33bde..98a10f8d9cd8c2f3fd17b8f4771f9d8e8a718aa9 100644 (file)
@@ -5,6 +5,8 @@
 const char test_c_id[] =
   "$Id$";
 
+const char tor_svn_revision[] = "";
+
 /**
  * \file test.c
  * \brief Unit tests for many pieces of the lower level Tor modules.
index f6309057c93974f8201f83d3a5fadea2e9b0db23..c4fb3139ad16bb3f77da231d9aa391eeaed31e94 100644 (file)
@@ -5,6 +5,10 @@
 const char tor_main_c_id[] =
   "$Id$";
 
+const char tor_svn_revision[] =
+#include "micro-revision.i"
+  "";
+
 /**
  * \file tor_main.c
  * \brief Stub module containing a main() function. Allows unit