[PATCH 11 of 12 RFC] policy: relax the default for in-place build
Yuya Nishihara
yuya at tcha.org
Sat May 6 21:45:52 EDT 2017
# HG changeset patch
# User Yuya Nishihara <yuya at tcha.org>
# Date 1493215363 -32400
# Wed Apr 26 23:02:43 2017 +0900
# Node ID 89045bec86dcb51ac0641e06abd59e82d3c22172
# Parent 75ce28f234b4e0d0f0ad65f5657d12a76bba0d8e
policy: relax the default for in-place build
We're going to make the 'c' policy more strict, where no missing attribute
will be allowed. Since we want to run 'hg bisect' without rebuilding the C
extension modules, we'll need a looser policy for development environment.
The default for system installation isn't changed.
Note that the current 'c' policy is practically 'allow'-ish as we have lots
of adhoc fallbacks to pure functions.
diff --git a/mercurial/policy.py b/mercurial/policy.py
--- a/mercurial/policy.py
+++ b/mercurial/policy.py
@@ -18,8 +18,10 @@ import sys
# cffi-allow - allow pure Python implementation if cffi version is missing
# py - only load pure Python modules
#
-# By default, require the C extensions for performance reasons.
-policy = b'c'
+# By default, fall back to the pure modules so the in-place build can
+# run without recompiling the C extensions. This will be overridden by
+# __modulepolicy__ generated by setup.py.
+policy = b'allow'
policynoc = (b'cffi', b'cffi-allow', b'py')
policynocffi = (b'c', b'py')
diff --git a/setup.py b/setup.py
--- a/setup.py
+++ b/setup.py
@@ -372,6 +372,9 @@ class hgbuildpy(build_py):
def run(self):
if self.distribution.pure:
modulepolicy = 'py'
+ elif self.build_lib == '.':
+ # in-place build should run without rebuilding C extensions
+ modulepolicy = 'allow'
else:
modulepolicy = 'c'
with open("mercurial/__modulepolicy__.py", "w") as f:
More information about the Mercurial-devel
mailing list