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
--- 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']