Patchwork [3,of,3] setup: show how to set the module policy for imports

login
register
mail settings
Submitter timeless@mozdev.org
Date March 9, 2016, 4:19 p.m.
Message ID <dda3f54dfed1f1fe41fd.1457540351@waste.org>
Download mbox | patch
Permalink /patch/13728/
State Accepted
Delegated to: Yuya Nishihara
Headers show

Comments

timeless@mozdev.org - March 9, 2016, 4:19 p.m.
# HG changeset patch
# User timeless <timeless@mozdev.org>
# Date 1452573929 0
#      Tue Jan 12 04:45:29 2016 +0000
# Node ID dda3f54dfed1f1fe41fde22198a61b835807263b
# Parent  71cb80801ec4e3b6aa519da48b4601c3c7a41615
setup: show how to set the module policy for imports

This is not technically needed, since mercurial.__version__
does not exist as a native module, but, without this style wrappings,
if something else had a native flavor, the module loader would get
upset.

In principle, the `env` object is trying to set HGMODULEPOLICY for
children, so, conceptually we should set it for this in-process
child.

Patch

diff --git a/setup.py b/setup.py
--- a/setup.py
+++ b/setup.py
@@ -225,10 +225,17 @@ 
         f.write('version = "%s"\n' % version)
 
 try:
+    oldpolicy = os.environ.get('HGMODULEPOLICY', None)
+    os.environ['HGMODULEPOLICY'] = 'py'
     from mercurial import __version__
     version = __version__.version
 except ImportError:
     version = 'unknown'
+finally:
+    if oldpolicy is None:
+        del os.environ['HGMODULEPOLICY']
+    else:
+        os.environ['HGMODULEPOLICY'] = oldpolicy
 
 class hgbuild(build):
     # Insert hgbuildmo first so that files in mercurial/locale/ are found