aboutsummaryrefslogtreecommitdiff
path: root/buildtools/make-version.py
diff options
context:
space:
mode:
Diffstat (limited to 'buildtools/make-version.py')
-rw-r--r--buildtools/make-version.py26
1 files changed, 22 insertions, 4 deletions
diff --git a/buildtools/make-version.py b/buildtools/make-version.py
index 9f6eb39f..af513b5d 100644
--- a/buildtools/make-version.py
+++ b/buildtools/make-version.py
@@ -27,15 +27,24 @@
#
# I did say this was a kludge.
+# One could argue that we should be throwing a fatal error when we
+# can't determine the version, rather than just issuing a warning and
+# writing a version of "Unknown". Maybe later.
+
import subprocess
+import sys
+
+unknown = "Unknown"
try:
v = subprocess.Popen(("svnversion", "-c"), stdout = subprocess.PIPE).communicate()[0]
-except:
- v = "Unknown"
+ err = None
+except Exception, e:
+ v = unknown
+ err = e
-if any(s in v for s in ("Unversioned", "Uncommitted", "Unknown")):
- 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")
@@ -44,6 +53,15 @@ try:
except:
old = None
+if err is not None and (old is None or old == unknown):
+ sys.stderr.write("Warning: No saved version and svnversion failed: %s\n" % err)
+
+if v == unknown:
+ if old is not None and old != unknown:
+ v = old
+ else:
+ sys.stderr.write("Warning: Could not determine software version\n")
+
if old is None or v != old:
with open("VERSION", "w") as f:
f.write(v + "\n")