setup: allow to run setup.py with python 3 without a mercurial checkout
authorMike Hommey <mh@glandium.org>
Mon, 16 Jul 2018 17:47:58 -0700
changeset 38721 dbbe45ae5ad1
parent 38720 d12415b8f833
child 38722 2009d84f245a
setup: allow to run setup.py with python 3 without a mercurial checkout Some people may want to test mercurial in a python 3 environment through e.g. pip, in which case setup.py doesn't run in a mercurial checkout, so the hack in setup.py to allow python 3 cannot be overcome. This change allows a manual override with the HGPYTHON3 environment variable. Additionally, when for some reason the version is unknown (for crazy people like me, who have a git checkout of the mercurial repo), the version variable ends up being an unicode string, which fails the `isinstance(version, bytes)` assertion. So fix that at the same time. Differential Revision: https://phab.mercurial-scm.org/D3958
setup.py
--- a/setup.py	Thu Jun 21 18:05:55 2018 +0200
+++ b/setup.py	Mon Jul 16 17:47:58 2018 -0700
@@ -74,7 +74,7 @@
     badpython = True
 
     # Allow Python 3 from source checkouts.
-    if os.path.isdir('.hg'):
+    if os.path.isdir('.hg') or 'HGPYTHON3' in os.environ:
         badpython = False
 
     if badpython:
@@ -369,7 +369,7 @@
     from mercurial import __version__
     version = __version__.version
 except ImportError:
-    version = 'unknown'
+    version = b'unknown'
 finally:
     if oldpolicy is None:
         del os.environ['HGMODULEPOLICY']