Show More
@@ -0,0 +1,40 b'' | |||
|
1 | # policy.py - module policy logic for Mercurial. | |
|
2 | # | |
|
3 | # Copyright 2015 Gregory Szorc <gregory.szorc@gmail.com> | |
|
4 | # | |
|
5 | # This software may be used and distributed according to the terms of the | |
|
6 | # GNU General Public License version 2 or any later version. | |
|
7 | ||
|
8 | from __future__ import absolute_import | |
|
9 | ||
|
10 | import os | |
|
11 | import sys | |
|
12 | ||
|
13 | # Rules for how modules can be loaded. Values are: | |
|
14 | # | |
|
15 | # c - require C extensions | |
|
16 | # allow - allow pure Python implementation when C loading fails | |
|
17 | # py - only load pure Python modules | |
|
18 | # | |
|
19 | # By default, require the C extensions for performance reasons. | |
|
20 | policy = 'c' | |
|
21 | try: | |
|
22 | from . import __modulepolicy__ | |
|
23 | policy = __modulepolicy__.modulepolicy | |
|
24 | except ImportError: | |
|
25 | pass | |
|
26 | ||
|
27 | # PyPy doesn't load C extensions. | |
|
28 | # | |
|
29 | # The canonical way to do this is to test platform.python_implementation(). | |
|
30 | # But we don't import platform and don't bloat for it here. | |
|
31 | if '__pypy__' in sys.builtin_module_names: | |
|
32 | policy = 'py' | |
|
33 | ||
|
34 | # Our C extensions aren't yet compatible with Python 3. So use pure Python | |
|
35 | # on Python 3 for now. | |
|
36 | if sys.version_info[0] >= 3: | |
|
37 | policy = 'py' | |
|
38 | ||
|
39 | # Environment variable can always force settings. | |
|
40 | policy = os.environ.get('HGMODULEPOLICY', policy) |
@@ -12,36 +12,13 b' import os' | |||
|
12 | 12 | import sys |
|
13 | 13 | import zipimport |
|
14 | 14 | |
|
15 | from . import ( | |
|
16 | policy | |
|
17 | ) | |
|
18 | ||
|
15 | 19 | __all__ = [] |
|
16 | 20 | |
|
17 | # Rules for how modules can be loaded. Values are: | |
|
18 | # | |
|
19 | # c - require C extensions | |
|
20 | # allow - allow pure Python implementation when C loading fails | |
|
21 | # py - only load pure Python modules | |
|
22 | # | |
|
23 | # By default, require the C extensions for performance reasons. | |
|
24 | modulepolicy = 'c' | |
|
25 | try: | |
|
26 | from . import __modulepolicy__ | |
|
27 | modulepolicy = __modulepolicy__.modulepolicy | |
|
28 | except ImportError: | |
|
29 | pass | |
|
30 | ||
|
31 | # PyPy doesn't load C extensions. | |
|
32 | # | |
|
33 | # The canonical way to do this is to test platform.python_implementation(). | |
|
34 | # But we don't import platform and don't bloat for it here. | |
|
35 | if '__pypy__' in sys.builtin_module_names: | |
|
36 | modulepolicy = 'py' | |
|
37 | ||
|
38 | # Our C extensions aren't yet compatible with Python 3. So use pure Python | |
|
39 | # on Python 3 for now. | |
|
40 | if sys.version_info[0] >= 3: | |
|
41 | modulepolicy = 'py' | |
|
42 | ||
|
43 | # Environment variable can always force settings. | |
|
44 | modulepolicy = os.environ.get('HGMODULEPOLICY', modulepolicy) | |
|
21 | modulepolicy = policy.policy | |
|
45 | 22 | |
|
46 | 23 | # Modules that have both Python and C implementations. See also the |
|
47 | 24 | # set of .py files under mercurial/pure/. |
@@ -59,6 +59,7 b' from . import (' | |||
|
59 | 59 | obsolete, |
|
60 | 60 | patch, |
|
61 | 61 | phases, |
|
62 | policy, | |
|
62 | 63 | pvec, |
|
63 | 64 | repair, |
|
64 | 65 | revlog, |
@@ -2749,6 +2750,8 b' def debuginstall(ui, **opts):' | |||
|
2749 | 2750 | '+'.join(hgver.split('+')[1:])) |
|
2750 | 2751 | |
|
2751 | 2752 | # compiled modules |
|
2753 | fm.write('hgmodulepolicy', _("checking module policy (%s)\n"), | |
|
2754 | policy.policy) | |
|
2752 | 2755 | fm.write('hgmodules', _("checking installed modules (%s)...\n"), |
|
2753 | 2756 | os.path.dirname(__file__)) |
|
2754 | 2757 |
@@ -6,6 +6,7 b' hg debuginstall' | |||
|
6 | 6 | checking Python lib (*lib*)... (glob) |
|
7 | 7 | checking Mercurial version (*) (glob) |
|
8 | 8 | checking Mercurial custom build (*) (glob) |
|
9 | checking module policy (*) (glob) | |
|
9 | 10 | checking installed modules (*mercurial)... (glob) |
|
10 | 11 | checking templates (*mercurial?templates)... (glob) |
|
11 | 12 | checking default template (*mercurial?templates?map-cmdline.default) (glob) |
@@ -25,6 +26,7 b' hg debuginstall JSON' | |||
|
25 | 26 | "encoding": "ascii", |
|
26 | 27 | "encodingerror": null, |
|
27 | 28 | "extensionserror": null, |
|
29 | "hgmodulepolicy": "*", (glob) | |
|
28 | 30 | "hgmodules": "*mercurial", (glob) |
|
29 | 31 | "hgver": "*", (glob) |
|
30 | 32 | "hgverextra": "*", (glob) |
@@ -47,6 +49,7 b' hg debuginstall with no username' | |||
|
47 | 49 | checking Python lib (*lib*)... (glob) |
|
48 | 50 | checking Mercurial version (*) (glob) |
|
49 | 51 | checking Mercurial custom build (*) (glob) |
|
52 | checking module policy (*) (glob) | |
|
50 | 53 | checking installed modules (*mercurial)... (glob) |
|
51 | 54 | checking templates (*mercurial?templates)... (glob) |
|
52 | 55 | checking default template (*mercurial?templates?map-cmdline.default) (glob) |
@@ -70,6 +73,7 b' path variables are expanded (~ is the sa' | |||
|
70 | 73 | checking Python lib (*lib*)... (glob) |
|
71 | 74 | checking Mercurial version (*) (glob) |
|
72 | 75 | checking Mercurial custom build (*) (glob) |
|
76 | checking module policy (*) (glob) | |
|
73 | 77 | checking installed modules (*mercurial)... (glob) |
|
74 | 78 | checking templates (*mercurial?templates)... (glob) |
|
75 | 79 | checking default template (*mercurial?templates?map-cmdline.default) (glob) |
General Comments 0
You need to be logged in to leave comments.
Login now