setup: fail if we cannot determine the version number
authorAdam Simpkins <simpkins@fb.com>
Mon, 26 Jun 2017 11:31:30 -0700
changeset 33110 6fdc1518983e
parent 33109 247bae545061
child 33111 87ee783f7299
setup: fail if we cannot determine the version number If running hg fails, exit the setup script unsuccessfully, rather than proceeding to use a bogus version of "+0-". Using an invalid version number causes various tests to fail later. Failing early makes it easier to identify the source of the problem. It is currently easy for setup.py to fail this way since it sets HGRCPTH to the empty string before running "hg", which may often disable extensions necessary to interact with the local repository.
setup.py
--- a/setup.py	Tue Jun 27 23:50:22 2017 +0900
+++ b/setup.py	Mon Jun 26 11:31:30 2017 -0700
@@ -184,6 +184,12 @@
     cmd = [sys.executable, 'hg', 'log', '-r', '.', '--template', '{tags}\n']
     numerictags = [t for t in runhg(cmd, env).split() if t[0:1].isdigit()]
     hgid = runhg([sys.executable, 'hg', 'id', '-i'], env).strip()
+    if not hgid:
+        # Bail out if hg is having problems interacting with this repository,
+        # rather than falling through and producing a bogus version number.
+        # Continuing with an invalid version number will break extensions
+        # that define minimumhgversion.
+        raise SystemExit('Unable to determine hg version from local repository')
     if numerictags: # tag(s) found
         version = numerictags[-1]
         if hgid.endswith('+'): # propagate the dirty status to the tag