aboutsummaryrefslogtreecommitdiff
path: root/buildtools/make-version.py
diff options
context:
space:
mode:
authorRob Austein <sra@hactrn.net>2013-06-10 18:48:46 +0000
committerRob Austein <sra@hactrn.net>2013-06-10 18:48:46 +0000
commit176c13d5e71db72e237e399f6402a63475b4fead (patch)
tree84b46887808cb571e6aa4a58fe6b8beb051aacec /buildtools/make-version.py
parent4ad57ffa7bb69eb725da56ec5c4f9dcbdf95c8c8 (diff)
rpki.version hack and rpkic command to display it.
See #543. svn path=/trunk/; revision=5384
Diffstat (limited to 'buildtools/make-version.py')
-rw-r--r--buildtools/make-version.py51
1 files changed, 51 insertions, 0 deletions
diff --git a/buildtools/make-version.py b/buildtools/make-version.py
new file mode 100644
index 00000000..9f6eb39f
--- /dev/null
+++ b/buildtools/make-version.py
@@ -0,0 +1,51 @@
+#!/usr/bin/env python
+# $Id$
+
+# Copyright (C) 2013 Internet Systems Consortium ("ISC")
+#
+# Permission to use, copy, modify, and distribute this software for any
+# purpose with or without fee is hereby granted, provided that the above
+# copyright notice and this permission notice appear in all copies.
+#
+# THE SOFTWARE IS PROVIDED "AS IS" AND ISC DISCLAIMS ALL WARRANTIES WITH
+# REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
+# AND FITNESS. IN NO EVENT SHALL ISC BE LIABLE FOR ANY SPECIAL, DIRECT,
+# INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
+# LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE
+# OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
+# PERFORMANCE OF THIS SOFTWARE.
+
+# Kludge to extract Subversion revision number from environment at
+# build time, if possible, using it to construct the software version
+# number that one of our users so desperately wants us to have. This
+# is a bit tricky because we want this to be automatic (hence use of
+# Subversion revision number, which isn't really intended for this
+# purpose), want it to work whether installing from binary package or
+# subversion checkout or frozen tarball, and need to be careful both
+# to update it whenever the revision changes and not to stomp on it
+# when the subversion revision number isn't available.
+#
+# I did say this was a kludge.
+
+import subprocess
+
+try:
+ v = subprocess.Popen(("svnversion", "-c"), stdout = subprocess.PIPE).communicate()[0]
+except:
+ v = "Unknown"
+
+if any(s in v for s in ("Unversioned", "Uncommitted", "Unknown")):
+ v = "Unknown"
+else:
+ v = "0." + v.strip().split(":")[-1].translate(None, "SMP")
+
+try:
+ old = open("VERSION", "r").read().strip()
+except:
+ old = None
+
+if old is None or v != old:
+ with open("VERSION", "w") as f:
+ f.write(v + "\n")
+ with open("rpkid/rpki/version.py", "w") as f:
+ f.write("VERSION = \"%s\"\n" % v)