Show More
@@ -40,6 +40,10 b' if sys.version_info[0] >= 3:' | |||
|
40 | 40 | # zstd is already dual-version clean, don't try and mangle it |
|
41 | 41 | if fullname.startswith('mercurial.zstd'): |
|
42 | 42 | return None |
|
43 | # rustext is built for the right python version, | |
|
44 | # don't try and mangle it | |
|
45 | if fullname.startswith('mercurial.rustext'): | |
|
46 | return None | |
|
43 | 47 | # pywatchman is already dual-version clean, don't try and mangle it |
|
44 | 48 | if fullname.startswith('hgext.fsmonitor.pywatchman'): |
|
45 | 49 | return None |
@@ -19,6 +19,7 b' dependencies = [' | |||
|
19 | 19 | "libc 0.2.45 (registry+https://github.com/rust-lang/crates.io-index)", |
|
20 | 20 | "num-traits 0.2.6 (registry+https://github.com/rust-lang/crates.io-index)", |
|
21 | 21 | "python27-sys 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)", |
|
22 | "python3-sys 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)", | |
|
22 | 23 | ] |
|
23 | 24 | |
|
24 | 25 | [[package]] |
@@ -8,9 +8,14 b" name='rusthg'" | |||
|
8 | 8 | crate-type = ["cdylib"] |
|
9 | 9 | |
|
10 | 10 | [features] |
|
11 |
default = ["python27" |
|
|
11 | default = ["python27"] | |
|
12 | 12 | |
|
13 |
python27 = ["cpython/python27-sys", |
|
|
13 | python27 = ["cpython/python27-sys", | |
|
14 | "cpython/extension-module-2-7", | |
|
15 | "python27-sys", | |
|
16 | ] | |
|
17 | ||
|
18 | python3 = ["python3-sys", "cpython/python3-sys", "cpython/extension-module"] | |
|
14 | 19 | |
|
15 | 20 | [dependencies] |
|
16 | 21 | hg-core = { path = "../hg-core" } |
@@ -922,11 +922,13 b' class RustExtension(Extension):' | |||
|
922 | 922 | |
|
923 | 923 | rusttargetdir = os.path.join('rust', 'target', 'release') |
|
924 | 924 | |
|
925 |
def __init__(self, mpath, sources, rustlibname, subcrate, |
|
|
925 | def __init__(self, mpath, sources, rustlibname, subcrate, | |
|
926 | py3_features=None, **kw): | |
|
926 | 927 | Extension.__init__(self, mpath, sources, **kw) |
|
927 | 928 | if hgrustext is None: |
|
928 | 929 | return |
|
929 | 930 | srcdir = self.rustsrcdir = os.path.join('rust', subcrate) |
|
931 | self.py3_features = py3_features | |
|
930 | 932 | |
|
931 | 933 | # adding Rust source and control files to depends so that the extension |
|
932 | 934 | # gets rebuilt if they've changed |
@@ -957,6 +959,9 b' class RustExtension(Extension):' | |||
|
957 | 959 | env['HOME'] = pwd.getpwuid(os.getuid()).pw_dir |
|
958 | 960 | |
|
959 | 961 | cargocmd = ['cargo', 'build', '-vv', '--release'] |
|
962 | if sys.version_info[0] == 3 and self.py3_features is not None: | |
|
963 | cargocmd.extend(('--features', self.py3_features, | |
|
964 | '--no-default-features')) | |
|
960 | 965 | try: |
|
961 | 966 | subprocess.check_call(cargocmd, env=env, cwd=self.rustsrcdir) |
|
962 | 967 | except OSError as exc: |
@@ -1047,7 +1052,8 b' extmodules = [' | |||
|
1047 | 1052 | |
|
1048 | 1053 | if hgrustext == 'cpython': |
|
1049 | 1054 | extmodules.append( |
|
1050 |
RustStandaloneExtension('mercurial.rustext', 'hg-cpython', 'librusthg' |
|
|
1055 | RustStandaloneExtension('mercurial.rustext', 'hg-cpython', 'librusthg', | |
|
1056 | py3_features='python3') | |
|
1051 | 1057 | ) |
|
1052 | 1058 | |
|
1053 | 1059 |
General Comments 0
You need to be logged in to leave comments.
Login now